[NFC][compiler-rt][test] when using ptrauth, strip before checking if poisoned
authorEmily Shi <code@emi.sh>
Sat, 17 Jul 2021 00:03:47 +0000 (17:03 -0700)
committerEmily Shi <code@emi.sh>
Sat, 17 Jul 2021 00:13:19 +0000 (17:13 -0700)
ptrauth stores info in the address of functions, so it's not the right address we should check if poisoned

rdar://75246928

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

compiler-rt/test/asan/TestCases/Darwin/linked-only.cpp

index bb19ea8..d404af6 100644 (file)
@@ -10,6 +10,9 @@
 #include <string.h>
 
 #include "sanitizer/asan_interface.h"
+#if __has_feature(ptrauth_calls)
+#  include <ptrauth.h>
+#endif
 
 void test_shadow(char *p, size_t size) {
   fprintf(stderr, "p = %p\n", p);
@@ -23,7 +26,13 @@ int main(int argc, char *argv[]) {
   free(p);
   // CHECK: =-1=
 
-  test_shadow((char *)&main, 1);
+  char *mainptr;
+#if __has_feature(ptrauth_calls)
+  mainptr = (char *)ptrauth_strip((void *)&main, ptrauth_key_return_address);
+#else
+  mainptr = (char *)&main;
+#endif
+  test_shadow(mainptr, 1);
   // CHECK: =-1=
 
   test_shadow((char *)&p, 1);