tool_chain: update GCC to version 4.7.4

Fixes #1051.
This commit is contained in:
Christian Prochaska 2014-11-15 20:22:20 +01:00 committed by Christian Helmuth
parent 0b194c9689
commit 2583aa2ab4
21 changed files with 171 additions and 576 deletions

View File

@ -1 +1 @@
d0f2d11c5b5586039b6cd9415d1da9b773a24b6e
fadf4f6ba436fe4846572f00bf057c5ef290c25b

View File

@ -1,9 +1,9 @@
LICENSE := LGPL
VERSION := 4.7.2
VERSION := 4.7.4
DOWNLOADS := gcc.archive
URL(gcc) := ftp://ftp.fu-berlin.de/gnu/gcc/gcc-$(VERSION)/gcc-$(VERSION).tar.bz2
SHA(gcc) := a464ba0f26eef24c29bcd1e7489421117fb9ee35
SHA(gcc) := f3359a157b3536f289c155363f1736a2c9b414db
DIR(gcc) := src/lib/stdcxx
SIG(gcc) := ${URL(gcc)}
KEY(gcc) := GNU

View File

@ -1 +1 @@
92324ff98eeba762558097eeb8568980fe410d32
e4777031d6e3087020f16e75f4cba0214457db5f

View File

@ -1,9 +1,9 @@
LICENSE := GPLv3
VERSION := 4.7.2
VERSION := 4.7.4
DOWNLOADS := gcc.archive
URL(gcc) := ftp://ftp.fu-berlin.de/gnu/gcc/gcc-$(VERSION)/gcc-$(VERSION).tar.gz
SHA(gcc) := 39b5662c4bdffa8d8b8f31f61764de2a9e3b69b0
URL(gcc) := ftp://ftp.fu-berlin.de/gnu/gcc/gcc-$(VERSION)/gcc-$(VERSION).tar.bz2
SHA(gcc) := f3359a157b3536f289c155363f1736a2c9b414db
SIG(gcc) := ${URL(gcc)}.sig
KEY(gcc) := GNU
DIR(gcc) := src/noux-pkg/gcc

View File

@ -1,140 +0,0 @@
host_target_combination.patch
From: Christian Prochaska <christian.prochaska@genode-labs.com>
Remove sanity check for host/target combination in configure script of
libstdc++. An alternative fix would be the addition of a new host or
the use of an existing one. However, adding a new host would require
us to maintain a larger patch to the GCC build system, and using an
existing host comes with all the (possibly unwanted) policies associated
with the respective host platform. We want to stick with the bare-bone
compiler as much as possible.
---
libstdc++-v3/configure | 24 +++++++++++-------------
libstdc++-v3/crossconfig.m4 | 1 -
2 files changed, 11 insertions(+), 14 deletions(-)
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 0e9e28a..5a9f1ee 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -3025,8 +3025,7 @@ test -n "$target_alias" &&
target_alias=${target_alias-$host_alias}
# Handy for debugging:
-{ $as_echo "$as_me:${as_lineno-$LINENO}: $build / $host / $target / $host_alias / $target_alias" >&5
-$as_echo "$as_me: $build / $host / $target / $host_alias / $target_alias" >&6;}; sleep 5
+#AC_MSG_NOTICE($build / $host / $target / $host_alias / $target_alias); sleep 5
if test "$build" != "$host"; then
# We are being configured with some form of cross compiler.
@@ -11498,7 +11497,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11501 "configure"
+#line 11500 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11604,7 +11603,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11607 "configure"
+#line 11606 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -14962,7 +14961,7 @@ fi
#
# Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style.
cat > conftest.$ac_ext << EOF
-#line 14965 "configure"
+#line 14964 "configure"
struct S { ~S(); };
void bar();
void foo()
@@ -15297,7 +15296,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; }
# Fake what AC_TRY_COMPILE does.
cat > conftest.$ac_ext << EOF
-#line 15300 "configure"
+#line 15299 "configure"
int main()
{
typedef bool atomic_type;
@@ -15332,7 +15331,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15335 "configure"
+#line 15334 "configure"
int main()
{
typedef short atomic_type;
@@ -15367,7 +15366,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15370 "configure"
+#line 15369 "configure"
int main()
{
// NB: _Atomic_word not necessarily int.
@@ -15403,7 +15402,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15406 "configure"
+#line 15405 "configure"
int main()
{
typedef long long atomic_type;
@@ -15482,7 +15481,7 @@ $as_echo "$as_me: WARNING: Performance of certain classes will degrade as a resu
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
-#line 15485 "configure"
+#line 15484 "configure"
int main()
{
_Decimal32 d1;
@@ -15524,7 +15523,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
-#line 15527 "configure"
+#line 15526 "configure"
template<typename T1, typename T2>
struct same
{ typedef T2 type; };
@@ -15558,7 +15557,7 @@ $as_echo "$enable_int128" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15561 "configure"
+#line 15560 "configure"
template<typename T1, typename T2>
struct same
{ typedef T2 type; };
@@ -64099,7 +64098,6 @@ $as_echo "$ac_ld_relro" >&6; }
;;
*)
- as_fn_error "No support for this host/target combination." "$LINENO" 5
;;
esac
diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4
index 361ed0b..98d68ec 100644
--- a/libstdc++-v3/crossconfig.m4
+++ b/libstdc++-v3/crossconfig.m4
@@ -264,7 +264,6 @@ case "${host}" in
AC_DEFINE(HAVE_TANHF)
;;
*)
- AC_MSG_ERROR([No support for this host/target combination.])
;;
esac
])

