問題タブ [objdump]
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.
c - マシン コード内の場所の検索 (gcc/objdump -d)
マシン出力で調べる C コードの特定の行がある場合、それを objdump 出力でどのように見つけますか。ここに例があります
bar が希望どおりにインライン化されているかどうかを確認したい。それとも、objdump の代わりに別のツールを使用しますか?
arm - 古い ARM7TDMI (ARMv4T) の objdump は、新しいアーキテクチャの命令を示していますか?
私は GNU の成功に非常に関心があり、ARM の objdump の潜在的なバグをどうするかについてフィードバックを求めていました....
「objdump -D --target=binary -m arm7tdmi」の出力を調べると、古い ARM7TDMI コアには存在しない命令が表示されます。
(私はランダムなビットのファイルを見て、それを ELF ファイルではなく生のバイナリとして扱っています。)
たとえば、mrcc、blx、および ldc2 は ARMv5 以降でのみ表示されますが、上記のコマンド ライン スイッチを使用した出力に表示されます。
(「-m armv4t」でも同じ問題が発生します。)
Ubuntu 9.04 のバージョン 2.19.1-multiarch を使用しています。
これは本物のバグですか、それとも別のスイッチを使用する必要がありますか?
心から、
クリス
linux - LinuxでELFファイルのデータセクションの内容を調べるにはどうすればよいですか?
私はobjdump
LinuxELFバイナリのアセンブリコードを調べるために使用してきました。
rodata
(読み取り専用データ)セクションに格納されているジャンプテーブルを介した間接ジャンプがある場合があります。
このデータセクションの内容を表示するための取得方法objdump
やその他のツールはありますか?
プログラムを実行してデバッガーで関連するアドレスを調べることはできますが、インタラクティブに実行する必要があるため、実行したくありません。
理想的な答えは、コンテンツを表示するだけでなく、表示形式を制御できるツールを特定することですod
。
assembly - objdump の出力で「-0x1(%edx,%ecx,1)」とはどういう意味ですか?
objdump を使用してバイナリを理解すると、ASM 構文に精通していないことに気付きます。次の概念はどういう意味ですか?
そして、あなたがそれに取り組んでいる間、そのような概念に関するドキュメントを見つけるために何を検索すればよいでしょうか?
linux-device-driver - Linux System.map に関数名とアドレスがありません
AT91SAM9263 ボードで組み込み開発を行っていますが、奇妙な問題に遭遇しました。Debian Linux カーネル 2.6.18.4 を実行しており、arm-linux-gcc 3.4.6 でクロスコンパイルされ、C ライブラリに uClibc-0.9.28 を使用しています。カーネル デバイス ドライバーをデバッグしていますが、特定の関数が System.map ファイルに表示されません。当然のことながら、ブレークポイントを設定することはできません。奇妙なことに、その呼び出し関数に割り込むと、ステップインできません。gdb の nexti コマンドを使用すると、関数は実行されますが、ソースはスキップされます。関数は atmel_rx_chars(struct uart_port *port) です。これは atmel_serial.c で宣言された static void 関数であり、その例は [1] に示されています。同じファイル (atmel_tx_chars(struct uart_port *port)、たとえば) これらは同じファイルで宣言され、実際には System.map ファイルでインデックス化されています。[2] によると、「System.map は 'nm vmlinux' によって生成され、無関係または興味のないシンボルは grep で抽出されます。」nm (および objdump) を使用してすべてのシンボルを表示しようとしましたが、それでも出力に表示されません。ただし、atmel_rx_chars vmlinux を grep すると、一致が返されます。私は自分自身を少しパワーユーザーだと思っていましたが、その後は本当に困惑しています. どんなアドバイスでも大歓迎です。私は自分自身を少しパワーユーザーだと思っていましたが、その後は本当に困惑しています. どんなアドバイスでも大歓迎です。私は自分自身を少しパワーユーザーだと思っていましたが、その後は本当に困惑しています. どんなアドバイスでも大歓迎です。
ありがとうございました、
ジェイス
[1] http://lxr.free-electrons.com/source/drivers/serial/atmel_serial.c#L379
[2]http://www.faqs.org/docs/Linux-HOWTO/Kernel-HOWTO.html#systemmap
strip - only-keep-debugでobjcopyのストリップを逆にする方法は?
最新の Linux では、ほとんどすべてのオブジェクトが取り除かれ、2 つの部分 (2 つのファイル) に分割されます。1 つ目は実行可能ファイルそのもので、2 つ目は元の ELF から削除されたデバッグ シンボルです。そのようなファイルはで作成されます
デバッグ情報を含む ELF ファイルにマージするbinary
にはどうすればよいですか? binary.dbg
ストリップされていない元のバイナリを再作成したい。バイト単位でオリジナルと同じにすることはできませんが、内部にデバッグ シンボルを含める必要があります。
PS はい、セクションについては知ってgnu.debuglink
いますが、一部のデバッガー (etnus) と逆アセンブラーでは機能しません (objdump はシンボル情報を復元できません)。
c - objdump は、-S オプションを使用してソース コードを表示する方法を教えてください。
バイナリにソース ファイルへの参照はありますか? バイナリで文字列を実行しようとしましたが、リストされているソースファイルへの参照が見つかりませんでした...
assembly - objdump から情報を取得する方法
Linux で実行可能ファイルからダンプされた情報を読み取るときに問題が発生します。情報は次のとおりです。
2 つの質問があります。
- アドレス 804a0ea と 804a0f4 はどういう意味ですか? プロセスのアドレス空間の仮想アドレス?
- ... とはどういう意味ですか? アドレス 804a0f0 で命令を取得するにはどうすればよいですか?
前もって感謝します。
コードのこの部分に関する詳細情報:
誰かが私に手を差し伸べてくれることを願っています.:-)
assembly - レジスタ%eizとは何ですか?
次のアセンブリコードでは、以下を使用してダンプしましたobjdump
。
レジスターとは何%eiz
ですか?上記のコードはどういう意味ですか?