問題タブ [readelf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4853 参照

elf - binutils/readelf を使用したシンボル アドレスの決定

私は、検証テスト スクリプトがテスト対象のソフトウェアのビルド内でシンボル アドレスを見つける必要があるプロジェクトに取り組んでいます。これは、ブレークポイントの設定やメモリからの静的データの読み取りに使用される場合があります。私が求めているのは、シンボル名、メモリ内のベース アドレス、およびサイズを含むマップ ファイルを作成することです。私たちのビルドは、必要な情報を含む ELF ファイルを出力します。readelf、nm、および objdumpツールを使用して、必要なシンボル アドレスを取得しようとしています。

私が最初に試したところreadelf -s file.elf、いくつかのシンボル、特にアセンブラーで記述されたシンボルにアクセスしているように見えました。しかし、私が欲しかったシンボルの多くはそこにありませんでした。特に、Ada コード内で発生したものです。

以前readelf --debug-dump file.elfはすべてのデバッグ情報をダンプしていました。そこから、Ada コードにあったものを含め、すべてのシンボルが表示されます。ただし、形式はDWARF形式のようです。シンボリック情報をリストするように依頼したときに、これらのシンボルが readelf によって出力されない理由を知っている人はいますか? おそらく、私が見逃しているオプションがあるだけです。

カスタム DWARF パーサーを作成して情報を取得することもできますが、Binutils (nm、readelf、objdump) のいずれかを使用して情報を取得できる場合は、標準的なソリューションを使用したいと思います。

0 投票する
1 に答える
1350 参照

python - PythonでELFファイルの動的セクションを読み取るにはどうすればよいですか

ELF ファイルの動的セクションに関する情報を取得したいと考えています。基本的に、コマンド ラインを使用して取得した情報と同じです。

readelf -d elfFile

0 投票する
1 に答える
460 参照

arm - ARM ELF オブジェクト内の関数サイズが正しくない

オブジェクト ファイルの readelf 出力:

私が理解している.textセクション構造:

.text セクションのサイズは 0x124 です

セクション サイズが 0x124 で、最後の関数が 0x125 で終了していることに注意してください。不足しているバイトはどうなったのでしょうか?

ありがとう。

0 投票する
1 に答える
86 参照

gdb - gdb backtrace は、各関数がどのライブラリから取得されたかをどのように認識しますか?

私は簡単なプログラムを書きました。meller1 という関数を呼び出し、meller2 を呼び出し、いくつかの関数が free を呼び出してクラッシュするまで続けます。このプログラムでコアダンプ ファイルを使用して gdb backtrace を実行すると、次のメッセージが表示されます。

gdb bt

私の質問は、gdb bt は free が /lib/libc.so.6 から取得されたことをどのように認識するのでしょうか? Coredump ファイルと実行可能ファイル自体を指定して、自分で手動で行う方法はありますか? ありがとう。

0 投票する
2 に答える
1381 参照

c++ - Linux でのプラグインを使用した C++ プログラムのベスト プラクティス

プラグインを C++ Linux プログラムにロードするためのベスト プラクティスは何かについて、誰かが光を当てることができますか?

プラグイン (libsyntax.so) を備えたプログラム (エディター) があるとします。エディターの構成ファイルには、libsyntax.so ライブラリー (plugin1=/opt/editor/gizmos/libsyntax.so) へのパスが含まれています。エディターは構成を読み取り、次を呼び出します。

すべて問題ありません。

(libsyntax.so) がヘルパー ライブラリ (libcolor.so) に依存しているとします。readelf を実行すると、次のようになります。

ただし、この時点で上記の dlopen() は失敗し、エラーは「そのようなファイルまたはディレクトリはありません」です。LD_DEBUG=all を使用すると、libsyntax.so がロードされた後、メッセージが次のようになることがわかります。

ローダー/リンカーは標準的な場所を探していますが、明らかに、依存関係が見つかりません。これは ldconfig または LD_LIBRARY_PATH で簡単に処理できますが、どちらのソリューションも汚いと感じます。

プラグインと依存関係の両方をロードするクリーンな方法はありますか? どうやってこれをやっていますか?

0 投票する
1 に答える
1228 参照

gcc - ELFファイルのVirtualAddress、LoadAddress、およびPhysicalAddress?

出力セクションの説明に関するldマニュアルによると:

アドレスまたは>regionは、VMA、つまり出力セクションの仮想メモリ アドレスを表します。

AT()またはAT>lma_regionは、LMA、つまり出力セクションのロード メモリ アドレスを表します。

そして、helloworld elf ファイルのセクション ヘッダープログラム ヘッダーreadelf -eをダンプするために、詳細なビューを取得することにしました。結果は以下のとおりです。

セクション ヘッダー

プログラムヘッダー

私の質問は次のとおりです。

  • ダンプされたヘッダーに LMA がないのはなぜですか? LMA は ELF ファイルでどのように表されますか?
  • 赤い長方形の Addr 列は何を意味していますか? VMA?
  • 緑色の長方形の PhysAddr は何を意味していますか?

追加 1

これまでのところ、PhysAddr は LMA のようです。