Когда создаются символы *_start
, *_end
и _size
, соответствующие двоичным данным, компоновщик создает префикс из аргумента командной строки , поскольку он равен .
То есть компоновщик использует:
- префикс
_binary_initcode_
для аргумента initcode
и
- префикс
_binary_img_initcode_
для аргумента img/initcode
.
Насколько я знаю, невозможно переопределить этот префикс при вызове компоновщика.
С помощью objcopy
можно создать объектный файл с специфическим разделом , содержащий двоичные данные из другого файла:
objcopy -I binary -O <output-format> -B <architecture> --rename-section .data=.initcode,alloc,load,readonly,data,contents img/initcode <output-obj-file>
Полученный объектный файл может быть использован для связи с. В командной строке компоновщика необходимо использовать пользовательский компоновщик srcipt, который определяет размещение двоичного раздела и создает символы, обозначающие его начало и конец:
...
SECTIONS
{
...
<output-section-name>:
{
...
initcode_start = .;
*(.initcode);
initcode_end = .;
...
}
}