Go to main content

man pages section 1: User Commands

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

llvm-cxxmap (1)

Name

llvm-cxxmap - Mangled name remapping tool

Synopsis

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

Description

LLVM-CXXMAP(1)                       LLVM                       LLVM-CXXMAP(1)



NAME
       llvm-cxxmap - Mangled name remapping tool

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

DESCRIPTION
       The  llvm-cxxmap  tool  performs  fuzzy  matching of C++ mangled names,
       based on a file describing name components that  should  be  considered
       equivalent.

       The  symbol  files  should contain a list of C++ mangled names (one per
       line).  Blank lines and lines starting with # are ignored.  The  output
       is a list of pairs of equivalent symbols, one per line, of the form

          <symbol-1> <symbol-2>

       where  <symbol-1>  is  a  symbol from symbol-file-1 and <symbol-2> is a
       symbol from symbol-file-2. Mappings for which the two symbols are iden-
       tical are omitted.

OPTIONS
       -remapping-file=file, -r=file
              Specify  a  file  containing  a  list  of equivalence rules that
              should be used to determine whether two symbols are  equivalent.
              Required.  See REMAPPING FILE.

       -output=file, -o=file
              Specify a file to write the list of matched names to. If unspec-
              ified, the list will be written to stdout.

       -Wambiguous
              Produce a warning if there are  multiple  equivalent  (but  dis-
              tinct) symbols in symbol-file-2.

       -Wincomplete
              Produce  a  warning if symbol-file-1 contains a symbol for which
              there is no equivalent symbol in symbol-file-2.

REMAPPING FILE
       The remapping file is a text file containing lines of the form

          fragmentkind fragment1 fragment2

       where fragmentkind is  one  of  name,  type,  or  encoding,  indicating
       whether  the  following mangled name fragments are <name>s, <type>s, or
       <encoding>s, respectively.  Blank lines and lines starting with  #  are
       ignored.

       Unmangled   C  names  can  be  expressed  as  an  encoding  that  is  a
       (length-prefixed) <source-name>:

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

       For convenience,  built-in  <substitution>s  such  as  St  and  Ss  are
       accepted as <name>s (even though they technically are not <name>s).

       For  example,  to  specify  that absl::string_view and std::string_view
       should be treated as equivalent, the following remapping file could  be
       used:

          # 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

       NOTE:
          Symbol  remapping  is currently only supported for C++ mangled names
          following the Itanium C++ ABI mangling scheme. This covers  all  C++
          targets supported by Clang other than Windows targets.

AUTHOR
       Maintained by the LLVM Team (https://llvm.org/).

COPYRIGHT
       2003-2022, LLVM Project



ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+---------------------+
       |ATTRIBUTE TYPE |  ATTRIBUTE VALUE    |
       +---------------+---------------------+
       |Availability   | developer/llvm/llvm |
       +---------------+---------------------+
       |Stability      | Uncommitted         |
       +---------------+---------------------+

NOTES
       Source  code  for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This     software     was    built    from    source    available    at
       https://github.com/oracle/solaris-userland.   The  original   community
       source     was     downloaded    from     https://github.com/llvm/llvm-
       project/releases/download/llvmorg-11.0.0/llvm-11.0.0.src.tar.xz.

       Further information about this software can be found on the open source
       community website at https://llvm.org/.



11                                2022-06-28                    LLVM-CXXMAP(1)