1

我需要一种使用它们的偏移量直接访问 DIE 的方法。到目前为止,我发现有一种计算单元 (CU) 对象的方法,您可以在其中从偏移量访问 DIE。

IE :

cu._get_DIE(die.attributes['DW_AT_type'].value)

但是,如果您尝试访问当前 CU 之外的 DIE,则会超出范围,因为该 DIE 未在该 CU 下编制索引。

我能想到的最好的方法是遍历 CU,并使用偏移量作为索引创建一个完整的 DIE 列表。

似乎应该有一个DWARFInfo类的方法,只要你有它的偏移量,你就可以访问任何 DIE。

我需要这样做的原因是因为我正在循环所有 CU 以生成我的全局变量列表,并且我需要在不同的 CU 中引用 DIE 来检索类型信息。

4

1 回答 1

0

pyelftools 似乎将引用表示为相对于编译单元的值,因此您可能需要在全局列表中包含 CU 信息。

查看https://github.com/eliben/pyelftools/issues/27。它表示引用可以相对于编译单元。事实上,DWARF 规范也这么说: http: //dwarfstd.org/doc/dwarf-2.0.0.pdf#page=71

于 2015-09-23T15:48:36.243 回答