Next: , Previous: strip, Up: Top


9 c++filt

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

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

Footnotes

[1] MS-DOSは,ファイル名に+文字が 使用できないので,MS-DOS上でのこのプログラムはcxxfiltと命名され ます.