Merge the gcc-4.4 support.

This commit is contained in:
Yann E. MORIN" 2009-06-17 12:32:01 +02:00
commit f7535c2f62
53 changed files with 1821 additions and 112 deletions

9
TODO
View File

@ -5,14 +5,7 @@ Recuring tasks:
- update versions for every tools...
Non-recurring:
- gcc-4.4
- requires some companion libs:
- PPL
- CLoog
- check that the patchset from 4.3.3 still applies
Non-recurring tasks:
- uClinux

View File

@ -130,6 +130,7 @@ config CC_GCC_4_3_or_later
config CC_GCC_4_4_or_later
bool
default n
select PPL_CLOOG_MPC
config CC_VERSION
string

View File

@ -20,35 +20,68 @@ config GMP_MPFR
- gcc
- gdb
config GMP_MPFR_TARGET
bool
prompt "Build libraries for the target"
depends on GMP_MPFR
depends on ! BARE_METAL
default n
help
Also build libraries for the target. This can be usefull if you want
to later build a compiler that will run on the target, or if you want
to run gdb natively on the target.
if GMP_MPFR
source config/companion_libs/gmp.in
source config/companion_libs/mpfr.in
endif
config PPL_CLOOG
config PPL_CLOOG_MPC
bool
prompt "PPL and GLooG/PPL"
prompt "PPL, GLooG/PPL and MPC"
help
gcc-4.4.0 and above requires both PPL and CLooG/PPL to build some
parts of the optimiser (GRAPHITE loop optimisation, to be precise).
gcc-4.4.0 and above requires PPL and CLooG/PPL to build some parts
of the optimiser (GRAPHITE loop optimisation, to be precise).
In addition to those, gcc-4.4 also optionally uses MPC to enable
additional optimisations on complex numbers. Although MPC is optional,
crosstool-NG requires it and uses it to build gcc >= 4.4.0.
These will be automatically selected if you choose gcc>=4.4.0, but you
can say 'Y' here, although it is unknown yet if any other component
can use them.
if PPL_CLOOG
if PPL_CLOOG_MPC
source config/companion_libs/ppl.in
source config/companion_libs/cloog.in
source config/companion_libs/mpc.in
endif
config FOO
bool
comment "Companion libraries common options"
depends on GMP_MPFR || PPL_CLOOG_MPC
config COMP_LIBS_CHECK
bool
prompt "| Check the companion libraries builds (!!! READ HELP!!!)"
depends on GMP_MPFR || PPL_CLOOG_MPC
default n
help
It is highly recommended to check the newly built companion libraries.
Unfortunately, this is a very intensive task, and takes a loooong time.
Checking the newly built companion libraries is thus disabled by default,
but it is suggested that you check them at least once on your machine,
and if they work, disable the check on subsequent builds.
If you suspect that one (or more) of your companion libraries is the
cause for incorrectly generated code, you should answer 'Y' here.
Note however that this will take a really long time. For example,
building PPL on my machine takes roughly 1'40", while checking it takes
about 1h40'...
config COMP_LIBS_TARGET
bool
prompt "| Build companion libraries for the target"
depends on GMP_MPFR || PPL_CLOOG_MPC
depends on ! BARE_METAL
default n
help
Also build companion libraries for the target. This can be usefull if
you want to later build a compiler that will run on the target, or if
you want to run gdb natively on the target.
Please note that for now, crosstool-NG can only build GMP and MPFR so.
endmenu

View File

@ -0,0 +1,19 @@
# CLooG options
choice
bool
prompt "CLooG/ppl version"
config CLOOG_V_0_15_3
bool
prompt "0.15.3"
# CT_INSERT_VERSION_ABOVE
# Don't remove above line!
endchoice
config CLOOG_VERSION
string
default "0.15.3" if CLOOG_V_0_15_3
# CT_INSERT_VERSION_STRING_ABOVE
# Don't remove above line!

View File

@ -22,11 +22,3 @@ config GMP_VERSION
default "4.2.4" if GMP_V_4_2_4
# CT_INSERT_VERSION_STRING_ABOVE
# Don't remove above line!
config GMP_CHECK
bool
prompt "Check GMP"
default y
help
It is highly recommended that 'make check' is run against the newly built
GMP library. See http://gmplib.org/

View File

@ -0,0 +1,19 @@
# MPC options
choice
bool
prompt "MPC version"
config MPC_V_0_6
bool
prompt "0.6"
# CT_INSERT_VERSION_ABOVE
# Don't remove above line!
endchoice
config MPC_VERSION
string
default "0.6" if MPC_V_0_6
# CT_INSERT_VERSION_STRING_ABOVE
# Don't remove above line!

View File

@ -32,11 +32,3 @@ config MPFR_VERSION
default "2.4.1" if MPFR_V_2_4_1
# CT_INSERT_VERSION_STRING_ABOVE
# Don't remove above line!
config MPFR_CHECK
bool
prompt "Check MPFR"
default y
help
It is highly recommended that 'make check' is run against the newly built
MPFR library. See http://gmplib.org/

View File

@ -17,17 +17,3 @@ config PPL_VERSION
default "0.10.2" if PPL_V_0_10_2
# CT_INSERT_VERSION_STRING_ABOVE
# Don't remove above line!
config PPL_CHECK
bool
prompt "Check PPL (!!! README !!!)"
default n
help
Checking PPL is very intensive and takes a loooong time.
The PPL folks do not recommend checking the library, but they do
not recommend not checking it, either.
Checking PPL is thus disabled by default.
If you suspect that your PPL library is the cause for incorrectly
generated code, you should answer 'Y' here.

View File

@ -59,7 +59,7 @@ config GDB_NATIVE_USE_GMP_MPFR
default n
depends on GDB_NATIVE
select GMP_MPFR
select GMP_MPFR_TARGET
select COMP_LIBS_TARGET
help
gdb can make use of the GMP and MPFR libraries.

1
configure vendored
View File

@ -337,6 +337,7 @@ has_or_abort prog=automake
has_or_abort prog=libtool \
ver='\(GNU libtool.*\) (2[[:digit:]]*\.|1\.6[[:digit:]]*\.|1\.5\.[2-9][[:digit:]]+)' \
err="'libtool' 1.5.26 or above was not found"
has_or_abort prog=stat ver='GNU coreutils'
has_or_abort prog="curl wget"
has_or_abort prog=cvs
has_or_abort prog=patch

View File

@ -0,0 +1,24 @@
diff -durN gcc-4.4.0.orig/gcc/config/alpha/alpha.h gcc-4.4.0/gcc/config/alpha/alpha.h
--- gcc-4.4.0.orig/gcc/config/alpha/alpha.h 2009-02-20 16:20:38.000000000 +0100
+++ gcc-4.4.0/gcc/config/alpha/alpha.h 2009-05-27 21:37:58.000000000 +0200
@@ -95,6 +95,8 @@
while (0)
#endif
+#define CPP_SPEC "%{!no-ieee:-mieee}"
+
#define WORD_SWITCH_TAKES_ARG(STR) \
(!strcmp (STR, "rpath") || DEFAULT_WORD_SWITCH_TAKES_ARG(STR))
diff -durN gcc-4.4.0.orig/gcc/config/alpha/alpha.opt gcc-4.4.0/gcc/config/alpha/alpha.opt
--- gcc-4.4.0.orig/gcc/config/alpha/alpha.opt 2007-08-02 12:49:31.000000000 +0200
+++ gcc-4.4.0/gcc/config/alpha/alpha.opt 2009-05-27 21:37:58.000000000 +0200
@@ -39,7 +39,7 @@
Request IEEE-conformant math library routines (OSF/1)
mieee
-Target Report RejectNegative Mask(IEEE)
+Target Report Mask(IEEE)
Emit IEEE-conformant code, without inexact exceptions
mieee-with-inexact

View File

@ -0,0 +1,27 @@
diff -durN gcc-4.4.0.orig/gcc/builtins.c gcc-4.4.0/gcc/builtins.c
--- gcc-4.4.0.orig/gcc/builtins.c 2009-03-30 19:42:27.000000000 +0200
+++ gcc-4.4.0/gcc/builtins.c 2009-05-27 21:38:01.000000000 +0200
@@ -5768,6 +5768,9 @@
trampolines_created = 1;
INITIALIZE_TRAMPOLINE (r_tramp, r_func, r_chain);
+ if (warn_trampolines)
+ warning (OPT_Wtrampolines, "generating trampoline in object (requires executable stack)");
+
return const0_rtx;
}
diff -durN gcc-4.4.0.orig/gcc/common.opt gcc-4.4.0/gcc/common.opt
--- gcc-4.4.0.orig/gcc/common.opt 2009-03-28 18:28:45.000000000 +0100
+++ gcc-4.4.0/gcc/common.opt 2009-05-27 21:38:01.000000000 +0200
@@ -197,6 +197,10 @@
Common Var(warn_type_limits) Init(-1) Warning
Warn if a comparison is always true or always false due to the limited range of the data type
+Wtrampolines
+Common Var(warn_trampolines) Init(1)
+Warn whenever a trampoline is generated
+
Wuninitialized
Common Var(warn_uninitialized) Warning
Warn about uninitialized automatic variables

View File

@ -0,0 +1,46 @@
diff -durN gcc-4.4.0.orig/libjava/configure gcc-4.4.0/libjava/configure
--- gcc-4.4.0.orig/libjava/configure 2009-04-21 11:08:08.000000000 +0200
+++ gcc-4.4.0/libjava/configure 2009-05-27 21:38:03.000000000 +0200
@@ -1021,6 +1021,8 @@
default=yes
--enable-java-maintainer-mode
allow rebuilding of .class and .h files
+ --enable-libjava-multilib
+ build libjava as multilib
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--enable-maintainer-mode enable make rules and dependencies not useful
@@ -1973,6 +1975,16 @@
fi
+# Check whether --enable-libjava-multilib was given.
+if test "${enable_libjava_multilib+set}" = set; then
+ enableval=$enable_libjava_multilib;
+fi
+
+if test "$enable_libjava_multilib" = no; then
+ multilib=no
+ ac_configure_args="$ac_configure_args --disable-multilib"
+fi
+
# It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
diff -durN gcc-4.4.0.orig/libjava/configure.ac gcc-4.4.0/libjava/configure.ac
--- gcc-4.4.0.orig/libjava/configure.ac 2009-04-09 23:54:28.000000000 +0200
+++ gcc-4.4.0/libjava/configure.ac 2009-05-27 21:38:03.000000000 +0200
@@ -139,6 +139,13 @@
[allow rebuilding of .class and .h files]))
AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" = yes)
+AC_ARG_ENABLE(libjava-multilib,
+ AS_HELP_STRING([--enable-libjava-multilib], [build libjava as multilib]))
+if test "$enable_libjava_multilib" = no; then
+ multilib=no
+ ac_configure_args="$ac_configure_args --disable-multilib"
+fi
+
# It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
GCC_NO_EXECUTABLES

View File

