Index: lib/msan/tests/msan_test.cc =================================================================== --- lib/msan/tests/msan_test.cc +++ lib/msan/tests/msan_test.cc @@ -2800,7 +2800,13 @@ // Compute the path to our loadable DSO. We assume it's in the same // directory. Only use string routines that we intercept so far to do this. static int PathToLoadable(char *buf, size_t sz) { +#if defined(__x86_64__) const char *basename = "libmsan_loadable.x86_64.so"; +#elif defined(__MIPSEB__) || defined(MIPSEB) + const char *basename = "libmsan_loadable.mips64.so"; +#elif defined(__mips64) + const char *basename = "libmsan_loadable.mips64el.so"; +#endif char *argv0 = program_invocation_name; char *last_slash = strrchr(argv0, '/'); assert(last_slash); @@ -2856,7 +2862,13 @@ // Regression test for a crash in dlopen() interceptor. TEST(MemorySanitizer, dlopenFailed) { +#if defined(__x86_64__) const char *path = "/libmsan_loadable_does_not_exist.x86_64.so"; +#elif defined(__MIPSEB__) || defined(MIPSEB) + const char *path = "/libmsan_loadable_does_not_exist.mips64.so"; +#elif defined(__mips64) + const char *path = "/libmsan_loadable_does_not_exist.mips64el.so"; +#endif void *lib = dlopen(path, RTLD_LAZY); ASSERT_TRUE(lib == NULL); } Index: test/msan/mmap_below_shadow.cc =================================================================== --- test/msan/mmap_below_shadow.cc +++ test/msan/mmap_below_shadow.cc @@ -15,8 +15,13 @@ int main(void) { // Hint address just below shadow. +#if defined (__mips64) + uintptr_t hint = 0x4f00000000ULL; + const uintptr_t app_start = 0x6000000000ULL; +#elif defined(__x86_64__) uintptr_t hint = 0x4f0000000000ULL; const uintptr_t app_start = 0x600000000000ULL; +#endif uintptr_t p = (uintptr_t)mmap( (void *)hint, 4096, PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | (FIXED ? MAP_FIXED : 0), -1, 0); Index: test/msan/strlen_of_shadow.cc =================================================================== --- test/msan/strlen_of_shadow.cc +++ test/msan/strlen_of_shadow.cc @@ -9,7 +9,11 @@ #include const char *mem_to_shadow(const char *p) { +#if defined (__mips64) + return (char *)((uintptr_t)p & ~0x4000000000ULL); +#elif defined(__x86_64__) return (char *)((uintptr_t)p & ~0x400000000000ULL); +#endif } int main(void) { Index: test/msan/vector_cvt.cc =================================================================== --- test/msan/vector_cvt.cc +++ test/msan/vector_cvt.cc @@ -1,5 +1,7 @@ // RUN: %clangxx_msan -m64 -O0 %s -o %t && %run %t // RUN: %clangxx_msan -DPOSITIVE -m64 -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s +// XFAIL: mips64 +// XFAIL: mips64el #include Index: test/msan/vector_select.cc =================================================================== --- test/msan/vector_select.cc +++ test/msan/vector_select.cc @@ -1,6 +1,7 @@ // RUN: %clangxx_msan -m64 -O0 %s -c -o %t // RUN: %clangxx_msan -m64 -O3 %s -c -o %t - +// XFAIL: mips64 +// XFAIL: mips64el // Regression test for MemorySanitizer instrumentation of a select instruction // with vector arguments.