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 - 我没有看到一个选项来调整此对齐方式。也许链接脚本是我唯一的解决方案?