1LLVM-CXXMAP(1) LLVM LLVM-CXXMAP(1)
2
3
4
6 llvm-cxxmap - Mangled name remapping tool
7
9 llvm-cxxmap [options] symbol-file-1 symbol-file-2
10
12 The llvm-cxxmap tool performs fuzzy matching of C++ mangled names,
13 based on a file describing name components that should be considered
14 equivalent.
15
16 The symbol files should contain a list of C++ mangled names (one per
17 line). Blank lines and lines starting with # are ignored. The output
18 is a list of pairs of equivalent symbols, one per line, of the form
19
20 <symbol-1> <symbol-2>
21
22 where <symbol-1> is a symbol from symbol-file-1 and <symbol-2> is a
23 symbol from symbol-file-2. Mappings for which the two symbols are iden‐
24 tical are omitted.
25
27 -remapping-file=file, -r=file
28 Specify a file containing a list of equivalence rules that
29 should be used to determine whether two symbols are equivalent.
30 Required. See REMAPPING FILE.
31
32 -output=file, -o=file
33 Specify a file to write the list of matched names to. If unspec‐
34 ified, the list will be written to stdout.
35
36 -Wambiguous
37 Produce a warning if there are multiple equivalent (but dis‐
38 tinct) symbols in symbol-file-2.
39
40 -Wincomplete
41 Produce a warning if symbol-file-1 contains a symbol for which
42 there is no equivalent symbol in symbol-file-2.
43
45 The remapping file is a text file containing lines of the form
46
47 fragmentkind fragment1 fragment2
48
49 where fragmentkind is one of name, type, or encoding, indicating
50 whether the following mangled name fragments are <name>s, <type>s, or
51 <encoding>s, respectively. Blank lines and lines starting with # are
52 ignored.
53
54 Unmangled C names can be expressed as an encoding that is a
55 (length-prefixed) <source-name>:
56
57 # C function "void foo_bar()" is remapped to C++ function "void foo::bar()".
58 encoding 7foo_bar _Z3foo3barv
59
60 For convenience, built-in <substitution>s such as St and Ss are ac‐
61 cepted as <name>s (even though they technically are not <name>s).
62
63 For example, to specify that absl::string_view and std::string_view
64 should be treated as equivalent, the following remapping file could be
65 used:
66
67 # absl::string_view is considered equivalent to std::string_view
68 type N4absl11string_viewE St17basic_string_viewIcSt11char_traitsIcEE
69
70 # std:: might be std::__1:: in libc++ or std::__cxx11:: in libstdc++
71 name St St3__1
72 name St St7__cxx11
73
74 NOTE:
75 Symbol remapping is currently only supported for C++ mangled names
76 following the Itanium C++ ABI mangling scheme. This covers all C++
77 targets supported by Clang other than Windows targets.
78
80 Maintained by the LLVM Team (https://llvm.org/).
81
83 2003-2023, LLVM Project
84
85
86
87
8815 2023-01-12 LLVM-CXXMAP(1)