49

is there any C++ name-mangling decoder for g++?

SunnyShah
  • 28,934
  • 30
  • 90
  • 137

4 Answers4

73

You can use c++filt to demangle c++ symbols. For instance

$ c++filt -n _Z1fv
f()
ryan_s
  • 7,826
  • 3
  • 27
  • 28
14

c++filt, example usage here:

Can we see the template instantiated code by C++ compiler

Community
  • 1
  • 1
qdot
  • 6,195
  • 5
  • 44
  • 95
6

You may also be interested on the -C option of objdump:

objdump -CSr main.o

which demangles relocation references like:

  char *sn = new char[4];
10:   bf 04 00 00 00          mov    $0x4,%edi
15:   e8 00 00 00 00          callq  1a <main+0x1a>
                      16: R_X86_64_PC32       operator new[](unsigned long)-0x4

Without -C it would show the mangled name _Znam.

See also: Can objdump un-mangle names of C++ template functions?

There are also some online demanglers mentioned at Is there an online name demangler for C++? like http://demangler.com/ If it exists, there is SaaS of it.

nm also has a -C option.

Community
  • 1
  • 1
Ciro Santilli OurBigBook.com
  • 347,512
  • 102
  • 1,199
  • 985
1

you have c++filt. Recently I found an online tool as well.

1.

c++filt [-_|--strip-underscore]
        [-n|--no-strip-underscore]
        [-p|--no-params]
        [-t|--types]
        [-i|--no-verbose]
        [-r|--no-recurse-limit]
        [-R|--recurse-limit]
        [-s format|--format=format]
        [--help]  [--version]  [symbol…]

Example: c++filt symbol

for more info

  1. Online solution visit
ANjaNA
  • 1,404
  • 2
  • 16
  • 29