将部分添加到GNU链接描述文件

时间:2013-10-09 00:31:49

标签: c linker linker-scripts

您好我正在尝试以下列方式在我的链接描述文件中定义自定义部分:

  .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在readelf中

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

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

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