[asan][test] Additional test requiring weak symbol for dyld64.
authorRoy Sundahl <rsundahl@apple.com>
Mon, 25 Jul 2022 16:31:02 +0000 (09:31 -0700)
committerRoy Sundahl <rsundahl@apple.com>
Mon, 25 Jul 2022 20:56:02 +0000 (13:56 -0700)
Extension of D127929

rdar://80997227

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

compiler-rt/test/asan/TestCases/Posix/free_hook_realloc.cpp
compiler-rt/test/memprof/TestCases/free_hook_realloc.cpp

index cbc5d6f..9242c94 100644 (file)
@@ -8,14 +8,17 @@
 
 static void *glob_ptr;
 
-extern "C" {
-void __sanitizer_free_hook(const volatile void *ptr) {
+// Required for dyld macOS 12.0+
+#if (__APPLE__)
+__attribute__((weak))
+#endif
+extern "C" void
+__sanitizer_free_hook(const volatile void *ptr) {
   if (ptr == glob_ptr) {
     *(int*)ptr = 0;
     write(1, "FreeHook\n", sizeof("FreeHook\n"));
   }
 }
-}
 
 int main() {
   int *x = (int*)malloc(100);
index 6ed3483..85e29a3 100644 (file)
@@ -7,14 +7,18 @@
 
 static void *glob_ptr;
 
-extern "C" {
-void __sanitizer_free_hook(const volatile void *ptr) {
+// (Speculative fix if memprof is enabled on Apple platforms)
+// Required for dyld macOS 12.0+
+#if (__APPLE__)
+__attribute__((weak))
+#endif
+extern "C" void
+__sanitizer_free_hook(const volatile void *ptr) {
   if (ptr == glob_ptr) {
     *(int *)ptr = 0;
     write(1, "FreeHook\n", sizeof("FreeHook\n"));
   }
 }
-}
 
 int main() {
   int *x = (int *)malloc(100);