View File

@ -1,115 +0,0 @@
From 1b2b17188549c2a8ad3d60eaeacc8ae025ed59cf Mon Sep 17 00:00:00 2001
From: Martin Stein <martin.stein@genode-labs.com>
Date: Mon, 25 Nov 2013 15:07:16 +0100
Subject: [PATCH] fix errors with makeinfo
---
gcc/doc/cppopts.texi | 2 +-
gcc/doc/generic.texi | 4 ++--
gcc/doc/invoke.texi | 16 ++++++++--------
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/gcc/doc/cppopts.texi b/gcc/doc/cppopts.texi
index 205d870..a1b66a2 100644
--- a/gcc/doc/cppopts.texi
+++ b/gcc/doc/cppopts.texi
@@ -803,7 +803,7 @@ Replacement: [ ] @{ @} # \ ^ | ~
Enable special code to work around file systems which only permit very
short file names, such as MS-DOS@.
-@itemx --help
+@item --help
@itemx --target-help
@opindex help
@opindex target-help
diff --git a/gcc/doc/generic.texi b/gcc/doc/generic.texi
index 31e8855..261ea23 100644
--- a/gcc/doc/generic.texi
+++ b/gcc/doc/generic.texi
@@ -1415,13 +1415,13 @@ generate these expressions anyhow, if it can tell that strictness does
not matter. The type of the operands and that of the result are
always of @code{BOOLEAN_TYPE} or @code{INTEGER_TYPE}.
-@itemx POINTER_PLUS_EXPR
+@item POINTER_PLUS_EXPR
This node represents pointer arithmetic. The first operand is always
a pointer/reference type. The second operand is always an unsigned
integer type compatible with sizetype. This is the only binary
arithmetic operand that can operate on pointer types.
-@itemx PLUS_EXPR
+@item PLUS_EXPR
@itemx MINUS_EXPR
@itemx MULT_EXPR
These nodes represent various binary arithmetic operations.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 8fcebf3..5c7e730 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -5179,7 +5179,7 @@ thus dbg_cnt() returns true always unless the upper bound is set by this option.
e.g. With -fdbg-cnt=dce:10,tail_call:0
dbg_cnt(dce) will return true only for first 10 invocations
-@itemx -fenable-@var{kind}-@var{pass}
+@item -fenable-@var{kind}-@var{pass}
@itemx -fdisable-@var{kind}-@var{pass}=@var{range-list}
@opindex fdisable-
@opindex fenable-
@@ -5327,11 +5327,11 @@ Dump after duplicating the computed gotos.
@option{-fdump-rtl-ce3} enable dumping after the three
if conversion passes.
-@itemx -fdump-rtl-cprop_hardreg
+@item -fdump-rtl-cprop_hardreg
@opindex fdump-rtl-cprop_hardreg
Dump after hard register copy propagation.
-@itemx -fdump-rtl-csa
+@item -fdump-rtl-csa
@opindex fdump-rtl-csa
Dump after combining stack adjustments.
@@ -5342,11 +5342,11 @@ Dump after combining stack adjustments.
@option{-fdump-rtl-cse1} and @option{-fdump-rtl-cse2} enable dumping after
the two common sub-expression elimination passes.
-@itemx -fdump-rtl-dce
+@item -fdump-rtl-dce
@opindex fdump-rtl-dce
Dump after the standalone dead code elimination passes.
-@itemx -fdump-rtl-dbr
+@item -fdump-rtl-dbr
@opindex fdump-rtl-dbr
Dump after delayed branch scheduling.
@@ -5391,7 +5391,7 @@ Dump after the initialization of the registers.
@opindex fdump-rtl-initvals
Dump after the computation of the initial value sets.
-@itemx -fdump-rtl-into_cfglayout
+@item -fdump-rtl-into_cfglayout
@opindex fdump-rtl-into_cfglayout
Dump after converting to cfglayout mode.
@@ -5421,7 +5421,7 @@ Dump after removing redundant mode switches.
@opindex fdump-rtl-rnreg
Dump after register renumbering.
-@itemx -fdump-rtl-outof_cfglayout
+@item -fdump-rtl-outof_cfglayout
@opindex fdump-rtl-outof_cfglayout
Dump after converting from cfglayout mode.
@@ -5433,7 +5433,7 @@ Dump after the peephole pass.
@opindex fdump-rtl-postreload
Dump after post-reload optimizations.
-@itemx -fdump-rtl-pro_and_epilogue
+@item -fdump-rtl-pro_and_epilogue
@opindex fdump-rtl-pro_and_epilogue
Dump after generating the function prologues and epilogues.
--
1.8.3.2

View File

@ -1,28 +0,0 @@
pic_cxxflags.patch
From: Christian Prochaska <christian.prochaska@genode-labs.com>
Allow passing of PIC_CXXFLAGS to the configure script of libstdc++.
Without this change, libsupc++ would be compiled w/o PICFLAGS, resulting
in text relocations. Because for base tool chains, no 'dynamic_linker'
is defined (see 'libtool.m4'), 'dynamic_linker' is set to 'no', which
results in 'can_build_shared = no', which, in turn , results
in 'enable_shared = no', which, in turn, sets 'PIC_CXXFLAGS' to
nothing rather then '-prefer-pic'.
---
libstdc++-v3/configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index f04563e..238097d 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -424,7 +424,7 @@ GLIBCXX_EXPORT_FLAGS
if test "$enable_shared" = yes; then
PIC_CXXFLAGS="-prefer-pic"
else
- PIC_CXXFLAGS=
+ __PIC_CXXFLAGS=
fi
AC_SUBST(PIC_CXXFLAGS)

View File

@ -1,62 +0,0 @@
tmake_file_arm.patch
From: Christian Prochaska <christian.prochaska@genode-labs.com>
Let 'config.gcc' expand our already populated 'tmake_file' variable rather
than making a hard assignment. This is needed for the ARM platform because
the target 'arm-elf-eabi' actually matches the pattern 'arm-*-*-eabi' in
the 'config.gcc' file.
---
gcc/config.gcc | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 653e5d9..9dacfd0 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -875,7 +875,7 @@ arm*-*-linux*) # ARM GNU/Linux with ELF
;;
arm*-*-uclinux*) # ARM ucLinux
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
- tmake_file="arm/t-arm arm/t-arm-elf"
+ tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
case ${target} in
arm*-*-uclinux*eabi)
tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h"
@@ -891,7 +891,7 @@ arm*-*-uclinux*) # ARM ucLinux
;;
arm*-*-ecos-elf)
tm_file="dbxelf.h elfos.h newlib-stdint.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/ecos-elf.h"
- tmake_file="arm/t-arm arm/t-arm-elf"
+ tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
;;
arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtemseabi*)
# The BPABI long long divmod functions return a 128-bit value in
@@ -900,7 +900,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtemseabi*)
need_64bit_hwint=yes
default_use_cxa_atexit=yes
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
- tmake_file="arm/t-arm arm/t-arm-elf"
+ tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
case ${target} in
arm*-*-eabi*)
tm_file="$tm_file newlib-stdint.h"
@@ -922,15 +922,15 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtemseabi*)
;;
arm*-*-rtems*)
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/rtems-elf.h rtems.h newlib-stdint.h"
- tmake_file="arm/t-arm arm/t-arm-elf t-rtems arm/t-rtems"
+ tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf t-rtems arm/t-rtems"
;;
arm*-*-elf)
tm_file="dbxelf.h elfos.h newlib-stdint.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h"
- tmake_file="arm/t-arm arm/t-arm-elf"
+ tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
;;
arm*-wince-pe*)
tm_file="arm/semi.h arm/aout.h arm/arm.h arm/coff.h dbxcoff.h arm/pe.h arm/wince-pe.h"
- tmake_file="arm/t-arm arm/t-wince-pe"
+ tmake_file="${tmake_file} arm/t-arm arm/t-wince-pe"
extra_options="${extra_options} arm/pe.opt"
extra_objs="pe.o"
;;

View File

@ -1,212 +0,0 @@
tmake_file_extra_parts.patch
From: Christian Prochaska <christian.prochaska@genode-labs.com>
Enable support for passing custom 'tmake_file' and 'extra_parts' to the
GCC configure process uncommenting the default initialization of the
respective variables. The 'extra_parts' variable is used to carry the
information about which crtN files are to be created.
---
gcc/config.gcc | 2 +-
libgcc/config.host | 44 ++++++++++++++++++++++----------------------
2 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 5fcd192..653e5d9 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -204,7 +204,7 @@
out_file=
common_out_file=
-tmake_file=
+#tmake_file=
extra_headers=
user_headers_inc_next_pre=
user_headers_inc_next_post=
diff --git a/libgcc/config.host b/libgcc/config.host
index ef9791b..b11d221 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -69,8 +69,8 @@
asm_hidden_op=.hidden
enable_execute_stack=
-extra_parts=
-tmake_file=
+#extra_parts=
+#tmake_file=
tm_file=
tm_define=
md_unwind_header=no-unwind.h
@@ -172,14 +172,14 @@ case ${host} in
*-*-darwin*)
asm_hidden_op=.private_extern
tmake_file="$tmake_file t-darwin ${cpu_type}/t-darwin t-libgcc-pic t-slibgcc-darwin"
- extra_parts="crt3.o crttms.o crttme.o"
+# extra_parts="crt3.o crttms.o crttme.o"
;;
*-*-freebsd*)
# This is the generic ELF configuration of FreeBSD. Later
# machine-specific sections may refine and add to this
# configuration.
tmake_file="$tmake_file t-freebsd t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver"
- extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
+# extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
case ${target_thread_file} in
posix)
tmake_file="${tmake_file} t-freebsd-thread"
@@ -195,11 +195,11 @@ case ${host} in
;;
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"
- extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
+# extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
;;
*-*-lynxos*)
tmake_file="$tmake_file t-lynx $cpu_type/t-crtstuff t-crtstuff-pic t-libgcc-pic"
- extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+# extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
;;
*-*-netbsd*)
tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver"
@@ -208,7 +208,7 @@ case ${host} in
# a.out configurations.
case ${host} in
*-*-netbsd*1.[7-9]* | *-*-netbsd[2-9]* | *-*-netbsdelf[2-9]*)
- extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
+# extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
;;
esac
;;
@@ -222,7 +222,7 @@ case ${host} in
;;
*-*-rtems*)
tmake_file="$tmake_file t-rtems"
- extra_parts="crtbegin.o crtend.o"
+# extra_parts="crtbegin.o crtend.o"
;;
*-*-solaris2*)
# Unless linker support and dl_iterate_phdr are present,
@@ -251,7 +251,7 @@ case ${host} in
esac
;;
*-*-uclinux*)
- extra_parts="crtbegin.o crtend.o"
+# extra_parts="crtbegin.o crtend.o"
;;
*-*-*vms*)
tmake_file="vms/t-vms"
@@ -261,7 +261,7 @@ case ${host} in
tmake_file=t-vxworks
;;
*-*-elf)
- extra_parts="crtbegin.o crtend.o"
+# extra_parts="crtbegin.o crtend.o"
;;
esac
@@ -360,7 +360,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtemseabi*)
case ${host} in
arm*-*-eabi* | arm*-*-rtemseabi*)
tmake_file="${tmake_file} arm/t-bpabi"
- extra_parts="crtbegin.o crtend.o crti.o crtn.o"
+# extra_parts="crtbegin.o crtend.o crti.o crtn.o"
;;
arm*-*-symbianelf*)
tmake_file="${tmake_file} arm/t-symbian t-slibgcc-nolc-override"
@@ -409,7 +409,7 @@ bfin*-linux-uclibc*)
tmake_file="$tmake_file bfin/t-bfin bfin/t-crtstuff t-libgcc-pic t-fdpbit bfin/t-linux"
# No need to build crtbeginT.o on uClibc systems. Should probably
# be moved to the OS specific section above.
- extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+# extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
md_unwind_header=bfin/linux-unwind.h
;;
bfin*-rtems*)
@@ -418,7 +418,7 @@ bfin*-rtems*)
;;
bfin*-*)
tmake_file="$tmake_file bfin/t-bfin t-fdpbit"
- extra_parts="crtbegin.o crtend.o crti.o crtn.o"
+# extra_parts="crtbegin.o crtend.o crti.o crtn.o"
;;
cr16-*-elf)
tmake_file="${tmake_file} cr16/t-cr16 cr16/t-crtlibid t-fdpbit"
@@ -579,7 +579,7 @@ i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae)
;;
i[34567]86-*-cygwin*)
- extra_parts="crtbegin.o crtend.o crtfastmath.o"
+# extra_parts="crtbegin.o crtend.o crtfastmath.o"
# This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h
if test x$enable_sjlj_exceptions = xyes; then
tmake_eh_file="i386/t-sjlj-eh"
@@ -595,7 +595,7 @@ i[34567]86-*-cygwin*)
tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-slibgcc-cygming i386/t-cygming i386/t-cygwin i386/t-crtfm i386/t-chkstk t-dfprules"
;;
i[34567]86-*-mingw*)
- extra_parts="crtbegin.o crtend.o crtfastmath.o"
+# extra_parts="crtbegin.o crtend.o crtfastmath.o"
case ${target_thread_file} in
win32)
tmake_file="$tmake_file i386/t-gthr-win32"
@@ -656,7 +656,7 @@ ia64*-*-freebsd*)
;;
ia64*-*-linux*)
# Don't use crtbeginT.o from *-*-linux* default.
- extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
+# extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
tmake_file="$tmake_file ia64/t-ia64 ia64/t-ia64-elf t-crtfm t-softfp-tf ia64/t-softfp t-softfp ia64/t-softfp-compat ia64/t-eh-ia64 t-libunwind ia64/t-linux"
if test x$with_system_libunwind != xyes ; then
tmake_file="${tmake_file} t-libunwind-elf ia64/t-linux-libunwind"
@@ -738,11 +738,11 @@ microblaze*-linux*)
;;
microblaze*-*-*)
tmake_file="microblaze/t-microblaze t-fdpbit"
- extra_parts="crtbegin.o crtend.o crti.o crtn.o"
+# extra_parts="crtbegin.o crtend.o crti.o crtn.o"
;;
mips-sgi-irix6.5*)
tmake_file="$tmake_file mips/t-irix6 t-crtfm mips/t-tpbit t-slibgcc mips/t-slibgcc-irix"
- extra_parts="crtbegin.o crtend.o crtfastmath.o irix-crti.o irix-crtn.o"
+# extra_parts="crtbegin.o crtend.o crtfastmath.o irix-crti.o irix-crtn.o"
md_unwind_header=mips/irix6-unwind.h
;;
mips*-*-netbsd*) # NetBSD/mips, either endian.
@@ -811,7 +811,7 @@ mipstx39-*-elf* | mipstx39el-*-elf*)
tmake_file="$tmake_file mips/t-crtstuff mips/t-mips16"
;;
mmix-knuth-mmixware)
- extra_parts="crti.o crtn.o crtbegin.o crtend.o"
+# extra_parts="crti.o crtn.o crtbegin.o crtend.o"
tmake_file="${tmake_file} ${cpu_type}/t-${cpu_type}"
;;
mn10300-*-*)
@@ -946,7 +946,7 @@ s390x-*-linux*)
;;
s390x-ibm-tpf*)
tmake_file="${tmake_file} s390/t-crtstuff t-libgcc-pic t-eh-dw2-dip"
- extra_parts="crtbeginS.o crtendS.o"
+# extra_parts="crtbeginS.o crtendS.o"
md_unwind_header=s390/tpf-unwind.h
;;
score-*-elf)
@@ -1128,7 +1128,7 @@ xtensa*-*-linux*)
;;
am33_2.0-*-linux*)
# Don't need crtbeginT.o from *-*-linux* default.
- extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
+# extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
tmake_file="$tmake_file t-fdpbit"
;;
m32c-*-elf*|m32c-*-rtems*)
@@ -1136,7 +1136,7 @@ m32c-*-elf*|m32c-*-rtems*)
;;
mep*-*-*)
tmake_file="mep/t-mep t-fdpbit"
- extra_parts="crtbegin.o crtend.o"
+# extra_parts="crtbegin.o crtend.o"
;;
*)
echo "*** Configuration ${host} not supported" 1>&2

View File

@ -0,0 +1,27 @@
host_target_combination.patch
From: Christian Prochaska <christian.prochaska@genode-labs.com>
Remove sanity check for host/target combination in configure script of
libstdc++. An alternative fix would be the addition of a new host or
the use of an existing one. However, adding a new host would require
us to maintain a larger patch to the GCC build system, and using an
existing host comes with all the (possibly unwanted) policies associated
with the respective host platform. We want to stick with the bare-bone
compiler as much as possible.
---
libstdc++-v3/crossconfig.m4 | 1 -
1 file changed, 1 deletion(-)
diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4
index 361ed0b..98d68ec 100644
--- a/libstdc++-v3/crossconfig.m4
+++ b/libstdc++-v3/crossconfig.m4
@@ -264,7 +264,6 @@ case "${host}" in
AC_DEFINE(HAVE_TANHF)
;;
*)
- AC_MSG_ERROR([No support for this host/target combination.])
;;
esac
])

View File

@ -11,10 +11,10 @@ Genode's dynamic linker relies on this mechanism.
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/configure.ac b/gcc/configure.ac
index b7604d6..75bb2b5 100644
index 29ac2f3..67db551 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -1862,7 +1862,7 @@ fi
@@ -1888,7 +1888,7 @@ fi
if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
test x$with_newlib = xyes ; } &&
{ test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then

View File

@ -15,10 +15,10 @@ frontend invokes 'ld' on multiarch platforms. I.e., on x86, we need to pass
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 2d1876f..b7604d6 100644
index a78a1d7..29ac2f3 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -1759,7 +1759,7 @@ for f in $xm_file; do
@@ -1785,7 +1785,7 @@ for f in $xm_file; do
done
host_xm_file_list=

View File

@ -10,10 +10,10 @@ Changes lacking documentation
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in
index f38d5b4..d64c9e0 100644
index c301ff0..9f45475 100644
--- a/libgcc/Makefile.in
+++ b/libgcc/Makefile.in
@@ -858,7 +858,7 @@ LIBGCOV = _gcov _gcov_merge_add _gcov_merge_single _gcov_merge_delta \
@@ -859,7 +859,7 @@ LIBGCOV = _gcov _gcov_merge_add _gcov_merge_single _gcov_merge_delta \
_gcov_indirect_call_profiler _gcov_average_profiler _gcov_ior_profiler \
_gcov_merge_ior

View File

@ -8,10 +8,10 @@ Ensure -fno-short-enums as default.
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 35b73c5..52370a8 100644
index 6ed3575..ba4cacb 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -23384,7 +23384,7 @@ arm_promote_function_mode (const_tree type ATTRIBUTE_UNUSED,
@@ -23466,7 +23466,7 @@ arm_promote_function_mode (const_tree type ATTRIBUTE_UNUSED,
static bool
arm_default_short_enums (void)
{

View File

@ -0,0 +1,41 @@
prefer_pic.patch
From: Christian Prochaska <christian.prochaska@genode-labs.com>
Without this change, libsupc++ would be compiled w/o PIC flags, resulting
in text relocations. Because for base tool chains, no 'dynamic_linker'
is defined (see 'libtool.m4'), 'dynamic_linker' is set to 'no', which
results in 'can_build_shared = no', which, in turn , results
in 'enable_shared = no', which, in turn, sets 'glibcxx_lt_pic_flag' to
nothing rather than '-prefer-pic'.
---
libstdc++-v3/configure.ac | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index ce1f6c4..59024f2 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -109,16 +109,16 @@ AC_SUBST(enable_static)
# Use glibcxx_compiler_pic_flag to designate a compile-time flags for
# creating position-independent objects. This varies with the target
# hardware and operating system, but is often: -DPIC -fPIC.
-if test "$enable_shared" = yes; then
+#if test "$enable_shared" = yes; then
glibcxx_lt_pic_flag="-prefer-pic"
glibcxx_compiler_pic_flag="$lt_prog_compiler_pic_CXX"
glibcxx_compiler_shared_flag="-D_GLIBCXX_SHARED"
-else
- glibcxx_lt_pic_flag=
- glibcxx_compiler_pic_flag=
- glibcxx_compiler_shared_flag=
-fi
+#else
+# glibcxx_lt_pic_flag=
+# glibcxx_compiler_pic_flag=
+# glibcxx_compiler_shared_flag=
+#fi
AC_SUBST(glibcxx_lt_pic_flag)
AC_SUBST(glibcxx_compiler_pic_flag)
AC_SUBST(glibcxx_compiler_shared_flag)

View File

@ -7,5 +7,4 @@ cppflags_for_target.patch
cpp_for_target.patch
no_short_enums.patch
host_target_combination.patch
pic_cxxflags.patch
makeinfo5.patch
prefer_pic.patch

View File

@ -0,0 +1,25 @@
tmake_file_arm.patch
From: Christian Prochaska <christian.prochaska@genode-labs.com>
Let 'config.gcc' expand our already populated 'tmake_file' variable rather
than making a hard assignment. This is needed for the ARM platform because
the target 'arm-elf-eabi' actually matches the pattern 'arm-*-*-eabi' in
the 'config.gcc' file.
---
gcc/config.gcc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 732b829..8876218 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -910,7 +910,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
need_64bit_hwint=yes
default_use_cxa_atexit=yes
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
- tmake_file="arm/t-arm arm/t-arm-elf"
+ tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
case ${target} in
arm*-*-eabi*)
tm_file="$tm_file newlib-stdint.h"

View File

@ -0,0 +1,59 @@
tmake_file_extra_parts.patch
From: Christian Prochaska <christian.prochaska@genode-labs.com>
Enable support for passing custom 'tmake_file' and 'extra_parts' to the
GCC configure process uncommenting the default initialization of the
respective variables. The 'extra_parts' variable is used to carry the
information about which crtN files are to be created.
---
gcc/config.gcc | 2 +-
libgcc/config.host | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 9503b96..732b829 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -204,7 +204,7 @@
out_file=
common_out_file=
-tmake_file=
+#tmake_file=
extra_headers=
user_headers_inc_next_pre=
user_headers_inc_next_post=
diff --git a/libgcc/config.host b/libgcc/config.host
index b64da4a..c34e7b3 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -69,8 +69,8 @@
asm_hidden_op=.hidden
enable_execute_stack=
-extra_parts=
-tmake_file=
+#extra_parts=
+#tmake_file=
tm_file=
tm_define=
md_unwind_header=no-unwind.h
@@ -261,7 +261,7 @@ case ${host} in
tmake_file=t-vxworks
;;
*-*-elf)
- extra_parts="crtbegin.o crtend.o"
+# extra_parts="crtbegin.o crtend.o"
;;
esac
@@ -364,7 +364,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
case ${host} in
arm*-*-eabi* | arm*-*-rtems*)
tmake_file="${tmake_file} arm/t-bpabi"
- extra_parts="crtbegin.o crtend.o crti.o crtn.o"
+# extra_parts="crtbegin.o crtend.o crti.o crtn.o"
;;
arm*-*-symbianelf*)
tmake_file="${tmake_file} arm/t-symbian t-slibgcc-nolc-override"

