[LLVMdev] clang change function name
Haopeng Liu
hyliuhp at gmail.com
Mon Mar 2 11:18:35 PST 2015
Thanks for all your help.
"__cxa_demangle" can decode the mangled function name as expected.
Another question is that given an unmangled function name, how to get
the corresponding mangled name in llvm?
Best,
Haopeng
On 3/2/15 3:22 AM, mats petersson wrote:
> Depending on what you want to achieve, one possibility is wrapping
> function declaration with
>
> extern "C" void somefunction(void);
>
> or
>
> extern "C" {
> void somefunction();
> int otherfunction();
> }
>
> will make those functions have their name unmangled - this is used
> when interfacing between C and C++ functions, since the C compiler
> will NOT name-mangle.
>
> This does however also affect some other aspects of the code e.g.
> linker can't check parameter passing and you can't have more than one
> function with the same name, with different function argument types -
> like you can in C++ [in fact these are the two main reasons for using
> name-mangling]. I can't remember if it also affects the ability for
> example to handle exceptions from C++.
>
> --
> Mats
>
> On 2 March 2015 at 09:03, serge guelton <sguelton at quarkslab.com> wrote:
>> On Mon, Mar 02, 2015 at 12:12:34AM -0500, John Criswell wrote:
>>> On 3/2/15 12:07 AM, Haopeng Liu wrote:
>>>> Got it, thanks. But in my pass, I use function name to locate. Can I
>>>> disable mangling in clang?
>>> No, but you can probably fine a library that can either mangle the original
>>> name or demangle the name you're seeing in the LLVM bitcode.
>>>
>>> As an FYI, on Unix, the c++filt program will demangle names (although
>>> sometimes you have to remove an extra '_' from the front of the name to get
>>> it to work).
>> there's also a __cxa_demangle function in
>>
>> http://llvm.org/svn/llvm-project/libcxxabi/trunk/include/cxxabi.h
>> _______________________________________________
>> 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