[compiler-rt] [compiler-rt][sanitizer] fix msghdr for musl (PR #136195)

Deák Lajos via llvm-commits llvm-commits at lists.llvm.org
Sun Apr 27 11:26:24 PDT 2025


https://github.com/deaklajos updated https://github.com/llvm/llvm-project/pull/136195

>From 6a29777453458c60110fcb0646f3b0f381eaf43b Mon Sep 17 00:00:00 2001
From: Lajos Deak <deak.lala at hotmail.com>
Date: Tue, 22 Apr 2025 15:00:47 +0000
Subject: [PATCH 1/2] [compiler-rt][sanitizer] fix msghdr for musl

---
 .../sanitizer_platform_limits_posix.h         | 33 +++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
index 348bb4f27aec3..899bd22bbd309 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
@@ -476,6 +476,39 @@ struct __sanitizer_cmsghdr {
   int cmsg_level;
   int cmsg_type;
 };
+#elif SANITIZER_MUSL
+struct __sanitizer_msghdr {
+  void *msg_name;
+  unsigned msg_namelen;
+  struct __sanitizer_iovec *msg_iov;
+#  if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+  int __pad1;
+#  endif
+  int msg_iovlen;
+#  if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+  int __pad1;
+#  endif
+  void *msg_control;
+#  if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+  int __pad2;
+#  endif
+  unsigned msg_controllen;
+#  if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+  int __pad2;
+#  endif
+  int msg_flags;
+};
+struct __sanitizer_cmsghdr {
+#  if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+  int __pad1;
+#  endif
+  unsigned cmsg_len;
+#  if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+  int __pad1;
+#  endif
+  int cmsg_level;
+  int cmsg_type;
+};
 #else
 // In POSIX, int msg_iovlen; socklen_t msg_controllen; socklen_t cmsg_len; but
 // many implementations don't conform to the standard.

>From c4ed51f9a6ca2add13c52957ed0e1f0471e6b1af Mon Sep 17 00:00:00 2001
From: Lajos <deak.lala at hotmail.com>
Date: Sun, 27 Apr 2025 20:24:36 +0200
Subject: [PATCH 2/2] Fixed clang-format

---
 .../sanitizer_platform_limits_posix.h         | 32 +++++++++----------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
index 899bd22bbd309..9a35d7e50b6c8 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
@@ -476,40 +476,40 @@ struct __sanitizer_cmsghdr {
   int cmsg_level;
   int cmsg_type;
 };
-#elif SANITIZER_MUSL
+#  elif SANITIZER_MUSL
 struct __sanitizer_msghdr {
   void *msg_name;
   unsigned msg_namelen;
   struct __sanitizer_iovec *msg_iov;
-#  if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+#    if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
   int __pad1;
-#  endif
+#    endif
   int msg_iovlen;
-#  if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+#    if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
   int __pad1;
-#  endif
+#    endif
   void *msg_control;
-#  if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+#    if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
   int __pad2;
-#  endif
+#    endif
   unsigned msg_controllen;
-#  if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+#    if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
   int __pad2;
-#  endif
+#    endif
   int msg_flags;
 };
 struct __sanitizer_cmsghdr {
-#  if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+#    if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
   int __pad1;
-#  endif
+#    endif
   unsigned cmsg_len;
-#  if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+#    if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
   int __pad1;
-#  endif
+#    endif
   int cmsg_level;
   int cmsg_type;
 };
-#else
+#  else
 // In POSIX, int msg_iovlen; socklen_t msg_controllen; socklen_t cmsg_len; but
 // many implementations don't conform to the standard.
 struct __sanitizer_msghdr {
@@ -526,9 +526,9 @@ struct __sanitizer_cmsghdr {
   int cmsg_level;
   int cmsg_type;
 };
-#endif
+#  endif
 
-#if SANITIZER_LINUX
+#  if SANITIZER_LINUX
 struct __sanitizer_mmsghdr {
   __sanitizer_msghdr msg_hdr;
   unsigned int msg_len;



More information about the llvm-commits mailing list