On Tue, 13 Dec 2022 at 21:03, Björn Schäpers <g...@hazardy.de> wrote: > > From: Björn Schäpers <bjo...@hazardy.de> > > One could add (), these are not part of __name. One could also try to > check upfront if __cxa_demangle should be called at all.
Thanks for the patch, I'll push this. I think we do want to check whether to call __cxa_demangle, because otherwise an extern "C" function called simply "g" will get demangled to "__float128" and that's not right! So I think we should check whether the function name starts with "_Z" which indicates a C++ function name. That can be improved later though. > > -- >8 -- > > Tested on i686-w64-mingw32. > > __cxa_demangle is only to demangle C++ names, for all C functions, > extern "C" functions, and including main it returns -2, in that case > just adapt the given name. Otherwise it's kept empty, which doesn't look > nice in the stacktrace. > > libstdc++-v3/ChangeLog: > > * include/std/stacktrace (stacktrace_entry::_S_demangle): Use > raw __name if __cxa_demangle could not demangle it. > > Signed-off-by: Björn Schäpers <bjo...@hazardy.de> > --- > libstdc++-v3/include/std/stacktrace | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/libstdc++-v3/include/std/stacktrace > b/libstdc++-v3/include/std/stacktrace > index 83c6463b0d8..5baf2dcdaca 100644 > --- a/libstdc++-v3/include/std/stacktrace > +++ b/libstdc++-v3/include/std/stacktrace > @@ -219,6 +219,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > &__status); > if (__status == 0) > __s = __str; > + else > + __s = __name; > __builtin_free(__str); > return __s; > } > -- > 2.38.1 >