From a208ad5ddb5bbcf773dae82d37755dc109dab483 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Tue, 18 Aug 2020 13:06:41 -0700 Subject: [PATCH] sanitizer_common: Use void* for madvise first argument on Solaris. Differential Revision: https://reviews.llvm.org/D86166 --- compiler-rt/lib/sanitizer_common/sanitizer_solaris.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_solaris.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_solaris.cpp index cce179a..7f9a3e9 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_solaris.cpp +++ b/compiler-rt/lib/sanitizer_common/sanitizer_solaris.cpp @@ -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) { -- 2.7.4