【问题标题】:Dynamic Symbol Resolution of Executable Using LLVM使用 LLVM 的可执行文件的动态符号解析
【发布时间】:2013-05-03 17:50:19
【问题描述】:

我目前正在使用LLVM'sObjectFile(记录在案的here)来表示可执行文件。我已成功读取ObjectFile 的可执行文件,并想确定我的可执行文件中的哪些调用目标地址对应于通过调用begin_dynamic_symbols() 函数获得的symbol_iterator 中包含的符号名称。遍历symbol_iterator 中的每个符号会得到每个符号的名称及其地址,但由于符号是动态的,因此每个符号的地址都是-1;这表明ObjectFile 没有将符号名称直接与其对应的调用目标地址相关联。

有什么方法可以确定哪些调用目标地址映射到ObjectFile 中的哪些动态符号?如果可以避免这样做,我宁愿不手动计算通过PLTGOT 的所有跳跃。

【问题讨论】:

标签: c++ llvm llvm-c++-api


【解决方案1】:

只有在目标文件被加载到内存并链接到程序的符号表时,才会计算动态符号的地址。一般来说,在链接之前不可能确定它们的最终地址。

如果我没记错的话,你可以使用 LLVM 的链接时间优化模块而不是 ObjectFile 来获取你想要的数据,因为它在加载模块时会执行地址链接。

祝你好运!

【讨论】:

    猜你喜欢
    • 2011-10-29
    • 2015-08-25
    • 2014-12-05
    • 1970-01-01
    • 2016-07-26
    • 2016-02-07
    • 1970-01-01
    • 2018-10-21
    • 2014-10-31
    相关资源
    最近更新 更多