This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] tests: run-backtrace-demangle.sh check exitcode and max number of frames.


There can be more than 3 frames, but depending on the system/installed
glibc we might not be able to unwind fully till the end.
cxxfunc -> f -> main
Expect to see the top two and a warning that there are more frames
(exit code 1)

Signed-off-by: Mark Wielaard <mjw@redhat.com>
---
 tests/ChangeLog                 |    4 ++++
 tests/run-backtrace-demangle.sh |   13 +++++++++++--
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/tests/ChangeLog b/tests/ChangeLog
index 1b84f3a..098093a 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,7 @@
+2014-01-16  Mark Wielaard  <mjw@redhat.com>
+
+	* run-backtrace-demangle.sh: Check exitcode and max number of frames.
+
 2014-01-15  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
 	Fix corruption of non-C++ symbols by the demangler.
diff --git a/tests/run-backtrace-demangle.sh b/tests/run-backtrace-demangle.sh
index b5bddeb..6e18e77 100755
--- a/tests/run-backtrace-demangle.sh
+++ b/tests/run-backtrace-demangle.sh
@@ -20,13 +20,22 @@ if test -n "$ELFUTILS_DISABLE_DEMANGLE"; then
 fi
 
 . $srcdir/backtrace-subr.sh
-set -x
 
 child=testfile-backtrace-demangle
 testfiles $child{,.core}
 tempfiles $child.{bt,err}
-testrun ${abs_top_builddir}/src/stack -e $child --core $child.core >$child.bt 2>$child.err
+
+# There can be more than 3 frames, but depending on the system/installed
+# glibc we might not be able to unwind fully till the end.
+# cxxfunc -> f -> main
+# Expect to see the top two and a warning that there are more frames
+# (exit code 1)
+testrun ${abs_top_builddir}/src/stack -n 2 -e $child --core $child.core >$child.bt 2>$child.err || exitcode=$?
 cat $child.{bt,err}
+if test $exitcode != 1 || ! grep "shown max number of frames" $child.err; then
+  echo >&2 $2: expected more than 2 frames
+  false
+fi
 if ! grep -w f $child.bt; then
   echo >&2 $2: no f
   false
-- 
1.7.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]