2012-05-09 3 views
1

DIEにオフセットを使って直接アクセスする方法が必要です。これまでは、オフセットからDIEにアクセスできる計算ユニット(CU)オブジェクトのメソッドがあることを発見しました。ELF解析:pyelftoolsを使ってDIEに直接アクセスする

I.e. :あなたは、現在のCUの外にあるDIEにアクセスしようとするとそのDIEはそのCUの下でインデックス化されていないため、

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

しかし、あなたが範囲外です。

これを達成するには、CUをループして、オフセットをインデックスとして使用するDIEの包括的なリストを作成することをお勧めします。

DWARFInfoクラスのメソッドは、オフセットされている限りDIEにアクセスできるようにする必要があるようです。

私はこれを行う必要があるのは、すべてのCUをループしてグローバルのリストを生成しているためです。異なるCUのDIEを参照して、タイプ情報を取得する必要があります。

答えて

0

pyelftoolsはコンパイル単位に対して相対的な参照を表現しているようですので、おそらくCU情報をあなたのグローバルリストに含める必要があります。

チェックアウトhttps://github.com/eliben/pyelftools/issues/27これは、参照がコンパイル単位に関連する可能性があることを示します。実際、DWARFの仕様でも、それはそうだと言っています:http://dwarfstd.org/doc/dwarf-2.0.0.pdf#page=71

関連する問題