llvm-cxxmap - 損壞名稱重新對應工具¶
語法¶
llvm-cxxmap [選項] 符號檔案-1 符號檔案-2
描述¶
llvm-cxxmap 工具根據描述應被視為等效的名稱元件的檔案,對 C++ 損壞名稱執行模糊匹配。
符號檔案應該包含一個 C++ 損壞名稱列表(每行一個)。空白行和以 #
開頭的行將被忽略。輸出是成對等效符號的列表,每行一個,格式如下
<symbol-1> <symbol-2>
其中 <符號-1>
是來自 符號檔案-1 的符號,而 <符號-2>
是來自 符號檔案-2 的符號。兩個符號相同的對應將被省略。
選項¶
- -output=檔案, -o=檔案¶
指定一個檔案以將匹配名稱列表寫入。如果未指定,則該列表將寫入標準輸出。
- -Wambiguous¶
如果 符號檔案-2 中有多個等效(但不同)的符號,則產生警告。
- -Wincomplete¶
如果 符號檔案-1 包含 符號檔案-2 中沒有等效符號的符號,則產生警告。
重新對應檔案¶
重新對應檔案是一個文字檔案,其中包含以下形式的行
fragmentkind fragment1 fragment2
其中 fragmentkind
是 name
、type
或 encoding
之一,分別表示後面的 mangled 名稱片段是 <名稱>、<類型> 還是 <編碼>。空行和以 #
開頭的行會被忽略。
未經 mangled 處理的 C 名稱可以表示為一個 <原始名稱> 的 編碼
(帶有長度前綴)。
# 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 mangled 方案的 C++ mangled 名稱。這涵蓋了 Clang 支持的所有 C++ 目標,但 Windows 目標除外。