llvm-cxxmap - マングルされた名前の再マッピングツール¶
概要¶
llvm-cxxmap [オプション] symbol-file-1 symbol-file-2
説明¶
llvm-cxxmap ツールは、同等とみなすべき名前の構成要素を記述したファイルに基づいて、C++ のマングルされた名前のあいまい一致を実行します。
シンボルファイルには、C++ のマングルされた名前のリスト(1行に1つ)が含まれている必要があります。空白行と #
で始まる行は無視されます。出力は、同等のシンボルのペアのリストで、1行に1つ、次の形式で出力されます。
<symbol-1> <symbol-2>
ここで、<symbol-1>
は *symbol-file-1* のシンボルで、<symbol-2>
は *symbol-file-2* のシンボルです。2つのシンボルが同一であるマッピングは省略されます。
オプション¶
- -remapping-file=file, -r=file¶
2つのシンボルが同等であるかどうかを判断するために使用する必要がある同値規則のリストを含むファイルを指定します。必須です。「再マッピングファイル」を参照してください。
- -output=file, -o=file¶
一致した名前のリストを書き込むファイルを指定します。指定しない場合、リストは stdout に書き込まれます。
- -Wambiguous¶
*symbol-file-2* に複数の同等の(ただし異なる)シンボルがある場合、警告を生成します。
- -Wincomplete¶
*symbol-file-1* に *symbol-file-2* に同等のシンボルがないシンボルが含まれている場合、警告を生成します。
再マッピングファイル¶
再マッピングファイルは、次の形式の行を含むテキストファイルです。
fragmentkind fragment1 fragment2
ここで、fragmentkind
は、name
、type
、または encoding
のいずれかであり、後続のマングルされた名前のフラグメントが <name>、<type>、または <encoding>のいずれであるかを示します。空白行と #
で始まる行は無視されます。
マングルされていない C 名は、(長さがプレフィックスとして付加された) <source-name> である encoding
として表現できます。
# C function "void foo_bar()" is remapped to C++ function "void foo::bar()".
encoding 7foo_bar _Z3foo3barv
便宜上、St
や Ss
などの組み込み <substitution> は <name> として受け入れられます (技術的には <name> ではありませんが)。
たとえば、absl::string_view
と std::string_view
を同等に扱うことを指定するには、次の再マッピングファイルを使用できます。
# absl::string_view is considered equivalent to std::string_view
type N4absl11string_viewE St17basic_string_viewIcSt11char_traitsIcEE
# std:: might be std::__1:: in libc++ or std::__cxx11:: in libstdc++
name St St3__1
name St St7__cxx11
注
シンボルの再マッピングは、現在、Itanium C++ ABI マングリングスキームに従う C++ のマングルされた名前でのみサポートされています。これは、Windows ターゲット以外の Clang でサポートされているすべての C++ ターゲットをカバーします。