llvm-cxxmap命令详解

概要

llvm-cxxmap [options*] *symbol-file-1 symbol-file-2

描述

llvm-cxxmap工具执行的C++错位的名称模糊匹配的基础上,应考虑的等效文件描述名称组件。

符号文件应包含C++错位名称列表(每行一个)。以空白行和行开头将#被忽略。输出是表单的等效符号对的列表,每行一个

<symbol-1> <symbol-2>

其中<symbol-1>是从一个符号的symbol-file-1<symbol-2>是从一个符号的symbol-file-2 。省略两个符号相同的映射。

选项

  • -remapping-file=file, -r=file
    指定一个文件,其中包含应用于确定两个符号是否等效的等价规则列表。需要。请参阅重新记录文件。

  • -output=file, -o=file
    指定要写入匹配名称列表的文件。如果未指定,则列表将写入stdout。

  • -Wambiguous
    如果symbol-file-2中存在多个等效(但不同)的符号,则生成警告 。

  • -Wincomplete
    如果symbol-file-1包含符号-file-2中没有等效符号的符号,则产生警告。

重映射文件

重映射文件是包含表单行的文本文件

fragmentkind fragment1 fragment2

其中fragmentkind是下列之一name,type或者encoding,指示以下重整名称片段是否<name>s,<type>s,或<encoding>s,分别。以空白行和行开头将#被忽略。

为了方便起见,内置的<substitution>s取值如St和Ss 被接受为<name>s(即使他们在技术上是不<name>s)。

例如,要指定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++目标。