diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp index 735af54f114ce..1ba222bf83b10 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 416777171d2ca..e8ab660c1d83c 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 791c0596f65ab..7b18d379e9197 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 bb10b607278f9..5add97ccd17a3 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 43822020c0b4b..f0cdaf48eaa31 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(arg); -# elif SANITIZER_RISCV64 - switch (vmaSize) { - case 39: - return Func::template Apply(arg); - case 48: - return Func::template Apply(arg); - } # elif defined(__s390x__) return Func::template Apply(arg); # else @@ -758,8 +686,6 @@ void ForEachMapping() { Func::template Apply(); Func::template Apply(); Func::template Apply(); - Func::template Apply(); - Func::template Apply(); Func::template Apply(); Func::template Apply(); Func::template Apply(); @@ -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 709a4322ed7dd..d161fa8d217e8 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 e074e6fede5d9..a5606dbc7f882 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 9c0760f54b73a..e8bac22647bb5 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 a6aca720bf8a1..85ebe7f76b023 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 6fd552465823e..7406318243c57 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