aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain/gcc/patches/4.6.3/002-siginfo_t.patch
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain/gcc/patches/4.6.3/002-siginfo_t.patch')
-rw-r--r--toolchain/gcc/patches/4.6.3/002-siginfo_t.patch149
1 files changed, 149 insertions, 0 deletions
diff --git a/toolchain/gcc/patches/4.6.3/002-siginfo_t.patch b/toolchain/gcc/patches/4.6.3/002-siginfo_t.patch
new file mode 100644
index 0000000..5fc29bb
--- /dev/null
+++ b/toolchain/gcc/patches/4.6.3/002-siginfo_t.patch
@@ -0,0 +1,149 @@
+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.
+
+---
+--- a/gcc/config/alpha/linux-unwind.h
++++ b/gcc/config/alpha/linux-unwind.h
+@@ -49,7 +49,7 @@ alpha_fallback_frame_state (struct _Unwi
+ 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;
+--- a/gcc/config/bfin/linux-unwind.h
++++ b/gcc/config/bfin/linux-unwind.h
+@@ -48,10 +48,10 @@ bfin_fallback_frame_state (struct _Unwin
+ {
+ 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;
+
+--- a/gcc/config/i386/linux-unwind.h
++++ b/gcc/config/i386/linux-unwind.h
+@@ -133,9 +133,9 @@ x86_fallback_frame_state (struct _Unwind
+ {
+ 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.
+--- a/gcc/config/ia64/linux-unwind.h
++++ b/gcc/config/ia64/linux-unwind.h
+@@ -47,7 +47,7 @@ ia64_fallback_frame_state (struct _Unwin
+ 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 @@ ia64_handle_unwabi (struct _Unwind_Conte
+ 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;
+--- a/gcc/config/mips/linux-unwind.h
++++ b/gcc/config/mips/linux-unwind.h
+@@ -75,7 +75,7 @@ mips_fallback_frame_state (struct _Unwin
+ 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;
+--- a/gcc/config/pa/linux-unwind.h
++++ b/gcc/config/pa/linux-unwind.h
+@@ -63,7 +63,7 @@ pa32_fallback_frame_state (struct _Unwin
+ int i;
+ struct sigcontext *sc;
+ struct rt_sigframe {
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *frame;
+
+--- a/gcc/config/sh/linux-unwind.h
++++ b/gcc/config/sh/linux-unwind.h
+@@ -80,9 +80,9 @@ shmedia_fallback_frame_state (struct _Un
+ && (*(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 @@ sh_fallback_frame_state (struct _Unwind_
+ && (*(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.
+--- a/gcc/config/xtensa/linux-unwind.h
++++ b/gcc/config/xtensa/linux-unwind.h
+@@ -62,7 +62,7 @@ xtensa_fallback_frame_state (struct _Unw
+ struct sigcontext *sc;
+
+ struct rt_sigframe {
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ } *rt_;
+