Я хочу установить символы в начало и конец раздела, поэтому определите мой раздел следующим образом:
.mysec : {
_mysec_start = .;
*(.bss)
*(COMMON)
_mysec_end = .;
}
Однако я получаю одинаковое значение для символов начала и конца, что эквивалентнодо конца раздела (т. е. символ _mysec_end имеет ожидаемое значение):
Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
[ 6] .mysec NOBITS 0000ff0000009000 00019000
0000000000000228 0000000000000000 WA 0 0 8
Symbol table:
Num: Value Size Type Bind Vis Ndx Name
139: 0000ff0000009228 0 NOTYPE GLOBAL DEFAULT 6 _mysec_start
160: 0000ff0000009228 0 NOTYPE GLOBAL DEFAULT 6 _mysec_end
Что я делаю не так?Мне кажется, я видел, как люди делали это в сценариях компоновщика в прошлом.
РЕДАКТИРОВАТЬ: обнаружил проблему.На самом деле это была ошибка в моем Makefile.Я передавал скрипт компоновщика два раза в качестве аргумента ld.Я полагаю, что это приведет к тому, что символы будут оцениваться во второй раз после того, как все входные разделы будут использованы для окончательного выходного раздела.