【问题标题】:Is my understanding on the use of the symbol table and relocation table correct?我对符号表和重定位表的使用理解是否正确?
【发布时间】:2014-11-29 15:43:34
【问题描述】:

我目前很难理解链接/加载概念。

您能否告诉我以下关于符号表和重定位表的使用说明是否正确?

  1. 在可重定位目标文件中,符号表必须包含从其他目标文件访问/调用的变量和函数的条目。未在目标文件之外使用的变量和函数的列表是可选的。
    • 这意味着如果程序只包含一个目标文件,符号表可以省略。
  2. 在可重定位目标文件中,重定位表包含在加载期间必须更新的汇编代码的所有位置的地址。
  3. 在不可重定位的目标文件中,可以省略重定位表。但是,必须将对象加载到硬编码到指令中的地址空间中。

感谢您的宝贵时间!

【问题讨论】:

    标签: c object symbols relocation


    【解决方案1】:
    1. 第一部分(大约只需要extern 元素)是正确的。然而,关于由单个目标文件组成的程序的推论并不完全正确:必须至少有一个符号可供外部使用 - 即入口点(C 程序的 main 函数)必须是可见的。
    2. 由于address 在这里在不同的上下文中表示不同的东西,因此最好在文件中讨论偏移量,而不是地址。重定位表保存文件加载到内存时需要更新的所有内容的偏移量,以及需要写入这些偏移量的信息。
    3. 不可重定位文件需要加载到特定地址。不需要重定位表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      相关资源
      最近更新 更多