From 5f638a4e535e1e384fe7c91b9874893e0a6e972a Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 29 Jan 2013 11:44:08 +0100 Subject: [PATCH] gcc-4.4: Fix build http://hydra.nixos.org/build/3896514 --- .../development/compilers/gcc/4.4/default.nix | 19 +- .../compilers/gcc/4.4/siginfo_t_fix.patch | 174 ++++++++++++++++++ 2 files changed, 185 insertions(+), 8 deletions(-) create mode 100644 pkgs/development/compilers/gcc/4.4/siginfo_t_fix.patch diff --git a/pkgs/development/compilers/gcc/4.4/default.nix b/pkgs/development/compilers/gcc/4.4/default.nix index 804a797bac12..60e7baa77812 100644 --- a/pkgs/development/compilers/gcc/4.4/default.nix +++ b/pkgs/development/compilers/gcc/4.4/default.nix @@ -104,16 +104,19 @@ stdenv.mkDerivation ({ }; patches = - [./pass-cxxcpp.patch + [ ./pass-cxxcpp.patch - # libmudflap and libstdc++ receive the build CPP, - # and not the target. - # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42279 - ./target-cpp.patch + # libmudflap and libstdc++ receive the build CPP, + # and not the target. + # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42279 + ./target-cpp.patch - # Bad mixture of build/target flags - ./libstdc++-target.patch - ] + # Bad mixture of build/target flags + ./libstdc++-target.patch + + # Compatibility with newer Glibc. + ./siginfo_t_fix.patch + ] ++ optional noSysDirs ./no-sys-dirs.patch # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its # target libraries and tools. diff --git a/pkgs/development/compilers/gcc/4.4/siginfo_t_fix.patch b/pkgs/development/compilers/gcc/4.4/siginfo_t_fix.patch new file mode 100644 index 000000000000..8b126cd08c36 --- /dev/null +++ b/pkgs/development/compilers/gcc/4.4/siginfo_t_fix.patch @@ -0,0 +1,174 @@ +https://bugs.gentoo.org/424970 + +fix from upstream for building with newer glibc versions + +From f0cdca2bf2230005025e13e7354fedb612933c96 Mon Sep 17 00:00:00 2001 +From: tschwinge +Date: Fri, 20 Apr 2012 08:14:00 +0000 +Subject: [PATCH] struct siginfo vs. siginfo_t + + Backport from trunk (but apply to gcc/): + + 2012-04-20 Thomas Schwinge + +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/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Likewise. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_5-branch@186613 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/ChangeLog | 20 ++++++++++++++++++++ + gcc/config/alpha/linux-unwind.h | 4 ++-- + gcc/config/bfin/linux-unwind.h | 6 +++--- + gcc/config/i386/linux-unwind.h | 6 +++--- + gcc/config/ia64/linux-unwind.h | 6 +++--- + gcc/config/mips/linux-unwind.h | 5 +++-- + gcc/config/pa/linux-unwind.h | 4 ++-- + gcc/config/sh/linux-unwind.h | 9 +++++---- + gcc/config/xtensa/linux-unwind.h | 4 ++-- + 9 files changed, 43 insertions(+), 21 deletions(-) + +diff --git a/gcc/config/alpha/linux-unwind.h b/gcc/config/alpha/linux-unwind.h +index 4c811dc..8c04b3b 100644 +--- a/gcc/config/alpha/linux-unwind.h ++++ b/gcc/config/alpha/linux-unwind.h +@@ -49,7 +49,7 @@ alpha_fallback_frame_state (struct _Unwind_Context *context, + 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 --git a/gcc/config/bfin/linux-unwind.h b/gcc/config/bfin/linux-unwind.h +index 88c8285..15bb2f1 100644 +--- a/gcc/config/bfin/linux-unwind.h ++++ b/gcc/config/bfin/linux-unwind.h +@@ -48,10 +48,10 @@ bfin_fallback_frame_state (struct _Unwind_Context *context, + { + 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 --git a/gcc/config/i386/linux-unwind.h b/gcc/config/i386/linux-unwind.h +index 36ee370..fe0ea3e 100644 +--- a/gcc/config/i386/linux-unwind.h ++++ b/gcc/config/i386/linux-unwind.h +@@ -133,9 +133,9 @@ x86_fallback_frame_state (struct _Unwind_Context *context, + { + 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 --git a/gcc/config/ia64/linux-unwind.h b/gcc/config/ia64/linux-unwind.h +index 93f762d..da31259 100644 +--- a/gcc/config/ia64/linux-unwind.h ++++ b/gcc/config/ia64/linux-unwind.h +@@ -47,7 +47,7 @@ ia64_fallback_frame_state (struct _Unwind_Context *context, + 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_Context *context, _Unwind_FrameState *fs) + 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 --git a/gcc/config/mips/linux-unwind.h b/gcc/config/mips/linux-unwind.h +index 02f7cd5..094ff58 100644 +--- a/gcc/config/mips/linux-unwind.h ++++ b/gcc/config/mips/linux-unwind.h +@@ -75,7 +76,7 @@ mips_fallback_frame_state (struct _Unwind_Context *context, + 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 --git a/gcc/config/pa/linux-unwind.h b/gcc/config/pa/linux-unwind.h +index a0560e9..38b4eda 100644 +--- a/gcc/config/pa/linux-unwind.h ++++ b/gcc/config/pa/linux-unwind.h +@@ -63,7 +63,7 @@ pa32_fallback_frame_state (struct _Unwind_Context *context, + int i; + struct sigcontext *sc; + struct rt_sigframe { +- struct siginfo info; ++ siginfo_t info; + struct ucontext uc; + } *frame; + +diff --git a/gcc/config/sh/linux-unwind.h b/gcc/config/sh/linux-unwind.h +index 94ed95d..5a78e31 100644 +--- a/gcc/config/sh/linux-unwind.h ++++ b/gcc/config/sh/linux-unwind.h +@@ -80,9 +81,9 @@ shmedia_fallback_frame_state (struct _Unwind_Context *context, + && (*(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 +180,7 @@ sh_fallback_frame_state (struct _Unwind_Context *context, + && (*(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 --git a/gcc/config/xtensa/linux-unwind.h b/gcc/config/xtensa/linux-unwind.h +index 32e9349..2456497 100644 +--- a/gcc/config/xtensa/linux-unwind.h ++++ b/gcc/config/xtensa/linux-unwind.h +@@ -62,7 +62,7 @@ xtensa_fallback_frame_state (struct _Unwind_Context *context, + struct sigcontext *sc; + + struct rt_sigframe { +- struct siginfo info; ++ siginfo_t info; + struct ucontext uc; + } *rt_; + +-- +1.7.9.7 +