【问题标题】:In an ELF executable what sections can pointers be stored in?在 ELF 可执行文件中,指针可以存储在哪些部分中?
【发布时间】:2015-07-01 22:23:03
【问题描述】:

哪些部分(.data、.rodata、.bss 等)可用于在 Linux 和其他支持 ELF 的操作系统上的 ELF 可执行文件中存储指针?

编辑: 通过指针,我指的是 C 风格的指针,如 void* pointer = some_address;

【问题讨论】:

  • 您应该在问题中定义指针的含义,因为它(在 ELF 的上下文中)比您所相信的要复杂得多。
  • 您的编辑意义不大(因此我投反对票)。你真的应该阅读更多关于 ELF 的信息。从Executable & Linkable FormatRelocation 上的维基页面开始。阅读莱文的书Linkers and Loaders

标签: linux executable elf


【解决方案1】:

哪些部分(.data、.rodata、.bss 等)可用于在 ELF 可执行文件中存储指针

这是作业吗?如果没有,您真正想要达到什么目的?

.data.rodata.bss 中的每一个都可以存储指针。 .text 也可以。 ELF 允许任意命名的节,因此不可能存储可以存储指针的完整节列表(因为它是无限的)。

【讨论】:

  • 这不是家庭作业。我打算找出指针是否可以只读存储,但后来我决定也询问其他两个部分
  • @zeitue 所以现在您知道指针可以在任何地方。这对你有什么帮助?您真正想要达到什么目的?
  • 这意味着我将不得不为此做出补偿。我正在尝试实现一种通用格式,并且发现指针是我的主要问题。感谢您的回答
猜你喜欢
  • 2011-04-19
  • 1970-01-01
  • 2014-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
相关资源
最近更新 更多