From: Faraz Shahbazker <fshahbaz...@wavecomp.com>

libsanitizer:
        * asan/asan_mapping.h (ASAN_SHADOW_OFFSET_CONST): Set correct
        offset for n32 ABI.

Cherry-picked 12ec4fc5c3a19e6304b58775db1820892942efbc
from https://github.com/MIPS/gcc

Signed-off-by: Faraz Shahbazker <fshahbaz...@wavecomp.com>
Signed-off-by: Chao-ying Fu <c...@mips.com>
Signed-off-by: Aleksandar Rakic <aleksandar.ra...@htecgroup.com>
---
 libsanitizer/asan/asan_mapping.h | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/libsanitizer/asan/asan_mapping.h b/libsanitizer/asan/asan_mapping.h
index 54890ca1789..7a6d94623b4 100644
--- a/libsanitizer/asan/asan_mapping.h
+++ b/libsanitizer/asan/asan_mapping.h
@@ -65,6 +65,13 @@
 // || `[0x0aaa0000, 0x0bff3fff]` || LowShadow  ||
 // || `[0x00000000, 0x0aa9ffff]` || LowMem     ||
 //
+// Default Linux/MIPS64 n32 ABI mapping:
+// || `[0x40000000, 0xffffffff]` || HighMem    ||
+// || `[0x28000000, 0x3fffffff]` || HighShadow ||
+// || `[0x24000000, 0x27ffffff]` || ShadowGap  ||
+// || `[0x20000000, 0x23ffffff]` || LowShadow  ||
+// || `[0x00000000, 0x1fffffff]` || LowMem     ||
+//
 // Default Linux/MIPS64 mapping:
 // || `[0x4000000000, 0xffffffffff]` || HighMem    ||
 // || `[0x2800000000, 0x3fffffffff]` || HighShadow ||
@@ -169,7 +176,11 @@
 #  if SANITIZER_ANDROID
 #    define ASAN_SHADOW_OFFSET_DYNAMIC
 #  elif defined(__mips__)
-#    define ASAN_SHADOW_OFFSET_CONST 0x0aaa0000
+#    if _MIPS_SIM == _ABIN32
+#      define ASAN_SHADOW_OFFSET_CONST 0x20000000
+#    else
+#      define ASAN_SHADOW_OFFSET_CONST 0x0aaa0000
+#    endif
 #  elif SANITIZER_FREEBSD
 #    define ASAN_SHADOW_OFFSET_CONST 0x40000000
 #  elif SANITIZER_NETBSD
-- 
2.34.1

Reply via email to