Я хочу взять символы в разделе .data
, сгенерированном для определенного файла C, и поместить их в другой раздел (например, .mydata
) в окончательный исполняемый файл. Например,c - отправить .data в другой раздел
normaldata.c: char * my_str = "this should appear in .data";
specialdata.c: char * my_special_str = "this should appear in .mydata";
По умолчанию оба my_str
и my_special_str
появляются в разделе .data
. Однако, когда я генерирую specialdata.o
, я хочу отправить все, что появилось бы в .data
вместо .mydata
.
Я знаю, что могу использовать __attribute__((section(".mydata")))
для достижения этого эффекта, но не знаю, как применить его к назначенному инициализатору элемента-указателя структуры (я упростил свой код для этого вопроса). Поэтому вместо этого я думаю, что, возможно, я смогу использовать скрипт компоновщика и отправить все данные из определенного файла в специальный раздел.
Я попробовал этот линкер скрипт (link.lds
):
SECTIONS
{
.mydata : { *(.data) }
}
с gcc -c specialdata.c -T link.lds -o specialdata.o
, но выход objdump -x specialdata.o
показывает .data
секцию, но не .mydata
раздел.
Что я делаю неправильно?