@ -0,0 +1,39 @@
diff -durN gcc-4.4.0.orig/gcc/configure gcc-4.4.0/gcc/configure
--- gcc-4.4.0.orig/gcc/configure 2009-03-24 18:46:03.000000000 +0100
+++ gcc-4.4.0/gcc/configure 2009-05-27 21:38:06.000000000 +0200
@@ -13997,7 +13997,7 @@
| powerpc*-*-*,powerpc64*-*-*)
CROSS="$CROSS -DNATIVE_CROSS" ;;
esac
-elif test "x$TARGET_SYSTEM_ROOT" != x; then
+elif test "x$TARGET_SYSTEM_ROOT" != x -o $build != $host; then
SYSTEM_HEADER_DIR=$build_system_header_dir
fi
diff -durN gcc-4.4.0.orig/gcc/configure.ac gcc-4.4.0/gcc/configure.ac
--- gcc-4.4.0.orig/gcc/configure.ac 2009-03-24 18:46:03.000000000 +0100
+++ gcc-4.4.0/gcc/configure.ac 2009-05-27 21:38:06.000000000 +0200
@@ -1720,7 +1720,7 @@
| powerpc*-*-*,powerpc64*-*-*)
CROSS="$CROSS -DNATIVE_CROSS" ;;
esac
-elif test "x$TARGET_SYSTEM_ROOT" != x; then
+elif test "x$TARGET_SYSTEM_ROOT" != x -o $build != $host; then
SYSTEM_HEADER_DIR=$build_system_header_dir
fi
diff -durN gcc-4.4.0.orig/gcc/unwind-dw2.c gcc-4.4.0/gcc/unwind-dw2.c
--- gcc-4.4.0.orig/gcc/unwind-dw2.c 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/gcc/unwind-dw2.c 2009-05-27 21:38:06.000000000 +0200
@@ -329,9 +329,11 @@
}
#endif
+#ifndef inhibit_libc
#ifdef MD_UNWIND_SUPPORT
#include MD_UNWIND_SUPPORT
#endif
+#endif
/* Extract any interesting information from the CIE for the translation
unit F belongs to. Return a pointer to the byte after the augmentation,

View File

@ -0,0 +1,49 @@
diff -durN gcc-4.4.0.orig/gcc/c-common.c gcc-4.4.0/gcc/c-common.c
--- gcc-4.4.0.orig/gcc/c-common.c 2009-03-30 19:42:27.000000000 +0200
+++ gcc-4.4.0/gcc/c-common.c 2009-05-27 21:38:08.000000000 +0200
@@ -301,7 +301,7 @@
/* Warn about format/argument anomalies in calls to formatted I/O functions
(*printf, *scanf, strftime, strfmon, etc.). */
-int warn_format;
+int warn_format = 1;
/* Warn about using __null (as NULL in C++) as sentinel. For code compiled
with GCC this doesn't matter as __null is guaranteed to have the right
diff -durN gcc-4.4.0.orig/gcc/c.opt gcc-4.4.0/gcc/c.opt
--- gcc-4.4.0.orig/gcc/c.opt 2009-03-18 22:14:53.000000000 +0100
+++ gcc-4.4.0/gcc/c.opt 2009-05-27 21:38:08.000000000 +0200
@@ -236,7 +236,7 @@
Warn about format strings that contain NUL bytes
Wformat-security
-C ObjC C++ ObjC++ Var(warn_format_security) Warning
+C ObjC C++ ObjC++ Var(warn_format_security) Init(1) Warning
Warn about possible security problems with format functions
Wformat-y2k
diff -durN gcc-4.4.0.orig/gcc/doc/invoke.texi gcc-4.4.0/gcc/doc/invoke.texi
--- gcc-4.4.0.orig/gcc/doc/invoke.texi 2009-04-01 09:18:47.000000000 +0200
+++ gcc-4.4.0/gcc/doc/invoke.texi 2009-05-27 21:38:08.000000000 +0200
@@ -2867,6 +2867,9 @@
@option{-Wformat-nonliteral}, @option{-Wformat-security}, and
@option{-Wformat=2} are available, but are not included in @option{-Wall}.
+NOTE: In Gentoo, this option is enabled by default for C, C++, ObjC, ObjC++.
+To disable, use @option{-Wformat=0}.
+
@item -Wformat-y2k
@opindex Wformat-y2k
@opindex Wno-format-y2k
@@ -2920,6 +2923,11 @@
in future warnings may be added to @option{-Wformat-security} that are not
included in @option{-Wformat-nonliteral}.)
+NOTE: In Gentoo, this option is enabled by default for C, C++, ObjC, ObjC++.
+To disable, use @option{-Wno-format-security}, or disable all format warnings
+with @option{-Wformat=0}. To make format security warnings fatal, specify
+@option{-Werror=format-security}.
+
@item -Wformat=2
@opindex Wformat=2
@opindex Wno-format=2

View File

@ -0,0 +1,26 @@
diff -durN gcc-4.4.0.orig/gcc/doc/invoke.texi gcc-4.4.0/gcc/doc/invoke.texi
--- gcc-4.4.0.orig/gcc/doc/invoke.texi 2009-05-27 21:38:11.000000000 +0200
+++ gcc-4.4.0/gcc/doc/invoke.texi 2009-05-27 21:38:11.000000000 +0200
@@ -5411,6 +5411,11 @@
Please note the warning under @option{-fgcse} about
invoking @option{-O2} on programs that use computed gotos.
+NOTE: In Gentoo, @option{-D_FORTIFY_SOURCE=2} is set by default, and is
+activated when @option{-O} is set to 2 or higher. This enables additional
+compile-time and run-time checks for several libc functions. To disable,
+specify either @option{-U_FORTIFY_SOURCE} or @option{-D_FORTIFY_SOURCE=0}.
+
@item -O3
@opindex O3
Optimize yet more. @option{-O3} turns on all optimizations specified
diff -durN gcc-4.4.0.orig/gcc/gcc.c gcc-4.4.0/gcc/gcc.c
--- gcc-4.4.0.orig/gcc/gcc.c 2009-03-17 22:25:59.000000000 +0100
+++ gcc-4.4.0/gcc/gcc.c 2009-05-27 21:38:11.000000000 +0200
@@ -807,6 +807,7 @@
%{H} %C %{D*&U*&A*} %{i*} %Z %i\
%{fmudflap:-D_MUDFLAP -include mf-runtime.h}\
%{fmudflapth:-D_MUDFLAP -D_MUDFLAPTH -include mf-runtime.h}\
+ %{!D_FORTIFY_SOURCE:%{!D_FORTIFY_SOURCE=*:%{!U_FORTIFY_SOURCE:-D_FORTIFY_SOURCE=2}}}\
%{E|M|MM:%W{o*}}";
/* This contains cpp options which are common with cc1_options and are passed

View File

@ -0,0 +1,11 @@
diff -durN gcc-4.4.0.orig/gcc/config/netbsd-elf.h gcc-4.4.0/gcc/config/netbsd-elf.h
--- gcc-4.4.0.orig/gcc/config/netbsd-elf.h 2007-09-03 18:14:04.000000000 +0200
+++ gcc-4.4.0/gcc/config/netbsd-elf.h 2009-05-27 21:38:14.000000000 +0200
@@ -82,6 +82,7 @@
#define NETBSD_LINK_SPEC_ELF \
"%{assert*} %{R*} %{rpath*} \
%{shared:-shared} \
+ %{symbolic:-Bsymbolic} \
%{!shared: \
-dc -dp \
%{!nostdlib: \

View File

@ -0,0 +1,29 @@
diff -durN gcc-4.4.0.orig/gcc/config/sparc/freebsd.h gcc-4.4.0/gcc/config/sparc/freebsd.h
--- gcc-4.4.0.orig/gcc/config/sparc/freebsd.h 2007-08-02 12:49:31.000000000 +0200
+++ gcc-4.4.0/gcc/config/sparc/freebsd.h 2009-05-27 21:38:16.000000000 +0200
@@ -25,9 +25,22 @@
/* FreeBSD needs the platform name (sparc64) defined.
Emacs needs to know if the arch is 64 or 32-bits. */
-#undef CPP_CPU64_DEFAULT_SPEC
-#define CPP_CPU64_DEFAULT_SPEC \
- "-D__sparc64__ -D__sparc_v9__ -D__sparcv9 -D__arch64__"
+#undef FBSD_TARGET_CPU_CPP_BUILTINS
+#define FBSD_TARGET_CPU_CPP_BUILTINS() \
+ do \
+ { \
+ if (TARGET_ARCH64) \
+ { \
+ builtin_define ("__sparc64__"); \
+ builtin_define ("__sparc_v9__"); \
+ builtin_define ("__sparcv9"); \
+ } \
+ else \
+ builtin_define ("__sparc"); \
+ builtin_define ("__sparc__"); \
+ } \
+ while (0)
+
#define LINK_SPEC "%(link_arch) \
%{!mno-relax:%{!r:-relax}} \

View File

@ -0,0 +1,12 @@
diff -durN gcc-4.4.0.orig/libgomp/configure gcc-4.4.0/libgomp/configure
--- gcc-4.4.0.orig/libgomp/configure 2009-04-21 11:08:08.000000000 +0200
+++ gcc-4.4.0/libgomp/configure 2009-05-27 21:38:19.000000000 +0200
@@ -3334,7 +3334,7 @@
# Add -Wall -Werror if we are using GCC.
if test "x$GCC" = "xyes"; then
- XCFLAGS="$XCFLAGS -Wall -Werror"
+ XCFLAGS="$XCFLAGS -Wall"
fi
# Find other programs we need.

View File

