summaryrefslogtreecommitdiff
path: root/tests/stack_unwinding_test.cpp
diff options
context:
space:
mode:
authorScott Lobdell <slobdell@google.com>2021-02-05 18:00:54 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2021-02-05 18:00:54 +0000
commitc800319ca06bb624b67d33741336fa42e9dd2667 (patch)
treecae72caa0322a7ecec0fecf813ae0d7c14ffd980 /tests/stack_unwinding_test.cpp
parentea1e0a27d3fb999f3015dfd7b42d9ba699284f10 (diff)
parent3cfe8f2ca3589184c6329a6fa4fadf7a5ebaa0d4 (diff)
Merge "Merge SP1A.210122.003 Change-Id: I38a0c2cf0aed3762aafe4b1fa8a69dd03106fa39" into s-keystone-qcom-dev
Diffstat (limited to 'tests/stack_unwinding_test.cpp')
-rw-r--r--tests/stack_unwinding_test.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/tests/stack_unwinding_test.cpp b/tests/stack_unwinding_test.cpp
index 0ff6f30a6..7fb22471c 100644
--- a/tests/stack_unwinding_test.cpp
+++ b/tests/stack_unwinding_test.cpp
@@ -82,7 +82,7 @@ struct UnwindData {
static UnwindData g_unwind_data;
-static void noinline UnwindSignalHandler(int) {
+__attribute__((unused)) static void noinline UnwindSignalHandler(int) {
_Unwind_Backtrace(FrameCounter, &g_unwind_data.handler_frame_count);
g_unwind_data.handler_one_deeper_frame_count = unwind_one_frame_deeper();
@@ -98,7 +98,7 @@ static void verify_unwind_data(const UnwindData& unwind_data) {
EXPECT_EQ(unwind_data.handler_frame_count + 1, unwind_data.handler_one_deeper_frame_count);
}
-static void noinline UnwindTest() {
+__attribute__((unused)) static void noinline UnwindTest() {
g_unwind_data = {};
_Unwind_Backtrace(FrameCounter, &g_unwind_data.expected_frame_count);
@@ -112,14 +112,24 @@ static void noinline UnwindTest() {
}
TEST(stack_unwinding, unwind_through_signal_frame) {
+#if defined(__aarch64__)
+ // A newer libunwind.a update should restore signal frame unwinding on arm64.
+ GTEST_SKIP() << "signal frame unwinding temporarily broken on arm64 -- b/153025717";
+#else
ScopedSignalHandler ssh(SIGUSR1, UnwindSignalHandler);
UnwindTest();
+#endif
}
// On LP32, the SA_SIGINFO flag gets you __restore_rt instead of __restore.
TEST(stack_unwinding, unwind_through_signal_frame_SA_SIGINFO) {
+#if defined(__aarch64__)
+ // A newer libunwind.a update should restore signal frame unwinding on arm64.
+ GTEST_SKIP() << "signal frame unwinding temporarily broken on arm64 -- b/153025717";
+#else
ScopedSignalHandler ssh(SIGUSR1, UnwindSignalHandler, SA_SIGINFO);
UnwindTest();
+#endif
}