[llvm-branch-commits] [compiler-rt] d181015 - Revert "[ASan][Fuchsia] Have Fuchsia use a dynamic shadow start (#180880)"

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon Feb 23 16:46:18 PST 2026


Author: Paul Kirth
Date: 2026-02-23T16:46:14-08:00
New Revision: d181015017b70e57b77f762bb47cab3a2ab27524

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

LOG: Revert "[ASan][Fuchsia] Have Fuchsia use a dynamic shadow start (#180880)"

This reverts commit 9146da3a7bee5c62a12fed9b423c8292209da926.

Added: 
    

Modified: 
    compiler-rt/lib/asan/CMakeLists.txt
    compiler-rt/lib/asan/asan_fuchsia.cpp
    compiler-rt/lib/asan/asan_mapping.h
    compiler-rt/lib/asan/asan_rtl_x86_64.S

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/asan/CMakeLists.txt b/compiler-rt/lib/asan/CMakeLists.txt
index 3f7a42ab08c02..232bb2574a778 100644
--- a/compiler-rt/lib/asan/CMakeLists.txt
+++ b/compiler-rt/lib/asan/CMakeLists.txt
@@ -59,11 +59,14 @@ set(ASAN_CXX_SOURCES
 
 set(ASAN_STATIC_SOURCES
   asan_rtl_static.cpp
-  # Note that only x86_64 targets using a constant shadow offset use functions
-  # in this, but that's gated via macro checks in the file itself.
-  asan_rtl_x86_64.S
   )
 
+if ("x86_64" IN_LIST ASAN_SUPPORTED_ARCH AND NOT WIN32 AND NOT APPLE)
+  list(APPEND ASAN_STATIC_SOURCES
+    asan_rtl_x86_64.S
+  )
+endif()
+
 set(ASAN_PREINIT_SOURCES
   asan_preinit.cpp
   )

diff  --git a/compiler-rt/lib/asan/asan_fuchsia.cpp b/compiler-rt/lib/asan/asan_fuchsia.cpp
index 42b641a02ef03..a9e5dad91b973 100644
--- a/compiler-rt/lib/asan/asan_fuchsia.cpp
+++ b/compiler-rt/lib/asan/asan_fuchsia.cpp
@@ -40,18 +40,18 @@ void InitializeShadowMemory() {
   if (Verbosity())
     PrintAddressSpaceLayout();
 
-  // TODO(https://fxbug.dev/42085278): Shadow on Fuchsia starts as zero for now.
-  // __asan_shadow_memory_dynamic_address is an uninitialized global that's
-  // zero. This is temporary and will be changed to a non-zero value in the
-  // future.
+  // Make sure SHADOW_OFFSET doesn't use __asan_shadow_memory_dynamic_address.
+  __asan_shadow_memory_dynamic_address = kDefaultShadowSentinel;
+  DCHECK(kLowShadowBeg != kDefaultShadowSentinel);
+  __asan_shadow_memory_dynamic_address = kLowShadowBeg;
 
   CHECK_EQ(kShadowGapEnd, kHighShadowBeg - 1);
   CHECK_EQ(kHighMemEnd, __sanitizer::ShadowBounds.memory_limit - 1);
   CHECK_EQ(kHighMemBeg, __sanitizer::ShadowBounds.shadow_limit);
   CHECK_EQ(kHighShadowBeg, __sanitizer::ShadowBounds.shadow_base);
   CHECK_EQ(kShadowGapEnd, __sanitizer::ShadowBounds.shadow_base - 1);
-  CHECK_EQ(kLowShadowEnd, MEM_TO_SHADOW(kLowMemEnd));
-  CHECK_EQ(kLowShadowBeg, __asan_shadow_memory_dynamic_address);
+  CHECK_EQ(kLowShadowEnd, 0);
+  CHECK_EQ(kLowShadowBeg, 0);
 }
 
 void AsanApplyToGlobals(globals_op_fptr op, const void *needle) {

diff  --git a/compiler-rt/lib/asan/asan_mapping.h b/compiler-rt/lib/asan/asan_mapping.h
index e1be633a99bd6..338324686a31d 100644
--- a/compiler-rt/lib/asan/asan_mapping.h
+++ b/compiler-rt/lib/asan/asan_mapping.h
@@ -175,7 +175,7 @@
 #define ASAN_SHADOW_SCALE 3
 
 #if SANITIZER_FUCHSIA
-#  define ASAN_SHADOW_OFFSET_DYNAMIC
+#  define ASAN_SHADOW_OFFSET_CONST (0)
 #elif SANITIZER_WORDSIZE == 32
 #  if SANITIZER_ANDROID
 #    define ASAN_SHADOW_OFFSET_DYNAMIC

diff  --git a/compiler-rt/lib/asan/asan_rtl_x86_64.S b/compiler-rt/lib/asan/asan_rtl_x86_64.S
index af682ebc07f9e..5ee830d3afc5e 100644
--- a/compiler-rt/lib/asan/asan_rtl_x86_64.S
+++ b/compiler-rt/lib/asan/asan_rtl_x86_64.S
@@ -1,7 +1,7 @@
 #include "asan_mapping.h"
 #include "sanitizer_common/sanitizer_asm.h"
 
-#if defined(__x86_64__) && defined(ASAN_SHADOW_OFFSET_CONST)
+#if defined(__x86_64__)
 #include "sanitizer_common/sanitizer_platform.h"
 
 .file "asan_rtl_x86_64.S"


        


More information about the llvm-branch-commits mailing list