[LLVMdev] How to get the original function name in C++?

Nick Lewycky nicholas at mxc.ca
Thu Dec 11 12:24:04 PST 2014


Welson Sun wrote:
> If you want to get the original name by a library function, as Jonathan
> mentioned, you can call __cxa_demangle in cxxabi.h. However, this API is
> only available in gcc.

Huh? It's defined in the C++ ABI standard: 
http://mentorembedded.github.io/cxx-abi/abi.html#demangler

There are implementations in libstdc++, libcxxabi and libcxxrt.

  If you want something more portable, try glog or
> libibert, notice libibert is GPL licensed.
>
> On Thu, Dec 11, 2014 at 7:57 AM, Roel Jordans <r.jordans at tue.nl
> <mailto:r.jordans at tue.nl>> wrote:
>
>     When a C++ compiler translates source code it will perform name
>     mangling to avoid name collisions due to type overloading.  You can
>     use a tool like c++filt to de-mangle the generated names
>
>     Cheers,
>       Roel
>
>
>     On 11/12/14 11:52, zy jj wrote:
>
>         Hi, everyone!
>               I'm new here trapped by a simple problem for days.
>               When LLVM translates C++ source code to IR, it will add a
>         prefix to
>         the function name. For example:
>         source code:
>         int foo(){
>         return 1;
>         }
>         IR form:
>         define i32 @_Z3foov() #0 {
>         entry:
>             ret i32 1, !dbg !20
>         }
>               The getName() method returns _Z3foov, then how can I get
>         foo? I
>         know the debugging information is contained in metadata, but I've no
>         idea on using it.
>               Thanks a lot for any help.
>
>
>
>
>         ______________________________ _________________
>         LLVM Developers mailing list
>         LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>
>         http://llvm.cs.uiuc.edu
>         http://lists.cs.uiuc.edu/ mailman/listinfo/llvmdev
>         <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev>
>
>     ______________________________ _________________
>     LLVM Developers mailing list
>     LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu
>     http://lists.cs.uiuc.edu/ mailman/listinfo/llvmdev
>     <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev>
>
>
>
>
> --
> - Welson
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list