我尝试使用链接器参数-Ttext =
指定64位ARMv8 ELF的.text部分的地址它完成我需要它并生成一个.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对齐 - 我没有看到调整此对齐的选项。也许链接器脚本是我唯一的解决方案?
答案 0 :(得分:0)
关闭部分的页面对齐,并禁用链接到共享库。 如果输出格式支持Unix样式幻数,请将输出标记为" NMAGIC"。