llvm-cxxmap - 符号修饰名重映射工具¶
概要¶
llvm-cxxmap [选项] symbol-file-1 symbol-file-2
描述¶
llvm-cxxmap 工具基于一个描述应被视为等效的名称组件的文件,执行 C++ 符号修饰名的模糊匹配。
符号文件应包含 C++ 符号修饰名列表(每行一个)。空行和以 #
开头的行将被忽略。输出是一个等效符号对的列表,每行一对,格式如下
<symbol-1> <symbol-2>
其中 <symbol-1>
是来自 symbol-file-1 的符号,<symbol-2>
是来自 symbol-file-2 的符号。两个符号相同的映射将被省略。
选项¶
- -output=文件, -o=文件¶
指定一个文件,用于写入匹配名称的列表。如果未指定,列表将写入标准输出。
- -Wambiguous¶
如果 symbol-file-2 中存在多个等效(但不同的)符号,则生成警告。
- -Wincomplete¶
如果 symbol-file-1 包含在 symbol-file-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 目标除外。