我有以下线在我的链接脚本GNU链接和链接描述:链接器不产生正确的LMA
JumpTable ABSOLUTE(0x2000000C): AT(eROData)
{
JumpTableStart = .;
*(.JumpSection);
. = ALIGN(4);
JumpTableEnd = .;
} > SRAM
eROData是从闪存中的地址,假定值0x1000xxxx
链接之后,我请注意,链接器将VMA和LMA分配到JumpTable部分。 这是列表文件中的列表。
2 .rodata 00000004 10001214 10001214 00001214 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
3 JumpTable 00000140 2000000c 2000000c 00008954 2**2
CONTENTS, READONLY
没有这样的问题.data部分。
这是一个已知的GNU链接器问题吗?
编辑: 我注意到,如果部分“.JumpSection”在C文件中定义,LMA被正确分配。
我正面临这个问题,因为该部分是在程序集文件中定义的。
你以前遇到过这个问题吗?
编辑 - 解决方案: 事实证明,.JumpSection必须用正确的属性进行定义: .section伪“.JumpSection”,‘斧’,PROGBITS%
只有这样,连接器的行为正确。