Go to the first, previous, next, last section, table of contents.


c++filt

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

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

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

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

c++filt symbol

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

@env{-_}
@env{--strip-underscores}
システムによっては,CとC++のコンパイラが,すべての名前の前にアンダースコ アを書き込むものもあります.例えば,Cでの名前fooが,低レベルでは 名前_fooになります.このオプションは,最初のアンダースコアを削除 します.@command{c++filt}がデフォルトでアンダースコアを削除するかどうか はターゲットに依存します.
@env{-j}
@env{--java}
demangleされた名前を,Javaの構文を用いて出力します.デフォルトは,C++の 構文の使用です.
@env{-n}
@env{--no-strip-underscores}
最初のアンダースコアを削除しません.
@env{-s format}
@env{--format=format}
GNU @command{nm}は,異なるC++コンパイラが使用されてmangleしている, 三つの異なるメソッドを復号することが可能です.このオプションの引数は,使 用されているメソッドを選択します.
gnu
GNUコンパイラで使用されるもの(デフォルトメソッド).
lucid
Lucidコンパイラで使用されるもの.
arm
C++ Annotated Reference Manualで指定されるもの.
hp
HPコンパイラで使用されるもの.
edg
EDGコンパイラで使用されるもの.
gnu-new-abi
新しいABIを用いたGNUコンパイラで使用されるもの.
@env{--help}
@command{c++filt}のオプションの概要を出力し終了します.
@env{--version}
@command{c++filt}のバージョンナンバーを出力し終了します.

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

c++filt symbol

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

c++filt option symbol


Go to the first, previous, next, last section, table of contents.