<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">From 786c10cd82a78c210379700b72cf18a018e1e1f7 Mon Sep 17 00:00:00 2001
From: Mark Mentovai &lt;mark@mentovai.com&gt;
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:

&gt; sanitizer_platform_limits_posix.h defines `__sanitizer_XDR ` if
&gt; `SANITIZER_LINUX &amp;&amp; !SANITIZER_ANDROID`, but
&gt; sanitizer_platform_limits_posix.cpp tries to check it if
&gt; `HAVE_RPC_XDR_H`. This coincidentally works because macOS has a broken
&gt; &lt;rpc/xdr.h&gt; which causes `HAVE_RPC_XDR_H` to be 0, but if &lt;rpc/xdr.h&gt;
&gt; is fixed then clang fails to compile on macOS. Restore the platform
&gt; checks so that &lt;rpc/xdr.h&gt; can be fixed on macOS.

This has become important with Xcode 15, which contains the macOS 14
SDK, which does have a fixed &lt;rpc/xdr.h&gt;.
---
 .../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 &amp;&amp; !SANITIZER_MAC
 CHECK_TYPE_SIZE(XDR);
 CHECK_SIZE_AND_OFFSET(XDR, x_op);
 CHECK_SIZE_AND_OFFSET(XDR, x_ops);
-- 
2.42.0

</pre></body></html>