@ -0,0 +1,24 @@
diff -durN gcc-4.4.0.orig/gcc/stmt.c gcc-4.4.0/gcc/stmt.c
--- gcc-4.4.0.orig/gcc/stmt.c 2009-02-27 20:49:42.000000000 +0100
+++ gcc-4.4.0/gcc/stmt.c 2009-05-27 21:38:21.000000000 +0200
@@ -2376,7 +2376,11 @@
use_cost_table
= (TREE_CODE (orig_type) != ENUMERAL_TYPE
&& estimate_case_costs (case_list));
- balance_case_nodes (&case_list, NULL);
+ /* When optimizing for size, we want a straight list to avoid
+ jumps as much as possible. This basically creates an if-else
+ chain. */
+ if (!optimize_size)
+ balance_case_nodes (&case_list, NULL);
emit_case_nodes (index, case_list, default_label, index_type);
if (default_label)
emit_jump (default_label);
@@ -2942,6 +2946,7 @@
{
if (!node_has_low_bound (node, index_type))
{
+ if (!optimize_size) /* don't jl to the .default_label. */
emit_cmp_and_jump_insns (index,
convert_modes
(mode, imode,

View File

@ -0,0 +1,15 @@
diff -durN gcc-4.4.0.orig/include/libiberty.h gcc-4.4.0/include/libiberty.h
--- gcc-4.4.0.orig/include/libiberty.h 2008-06-24 03:42:31.000000000 +0200
+++ gcc-4.4.0/include/libiberty.h 2009-05-27 21:38:24.000000000 +0200
@@ -595,8 +595,11 @@
/* Like sprintf but provides a pointer to malloc'd storage, which must
be freed by the caller. */
+/* asprintf may be declared as a macro by glibc with __USE_FORTIFY_LEVEL. */
+#ifndef asprintf
extern int asprintf (char **, const char *, ...) ATTRIBUTE_PRINTF_2;
#endif
+#endif
#if !HAVE_DECL_VASPRINTF
/* Like vsprintf but provides a pointer to malloc'd storage, which

View File

@ -0,0 +1,12 @@
diff -durN gcc-4.4.0.orig/gcc/config/arm/linux-eabi.h gcc-4.4.0/gcc/config/arm/linux-eabi.h
--- gcc-4.4.0.orig/gcc/config/arm/linux-eabi.h 2007-11-08 14:44:09.000000000 +0100
+++ gcc-4.4.0/gcc/config/arm/linux-eabi.h 2009-05-27 21:38:26.000000000 +0200
@@ -44,7 +44,7 @@
The ARM10TDMI core is the default for armv5t, so set
SUBTARGET_CPU_DEFAULT to achieve this. */
#undef SUBTARGET_CPU_DEFAULT
-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
+#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
/* TARGET_BIG_ENDIAN_DEFAULT is set in
config.gcc for big endian configurations. */

View File

@ -0,0 +1,11 @@
diff -durN gcc-4.4.0.orig/libiberty/Makefile.in gcc-4.4.0/libiberty/Makefile.in
--- gcc-4.4.0.orig/libiberty/Makefile.in 2008-10-22 15:30:19.000000000 +0200
+++ gcc-4.4.0/libiberty/Makefile.in 2009-05-27 21:38:29.000000000 +0200
@@ -227,6 +227,7 @@
$(AR) $(AR_FLAGS) $(TARGETLIB) \
$(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
$(RANLIB) $(TARGETLIB); \
+ cp $(TARGETLIB) ../ ; \
cd ..; \
else true; fi

View File

@ -0,0 +1,12 @@
diff -durN gcc-4.4.0.orig/gcc/config.gcc gcc-4.4.0/gcc/config.gcc
--- gcc-4.4.0.orig/gcc/config.gcc 2009-04-17 13:58:41.000000000 +0200
+++ gcc-4.4.0/gcc/config.gcc 2009-05-27 21:38:31.000000000 +0200
@@ -2121,7 +2121,7 @@
if test x${sh_multilibs} = x ; then
case ${target} in
sh64-superh-linux* | \
- sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
+ sh[1234]*) sh_multilibs=`cd ${srcdir}/config/sh ; echo t-mlib-sh[1-4]* | sed 's:t-mlib-sh:,m:g;s: ::g'` ;;
sh64* | sh5*) sh_multilibs=m5-32media,m5-32media-nofpu,m5-compact,m5-compact-nofpu,m5-64media,m5-64media-nofpu ;;
sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
sh*-*-linux*) sh_multilibs=m1,m3e,m4 ;;

View File

@ -0,0 +1,53 @@
diff -durN gcc-4.4.0.orig/libstdc++-v3/src/Makefile.am gcc-4.4.0/libstdc++-v3/src/Makefile.am
--- gcc-4.4.0.orig/libstdc++-v3/src/Makefile.am 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/libstdc++-v3/src/Makefile.am 2009-05-27 21:38:34.000000000 +0200
@@ -351,6 +351,13 @@
$(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+install-exec-local:
+ pic_objs=`sed -n "s:'::g;s:^pic_object=::p" *.lo | grep -v '^none$$'`; \
+ if [ x"$$pic_objs" != x ]; then \
+ $(AR) cru libstdc++_pic.a $$pic_objs $(top_builddir)/libsupc++/*.o || exit 1; \
+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) || exit 1; \
+ fi
+
# Added bits to build debug library.
if GLIBCXX_BUILD_DEBUG
all-local: build_debug
diff -durN gcc-4.4.0.orig/libstdc++-v3/src/Makefile.in gcc-4.4.0/libstdc++-v3/src/Makefile.in
--- gcc-4.4.0.orig/libstdc++-v3/src/Makefile.in 2009-01-17 03:03:25.000000000 +0100
+++ gcc-4.4.0/libstdc++-v3/src/Makefile.in 2009-05-27 21:38:34.000000000 +0200
@@ -726,7 +726,7 @@
install-data-am: install-data-local
-install-exec-am: install-toolexeclibLTLIBRARIES
+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
install-info: install-info-am
@@ -765,7 +765,7 @@
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-info-am \
- uninstall-toolexeclibLTLIBRARIES
+ uninstall-toolexeclibLTLIBRARIES install-exec-local
# Symbol versioning for shared libraries.
@@ -942,6 +942,14 @@
install_debug:
(cd ${debugdir} && $(MAKE) \
toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
+
+install-exec-local:
+ pic_objs=`sed -n "s:'::g;s:^pic_object=::p" *.lo | grep -v '^none$$'`; \
+ if [ x"$$pic_objs" != x ]; then \
+ $(AR) cru libstdc++_pic.a $$pic_objs $(top_builddir)/libsupc++/*.o || exit 1; \
+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) || exit 1; \
+ fi
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,79 @@
diff -durN gcc-4.4.0.orig/gcc/config/ia64/crtbegin.asm gcc-4.4.0/gcc/config/ia64/crtbegin.asm
--- gcc-4.4.0.orig/gcc/config/ia64/crtbegin.asm 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/gcc/config/ia64/crtbegin.asm 2009-05-27 21:38:37.000000000 +0200
@@ -252,3 +252,7 @@
.weak __cxa_finalize
#endif
.weak _Jv_RegisterClasses
+
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
diff -durN gcc-4.4.0.orig/gcc/config/ia64/crtend.asm gcc-4.4.0/gcc/config/ia64/crtend.asm
--- gcc-4.4.0.orig/gcc/config/ia64/crtend.asm 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/gcc/config/ia64/crtend.asm 2009-05-27 21:38:37.000000000 +0200
@@ -119,3 +119,7 @@
br.ret.sptk.many rp
.endp __do_global_ctors_aux
+
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
diff -durN gcc-4.4.0.orig/gcc/config/ia64/crti.asm gcc-4.4.0/gcc/config/ia64/crti.asm
--- gcc-4.4.0.orig/gcc/config/ia64/crti.asm 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/gcc/config/ia64/crti.asm 2009-05-27 21:38:37.000000000 +0200
@@ -51,3 +51,7 @@
.body
# end of crti.asm
+
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
diff -durN gcc-4.4.0.orig/gcc/config/ia64/crtn.asm gcc-4.4.0/gcc/config/ia64/crtn.asm
--- gcc-4.4.0.orig/gcc/config/ia64/crtn.asm 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/gcc/config/ia64/crtn.asm 2009-05-27 21:38:37.000000000 +0200
@@ -41,3 +41,7 @@
br.ret.sptk.many b0
# end of crtn.asm
+
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
diff -durN gcc-4.4.0.orig/gcc/config/ia64/lib1funcs.asm gcc-4.4.0/gcc/config/ia64/lib1funcs.asm
--- gcc-4.4.0.orig/gcc/config/ia64/lib1funcs.asm 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/gcc/config/ia64/lib1funcs.asm 2009-05-27 21:38:37.000000000 +0200
@@ -793,3 +793,7 @@
.endp __floattitf
#endif
#endif
+
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
diff -durN gcc-4.4.0.orig/gcc/config/ia64/linux.h gcc-4.4.0/gcc/config/ia64/linux.h
--- gcc-4.4.0.orig/gcc/config/ia64/linux.h 2009-02-12 17:30:53.000000000 +0100
+++ gcc-4.4.0/gcc/config/ia64/linux.h 2009-05-27 21:38:37.000000000 +0200
@@ -5,6 +5,8 @@
#define TARGET_VERSION fprintf (stderr, " (IA-64) Linux");
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+
/* This is for -profile to use -lc_p instead of -lc. */
#undef CC1_SPEC
#define CC1_SPEC "%{profile:-p} %{G*}"
diff -durN gcc-4.4.0.orig/gcc/config/rs6000/ppc-asm.h gcc-4.4.0/gcc/config/rs6000/ppc-asm.h
--- gcc-4.4.0.orig/gcc/config/rs6000/ppc-asm.h 2008-10-13 17:44:26.000000000 +0200
+++ gcc-4.4.0/gcc/config/rs6000/ppc-asm.h 2009-05-27 21:38:37.000000000 +0200
@@ -172,7 +172,7 @@
.size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name)
#endif
-#if defined __linux__ && !defined __powerpc64__
+#if defined __linux__
.section .note.GNU-stack
.previous
#endif

View File

@ -0,0 +1,25 @@
diff -durN gcc-4.4.0.orig/gcc/config/sh/lib1funcs.asm gcc-4.4.0/gcc/config/sh/lib1funcs.asm
--- gcc-4.4.0.orig/gcc/config/sh/lib1funcs.asm 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/gcc/config/sh/lib1funcs.asm 2009-05-27 21:38:39.000000000 +0200
@@ -30,6 +30,11 @@
!! recoded in assembly by Toshiyasu Morita
!! tm@netcom.com
+#if defined(__ELF__) && defined(__linux__)
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
ELF local label prefixes by J"orn Rennecke
amylaar@cygnus.com */
diff -durN gcc-4.4.0.orig/gcc/config/sh/linux-atomic.asm gcc-4.4.0/gcc/config/sh/linux-atomic.asm
--- gcc-4.4.0.orig/gcc/config/sh/linux-atomic.asm 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/gcc/config/sh/linux-atomic.asm 2009-05-27 21:38:39.000000000 +0200
@@ -136,3 +136,6 @@
ATOMIC_FETCH_AND_COMBOP(nand,and,not,4,l,mov)
#endif /* ! __SH5__ */
+
+.section .note.GNU-stack,"",%progbits
+.previous

View File

@ -0,0 +1,24 @@
diff -durN gcc-4.4.0.orig/gcc/configure gcc-4.4.0/gcc/configure
--- gcc-4.4.0.orig/gcc/configure 2009-05-27 21:38:08.000000000 +0200
+++ gcc-4.4.0/gcc/configure 2009-05-27 21:38:42.000000000 +0200
@@ -22205,7 +22205,7 @@
tls_first_minor=14
tls_as_opt="-m64 -Aesame --fatal-warnings"
;;
- sh-*-* | sh[34]-*-*)
+ sh-*-* | sh[34]*-*-*)
conftest_s='
.section ".tdata","awT",@progbits
foo: .long 25
diff -durN gcc-4.4.0.orig/gcc/configure.ac gcc-4.4.0/gcc/configure.ac
--- gcc-4.4.0.orig/gcc/configure.ac 2009-05-27 21:38:08.000000000 +0200
+++ gcc-4.4.0/gcc/configure.ac 2009-05-27 21:38:42.000000000 +0200
@@ -2673,7 +2673,7 @@
tls_first_minor=14
tls_as_opt="-m64 -Aesame --fatal-warnings"
;;
- sh-*-* | sh[34]-*-*)
+ sh-*-* | sh[34]*-*-*)
conftest_s='
.section ".tdata","awT",@progbits
foo: .long 25

View File

