周りを見回すと、C++シンボルをデマングルする方法ではなく、デマングルすることに関する質問がほとんどあります。はい、マングル化するシンボルを含むいくつかのダミーコードでg++
オプションを使用して-S
を呼び出し、結果のアセンブリを調べることができますが、GCCの名前のマングリングに関する適切な参照または仕様を見つけることができませんでした。私が見つけることができた最も近いものは http://www.int0x80.gr/papers/name_mangling.pdf でしたが、名前テンプレートのインスタンス化がどのように変形されるか、または_Z3fooIN3BarEE3FooIXT_EEv
の理由などはカバーされていないようですはFoo<Bar> foo<Bar>()
に変換されます(方法はわかりますが、IXT_EE
とは一体何ですか?_Z
の後にN
がないのはなぜですか?これはどういう意味ですか?).
Gccのソースからの引用( https://github.com/gcc-mirror/gcc/blob/master/gcc/cp/mangle.c ):
このファイルは、IA64 C++ ABI仕様に従ってC++名のマングリングを実装します。
そして、これがこの仕様のルールです: https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling