<div dir="ltr"><div>Nick is right. Sorry for the confusion. I am actually trying to find one demangle library (for Itanium C++ ABI) that is not GPL, and can be compiled with Visual C++. I am currently using the one in glog, but just bumped into a bug which failed on demangling a function name.<br><br></div><div>libcxxabi says only support OSX, I compiled it fine with xcode 6.1, but Linux gcc-4.8.0 emits a lot of errors, haven't tried Visual C yet.<br><br></div><div>Anybody tried libstdc++, libcxxrt with Visual C++ yet?<br><br></div><div>-Welson<br></div><div><div><div><div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 11, 2014 at 12:24 PM, Nick Lewycky <span dir="ltr"><<a href="mailto:nicholas@mxc.ca" target="_blank">nicholas@mxc.ca</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Welson Sun wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
If you want to get the original name by a library function, as Jonathan<br>
mentioned, you can call __cxa_demangle in cxxabi.h. However, this API is<br>
only available in gcc.<br>
</blockquote>
<br></span>
Huh? It's defined in the C++ ABI standard: <a href="http://mentorembedded.github.io/cxx-abi/abi.html#demangler" target="_blank">http://mentorembedded.github.<u></u>io/cxx-abi/abi.html#demangler</a><br>
<br>
There are implementations in libstdc++, libcxxabi and libcxxrt.<span class=""><br>
<br>
 If you want something more portable, try glog or<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
libibert, notice libibert is GPL licensed.<br>
<br>
On Thu, Dec 11, 2014 at 7:57 AM, Roel Jordans <<a href="mailto:r.jordans@tue.nl" target="_blank">r.jordans@tue.nl</a><br></span><div><div class="h5">
<mailto:<a href="mailto:r.jordans@tue.nl" target="_blank">r.jordans@tue.nl</a>>> wrote:<br>
<br>
    When a C++ compiler translates source code it will perform name<br>
    mangling to avoid name collisions due to type overloading.  You can<br>
    use a tool like c++filt to de-mangle the generated names<br>
<br>
    Cheers,<br>
      Roel<br>
<br>
<br>
    On 11/12/14 11:52, zy jj wrote:<br>
<br>
        Hi, everyone!<br>
              I'm new here trapped by a simple problem for days.<br>
              When LLVM translates C++ source code to IR, it will add a<br>
        prefix to<br>
        the function name. For example:<br>
        source code:<br>
        int foo(){<br>
        return 1;<br>
        }<br>
        IR form:<br>
        define i32 @_Z3foov() #0 {<br>
        entry:<br>
            ret i32 1, !dbg !20<br>
        }<br>
              The getName() method returns _Z3foov, then how can I get<br>
        foo? I<br>
        know the debugging information is contained in metadata, but I've no<br>
        idea on using it.<br>
              Thanks a lot for any help.<br>
<br>
<br>
<br>
<br>
        ______________________________ _________________<br>
        LLVM Developers mailing list<br></div></div>
        <a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a> <mailto:<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>><br>
        <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
        <a href="http://lists.cs.uiuc.edu/" target="_blank">http://lists.cs.uiuc.edu/</a> mailman/listinfo/llvmdev<br>
        <<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvmdev</a>><br>
<br>
    ______________________________ _________________<br>
    LLVM Developers mailing list<br>
    <a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a> <mailto:<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>> <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
    <a href="http://lists.cs.uiuc.edu/" target="_blank">http://lists.cs.uiuc.edu/</a> mailman/listinfo/llvmdev<span class=""><br>
    <<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvmdev</a>><br>
<br>
<br>
<br>
<br>
--<br>
- Welson<br>
<br>
<br>
<br></span><span class="">
______________________________<u></u>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvmdev</a><br>
</span></blockquote>
<br>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr">- Welson<br><div><div><div><br></div></div></div></div></div>
</div></div></div></div></div></div></div></div>