[Bug 250702] c++filt crashes on a particular symbol
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Sun Nov 1 12:29:26 UTC 2020
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=250702
--- Comment #7 from Dimitry Andric <dim at FreeBSD.org> ---
It's pretty interesting, when I use this simple little demangle.cpp program:
#include <cxxabi.h>
#include <stdio.h>
#include <stdlib.h>
static char *demangle_buf;
static size_t demangle_size = 2 * 1024;
static void demangle(const char *mangled_name)
{
int status;
char *demangled_name = abi::__cxa_demangle(mangled_name, demangle_buf,
&demangle_size, &status);
switch (status) {
case 0:
printf("%s -> %s\n", mangled_name, demangled_name);
break;
case -1:
printf("error: memory allocation failure while demangling %s\n",
mangled_name);
break;
case -2:
printf("error: %s is not a valid C++ mangled name\n", mangled_name);
break;
case -3:
printf("error: invalid argument(s) while demangling %s\n", mangled_name);
break;
default:
printf("error: unknown status %d while demangling %s\n", status,
mangled_name);
break;
}
}
int main(int argc, char *argv[])
{
if (argc <= 1) {
printf("Usage: %s mangled_name ...\n", argv[0]);
return 1;
}
if ((demangle_buf = (char *)malloc(demangle_size)) == NULL) {
printf("Unable to allocate memory for demangle buffer\n");
return 1;
}
for (int i = 1; i < argc; ++i) {
demangle(argv[i]);
}
free(demangle_buf);
return 0;
}
it works just fine on the identifier:
% ./demangle '_ZZ5func1vENK3$_0clEv'
_ZZ5func1vENK3$_0clEv -> func1(void)::$_0::operator()(void) const
However, it uses the *older* copy of elftoolchain's libelftc_dem_gnu3.c in
contrib/libcxxrt!
E.g. something has been broken in this area in more recent releases of
elftoolchain...
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-toolchain
mailing list