@ -0,0 +1,94 @@
diff -durN gcc-4.4.0.orig/gcc/config/freebsd-spec.h gcc-4.4.0/gcc/config/freebsd-spec.h
--- gcc-4.4.0.orig/gcc/config/freebsd-spec.h 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/gcc/config/freebsd-spec.h 2009-05-27 21:38:45.000000000 +0200
@@ -61,6 +61,8 @@
builtin_assert ("system=unix"); \
builtin_assert ("system=bsd"); \
builtin_assert ("system=FreeBSD"); \
+ if(!(flag_iso && (c_dialect_cxx () ? cxx_dialect == cxx98 : !flag_isoc99))) \
+ builtin_define("_LONGLONG"); \
FBSD_TARGET_CPU_CPP_BUILTINS(); \
} \
while (0)
diff -durN gcc-4.4.0.orig/gcc/config/t-freebsd-eh gcc-4.4.0/gcc/config/t-freebsd-eh
--- gcc-4.4.0.orig/gcc/config/t-freebsd-eh 1970-01-01 01:00:00.000000000 +0100
+++ gcc-4.4.0/gcc/config/t-freebsd-eh 2009-05-27 21:38:45.000000000 +0200
@@ -0,0 +1,4 @@
+# Use unwind-dw2-fde-glibc
+LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \
+ $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c
+LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c
diff -durN gcc-4.4.0.orig/gcc/config.gcc gcc-4.4.0/gcc/config.gcc
--- gcc-4.4.0.orig/gcc/config.gcc 2009-05-27 21:38:34.000000000 +0200
+++ gcc-4.4.0/gcc/config.gcc 2009-05-27 21:38:45.000000000 +0200
@@ -456,7 +456,7 @@
# pleases around the provided core setting.
gas=yes
gnu_ld=yes
- extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
tmake_file="t-slibgcc-elf-ver t-freebsd"
@@ -1042,6 +1042,10 @@
;;
i[34567]86-*-freebsd*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
+ fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
+ if test ${fbsd_major} -ge 7; then
+ tmake_file="${tmake_file} t-freebsd-eh"
+ fi
;;
x86_64-*-freebsd*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
diff -durN gcc-4.4.0.orig/gcc/crtstuff.c gcc-4.4.0/gcc/crtstuff.c
--- gcc-4.4.0.orig/gcc/crtstuff.c 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/gcc/crtstuff.c 2009-05-27 21:38:45.000000000 +0200
@@ -85,13 +85,15 @@
&& !defined(OBJECT_FORMAT_FLAT) \
&& defined(HAVE_LD_EH_FRAME_HDR) \
&& !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
- && defined(__GLIBC__) && __GLIBC__ >= 2
+ && ((defined(__GLIBC__) && __GLIBC__ >= 2) \
+ || (defined(__FreeBSD_version) && __FreeBSD_version >= 700022))
#include <link.h>
/* uClibc pretends to be glibc 2.2 and DT_CONFIG is defined in its link.h.
But it doesn't use PT_GNU_EH_FRAME ELF segment currently. */
# if !defined(__UCLIBC__) \
- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
+ || (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
+ || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) \
+ || (__FreeBSD_version >= 700022)
# define USE_PT_GNU_EH_FRAME
# endif
#endif
diff -durN gcc-4.4.0.orig/gcc/unwind-dw2-fde-glibc.c gcc-4.4.0/gcc/unwind-dw2-fde-glibc.c
--- gcc-4.4.0.orig/gcc/unwind-dw2-fde-glibc.c 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/gcc/unwind-dw2-fde-glibc.c 2009-05-27 21:38:45.000000000 +0200
@@ -46,8 +46,9 @@
#include "gthr.h"
#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
+ && ((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
+ || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) \
+ || (__FreeBSD_version >= 700022 ))
#ifndef __RELOC_POINTER
# define __RELOC_POINTER(ptr, base) ((ptr) + (base))
@@ -63,6 +64,13 @@
#define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550)
#endif
+/* Support FreeBSD */
+#ifndef ElfW
+# ifdef __ElfN
+# define ElfW __ElfN
+# endif
+#endif
+
struct unw_eh_callback_data
{
_Unwind_Ptr pc;

View File

@ -0,0 +1,64 @@
diff -durN gcc-4.4.0.orig/gcc/config/freebsd-spec.h gcc-4.4.0/gcc/config/freebsd-spec.h
--- gcc-4.4.0.orig/gcc/config/freebsd-spec.h 2009-05-27 21:38:47.000000000 +0200
+++ gcc-4.4.0/gcc/config/freebsd-spec.h 2009-05-27 21:38:47.000000000 +0200
@@ -86,9 +86,10 @@
#define FBSD_STARTFILE_SPEC \
"%{!shared: \
%{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
- %{!p:%{profile:gcrt1.o%s} \
- %{!profile:crt1.o%s}}}} \
- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
+ %{!p:%{profile:gcrt1.o%s} \
+ %{!profile:crt1.o%s}}}} \
+ crti.o%s \
+ %{static:crtbeginT.o%s;shared:crtbeginS.o%s;:crtbegin.o%s}"
/* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on
the magical crtend.o file (see crtstuff.c) which provides part of
@@ -126,7 +127,8 @@
%{pg: -lc_p} \
}"
#else
-#if FBSD_MAJOR < 5
+#include <sys/param.h>
+#if __FreeBSD_version < 500016
#define FBSD_LIB_SPEC " \
%{!shared: \
%{!pg: \
@@ -136,17 +138,34 @@
%{!pthread:-lc_p} \
%{pthread:-lc_r_p}} \
}"
-#else
+#elif __FreeBSD_version < 700022
#define FBSD_LIB_SPEC " \
%{!shared: \
%{!pg: %{pthread:-lpthread} -lc} \
%{pg: %{pthread:-lpthread_p} -lc_p} \
}"
+#else
+#define FBSD_LIB_SPEC " \
+ %{!shared: \
+ %{!pg: %{pthread:-lpthread} -lc} \
+ %{pg: %{pthread:-lpthread_p} -lc_p}} \
+ %{shared: \
+ %{pthread:-lpthread} -lc} \
+ "
#endif
#endif
-#if FBSD_MAJOR < 6
+#if FBSD_MAJOR < 5
#define FBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.1"
#else
#define FBSD_DYNAMIC_LINKER "/libexec/ld-elf.so.1"
#endif
+
+#if defined(HAVE_LD_EH_FRAME_HDR)
+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
+#endif
+
+/* Use --as-needed -lgcc_s for eh support. */
+#ifdef HAVE_LD_AS_NEEDED
+#define USE_LD_AS_NEEDED 1
+#endif

View File

@ -0,0 +1,180 @@
diff -durN gcc-4.4.0.orig/gcc/Makefile.in gcc-4.4.0/gcc/Makefile.in
--- gcc-4.4.0.orig/gcc/Makefile.in 2009-03-25 13:00:32.000000000 +0100
+++ gcc-4.4.0/gcc/Makefile.in 2009-05-27 21:38:50.000000000 +0200
@@ -2785,7 +2785,8 @@
value-prof.h $(TREE_INLINE_H) $(TARGET_H)
cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \
- output.h $(TOPLEV_H) $(FUNCTION_H) except.h $(TM_P_H) insn-config.h $(EXPR_H) \
+ output.h $(TOPLEV_H) $(FUNCTION_H) except.h $(TM_P_H) $(INSN_ATTR_H) \
+ insn-config.h $(EXPR_H) \
$(CFGLAYOUT_H) $(CFGLOOP_H) $(OBSTACK_H) $(TARGET_H) $(TREE_H) \
tree-pass.h $(DF_H) $(GGC_H)
cfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
diff -durN gcc-4.4.0.orig/gcc/cfgrtl.c gcc-4.4.0/gcc/cfgrtl.c
--- gcc-4.4.0.orig/gcc/cfgrtl.c 2008-12-12 22:16:09.000000000 +0100
+++ gcc-4.4.0/gcc/cfgrtl.c 2009-05-27 21:38:50.000000000 +0200
@@ -53,6 +53,7 @@
#include "toplev.h"
#include "tm_p.h"
#include "obstack.h"
+#include "insn-attr.h"
#include "insn-config.h"
#include "cfglayout.h"
#include "expr.h"
@@ -427,13 +428,27 @@
return 0;
}
+static unsigned int
+rest_of_pass_free_cfg (void)
+{
+#ifdef DELAY_SLOTS
+ /* The resource.c machinery uses DF but the CFG isn't guaranteed to be
+ valid at that point so it would be too late to call df_analyze. */
+ if (optimize > 0 && flag_delayed_branch)
+ df_analyze ();
+#endif
+
+ free_bb_for_insn ();
+ return 0;
+}
+
struct rtl_opt_pass pass_free_cfg =
{
{
RTL_PASS,
NULL, /* name */
NULL, /* gate */
- free_bb_for_insn, /* execute */
+ rest_of_pass_free_cfg, /* execute */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
diff -durN gcc-4.4.0.orig/gcc/resource.c gcc-4.4.0/gcc/resource.c
--- gcc-4.4.0.orig/gcc/resource.c 2009-02-20 16:20:38.000000000 +0100
+++ gcc-4.4.0/gcc/resource.c 2009-05-27 21:38:50.000000000 +0200
@@ -135,8 +135,6 @@
static int
find_basic_block (rtx insn, int search_limit)
{
- basic_block bb;
-
/* Scan backwards to the previous BARRIER. Then see if we can find a
label that starts a basic block. Return the basic block number. */
for (insn = prev_nonnote_insn (insn);
@@ -157,11 +155,8 @@
for (insn = next_nonnote_insn (insn);
insn && LABEL_P (insn);
insn = next_nonnote_insn (insn))
- {
- FOR_EACH_BB (bb)
- if (insn == BB_HEAD (bb))
- return bb->index;
- }
+ if (BLOCK_FOR_INSN (insn))
+ return BLOCK_FOR_INSN (insn)->index;
return -1;
}
@@ -848,13 +843,12 @@
(with no intervening active insns) to see if any of them start a basic
block. If we hit the start of the function first, we use block 0.
- Once we have found a basic block and a corresponding first insns, we can
- accurately compute the live status from basic_block_live_regs and
- reg_renumber. (By starting at a label following a BARRIER, we are immune
- to actions taken by reload and jump.) Then we scan all insns between
- that point and our target. For each CLOBBER (or for call-clobbered regs
- when we pass a CALL_INSN), mark the appropriate registers are dead. For
- a SET, mark them as live.
+ Once we have found a basic block and a corresponding first insn, we can
+ accurately compute the live status (by starting at a label following a
+ BARRIER, we are immune to actions taken by reload and jump.) Then we
+ scan all insns between that point and our target. For each CLOBBER (or
+ for call-clobbered regs when we pass a CALL_INSN), mark the appropriate
+ registers are dead. For a SET, mark them as live.
We have to be careful when using REG_DEAD notes because they are not
updated by such things as find_equiv_reg. So keep track of registers
@@ -954,13 +948,10 @@
TARGET. Otherwise, we must assume everything is live. */
if (b != -1)
{
- regset regs_live = DF_LR_IN (BASIC_BLOCK (b));
+ regset regs_live = df_get_live_in (BASIC_BLOCK (b));
rtx start_insn, stop_insn;
- /* Compute hard regs live at start of block -- this is the real hard regs
- marked live, plus live pseudo regs that have been renumbered to
- hard regs. */
-
+ /* Compute hard regs live at start of block. */
REG_SET_TO_HARD_REG_SET (current_live_regs, regs_live);
/* Get starting and ending insn, handling the case where each might
@@ -1046,10 +1037,24 @@
else if (LABEL_P (real_insn))
{
+ basic_block bb;
+
/* A label clobbers the pending dead registers since neither
reload nor jump will propagate a value across a label. */
AND_COMPL_HARD_REG_SET (current_live_regs, pending_dead_regs);
CLEAR_HARD_REG_SET (pending_dead_regs);
+
+ /* We must conservatively assume that all registers that used
+ to be live here still are. The fallthrough edge may have
+ left a live register uninitialized. */
+ bb = BLOCK_FOR_INSN (real_insn);
+ if (bb)
+ {
+ HARD_REG_SET extra_live;
+
+ REG_SET_TO_HARD_REG_SET (extra_live, df_get_live_in (bb));
+ IOR_HARD_REG_SET (current_live_regs, extra_live);
+ }
}
/* The beginning of the epilogue corresponds to the end of the
@@ -1121,6 +1126,7 @@
init_resource_info (rtx epilogue_insn)
{
int i;
+ basic_block bb;
/* Indicate what resources are required to be valid at the end of the current
function. The condition code never is and memory always is. If the
@@ -1189,6 +1195,11 @@
/* Allocate and initialize the tables used by mark_target_live_regs. */
target_hash_table = XCNEWVEC (struct target_info *, TARGET_HASH_PRIME);
bb_ticks = XCNEWVEC (int, last_basic_block);
+
+ /* Set the BLOCK_FOR_INSN of each label that starts a basic block. */
+ FOR_EACH_BB (bb)
+ if (LABEL_P (BB_HEAD (bb)))
+ BLOCK_FOR_INSN (BB_HEAD (bb)) = bb;
}
/* Free up the resources allocated to mark_target_live_regs (). This
@@ -1197,6 +1208,8 @@
void
free_resource_info (void)
{
+ basic_block bb;
+
if (target_hash_table != NULL)
{
int i;
@@ -1222,6 +1235,10 @@
free (bb_ticks);
bb_ticks = NULL;
}
+
+ FOR_EACH_BB (bb)
+ if (LABEL_P (BB_HEAD (bb)))
+ BLOCK_FOR_INSN (BB_HEAD (bb)) = NULL;
}
/* Clear any hashed information that we have stored for INSN. */

View File

@ -0,0 +1,35 @@
diff -durN gcc-4.4.0.orig/contrib/regression/objs-gcc.sh gcc-4.4.0/contrib/regression/objs-gcc.sh
--- gcc-4.4.0.orig/contrib/regression/objs-gcc.sh 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/contrib/regression/objs-gcc.sh 2009-05-27 21:38:53.000000000 +0200
@@ -106,6 +106,10 @@
then
make all-gdb all-dejagnu all-ld || exit 1
make install-gdb install-dejagnu install-ld || exit 1
+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
+ then
+ make all-gdb all-dejagnu all-ld || exit 1
+ make install-gdb install-dejagnu install-ld || exit 1
elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
make bootstrap || exit 1
make install || exit 1
diff -durN gcc-4.4.0.orig/libjava/classpath/ltconfig gcc-4.4.0/libjava/classpath/ltconfig
--- gcc-4.4.0.orig/libjava/classpath/ltconfig 2007-06-04 01:18:43.000000000 +0200
+++ gcc-4.4.0/libjava/classpath/ltconfig 2009-05-27 21:38:53.000000000 +0200
@@ -603,7 +603,7 @@
# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
case $host_os in
-linux-gnu*) ;;
+linux-gnu*|linux-uclibc*) ;;
linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
esac
@@ -1251,7 +1251,7 @@
;;
# This must be Linux ELF.
-linux-gnu*)
+linux*)
version_type=linux
need_lib_prefix=no
need_version=no

