[PATCH] D21034: [sanitizer] Fix build for new GLIBC msghdr/cmsghdr definition

Adhemerval Zanella via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 6 14:20:16 PDT 2016


zatrazz removed rL LLVM as the repository for this revision.
zatrazz updated this revision to Diff 59785.
zatrazz added a comment.

Update patch based on previous comments.


http://reviews.llvm.org/D21034

Files:
  lib/sanitizer_common/sanitizer_platform_limits_posix.h

Index: lib/sanitizer_common/sanitizer_platform_limits_posix.h
===================================================================
--- lib/sanitizer_common/sanitizer_platform_limits_posix.h
+++ lib/sanitizer_common/sanitizer_platform_limits_posix.h
@@ -415,6 +415,49 @@
     int cmsg_type;
   };
 #else
+# ifndef __GLIBC_PREREQ
+# define __GLIBC_PREREQ(x, y) 0
+# endif
+// GLIBC 2.24 follows msghdr and cmsghdr POSIX definition for internal
+// member size and adds padding where required.
+# if __GLIBC_PREREQ(2, 24) && defined(_LP64)
+#  if __BYTE_ORDER == __BIG_ENDIAN
+  struct __sanitizer_msghdr {
+    void *msg_name;
+    unsigned msg_namelen;
+    struct __sanitizer_iovec *msg_iov;
+    int __padding1;
+    unsigned msg_iovlen;
+    void *msg_control;
+    int __padding2;
+    unsigned msg_controllen;
+    int msg_flags;
+  };
+  struct __sanitizer_cmsghdr {
+    uptr cmsg_len;
+    int cmsg_level;
+    int cmsg_type;
+  };
+#  else
+  struct __sanitizer_msghdr {
+    void *msg_name;
+    unsigned msg_namelen;
+    struct __sanitizer_iovec *msg_iov;
+    int msg_iovlen;
+    int __padding1;
+    void *msg_control;
+    int msg_controllen;
+    int __padding2;
+    int msg_flags;
+  };
+  struct __sanitizer_cmsghdr {
+    unsigned cmsg_len;
+    int __padding1;
+    int cmsg_level;
+    int cmsg_type;
+  };
+#  endif // __BYTE_ORDER == __BIG_ENDIAN
+# else
   struct __sanitizer_msghdr {
     void *msg_name;
     unsigned msg_namelen;
@@ -429,6 +472,7 @@
     int cmsg_level;
     int cmsg_type;
   };
+# endif // __GLIBC_PREREQ (2, 24) && __WORDSIZE == 64
 #endif
 
 #if SANITIZER_MAC


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D21034.59785.patch
Type: text/x-patch
Size: 1608 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160606/dd395066/attachment.bin>


More information about the llvm-commits mailing list