【问题标题】:How to separate .text section into a 4K aligned address in Linux ELF如何在 Linux ELF 中将 .text 部分分隔为 4K 对齐的地址
【发布时间】:2017-03-09 16:27:51
【问题描述】:

是否可以将.text 分成 4K 对齐的页面。例如,我写了一个简单的程序并使用readelf -a a.out 转储节标题:

  [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)?

谢谢!

【问题讨论】:

  • 为什么你关心节对齐?与 segment 对齐(段已经对齐,请参阅readelf -Wl)不同,section 对齐在最终链接之后几乎不再重要。

标签: linux linker elf


【解决方案1】:

负责您发布问题的工具是ld(1)(链接器)它有一个完整的手册,描述了用于对齐页面和创建最终程序的脚本语言。只需阅读该手册(我指的是 ld 手册,而不是手册页)

读完之后,您可以创建一个基于标准 linux 脚本的 miniscript 文件,强制 *(.text) 段进行页面对齐并使用它来链接您的程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-21
    • 2022-06-29
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2022-08-17
    相关资源
    最近更新 更多