【问题标题】:ELF reserved sectionELF 保留部分
【发布时间】:2012-12-01 06:45:18
【问题描述】:

我目前正在处理从一些 C 源文件生成的 ELF 格式的目标文件(我没有,只有目标文件可用)。当我编写一个提取所有未定义符号的小工具时,我遇到了一些符号,它们的部分索引指向保留部分:

详细说明:

ELF 文件中Symbol Table 中的每个symbol 条目都有一个字段,其中包含一个指向符号所属section header entry index 的整数,到目前为止一切都很好...... ELF 规范定义了一堆保留的节头索引,undefined symbols 的值0,以及0xFF00 - 0xFFFF 范围内的其他几个索引。 关于后一种,ELF规范只有很少的信息,说明这些部分

保留用于特定于处理器的语义 .

我的问题是:

哪个代码会导致一个符号的节头表索引指向这样的reserved section? 如果不是来自源代码本身,可能来自编译器什么的,请解释一下:)

提前致谢!

【问题讨论】:

  • 不知道你在说什么处理器,什么处理器特定部分,很难说。
  • 感谢您的回复(终于;D)!是否可以对我的问题给出一般性的答案?那么,是否有任何代码结构总是导致此类符号?

标签: symbols elf object-files


【解决方案1】:

以下部分索引是保留的,引用这些部分的符号没有任何部分 -

#define SHN_UNDEF        0x00
#define SHN_LORESERVE    0xFF00
#define SHN_LOPROC       0xFF00
#define SHN_HIPROC       0xFF1F
#define SHN_ABS          0xFFF1
#define SHN_COMMON       0xFFF2
#define SHN_HIRESERVE    0xFFFF

根据 ELF 格式规范,

  1. SHN_UNDEF 是一个标记未定义、不相关或其他无意义的部分引用的值。相对于部分定义的符号是未定义符号

  2. SHN_LORESERVE 值指定保留索引范围的下限。

  3. SHN_LOPROC 到 SHN_HIPROC 范围是针对特定于处理器的语义。您应该查看您平台的 ABI,以获取有关这些部分索引的信息。

  4. SHN_ABS 值指定相应参考的绝对值。这意味着如果一个符号引用了这个部分,那么它已经有一个绝对值并且不受重定位的影响

  5. SHN_COMMON 被未分配的外部 C 变量的符号引用。

  6. SHN_HIRESERVE 值指定保留索引范围的上限。

请注意,节头表包含这些节的条目,但从 SHN_LOPROC 到 SHN_HIPROC 的范围除外。

其他具体说明:

  1. 对于可重定位文件,具有节索引 SHN_COMMON 的符号的值指定对齐约束,而不是地址。这可能适用于声明为全局变量的 .BSS 变量 -

    int arrayofIntegersToDisplay[256];// Declared a COMMON symbol
    
  2. 对于具有 STT_FILE 类型的符号 (其中包含编译代码的文件名称的字符串值),它们的节索引始终为 SHN_ABS。这意味着肯定应该声明这种类型的符号。

  3. 未定义符号(如前所述的section-index SHN_UNDEF)在目标文件引用另一个文件中分配的数据时使用-

一个例子是这样的,

/// @file Main.cpp
///
/// Here, we are declaring the variable "var". It is a STT_DATA
/// symbol which (should) have the section-index for ".data"
int var;

在另一个文件中,

/// @file Referer.cpp
///
/// Here, we are referencing the variable "var" allocated in the
/// object file for Main.cpp. It is an undefined symbol.
extern int var;

【讨论】:

    猜你喜欢
    • 2018-10-23
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 2013-05-01
    • 2011-11-07
    • 2016-12-11
    相关资源
    最近更新 更多