Skip to content

Commit 630177c

Browse files
authored
[compiler-rt][rtsan] Fix madvise/posix_madvise for macOs. (#124020)
only bsd and linux intercept these syscalls. Fix #123601
1 parent e0ae889 commit 630177c

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

compiler-rt/lib/rtsan/rtsan_interceptors_posix.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -808,6 +808,7 @@ INTERCEPTOR(int, munmap, void *addr, size_t length) {
808808
return REAL(munmap)(addr, length);
809809
}
810810

811+
#if !SANITIZER_APPLE
811812
INTERCEPTOR(int, madvise, void *addr, size_t length, int flag) {
812813
__rtsan_notify_intercepted_call("madvise");
813814
return REAL(madvise)(addr, length, flag);
@@ -817,6 +818,12 @@ INTERCEPTOR(int, posix_madvise, void *addr, size_t length, int flag) {
817818
__rtsan_notify_intercepted_call("posix_madvise");
818819
return REAL(posix_madvise)(addr, length, flag);
819820
}
821+
#define RTSAN_MAYBE_INTERCEPT_MADVISE INTERCEPT_FUNCTION(madvise)
822+
#define RTSAN_MAYBE_INTERCEPT_POSIX_MADVISE INTERCEPT_FUNCTION(posix_madvise)
823+
#else
824+
#define RTSAN_MAYBE_INTERCEPT_MADVISE
825+
#define RTSAN_MAYBE_INTERCEPT_POSIX_MADVISE
826+
#endif
820827

821828
INTERCEPTOR(int, mprotect, void *addr, size_t length, int prot) {
822829
__rtsan_notify_intercepted_call("mprotect");
@@ -1216,8 +1223,8 @@ void __rtsan::InitializeInterceptors() {
12161223
INTERCEPT_FUNCTION(mmap);
12171224
RTSAN_MAYBE_INTERCEPT_MMAP64;
12181225
INTERCEPT_FUNCTION(munmap);
1219-
INTERCEPT_FUNCTION(madvise);
1220-
INTERCEPT_FUNCTION(posix_madvise);
1226+
RTSAN_MAYBE_INTERCEPT_MADVISE;
1227+
RTSAN_MAYBE_INTERCEPT_POSIX_MADVISE;
12211228
INTERCEPT_FUNCTION(mprotect);
12221229
INTERCEPT_FUNCTION(msync);
12231230
INTERCEPT_FUNCTION(mincore);

compiler-rt/lib/rtsan/tests/rtsan_test_interceptors_posix.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,17 +238,21 @@ class RtsanOpenedMmapTest : public RtsanFileTest {
238238
int fd = -1;
239239
};
240240

241+
#if !SANITIZER_APPLE
241242
TEST_F(RtsanOpenedMmapTest, MadviseDiesWhenRealtime) {
242243
auto Func = [this]() { madvise(GetAddr(), GetSize(), MADV_NORMAL); };
243244
ExpectRealtimeDeath(Func, "madvise");
244245
ExpectNonRealtimeSurvival(Func);
245246
}
246247

247248
TEST_F(RtsanOpenedMmapTest, PosixMadviseDiesWhenRealtime) {
248-
auto Func = [this]() { posix_madvise(GetAddr(), GetSize(), MADV_NORMAL); };
249+
auto Func = [this]() {
250+
posix_madvise(GetAddr(), GetSize(), POSIX_MADV_NORMAL);
251+
};
249252
ExpectRealtimeDeath(Func, "posix_madvise");
250253
ExpectNonRealtimeSurvival(Func);
251254
}
255+
#endif
252256

253257
TEST_F(RtsanOpenedMmapTest, MprotectDiesWhenRealtime) {
254258
auto Func = [this]() { mprotect(GetAddr(), GetSize(), PROT_READ); };

0 commit comments

Comments
 (0)