[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

9. c++filt

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=binutils-ja&node=c++filt"
"binutils/c++filt"へのコメント(無し)

 
c++filt [`-_'|`--strip-underscores']
        [`-j'|`--java']
        [`-n'|`--no-strip-underscores']
        [`-p'|`--no-params']
        [`-s' format|`--format='format]
        [`--help']  [`--version']  [symbol...]

C++とJava言語は,関数のオーバーロードを提供し,それは(それぞれ異なる型 のパラメータの受け入れを提供する)同じ名前で複数の関数を書くことが可能だ ということを意味します.すべてのC++とJavaの関数名は,低レベルのアセンブ リラベルに符号化されます(この処理はmanglingとして知られています.) c++filt(1)プログラムは,マッピングを反転します.それは,これらのオーバーロー ドされた関数を破壊することから,リンカが守ることができるように,低レベ ルの名前をユーザレベルの名前に復号(demangles)します.

入力にあるすべての英数単語(文字,数字,アンダースコア,ドル記号,または ピリオド)は,ポテンシャルラベルと考えられます.ラベルをC++の名前に復号 する場合,C++の名前は出力で低レベルの名前に置換されます.

個別のシンボルを解読するためにc++filtを使用することが可能です.

 
c++filt symbol

symbol引数が与えられている場合,c++filtは,シンボル名を 標準入力から読み込み,demangleされた名前を標準出力に書き出します.すべ ての結果は,標準出力に出力されます.

-_
--strip-underscores
システムによっては,CとC++のコンパイラが,すべての名前の前にアンダース コアを書き込むものもあります.例えば,Cでの名前fooが,低レベルで は名前_fooになります.このオプションは,最初のアンダースコアを削 除します.c++filtがデフォルトでアンダースコアを削除するかどう かはターゲットに依存します.

-j
--java
demangleされた名前を,Javaの構文を用いて出力します.デフォルトは,C++ の構文の使用です.

-n
--no-strip-underscores
最初のアンダースコアを削除しません.

-p
--no-params
関数名をdemanglするとき,関数のパラメータの形式を表示しません.

-s format
--format=format
c++filtは,いろいろなコンパイラで使用されている,様々な mangleの手法を復号することが可能です.このオプションの引数は,使用する メソッドを選択します.

auto
実行形式を基にした自動選択(デフォルトの手法).
gnu
GNU C++コンパイラで使用されるもの(g++).
lucid
Lucidコンパイラで使用されるもの(lcc).
arm
C++ Annotated Reference Manualで指定されるもの.
hp
HPコンパイラで使用されるもの(aCC).
edg
EDGコンパイラで使用されるもの.
gnu-v3
V3 ABIを用いたGNU C++コンパイラで使用されるもの.
java
GNU Javaコンパイラで使用されるもの(gcj).
gnat
GNU Adaコンパイラで使用されるもの(GNAT).

--help
c++filtのオプションの概要を出力し終了します.

--version
c++filtのバージョンナンバーを出力し終了します.

警告: c++filtは,新しいユーティリティで,そのユーザイ ンターフェースの詳細は将来のリリースで変更されやすくなっています.特に, コマンドラインの引数として渡される名前を復号するためのコマンドラインオ プションが,将来要求されるかもしれません.言い換えると以下のようになる ということです.

 
c++filt symbol

これが,将来のリリースでは,以下のようになるかもしれません.

 
c++filt option symbol


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]