libstdc++5: Add patch to fix type for ucontext_t
Since glibc 2.26, struct ucontext no longer exists but is wrapped in a
typedef ucontext_t.
This is basically a backport of the patch to gcc version 4.5 which was
introduced by @vcunat in f04b64c1e9
.
Building against x86_64-linux and i686-linux now succeeds.
Signed-off-by: aszlig <aszlig@nix.build>
Cc: @abbradar
This commit is contained in:
parent
4cb8c5dc3c
commit
a2045e029a
@ -29,6 +29,8 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "11m5lc51b0addhc4yq4rz0dwpv6k73rrj73wya3lqdk8rly6cjpm";
|
||||
addPrefixes = true;
|
||||
})
|
||||
# Required because of glibc 2.26
|
||||
./struct-ucontext.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
|
61
pkgs/development/libraries/libstdc++5/struct-ucontext.patch
Normal file
61
pkgs/development/libraries/libstdc++5/struct-ucontext.patch
Normal file
@ -0,0 +1,61 @@
|
||||
diff --git a/gcc/config/alpha/linux.h b/gcc/config/alpha/linux.h
|
||||
index 3a2940c..67f9899 100644
|
||||
--- a/gcc/config/alpha/linux.h
|
||||
+++ b/gcc/config/alpha/linux.h
|
||||
@@ -89,7 +89,7 @@ Boston, MA 02111-1307, USA. */
|
||||
{ \
|
||||
struct rt_sigframe { \
|
||||
struct siginfo info; \
|
||||
- struct ucontext uc; \
|
||||
+ ucontext_t uc; \
|
||||
} *rt_ = (CONTEXT)->cfa; \
|
||||
sc_ = &rt_->uc.uc_mcontext; \
|
||||
} \
|
||||
diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h
|
||||
index e86ab3d..30797a7 100644
|
||||
--- a/gcc/config/i386/linux.h
|
||||
+++ b/gcc/config/i386/linux.h
|
||||
@@ -260,7 +260,7 @@ Boston, MA 02111-1307, USA. */
|
||||
siginfo_t *pinfo; \
|
||||
void *puc; \
|
||||
siginfo_t info; \
|
||||
- struct ucontext uc; \
|
||||
+ ucontext_t uc; \
|
||||
} *rt_ = (CONTEXT)->cfa; \
|
||||
sc_ = (struct sigcontext *) &rt_->uc.uc_mcontext; \
|
||||
} \
|
||||
diff --git a/gcc/config/i386/linux64.h b/gcc/config/i386/linux64.h
|
||||
index fbfaa58..200c8dc 100644
|
||||
--- a/gcc/config/i386/linux64.h
|
||||
+++ b/gcc/config/i386/linux64.h
|
||||
@@ -112,7 +112,7 @@ Boston, MA 02111-1307, USA. */
|
||||
if (*(unsigned char *)(pc_+0) == 0x48 \
|
||||
&& *(unsigned long *)(pc_+1) == 0x050f0000000fc0c7) \
|
||||
{ \
|
||||
- struct ucontext *uc_ = (CONTEXT)->cfa; \
|
||||
+ ucontext_t *uc_ = (CONTEXT)->cfa; \
|
||||
sc_ = (struct sigcontext *) &uc_->uc_mcontext; \
|
||||
} \
|
||||
else \
|
||||
@@ -182,7 +182,7 @@ Boston, MA 02111-1307, USA. */
|
||||
struct siginfo *pinfo; \
|
||||
void *puc; \
|
||||
struct siginfo info; \
|
||||
- struct ucontext uc; \
|
||||
+ ucontext_t uc; \
|
||||
} *rt_ = (CONTEXT)->cfa; \
|
||||
sc_ = (struct sigcontext *) &rt_->uc.uc_mcontext; \
|
||||
} \
|
||||
diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h
|
||||
index ba70ec1..0fff8b1 100644
|
||||
--- a/gcc/config/rs6000/linux.h
|
||||
+++ b/gcc/config/rs6000/linux.h
|
||||
@@ -101,7 +101,7 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
struct kernel_old_ucontext {
|
||||
unsigned long uc_flags;
|
||||
- struct ucontext *uc_link;
|
||||
+ ucontext_t *uc_link;
|
||||
stack_t uc_stack;
|
||||
struct sigcontext_struct uc_mcontext;
|
||||
sigset_t uc_sigmask;
|
Loading…
Reference in New Issue
Block a user