[clang] 531233d - Revert "add support for riscv64"

Haowei Wu via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 6 14:57:30 PDT 2023


Author: Haowei Wu
Date: 2023-10-06T14:56:16-07:00
New Revision: 531233d4b099835a3b384456c2c22453010f9780

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

LOG: Revert "add support for riscv64"

This reverts commit cd0a8245b0feb951569eb3d396a1ff629daeb55c, which
breaks the build of compiler-rt for riscv64.

Added: 
    

Modified: 
    clang/lib/Driver/ToolChains/Linux.cpp
    compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
    compiler-rt/lib/tsan/rtl/CMakeLists.txt
    compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
    compiler-rt/lib/tsan/rtl/tsan_platform.h
    compiler-rt/lib/tsan/rtl/tsan_platform_linux.cpp
    compiler-rt/lib/tsan/rtl/tsan_rtl.h
    compiler-rt/test/tsan/map32bit.cpp
    compiler-rt/test/tsan/mmap_large.cpp
    compiler-rt/test/tsan/test.h

Removed: 
    


################################################################################
diff  --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
index 735af54f114cef2..1ba222bf83b1032 100644
--- a/clang/lib/Driver/ToolChains/Linux.cpp
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
@@ -801,7 +801,7 @@ SanitizerMask Linux::getSupportedSanitizers() const {
       IsRISCV64 || IsSystemZ || IsHexagon || IsLoongArch64)
     Res |= SanitizerKind::Leak;
   if (IsX86_64 || IsMIPS64 || IsAArch64 || IsPowerPC64 || IsSystemZ ||
-      IsLoongArch64 || IsRISCV64)
+      IsLoongArch64)
     Res |= SanitizerKind::Thread;
   if (IsX86_64 || IsSystemZ)
     Res |= SanitizerKind::KernelMemory;

diff  --git a/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake b/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
index 416777171d2ca75..e8ab660c1d83c0c 100644
--- a/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
+++ b/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
@@ -66,7 +66,7 @@ set(ALL_PROFILE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${PPC32} ${PPC
     ${MIPS32} ${MIPS64} ${S390X} ${SPARC} ${SPARCV9} ${HEXAGON}
     ${RISCV32} ${RISCV64} ${LOONGARCH64})
 set(ALL_TSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64} ${PPC64} ${S390X}
-    ${LOONGARCH64} ${RISCV64})
+    ${LOONGARCH64})
 set(ALL_UBSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${RISCV64}
     ${MIPS32} ${MIPS64} ${PPC64} ${S390X} ${SPARC} ${SPARCV9} ${HEXAGON}
     ${LOONGARCH64})

diff  --git a/compiler-rt/lib/tsan/rtl/CMakeLists.txt b/compiler-rt/lib/tsan/rtl/CMakeLists.txt
index 791c0596f65abf7..7b18d379e919776 100644
--- a/compiler-rt/lib/tsan/rtl/CMakeLists.txt
+++ b/compiler-rt/lib/tsan/rtl/CMakeLists.txt
@@ -220,10 +220,6 @@ else()
       set(TSAN_ASM_SOURCES
         tsan_rtl_mips64.S
         )
