[compiler-rt] bfb0b85 - [compiler-rt] XFAIL test on iOS

Julian Lettner via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 11 11:59:23 PDT 2020


Author: Julian Lettner
Date: 2020-08-11T11:58:40-07:00
New Revision: bfb0b853b2da6634df4459d844be7ac4739b4e50

URL: https://github.com/llvm/llvm-project/commit/bfb0b853b2da6634df4459d844be7ac4739b4e50
DIFF: https://github.com/llvm/llvm-project/commit/bfb0b853b2da6634df4459d844be7ac4739b4e50.diff

LOG: [compiler-rt] XFAIL test on iOS

On iOS, when we `longjmp()` out of the signal handler, a subsequent call
to `sigaltstack()` still reports that we are executing on the signal
handler stack.
Tracking rdar://66789814

Differential Revision: https://reviews.llvm.org/D85677

Added: 
    

Modified: 
    compiler-rt/test/asan/TestCases/Posix/unpoison-alternate-stack.cpp

Removed: 
    


################################################################################
diff  --git a/compiler-rt/test/asan/TestCases/Posix/unpoison-alternate-stack.cpp b/compiler-rt/test/asan/TestCases/Posix/unpoison-alternate-stack.cpp
index 60a561279a15..d684810201c4 100644
--- a/compiler-rt/test/asan/TestCases/Posix/unpoison-alternate-stack.cpp
+++ b/compiler-rt/test/asan/TestCases/Posix/unpoison-alternate-stack.cpp
@@ -6,6 +6,8 @@
 // RUN: %clangxx_asan -std=c++20 -fexceptions -O0 %s -o %t -pthread
 // RUN: %run %t
 
+// XFAIL: ios && !iossim
+
 #include <cassert>
 #include <cerrno>
 #include <csetjmp>
@@ -62,12 +64,14 @@ void testOnCurrentStack() {
                                         c.RightRedzone - c.LeftRedzone));
 }
 
+bool isOnSignalStack() {
+  stack_t Stack;
+  sigaltstack(nullptr, &Stack);
+  return Stack.ss_flags == SS_ONSTACK;
+}
+
 void signalHandler(int, siginfo_t *, void *) {
-  {
-    stack_t Stack;
-    sigaltstack(nullptr, &Stack);
-    assert(Stack.ss_flags == SS_ONSTACK);
-  }
+  assert(isOnSignalStack());
 
   // test on signal alternate stack
   testOnCurrentStack();
@@ -110,6 +114,8 @@ void *threadFun(void *AltStack) {
     // Test on signal alternate stack, via signalHandler
     poisonStackAndJump(defaultStack, [] { raise(SIGUSR1); });
 
+  assert(!isOnSignalStack());
+
   assert(0 == __asan_region_is_poisoned(
                   defaultStack.LeftRedzone,
                   defaultStack.RightRedzone - defaultStack.LeftRedzone));


        


More information about the llvm-commits mailing list