【问题标题】:what are the common symbols in objdump?objdump 中的常用符号是什么?
【发布时间】:2015-01-09 14:18:47
【问题描述】:

我正在阅读 objdump 的文档:
objdump manual

在使用 -t 选项为基于 ELF 的文件条目指定符号表输出的行中,有一行我想更好地理解。我在此处复制了该部分文档以进行澄清。我的问题是,对于常用符号,objdump 显示对齐方式,但什么被认为是常用符号?
提前谢谢。


文档内容

另一种常见的输出格式,通常用于基于 ELF 的文件, 看起来像这样:

      00000000 l    d  .bss   00000000 .bss
      00000000 g       .text  00000000 fred

这里的第一个数字是符号的值(有时称为它的地址)。下一个字段实际上是一组字符和 指示在符号上设置的标志位的空格。这些 字符描述如下。接下来是与 如果该部分是绝对的(即不是 与任何部分连接),或 UND 如果该部分在 正在转储的文件,但未在此处定义。

在部分名称之后是另一个字段,一个数字,用于常见 符号是对齐方式,其他符号是大小。最后 显示符号的名称。

【问题讨论】:

  • 不清楚你在问什么:是问什么符号经常出现,还是别的什么?
  • 我不明白什么是常用符号。例如,如果我定义一个整数变量,那是一个常见的符号?
  • 哦,我明白了;在这种情况下,文档对术语“通用”具有特殊含义。

标签: gcc binutils


【解决方案1】:

我对这个术语并不完全熟悉,但我相信“通用符号”是指“通用变量存储”中的符号,即.bss 部分。见the assembler documentation

.bss 部分用于在程序启动时未初始化(或零初始化)的数据。该数据没有存储在目标文件中的值,因此文件偏移量是不合适的。

非通用变量存储符号是与存储在目标文件中的数据或代码相关联的变量、函数等,它们将在运行时加载到内存中。

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    相关资源
    最近更新 更多