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

Welson Sun welson.sun at gmail.com
Thu Dec 11 10:54:04 PST 2014


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. 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> 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         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>  _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>



-- 
- Welson
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141211/5db3d7de/attachment.html>


More information about the llvm-dev mailing list