[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