【发布时间】:2013-10-16 03:48:03
【问题描述】:
您好,我正在尝试通过以下方式在我的链接描述文件中定义一个自定义部分:
.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
我在这里做错了什么?
【问题讨论】:
-
在这种情况下,W 是否意味着“可写”?如果是这样,您可以通过在结构定义中添加
const使其成为“A”。 -
谢谢老兄。那行得通。您应该将此添加为答案。
-
好的。我将其添加为答案。
标签: c linker linker-scripts