2
我試圖使用鏈接器參數-Ttext =LD -Ttext產生填充
它做什麼,我需要它指定一個64位的ARMv8 ELF的.text段的地址與64KB的可執行文件併產生一個.text部分,其中正確引用.data
ld -Ttext=40000000 -Tdata=40001000 main.o
objdump -h a.out
a.out: file format elf64-littleaarch64
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000278 0000000040000000 0000000040000000 00010000 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000004 0000000040001000 0000000040001000 00011000 2**2
CONTENTS, ALLOC, LOAD, DATA
2 .comment 0000003a 0000000000000000 0000000000000000 00011004 2**0
CONTENTS, READONLY
我遇到的問題是文件偏移量。爲什麼ld放棄應該小於4KB的文件並將.text文件放在64K?一旦它被加載到主內存中,這不是問題 - 但是磁盤上的存儲可能會產生問題。
有沒有命令行選項來防止這種情況?
編輯:所以它看起來像程序段對齊到0x10000 - 我沒有看到一個選項來調整此對齊方式。也許鏈接腳本是我唯一的解決方案?