首页 > 解决方案 > 将符号设置为链接描述文件中输出部分内的位置计数器

问题描述

我想将符号设置为部分的开头和结尾,所以像这样定义我的部分:

.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 两次。我相信这将使符号在所有输入部分都被用于最终输出部分之后再次被评估。

标签: ldlinker-scripts

解决方案


推荐阅读