我在程序中定义了一个特殊数据部分,如下所示:
const qlEntry GADLENTRY __attribute__((section(".initdata"))) =
{
//...
}
我希望这个特殊部分放在图像bin的标题中。
我的.ld文件是这样写的。
MEMORY
{
rom (rx) : ORIGIN = 0x08540000, LENGTH = 0x100000
ram (rwx) : ORIGIN = 0xA0200000, LENGTH = 0x200000
}
SECTIONS
{
. = 0x08540000;
.rodata :
{
*(.initdata)
*(.rodata)
}
.data :
{
*(.data)
}
.bss :
{
*(.bss)
}
text :
{
*(.text)
}
}
}
但是在构建之后,我会在.map文件中观看:
.initdata 0x0854b304 0x2c
.initdata 0x0854b304 0x2c ql_Main.o
0x0854b304 GADLENTRY
有什么问题?我怎样才能得到合适的垃圾箱。
*(.initdata)
.initdata 0x08540000
答案 0 :(得分:0)
为.initdata
创建一个单独的输出部分,如:
SECTIONS
{
. = 0x08540000;
.initdata : { *(.initdata) }
.rodata : { *(.rodata) }
...
使用原始链接描述文件,在.initdata
前面放置其他内容,检查地图文件的内容。
确保已描述链接描述文件中的每个输入部分。
例如,如果您的输入文件中有.gnu.linkonce.r*
个部分,它们可能最终位于第一个内存区域,其属性与该部分属性一致,在本例中为{{1} } region,这可能会导致您观察到的内容。