re PR sanitizer/92154 (new glibc breaks arm bootstrap due to libsanitizer)
authorJakub Jelinek <jakub@redhat.com>
Tue, 26 Nov 2019 09:08:31 +0000 (10:08 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 26 Nov 2019 09:08:31 +0000 (10:08 +0100)
PR sanitizer/92154
* sanitizer_common/sanitizer_platform_limits_posix.h: Cherry-pick
llvm-project revision 947f9692440836dcb8d88b74b69dd379d85974ce.
* sanitizer_common/sanitizer_platform_limits_posix.cpp: Likewise.

From-SVN: r278722

libsanitizer/ChangeLog
libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h

index 3ae22f7e765392c7831b0c0dfbc17ddef82c0257..f2a07adca7723952fe44145d235012d3446b52ad 100644 (file)
@@ -1,3 +1,10 @@
+2019-11-26  Jakub Jelinek  <jakub@redhat.com>
+
+       PR sanitizer/92154
+       * sanitizer_common/sanitizer_platform_limits_posix.h: Cherry-pick
+       llvm-project revision 947f9692440836dcb8d88b74b69dd379d85974ce.
+       * sanitizer_common/sanitizer_platform_limits_posix.cpp: Likewise.
+
 2019-11-20  Martin Liska  <mliska@suse.cz>
 
        * libtool-version: Remove.
index b4f8f67b664c7b67ea348f04b85eb99230cac73a..aa845df4dde481ead5c80ef0fac5e361a84c5c39 100644 (file)
@@ -1128,11 +1128,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
 CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
 CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
 CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
-#if (!defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)) && \
-    !defined(__arm__)
-/* On aarch64 glibc 2.20 and earlier provided incorrect mode field.  */
-/* On Arm newer glibc provide a different mode field, it's hard to detect
-   so just disable the check.  */
+#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
+/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit
+   on many architectures.  */
 CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
 #endif
 
index 901f390a0b47f3a7f26680390507e6e75d1a21d4..d82fd5e400587a46c23ba66d27d9568582c37952 100644 (file)
@@ -207,26 +207,13 @@ struct __sanitizer_ipc_perm {
   u64 __unused1;
   u64 __unused2;
 #elif defined(__sparc__)
-#if defined(__arch64__)
   unsigned mode;
-  unsigned short __pad1;
-#else
-  unsigned short __pad1;
-  unsigned short mode;
   unsigned short __pad2;
-#endif
   unsigned short __seq;
   unsigned long long __unused1;
   unsigned long long __unused2;
-#elif defined(__mips__) || defined(__aarch64__) || defined(__s390x__)
-  unsigned int mode;
-  unsigned short __seq;
-  unsigned short __pad1;
-  unsigned long __unused1;
-  unsigned long __unused2;
 #else
-  unsigned short mode;
-  unsigned short __pad1;
+  unsigned int mode;
   unsigned short __seq;
   unsigned short __pad2;
 #if defined(__x86_64__) && !defined(_LP64)