llvm-cxxmap - 損壞名稱重新對應工具

語法

llvm-cxxmap [選項] 符號檔案-1 符號檔案-2

描述

llvm-cxxmap 工具根據描述應被視為等效的名稱元件的檔案,對 C++ 損壞名稱執行模糊匹配。

符號檔案應該包含一個 C++ 損壞名稱列表(每行一個)。空白行和以 # 開頭的行將被忽略。輸出是成對等效符號的列表,每行一個,格式如下

<symbol-1> <symbol-2>

其中 <符號-1> 是來自 符號檔案-1 的符號,而 <符號-2> 是來自 符號檔案-2 的符號。兩個符號相同的對應將被省略。

選項

-remapping-file=檔案, -r=檔案

指定一個檔案,其中包含應使用來確定兩個符號是否等效的等效規則列表。必填。請參閱 重新對應檔案

-output=檔案, -o=檔案

指定一個檔案以將匹配名稱列表寫入。如果未指定,則該列表將寫入標準輸出。

-Wambiguous

如果 符號檔案-2 中有多個等效(但不同)的符號,則產生警告。

-Wincomplete

如果 符號檔案-1 包含 符號檔案-2 中沒有等效符號的符號,則產生警告。

重新對應檔案

重新對應檔案是一個文字檔案,其中包含以下形式的行

fragmentkind fragment1 fragment2

其中 fragmentkindnametypeencoding 之一,分別表示後面的 mangled 名稱片段是 <名稱>、<類型> 還是 <編碼>。空行和以 # 開頭的行會被忽略。

未經 mangled 處理的 C 名稱可以表示為一個 <原始名稱> 的 編碼(帶有長度前綴)。

# C function "void foo_bar()" is remapped to C++ function "void foo::bar()".
encoding 7foo_bar _Z3foo3barv

為了方便起見,內建的 <substitution>,例如 StSs,會被視為 <name>(即使它們在技術上不是 <name>)。

例如,要指定 absl::string_viewstd::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 目標除外。