objdumpはelfセクションの物理アドレス(LMA)をどのように計算しますか?私の知る限り、elfセクションヘッダーにはセクション[1]の仮想アドレス(VMA)のみが含まれています。
通常、VMAとLMAは同じです。ただし、初期化されたデータセクション(.data)の場合、VMAは変数のRAMの場所であり、LMAは初期値が配置されているROMの場所です。Crt0は、main()が呼び出される前に初期値をRAMにコピーする役割を果たします。例えば:
$ objdump -h my.elf
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0003c3d0 00080000 00080000 00010000 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
5 .data 000008d0 40000000 000d08d4 00060000 2**3
CONTENTS, ALLOC, LOAD, DATA
-トム