summaryrefslogtreecommitdiffstats
path: root/tests/backtrace-subr.sh
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2014-01-26 20:16:48 +0100
committerMark Wielaard <[email protected]>2014-01-30 11:08:32 +0100
commit225dddfda38c1cd90e2daa3e72da2a9d01013336 (patch)
tree1cf63b5901216ed21a3b4d68bf283cfaee6730f3 /tests/backtrace-subr.sh
parenta02d90ae12c5386b85332536b516da435150dd88 (diff)
backends: Add arm frame_nregs and set_initial_registers_tid.
This allows CFI unwinding for ARM. It relies on having .debug_frame around which is always the case in our testsuite. All native backtrace tests PASS on arm if debuginfo (for glibc) is installed on the system. Otherwise the tests SKIP. For non-debug unwinding ARM uses EXIDX tables, not .eh_frames, which would have to be translated to CFI to do unwinding without .debug_frame available. Signed-off-by: Mark Wielaard <[email protected]>
Diffstat (limited to 'tests/backtrace-subr.sh')
-rw-r--r--tests/backtrace-subr.sh12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/backtrace-subr.sh b/tests/backtrace-subr.sh
index 62b873c7..1df93564 100644
--- a/tests/backtrace-subr.sh
+++ b/tests/backtrace-subr.sh
@@ -74,6 +74,18 @@ check_unsupported()
echo >&2 $testname: arch not supported
exit 77
fi
+
+ # ARM is special. It is supported, but it doesn't use .eh_frame by default
+ # making the native tests fail unless debuginfo (for glibc) is installed
+ # and we can fall back on .debug_frame for the CFI.
+ case "`uname -m`" in
+ arm* )
+ if grep 'dwfl_thread_getframes: No DWARF information found' $1; then
+ echo >&2 $testname: arm needs debuginfo installed for all libraries
+ exit 77
+ fi
+ ;;
+ esac
}
check_core()