binutilsに関するsh19910711のブックマーク (3)
-
前回の続きでBinutilsのツール群の説明をします。 今回はnmとc++filtを説明します。 これらのツールはどれも前回説明したobjdumpの一部の機能みたいなものです。 ソースコード #include <cstdio> const static int CONST_VALUE = 100; int uninitialized_value; class SuperClass {public: virtual void print(const char *str) = 0; }; class Sub1 : public SuperClass{public: void print(const char *str){ printf("Sub1: %s\n", str); } }; class Sub2 : public SuperClass{public: void print(co
-
C++ のシンボルをデマングルする C++ コンパイラはシンボルが一意の名前を持つように名前マングル (name mangling) と呼ばれる処理を行います。本記事では GNU の開発環境で C++ のシンボルをデマングル (demangle) する方法を紹介します。 マングルの方法はコンパイラ依存です。同じコンパイラでもバージョンによってマングルの方法が異なることがあります。たとえば GCC 3.x では int foo(int) を _Z3fooi に、 int foo(const char*) を _Z3fooPKc のようにマングルしますが、 GCC 2.95 ではそれぞれ foo__FPCc, foo__Fi となります。 コマンドラインからデマングル C++ のオブジェクトファイルにnmをかけると、デフォルトではマングルされた読みづらい形式でシンボルが出力されます。 %
-
Mach-O バイナリをコード見ながら逆アセンブルする方法が無いってのがずっと困っていました。つまり linux でよくやっている objdump -S みたいなことがやりたかったんですが、 objdump -S は Mach-O に対しては動かないし、 otool -tvV もソースコードは見せてくれないし、っていう。でまぁ一念発起して binutils というか libbfd をいじってみたのでした。 今回はじめてFSF なソフトに patch 投げてみて、まぁ特に著作権の処理とかどのくらい時間かかるもんなのかよくわからなくて、こちらのかた以外にあまり体験談的なのが見つからなかったので、なんか書いていみようかと。 とりあえず適当にパッチ書き。経験上デカいパッチいきなり投げるヤツはうざがられるので、なんか小さめな目標で…ってことで objdump -S を .o に対してだけ動くような
-
1