1

コマンドのクローンに取り組んでいelfdumpます。

私のプログラムは、すべての実行可能ファイルで実行すると正常に動作elfdump -ecps *file*します。しかし、libc.so などのライブラリ ファイルでプログラムを実行すると、.symtab セクションのすべてのシンボルに対して間違ったバージョン番号が出力されます (具体的には、すべてゼロです)。ドキュメントを何度も見てきましたが、なぜこれが起こっているのかわかりません。

誰かがいくつかのヒントを提供してもらえますか? または、ライブラリであるかどうかを検出する方法を教えてください。

4

1 に答える 1

3

e_typeフィールドがET_DYNであるかどうかを確認することで、共有ライブラリに対して実行しているかどうかを判断できます。(男エルフ(5))

ELFでのglibcのシンボルごとのバージョン管理のトリックをカバーするUlrichDrepperによる記事があります。おそらく、これまでに遭遇したことのない追加情報がそこにあります。Linuxのマニュアルページには、ELFドキュメントのシンボルごとのバージョン情報が記載されていないようです。

于 2009-02-17T17:51:49.597 に答える