aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9
diff options
context:
space:
mode:
authorYunlian Jiang <yunlian@chromium.org>2018-04-24 14:24:57 -0700
committerYunlian Jiang <yunlian@google.com>2018-04-24 14:30:04 -0700
commit5669c9914b411b5094532856815b2c4712be4d10 (patch)
tree3f6875baed5d4f6df3cd660fcd31bfe416aadf39 /gcc-4.9
parente46354e85363dbd7ea85492f70af89273881709f (diff)
downloadtoolchain_gcc-5669c9914b411b5094532856815b2c4712be4d10.tar.gz
toolchain_gcc-5669c9914b411b5094532856815b2c4712be4d10.tar.bz2
toolchain_gcc-5669c9914b411b5094532856815b2c4712be4d10.zip
gcc: backport an upstream patch to make it work with newer glibc.
Newer glibc removes 'struct' tag from ucontext_t. Because of this, gcc failed to bootstrap with newer glibc. This patch from upstream fixes that. BUG=chromium:834385 TEST=sudo emerge sys-devel/gcc passes with newer glibc installed. commit 14c2f22a1877f6b60a2f7c2f83ffb032759456a6 Author: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue Jul 4 10:22:56 2017 +0000 Use ucontext_t not struct ucontext in linux-unwind.h files. Current glibc no longer gives the ucontext_t type the tag struct ucontext, to conform with POSIX namespace rules. This requires various linux-unwind.h files in libgcc, that were previously using struct ucontext, to be fixed to use ucontext_t instead. This is similar to the removal of the struct siginfo tag from siginfo_t some years ago. This patch changes those files to use ucontext_t instead. As the standard name that should be unconditionally safe, so this is not restricted to architectures supported by glibc, or conditioned on the glibc version. Tested compilation together with current glibc with glibc's build-many-glibcs.py. Change-Id: I433dd983b8d18c538d96486f7362b953ece3bfb8
Diffstat (limited to 'gcc-4.9')
-rw-r--r--gcc-4.9/libgcc/config/aarch64/linux-unwind.h2
-rw-r--r--gcc-4.9/libgcc/config/alpha/linux-unwind.h2
-rw-r--r--gcc-4.9/libgcc/config/bfin/linux-unwind.h2
-rw-r--r--gcc-4.9/libgcc/config/i386/linux-unwind.h4
-rw-r--r--gcc-4.9/libgcc/config/m68k/linux-unwind.h2
-rw-r--r--gcc-4.9/libgcc/config/nios2/linux-unwind.h2
-rw-r--r--gcc-4.9/libgcc/config/pa/linux-unwind.h2
-rw-r--r--gcc-4.9/libgcc/config/sh/linux-unwind.h2
-rw-r--r--gcc-4.9/libgcc/config/tilepro/linux-unwind.h2
-rw-r--r--gcc-4.9/libgcc/config/xtensa/linux-unwind.h2
10 files changed, 11 insertions, 11 deletions
diff --git a/gcc-4.9/libgcc/config/aarch64/linux-unwind.h b/gcc-4.9/libgcc/config/aarch64/linux-unwind.h
index 6b5b3cd1d..d13dc3482 100644
--- a/gcc-4.9/libgcc/config/aarch64/linux-unwind.h
+++ b/gcc-4.9/libgcc/config/aarch64/linux-unwind.h
@@ -52,7 +52,7 @@ aarch64_fallback_frame_state (struct _Unwind_Context *context,
struct rt_sigframe
{
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
};
struct rt_sigframe *rt_;
diff --git a/gcc-4.9/libgcc/config/alpha/linux-unwind.h b/gcc-4.9/libgcc/config/alpha/linux-unwind.h
index b5bfd1c91..166d3d2cf 100644
--- a/gcc-4.9/libgcc/config/alpha/linux-unwind.h
+++ b/gcc-4.9/libgcc/config/alpha/linux-unwind.h
@@ -51,7 +51,7 @@ alpha_fallback_frame_state (struct _Unwind_Context *context,
{
struct rt_sigframe {
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *rt_ = context->cfa;
sc = &rt_->uc.uc_mcontext;
}
diff --git a/gcc-4.9/libgcc/config/bfin/linux-unwind.h b/gcc-4.9/libgcc/config/bfin/linux-unwind.h
index dc58f0a81..8b94568bb 100644
--- a/gcc-4.9/libgcc/config/bfin/linux-unwind.h
+++ b/gcc-4.9/libgcc/config/bfin/linux-unwind.h
@@ -52,7 +52,7 @@ bfin_fallback_frame_state (struct _Unwind_Context *context,
void *puc;
char retcode[8];
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *rt_ = context->cfa;
/* The void * cast is necessary to avoid an aliasing warning.
diff --git a/gcc-4.9/libgcc/config/i386/linux-unwind.h b/gcc-4.9/libgcc/config/i386/linux-unwind.h
index 7986928cf..a9d621c31 100644
--- a/gcc-4.9/libgcc/config/i386/linux-unwind.h
+++ b/gcc-4.9/libgcc/config/i386/linux-unwind.h
@@ -58,7 +58,7 @@ x86_64_fallback_frame_state (struct _Unwind_Context *context,
if (*(unsigned char *)(pc+0) == 0x48
&& *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL)
{
- struct ucontext *uc_ = context->cfa;
+ ucontext_t *uc_ = context->cfa;
/* The void * cast is necessary to avoid an aliasing warning.
The aliasing warning is correct, but should not be a problem
because it does not alias anything. */
@@ -138,7 +138,7 @@ x86_fallback_frame_state (struct _Unwind_Context *context,
siginfo_t *pinfo;
void *puc;
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *rt_ = context->cfa;
/* The void * cast is necessary to avoid an aliasing warning.
The aliasing warning is correct, but should not be a problem
diff --git a/gcc-4.9/libgcc/config/m68k/linux-unwind.h b/gcc-4.9/libgcc/config/m68k/linux-unwind.h
index 1ba2a0c43..d67767e33 100644
--- a/gcc-4.9/libgcc/config/m68k/linux-unwind.h
+++ b/gcc-4.9/libgcc/config/m68k/linux-unwind.h
@@ -33,7 +33,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* <sys/ucontext.h> is unfortunately broken right now. */
struct uw_ucontext {
unsigned long uc_flags;
- struct ucontext *uc_link;
+ ucontext_t *uc_link;
stack_t uc_stack;
mcontext_t uc_mcontext;
unsigned long uc_filler[80];
diff --git a/gcc-4.9/libgcc/config/nios2/linux-unwind.h b/gcc-4.9/libgcc/config/nios2/linux-unwind.h
index ba4bd801d..897886852 100644
--- a/gcc-4.9/libgcc/config/nios2/linux-unwind.h
+++ b/gcc-4.9/libgcc/config/nios2/linux-unwind.h
@@ -38,7 +38,7 @@ struct nios2_mcontext {
struct nios2_ucontext {
unsigned long uc_flags;
- struct ucontext *uc_link;
+ ucontext_t *uc_link;
stack_t uc_stack;
struct nios2_mcontext uc_mcontext;
sigset_t uc_sigmask; /* mask last for extensibility */
diff --git a/gcc-4.9/libgcc/config/pa/linux-unwind.h b/gcc-4.9/libgcc/config/pa/linux-unwind.h
index 4a3cfffd1..d2ac437a4 100644
--- a/gcc-4.9/libgcc/config/pa/linux-unwind.h
+++ b/gcc-4.9/libgcc/config/pa/linux-unwind.h
@@ -80,7 +80,7 @@ pa32_fallback_frame_state (struct _Unwind_Context *context,
struct sigcontext *sc;
struct rt_sigframe {
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *frame;
/* rt_sigreturn trampoline:
diff --git a/gcc-4.9/libgcc/config/sh/linux-unwind.h b/gcc-4.9/libgcc/config/sh/linux-unwind.h
index 4875706d4..671bde715 100644
--- a/gcc-4.9/libgcc/config/sh/linux-unwind.h
+++ b/gcc-4.9/libgcc/config/sh/linux-unwind.h
@@ -180,7 +180,7 @@ sh_fallback_frame_state (struct _Unwind_Context *context,
{
struct rt_sigframe {
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *rt_ = context->cfa;
/* The void * cast is necessary to avoid an aliasing warning.
The aliasing warning is correct, but should not be a problem
diff --git a/gcc-4.9/libgcc/config/tilepro/linux-unwind.h b/gcc-4.9/libgcc/config/tilepro/linux-unwind.h
index 27481cfcd..c24d58c94 100644
--- a/gcc-4.9/libgcc/config/tilepro/linux-unwind.h
+++ b/gcc-4.9/libgcc/config/tilepro/linux-unwind.h
@@ -61,7 +61,7 @@ tile_fallback_frame_state (struct _Unwind_Context *context,
struct rt_sigframe {
unsigned char save_area[C_ABI_SAVE_AREA_SIZE];
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *rt_;
/* Return if this is not a signal handler. */
diff --git a/gcc-4.9/libgcc/config/xtensa/linux-unwind.h b/gcc-4.9/libgcc/config/xtensa/linux-unwind.h
index 6832d0b48..cb15b4c71 100644
--- a/gcc-4.9/libgcc/config/xtensa/linux-unwind.h
+++ b/gcc-4.9/libgcc/config/xtensa/linux-unwind.h
@@ -63,7 +63,7 @@ xtensa_fallback_frame_state (struct _Unwind_Context *context,
struct rt_sigframe {
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *rt_;
/* movi a2, __NR_rt_sigreturn; syscall */