【发布时间】:2015-02-09 06:55:19
【问题描述】:
我正在尝试使用链接器参数 -Ttext= 指定 64 位 ARMv8 ELF 的 .text 部分的地址
它会做我需要的事情并生成一个正确引用 .data 的 .text 部分
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 put 炸毁应该小于 4KB 的文件并将 .text 放在 64K ?一旦加载到主内存就不是问题 - 但磁盘上的存储可能会出现问题。
是否有命令行选项可以防止这种情况发生?
编辑:所以看起来程序段与 0x10000 对齐 - 我没有看到调整此对齐的选项。也许链接器脚本是我唯一的解决方案?
【问题讨论】: