summaryrefslogtreecommitdiffstats
path: root/toolchain
diff options
context:
space:
mode:
authorflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>2012-10-12 14:42:25 +0000
committerflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>2012-10-12 14:42:25 +0000
commita761a9b3828ac04ef6abab6172e344bb0806eff4 (patch)
tree8f3bdef4ace18815774f0914f0fdc33ed3d5aeba /toolchain
parent4e0b0330924673f19a0d0e870f68d5ec2523da8e (diff)
[toolchain] gcc: backport struct siginfo -> siginfo_t renaming
Otherwise newer eglibc toolchain will simply fail to build. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33736 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'toolchain')
-rw-r--r--toolchain/gcc/patches/4.6-linaro/002-siginfo_t.patch157
-rw-r--r--toolchain/gcc/patches/4.6.2/002-siginfo_t.patch157
-rw-r--r--toolchain/gcc/patches/4.7-linaro/003-siginfo_t.patch147
-rw-r--r--toolchain/gcc/patches/4.7.0/003-siginfo_t.patch147
4 files changed, 608 insertions, 0 deletions
diff --git a/toolchain/gcc/patches/4.6-linaro/002-siginfo_t.patch b/toolchain/gcc/patches/4.6-linaro/002-siginfo_t.patch
new file mode 100644
index 000000000..a19b7f221
--- /dev/null
+++ b/toolchain/gcc/patches/4.6-linaro/002-siginfo_t.patch
@@ -0,0 +1,157 @@
+There is one usage in boehm-gc/os_dep.c, but it is only used if
+SUNOS5SIGS is defined, which it is only if one of SUNOS5, DRSNX, HPUX, or
+FREEBSD is defined, which are all not using Linux-based glibc ports.
+
+Likewise, gcc/ada/init.c has a struct __siginfo occurence, but only for
+__FreeBSD__.
+
+config/rs6000/linux-unwind.h uses ``char siginfo[128]'', and
+config/s390/linux-unwind.h also uses a constant.
+
+I tested the following patch for sh-linux-gnu. This only covers one
+configuration, but the change is pretty mechanic anyway and every place
+that used to refer to struct siginfo already must have had <signal.h> in
+its include path, which is the same file that declares siginfo_t.
+
+OK to commit? This should probably also go into any active release
+branches, to keep them buildable once this glibc change ripples through?
+
+gcc/
+ * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Use
+ siginfo_t instead of struct siginfo.
+ * config/bfin/linux-unwind.h (bfin_fallback_frame_state): Likewise.
+ * config/i386/linux-unwind.h (x86_fallback_frame_state): Likewise.
+ * config/ia64/linux-unwind.h (ia64_fallback_frame_state)
+ (ia64_handle_unwabi): Likewise.
+ * config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise.
+ * config/pa/linux-unwind.h (pa32_fallback_frame_state): Likewise.
+ * config/sh/linux-unwind.h (shmedia_fallback_frame_state)
+ (sh_fallback_frame_state): Likewise.
+ * config/tilepro/linux-unwind.h (tile_fallback_frame_state): Likewise.
+ * config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Likewise.
+
+---
+diff -urN gcc-linaro-4.6-2012.02/gcc/config/alpha/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/alpha/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/alpha/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/alpha/linux-unwind.h 2012-09-13 10:25:52.919072751 +0200
+@@ -49,7 +49,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 -urN gcc-linaro-4.6-2012.02/gcc/config/bfin/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/bfin/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/bfin/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/bfin/linux-unwind.h 2012-09-13 10:26:14.819073313 +0200
+@@ -48,10 +48,10 @@
+ {
+ struct rt_sigframe {
+ int sig;
+- struct siginfo *pinfo;
++ siginfo_t *pinfo;
+ void *puc;
+ char retcode[8];
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *rt_ = context->cfa;
+
+diff -urN gcc-linaro-4.6-2012.02/gcc/config/i386/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/i386/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/i386/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/i386/linux-unwind.h 2012-09-13 10:26:41.891074005 +0200
+@@ -133,9 +133,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 -urN gcc-linaro-4.6-2012.02/gcc/config/ia64/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/ia64/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/ia64/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/ia64/linux-unwind.h 2012-09-13 10:26:59.251074450 +0200
+@@ -47,7 +47,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;
+@@ -137,7 +137,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 -urN gcc-linaro-4.6-2012.02/gcc/config/mips/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/mips/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/mips/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/mips/linux-unwind.h 2012-09-13 10:27:17.947074929 +0200
+@@ -75,7 +75,7 @@
+ struct rt_sigframe {
+ u_int32_t ass[4]; /* Argument save space for o32. */
+ u_int32_t trampoline[2];
+- struct siginfo info;
++ siginfo_t info;
+ _sig_ucontext_t uc;
+ } *rt_ = context->cfa;
+ sc = &rt_->uc.uc_mcontext;
+diff -urN gcc-linaro-4.6-2012.02/gcc/config/pa/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/pa/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/pa/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/pa/linux-unwind.h 2012-09-13 10:27:27.491075173 +0200
+@@ -63,7 +63,7 @@
+ int i;
+ struct sigcontext *sc;
+ struct rt_sigframe {
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *frame;
+
+diff -urN gcc-linaro-4.6-2012.02/gcc/config/sh/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/sh/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/sh/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/sh/linux-unwind.h 2012-09-13 10:27:58.551075969 +0200
+@@ -80,9 +80,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.
+@@ -179,7 +179,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 -urN gcc-linaro-4.6-2012.02/gcc/config/xtensa/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/xtensa/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/xtensa/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/xtensa/linux-unwind.h 2012-09-13 10:28:13.827076359 +0200
+@@ -62,7 +62,7 @@
+ struct sigcontext *sc;
+
+ struct rt_sigframe {
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *rt_;
+
diff --git a/toolchain/gcc/patches/4.6.2/002-siginfo_t.patch b/toolchain/gcc/patches/4.6.2/002-siginfo_t.patch
new file mode 100644
index 000000000..a19b7f221
--- /dev/null
+++ b/toolchain/gcc/patches/4.6.2/002-siginfo_t.patch
@@ -0,0 +1,157 @@
+There is one usage in boehm-gc/os_dep.c, but it is only used if
+SUNOS5SIGS is defined, which it is only if one of SUNOS5, DRSNX, HPUX, or
+FREEBSD is defined, which are all not using Linux-based glibc ports.
+
+Likewise, gcc/ada/init.c has a struct __siginfo occurence, but only for
+__FreeBSD__.
+
+config/rs6000/linux-unwind.h uses ``char siginfo[128]'', and
+config/s390/linux-unwind.h also uses a constant.
+
+I tested the following patch for sh-linux-gnu. This only covers one
+configuration, but the change is pretty mechanic anyway and every place
+that used to refer to struct siginfo already must have had <signal.h> in
+its include path, which is the same file that declares siginfo_t.
+
+OK to commit? This should probably also go into any active release
+branches, to keep them buildable once this glibc change ripples through?
+
+gcc/
+ * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Use
+ siginfo_t instead of struct siginfo.
+ * config/bfin/linux-unwind.h (bfin_fallback_frame_state): Likewise.
+ * config/i386/linux-unwind.h (x86_fallback_frame_state): Likewise.
+ * config/ia64/linux-unwind.h (ia64_fallback_frame_state)
+ (ia64_handle_unwabi): Likewise.
+ * config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise.
+ * config/pa/linux-unwind.h (pa32_fallback_frame_state): Likewise.
+ * config/sh/linux-unwind.h (shmedia_fallback_frame_state)
+ (sh_fallback_frame_state): Likewise.
+ * config/tilepro/linux-unwind.h (tile_fallback_frame_state): Likewise.
+ * config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Likewise.
+
+---
+diff -urN gcc-linaro-4.6-2012.02/gcc/config/alpha/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/alpha/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/alpha/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/alpha/linux-unwind.h 2012-09-13 10:25:52.919072751 +0200
+@@ -49,7 +49,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 -urN gcc-linaro-4.6-2012.02/gcc/config/bfin/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/bfin/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/bfin/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/bfin/linux-unwind.h 2012-09-13 10:26:14.819073313 +0200
+@@ -48,10 +48,10 @@
+ {
+ struct rt_sigframe {
+ int sig;
+- struct siginfo *pinfo;
++ siginfo_t *pinfo;
+ void *puc;
+ char retcode[8];
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *rt_ = context->cfa;
+
+diff -urN gcc-linaro-4.6-2012.02/gcc/config/i386/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/i386/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/i386/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/i386/linux-unwind.h 2012-09-13 10:26:41.891074005 +0200
+@@ -133,9 +133,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 -urN gcc-linaro-4.6-2012.02/gcc/config/ia64/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/ia64/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/ia64/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/ia64/linux-unwind.h 2012-09-13 10:26:59.251074450 +0200
+@@ -47,7 +47,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;
+@@ -137,7 +137,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 -urN gcc-linaro-4.6-2012.02/gcc/config/mips/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/mips/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/mips/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/mips/linux-unwind.h 2012-09-13 10:27:17.947074929 +0200
+@@ -75,7 +75,7 @@
+ struct rt_sigframe {
+ u_int32_t ass[4]; /* Argument save space for o32. */
+ u_int32_t trampoline[2];
+- struct siginfo info;
++ siginfo_t info;
+ _sig_ucontext_t uc;
+ } *rt_ = context->cfa;
+ sc = &rt_->uc.uc_mcontext;
+diff -urN gcc-linaro-4.6-2012.02/gcc/config/pa/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/pa/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/pa/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/pa/linux-unwind.h 2012-09-13 10:27:27.491075173 +0200
+@@ -63,7 +63,7 @@
+ int i;
+ struct sigcontext *sc;
+ struct rt_sigframe {
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *frame;
+
+diff -urN gcc-linaro-4.6-2012.02/gcc/config/sh/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/sh/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/sh/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/sh/linux-unwind.h 2012-09-13 10:27:58.551075969 +0200
+@@ -80,9 +80,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.
+@@ -179,7 +179,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 -urN gcc-linaro-4.6-2012.02/gcc/config/xtensa/linux-unwind.h gcc-linaro-4.6-2012.02.new/gcc/config/xtensa/linux-unwind.h
+--- gcc-linaro-4.6-2012.02/gcc/config/xtensa/linux-unwind.h 2012-02-07 11:33:31.000000000 +0100
++++ gcc-linaro-4.6-2012.02.new/gcc/config/xtensa/linux-unwind.h 2012-09-13 10:28:13.827076359 +0200
+@@ -62,7 +62,7 @@
+ struct sigcontext *sc;
+
+ struct rt_sigframe {
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *rt_;
+
diff --git a/toolchain/gcc/patches/4.7-linaro/003-siginfo_t.patch b/toolchain/gcc/patches/4.7-linaro/003-siginfo_t.patch
new file mode 100644
index 000000000..255ba8d10
--- /dev/null
+++ b/toolchain/gcc/patches/4.7-linaro/003-siginfo_t.patch
@@ -0,0 +1,147 @@
+There is one usage in boehm-gc/os_dep.c, but it is only used if
+SUNOS5SIGS is defined, which it is only if one of SUNOS5, DRSNX, HPUX, or
+FREEBSD is defined, which are all not using Linux-based glibc ports.
+
+Likewise, gcc/ada/init.c has a struct __siginfo occurence, but only for
+__FreeBSD__.
+
+config/rs6000/linux-unwind.h uses ``char siginfo[128]'', and
+config/s390/linux-unwind.h also uses a constant.
+
+I tested the following patch for sh-linux-gnu. This only covers one
+configuration, but the change is pretty mechanic anyway and every place
+that used to refer to struct siginfo already must have had <signal.h> in
+its include path, which is the same file that declares siginfo_t.
+
+OK to commit? This should probably also go into any active release
+branches, to keep them buildable once this glibc change ripples through?
+
+libgcc/
+ * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Use
+ siginfo_t instead of struct siginfo.
+ * config/bfin/linux-unwind.h (bfin_fallback_frame_state): Likewise.
+ * config/i386/linux-unwind.h (x86_fallback_frame_state): Likewise.
+ * config/ia64/linux-unwind.h (ia64_fallback_frame_state)
+ (ia64_handle_unwabi): Likewise.
+ * config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise.
+ * config/pa/linux-unwind.h (pa32_fallback_frame_state): Likewise.
+ * config/sh/linux-unwind.h (shmedia_fallback_frame_state)
+ (sh_fallback_frame_state): Likewise.
+ * config/tilepro/linux-unwind.h (tile_fallback_frame_state): Likewise.
+ * config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Likewise.
+---
+diff -urN gcc-linaro-4.7-2012.04/libgcc/config/alpha/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/alpha/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/alpha/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/alpha/linux-unwind.h 2012-09-13 14:07:22.307413027 +0200
+@@ -49,7 +49,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 -urN gcc-linaro-4.7-2012.04/libgcc/config/bfin/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/bfin/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/bfin/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/bfin/linux-unwind.h 2012-09-13 14:07:36.343413388 +0200
+@@ -48,10 +48,10 @@
+ {
+ struct rt_sigframe {
+ int sig;
+- struct siginfo *pinfo;
++ siginfo_t *pinfo;
+ void *puc;
+ char retcode[8];
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *rt_ = context->cfa;
+
+diff -urN gcc-linaro-4.7-2012.04/libgcc/config/i386/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/i386/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/i386/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/i386/linux-unwind.h 2012-09-13 14:07:49.147413712 +0200
+@@ -139,9 +139,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 -urN gcc-linaro-4.7-2012.04/libgcc/config/mips/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/mips/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/mips/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/mips/linux-unwind.h 2012-09-13 14:08:43.007415091 +0200
+@@ -75,7 +75,7 @@
+ struct rt_sigframe {
+ u_int32_t ass[4]; /* Argument save space for o32. */
+ u_int32_t trampoline[2];
+- struct siginfo info;
++ siginfo_t info;
+ _sig_ucontext_t uc;
+ } *rt_ = context->cfa;
+ sc = &rt_->uc.uc_mcontext;
+diff -urN gcc-linaro-4.7-2012.04/libgcc/config/pa/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/pa/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/pa/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/pa/linux-unwind.h 2012-09-13 14:08:54.335415383 +0200
+@@ -63,7 +63,7 @@
+ int i;
+ struct sigcontext *sc;
+ struct rt_sigframe {
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *frame;
+
+diff -urN gcc-linaro-4.7-2012.04/libgcc/config/sh/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/sh/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/sh/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/sh/linux-unwind.h 2012-09-13 14:09:12.383415847 +0200
+@@ -80,9 +80,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.
+@@ -179,7 +179,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 -urN gcc-linaro-4.7-2012.04/libgcc/config/tilepro/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/tilepro/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/tilepro/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/tilepro/linux-unwind.h 2012-09-13 14:09:28.907416268 +0200
+@@ -61,7 +61,7 @@
+
+ struct rt_sigframe {
+ unsigned char save_area[C_ABI_SAVE_AREA_SIZE];
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *rt_;
+
+diff -urN gcc-linaro-4.7-2012.04/libgcc/config/xtensa/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/xtensa/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/xtensa/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/xtensa/linux-unwind.h 2012-09-13 14:09:41.399416587 +0200
+@@ -62,7 +62,7 @@
+ struct sigcontext *sc;
+
+ struct rt_sigframe {
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *rt_;
+
diff --git a/toolchain/gcc/patches/4.7.0/003-siginfo_t.patch b/toolchain/gcc/patches/4.7.0/003-siginfo_t.patch
new file mode 100644
index 000000000..255ba8d10
--- /dev/null
+++ b/toolchain/gcc/patches/4.7.0/003-siginfo_t.patch
@@ -0,0 +1,147 @@
+There is one usage in boehm-gc/os_dep.c, but it is only used if
+SUNOS5SIGS is defined, which it is only if one of SUNOS5, DRSNX, HPUX, or
+FREEBSD is defined, which are all not using Linux-based glibc ports.
+
+Likewise, gcc/ada/init.c has a struct __siginfo occurence, but only for
+__FreeBSD__.
+
+config/rs6000/linux-unwind.h uses ``char siginfo[128]'', and
+config/s390/linux-unwind.h also uses a constant.
+
+I tested the following patch for sh-linux-gnu. This only covers one
+configuration, but the change is pretty mechanic anyway and every place
+that used to refer to struct siginfo already must have had <signal.h> in
+its include path, which is the same file that declares siginfo_t.
+
+OK to commit? This should probably also go into any active release
+branches, to keep them buildable once this glibc change ripples through?
+
+libgcc/
+ * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Use
+ siginfo_t instead of struct siginfo.
+ * config/bfin/linux-unwind.h (bfin_fallback_frame_state): Likewise.
+ * config/i386/linux-unwind.h (x86_fallback_frame_state): Likewise.
+ * config/ia64/linux-unwind.h (ia64_fallback_frame_state)
+ (ia64_handle_unwabi): Likewise.
+ * config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise.
+ * config/pa/linux-unwind.h (pa32_fallback_frame_state): Likewise.
+ * config/sh/linux-unwind.h (shmedia_fallback_frame_state)
+ (sh_fallback_frame_state): Likewise.
+ * config/tilepro/linux-unwind.h (tile_fallback_frame_state): Likewise.
+ * config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Likewise.
+---
+diff -urN gcc-linaro-4.7-2012.04/libgcc/config/alpha/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/alpha/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/alpha/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/alpha/linux-unwind.h 2012-09-13 14:07:22.307413027 +0200
+@@ -49,7 +49,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 -urN gcc-linaro-4.7-2012.04/libgcc/config/bfin/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/bfin/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/bfin/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/bfin/linux-unwind.h 2012-09-13 14:07:36.343413388 +0200
+@@ -48,10 +48,10 @@
+ {
+ struct rt_sigframe {
+ int sig;
+- struct siginfo *pinfo;
++ siginfo_t *pinfo;
+ void *puc;
+ char retcode[8];
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *rt_ = context->cfa;
+
+diff -urN gcc-linaro-4.7-2012.04/libgcc/config/i386/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/i386/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/i386/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/i386/linux-unwind.h 2012-09-13 14:07:49.147413712 +0200
+@@ -139,9 +139,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 -urN gcc-linaro-4.7-2012.04/libgcc/config/mips/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/mips/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/mips/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/mips/linux-unwind.h 2012-09-13 14:08:43.007415091 +0200
+@@ -75,7 +75,7 @@
+ struct rt_sigframe {
+ u_int32_t ass[4]; /* Argument save space for o32. */
+ u_int32_t trampoline[2];
+- struct siginfo info;
++ siginfo_t info;
+ _sig_ucontext_t uc;
+ } *rt_ = context->cfa;
+ sc = &rt_->uc.uc_mcontext;
+diff -urN gcc-linaro-4.7-2012.04/libgcc/config/pa/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/pa/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/pa/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/pa/linux-unwind.h 2012-09-13 14:08:54.335415383 +0200
+@@ -63,7 +63,7 @@
+ int i;
+ struct sigcontext *sc;
+ struct rt_sigframe {
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *frame;
+
+diff -urN gcc-linaro-4.7-2012.04/libgcc/config/sh/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/sh/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/sh/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/sh/linux-unwind.h 2012-09-13 14:09:12.383415847 +0200
+@@ -80,9 +80,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.
+@@ -179,7 +179,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 -urN gcc-linaro-4.7-2012.04/libgcc/config/tilepro/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/tilepro/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/tilepro/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/tilepro/linux-unwind.h 2012-09-13 14:09:28.907416268 +0200
+@@ -61,7 +61,7 @@
+
+ struct rt_sigframe {
+ unsigned char save_area[C_ABI_SAVE_AREA_SIZE];
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *rt_;
+
+diff -urN gcc-linaro-4.7-2012.04/libgcc/config/xtensa/linux-unwind.h gcc-linaro-4.7-2012.04.new/libgcc/config/xtensa/linux-unwind.h
+--- gcc-linaro-4.7-2012.04/libgcc/config/xtensa/linux-unwind.h 2012-04-10 11:54:47.000000000 +0200
++++ gcc-linaro-4.7-2012.04.new/libgcc/config/xtensa/linux-unwind.h 2012-09-13 14:09:41.399416587 +0200
+@@ -62,7 +62,7 @@
+ struct sigcontext *sc;
+
+ struct rt_sigframe {
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *rt_;
+