gcc: backporting fix for glibc 2.31 (#15403)
* backporting fix for building gcc >= 8.1.0 and gcc <= 9.2.0 with binutils 2.31 * removed trailing whitespace
This commit is contained in:
		 Mathias Anselmann
					Mathias Anselmann
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							4ef0442a01
						
					
				
				
					commit
					fc78456547
				
			| @@ -0,0 +1,37 @@ | ||||
| From ce9568e9e9cf6094be30e748821421e703754ffc Mon Sep 17 00:00:00 2001 | ||||
| From: Jakub Jelinek <jakub@redhat.com> | ||||
| Date: Fri, 8 Nov 2019 19:53:18 +0100 | ||||
| Subject: [PATCH] backport: re PR sanitizer/92154 (new glibc breaks arm | ||||
|  bootstrap due to libsanitizer) | ||||
|  | ||||
| 	Backported from mainline | ||||
| 	2019-10-22  Tamar Christina  <tamar.christina@arm.com> | ||||
|  | ||||
| 	PR sanitizer/92154 | ||||
| 	* sanitizer_common/sanitizer_platform_limits_posix.cc: | ||||
| 	Cherry-pick compiler-rt revision r375220. | ||||
|  | ||||
| From-SVN: r277981 | ||||
| --- | ||||
|  libsanitizer/ChangeLog                                   | 9 +++++++++ | ||||
|  .../sanitizer_common/sanitizer_platform_limits_posix.cc  | 6 +++++- | ||||
|  2 files changed, 14 insertions(+), 1 deletion(-) | ||||
|  | ||||
| diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc | ||||
| index 6cd4a5bac8b0..06a605ff4670 100644 | ||||
| --- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc | ||||
| +++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc | ||||
| @@ -1156,8 +1156,12 @@ 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) | ||||
| +#if (!defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)) && \ | ||||
| +    !defined(__arm__) | ||||
|  /* On aarch64 glibc 2.20 and earlier provided incorrect mode field.  */ | ||||
| +/* On Arm glibc 2.31 and later provide a different mode field, this field is | ||||
| +   never used by libsanitizer so we can simply ignore this assert for all glibc | ||||
| +   versions.  */ | ||||
|  CHECK_SIZE_AND_OFFSET(ipc_perm, mode); | ||||
|  #endif | ||||
|   | ||||
| @@ -0,0 +1,73 @@ | ||||
| From 75003cdd23c310ec385344e8040d490e8dd6d2be Mon Sep 17 00:00:00 2001 | ||||
| From: Jakub Jelinek <jakub@redhat.com> | ||||
| Date: Fri, 20 Dec 2019 17:58:35 +0100 | ||||
| Subject: [PATCH] backport: re PR sanitizer/92154 (new glibc breaks arm | ||||
|  bootstrap due to libsanitizer) | ||||
|  | ||||
| 	Backported from mainline | ||||
| 	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.cc: Likewise. | ||||
|  | ||||
| From-SVN: r279653 | ||||
| --- | ||||
|  libsanitizer/ChangeLog                            | 10 ++++++++++ | ||||
|  .../sanitizer_platform_limits_posix.cc            |  9 +++------ | ||||
|  .../sanitizer_platform_limits_posix.h             | 15 +-------------- | ||||
|  3 files changed, 14 insertions(+), 20 deletions(-) | ||||
|  | ||||
| diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc | ||||
| index 06a605ff4670..d823a12190c0 100644 | ||||
| --- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc | ||||
| +++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc | ||||
| @@ -1156,12 +1156,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 glibc 2.31 and later provide a different mode field, this field is | ||||
| -   never used by libsanitizer so we can simply ignore this assert for all glibc | ||||
| -   versions.  */ | ||||
| +#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 | ||||
|   | ||||
| diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h | ||||
| index 73af92af1e8f..6a673a7c9959 100644 | ||||
| --- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h | ||||
| +++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h | ||||
| @@ -211,26 +211,13 @@ namespace __sanitizer { | ||||
|      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) | ||||
| @@ -230,6 +230,10 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage): | ||||
|     patch('piclibs.patch', when='+piclibs') | ||||
|     patch('gcc-backport.patch', when='@4.7:4.9.2,5:5.3') | ||||
| 
 | ||||
|     # Backport libsanitizer patch for glibc >= 2.31 and 8.1.0 <= gcc <= 9.2.0 | ||||
|     # https://bugs.gentoo.org/708346 | ||||
|     patch('glibc-2.31-libsanitizer-1.patch', when='@8.1.0:9.2.0') | ||||
|     patch('glibc-2.31-libsanitizer-2.patch', when='@8.1.0:9.2.0') | ||||
|     # Older versions do not compile with newer versions of glibc | ||||
|     # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81712 | ||||
|     patch('ucontext_t.patch', when='@4.9,5.1:5.4,6.1:6.4,7.1') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user