gcc: Fix build of older versions with recent versions of glibc (#8510)
This commit is contained in:
		
				
					committed by
					
						
						Adam J. Stewart
					
				
			
			
				
	
			
			
			
						parent
						
							81668c524b
						
					
				
				
					commit
					8a1bbc5d84
				
			@@ -171,6 +171,16 @@ class Gcc(AutotoolsPackage):
 | 
			
		||||
    patch('piclibs.patch', when='+piclibs')
 | 
			
		||||
    patch('gcc-backport.patch', when='@4.7:4.9.2,5:5.3')
 | 
			
		||||
 | 
			
		||||
    # 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')
 | 
			
		||||
    patch('ucontext_t-java.patch', when='@4.9,5.1:5.4,6.1:6.4 languages=java')
 | 
			
		||||
    # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81066
 | 
			
		||||
    patch('stack_t-4.9.patch', when='@4.9')
 | 
			
		||||
    patch('stack_t.patch', when='@5.1:5.4,6.1:6.4,7.1')
 | 
			
		||||
    # https://bugs.busybox.net/show_bug.cgi?id=10061
 | 
			
		||||
    patch('signal.patch', when='@4.9,5.1:5.4')
 | 
			
		||||
 | 
			
		||||
    build_directory = 'spack-build'
 | 
			
		||||
 | 
			
		||||
    def url_for_version(self, version):
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								var/spack/repos/builtin/packages/gcc/signal.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								var/spack/repos/builtin/packages/gcc/signal.patch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
From 6c709b6262e8b6441b1e94526d6d65d4ce7a7dec Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: doko <doko@138bc75d-0d04-0410-961f-82ee72b054a4>
 | 
			
		||||
Date: Thu, 7 Sep 2017 07:18:57 +0000
 | 
			
		||||
Subject: [PATCH] 2017-09-07  Matthias Klose  <doko@ubuntu.com>
 | 
			
		||||
 | 
			
		||||
        * asan/asan_linux.cc: Include <signal.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@251830 138bc75d-0d04-0410-961f-82ee72b054a4
 | 
			
		||||
---
 | 
			
		||||
 libsanitizer/asan/asan_linux.cc | 1 +
 | 
			
		||||
 2 files changed, 5 insertions(+)
 | 
			
		||||
 | 
			
		||||
diff --git a/libsanitizer/asan/asan_linux.cc b/libsanitizer/asan/asan_linux.cc
 | 
			
		||||
index c504168..59087b9 100644
 | 
			
		||||
--- a/libsanitizer/asan/asan_linux.cc
 | 
			
		||||
+++ b/libsanitizer/asan/asan_linux.cc
 | 
			
		||||
@@ -29,6 +29,7 @@
 | 
			
		||||
 #include <dlfcn.h>
 | 
			
		||||
 #include <fcntl.h>
 | 
			
		||||
 #include <pthread.h>
 | 
			
		||||
+#include <signal.h>
 | 
			
		||||
 #include <stdio.h>
 | 
			
		||||
 #include <unistd.h>
 | 
			
		||||
 #include <unwind.h>
 | 
			
		||||
-- 
 | 
			
		||||
2.9.3
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										80
									
								
								var/spack/repos/builtin/packages/gcc/stack_t-4.9.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								var/spack/repos/builtin/packages/gcc/stack_t-4.9.patch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
From 833e00c01e96f61e24cd7ec97b93fad212dc914b Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: doko <doko@138bc75d-0d04-0410-961f-82ee72b054a4>
 | 
			
		||||
Date: Thu, 7 Sep 2017 07:17:17 +0000
 | 
			
		||||
Subject: [PATCH] 2017-09-07  Matthias Klose  <doko@ubuntu.com>
 | 
			
		||||
 | 
			
		||||
        Backported from mainline
 | 
			
		||||
        2017-07-14  Jakub Jelinek  <jakub@redhat.com>
 | 
			
		||||
 | 
			
		||||
        PR sanitizer/81066
 | 
			
		||||
        * sanitizer_common/sanitizer_linux.h: Cherry-pick upstream r307969.
 | 
			
		||||
        * sanitizer_common/sanitizer_linux.cc: Likewise.
 | 
			
		||||
        * sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc: Likewise.
 | 
			
		||||
        * tsan/tsan_platform_linux.cc: Likewise.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@251829 138bc75d-0d04-0410-961f-82ee72b054a4
 | 
			
		||||
---
 | 
			
		||||
 libsanitizer/sanitizer_common/sanitizer_linux.cc              |  3 +--
 | 
			
		||||
 libsanitizer/sanitizer_common/sanitizer_linux.h               |  4 +---
 | 
			
		||||
 .../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc  |  2 +-
 | 
			
		||||
 libsanitizer/tsan/tsan_platform_linux.cc                      |  2 +-
 | 
			
		||||
 5 files changed, 15 insertions(+), 7 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.cc b/libsanitizer/sanitizer_common/sanitizer_linux.cc
 | 
			
		||||
index 9feb307..821b26d 100644
 | 
			
		||||
--- a/libsanitizer/sanitizer_common/sanitizer_linux.cc
 | 
			
		||||
+++ b/libsanitizer/sanitizer_common/sanitizer_linux.cc
 | 
			
		||||
@@ -514,8 +514,7 @@ uptr internal_prctl(int option, uptr arg2, uptr arg3, uptr arg4, uptr arg5) {
 | 
			
		||||
 }
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
-uptr internal_sigaltstack(const struct sigaltstack *ss,
 | 
			
		||||
-                         struct sigaltstack *oss) {
 | 
			
		||||
+uptr internal_sigaltstack(const void *ss, void *oss) {
 | 
			
		||||
   return internal_syscall(__NR_sigaltstack, (uptr)ss, (uptr)oss);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.h b/libsanitizer/sanitizer_common/sanitizer_linux.h
 | 
			
		||||
index 086834c..3a6f4cd 100644
 | 
			
		||||
--- a/libsanitizer/sanitizer_common/sanitizer_linux.h
 | 
			
		||||
+++ b/libsanitizer/sanitizer_common/sanitizer_linux.h
 | 
			
		||||
@@ -27,8 +26,7 @@ struct linux_dirent;
 | 
			
		||||
 // Syscall wrappers.
 | 
			
		||||
 uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count);
 | 
			
		||||
 uptr internal_prctl(int option, uptr arg2, uptr arg3, uptr arg4, uptr arg5);
 | 
			
		||||
-uptr internal_sigaltstack(const struct sigaltstack* ss,
 | 
			
		||||
-                          struct sigaltstack* oss);
 | 
			
		||||
+uptr internal_sigaltstack(const void* ss, void* oss);
 | 
			
		||||
 uptr internal_sigaction(int signum, const __sanitizer_kernel_sigaction_t *act,
 | 
			
		||||
     __sanitizer_kernel_sigaction_t *oldact);
 | 
			
		||||
 uptr internal_sigprocmask(int how, __sanitizer_kernel_sigset_t *set,
 | 
			
		||||
diff --git a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
 | 
			
		||||
index 5881202..c54894d 100644
 | 
			
		||||
--- a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
 | 
			
		||||
+++ b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
 | 
			
		||||
@@ -234,7 +234,7 @@ static int TracerThread(void* argument) {
 | 
			
		||||
 
 | 
			
		||||
   // Alternate stack for signal handling.
 | 
			
		||||
   InternalScopedBuffer<char> handler_stack_memory(kHandlerStackSize);
 | 
			
		||||
-  struct sigaltstack handler_stack;
 | 
			
		||||
+  stack_t handler_stack;
 | 
			
		||||
   internal_memset(&handler_stack, 0, sizeof(handler_stack));
 | 
			
		||||
   handler_stack.ss_sp = handler_stack_memory.data();
 | 
			
		||||
   handler_stack.ss_size = kHandlerStackSize;
 | 
			
		||||
diff --git a/libsanitizer/tsan/tsan_platform_linux.cc b/libsanitizer/tsan/tsan_platform_linux.cc
 | 
			
		||||
index 3259131..b8e9078 100644
 | 
			
		||||
--- a/libsanitizer/tsan/tsan_platform_linux.cc
 | 
			
		||||
+++ b/libsanitizer/tsan/tsan_platform_linux.cc
 | 
			
		||||
@@ -377,7 +377,7 @@ bool IsGlobalVar(uptr addr) {
 | 
			
		||||
 int ExtractResolvFDs(void *state, int *fds, int nfd) {
 | 
			
		||||
 #if SANITIZER_LINUX
 | 
			
		||||
   int cnt = 0;
 | 
			
		||||
-  __res_state *statp = (__res_state*)state;
 | 
			
		||||
+  struct __res_state *statp = (struct __res_state*)state;
 | 
			
		||||
   for (int i = 0; i < MAXNS && cnt < nfd; i++) {
 | 
			
		||||
     if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1)
 | 
			
		||||
       fds[cnt++] = statp->_u._ext.nssocks[i];
 | 
			
		||||
-- 
 | 
			
		||||
2.9.3
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										88
									
								
								var/spack/repos/builtin/packages/gcc/stack_t.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								var/spack/repos/builtin/packages/gcc/stack_t.patch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,88 @@
 | 
			
		||||
From 833e00c01e96f61e24cd7ec97b93fad212dc914b Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: doko <doko@138bc75d-0d04-0410-961f-82ee72b054a4>
 | 
			
		||||
Date: Thu, 7 Sep 2017 07:17:17 +0000
 | 
			
		||||
Subject: [PATCH] 2017-09-07  Matthias Klose  <doko@ubuntu.com>
 | 
			
		||||
 | 
			
		||||
        Backported from mainline
 | 
			
		||||
        2017-07-14  Jakub Jelinek  <jakub@redhat.com>
 | 
			
		||||
 | 
			
		||||
        PR sanitizer/81066
 | 
			
		||||
        * sanitizer_common/sanitizer_linux.h: Cherry-pick upstream r307969.
 | 
			
		||||
        * sanitizer_common/sanitizer_linux.cc: Likewise.
 | 
			
		||||
        * sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc: Likewise.
 | 
			
		||||
        * tsan/tsan_platform_linux.cc: Likewise.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@251829 138bc75d-0d04-0410-961f-82ee72b054a4
 | 
			
		||||
---
 | 
			
		||||
 libsanitizer/sanitizer_common/sanitizer_linux.cc              |  3 +--
 | 
			
		||||
 libsanitizer/sanitizer_common/sanitizer_linux.h               |  4 +---
 | 
			
		||||
 .../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc  |  2 +-
 | 
			
		||||
 libsanitizer/tsan/tsan_platform_linux.cc                      |  2 +-
 | 
			
		||||
 5 files changed, 15 insertions(+), 7 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.cc b/libsanitizer/sanitizer_common/sanitizer_linux.cc
 | 
			
		||||
index 9feb307..821b26d 100644
 | 
			
		||||
--- a/libsanitizer/sanitizer_common/sanitizer_linux.cc
 | 
			
		||||
+++ b/libsanitizer/sanitizer_common/sanitizer_linux.cc
 | 
			
		||||
@@ -514,8 +514,7 @@ uptr internal_prctl(int option, uptr arg2, uptr arg3, uptr arg4, uptr arg5) {
 | 
			
		||||
 }
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
-uptr internal_sigaltstack(const struct sigaltstack *ss,
 | 
			
		||||
-                         struct sigaltstack *oss) {
 | 
			
		||||
+uptr internal_sigaltstack(const void *ss, void *oss) {
 | 
			
		||||
   return internal_syscall(SYSCALL(sigaltstack), (uptr)ss, (uptr)oss);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.h b/libsanitizer/sanitizer_common/sanitizer_linux.h
 | 
			
		||||
index 086834c..3a6f4cd 100644
 | 
			
		||||
--- a/libsanitizer/sanitizer_common/sanitizer_linux.h
 | 
			
		||||
+++ b/libsanitizer/sanitizer_common/sanitizer_linux.h
 | 
			
		||||
@@ -18,7 +18,6 @@
 | 
			
		||||
 #include "sanitizer_platform_limits_posix.h"
 | 
			
		||||
 
 | 
			
		||||
 struct link_map;  // Opaque type returned by dlopen().
 | 
			
		||||
-struct sigaltstack;
 | 
			
		||||
 
 | 
			
		||||
 namespace __sanitizer {
 | 
			
		||||
 // Dirent structure for getdents(). Note that this structure is different from
 | 
			
		||||
@@ -27,8 +26,7 @@ struct linux_dirent;
 | 
			
		||||
 
 | 
			
		||||
 // Syscall wrappers.
 | 
			
		||||
 uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count);
 | 
			
		||||
-uptr internal_sigaltstack(const struct sigaltstack* ss,
 | 
			
		||||
-                          struct sigaltstack* oss);
 | 
			
		||||
+uptr internal_sigaltstack(const void* ss, void* oss);
 | 
			
		||||
 uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set,
 | 
			
		||||
     __sanitizer_sigset_t *oldset);
 | 
			
		||||
 void internal_sigfillset(__sanitizer_sigset_t *set);
 | 
			
		||||
diff --git a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
 | 
			
		||||
index 5881202..c54894d 100644
 | 
			
		||||
--- a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
 | 
			
		||||
+++ b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
 | 
			
		||||
@@ -234,7 +234,7 @@ static int TracerThread(void* argument) {
 | 
			
		||||
 
 | 
			
		||||
   // Alternate stack for signal handling.
 | 
			
		||||
   InternalScopedBuffer<char> handler_stack_memory(kHandlerStackSize);
 | 
			
		||||
-  struct sigaltstack handler_stack;
 | 
			
		||||
+  stack_t handler_stack;
 | 
			
		||||
   internal_memset(&handler_stack, 0, sizeof(handler_stack));
 | 
			
		||||
   handler_stack.ss_sp = handler_stack_memory.data();
 | 
			
		||||
   handler_stack.ss_size = kHandlerStackSize;
 | 
			
		||||
diff --git a/libsanitizer/tsan/tsan_platform_linux.cc b/libsanitizer/tsan/tsan_platform_linux.cc
 | 
			
		||||
index 3259131..b8e9078 100644
 | 
			
		||||
--- a/libsanitizer/tsan/tsan_platform_linux.cc
 | 
			
		||||
+++ b/libsanitizer/tsan/tsan_platform_linux.cc
 | 
			
		||||
@@ -377,7 +377,7 @@ bool IsGlobalVar(uptr addr) {
 | 
			
		||||
 int ExtractResolvFDs(void *state, int *fds, int nfd) {
 | 
			
		||||
 #if SANITIZER_LINUX
 | 
			
		||||
   int cnt = 0;
 | 
			
		||||
-  __res_state *statp = (__res_state*)state;
 | 
			
		||||
+  struct __res_state *statp = (struct __res_state*)state;
 | 
			
		||||
   for (int i = 0; i < MAXNS && cnt < nfd; i++) {
 | 
			
		||||
     if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1)
 | 
			
		||||
       fds[cnt++] = statp->_u._ext.nssocks[i];
 | 
			
		||||
-- 
 | 
			
		||||
2.9.3
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										60
									
								
								var/spack/repos/builtin/packages/gcc/ucontext_t-java.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								var/spack/repos/builtin/packages/gcc/ucontext_t-java.patch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
From 9b9287cde20ea57578cf07efb2a96ed4cc0da36f Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: doko <doko@138bc75d-0d04-0410-961f-82ee72b054a4>
 | 
			
		||||
Date: Thu, 7 Sep 2017 07:22:07 +0000
 | 
			
		||||
Subject: [PATCH] 2017-09-07  Matthias Klose  <doko@ubuntu.com>
 | 
			
		||||
 | 
			
		||||
        * include/x86_64-signal.h (HANDLE_DIVIDE_OVERFLOW): Replace
 | 
			
		||||
        'struct ucontext' with ucontext_t.
 | 
			
		||||
        * include/i386-signal.h (HANDLE_DIVIDE_OVERFLOW): Likewise.
 | 
			
		||||
        * include/s390-signal.h (HANDLE_DIVIDE_OVERFLOW): Likewise.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@251832 138bc75d-0d04-0410-961f-82ee72b054a4
 | 
			
		||||
---
 | 
			
		||||
 libjava/include/i386-signal.h   | 2 +-
 | 
			
		||||
 libjava/include/s390-signal.h   | 2 +-
 | 
			
		||||
 libjava/include/x86_64-signal.h | 2 +-
 | 
			
		||||
 4 files changed, 10 insertions(+), 3 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/libjava/include/i386-signal.h b/libjava/include/i386-signal.h
 | 
			
		||||
index c2409b0..ef77e7e 100644
 | 
			
		||||
--- a/libjava/include/i386-signal.h
 | 
			
		||||
+++ b/libjava/include/i386-signal.h
 | 
			
		||||
@@ -29,7 +29,7 @@ static void _Jv_##_name (int, siginfo_t *,			\
 | 
			
		||||
 #define HANDLE_DIVIDE_OVERFLOW						\
 | 
			
		||||
 do									\
 | 
			
		||||
 {									\
 | 
			
		||||
-  struct ucontext *_uc = (struct ucontext *)_p;				\
 | 
			
		||||
+  ucontext_t *_uc = (ucontext_t *)_p;					\
 | 
			
		||||
   gregset_t &_gregs = _uc->uc_mcontext.gregs;				\
 | 
			
		||||
   unsigned char *_eip = (unsigned char *)_gregs[REG_EIP];		\
 | 
			
		||||
 									\
 | 
			
		||||
diff --git a/libjava/include/s390-signal.h b/libjava/include/s390-signal.h
 | 
			
		||||
index 4ca4c10..9261b52 100644
 | 
			
		||||
--- a/libjava/include/s390-signal.h
 | 
			
		||||
+++ b/libjava/include/s390-signal.h
 | 
			
		||||
@@ -51,7 +51,7 @@ do									\
 | 
			
		||||
   struct                                                                \
 | 
			
		||||
   {                                                                     \
 | 
			
		||||
     unsigned long int uc_flags;                                         \
 | 
			
		||||
-    struct ucontext *uc_link;                                           \
 | 
			
		||||
+    ucontext_t *uc_link;                                                \
 | 
			
		||||
     stack_t uc_stack;                                                   \
 | 
			
		||||
     mcontext_t uc_mcontext;                                             \
 | 
			
		||||
     unsigned long sigmask[2];                                           \
 | 
			
		||||
diff --git a/libjava/include/x86_64-signal.h b/libjava/include/x86_64-signal.h
 | 
			
		||||
index 12383b5..e36c5a3 100644
 | 
			
		||||
--- a/libjava/include/x86_64-signal.h
 | 
			
		||||
+++ b/libjava/include/x86_64-signal.h
 | 
			
		||||
@@ -28,7 +28,7 @@ static void _Jv_##_name (int, siginfo_t *,			\
 | 
			
		||||
 #define HANDLE_DIVIDE_OVERFLOW						\
 | 
			
		||||
 do									\
 | 
			
		||||
 {									\
 | 
			
		||||
-  struct ucontext *_uc = (struct ucontext *)_p;				\
 | 
			
		||||
+  ucontext_t *_uc = (ucontext_t *)_p;					\
 | 
			
		||||
   gregset_t &_gregs = _uc->uc_mcontext.gregs;				\
 | 
			
		||||
   unsigned char *_rip = (unsigned char *)_gregs[REG_RIP];		\
 | 
			
		||||
 									\
 | 
			
		||||
-- 
 | 
			
		||||
2.9.3
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										189
									
								
								var/spack/repos/builtin/packages/gcc/ucontext_t.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										189
									
								
								var/spack/repos/builtin/packages/gcc/ucontext_t.patch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,189 @@
 | 
			
		||||
From ecf0d1a107133c715763940c2b197aa814710e1b Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
 | 
			
		||||
Date: Tue, 4 Jul 2017 10:25:10 +0000
 | 
			
		||||
Subject: [PATCH] Use ucontext_t not struct ucontext in linux-unwind.h files.
 | 
			
		||||
 | 
			
		||||
Current glibc no longer gives the ucontext_t type the tag struct
 | 
			
		||||
ucontext, to conform with POSIX namespace rules.  This requires
 | 
			
		||||
various linux-unwind.h files in libgcc, that were previously using
 | 
			
		||||
struct ucontext, to be fixed to use ucontext_t instead.  This is
 | 
			
		||||
similar to the removal of the struct siginfo tag from siginfo_t some
 | 
			
		||||
years ago.
 | 
			
		||||
 | 
			
		||||
This patch changes those files to use ucontext_t instead.  As the
 | 
			
		||||
standard name that should be unconditionally safe, so this is not
 | 
			
		||||
restricted to architectures supported by glibc, or conditioned on the
 | 
			
		||||
glibc version.
 | 
			
		||||
 | 
			
		||||
Tested compilation together with current glibc with glibc's
 | 
			
		||||
build-many-glibcs.py.
 | 
			
		||||
 | 
			
		||||
	* config/aarch64/linux-unwind.h (aarch64_fallback_frame_state),
 | 
			
		||||
	config/alpha/linux-unwind.h (alpha_fallback_frame_state),
 | 
			
		||||
	config/bfin/linux-unwind.h (bfin_fallback_frame_state),
 | 
			
		||||
	config/i386/linux-unwind.h (x86_64_fallback_frame_state,
 | 
			
		||||
	x86_fallback_frame_state), config/m68k/linux-unwind.h (struct
 | 
			
		||||
	uw_ucontext), config/nios2/linux-unwind.h (struct nios2_ucontext),
 | 
			
		||||
	config/pa/linux-unwind.h (pa32_fallback_frame_state),
 | 
			
		||||
	config/sh/linux-unwind.h (sh_fallback_frame_state),
 | 
			
		||||
	config/tilepro/linux-unwind.h (tile_fallback_frame_state),
 | 
			
		||||
	config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Use
 | 
			
		||||
	ucontext_t instead of struct ucontext.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@249958 138bc75d-0d04-0410-961f-82ee72b054a4
 | 
			
		||||
---
 | 
			
		||||
 libgcc/config/aarch64/linux-unwind.h |  2 +-
 | 
			
		||||
 libgcc/config/alpha/linux-unwind.h   |  2 +-
 | 
			
		||||
 libgcc/config/bfin/linux-unwind.h    |  2 +-
 | 
			
		||||
 libgcc/config/i386/linux-unwind.h    |  4 ++--
 | 
			
		||||
 libgcc/config/m68k/linux-unwind.h    |  2 +-
 | 
			
		||||
 libgcc/config/nios2/linux-unwind.h   |  2 +-
 | 
			
		||||
 libgcc/config/pa/linux-unwind.h      |  2 +-
 | 
			
		||||
 libgcc/config/sh/linux-unwind.h      |  2 +-
 | 
			
		||||
 libgcc/config/tilepro/linux-unwind.h |  2 +-
 | 
			
		||||
 libgcc/config/xtensa/linux-unwind.h  |  2 +-
 | 
			
		||||
 11 files changed, 25 insertions(+), 11 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/libgcc/config/aarch64/linux-unwind.h b/libgcc/config/aarch64/linux-unwind.h
 | 
			
		||||
index 86d17b1..909f68f 100644
 | 
			
		||||
--- a/libgcc/config/aarch64/linux-unwind.h
 | 
			
		||||
+++ b/libgcc/config/aarch64/linux-unwind.h
 | 
			
		||||
@@ -52,7 +52,7 @@ aarch64_fallback_frame_state (struct _Unwind_Context *context,
 | 
			
		||||
   struct rt_sigframe
 | 
			
		||||
   {
 | 
			
		||||
     siginfo_t info;
 | 
			
		||||
-    struct ucontext uc;
 | 
			
		||||
+    ucontext_t uc;
 | 
			
		||||
   };
 | 
			
		||||
 
 | 
			
		||||
   struct rt_sigframe *rt_;
 | 
			
		||||
diff --git a/libgcc/config/alpha/linux-unwind.h b/libgcc/config/alpha/linux-unwind.h
 | 
			
		||||
index d65474f..9a226b1 100644
 | 
			
		||||
--- a/libgcc/config/alpha/linux-unwind.h
 | 
			
		||||
+++ b/libgcc/config/alpha/linux-unwind.h
 | 
			
		||||
@@ -51,7 +51,7 @@ alpha_fallback_frame_state (struct _Unwind_Context *context,
 | 
			
		||||
     {
 | 
			
		||||
       struct rt_sigframe {
 | 
			
		||||
 	siginfo_t info;
 | 
			
		||||
-	struct ucontext uc;
 | 
			
		||||
+	ucontext_t uc;
 | 
			
		||||
       } *rt_ = context->cfa;
 | 
			
		||||
       sc = &rt_->uc.uc_mcontext;
 | 
			
		||||
     }
 | 
			
		||||
diff --git a/libgcc/config/bfin/linux-unwind.h b/libgcc/config/bfin/linux-unwind.h
 | 
			
		||||
index 0c270e4..7fa95d2 100644
 | 
			
		||||
--- a/libgcc/config/bfin/linux-unwind.h
 | 
			
		||||
+++ b/libgcc/config/bfin/linux-unwind.h
 | 
			
		||||
@@ -52,7 +52,7 @@ bfin_fallback_frame_state (struct _Unwind_Context *context,
 | 
			
		||||
 	void *puc;
 | 
			
		||||
 	char retcode[8];
 | 
			
		||||
 	siginfo_t info;
 | 
			
		||||
-	struct ucontext uc;
 | 
			
		||||
+	ucontext_t uc;
 | 
			
		||||
       } *rt_ = context->cfa;
 | 
			
		||||
 
 | 
			
		||||
       /* The void * cast is necessary to avoid an aliasing warning.
 | 
			
		||||
diff --git a/libgcc/config/i386/linux-unwind.h b/libgcc/config/i386/linux-unwind.h
 | 
			
		||||
index e54bf73..d35fc45 100644
 | 
			
		||||
--- a/libgcc/config/i386/linux-unwind.h
 | 
			
		||||
+++ b/libgcc/config/i386/linux-unwind.h
 | 
			
		||||
@@ -58,7 +58,7 @@ x86_64_fallback_frame_state (struct _Unwind_Context *context,
 | 
			
		||||
   if (*(unsigned char *)(pc+0) == 0x48
 | 
			
		||||
       && *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL)
 | 
			
		||||
     {
 | 
			
		||||
-      struct ucontext *uc_ = context->cfa;
 | 
			
		||||
+      ucontext_t *uc_ = context->cfa;
 | 
			
		||||
       /* The void * cast is necessary to avoid an aliasing warning.
 | 
			
		||||
          The aliasing warning is correct, but should not be a problem
 | 
			
		||||
          because it does not alias anything.  */
 | 
			
		||||
@@ -138,7 +138,7 @@ x86_fallback_frame_state (struct _Unwind_Context *context,
 | 
			
		||||
 	siginfo_t *pinfo;
 | 
			
		||||
 	void *puc;
 | 
			
		||||
 	siginfo_t info;
 | 
			
		||||
-	struct ucontext uc;
 | 
			
		||||
+	ucontext_t uc;
 | 
			
		||||
       } *rt_ = context->cfa;
 | 
			
		||||
       /* The void * cast is necessary to avoid an aliasing warning.
 | 
			
		||||
          The aliasing warning is correct, but should not be a problem
 | 
			
		||||
diff --git a/libgcc/config/m68k/linux-unwind.h b/libgcc/config/m68k/linux-unwind.h
 | 
			
		||||
index fb79a4d..b2f5ea4 100644
 | 
			
		||||
--- a/libgcc/config/m68k/linux-unwind.h
 | 
			
		||||
+++ b/libgcc/config/m68k/linux-unwind.h
 | 
			
		||||
@@ -33,7 +33,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 | 
			
		||||
 /* <sys/ucontext.h> is unfortunately broken right now.  */
 | 
			
		||||
 struct uw_ucontext {
 | 
			
		||||
 	unsigned long	  uc_flags;
 | 
			
		||||
-	struct ucontext  *uc_link;
 | 
			
		||||
+	ucontext_t	 *uc_link;
 | 
			
		||||
 	stack_t		  uc_stack;
 | 
			
		||||
 	mcontext_t	  uc_mcontext;
 | 
			
		||||
 	unsigned long	  uc_filler[80];
 | 
			
		||||
diff --git a/libgcc/config/nios2/linux-unwind.h b/libgcc/config/nios2/linux-unwind.h
 | 
			
		||||
index dff1c20..1d88afe 100644
 | 
			
		||||
--- a/libgcc/config/nios2/linux-unwind.h
 | 
			
		||||
+++ b/libgcc/config/nios2/linux-unwind.h
 | 
			
		||||
@@ -38,7 +38,7 @@ struct nios2_mcontext {
 | 
			
		||||
 
 | 
			
		||||
 struct nios2_ucontext {
 | 
			
		||||
   unsigned long uc_flags;
 | 
			
		||||
-  struct ucontext *uc_link;
 | 
			
		||||
+  ucontext_t *uc_link;
 | 
			
		||||
   stack_t uc_stack;
 | 
			
		||||
   struct nios2_mcontext uc_mcontext;
 | 
			
		||||
   sigset_t uc_sigmask;	/* mask last for extensibility */
 | 
			
		||||
diff --git a/libgcc/config/pa/linux-unwind.h b/libgcc/config/pa/linux-unwind.h
 | 
			
		||||
index 0149468..9157535 100644
 | 
			
		||||
--- a/libgcc/config/pa/linux-unwind.h
 | 
			
		||||
+++ b/libgcc/config/pa/linux-unwind.h
 | 
			
		||||
@@ -80,7 +80,7 @@ pa32_fallback_frame_state (struct _Unwind_Context *context,
 | 
			
		||||
   struct sigcontext *sc;
 | 
			
		||||
   struct rt_sigframe {
 | 
			
		||||
     siginfo_t info;
 | 
			
		||||
-    struct ucontext uc;
 | 
			
		||||
+    ucontext_t uc;
 | 
			
		||||
   } *frame;
 | 
			
		||||
 
 | 
			
		||||
   /* rt_sigreturn trampoline:
 | 
			
		||||
diff --git a/libgcc/config/sh/linux-unwind.h b/libgcc/config/sh/linux-unwind.h
 | 
			
		||||
index e63091f..67033f0 100644
 | 
			
		||||
--- a/libgcc/config/sh/linux-unwind.h
 | 
			
		||||
+++ b/libgcc/config/sh/linux-unwind.h
 | 
			
		||||
@@ -180,7 +180,7 @@ sh_fallback_frame_state (struct _Unwind_Context *context,
 | 
			
		||||
     {
 | 
			
		||||
       struct rt_sigframe {
 | 
			
		||||
 	siginfo_t info;
 | 
			
		||||
-	struct ucontext uc;
 | 
			
		||||
+	ucontext_t uc;
 | 
			
		||||
       } *rt_ = context->cfa;
 | 
			
		||||
       /* The void * cast is necessary to avoid an aliasing warning.
 | 
			
		||||
          The aliasing warning is correct, but should not be a problem
 | 
			
		||||
diff --git a/libgcc/config/tilepro/linux-unwind.h b/libgcc/config/tilepro/linux-unwind.h
 | 
			
		||||
index fd83ba7..e3c9ef0 100644
 | 
			
		||||
--- a/libgcc/config/tilepro/linux-unwind.h
 | 
			
		||||
+++ b/libgcc/config/tilepro/linux-unwind.h
 | 
			
		||||
@@ -61,7 +61,7 @@ tile_fallback_frame_state (struct _Unwind_Context *context,
 | 
			
		||||
   struct rt_sigframe {
 | 
			
		||||
     unsigned char save_area[C_ABI_SAVE_AREA_SIZE];
 | 
			
		||||
     siginfo_t info;
 | 
			
		||||
-    struct ucontext uc;
 | 
			
		||||
+    ucontext_t uc;
 | 
			
		||||
   } *rt_;
 | 
			
		||||
 
 | 
			
		||||
   /* Return if this is not a signal handler.  */
 | 
			
		||||
diff --git a/libgcc/config/xtensa/linux-unwind.h b/libgcc/config/xtensa/linux-unwind.h
 | 
			
		||||
index 9a67b5d..98b7ea6 100644
 | 
			
		||||
--- a/libgcc/config/xtensa/linux-unwind.h
 | 
			
		||||
+++ b/libgcc/config/xtensa/linux-unwind.h
 | 
			
		||||
@@ -67,7 +67,7 @@ xtensa_fallback_frame_state (struct _Unwind_Context *context,
 | 
			
		||||
 
 | 
			
		||||
   struct rt_sigframe {
 | 
			
		||||
     siginfo_t info;
 | 
			
		||||
-    struct ucontext uc;
 | 
			
		||||
+    ucontext_t uc;
 | 
			
		||||
   } *rt_;
 | 
			
		||||
 
 | 
			
		||||
   /* movi a2, __NR_rt_sigreturn; syscall */
 | 
			
		||||
-- 
 | 
			
		||||
2.9.3
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user