0

您好我正在尝试通过以下方式在我的链接器脚本中定义一个自定义部分:

  .version_section(__custom_data__) :
  {
        KEEP (*version_info.o (.rodata* .data* .sdata*))
  }

我正在编译一个包含结构的 C 文件,并且我希望该结构始终存储在此 version_section 中。

version_info ver_info __attribute__ ((section(".version_section"))) = {7, 10, 2013, 17, 17, "some_type", "some_sw_version", "some_version"} ;

现在,直到这个阶段一切正常。但是这样生成的部分有标志“AW”但是我需要标志是“A”。

因此,我使用了一个汇编文件,该文件将本节定义为具有这样的“A”标志:

.section .version_section,"a", @progbits
.align 8
.globl __custom_data__
.type  __custom_data__, @function

__custom_data__:
    .word 0
    .size __custom_data__, .-__custom_data__
    .space (0x1024-0x4), 0

但我仍然看到 version_section 的默认标志,即。AW in readelf

[11] .version_section  PROGBITS        00011088 004088 001044 00  WA  0   0  8

我在这里做错了什么?

4

1 回答 1

0

readelf正如我所怀疑的那样,“W”似乎意味着在输出中可写。将const限定符添加到定义中,ver_info将其移动到内存中所需的段。

于 2013-10-09T17:12:54.027 回答