我想在部分的开始和结束处设置符号,因此可以这样定义我的部分:
.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的参数传递。我相信这将使所有输入部分都被消耗到最终输出部分之后,第二次对符号进行评估。