From 786c10cd82a78c210379700b72cf18a018e1e1f7 Mon Sep 17 00:00:00 2001 From: Mark Mentovai Date: Thu, 28 Sep 2023 11:18:41 -0400 Subject: [PATCH] [sanitizer] Use consistent checks for XDR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a backport of 28800c2e18972935cd4f942aa428c5e6cc4c1670 (https://reviews.llvm.org/D130060), which is in llvm-15, to llvm-14, however it’s been adapted to be pre-8246b2e156568c31e71e16cbaf4c14d316e7c06e (https://reviews.llvm.org/D126263), which renamed SANITIZER_MAC (the macro in llvm-14) to SANITIZER_APPLE (the macro in llvm-15 and later). The original change’s description: > sanitizer_platform_limits_posix.h defines `__sanitizer_XDR ` if > `SANITIZER_LINUX && !SANITIZER_ANDROID`, but > sanitizer_platform_limits_posix.cpp tries to check it if > `HAVE_RPC_XDR_H`. This coincidentally works because macOS has a broken > which causes `HAVE_RPC_XDR_H` to be 0, but if > is fixed then clang fails to compile on macOS. Restore the platform > checks so that can be fixed on macOS. This has become important with Xcode 15, which contains the macOS 14 SDK, which does have a fixed . --- .../lib/sanitizer_common/sanitizer_platform_limits_posix.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp index 32b8f47ed633..6cefef3f3327 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp @@ -1250,7 +1250,7 @@ CHECK_SIZE_AND_OFFSET(group, gr_passwd); CHECK_SIZE_AND_OFFSET(group, gr_gid); CHECK_SIZE_AND_OFFSET(group, gr_mem); -#if HAVE_RPC_XDR_H +#if HAVE_RPC_XDR_H && !SANITIZER_MAC CHECK_TYPE_SIZE(XDR); CHECK_SIZE_AND_OFFSET(XDR, x_op); CHECK_SIZE_AND_OFFSET(XDR, x_ops); -- 2.42.0