llvm-cxxmap - Mangled name 重新對應工具¶
概要¶
llvm-cxxmap [選項] 符號檔-1 符號檔-2
描述¶
llvm-cxxmap 工具基於描述應視為等效的名稱組件的檔案,執行 C++ 裝飾名稱的模糊比對。
符號檔應包含 C++ 裝飾名稱列表(每行一個)。空白行和以 #
開頭的行將被忽略。輸出是等效符號的配對列表,每行一對,格式如下
<symbol-1> <symbol-2>
其中 <symbol-1>
是來自符號檔-1 的符號,而 <symbol-2>
是來自符號檔-2 的符號。兩個符號相同的映射將被省略。
選項¶
- -output=file, -o=file¶
指定一個檔案以寫入匹配名稱的列表。 如果未指定,列表將寫入標準輸出。
- -Wambiguous¶
如果符號檔-2 中存在多個等效(但不同)的符號,則產生警告。
- -Wincomplete¶
如果符號檔-1 包含在符號檔-2 中沒有等效符號的符號,則產生警告。
重新對應檔案¶
重新對應檔案是一個文字檔,其中包含以下形式的行
fragmentkind fragment1 fragment2
其中 fragmentkind
是 name
、type
或 encoding
之一,表示以下裝飾名稱片段分別是 <name>、<type> 或 <encoding>。 空白行和以 #
開頭的行將被忽略。
未裝飾的 C 名稱可以表示為一個 encoding
,它是(長度前綴的) <source-name>
# C function "void foo_bar()" is remapped to C++ function "void foo::bar()".
encoding 7foo_bar _Z3foo3barv
為了方便起見,內建的 <substitution>,例如 St
和 Ss
,被接受為 <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++ 裝飾名稱。 這涵蓋了 Clang 支援的所有 C++ 目標,Windows 目標除外。