diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_solaris.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_solaris.cpp --- a/compiler-rt/lib/sanitizer_common/sanitizer_solaris.cpp +++ b/compiler-rt/lib/sanitizer_common/sanitizer_solaris.cpp @@ -76,10 +76,16 @@ // 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) {