gpt4 book ai didi

gcc - ld -Ttext 生成具有 64KB 填充的可执行文件

转载 作者:行者123 更新时间:2023-12-04 23:28:48 24 4
gpt4 key购买 nike

我正在尝试使用链接器参数 -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 put 会炸毁应该小于 4KB 的文件并将 .text 放在 64K?一旦它被加载到主内存就不是问题 - 但是磁盘上的存储可能会出现问题。

是否有命令行选项可以防止这种情况?

编辑:所以看起来程序段与 0x10000 对齐 - 我没有看到调整此对齐方式的选项。也许链接器脚本是我唯一的解决方案?

最佳答案

使用 option -n or --nmagic :

Turn off page alignment of sections, and disable linking against shared libraries. If the output format supports Unix style magic numbers, mark the output as "NMAGIC".

关于gcc - ld -Ttext 生成具有 64KB 填充的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27411865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com