sanitizer_common: Use void* for madvise first argument on Solaris.
authorPeter Collingbourne <peter@pcc.me.uk>
Tue, 18 Aug 2020 20:06:41 +0000 (13:06 -0700)
committerPeter Collingbourne <peter@pcc.me.uk>
Wed, 19 Aug 2020 17:55:55 +0000 (10:55 -0700)
Differential Revision: https://reviews.llvm.org/D86166

compiler-rt/lib/sanitizer_common/sanitizer_solaris.cpp

index cce179a..7f9a3e9 100644 (file)
@@ -76,10 +76,16 @@ DECLARE__REAL_AND_INTERNAL(int, mprotect, void *addr, uptr length, int prot) {
 
 // Illumos' declaration of madvise cannot be made visible if _XOPEN_SOURCE
 // is defined as g++ does on Solaris.
-extern "C" int madvise(caddr_t, size_t, int);
+//
+// This declaration is consistent with Solaris 11.4. Both Illumos and Solaris
+// versions older than 11.4 declared madvise with a caddr_t as the first
+// argument, but we don't currently support Solaris versions older than 11.4,
+// and as mentioned above the declaration is not visible on Illumos so we can
+// use any declaration we like on Illumos.
+extern "C" int madvise(void *, size_t, int);
 
 int internal_madvise(uptr addr, uptr length, int advice) {
-  return madvise((caddr_t)addr, length, advice);
+  return madvise((void *)addr, length, advice);
 }
 
 DECLARE__REAL_AND_INTERNAL(uptr, close, fd_t fd) {