View File

@ -0,0 +1,12 @@
diff -durN gcc-4.4.0.orig/boehm-gc/include/gc.h gcc-4.4.0/boehm-gc/include/gc.h
--- gcc-4.4.0.orig/boehm-gc/include/gc.h 2007-04-23 23:10:09.000000000 +0200
+++ gcc-4.4.0/boehm-gc/include/gc.h 2009-05-27 21:38:55.000000000 +0200
@@ -503,7 +503,7 @@
#if defined(__linux__) || defined(__GLIBC__)
# include <features.h>
# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
- && !defined(__ia64__)
+ && !defined(__ia64__) && !defined(__UCLIBC__)
# ifndef GC_HAVE_BUILTIN_BACKTRACE
# define GC_HAVE_BUILTIN_BACKTRACE
# endif

View File

@ -0,0 +1,12 @@
diff -durN gcc-4.4.0.orig/libstdc++-v3/include/c_global/cstdio gcc-4.4.0/libstdc++-v3/include/c_global/cstdio
--- gcc-4.4.0.orig/libstdc++-v3/include/c_global/cstdio 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/libstdc++-v3/include/c_global/cstdio 2009-05-27 21:38:58.000000000 +0200
@@ -139,7 +139,7 @@
_GLIBCXX_END_NAMESPACE
-#if _GLIBCXX_USE_C99
+#if _GLIBCXX_USE_C99 || defined __UCLIBC__
#undef snprintf
#undef vfscanf

View File

@ -0,0 +1,48 @@
diff -durN gcc-4.4.0.orig/libmudflap/mf-hooks2.c gcc-4.4.0/libmudflap/mf-hooks2.c
--- gcc-4.4.0.orig/libmudflap/mf-hooks2.c 2009-04-10 01:23:07.000000000 +0200
+++ gcc-4.4.0/libmudflap/mf-hooks2.c 2009-05-27 21:39:00.000000000 +0200
@@ -421,7 +421,7 @@
{
TRACE ("%s\n", __PRETTY_FUNCTION__);
MF_VALIDATE_EXTENT(s, n, __MF_CHECK_WRITE, "bzero region");
- bzero (s, n);
+ memset (s, 0, n);
}
@@ -431,7 +431,7 @@
TRACE ("%s\n", __PRETTY_FUNCTION__);
MF_VALIDATE_EXTENT(src, n, __MF_CHECK_READ, "bcopy src");
MF_VALIDATE_EXTENT(dest, n, __MF_CHECK_WRITE, "bcopy dest");
- bcopy (src, dest, n);
+ memmove (dest, src, n);
}
@@ -441,7 +441,7 @@
TRACE ("%s\n", __PRETTY_FUNCTION__);
MF_VALIDATE_EXTENT(s1, n, __MF_CHECK_READ, "bcmp 1st arg");
MF_VALIDATE_EXTENT(s2, n, __MF_CHECK_READ, "bcmp 2nd arg");
- return bcmp (s1, s2, n);
+ return n == 0 ? 0 : memcmp (s1, s2, n);
}
@@ -450,7 +450,7 @@
size_t n = strlen (s);
TRACE ("%s\n", __PRETTY_FUNCTION__);
MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "index region");
- return index (s, c);
+ return strchr (s, c);
}
@@ -459,7 +459,7 @@
size_t n = strlen (s);
TRACE ("%s\n", __PRETTY_FUNCTION__);
MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "rindex region");
- return rindex (s, c);
+ return strrchr (s, c);
}
/* XXX: stpcpy, memccpy */

View File

