[llvm-branch-commits] [compiler-rt] 2cb08db - [compiler-rt][sanitizer] fix msghdr for musl (#136195)
Douglas Yung via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sun Oct 5 23:41:37 PDT 2025
Author: Deák Lajos
Date: 2025-10-06T06:41:25Z
New Revision: 2cb08dbb39b17c4936cc604c9ca11a3f0f9d23c5
URL: https://github.com/llvm/llvm-project/commit/2cb08dbb39b17c4936cc604c9ca11a3f0f9d23c5
DIFF: https://github.com/llvm/llvm-project/commit/2cb08dbb39b17c4936cc604c9ca11a3f0f9d23c5.diff
LOG: [compiler-rt][sanitizer] fix msghdr for musl (#136195)
Ran into the issue on Alpine when building with TSAN that
`__sanitizer_msghdr` and the `msghdr` provided by musl did not match.
This caused lots of tsan reports and an eventual termination of the
application by the oom during a `sendmsg`.
Added:
Modified:
compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
Removed:
################################################################################
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 f118d53f0df80..24966523f3a02 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
@@ -478,6 +478,30 @@ 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;
+ int msg_iovlen;
+# if SANITIZER_WORDSIZE == 64
+ int __pad1;
+# endif
+ void *msg_control;
+ unsigned msg_controllen;
+# if SANITIZER_WORDSIZE == 64
+ int __pad2;
+# endif
+ int msg_flags;
+};
+struct __sanitizer_cmsghdr {
+ unsigned cmsg_len;
+# if SANITIZER_WORDSIZE == 64
+ 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.
More information about the llvm-branch-commits
mailing list