如何在 Linux ELF 中将 .text 部分分隔为 4K 对齐地址
How to separate .text section into a 4K aligned address in Linux ELF
是否可以将 .text
分成 4K 对齐的页面。比如我写了一个简单的程序,用readelf -a a.out
转储了headers:
段
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
... ...
[11] .init PROGBITS 00000470 000470 000023 00 AX 0 0 4
[12] .plt PROGBITS 000004a0 0004a0 000060 04 AX 0 0 16
[13] .text PROGBITS 00000500 000500 000342 00 AX 0 0 16
[14] .fini PROGBITS 00000844 000844 000014 00 AX 0 0 4
如何将 .text
放入 4K 对齐页面(例如,.text
的地址为 0x1000)?
谢谢!
负责您post问题的工具是ld(1)
(linker)它有一个完整的手册描述用于对齐页面和创建最终程序的脚本语言.只需阅读该手册(我指的是 ld 手册,而不是手册页)
阅读后,您可以创建一个 miniscript 文件,该文件基于标准 linux 脚本,强制 *(.text)
段进行页面对齐并将其用于 link你的程序。
是否可以将 .text
分成 4K 对齐的页面。比如我写了一个简单的程序,用readelf -a a.out
转储了headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
... ...
[11] .init PROGBITS 00000470 000470 000023 00 AX 0 0 4
[12] .plt PROGBITS 000004a0 0004a0 000060 04 AX 0 0 16
[13] .text PROGBITS 00000500 000500 000342 00 AX 0 0 16
[14] .fini PROGBITS 00000844 000844 000014 00 AX 0 0 4
如何将 .text
放入 4K 对齐页面(例如,.text
的地址为 0x1000)?
谢谢!
负责您post问题的工具是ld(1)
(linker)它有一个完整的手册描述用于对齐页面和创建最终程序的脚本语言.只需阅读该手册(我指的是 ld 手册,而不是手册页)
阅读后,您可以创建一个 miniscript 文件,该文件基于标准 linux 脚本,强制 *(.text)
段进行页面对齐并将其用于 link你的程序。