@ -0,0 +1,12 @@
diff -durN glibc-cvs-2.9.orig/misc/syslog.c glibc-cvs-2.9/misc/syslog.c
--- glibc-cvs-2.9.orig/misc/syslog.c 2009-06-01 10:16:50.000000000 +0200
+++ glibc-cvs-2.9/misc/syslog.c 2009-06-01 10:17:20.000000000 +0200
@@ -152,7 +152,7 @@
#define INTERNALLOG LOG_ERR|LOG_CONS|LOG_PERROR|LOG_PID
/* Check for invalid bits. */
if (pri & ~(LOG_PRIMASK|LOG_FACMASK)) {
- syslog(INTERNALLOG,
+ __syslog(INTERNALLOG,
"syslog: unknown facility/priority: %x", pri);
pri &= LOG_PRIMASK|LOG_FACMASK;
}

View File

@ -0,0 +1,24 @@
diff -dur glibc-cvs-2.9.orig/debug/readlink_chk.c glibc-cvs-2.9/debug/readlink_chk.c
--- glibc-cvs-2.9.orig/debug/readlink_chk.c 2005-03-01 01:41:15.000000000 +0100
+++ glibc-cvs-2.9/debug/readlink_chk.c 2009-06-01 10:59:37.000000000 +0200
@@ -25,7 +25,7 @@
ssize_t
-__readlink_chk (const char *path, void *buf, size_t len, size_t buflen)
+__readlink_chk (const char *path, char *buf, size_t len, size_t buflen)
{
if (len > buflen)
__chk_fail ();
diff -dur glibc-cvs-2.9.orig/debug/readlinkat_chk.c glibc-cvs-2.9/debug/readlinkat_chk.c
--- glibc-cvs-2.9.orig/debug/readlinkat_chk.c 2006-04-24 18:56:12.000000000 +0200
+++ glibc-cvs-2.9/debug/readlinkat_chk.c 2009-06-01 11:07:26.000000000 +0200
@@ -21,7 +21,7 @@
ssize_t
-__readlinkat_chk (int fd, const char *path, void *buf, size_t len,
+__readlinkat_chk (int fd, const char *path, char *buf, size_t len,
size_t buflen)
{
if (len > buflen)

View File

@ -0,0 +1,23 @@
Patch from upstream:
http://strace.cvs.sourceforge.net/viewvc/strace/strace/linux/arm/syscallent.h?r1=1.17&r2=1.18&sortby=file
2008-11-13 Kirill A. Shutemov <kirill@shutemov.name>
* linux/arm/syscallent.h: Fix build on ARM EABI which does not
provide syscalls socketcall and ipc.
--- strace-4.5.18.orig/linux/arm/syscallent.h 2008/12/29 20:04:15 1.17
+++ strace-4.5.18/linux/arm/syscallent.h 2009/01/01 23:20:38 1.18
@@ -431,6 +431,7 @@
{ 5, 0, printargs, "SYS_398" }, /* 398 */
{ 5, 0, printargs, "SYS_399" }, /* 399 */
+#ifndef __ARM_EABI__
#if SYS_socket_subcall != 400
#error fix me
#endif
@@ -481,3 +482,4 @@
{ 4, TI, sys_shmdt, "shmdt" }, /* 440 */
{ 4, TI, sys_shmget, "shmget" }, /* 441 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 442 */
+#endif

View File

@ -0,0 +1,426 @@
#
# Automatically generated make config: don't edit
# crosstool-NG version: svn_devel_gcc-4.4@1589
# Tue Jun 2 23:13:19 2009
#
#
# Paths and misc options
#
#
# crosstool-NG behavior
#
# CT_OBSOLETE is not set
CT_EXPERIMENTAL=y
# CT_DEBUG_CT is not set
#
# Paths
#
CT_LOCAL_TARBALLS_DIR="${HOME}/src"
CT_SAVE_TARBALLS=y
CT_WORK_DIR="${CT_TOP_DIR}/targets"
CT_PREFIX_DIR="${HOME}/x-tools/${CT_TARGET}"
CT_INSTALL_DIR="${CT_PREFIX_DIR}"
# CT_CUSTOM_PATCH is not set
CT_REMOVE_DOCS=y
CT_INSTALL_DIR_RO=y
#
# Downloading
#
# CT_FORBID_DOWNLOAD is not set
# CT_FORCE_DOWNLOAD is not set
# CT_USE_MIRROR is not set
CT_CONNECT_TIMEOUT=10
# CT_ONLY_DOWNLOAD is not set
#
# Extracting
#
# CT_FORCE_EXTRACT is not set
CT_OVERIDE_CONFIG_GUESS_SUB=y
# CT_ONLY_EXTRACT is not set
#
# Build behavior
#
CT_PARALLEL_JOBS=1
CT_LOAD=0
CT_NICE=0
CT_USE_PIPES=y
# CT_CONFIG_SHELL_ASH is not set
#
# Logging
#
# CT_LOG_ERROR is not set
# CT_LOG_WARN is not set
# CT_LOG_INFO is not set
CT_LOG_EXTRA=y
# CT_LOG_DEBUG is not set
# CT_LOG_ALL is not set
CT_LOG_LEVEL_MAX="EXTRA"
# CT_LOG_SEE_TOOLS_WARN is not set
CT_LOG_PROGRESS_BAR=y
CT_LOG_TO_FILE=y
CT_LOG_FILE_COMPRESS=y
#
# Target options
#
CT_ARCH="arm"
# CT_ARCH_64 is not set
# CT_ARCH_SUPPORTS_BOTH_MMU is not set
CT_ARCH_SUPPORTS_BOTH_ENDIAN=y
CT_ARCH_SUPPORT_ARCH=y
# CT_ARCH_SUPPORT_ABI is not set
CT_ARCH_SUPPORT_CPU=y
CT_ARCH_SUPPORT_TUNE=y
CT_ARCH_SUPPORT_FPU=y
# CT_ARCH_DEFAULT_HAS_MMU is not set
# CT_ARCH_DEFAULT_BE is not set
CT_ARCH_DEFAULT_LE=y
CT_ARCH_ARCH="armv7-a"
CT_ARCH_CPU="cortex-a8"
CT_ARCH_TUNE="cortex-a8"
CT_ARCH_FPU=""
# CT_ARCH_BE is not set
CT_ARCH_LE=y
# CT_ARCH_FLOAT_HW is not set
CT_ARCH_FLOAT_SW=y
CT_TARGET_CFLAGS=""
CT_TARGET_LDFLAGS=""
#
# General target options
#
# CT_ARCH_alpha is not set
CT_ARCH_arm=y
# CT_ARCH_ia64 is not set
# CT_ARCH_mips is not set
# CT_ARCH_powerpc is not set
# CT_ARCH_powerpc64 is not set
# CT_ARCH_sh is not set
# CT_ARCH_x86 is not set
# CT_ARCH_x86_64 is not set
CT_ARCH_ARM_EABI=y
CT_ARCH_USE_MMU=y
#
# Target optimisations
#
#
# Toolchain options
#
#
# General toolchain options
#
CT_USE_SYSROOT=y
CT_SYSROOT_DIR_PREFIX=""
CT_SHARED_LIBS=y
#
# Tuple completion and aliasing
#
CT_TARGET_VENDOR="cortex_a8"
CT_TARGET_ALIAS_SED_EXPR=""
CT_TARGET_ALIAS=""
#
# Toolchain type
#
# CT_NATIVE is not set
CT_CROSS=y
# CT_CROSS_NATIVE is not set
# CT_CANADIAN is not set
CT_TOOLCHAIN_TYPE="cross"
#
# Build system
#
CT_BUILD=""
CT_BUILD_PREFIX=""
CT_BUILD_SUFFIX=""
#
# Operating System
#
# CT_BARE_METAL is not set
CT_KERNEL="linux"
CT_KERNEL_VERSION="2.6.29.2"
# CT_KERNEL_bare_metal is not set
CT_KERNEL_linux=y
CT_KERNEL_LINUX_INSTALL=y
CT_KERNEL_LINUX_INSTALL_CHECK=y
# CT_KERNEL_V_2_6_18_8 is not set
# CT_KERNEL_V_2_6_19_7 is not set
# CT_KERNEL_V_2_6_20_21 is not set
# CT_KERNEL_V_2_6_21_7 is not set
# CT_KERNEL_V_2_6_22_19 is not set
# CT_KERNEL_V_2_6_23_17 is not set
# CT_KERNEL_V_2_6_24_7 is not set
# CT_KERNEL_V_2_6_25_20 is not set
# CT_KERNEL_V_2_6_26_8 is not set
# CT_KERNEL_V_2_6_27_22 is not set
# CT_KERNEL_V_2_6_28 is not set
# CT_KERNEL_V_2_6_28_1 is not set
# CT_KERNEL_V_2_6_28_2 is not set
# CT_KERNEL_V_2_6_28_3 is not set
# CT_KERNEL_V_2_6_28_4 is not set
# CT_KERNEL_V_2_6_28_5 is not set
# CT_KERNEL_V_2_6_28_6 is not set
# CT_KERNEL_V_2_6_28_7 is not set
# CT_KERNEL_V_2_6_28_8 is not set
# CT_KERNEL_V_2_6_28_9 is not set
# CT_KERNEL_V_2_6_28_10 is not set
# CT_KERNEL_V_2_6_29 is not set
# CT_KERNEL_V_2_6_29_1 is not set
CT_KERNEL_V_2_6_29_2=y
# CT_KERNEL_V_select is not set
CT_KERNEL_LINUX_VERBOSITY_0=y
# CT_KERNEL_LINUX_VERBOSITY_1 is not set
# CT_KERNEL_LINUX_VERBOSITY_2 is not set
CT_KERNEL_LINUX_VERBOSE_LEVEL=0
# CT_KERNEL_LINUX_USE_CUSTOM_HEADERS is not set
#
# Companion libraries
#
CT_GMP_MPFR=y
# CT_GMP_V_4_2_2 is not set
CT_GMP_V_4_2_4=y
CT_GMP_VERSION="4.2.4"
# CT_MPFR_V_2_3_1 is not set
# CT_MPFR_V_2_3_2 is not set
# CT_MPFR_V_2_4_0 is not set
CT_MPFR_V_2_4_1=y
CT_MPFR_VERSION="2.4.1"
CT_PPL_CLOOG_MPC=y
CT_PPL_V_0_10_2=y
CT_PPL_VERSION="0.10.2"
CT_CLOOG_V_0_15_3=y
CT_CLOOG_VERSION="0.15.3"
CT_MPC_V_0_6=y
CT_MPC_VERSION="0.6"
#
# Companion libraries common options
#
# CT_COMP_LIBS_CHECK is not set
CT_COMP_LIBS_TARGET=y
#
# Binary utilities
#
CT_ARCH_BINFMT_ELF=y
# CT_ARCH_BINFMT_FLAT is not set
#
# GNU binutils
#
CT_BINUTILS_VERSION="2.19.1"
# CT_BINUTILS_V_2_14 is not set
# CT_BINUTILS_V_2_15 is not set
# CT_BINUTILS_V_2_16_1 is not set
# CT_BINUTILS_V_2_17 is not set
# CT_BINUTILS_V_2_18 is not set
# CT_BINUTILS_V_2_18_50_0_4 is not set
# CT_BINUTILS_V_2_18_50_0_6 is not set
# CT_BINUTILS_V_2_18_50_0_7 is not set
# CT_BINUTILS_V_2_18_50_0_8 is not set
# CT_BINUTILS_V_2_18_50_0_9 is not set
# CT_BINUTILS_V_2_18_90 is not set
# CT_BINUTILS_V_2_18_91 is not set
# CT_BINUTILS_V_2_18_92 is not set
# CT_BINUTILS_V_2_18_93 is not set
# CT_BINUTILS_V_2_19 is not set
CT_BINUTILS_V_2_19_1=y
# CT_BINUTILS_V_2_19_50_0_1 is not set
# CT_BINUTILS_V_2_19_51_0_1 is not set
# CT_BINUTILS_V_2_19_51_0_2 is not set
CT_BINUTILS_EXTRA_CONFIG=""
CT_BINUTILS_FOR_TARGET=y
CT_BINUTILS_FOR_TARGET_IBERTY=y
CT_BINUTILS_FOR_TARGET_BFD=y
#
# C compiler
#
CT_CC="gcc"
CT_CC_VERSION="4.4.0"
CT_CC_gcc=y
# CT_CC_V_3_2_3 is not set
# CT_CC_V_3_3_6 is not set
# CT_CC_V_3_4_6 is not set
# CT_CC_V_4_0_0 is not set
# CT_CC_V_4_0_1 is not set
# CT_CC_V_4_0_2 is not set
# CT_CC_V_4_0_3 is not set
# CT_CC_V_4_0_4 is not set
# CT_CC_V_4_1_0 is not set
# CT_CC_V_4_1_1 is not set
# CT_CC_V_4_1_2 is not set
# CT_CC_V_4_2_0 is not set
# CT_CC_V_4_2_1 is not set
# CT_CC_V_4_2_2 is not set
# CT_CC_V_4_2_3 is not set
# CT_CC_V_4_2_4 is not set
# CT_CC_V_4_3_0 is not set
# CT_CC_V_4_3_1 is not set
# CT_CC_V_4_3_2 is not set
# CT_CC_V_4_3_3 is not set
CT_CC_V_4_4_0=y
CT_CC_GCC_4_3_or_later=y
CT_CC_GCC_4_4_or_later=y
CT_CC_CXA_ATEXIT=y
CT_CC_SJLJ_EXCEPTIONS_CONFIGURE=y
# CT_CC_SJLJ_EXCEPTIONS_USE is not set
# CT_CC_SJLJ_EXCEPTIONS_DONT_USE is not set
CT_CC_CORE_EXTRA_CONFIG=""
CT_CC_EXTRA_CONFIG=""
CT_CC_PKGVERSION="crosstool-NG-${CT_VERSION}"
CT_CC_BUGURL=""
CT_CC_SUPPORT_CXX=y
CT_CC_SUPPORT_FORTRAN=y
CT_CC_SUPPORT_JAVA=y
CT_CC_SUPPORT_ADA=y
CT_CC_SUPPORT_OBJC=y
CT_CC_SUPPORT_OBJCXX=y
#
# Additional supported languages:
#
CT_CC_LANG_CXX=y
# CT_CC_LANG_FORTRAN is not set
# CT_CC_LANG_JAVA is not set
# CT_CC_LANG_ADA is not set
# CT_CC_LANG_OBJC is not set
# CT_CC_LANG_OBJCXX is not set
CT_CC_LANG_OTHERS=""
CT_LIBC="glibc"
#
# C-library
#
CT_LIBC_VERSION="2.9"
# CT_LIBC_eglibc is not set
CT_LIBC_glibc=y
# CT_LIBC_uClibc is not set
# CT_LIBC_V_2_3_6 is not set
# CT_LIBC_V_2_5 is not set
# CT_LIBC_V_2_5_1 is not set
# CT_LIBC_V_2_6 is not set
# CT_LIBC_V_2_6_1 is not set
# CT_LIBC_V_2_7 is not set
# CT_LIBC_V_2_8 is not set
CT_LIBC_V_2_9=y
# CT_LIBC_V_LATEST is not set
# CT_LIBC_V_date is not set
CT_LIBC_GLIBC_2_8_or_later=y
# CT_LIBC_GLIBC_TARBALL is not set
CT_LIBC_GLIBC_CVS=y
CT_LIBC_GLIBC_CVS_date="2009-05-27"
#
# glibc/eglibc common options
#
CT_LIBC_GLIBC_EXTRA_CONFIG=""
CT_LIBC_GLIBC_CONFIGPARMS=""
CT_LIBC_GLIBC_EXTRA_CFLAGS=""
CT_LIBC_EXTRA_CC_ARGS=""
CT_LIBC_GLIBC_USE_PORTS=y
CT_LIBC_ADDONS_LIST=""
#
# WARNING!!!
#
#
# For glibc >= 2.8, addons are only available via a CVS checkout.
#
#
# Be sure to review the associated options, above.
#
# CT_LIBC_GLIBC_KERNEL_VERSION_NONE is not set
CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS=y
# CT_LIBC_GLIBC_KERNEL_VERSION_CHOSEN is not set
CT_LIBC_GLIBC_MIN_KERNEL="2.6.29.2"
#
# Common C library options
#
CT_LIBC_SUPPORT_NPTL=y
CT_LIBC_SUPPORT_LINUXTHREADS=y
CT_THREADS="nptl"
CT_THREADS_NPTL=y
# CT_THREADS_LINUXTHREADS is not set
# CT_THREADS_NONE is not set
#
# Tools facilities
#
CT_TOOL_libelf=y
CT_LIBELF_V_0_8_10=y
CT_LIBELF_VERSION="0.8.10"
CT_TOOL_sstrip=y
CT_SSTRIP_BUILDROOT=y
# CT_SSTRIP_ELFKICKERS is not set
CT_SSTRIP_FROM="buildroot"
#
# Debug facilities
#
CT_DEBUG_dmalloc=y
# CT_DMALLOC_V_5_4_3 is not set
CT_DMALLOC_V_5_5_2=y
CT_DMALLOC_VERSION="5.5.2"
CT_DEBUG_duma=y
CT_DUMA_A=y
CT_DUMA_SO=y
# CT_DUMA_V_2_5_1 is not set
# CT_DUMA_V_2_5_8 is not set
# CT_DUMA_V_2_5_12 is not set
CT_DUMA_V_2_5_14=y
CT_DUMA_VERSION="2_5_14"
CT_DEBUG_gdb=y
CT_GDB_CROSS=y
# CT_GDB_CROSS_STATIC is not set
# CT_GDB_CROSS_INSIGHT is not set
CT_GDB_NATIVE=y
# CT_GDB_NATIVE_STATIC is not set
CT_GDB_NATIVE_USE_GMP_MPFR=y
CT_GDB_GDBSERVER=y
CT_GDB_GDBSERVER_STATIC=y
# CT_GDB_V_6_4 is not set
# CT_GDB_V_6_5 is not set
# CT_GDB_V_6_6 is not set
# CT_GDB_V_6_7 is not set
# CT_GDB_V_6_7_1 is not set
CT_GDB_V_6_8=y
# CT_GDB_V_snapshot is not set
CT_GDB_VERSION="6.8"
#
# Native gdb needs a native ncurses library
#
# CT_NCURSES_V_5_6 is not set
CT_NCURSES_V_5_7=y
CT_NCURSES_VERSION="5.7"
CT_DEBUG_ltrace=y
# CT_LTRACE_V_0_4 is not set
# CT_LTRACE_V_0_5 is not set
CT_LTRACE_V_0_5_1=y
CT_LTRACE_VERSION="0.5.1"
CT_DEBUG_strace=y
# CT_STRACE_V_4_5 is not set
# CT_STRACE_V_4_5_14 is not set
# CT_STRACE_V_4_5_15 is not set
# CT_STRACE_V_4_5_16 is not set
# CT_STRACE_V_4_5_17 is not set
CT_STRACE_V_4_5_18=y
CT_STRACE_VERSION="4.5.18"

View File

@ -0,0 +1,3 @@
reporter_name="Yann E. MORIN"
reporter_url="http://ymorin.is-a-geek.org/"
reporter_comment=""

View File

@ -13,7 +13,7 @@ Usage: ${myname} <tool> <[options] version [...]> ...
'tool' in one of:
--gcc, --binutils, --glibc, --eglibc, --uClibc, --linux,
--gdb, --dmalloc, --duma, --strace, --ltrace, --libelf
--gmp, --mpfr, --ppl
--gmp, --mpfr, --ppl, --cloog
Valid options for all tools:
--stable, -s, +x (default)
@ -134,6 +134,7 @@ while [ $# -gt 0 ]; do
--gmp) EXP=; OBS=; cat=GMP; tool=gmp; tool_prefix=companion_libs;;
--mpfr) EXP=; OBS=; cat=MPFR; tool=mpfr; tool_prefix=companion_libs;;
--ppl) EXP=; OBS=; cat=PPL; tool=ppl; tool_prefix=companion_libs;;
--cloog) EXP=; OBS=; cat=CLOOG; tool=cloog; tool_prefix=companion_libs;;
# Tools options:
-x|--experimental|+s) EXP=1;;

