如何在 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你的程序。