forked from OSchip/llvm-project
tsan: add mips64 support in lib/tsan/go/buildgo.sh
Enable mips64 support in buildgo.sh. Author: mzh (Meng Zhuo) Reviewed-in: https://reviews.llvm.org/D90130
This commit is contained in:
parent
1876d06ea3
commit
5cad535ccf
|
@ -38,6 +38,14 @@
|
|||
#include <asm/unistd.h>
|
||||
#include <sys/types.h>
|
||||
#define stat kernel_stat
|
||||
#if SANITIZER_GO
|
||||
#undef st_atime
|
||||
#undef st_mtime
|
||||
#undef st_ctime
|
||||
#define st_atime st_atim
|
||||
#define st_mtime st_mtim
|
||||
#define st_ctime st_ctim
|
||||
#endif
|
||||
#include <asm/stat.h>
|
||||
#undef stat
|
||||
#endif
|
||||
|
@ -248,9 +256,11 @@ static void stat64_to_stat(struct stat64 *in, struct stat *out) {
|
|||
// Undefine compatibility macros from <sys/stat.h>
|
||||
// so that they would not clash with the kernel_stat
|
||||
// st_[a|m|c]time fields
|
||||
#if !SANITIZER_GO
|
||||
#undef st_atime
|
||||
#undef st_mtime
|
||||
#undef st_ctime
|
||||
#endif
|
||||
#if defined(SANITIZER_ANDROID)
|
||||
// Bionic sys/stat.h defines additional macros
|
||||
// for compatibility with the old NDKs and
|
||||
|
|
|
@ -238,7 +238,11 @@
|
|||
// FIXME: this value should be different on different platforms. Larger values
|
||||
// will still work but will consume more memory for TwoLevelByteMap.
|
||||
#if defined(__mips__)
|
||||
#if SANITIZER_GO && defined(__mips64)
|
||||
#define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 47)
|
||||
#else
|
||||
# define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 40)
|
||||
#endif
|
||||
#elif SANITIZER_RISCV64
|
||||
#define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 38)
|
||||
#elif defined(__aarch64__)
|
||||
|
|
|
@ -64,6 +64,14 @@ if [ "`uname -a | grep Linux`" != "" ]; then
|
|||
elif [ "`uname -a | grep aarch64`" != "" ]; then
|
||||
SUFFIX="linux_arm64"
|
||||
ARCHCFLAGS=""
|
||||
elif [ "`uname -a | grep -i mips64`" != "" ]; then
|
||||
if [ "`lscpu | grep -i Little`" != "" ]; then
|
||||
SUFFIX="linux_mips64le"
|
||||
ARCHCFLAGS="-mips64 -EL"
|
||||
else
|
||||
SUFFIX="linux_mips64"
|
||||
ARCHCFLAGS="-mips64 -EB"
|
||||
fi
|
||||
fi
|
||||
elif [ "`uname -a | grep FreeBSD`" != "" ]; then
|
||||
# The resulting object still depends on libc.
|
||||
|
|
|
@ -488,6 +488,30 @@ struct Mapping {
|
|||
// Indicates the runtime will define the memory regions at runtime.
|
||||
#define TSAN_RUNTIME_VMA 1
|
||||
|
||||
#elif SANITIZER_GO && defined(__mips64)
|
||||
/*
|
||||
Go on linux/mips64 (47-bit VMA)
|
||||
0000 0000 1000 - 0000 1000 0000: executable
|
||||
0000 1000 0000 - 00c0 0000 0000: -
|
||||
00c0 0000 0000 - 00e0 0000 0000: heap
|
||||
00e0 0000 0000 - 2000 0000 0000: -
|
||||
2000 0000 0000 - 3000 0000 0000: shadow
|
||||
3000 0000 0000 - 3000 0000 0000: -
|
||||
3000 0000 0000 - 4000 0000 0000: metainfo (memory blocks and sync objects)
|
||||
4000 0000 0000 - 6000 0000 0000: -
|
||||
6000 0000 0000 - 6200 0000 0000: traces
|
||||
6200 0000 0000 - 8000 0000 0000: -
|
||||
*/
|
||||
struct Mapping {
|
||||
static const uptr kMetaShadowBeg = 0x300000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x400000000000ull;
|
||||
static const uptr kTraceMemBeg = 0x600000000000ull;
|
||||
static const uptr kTraceMemEnd = 0x620000000000ull;
|
||||
static const uptr kShadowBeg = 0x200000000000ull;
|
||||
static const uptr kShadowEnd = 0x300000000000ull;
|
||||
static const uptr kAppMemBeg = 0x000000001000ull;
|
||||
static const uptr kAppMemEnd = 0x00e000000000ull;
|
||||
};
|
||||
#else
|
||||
# error "Unknown platform"
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue