Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[gcc] Fix build issue with glibc 2.27. Contributes to JB#45152
  • Loading branch information
xfade committed Mar 20, 2019
1 parent 7f5bc8e commit 89067af
Show file tree
Hide file tree
Showing 14 changed files with 217 additions and 0 deletions.
2 changes: 2 additions & 0 deletions cross-aarch64-gcc.spec
Expand Up @@ -203,6 +203,7 @@ Patch17: gcc49-pr64336.patch
Patch20: gcc48-x86_64-nolib64.patch

Patch51: use-lib-for-aarch64.patch
Patch52: gcc49-glibc227.patch

Patch9999: gcc44-ARM-boehm-gc-stack-qemu.patch

Expand Down Expand Up @@ -603,6 +604,7 @@ not stable, so plugins must be rebuilt any time GCC is updated.

#%patch50 -p1
%patch51 -p1
%patch52 -p1

# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
Expand Down
2 changes: 2 additions & 0 deletions cross-armv5tel-gcc.spec
Expand Up @@ -203,6 +203,7 @@ Patch17: gcc49-pr64336.patch
Patch20: gcc48-x86_64-nolib64.patch

Patch51: use-lib-for-aarch64.patch
Patch52: gcc49-glibc227.patch

Patch9999: gcc44-ARM-boehm-gc-stack-qemu.patch

Expand Down Expand Up @@ -603,6 +604,7 @@ not stable, so plugins must be rebuilt any time GCC is updated.

#%patch50 -p1
%patch51 -p1
%patch52 -p1

# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
Expand Down
2 changes: 2 additions & 0 deletions cross-armv6l-gcc.spec
Expand Up @@ -203,6 +203,7 @@ Patch17: gcc49-pr64336.patch
Patch20: gcc48-x86_64-nolib64.patch

Patch51: use-lib-for-aarch64.patch
Patch52: gcc49-glibc227.patch

Patch9999: gcc44-ARM-boehm-gc-stack-qemu.patch

Expand Down Expand Up @@ -603,6 +604,7 @@ not stable, so plugins must be rebuilt any time GCC is updated.

#%patch50 -p1
%patch51 -p1
%patch52 -p1

# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
Expand Down
2 changes: 2 additions & 0 deletions cross-armv7hl-gcc.spec
Expand Up @@ -203,6 +203,7 @@ Patch17: gcc49-pr64336.patch
Patch20: gcc48-x86_64-nolib64.patch

Patch51: use-lib-for-aarch64.patch
Patch52: gcc49-glibc227.patch

Patch9999: gcc44-ARM-boehm-gc-stack-qemu.patch

Expand Down Expand Up @@ -603,6 +604,7 @@ not stable, so plugins must be rebuilt any time GCC is updated.

#%patch50 -p1
%patch51 -p1
%patch52 -p1

# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
Expand Down
2 changes: 2 additions & 0 deletions cross-armv7l-gcc.spec
Expand Up @@ -203,6 +203,7 @@ Patch17: gcc49-pr64336.patch
Patch20: gcc48-x86_64-nolib64.patch

Patch51: use-lib-for-aarch64.patch
Patch52: gcc49-glibc227.patch

Patch9999: gcc44-ARM-boehm-gc-stack-qemu.patch

Expand Down Expand Up @@ -603,6 +604,7 @@ not stable, so plugins must be rebuilt any time GCC is updated.

#%patch50 -p1
%patch51 -p1
%patch52 -p1

# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
Expand Down
2 changes: 2 additions & 0 deletions cross-armv7nhl-gcc.spec
Expand Up @@ -203,6 +203,7 @@ Patch17: gcc49-pr64336.patch
Patch20: gcc48-x86_64-nolib64.patch

Patch51: use-lib-for-aarch64.patch
Patch52: gcc49-glibc227.patch

Patch9999: gcc44-ARM-boehm-gc-stack-qemu.patch

Expand Down Expand Up @@ -603,6 +604,7 @@ not stable, so plugins must be rebuilt any time GCC is updated.

#%patch50 -p1
%patch51 -p1
%patch52 -p1

# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
Expand Down
2 changes: 2 additions & 0 deletions cross-armv7thl-gcc.spec
Expand Up @@ -203,6 +203,7 @@ Patch17: gcc49-pr64336.patch
Patch20: gcc48-x86_64-nolib64.patch

Patch51: use-lib-for-aarch64.patch
Patch52: gcc49-glibc227.patch

Patch9999: gcc44-ARM-boehm-gc-stack-qemu.patch

Expand Down Expand Up @@ -603,6 +604,7 @@ not stable, so plugins must be rebuilt any time GCC is updated.

#%patch50 -p1
%patch51 -p1
%patch52 -p1

# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
Expand Down
2 changes: 2 additions & 0 deletions cross-armv7tnhl-gcc.spec
Expand Up @@ -203,6 +203,7 @@ Patch17: gcc49-pr64336.patch
Patch20: gcc48-x86_64-nolib64.patch

Patch51: use-lib-for-aarch64.patch
Patch52: gcc49-glibc227.patch

Patch9999: gcc44-ARM-boehm-gc-stack-qemu.patch

Expand Down Expand Up @@ -603,6 +604,7 @@ not stable, so plugins must be rebuilt any time GCC is updated.

#%patch50 -p1
%patch51 -p1
%patch52 -p1

# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
Expand Down
2 changes: 2 additions & 0 deletions cross-i486-gcc.spec
Expand Up @@ -203,6 +203,7 @@ Patch17: gcc49-pr64336.patch
Patch20: gcc48-x86_64-nolib64.patch

Patch51: use-lib-for-aarch64.patch
Patch52: gcc49-glibc227.patch

Patch9999: gcc44-ARM-boehm-gc-stack-qemu.patch

Expand Down Expand Up @@ -603,6 +604,7 @@ not stable, so plugins must be rebuilt any time GCC is updated.

#%patch50 -p1
%patch51 -p1
%patch52 -p1

# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
Expand Down
2 changes: 2 additions & 0 deletions cross-mipsel-gcc.spec
Expand Up @@ -203,6 +203,7 @@ Patch17: gcc49-pr64336.patch
Patch20: gcc48-x86_64-nolib64.patch

Patch51: use-lib-for-aarch64.patch
Patch52: gcc49-glibc227.patch

Patch9999: gcc44-ARM-boehm-gc-stack-qemu.patch

Expand Down Expand Up @@ -603,6 +604,7 @@ not stable, so plugins must be rebuilt any time GCC is updated.

#%patch50 -p1
%patch51 -p1
%patch52 -p1

# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
Expand Down
2 changes: 2 additions & 0 deletions cross-x86_64-gcc.spec
Expand Up @@ -203,6 +203,7 @@ Patch17: gcc49-pr64336.patch
Patch20: gcc48-x86_64-nolib64.patch

Patch51: use-lib-for-aarch64.patch
Patch52: gcc49-glibc227.patch

Patch9999: gcc44-ARM-boehm-gc-stack-qemu.patch

Expand Down Expand Up @@ -603,6 +604,7 @@ not stable, so plugins must be rebuilt any time GCC is updated.

#%patch50 -p1
%patch51 -p1
%patch52 -p1

# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
Expand Down
3 changes: 3 additions & 0 deletions gcc.changes
@@ -1,3 +1,6 @@
* Wed Mar 20 2019 Niels Breet <niels.breet@jolla.com> - 4.9.4-5
- Fix build issue with glibc 2.27. Contributes to JB#45152

* Mon Feb 25 2019 Niels Breet <niels.breet@jolla.com> - 4.9.4-4
- Disable lto for cross build for now. Fixes JB#44936

Expand Down
2 changes: 2 additions & 0 deletions gcc.spec
Expand Up @@ -202,6 +202,7 @@ Patch17: gcc49-pr64336.patch
Patch20: gcc48-x86_64-nolib64.patch

Patch51: use-lib-for-aarch64.patch
Patch52: gcc49-glibc227.patch

Patch9999: gcc44-ARM-boehm-gc-stack-qemu.patch

Expand Down Expand Up @@ -602,6 +603,7 @@ not stable, so plugins must be rebuilt any time GCC is updated.

#%patch50 -p1
%patch51 -p1
%patch52 -p1

# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
Expand Down
190 changes: 190 additions & 0 deletions gcc49-glibc227.patch
@@ -0,0 +1,190 @@
From b7e85069238c40eae54d0ca03ab6d5470d1815f9 Mon Sep 17 00:00:00 2001
From: jsm28 <jsm28 at 138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Tue, 4 Jul 2017 10:25:10 +0000
Subject: [PATCH] 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.

* config/aarch64/linux-unwind.h (aarch64_fallback_frame_state),
config/alpha/linux-unwind.h (alpha_fallback_frame_state),
config/bfin/linux-unwind.h (bfin_fallback_frame_state),
config/i386/linux-unwind.h (x86_64_fallback_frame_state,
x86_fallback_frame_state), config/m68k/linux-unwind.h (struct
uw_ucontext), config/nios2/linux-unwind.h (struct nios2_ucontext),
config/pa/linux-unwind.h (pa32_fallback_frame_state),
config/sh/linux-unwind.h (sh_fallback_frame_state),
config/tilepro/linux-unwind.h (tile_fallback_frame_state),
config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Use
ucontext_t instead of struct ucontext.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@249958 138bc75d-0d04-0410-961f-82ee72b054a4
[Romain backport from gcc-5-branch]
Signed-off-by: Romain Naour <romain.naour at gmail.com>
---
libgcc/config/aarch64/linux-unwind.h | 2 +-
libgcc/config/alpha/linux-unwind.h | 2 +-
libgcc/config/bfin/linux-unwind.h | 2 +-
libgcc/config/i386/linux-unwind.h | 4 ++--
libgcc/config/m68k/linux-unwind.h | 2 +-
libgcc/config/nios2/linux-unwind.h | 2 +-
libgcc/config/pa/linux-unwind.h | 2 +-
libgcc/config/sh/linux-unwind.h | 2 +-
libgcc/config/tilepro/linux-unwind.h | 2 +-
libgcc/config/xtensa/linux-unwind.h | 2 +-
10 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/libgcc/config/aarch64/linux-unwind.h b/libgcc/config/aarch64/linux-unwind.h
index 6b5b3cd..d13dc34 100644
--- a/libgcc/config/aarch64/linux-unwind.h
+++ b/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/libgcc/config/alpha/linux-unwind.h b/libgcc/config/alpha/linux-unwind.h
index b5bfd1c..166d3d2 100644
--- a/libgcc/config/alpha/linux-unwind.h
+++ b/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/libgcc/config/bfin/linux-unwind.h b/libgcc/config/bfin/linux-unwind.h
index dc58f0a..8b94568 100644
--- a/libgcc/config/bfin/linux-unwind.h
+++ b/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/libgcc/config/i386/linux-unwind.h b/libgcc/config/i386/linux-unwind.h
index 7986928..a9d621c 100644
--- a/libgcc/config/i386/linux-unwind.h
+++ b/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/libgcc/config/m68k/linux-unwind.h b/libgcc/config/m68k/linux-unwind.h
index 1ba2a0c4..d67767e 100644
--- a/libgcc/config/m68k/linux-unwind.h
+++ b/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/libgcc/config/nios2/linux-unwind.h b/libgcc/config/nios2/linux-unwind.h
index ba4bd80..8978868 100644
--- a/libgcc/config/nios2/linux-unwind.h
+++ b/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/libgcc/config/pa/linux-unwind.h b/libgcc/config/pa/linux-unwind.h
index 4a3cfff..d2ac437 100644
--- a/libgcc/config/pa/linux-unwind.h
+++ b/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/libgcc/config/sh/linux-unwind.h b/libgcc/config/sh/linux-unwind.h
index 4875706..671bde7 100644
--- a/libgcc/config/sh/linux-unwind.h
+++ b/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/libgcc/config/tilepro/linux-unwind.h b/libgcc/config/tilepro/linux-unwind.h
index 27481cf..c24d58c 100644
--- a/libgcc/config/tilepro/linux-unwind.h
+++ b/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/libgcc/config/xtensa/linux-unwind.h b/libgcc/config/xtensa/linux-unwind.h
index 6832d0b..cb15b4c 100644
--- a/libgcc/config/xtensa/linux-unwind.h
+++ b/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 */
--
2.9.5

0 comments on commit 89067af

Please sign in to comment.