Установка символа для счетчика местоположения внутри секции вывода в скрипте компоновщика - PullRequest
0 голосов
/ 18 января 2019

Я хочу установить символы в начало и конец раздела, поэтому определите мой раздел следующим образом:

.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.Я полагаю, что это приведет к тому, что символы будут оцениваться во второй раз после того, как все входные разделы будут использованы для окончательного выходного раздела.

...