A pair of underscores "__" inside a function name let the libiberty demangler fail. The problem is roughly at cplus-dem.c:2169 when it tries to find the signature which begin with "__": My first thought was to search backward from the end instead. But what about types names in the signature with a pair of underscores? It just can't figure out where the signature _really_ starts if not doing something very complicated like doing backtracking after a failed parse. BTW: Is it common sense not to use a pair of underscores in function names? Or is it only me trying to use such function names? Additionaly struct work_stuff *WORK is not cleaned up properly after failure. So libiberty ends up with a core-dump (or exactly gdb or suchalike). Here is a patch which fixes this problem: --- gdb-4.18-vanilla/libiberty/cplus-dem.c Thu Apr 1 22:37:06 1999 +++ gdb-4.18/libiberty/cplus-dem.c Sat Apr 22 18:45:55 2000 @@ -3,6 +3,7 @@ Written by James Clark ([EMAIL PROTECTED]) Rewritten by Fred Fish ([EMAIL PROTECTED]) for ARM and Lucid demangling Modified by Satish Pai ([EMAIL PROTECTED]) for HP demangling + Minor bug fixes by Matthias Riese ([EMAIL PROTECTED]) This file is part of the libiberty library. Libiberty is free software; you can redistribute it and/or @@ -856,10 +857,12 @@ if (work -> btypevec != NULL) { free ((char *) work -> btypevec); + work -> bsize = 0; } if (work -> ktypevec != NULL) { free ((char *) work -> ktypevec); + work -> ksize = 0; } } @@ -880,6 +883,7 @@ { free ((char *) work -> typevec); work -> typevec = NULL; + work -> typevec_size = 0; } if (work->tmpl_argvec) { Best Regards Matthias Riese