From f26adaa28d55a174c7ba2f4d49f4f942a04da922 Mon Sep 17 00:00:00 2001 From: Emily Shi Date: Wed, 23 Jun 2021 18:11:51 -0700 Subject: [PATCH] [compiler-rt][test] fix zero_page_pc on arm64e on arm64e, pointer auth would catch this access violation before asan. sign the function pointer so pointer auth will ignore this violation and let asan catch it in this test case. rdar://79652167 Reviewed By: delcypher Differential Revision: https://reviews.llvm.org/D104828 --- compiler-rt/test/asan/TestCases/zero_page_pc.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/compiler-rt/test/asan/TestCases/zero_page_pc.cpp b/compiler-rt/test/asan/TestCases/zero_page_pc.cpp index ba35df880edf3..9a395ecdf37c8 100644 --- a/compiler-rt/test/asan/TestCases/zero_page_pc.cpp +++ b/compiler-rt/test/asan/TestCases/zero_page_pc.cpp @@ -1,9 +1,17 @@ // Check that ASan correctly detects SEGV on the zero page. // RUN: %clangxx_asan %s -o %t && not %run %t 2>&1 | FileCheck %s +#if __has_feature(ptrauth_calls) +# include +#endif + typedef void void_f(); int main() { void_f *func = (void_f *)0x4; +#if __has_feature(ptrauth_calls) + func = ptrauth_sign_unauthenticated( + func, ptrauth_key_function_pointer, 0); +#endif func(); // x86 reports the SEGV with both address=4 and pc=4. // On PowerPC64 ELFv1, the pointer is taken to be a function-descriptor