elftc_demangle
—
demangle a C++ name
library “libelftc”
#include
<libelftc.h>
int
elftc_demangle
(
const
char *encodedname,
char *buffer,
size_t bufsize,
unsigned int flags);
Function
elftc_demangle
() decodes a symbol
name encoded according to the type encoding rules for the C++ language and
returns a string denoting an equivalent C++ prototype.
Argument
encodedname specifies the encoded
symbol name. Argument
buffer denotes a
programmer-specified area to place the prototype string in. Argument
bufsize specifies the size of the
programmer-specified area. Argument
flags
specifies the encoding style in use for argument
encodedname. Supported encoding styles are:
ELFTC_DEM_ARM
- The encoding style used by compilers adhering to the conventions of the
C++ Annotated Reference Manual.
ELFTC_DEM_GNU2
- The encoding style by GNU C++ version 2.
ELFTC_DEM_GNU3
- The encoding style by GNU C++ version 3 and later.
Argument
flags may be zero, in which case the
function will attempt to guess the encoding scheme from the contents of
encodedname.
Function
elftc_demangle
() returns 0 on
success. In case of an error it returns -1 and sets the
errno variable.
To decode a name that uses an unknown encoding style use:
char buffer[1024];
const char *funcname;
funcname = ...; /* points to string to be demangled */
if (elftc_demangle(funcname, buffer, sizeof(buffer), 0) == 0)
printf("Demangled name: %\n", buffer);
else
perror("Cannot demangle %s", funcname);
Function
elftc_demangle
() may fail with the
following errors:
- [
EINVAL
]
- Argument encodedname was not a valid
encoded name.
- [
ENAMETOOLONG
]
- The output buffer specified by arguments
buffer and
bufsize was too small to hold the decoded
function prototype.
elf(3),
elf_strptr(3)