From b316c30269c35559dd99b1902a97f873c44ac413 Mon Sep 17 00:00:00 2001 From: Emily Shi Date: Fri, 16 Jul 2021 17:03:47 -0700 Subject: [PATCH] [NFC][compiler-rt][test] when using ptrauth, strip before checking if poisoned 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 | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/compiler-rt/test/asan/TestCases/Darwin/linked-only.cpp b/compiler-rt/test/asan/TestCases/Darwin/linked-only.cpp index bb19ea8..d404af6 100644 --- a/compiler-rt/test/asan/TestCases/Darwin/linked-only.cpp +++ b/compiler-rt/test/asan/TestCases/Darwin/linked-only.cpp @@ -10,6 +10,9 @@ #include #include "sanitizer/asan_interface.h" +#if __has_feature(ptrauth_calls) +# include +#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); -- 2.7.4