[compiler-rt] d3e7ee3 - [sanitizer] Define MAP_NORESERVE to 0 and hide mremap for FreeBSD
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat Mar 27 12:19:04 PDT 2021
Author: Fangrui Song
Date: 2021-03-27T12:18:58-07:00
New Revision: d3e7ee36f6411f1bb30ce31311131095d3a196c5
URL: https://github.com/llvm/llvm-project/commit/d3e7ee36f6411f1bb30ce31311131095d3a196c5
DIFF: https://github.com/llvm/llvm-project/commit/d3e7ee36f6411f1bb30ce31311131095d3a196c5.diff
LOG: [sanitizer] Define MAP_NORESERVE to 0 and hide mremap for FreeBSD
Added:
Modified:
compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp
compiler-rt/lib/sanitizer_common/sanitizer_posix.h
Removed:
################################################################################
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
index 391eb017dd92..b371477755fd 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
@@ -183,11 +183,13 @@ uptr internal_munmap(void *addr, uptr length) {
return internal_syscall(SYSCALL(munmap), (uptr)addr, length);
}
+#if SANITIZER_LINUX
uptr internal_mremap(void *old_address, uptr old_size, uptr new_size, int flags,
void *new_address) {
return internal_syscall(SYSCALL(mremap), (uptr)old_address, old_size,
new_size, flags, (uptr)new_address);
}
+#endif
int internal_mprotect(void *addr, uptr length, int prot) {
return internal_syscall(SYSCALL(mprotect), (uptr)addr, length, prot);
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp
index 9dfdaf963f57..18441e4ab1a0 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp
@@ -49,6 +49,10 @@
#include <osreldate.h>
#include <sys/sysctl.h>
#define pthread_getattr_np pthread_attr_get_np
+// The MAP_NORESERVE define has been removed in FreeBSD 11.x, and even before
+// that, it was never implemented. So just define it to zero.
+#undef MAP_NORESERVE
+#define MAP_NORESERVE 0
#endif
#if SANITIZER_NETBSD
@@ -883,6 +887,7 @@ static uptr MremapCreateAlias(uptr base_addr, uptr alias_addr,
reinterpret_cast<void *>(alias_addr));
#else
CHECK(false && "mremap is not supported outside of Linux");
+ return 0;
#endif
}
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_posix.h
index 14d10148272e..b65dae644767 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_posix.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_posix.h
@@ -40,8 +40,10 @@ uptr internal_write(fd_t fd, const void *buf, uptr count);
uptr internal_mmap(void *addr, uptr length, int prot, int flags,
int fd, u64 offset);
uptr internal_munmap(void *addr, uptr length);
+#if SANITIZER_LINUX
uptr internal_mremap(void *old_address, uptr old_size, uptr new_size, int flags,
void *new_address);
+#endif
int internal_mprotect(void *addr, uptr length, int prot);
int internal_madvise(uptr addr, uptr length, int advice);
More information about the llvm-commits
mailing list