我有以下線在我的鏈接腳本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%
只有這樣,連接器的行爲正確。