View File

@ -4,18 +4,16 @@
# Download gcc
do_cc_get() {
local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}"
# Ah! gcc folks are kind of 'different': they store the tarballs in
# subdirectories of the same name! That's because gcc is such /crap/ that
# it is such /big/ that it needs being splitted for distribution! Sad. :-(
# Arrgghh! Some of those versions does not follow this convention:
# gcc-3.3.3 lives in releases/gcc-3.3.3, while gcc-2.95.* isn't in a
# subdirectory! You bastard!
CT_GetFile "gcc-${version}" \
{ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${version}} \
ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${version} \
ftp://ftp.uvsq.fr/pub/gcc/snapshots/${version}
CT_GetFile "gcc-${CT_CC_VERSION}" \
{ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_VERSION}} \
ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_VERSION} \
ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_VERSION}
# Starting with GCC 4.3, ecj is used for Java, and will only be
# built if the configure script finds ecj.jar at the top of the
@ -29,16 +27,14 @@ do_cc_get() {
# Extract gcc
do_cc_extract() {
local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}"
CT_Extract "gcc-${version}"
CT_Patch "gcc-${version}"
CT_Extract "gcc-${CT_CC_VERSION}"
CT_Patch "gcc-${CT_CC_VERSION}"
# Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree
if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \
-a ! -f "${CT_SRC_DIR}/gcc-${version}/ecj.jar" \
-a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" \
]; then
CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${version}/ecj.jar"
CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar"
fi
}
@ -90,7 +86,6 @@ do_cc_core() {
local core_prefix_dir
local extra_config
local lang_opt
local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}"
eval $1
eval $2
@ -137,12 +132,20 @@ do_cc_core() {
extra_config="${extra_config} ${CT_ARCH_WITH_TUNE}"
extra_config="${extra_config} ${CT_ARCH_WITH_FPU}"
extra_config="${extra_config} ${CT_ARCH_WITH_FLOAT}"
[ "${CT_GMP_MPFR}" = "y" ] && extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}"
if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then
extra_config="${extra_config} --enable-__cxa_atexit"
else
extra_config="${extra_config} --disable-__cxa_atexit"
fi
if [ "${CT_GMP_MPFR}" = "y" ]; then
extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR}"
extra_config="${extra_config} --with-mpfr=${CT_PREFIX_DIR}"
fi
if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
extra_config="${extra_config} --with-ppl=${CT_PREFIX_DIR}"
extra_config="${extra_config} --with-cloog=${CT_PREFIX_DIR}"
extra_config="${extra_config} --with-mpc=${CT_PREFIX_DIR}"
fi
CT_DoLog DEBUG "Extra config passed: '${extra_config}'"
@ -150,7 +153,7 @@ do_cc_core() {
CC_FOR_BUILD="${CT_BUILD}-gcc" \
CFLAGS="${CT_CFLAGS_FOR_HOST}" \
CT_DoExecLog ALL \
"${CT_SRC_DIR}/gcc-${version}/configure" \
"${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \
--build=${CT_BUILD} \
--host=${CT_HOST} \
--target=${CT_TARGET} \
@ -182,7 +185,7 @@ do_cc_core() {
# so we configure then build it.
# Next we have to configure gcc, create libgcc.mk then edit it...
# So much easier if we just edit the source tree, but hey...
if [ ! -f "${CT_SRC_DIR}/gcc-${version}/gcc/BASE-VER" ]; then
if [ ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then
CT_DoExecLog ALL make configure-libiberty
CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libiberty libiberty.a
CT_DoExecLog ALL make configure-gcc configure-libcpp
@ -192,7 +195,7 @@ do_cc_core() {
CT_DoExecLog ALL make ${PARALLELMFLAGS} all-libcpp all-build-libiberty
fi
# HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here.
if [ -d "${CT_SRC_DIR}/gcc-${version}/libdecnumber" ]; then
if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libdecnumber" ]; then
CT_DoExecLog ALL make configure-libdecnumber
CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libdecnumber libdecnumber.a
fi
@ -238,8 +241,6 @@ do_cc_core() {
#------------------------------------------------------------------------------
# Build final gcc
do_cc() {
local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}"
# If building for bare metal, nothing to be done here, the static core conpiler is enough!
[ "${CT_BARE_METAL}" = "y" ] && return 0
@ -273,7 +274,6 @@ do_cc() {
extra_config="${extra_config} ${CT_ARCH_WITH_FPU}"
extra_config="${extra_config} ${CT_ARCH_WITH_FLOAT}"
[ "${CT_SHARED_LIBS}" = "y" ] || extra_config="${extra_config} --disable-shared"
[ "${CT_GMP_MPFR}" = "y" ] && extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}"
[ -n "${CT_CC_PKGVERSION}" ] && extra_config="${extra_config} --with-pkgversion=${CT_CC_PKGVERSION}"
[ -n "${CT_CC_BUGURL}" ] && extra_config="${extra_config} --with-bugurl=${CT_CC_BUGURL}"
[ "${CT_CC_SJLJ_EXCEPTIONS_USE}" = "y" ] && extra_config="${extra_config} --enable-sjlj-exceptions"
@ -283,6 +283,15 @@ do_cc() {
else
extra_config="${extra_config} --disable-__cxa_atexit"
fi
if [ "${CT_GMP_MPFR}" = "y" ]; then
extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR}"
extra_config="${extra_config} --with-mpfr=${CT_PREFIX_DIR}"
fi
if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
extra_config="${extra_config} --with-ppl=${CT_PREFIX_DIR}"
extra_config="${extra_config} --with-cloog=${CT_PREFIX_DIR}"
extra_config="${extra_config} --with-mpc=${CT_PREFIX_DIR}"
fi
CT_DoLog DEBUG "Extra config passed: '${extra_config}'"
@ -296,7 +305,7 @@ do_cc() {
CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \
LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \
CT_DoExecLog ALL \
"${CT_SRC_DIR}/gcc-${version}/configure" \
"${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \
--build=${CT_BUILD} \
--host=${CT_HOST} \
--target=${CT_TARGET} \

View File

@ -0,0 +1,63 @@
# This file adds the functions to build the CLooG library
# Copyright 2009 Yann E. MORIN
# Licensed under the GPL v2. See COPYING in the root of this package
do_cloog_get() { :; }
do_cloog_extract() { :; }
do_cloog() { :; }
do_cloog_target() { :; }
# Overide functions depending on configuration
if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
# Download CLooG
do_cloog_get() {
CT_GetFile "cloog-ppl-${CT_CLOOG_VERSION}" \
ftp://gcc.gnu.org/pub/gcc/infrastructure
}
# Extract CLooG
do_cloog_extract() {
CT_Extract "cloog-ppl-${CT_CLOOG_VERSION}"
CT_Pushd "${CT_SRC_DIR}/cloog-ppl"
CT_Patch "cloog-ppl-${CT_CLOOG_VERSION}" nochdir
CT_Popd
}
do_cloog() {
mkdir -p "${CT_BUILD_DIR}/build-cloog-ppl"
cd "${CT_BUILD_DIR}/build-cloog-ppl"
CT_DoStep INFO "Installing CLooG/ppl"
CT_DoLog EXTRA "Configuring CLooG/ppl"
CFLAGS="${CT_CFLAGS_FOR_HOST}" \
CT_DoExecLog ALL \
"${CT_SRC_DIR}/cloog-ppl/configure" \
--build=${CT_BUILD} \
--host=${CT_HOST} \
--prefix="${CT_PREFIX_DIR}" \
--with-gmp="${CT_PREFIX_DIR}" \
--with-ppl="${CT_PREFIX_DIR}" \
--enable-shared \
--disable-static \
--with-bits=gmp
CT_DoLog EXTRA "Building CLooG/ppl"
CT_DoExecLog ALL make ${PARALLELMFLAGS}
if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking CLooG/ppl"
CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check
fi
CT_DoLog EXTRA "Installing CLooG/ppl"
CT_DoExecLog ALL make install
# Remove spuriously installed file
CT_DoExecLog ALL rm -f "${CT_PREFIX_DIR}/bin/cloog"
CT_EndStep
}
fi # CT_PPL_CLOOG_MPC

View File

@ -22,8 +22,6 @@ do_gmp_extract() {
}
do_gmp() {
local opts
local cflags
mkdir -p "${CT_BUILD_DIR}/build-gmp"
cd "${CT_BUILD_DIR}/build-gmp"
@ -32,27 +30,22 @@ do_gmp() {
CT_DoLog EXTRA "Configuring GMP"
if [ "${CT_PPL_CLOOG}" = "y" ]; then
opts="--enable-cxx"
cflags="-fexceptions"
fi
CFLAGS="${CT_CFLAGS_FOR_HOST} ${cflags}" \
CFLAGS="${CT_CFLAGS_FOR_HOST} -fexceptions" \
CT_DoExecLog ALL \
"${CT_SRC_DIR}/gmp-${CT_GMP_VERSION}/configure" \
--build=${CT_BUILD} \
--host=${CT_HOST} \
--prefix="${CT_PREFIX_DIR}" \
--disable-shared \
--enable-static \
--enable-shared \
--disable-static \
--enable-fft \
--enable-mpbsd \
${opts}
--enable-cxx
CT_DoLog EXTRA "Building GMP"
CT_DoExecLog ALL make ${PARALLELMFLAGS}
if [ "${CT_GMP_CHECK}" = "y" ]; then
if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking GMP"
CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check
fi
@ -63,7 +56,7 @@ do_gmp() {
CT_EndStep
}
if [ "${CT_GMP_MPFR_TARGET}" = "y" ]; then
if [ "${CT_COMP_LIBS_TARGET}" = "y" ]; then
do_gmp_target() {
mkdir -p "${CT_BUILD_DIR}/build-gmp-target"

View File

@ -0,0 +1,57 @@
# This file adds the functions to build the MPC library
# Copyright 2009 Yann E. MORIN
# Licensed under the GPL v2. See COPYING in the root of this package
do_mpc_get() { :; }
do_mpc_extract() { :; }
do_mpc() { :; }
do_mpc_target() { :; }
# Overide functions depending on configuration
if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
# Download MPC
do_mpc_get() {
CT_GetFile "mpc-${CT_MPC_VERSION}" .tar.gz \
http://www.multiprecision.org/mpc/download
}
# Extract MPC
do_mpc_extract() {
CT_Extract "mpc-${CT_MPC_VERSION}"
CT_Patch "mpc-${CT_MPC_VERSION}"
}
do_mpc() {
mkdir -p "${CT_BUILD_DIR}/build-mpc"
cd "${CT_BUILD_DIR}/build-mpc"
CT_DoStep INFO "Installing MPC"
CT_DoLog EXTRA "Configuring MPC"
CFLAGS="${CT_CFLAGS_FOR_HOST}" \
CT_DoExecLog ALL \
"${CT_SRC_DIR}/mpc-${CT_MPC_VERSION}/configure" \
--build=${CT_BUILD} \
--host=${CT_HOST} \
--prefix="${CT_PREFIX_DIR}" \
--with-gmp="${CT_PREFIX_DIR}" \
--with-mpfr="${CT_PREFIX_DIR}" \
--enable-shared \
--disable-static \
CT_DoLog EXTRA "Building MPC"
CT_DoExecLog ALL make ${PARALLELMFLAGS}
if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking MPC"
CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check
fi
CT_DoLog EXTRA "Installing MPC"
CT_DoExecLog ALL make install
CT_EndStep
}
fi # CT_PPL_CLOOG_MPC

View File

@ -77,14 +77,14 @@ do_mpfr() {
--host=${CT_HOST} \
--prefix="${CT_PREFIX_DIR}" \
${mpfr_opt} \
--disable-shared \
--enable-static \
--enable-shared \
--disable-static \
--with-gmp="${CT_PREFIX_DIR}"
CT_DoLog EXTRA "Building MPFR"
CT_DoExecLog ALL make ${PARALLELMFLAGS}
if [ "${CT_MPFR_CHECK}" = "y" ]; then
if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking MPFR"
CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check
fi
@ -95,7 +95,7 @@ do_mpfr() {
CT_EndStep
}
if [ "${CT_GMP_MPFR_TARGET}" = "y" ]; then
if [ "${CT_COMP_LIBS_TARGET}" = "y" ]; then
do_mpfr_target() {
mkdir -p "${CT_BUILD_DIR}/build-mpfr-target"

View File

@ -8,13 +8,14 @@ do_ppl() { :; }
do_ppl_target() { :; }
# Overide functions depending on configuration
if [ "${CT_PPL_CLOOG}" = "y" ]; then
if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
# Download PPL
do_ppl_get() {
CT_GetFile "ppl-${CT_PPL_VERSION}" \
http://www.cs.unipr.it/ppl/Download/ftp/releases/${CT_PPL_VERSION} \
ftp://ftp.cs.unipr.it/pub/ppl/releases/${CT_PPL_VERSION}
ftp://ftp.cs.unipr.it/pub/ppl/releases/${CT_PPL_VERSION} \
ftp://gcc.gnu.org/pub/gcc/infrastructure
}
# Extract PPL
@ -31,6 +32,7 @@ do_ppl() {
CT_DoLog EXTRA "Configuring PPL"
CFLAGS="${CT_CFLAGS_FOR_HOST}" \
CXXFLAGS="${CT_CFLAGS_FOR_HOST}" \
CT_DoExecLog ALL \
"${CT_SRC_DIR}/ppl-${CT_PPL_VERSION}/configure" \
--build=${CT_BUILD} \
@ -38,8 +40,8 @@ do_ppl() {
--prefix="${CT_PREFIX_DIR}" \
--with-libgmp-prefix="${CT_PREFIX_DIR}" \
--with-libgmpxx-prefix="${CT_PREFIX_DIR}" \
--disable-shared \
--enable-static \
--enable-shared \
--disable-static \
--disable-debugging \
--disable-assertions \
--disable-ppl_lcdd \
@ -52,7 +54,7 @@ do_ppl() {
CT_DoLog EXTRA "Building PPL"
CT_DoExecLog ALL make ${PARALLELMFLAGS}
if [ "${CT_PPL_CHECK}" = "y" ]; then
if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking PPL"
CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check
fi
@ -60,7 +62,10 @@ do_ppl() {
CT_DoLog EXTRA "Installing PPL"
CT_DoExecLog ALL make install
# Remove spuriously installed file
CT_DoExecLog ALL rm -f "${CT_PREFIX_DIR}/bin/ppl-config"
CT_EndStep
}
fi # CT_PPL_CLOOG
fi # CT_PPL_CLOOG_MPC

View File

@ -4,6 +4,8 @@
# un-wanted files, to add tuple aliases, and to add the final
# crosstool-NG-provided files.
do_finish() {
local _t
CT_DoStep INFO "Cleaning-up the toolchain's directory"
CT_DoLog EXTRA "Removing access to the build system tools"
@ -39,6 +41,33 @@ do_finish() {
done
CT_Popd
# If using the companion libraries, we need a wrapper
# that will set LD_LIBRARY_PATH approriately
if [ "${CT_GMP_MPFR}" = "y" \
-o "${CT_PPL_CLOOG_MPC}" = "y" ]; then
CT_DoLog EXTRA "Installing toolchain wrappers"
CT_Pushd "${CT_PREFIX_DIR}/bin"
# Copy the wrapper
CT_DoExecLog DEBUG install -m 0755 "${CT_LIB_DIR}/scripts/wrapper.in" \
".${CT_TARGET}-wrapper"
# Replace every tools with the wrapper
# Do it unconditionally, even for those tools that happen to be shell
# scripts, we don't know if they would in the end spawn a binary...
# Just skip symlinks
for _t in "${CT_TARGET}-"*; do
if [ "$( LANG=C stat -c '%F' "${_t}" )" != "symbolic link" ]; then
CT_DoExecLog ALL mv "${t}" ".${_t}"
CT_DoExecLog ALL ln ".${CT_TARGET}-wrapper" "${_t}"
fi
done
# Get rid of the wrapper, we're using hardlinks
CT_DoExecLog DEBUG rm -f ".${CT_TARGET}-wrapper"
CT_Popd
fi
# Remove the generated documentation files
if [ "${CT_REMOVE_DOCS}" = "y" ]; then
CT_DoLog EXTRA "Removing installed documentation"

View File

@ -172,6 +172,7 @@ do_libc_headers() {
CT_DoExecLog ALL \
make CFLAGS="-O -DBOOTSTRAP_GCC" \
OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
PARALLELMFLAGS="${PARALLELMFLAGS}" \
sysdeps/gnu/errlist.c
mkdir -p stdio-common
@ -189,6 +190,7 @@ do_libc_headers() {
CFLAGS="-O -DBOOTSTRAP_GCC" \
${LIBC_SYSROOT_ARG} \
OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
PARALLELMFLAGS="${PARALLELMFLAGS}" \
install-headers
# Two headers -- stubs.h and features.h -- aren't installed by install-headers,
@ -331,11 +333,12 @@ do_libc_start_files() {
${extra_config} \
${CT_LIBC_GLIBC_EXTRA_CONFIG}
#TODO: should check whether slibdir has been set in configparms to */lib64
# and copy the startfiles into the appropriate libdir.
CT_DoLog EXTRA "Building C library start files"
CT_DoExecLog ALL make OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" csu/subdir_lib
CT_DoExecLog ALL make OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
PARALLELMFLAGS="${PARALLELMFLAGS}" \
csu/subdir_lib
CT_DoLog EXTRA "Installing C library start files"
if [ "${CT_USE_SYSROOT}" = "y" ]; then
@ -499,18 +502,19 @@ do_libc() {
# then you need to set the KERNELCONFIG variable to point to a .config file for this arch.
# The following architectures are known to need kernel .config: alpha, arm, ia64, s390, sh, sparc
# Note: LD and RANLIB needed by glibc-2.1.3's c_stub directory, at least on macosx
# No need for PARALLELMFLAGS here, Makefile already reads this environment variable
CT_DoLog EXTRA "Building C library"
CT_DoExecLog ALL make LD=${CT_TARGET}-ld \
RANLIB=${CT_TARGET}-ranlib \
OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
ASFLAGS="${GLIBC_INITIAL_BUILD_ASFLAGS}" \
PARALLELMFLAGS="${PARALLELMFLAGS}" \
${GLIBC_INITIAL_BUILD_RULE}
CT_DoLog EXTRA "Installing C library"
CT_DoExecLog ALL make install_root="${CT_SYSROOT_DIR}" \
${LIBC_SYSROOT_ARG} \
OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
PARALLELMFLAGS="${PARALLELMFLAGS}" \
${GLIBC_INITIAL_INSTALL_RULE}
# This doesn't seem to work when building a crosscompiler,
@ -553,7 +557,11 @@ do_libc_finish() {
cd "${CT_BUILD_DIR}/build-libc"
CT_DoLog EXTRA "Re-building C library"
CT_DoExecLog ALL make LD=${CT_TARGET}-ld RANLIB=${CT_TARGET}-ranlib
CT_DoExecLog ALL make LD=${CT_TARGET}-ld \
RANLIB=${CT_TARGET}-ranlib \
OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
ASFLAGS="${GLIBC_INITIAL_BUILD_ASFLAGS}" \
PARALLELMFLAGS="${PARALLELMFLAGS}"
CT_DoLog EXTRA "Installing missing C library components"
# note: should do full install and then fix linker scripts, but this is faster
@ -561,6 +569,7 @@ do_libc_finish() {
CT_DoExecLog ALL make install_root="${CT_SYSROOT_DIR}" \
${LIBC_SYSROOT_ARG} \
OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
PARALLELMFLAGS="${PARALLELMFLAGS}" \
install-${t}
done

View File

@ -91,6 +91,8 @@ CT_DoLog INFO "Building environment variables"
. "${CT_LIB_DIR}/scripts/build/companion_libs/gmp.sh"
. "${CT_LIB_DIR}/scripts/build/companion_libs/mpfr.sh"
. "${CT_LIB_DIR}/scripts/build/companion_libs/ppl.sh"
. "${CT_LIB_DIR}/scripts/build/companion_libs/cloog.sh"
. "${CT_LIB_DIR}/scripts/build/companion_libs/mpc.sh"
. "${CT_LIB_DIR}/scripts/build/binutils/binutils.sh"
. "${CT_LIB_DIR}/scripts/build/binutils/elf2flt.sh"
. "${CT_LIB_DIR}/scripts/build/libc/${CT_LIBC}.sh"
@ -125,6 +127,10 @@ CT_CONFIG_DIR="${CT_BUILD_DIR}/configs"
CT_CC_CORE_STATIC_PREFIX_DIR="${CT_BUILD_DIR}/${CT_CC}-core-static"
CT_CC_CORE_SHARED_PREFIX_DIR="${CT_BUILD_DIR}/${CT_CC}-core-shared"
# Set LD_LIBRARY_PATH to point to prefix/lib so we can find our own
# libraries; add as first path, so we get hit first by the dynamic linker
CT_SetLibPath "${CT_PREFIX_DIR}/lib" first
# We must ensure that we can restart if asked for!
if [ -n "${CT_RESTART}" -a ! -d "${CT_STATE_DIR}" ]; then
CT_DoLog ERROR "You asked to restart a non-restartable build"
@ -447,6 +453,8 @@ if [ -z "${CT_RESTART}" ]; then
do_gmp_get
do_mpfr_get
do_ppl_get
do_cloog_get
do_mpc_get
do_binutils_get
do_cc_get
do_libc_get
@ -464,6 +472,8 @@ if [ -z "${CT_RESTART}" ]; then
do_gmp_extract
do_mpfr_extract
do_ppl_extract
do_cloog_extract
do_mpc_extract
do_binutils_extract
do_cc_extract
do_libc_extract

View File

@ -265,6 +265,36 @@ CT_DoYes() {
yes "$1" || true
}
# Add the specified directory to LD_LIBRARY_PATH, and export it
# If the specified patch is already present, just export
# $1: path to add
# $2: add as 'first' or 'last' path, 'first' is assumed if $2 is empty
# Usage CT_SetLibPath /some/where/lib [first|last]
CT_SetLibPath() {
local path="$1"
local pos="$2"
case ":${LD_LIBRARY_PATH}:" in
*:"${path}":*) ;;
*) case "${pos}" in
last)
CT_DoLog DEBUG "Adding '${path}' at end of LD_LIBRARY_PATH"
LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${path}"
;;
first|"")
CT_DoLog DEBUG "Adding '${path}' at start of LD_LIBRARY_PATH"
LD_LIBRARY_PATH="${path}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
;;
*)
CT_Abort "Incorrect position '${pos}' to add '${path}' to LD_LIBRARY_PATH"
;;
esac
;;
esac
CT_DoLog DEBUG "==> LD_LIBRARY_PATH='${LD_LIBRARY_PATH}'"
export LD_LIBRARY_PATH
}
# Get the file name extension of a component
# Usage: CT_GetFileExtension <component_name-component_version> [extension]
# If found, echoes the extension to stdout

14
scripts/wrapper.in Normal file
View File

@ -0,0 +1,14 @@
#!/bin/sh
dirname="$(dirname "${0}")"
basename="$(basename "${0}")"
ld_lib_path="$(dirname "${dirname}")/lib"
case ":${LD_LIBRARY_PATH}:" in
*":${ld_lib_path}:"*) ;;
*) LD_LIBRARY_PATH="${ld_lib_path}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}";;
esac
export LD_LIBRARY_PATH
exec "${dirname}/.${basename}" "$@"

View File

@ -21,6 +21,8 @@ CT_STEPS := libc_check_config \
gmp \
mpfr \
ppl \
cloog \
mpc \
binutils \
elf2flt \
cc_core_pass_1 \