This is the mail archive of the
elfutils-devel@sourceware.org
mailing list for the elfutils project.
Re: [patch] Fix corruption of non-C++ symbols by the demangler
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: elfutils-devel at lists dot fedorahosted dot org
- Date: Tue, 14 Jan 2014 10:07:29 +0100
- Subject: Re: [patch] Fix corruption of non-C++ symbols by the demangler
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