2013-05-03 6 views
12

私は現在、実行可能ファイルを表現するためにLLVM'sObjectFile(文書番号here)を使用しています。私はObjectFileの実行ファイルを正常に読み込んでおり、begin_dynamic_symbols()関数の呼び出しによって得られたsymbol_iteratorに含まれるシンボル名に対応する実行可能ファイル内の呼び出し先アドレスを特定したいと考えています。 symbol_iteratorの各シンボルを反復すると、各シンボルの名前とそのアドレスが得られますが、シンボルは動的なので、各シンボルのアドレスは-1です。これは、ObjectFileがシンボル名を対応するコール宛先アドレスに直接関連付けていないことを示します。LLVMを使用した実行可能シンボルの動的シンボル解決

ObjectFileでは、どの発信先アドレスがどのダイナミックシンボルにマッピングされるかを判別する方法はありますか。私はむしろ手動ですべてのジャンプをPLTGOTで回避することはできません。

+0

cfe-devメーリングリストで質問してください:http://lists.cs.uiuc.edu/pipermail/cfe-dev/ –

答えて

1

動的シンボルのアドレスは、オブジェクトファイルがメモリにロードされ、プログラムのシンボルテーブルにリンクされたときにのみ計算されます。一般に、リンクする前に最終的な住所を決定することは不可能です。

正しくリコールすれば、モジュールをロードするときにアドレスリンクを実行するので、ObjectFileの代わりにLLVMのリンク時最適化モジュールを使用して、必要なデータを取得することができます。

幸運を祈る!

関連する問題