我需要一种直接使用偏移来访问DIE的方法。到目前为止,我发现计算单元(CU)对象有一种方法,您可以从其偏移量访问DIE。
即。 :
cu._get_DIE(die.attributes['DW_AT_type'].value)
但是,如果您尝试访问当前CU之外的DIE,则您将超出界限,因为该DIE未在该CU下编入索引。
我能想到的最好的方法是循环使用CU,并使用偏移作为索引创建一个全面的DIE列表。
似乎应该有一个DWARFInfo
类的方法,只要你有它的偏移就可以访问任何DIE。
我需要这样做的原因是因为我循环遍历所有CU以生成我的全局变量列表,我需要在不同的CU中引用DIE来检索类型信息。
答案 0 :(得分:0)
pyelftools似乎将引用表示为相对于编译单元的值,因此您可能需要在全局变量列表中包含CU信息。
结帐https://github.com/eliben/pyelftools/issues/27。它表示引用可以相对于编译单元。事实上,DWARF规范也说明了这一点:http://dwarfstd.org/doc/dwarf-2.0.0.pdf#page=71