changeset 1669:b74df510d10d

Update gcc-core musl support patches.
author Rob Landley <rob@landley.net>
date Fri, 04 Jul 2014 23:55:54 -0500
parents 04b6f9a8c6af
children 1669660a7a97
files sources/patches/gcc-core-musl.patch sources/patches/gcc-core-portability.patch
diffstat 2 files changed, 122 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sources/patches/gcc-core-musl.patch	Fri Jul 04 23:55:54 2014 -0500
@@ -0,0 +1,122 @@
+Build against musl (or current glibc) using the standard name instead of the random implementation detail leakage.
+
+And on powerpc gcc assumes the existence of a nonstandard symbol (__libc_stack_end) which musl hasn't got.
+
+diff -ruN gcc-core/gcc/config/i386/linux-unwind.h gcc-core.bak/gcc/config/i386/linux-unwind.h
+--- gcc-core/gcc/config/i386/linux-unwind.h	2006-02-27 11:26:26.000000000 -0600
++++ gcc-core.bak/gcc/config/i386/linux-unwind.h	2014-07-02 18:27:17.931529601 -0500
+@@ -137,9 +137,9 @@
+     {
+       struct rt_sigframe {
+ 	int sig;
+-	struct siginfo *pinfo;
++	siginfo_t *pinfo;
+ 	void *puc;
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+       /* The void * cast is necessary to avoid an aliasing warning.
+diff -ru gcc-core.bak/gcc/config/alpha/linux-unwind.h gcc-core/gcc/config/alpha/linux-unwind.h
+--- gcc-core.bak/gcc/config/alpha/linux-unwind.h	2014-07-02 13:51:18.938839448 -0500
++++ gcc-core/gcc/config/alpha/linux-unwind.h	2014-07-04 12:27:31.215361161 -0500
+@@ -54,7 +54,7 @@
+   else if (pc[1] == 0x201f015f)	/* lda $0,NR_rt_sigreturn */
+     {
+       struct rt_sigframe {
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+       sc = &rt_->uc.uc_mcontext;
+diff -ru gcc-core.bak/gcc/config/ia64/linux-unwind.h gcc-core/gcc/config/ia64/linux-unwind.h
+--- gcc-core.bak/gcc/config/ia64/linux-unwind.h	2005-06-24 20:22:41.000000000 -0500
++++ gcc-core/gcc/config/ia64/linux-unwind.h	2014-07-04 12:27:31.215361161 -0500
+@@ -51,7 +51,7 @@
+       struct sigframe {
+ 	char scratch[16];
+ 	unsigned long sig_number;
+-	struct siginfo *info;
++	siginfo_t *info;
+ 	struct sigcontext *sc;
+       } *frame_ = (struct sigframe *)context->psp;
+       struct sigcontext *sc = frame_->sc;
+@@ -130,7 +130,7 @@
+       struct sigframe {
+ 	char scratch[16];
+ 	unsigned long sig_number;
+-	struct siginfo *info;
++	siginfo_t *info;
+ 	struct sigcontext *sc;
+       } *frame = (struct sigframe *)context->psp;
+       struct sigcontext *sc = frame->sc;
+diff -ru gcc-core.bak/gcc/config/mips/linux-unwind.h gcc-core/gcc/config/mips/linux-unwind.h
+--- gcc-core.bak/gcc/config/mips/linux-unwind.h	2006-05-19 07:52:26.000000000 -0500
++++ gcc-core/gcc/config/mips/linux-unwind.h	2014-07-04 12:27:31.211361161 -0500
+@@ -77,7 +77,7 @@
+     {
+       struct rt_sigframe {
+ 	u_int32_t trampoline[2];
+-	struct siginfo info;
++	siginfo_t info;
+ 	_sig_ucontext_t uc;
+       } *rt_ = context->ra;
+       sc = &rt_->uc.uc_mcontext;
+diff -ru gcc-core.bak/gcc/config/pa/linux-unwind.h gcc-core/gcc/config/pa/linux-unwind.h
+--- gcc-core.bak/gcc/config/pa/linux-unwind.h	2005-11-17 21:22:18.000000000 -0600
++++ gcc-core/gcc/config/pa/linux-unwind.h	2014-07-04 12:27:31.195361161 -0500
+@@ -63,7 +63,7 @@
+   int i;
+   struct sigcontext *sc;
+   struct rt_sigframe {
+-    struct siginfo info;
++    siginfo_t info;
+     struct ucontext uc;
+   } *frame;
+ 
+diff -ru gcc-core.bak/gcc/config/sh/linux-unwind.h gcc-core/gcc/config/sh/linux-unwind.h
+--- gcc-core.bak/gcc/config/sh/linux-unwind.h	2014-07-02 13:51:18.930839444 -0500
++++ gcc-core/gcc/config/sh/linux-unwind.h	2014-07-04 12:27:31.207361161 -0500
+@@ -82,9 +82,9 @@
+ 	   && (*(unsigned long *) (pc+11)  == 0x6ff0fff0))
+     {
+       struct rt_sigframe {
+-	struct siginfo *pinfo;
++	siginfo_t *pinfo;
+ 	void *puc;
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+       /* The void * cast is necessary to avoid an aliasing warning.
+@@ -181,7 +181,7 @@
+ 		&& (*(unsigned short *) (pc+14)  == 0x00ad))))
+     {
+       struct rt_sigframe {
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+       /* The void * cast is necessary to avoid an aliasing warning.
+diff -ru gcc-core/gcc/config/rs6000/linux-unwind.h gcc-core.bak/gcc/config/rs6000/linux-unwind.h
+--- gcc-core/gcc/config/rs6000/linux-unwind.h	2007-01-03 17:47:14.000000000 -0600
++++ gcc-core.bak/gcc/config/rs6000/linux-unwind.h	2014-07-04 18:15:48.935951119 -0500
+@@ -188,6 +188,7 @@
+ static long
+ ppc_linux_aux_vector (long which)
+ {
++#ifdef __GLIBC__
+   /* __libc_stack_end holds the original stack passed to a process.  */
+   extern long *__libc_stack_end;
+   long argc;
+@@ -212,6 +213,10 @@
+     if (auxp->a_type == which)
+       return auxp->a_val;
+   return 0;
++#else
++  /* pretend we have everything, save it all */
++  return -1;
++#endif
+ }
+ 
+ /* Do code reading to identify a signal frame, and set the frame
--- a/sources/patches/gcc-core-portability.patch	Wed Jul 02 21:18:19 2014 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-Build against musl (or current glibc) using the standard name instead of the random implementation detail leakage.
-
-diff -ruN gcc-core/gcc/config/i386/linux-unwind.h gcc-core.bak/gcc/config/i386/linux-unwind.h
---- gcc-core/gcc/config/i386/linux-unwind.h	2006-02-27 11:26:26.000000000 -0600
-+++ gcc-core.bak/gcc/config/i386/linux-unwind.h	2014-07-02 18:27:17.931529601 -0500
-@@ -137,9 +137,9 @@
-     {
-       struct rt_sigframe {
- 	int sig;
--	struct siginfo *pinfo;
-+	siginfo_t *pinfo;
- 	void *puc;
--	struct siginfo info;
-+	siginfo_t info;
- 	struct ucontext uc;
-       } *rt_ = context->cfa;
-       /* The void * cast is necessary to avoid an aliasing warning.