On 10 June 2014 02:38, David Chisnall <[email protected]> wrote: > > If you know that the thing that you are demangling is a symbol name, then you > can use the _Z check, which isn't really a hack - it's a marker added to > identify C++ symbols. Note that, if you're writing portable code, you need > to remember that some systems prepend an underscore to all compiler-generated > symbols, so you may also need to check for __Z and trim the leading _.
Right, it just feels hackish to have to know this detail of the ABI. I think I'd like an explicit __cxa_demangle_symbol interface, or perhaps __cxa_is_mangled_symbol to query a string. > The __cxa_demangle() function has to handle things that are not just symbols > (types and so on) and so can't do this test itself. Its most common use is > generating a human-friendly error for an uncaught exception, where it is just > parsing a type encoding. My use, and I suspect Ryan's, is demangling symbols obtained from introspection interfaces like backtrace_symbols(3). In any case, our libelftc __cxa_demangle accepts strings that are neither symbols nor NTBS manglings, and can return a bogus demangled name for them. Of course, it's a mistake to rely on __cxa_demangle rejecting these for arbitrary input. _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "[email protected]"