View File

@ -60,7 +60,7 @@ MPC_DOWNLOAD_URL ?= http://www.multiprecision.org/mpc/download
# Tool versions and install location
#
GCC_VERSION = 4.7.2
GCC_VERSION = 4.7.4
BINUTILS_VERSION = 2.22
GDB_VERSION = 7.3.1
GMP_VERSION = 5.0.2
@ -104,7 +104,7 @@ VERBOSE = @
#
AUTOCONF_VERSION_gcc_4.4.5 = 2.59
AUTOCONF_VERSION_gcc_4.6.1 = 2.64
AUTOCONF_VERSION_gcc_4.7.2 = 2.64
AUTOCONF_VERSION_gcc_4.7.4 = 2.64
AUTOCONF_VERSION = $(AUTOCONF_VERSION_gcc_$(GCC_VERSION))
@ -260,6 +260,7 @@ GCC_CONFIG += $(COMMON_CONFIG) \
--with-gnu-as --with-gnu-ld --disable-tls --disable-threads \
--disable-libstdcxx-pch \
--enable-shared \
--enable-multiarch \
--with-gmp=$(LOCAL_LIB_INSTALL_LOCATION) \
--with-mpfr=$(LOCAL_LIB_INSTALL_LOCATION) \
--with-mpc=$(LOCAL_LIB_INSTALL_LOCATION) \