[patch] Fix corruption of non-C++ symbols by the demangler

Jan Kratochvil jan.kratochvil at redhat.com
Tue Jan 14 09:07:29 UTC 2014


On Tue, 14 Jan 2014 10:00:59 +0100, Mark Wielaard wrote:
> The __GLOBAL__.[ID]_xxx functions are wrappers generated when a module
> xxx contains constructors and destructors of static objects, which will
> call the actual static initialization and destruction functions for all
> globals in the module. Since they are "normal" functions they could
> potentially end up in a backtrace, but I am not sure "demangling" them
> provides any real benefit.

In such case I will add it, it should be there.


> Till now we didn't require a C++ compiler explicitly. I am not against
> it, we will one day anyway. But it might be simpler to just add the
> generated exe and core as done with other tests. And just test with
> --executable --core. It makes sure we don't rely on any particular
> compiler version for the test data.

OK.


> The other user of __cxa_demangle nm.c (show_symbols_sysv) probably needs
> the same check.

OK, will do.


> A slightly simpler way to handle this is to not unconditionally add
> backtrace-demangle to check_PROGRAMS and run-backtrace-demangle.sh to
> TESTS, but only if we have the demangler (which probably also indicates
> we actually have a C++ compiler, so we don't even try to compile it
> otherwise):
> 
> if DEMANGLE
> check_programs += backtrace-demangle
> TESTS += run-backtrace-demangle.sh
> endif

This is the easy way but the problem with this approach is that the test is
then completely missing from the results, instead of being SKIPped.  This
makes comparisons of multiple testsuite results weird, at last this happens
with the GDB testsuite.


Thanks,
Jan


More information about the elfutils-devel mailing list