C++ Mangling

2017-10-19  本文已影响18人  偶是星爷

最近在做C++ Mangling,简而言之就是把"_ZN6System5Sound4beepEv"转换为真实的定义 “System::Sound::beep();”,也就是c++filt主要干的事情。

C++的Mangling巨复杂,你可以看一下这些示例:

example

幸好LLVM和GCC提供了cxxabi.h这个文件,有一个函数能帮我们干这个事情

extern _LIBCXXABI_FUNC_VIS char *__cxa_demangle(const char *mangled_name,
                                                char *output_buffer,
                                                size_t *length, int *status);

注意mangled_name是单下划线('_')开头。

上一篇下一篇

猜你喜欢

热点阅读