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