SKIP tests that need a demangler if it is not there. Signed-off-by: Mark Wielaard <[email protected]> --- ChangeLog | 4 +++ configure.ac | 4 ++- tests/ChangeLog | 8 +++++ tests/Makefile.am | 2 ++ tests/run-stack-d-test.sh | 14 ++++----- ...stack-i-test.sh => run-stack-demangled-test.sh} | 34 ++++++++++++++++++---- tests/run-stack-i-test.sh | 13 +++++---- 7 files changed, 60 insertions(+), 19 deletions(-) copy tests/{run-stack-i-test.sh => run-stack-demangled-test.sh} (68%)
diff --git a/ChangeLog b/ChangeLog index dc20648..1a11c6d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2015-05-01 Mark Wielaard <[email protected]> + * configure.ac (DEMANGLE): Explicitly set enable_demangler. + +2015-05-01 Mark Wielaard <[email protected]> + * configure.ac (debugpred): Use and set use_debugpred_val. (textrelcheck): Explicitly set enable_textrelcheck to yes or no. (symbol-versioning): Likewise for enable_symbol_versioning. diff --git a/configure.ac b/configure.ac index 876600d..0ba3db3 100644 --- a/configure.ac +++ b/configure.ac @@ -235,6 +235,8 @@ AC_SUBST([zip_LIBS]) AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])]) AM_CONDITIONAL(DEMANGLE, test "$ac_cv_lib_stdcpp___cxa_demangle" = yes) +AS_IF([test "$ac_cv_lib_stdcpp___cxa_demangle" = yes] + [enable_demangler=yes],[enable_demangler=no]) AC_ARG_ENABLE([textrelcheck], AS_HELP_STRING([--disable-textrelcheck], @@ -378,7 +380,7 @@ AC_MSG_NOTICE([ gzip support : ${with_zlib} bzip2 support : ${with_bzlib} lzma/xz support : ${with_lzma} - libstdc++ demangle support : ${ac_cv_lib_stdcpp___cxa_demangle} + libstdc++ demangle support : ${enable_demangler} File textrel check : ${enable_textrelcheck} Symbol versioning : ${enable_symbol_versioning} diff --git a/tests/ChangeLog b/tests/ChangeLog index b686184..0556b1f 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,11 @@ +2015-05-01 Mark Wielaard <[email protected]> + + * run-stack-d-test.sh: Use --raw and mangled output. + * run-stack-i-test.sh: Likewise. + * run-stack-demangled-test.sh: New test. + * Makefile.am (EXTRA_DIST): Add run-stack-demangled-test.sh. + (TESTS): Likewise. + 2015-04-01 H.J. Lu <[email protected]> * Makefile.am (TESTS): Add run-strip-test10.sh. diff --git a/tests/Makefile.am b/tests/Makefile.am index 45bb74d..f94bd67 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -113,6 +113,7 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \ run-backtrace-core-s390x.sh run-backtrace-core-s390.sh \ run-backtrace-core-aarch64.sh \ run-backtrace-demangle.sh run-stack-d-test.sh run-stack-i-test.sh \ + run-stack-demangled-test.sh \ run-readelf-dwz-multi.sh run-allfcts-multi.sh run-deleted.sh \ run-linkmap-cut.sh run-aggregate-size.sh vdsosyms run-readelf-A.sh \ run-getsrc-die.sh run-strptr.sh newdata elfstrtab @@ -282,6 +283,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \ testfile-backtrace-demangle.cc \ testfile-backtrace-demangle.core.bz2 \ run-stack-d-test.sh run-stack-i-test.sh \ + run-stack-demangled-test.sh \ testfiledwarfinlines.bz2 testfiledwarfinlines.core.bz2 \ run-readelf-zdebug.sh testfile-debug.bz2 testfile-zdebug.bz2 \ run-deleted.sh run-linkmap-cut.sh linkmap-cut-lib.so.bz2 \ diff --git a/tests/run-stack-d-test.sh b/tests/run-stack-d-test.sh index 040c2fa..4198201 100755 --- a/tests/run-stack-d-test.sh +++ b/tests/run-stack-d-test.sh @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2014 Red Hat, Inc. +# Copyright (C) 2014, 2015 Red Hat, Inc. # This file is part of elfutils. # # This file is free software; you can redistribute it and/or modify @@ -68,21 +68,21 @@ else STACKCMD=${abs_top_builddir}/src/stack fi -# Without -d the top function comes out as fu. -testrun_compare ${abs_top_builddir}/src/stack -n 2 -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF +# Without -d the top function comes out as fu. Use --raw to not demangle. +testrun_compare ${abs_top_builddir}/src/stack -r -n 2 -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF PID 13654 - core TID 13654: -#0 0x00000000004006c8 fu(int) +#0 0x00000000004006c8 _Z2fui #1 0x00000000004004c5 main $STACKCMD: tid 13654: shown max number of frames (2, use -n 0 for unlimited) EOF # But when asking for source we see it is actually on line 6. -# (Which is in function fubar, not fu). -testrun_compare ${abs_top_builddir}/src/stack -n 2 -s -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF +# (Which is in function fubar, not fu). Use --raw to not demangle. +testrun_compare ${abs_top_builddir}/src/stack -r -n 2 -s -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF PID 13654 - core TID 13654: -#0 0x00000000004006c8 fu(int) +#0 0x00000000004006c8 _Z2fui /home/mark/src/tests/dwarfinlines.cpp:6 #1 0x00000000004004c5 main /home/mark/src/tests/dwarfinlines.cpp:39 diff --git a/tests/run-stack-i-test.sh b/tests/run-stack-demangled-test.sh similarity index 68% copy from tests/run-stack-i-test.sh copy to tests/run-stack-demangled-test.sh index 2d09ec0..0d9f8f3 100755 --- a/tests/run-stack-i-test.sh +++ b/tests/run-stack-demangled-test.sh @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2014 Red Hat, Inc. +# Copyright (C) 2014, 2015 Red Hat, Inc. # This file is part of elfutils. # # This file is free software; you can redistribute it and/or modify @@ -15,9 +15,16 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +if test -n "$ELFUTILS_DISABLE_DEMANGLE"; then + exit 77 +fi + . $srcdir/test-subr.sh -# See run-stack-d-test.sh for dwarfinlines.cpp source. +# See run-stack-d-test.sh and run-stack-i-test.sh +# Same tests, now with demangler support, no -r, and without -d. +# Only change in output is an explit fu(int) instead of _Z2fui. + testfiles testfiledwarfinlines testfiledwarfinlines.core # Depending on whether we are running make check or make installcheck @@ -29,9 +36,26 @@ else STACKCMD=${abs_top_builddir}/src/stack fi -# Compare with run-stack-d-test.sh to see the output without --inlines. -# Only two call frames are visible (there is a jump from main to fu or -# fubar). +# Without -d the top function comes out as fu. +testrun_compare ${abs_top_builddir}/src/stack -n 2 -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF +PID 13654 - core +TID 13654: +#0 0x00000000004006c8 fu(int) +#1 0x00000000004004c5 main +$STACKCMD: tid 13654: shown max number of frames (2, use -n 0 for unlimited) +EOF + +# But when asking for source we see it is actually on line 6. +# (Which is in function fubar, not fu). +testrun_compare ${abs_top_builddir}/src/stack -n 2 -s -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF +PID 13654 - core +TID 13654: +#0 0x00000000004006c8 fu(int) + /home/mark/src/tests/dwarfinlines.cpp:6 +#1 0x00000000004004c5 main + /home/mark/src/tests/dwarfinlines.cpp:39 +$STACKCMD: tid 13654: shown max number of frames (2, use -n 0 for unlimited) +EOF # With --inlines we get all inlined calls. Note they share the same # address. diff --git a/tests/run-stack-i-test.sh b/tests/run-stack-i-test.sh index 2d09ec0..ffab85f 100755 --- a/tests/run-stack-i-test.sh +++ b/tests/run-stack-i-test.sh @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2014 Red Hat, Inc. +# Copyright (C) 2014, 2015 Red Hat, Inc. # This file is part of elfutils. # # This file is free software; you can redistribute it and/or modify @@ -31,25 +31,26 @@ fi # Compare with run-stack-d-test.sh to see the output without --inlines. # Only two call frames are visible (there is a jump from main to fu or -# fubar). +# fubar). Explicitly use --raw so demangler support being configured in +# doesn't change the results. # With --inlines we get all inlined calls. Note they share the same # address. -testrun_compare ${abs_top_builddir}/src/stack -n 6 -i -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF +testrun_compare ${abs_top_builddir}/src/stack -r -n 6 -i -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF PID 13654 - core TID 13654: #0 0x00000000004006c8 fubar #1 0x00000000004006c8 foobar #2 0x00000000004006c8 bar #3 0x00000000004006c8 foo -#4 0x00000000004006c8 fu(int) +#4 0x00000000004006c8 _Z2fui #5 0x00000000004004c5 main $STACKCMD: tid 13654: shown max number of frames (6, use -n 0 for unlimited) EOF # With --source we can also see where in the source the inlined frames # where originally called from. -testrun_compare ${abs_top_builddir}/src/stack -n 6 -s -i -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF +testrun_compare ${abs_top_builddir}/src/stack -r -n 6 -s -i -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF PID 13654 - core TID 13654: #0 0x00000000004006c8 fubar @@ -60,7 +61,7 @@ TID 13654: /home/mark/src/tests/dwarfinlines.cpp:21 #3 0x00000000004006c8 foo /home/mark/src/tests/dwarfinlines.cpp:27 -#4 0x00000000004006c8 fu(int) +#4 0x00000000004006c8 _Z2fui /home/mark/src/tests/dwarfinlines.cpp:33 #5 0x00000000004004c5 main /home/mark/src/tests/dwarfinlines.cpp:39 -- 1.8.3.1