-    elseif(arch MATCHES "riscv64")
-      set(TSAN_ASM_SOURCES
-        tsan_rtl_riscv64.S
-        )
     elseif(arch MATCHES "s390x")
       set(TSAN_ASM_SOURCES
         tsan_rtl_s390x.S

diff  --git a/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp b/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
index bb10b607278f91a..5add97ccd17a3ad 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
+++ b/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
@@ -81,8 +81,6 @@ struct ucontext_t {
 #define PTHREAD_ABI_BASE  "GLIBC_2.17"
 #elif SANITIZER_LOONGARCH64
 #define PTHREAD_ABI_BASE  "GLIBC_2.36"
-#elif SANITIZER_RISCV64
-#define PTHREAD_ABI_BASE  "GLIBC_2.27"
 #endif
 
 extern "C" int pthread_attr_init(void *attr);

diff  --git a/compiler-rt/lib/tsan/rtl/tsan_platform.h b/compiler-rt/lib/tsan/rtl/tsan_platform.h
index 43822020c0b4b30..f0cdaf48eaa3102 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_platform.h
+++ b/compiler-rt/lib/tsan/rtl/tsan_platform.h
@@ -377,71 +377,6 @@ struct MappingPPC64_47 {
   static const uptr kMidAppMemEnd = 0;
 };
 
-/*
-C/C++ on linux/riscv64 (39-bit VMA)
-0000 0010 00 - 0200 0000 00: main binary                      ( 8 GB)
-0200 0000 00 - 1000 0000 00: -
-1000 0000 00 - 4000 0000 00: shadow memory                    (64 GB)
-4000 0000 00 - 4800 0000 00: metainfo                         (16 GB)
-4800 0000 00 - 5500 0000 00: -
-5500 0000 00 - 5a00 0000 00: main binary (PIE)                (~8 GB)
-5600 0000 00 - 7c00 0000 00: -
-7d00 0000 00 - 7fff ffff ff: libraries and main thread stack  ( 8 GB)
-
-mmap by default allocates from top downwards
-VDSO sits below loader and above dynamic libraries, within HiApp region.
-Heap starts after program region whose position depends on pie or non-pie.
-Disable tracking them since their locations are not fixed.
-*/
-struct MappingRiscv64_39 {
-  static const uptr kLoAppMemBeg   = 0x0000001000ull;
-  static const uptr kLoAppMemEnd   = 0x0200000000ull;
-  static const uptr kShadowBeg     = 0x1000000000ull;
-  static const uptr kShadowEnd     = 0x2000000000ull;
-  static const uptr kMetaShadowBeg = 0x2000000000ull;
-  static const uptr kMetaShadowEnd = 0x2400000000ull;
-  static const uptr kMidAppMemBeg  = 0x2aaaaaa000ull;
-  static const uptr kMidAppMemEnd  = 0x2c00000000ull;
-  static const uptr kHeapMemBeg    = 0x2c00000000ull;
-  static const uptr kHeapMemEnd    = 0x2c00000000ull;
-  static const uptr kHiAppMemBeg   = 0x3c00000000ull;
-  static const uptr kHiAppMemEnd   = 0x3fffffffffull;
-  static const uptr kShadowMsk     = 0x3800000000ull;
-  static const uptr kShadowXor     = 0x0800000000ull;
-  static const uptr kShadowAdd     = 0x0000000000ull;
-  static const uptr kVdsoBeg       = 0x4000000000ull;
-};
-
-/*
-C/C++ on linux/riscv64 (48-bit VMA)
-0000 0000 1000 - 0500 0000 0000: main binary                      ( 5 TB)
-0500 0000 0000 - 2000 0000 0000: -
-2000 0000 0000 - 4000 0000 0000: shadow memory                    (32 TB)
-4000 0000 0000 - 4800 0000 0000: metainfo                         ( 8 TB)
-4800 0000 0000 - 5555 5555 5000: -
-5555 5555 5000 - 5a00 0000 0000: main binary (PIE)                (~5 TB)
-5a00 0000 0000 - 7a00 0000 0000: -
-7a00 0000 0000 - 7fff ffff ffff: libraries and main thread stack  ( 5 TB)
-*/
-struct MappingRiscv64_48 {
-  static const uptr kLoAppMemBeg   = 0x000000001000ull;
-  static const uptr kLoAppMemEnd   = 0x050000000000ull;
-  static const uptr kShadowBeg     = 0x200000000000ull;
-  static const uptr kShadowEnd     = 0x400000000000ull;
-  static const uptr kMetaShadowBeg = 0x400000000000ull;
-  static const uptr kMetaShadowEnd = 0x480000000000ull;
-  static const uptr kMidAppMemBeg  = 0x555555555000ull;
-  static const uptr kMidAppMemEnd  = 0x5a0000000000ull;
-  static const uptr kHeapMemBeg    = 0x5a0000000000ull;
-  static const uptr kHeapMemEnd    = 0x5a0000000000ull;
-  static const uptr kHiAppMemBeg   = 0x7a0000000000ull;
-  static const uptr kHiAppMemEnd   = 0x7fffffffffffull;
-  static const uptr kShadowMsk     = 0x700000000000ull;
-  static const uptr kShadowXor     = 0x100000000000ull;
-  static const uptr kShadowAdd     = 0x000000000000ull;
-  static const uptr kVdsoBeg       = 0x800000000000ull;
-};
-
 /*
 C/C++ on linux/s390x
 While the kernel provides a 64-bit address space, we have to restrict ourselves
@@ -730,13 +665,6 @@ ALWAYS_INLINE auto SelectMapping(Arg arg) {
   }
 #  elif defined(__mips64)
   return Func::template Apply<MappingMips64_40>(arg);
-#  elif SANITIZER_RISCV64
-  switch (vmaSize) {
-    case 39:
-      return Func::template Apply<MappingRiscv64_39>(arg);
-    case 48:
-      return Func::template Apply<MappingRiscv64_48>(arg);
-  }
 #  elif defined(__s390x__)
   return Func::template Apply<MappingS390x>(arg);
 #  else
@@ -758,8 +686,6 @@ void ForEachMapping() {
   Func::template Apply<MappingPPC64_44>();
   Func::template Apply<MappingPPC64_46>();
   Func::template Apply<MappingPPC64_47>();
-  Func::template Apply<MappingRiscv64_39>();
-  Func::template Apply<MappingRiscv64_48>();
   Func::template Apply<MappingS390x>();
   Func::template Apply<MappingGo48>();
   Func::template Apply<MappingGoWindows>();
@@ -968,7 +894,7 @@ struct RestoreAddrImpl {
         Mapping::kMidAppMemEnd, Mapping::kHiAppMemBeg, Mapping::kHiAppMemEnd,
         Mapping::kHeapMemBeg,   Mapping::kHeapMemEnd,
     };
-    const uptr indicator = 0x0f0000000000ull;
+    const uptr indicator = 0x0e0000000000ull;
     const uptr ind_lsb = 1ull << LeastSignificantSetBitIndex(indicator);
     for (uptr i = 0; i < ARRAY_SIZE(ranges); i += 2) {
       uptr beg = ranges[i];

diff  --git a/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cpp b/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cpp
index 709a4322ed7ddf8..d161fa8d217e8c0 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cpp
+++ b/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cpp
@@ -267,16 +267,6 @@ void InitializePlatformEarly() {
     Die();
   }
 # endif
-#elif SANITIZER_RISCV64
-  // the bottom half of vma is allocated for userspace
-  vmaSize = vmaSize + 1;
-# if !SANITIZER_GO
-  if (vmaSize != 39 && vmaSize != 48) {
-    Printf("FATAL: ThreadSanitizer: unsupported VMA range\n");
-    Printf("FATAL: Found %zd - Supported 39 and 48\n", vmaSize);
-    Die();
-  }
-# endif
 #endif
 }
 
@@ -409,8 +399,6 @@ static uptr UnmangleLongJmpSp(uptr mangled_sp) {
   return mangled_sp ^ xor_key;
 #elif defined(__mips__)
   return mangled_sp;
-#elif SANITIZER_RISCV64
-  return mangled_sp;
 #elif defined(__s390x__)
   // tcbhead_t.stack_guard
   uptr xor_key = ((uptr *)__builtin_thread_pointer())[5];
@@ -441,8 +429,6 @@ static uptr UnmangleLongJmpSp(uptr mangled_sp) {
 #  define LONG_JMP_SP_ENV_SLOT 1
 # elif defined(__mips64)
 #  define LONG_JMP_SP_ENV_SLOT 1
-# elif SANITIZER_RISCV64
-#  define LONG_JMP_SP_ENV_SLOT 13
 # elif defined(__s390x__)
 #  define LONG_JMP_SP_ENV_SLOT 9
 # else

diff  --git a/compiler-rt/lib/tsan/rtl/tsan_rtl.h b/compiler-rt/lib/tsan/rtl/tsan_rtl.h
index e074e6fede5d964..a5606dbc7f882e0 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_rtl.h
+++ b/compiler-rt/lib/tsan/rtl/tsan_rtl.h
@@ -57,7 +57,7 @@ namespace __tsan {
 #if !SANITIZER_GO
 struct MapUnmapCallback;
 #if defined(__mips64) || defined(__aarch64__) || defined(__loongarch__) || \
-    defined(__powerpc__) || SANITIZER_RISCV64
+    defined(__powerpc__)
 
 struct AP32 {
   static const uptr kSpaceBeg = 0;

diff  --git a/compiler-rt/test/tsan/map32bit.cpp b/compiler-rt/test/tsan/map32bit.cpp
index 9c0760f54b73ad0..e8bac22647bb558 100644
--- a/compiler-rt/test/tsan/map32bit.cpp
+++ b/compiler-rt/test/tsan/map32bit.cpp
@@ -13,7 +13,6 @@
 // XFAIL: target=powerpc64{{.*}}
 // XFAIL: target=s390x{{.*}}
 // XFAIL: target=loongarch64{{.*}}
-// XFAIL: target=riscv64{{.*}}
 
 // MAP_32BIT doesn't exist on OS X and NetBSD.
 // UNSUPPORTED: darwin,target={{.*netbsd.*}}

diff  --git a/compiler-rt/test/tsan/mmap_large.cpp b/compiler-rt/test/tsan/mmap_large.cpp
index a6aca720bf8a101..85ebe7f76b02364 100644
--- a/compiler-rt/test/tsan/mmap_large.cpp
+++ b/compiler-rt/test/tsan/mmap_large.cpp
@@ -17,8 +17,7 @@
 int main() {
 #ifdef __x86_64__
   const size_t kLog2Size = 39;
-#elif defined(__mips64) || defined(__aarch64__) ||                             \
-    defined(__loongarch_lp64) || (defined(__riscv) && __riscv_xlen == 64)
+#elif defined(__mips64) || defined(__aarch64__) || defined(__loongarch_lp64)
   const size_t kLog2Size = 32;
 #elif defined(__powerpc64__)
   const size_t kLog2Size = 39;

diff  --git a/compiler-rt/test/tsan/test.h b/compiler-rt/test/tsan/test.h
index 6fd552465823eda..7406318243c5787 100644
--- a/compiler-rt/test/tsan/test.h
+++ b/compiler-rt/test/tsan/test.h
@@ -76,8 +76,6 @@ unsigned long long monotonic_clock_ns() {
 const int kPCInc = 1;
 #elif defined(__sparc__) || defined(__mips__)
 const int kPCInc = 8;
-#elif defined(__riscv) && __riscv_xlen == 64
-const int kPCInc = 2;
 #else
 const int kPCInc = 4;
 #endif


        


More information about the cfe-commits mailing list