summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--recipes/gcc/gcc-4.4.3.inc42
-rw-r--r--recipes/gcc/gcc-4.4.3/100-uclibc-conf.patch37
-rw-r--r--recipes/gcc/gcc-4.4.3/cache-amnesia.patch31
-rw-r--r--recipes/gcc/gcc-4.4.3/fortran-cross-compile-hack.patch30
-rw-r--r--recipes/gcc/gcc-4.4.3/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch31
-rw-r--r--recipes/gcc/gcc-4.4.3/gcc-armv4-pass-fix-v4bx-to-ld.patch28
-rw-r--r--recipes/gcc/gcc-4.4.3/gcc-disable-linux-unwind-with-libc-inhibit.patch35
-rw-r--r--recipes/gcc/gcc-4.4.3/gcc-flags-for-build.patch279
-rw-r--r--recipes/gcc/gcc-4.4.3/gcc-improve-tls-macro.patch691
-rw-r--r--recipes/gcc/gcc-4.4.3/gcc-link-libgcc-with-libm.patch261
-rw-r--r--recipes/gcc/gcc-4.4.3/gcc-ppc_add_d_constraint.patch1216
-rw-r--r--recipes/gcc/gcc-4.4.3/gcc-ppc_single_precision_regs.patch60
-rw-r--r--recipes/gcc/gcc-4.4.3/gcc-pr41175.patch1172
-rw-r--r--recipes/gcc/gcc-4.4.3/gcc-uclibc-locale-ctype_touplow_t.patch52
-rw-r--r--recipes/gcc/gcc-4.4.3/zecke-no-host-includes.patch31
-rw-r--r--recipes/gcc/gcc-4.4.3/zecke-xgcc-cpp.patch28
-rw-r--r--recipes/gcc/gcc-cross-initial_4.4.3.bb9
-rw-r--r--recipes/gcc/gcc-cross-intermediate_4.4.3.bb9
-rw-r--r--recipes/gcc/gcc-cross-sdk_4.4.3.bb13
-rw-r--r--recipes/gcc/gcc-cross_4.4.3.bb11
-rw-r--r--recipes/gcc/gcc_4.4.3.bb13
21 files changed, 4079 insertions, 0 deletions
diff --git a/recipes/gcc/gcc-4.4.3.inc b/recipes/gcc/gcc-4.4.3.inc
new file mode 100644
index 0000000000..25098d523b
--- /dev/null
+++ b/recipes/gcc/gcc-4.4.3.inc
@@ -0,0 +1,42 @@
+# No armeb and thumb patches - really needs checking
+DEFAULT_PREFERENCE = "-999"
+ARM_INSTRUCTION_SET = "arm"
+
+require gcc-common.inc
+LICENSE = "GPLv3"
+
+DEPENDS = "mpfr gmp"
+
+INC_PR = "r0"
+
+FILESPATHPKG .= ":gcc-$PV"
+
+SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2;name=gcc443tarbz2 \
+ file://gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch;patch=1 \
+ file://100-uclibc-conf.patch;patch=1 \
+ file://gcc-uclibc-locale-ctype_touplow_t.patch;patch=1 \
+ file://gcc-disable-linux-unwind-with-libc-inhibit.patch;patch=1 \
+ file://gcc-link-libgcc-with-libm.patch;patch=1 \
+ file://gcc-improve-tls-macro.patch;patch=1 \
+ file://cache-amnesia.patch;patch=1 \
+ file://gcc-flags-for-build.patch;patch=1 \
+ file://gcc-ppc_single_precision_regs.patch;patch=1 \
+ file://gcc-ppc_add_d_constraint.patch;patch=1 \
+ file://gcc-pr41175.patch;patch=1 \
+ file://gcc-armv4-pass-fix-v4bx-to-ld.patch;patch=1 \
+ "
+SRC_URI[gcc443tarbz2.md5sum] = "fe1ca818fc6d2caeffc9051fe67ff103"
+SRC_URI[gcc443tarbz2.sha256sum] = "97ed664694b02b4d58ac2cafe443d02a388f9cb3645e7778843b5086a5fec040"
+
+# Language Overrides
+FORTRAN = ""
+JAVA = ""
+
+EXTRA_OECONF_BASE = " --enable-libssp \
+ --disable-bootstrap --disable-libgomp \
+ --disable-libmudflap"
+
+EXTRA_OECONF_append_linux-uclibc = " --disable-decimal-float "
+EXTRA_OECONF_append_linux-uclibceabi = " --disable-decimal-float "
+EXTRA_OECONF_append_linux-uclibcspe = " --disable-decimal-float "
+EXTRA_OECONF_append_linux-uclibc = " ${@base_contains('TARGET_ARCH', 'powerpc', '--without-long-double-128', '',d)}"
diff --git a/recipes/gcc/gcc-4.4.3/100-uclibc-conf.patch b/recipes/gcc/gcc-4.4.3/100-uclibc-conf.patch
new file mode 100644
index 0000000000..0b799607e8
--- /dev/null
+++ b/recipes/gcc/gcc-4.4.3/100-uclibc-conf.patch
@@ -0,0 +1,37 @@
+Index: gcc-4.3.1/contrib/regression/objs-gcc.sh
+===================================================================
+--- gcc-4.3.1.orig/contrib/regression/objs-gcc.sh 2007-12-24 15:18:57.000000000 -0800
++++ gcc-4.3.1/contrib/regression/objs-gcc.sh 2008-08-16 01:15:12.000000000 -0700
+@@ -105,6 +105,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
+Index: gcc-4.3.1/libjava/classpath/ltconfig
+===================================================================
+--- gcc-4.3.1.orig/libjava/classpath/ltconfig 2007-06-03 16:18:43.000000000 -0700
++++ gcc-4.3.1/libjava/classpath/ltconfig 2008-08-16 01:15:12.000000000 -0700
+@@ -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
diff --git a/recipes/gcc/gcc-4.4.3/cache-amnesia.patch b/recipes/gcc/gcc-4.4.3/cache-amnesia.patch
new file mode 100644
index 0000000000..d5281ea575
--- /dev/null
+++ b/recipes/gcc/gcc-4.4.3/cache-amnesia.patch
@@ -0,0 +1,31 @@
+---
+ gcc/configure | 2 +-
+ gcc/configure.ac | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+Index: gcc-4.4.1/gcc/configure.ac
+===================================================================
+--- gcc-4.4.1.orig/gcc/configure.ac 2009-03-24 10:46:03.000000000 -0700
++++ gcc-4.4.1/gcc/configure.ac 2009-09-04 19:23:39.751461633 -0700
+@@ -1455,7 +1455,7 @@
+ saved_CFLAGS="${CFLAGS}"
+ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
+ LDFLAGS="${LDFLAGS_FOR_BUILD}" \
+- ${realsrcdir}/configure \
++ CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \
+ --enable-languages=${enable_languages-all} \
+ --target=$target_alias --host=$build_alias --build=$build_alias
+ CFLAGS="${saved_CFLAGS}"
+Index: gcc-4.4.1/gcc/configure
+===================================================================
+--- gcc-4.4.1.orig/gcc/configure 2009-03-24 10:46:03.000000000 -0700
++++ gcc-4.4.1/gcc/configure 2009-09-04 19:25:37.831459717 -0700
+@@ -13531,7 +13531,7 @@
+ saved_CFLAGS="${CFLAGS}"
+ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
+ LDFLAGS="${LDFLAGS_FOR_BUILD}" \
+- ${realsrcdir}/configure \
++ CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \
+ --enable-languages=${enable_languages-all} \
+ --target=$target_alias --host=$build_alias --build=$build_alias
+ CFLAGS="${saved_CFLAGS}"
diff --git a/recipes/gcc/gcc-4.4.3/fortran-cross-compile-hack.patch b/recipes/gcc/gcc-4.4.3/fortran-cross-compile-hack.patch
new file mode 100644
index 0000000000..b3d38ad983
--- /dev/null
+++ b/recipes/gcc/gcc-4.4.3/fortran-cross-compile-hack.patch
@@ -0,0 +1,30 @@
+* Fortran would have searched for arm-angstrom-gnueabi-gfortran but would have used
+ used gfortan. For gcc_4.2.2.bb we want to use the gfortran compiler from our cross
+ directory.
+
+diff --git a/libgfortran/configure b/libgfortran/configure
+index f7d86fb..d0966ec 100755
+--- a/libgfortran/configure
++++ b/libgfortran/configure
+@@ -4475,6 +4475,6 @@ exec 5>>./config.log
+
+ # We need gfortran to compile parts of the library
+ #AC_PROG_FC(gfortran)
+-FC="$GFORTRAN"
++#FC="$GFORTRAN"
+ ac_ext=${FC_SRCEXT-f}
+ ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+\ No newline at end of file
+diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
+index 4661306..9f83e55 100644
+--- a/libgfortran/configure.ac
++++ b/libgfortran/configure.ac
+@@ -140,7 +140,7 @@ AC_SUBST(enable_static)
+
+ # We need gfortran to compile parts of the library
+ #AC_PROG_FC(gfortran)
+-FC="$GFORTRAN"
++#FC="$GFORTRAN"
+ AC_PROG_FC(gfortran)
+
+ # extra LD Flags which are required for targets
diff --git a/recipes/gcc/gcc-4.4.3/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch b/recipes/gcc/gcc-4.4.3/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
new file mode 100644
index 0000000000..f33e6c1ea6
--- /dev/null
+++ b/recipes/gcc/gcc-4.4.3/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
@@ -0,0 +1,31 @@
+---
+ configure | 2 +-
+ configure.ac | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+Index: gcc-4.3.1/configure.ac
+===================================================================
+--- gcc-4.3.1.orig/configure.ac 2008-07-21 12:29:18.000000000 -0700
++++ gcc-4.3.1/configure.ac 2008-07-21 12:29:35.000000000 -0700
+@@ -2352,7 +2352,7 @@ fi
+ # for target_alias and gcc doesn't manage it consistently.
+ target_configargs="--cache-file=./config.cache ${target_configargs}"
+
+-FLAGS_FOR_TARGET=
++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
+ case " $target_configdirs " in
+ *" newlib "*)
+ case " $target_configargs " in
+Index: gcc-4.3.1/configure
+===================================================================
+--- gcc-4.3.1.orig/configure 2008-07-21 12:29:48.000000000 -0700
++++ gcc-4.3.1/configure 2008-07-21 12:29:59.000000000 -0700
+@@ -5841,7 +5841,7 @@ fi
+ # for target_alias and gcc doesn't manage it consistently.
+ target_configargs="--cache-file=./config.cache ${target_configargs}"
+
+-FLAGS_FOR_TARGET=
++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
+ case " $target_configdirs " in
+ *" newlib "*)
+ case " $target_configargs " in
diff --git a/recipes/gcc/gcc-4.4.3/gcc-armv4-pass-fix-v4bx-to-ld.patch b/recipes/gcc/gcc-4.4.3/gcc-armv4-pass-fix-v4bx-to-ld.patch
new file mode 100644
index 0000000000..37670375e8
--- /dev/null
+++ b/recipes/gcc/gcc-4.4.3/gcc-armv4-pass-fix-v4bx-to-ld.patch
@@ -0,0 +1,28 @@
+The LINK_SPEC for linux gets overwritten by linux-eabi.h which
+means the value of TARGET_FIX_V4BX_SPEC gets lost and as a result
+the option is not passed to linker when chosing march=armv4
+This patch redefines this in linux-eabi.h and reinserts it
+for eabi defaulting toolchains.
+
+We might want to send it upstream
+
+-Khem
+Index: gcc-4.4.1/gcc/config/arm/linux-eabi.h
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/arm/linux-eabi.h 2009-10-09 12:25:06.142471730 -0700
++++ gcc-4.4.1/gcc/config/arm/linux-eabi.h 2009-10-09 12:28:57.564946305 -0700
+@@ -63,10 +63,13 @@
+ #undef GLIBC_DYNAMIC_LINKER
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
+
++#undef TARGET_FIX_V4BX_SPEC
++#define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4:--fix-v4bx}"
++
+ /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
+ use the GNU/Linux version, not the generic BPABI version. */
+ #undef LINK_SPEC
+-#define LINK_SPEC LINUX_TARGET_LINK_SPEC
++#define LINK_SPEC LINUX_TARGET_LINK_SPEC TARGET_FIX_V4BX_SPEC
+
+ /* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we
+ do not use -lfloat. */
diff --git a/recipes/gcc/gcc-4.4.3/gcc-disable-linux-unwind-with-libc-inhibit.patch b/recipes/gcc/gcc-4.4.3/gcc-disable-linux-unwind-with-libc-inhibit.patch
new file mode 100644
index 0000000000..a6ba7a70ab
--- /dev/null
+++ b/recipes/gcc/gcc-4.4.3/gcc-disable-linux-unwind-with-libc-inhibit.patch
@@ -0,0 +1,35 @@
+Backport this patch
+
+2009-04-02 Andrew Stubbs <ams@codesourcery.com>
+
+ * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
+
+
+http://gcc.gnu.org/viewcvs?view=rev&revision=145442
+
+To get gcc compiled for SH
+
+-Khem
+Index: gcc-4.4.1/gcc/config/sh/linux-unwind.h
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/sh/linux-unwind.h 2009-08-08 10:21:35.943210469 -0700
++++ gcc-4.4.1/gcc/config/sh/linux-unwind.h 2009-08-08 10:22:18.643210817 -0700
+@@ -24,7 +24,11 @@
+
+
+ /* Do code reading to identify a signal frame, and set the frame
+- state data appropriately. See unwind-dw2.c for the structs. */
++ state data appropriately. See unwind-dw2.c for the structs.
++ Don't use this at all if inhibit_libc is used. */
++
++#ifndef inhibit_libc
++
+
+ #include <signal.h>
+ #include <sys/ucontext.h>
+@@ -248,3 +252,5 @@
+ return _URC_NO_REASON;
+ }
+ #endif /* defined (__SH5__) */
++
++#endif /* inhibit_libc */
diff --git a/recipes/gcc/gcc-4.4.3/gcc-flags-for-build.patch b/recipes/gcc/gcc-4.4.3/gcc-flags-for-build.patch
new file mode 100644
index 0000000000..5193abecdb
--- /dev/null
+++ b/recipes/gcc/gcc-4.4.3/gcc-flags-for-build.patch
@@ -0,0 +1,279 @@
+Index: gcc-4.4.1/Makefile.def
+===================================================================
+--- gcc-4.4.1.orig/Makefile.def 2009-04-24 21:10:29.000000000 -0700
++++ gcc-4.4.1/Makefile.def 2009-09-04 19:48:48.544457885 -0700
+@@ -227,6 +227,7 @@
+ flags_to_pass = { flag= BISON ; };
+ flags_to_pass = { flag= CC_FOR_BUILD ; };
+ flags_to_pass = { flag= CFLAGS_FOR_BUILD ; };
++flags_to_pass = { flag= CPPFLAGS_FOR_BUILD ; };
+ flags_to_pass = { flag= CXX_FOR_BUILD ; };
+ flags_to_pass = { flag= EXPECT ; };
+ flags_to_pass = { flag= FLEX ; };
+Index: gcc-4.4.1/gcc/Makefile.in
+===================================================================
+--- gcc-4.4.1.orig/gcc/Makefile.in 2009-05-21 16:17:37.000000000 -0700
++++ gcc-4.4.1/gcc/Makefile.in 2009-09-04 19:48:48.544457885 -0700
+@@ -695,7 +695,7 @@
+
+ # Native linker and preprocessor flags. For x-fragment overrides.
+ BUILD_LDFLAGS=@BUILD_LDFLAGS@
+-BUILD_CPPFLAGS=$(ALL_CPPFLAGS)
++BUILD_CPPFLAGS=$(INCLUDES) @BUILD_CPPFLAGS@ $(X_CPPFLAGS)
+
+ # Actual name to use when installing a native compiler.
+ GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
+Index: gcc-4.4.1/gcc/configure.ac
+===================================================================
+--- gcc-4.4.1.orig/gcc/configure.ac 2009-09-04 19:44:39.460457838 -0700
++++ gcc-4.4.1/gcc/configure.ac 2009-09-04 19:48:48.548458814 -0700
+@@ -1745,10 +1745,11 @@
+ # Also, we cannot run fixincludes or fix-header.
+
+ # These are the normal (build=host) settings:
+-CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
+-BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
+-BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
+-STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
++CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
++BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
++BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
++BUILD_CPPFLAGS='$(ALL_CPPFLAGS)' AC_SUBST(BUILD_CPPFLAGS)
++STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
+
+ # Possibly disable fixproto, on a per-target basis.
+ case ${use_fixproto} in
+@@ -1766,6 +1767,7 @@
+ then
+ BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
+ BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
++ BUILD_CPPFLAGS='$(CPPFLAGS_FOR_BUILD)'
+
+ if test "x$TARGET_SYSTEM_ROOT" = x; then
+ if test "x$STMP_FIXPROTO" != x; then
+Index: gcc-4.4.1/Makefile.in
+===================================================================
+--- gcc-4.4.1.orig/Makefile.in 2009-04-24 21:10:29.000000000 -0700
++++ gcc-4.4.1/Makefile.in 2009-09-04 19:48:48.560478778 -0700
+@@ -288,6 +288,7 @@
+ AS_FOR_BUILD = @AS_FOR_BUILD@
+ CC_FOR_BUILD = @CC_FOR_BUILD@
+ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
++CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+ CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
+ CXX_FOR_BUILD = @CXX_FOR_BUILD@
+ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
+@@ -528,6 +529,7 @@
+ "BISON=$(BISON)" \
+ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
+ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
++ "CPPFLAGS_FOR_BUILD=$(CPPFLAGS_FOR_BUILD)" \
+ "CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
+ "EXPECT=$(EXPECT)" \
+ "FLEX=$(FLEX)" \
+Index: gcc-4.4.1/gcc/configure
+===================================================================
+--- gcc-4.4.1.orig/gcc/configure 2009-09-04 19:44:39.464458137 -0700
++++ gcc-4.4.1/gcc/configure 2009-09-04 19:50:28.600466982 -0700
+@@ -458,7 +458,7 @@
+ # include <unistd.h>
+ #endif"
+
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump gcc_cv_readelf libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS BUILD_CPPFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump gcc_cv_readelf libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS'
+ ac_subst_files='language_hooks'
+ ac_pwd=`pwd`
+
+@@ -14025,6 +14025,7 @@
+ CC_FOR_BUILD='$(CC)'
+ BUILD_CFLAGS='$(ALL_CFLAGS)'
+ BUILD_LDFLAGS='$(LDFLAGS)'
++BUILD_CPPFLAGS='$(ALL_CPPFLAGS)'
+ STMP_FIXINC=stmp-fixinc
+
+ # Possibly disable fixproto, on a per-target basis.
+@@ -14043,6 +14044,7 @@
+ then
+ BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
+ BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
++ BUILD_CPPFLAGS='$(CPPFLAGS_FOR_BUILD)'
+
+ if test "x$TARGET_SYSTEM_ROOT" = x; then
+ if test "x$STMP_FIXPROTO" != x; then
+@@ -14509,13 +14511,13 @@
+ else
+ lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+- (eval echo "\"\$as_me:14512: $ac_compile\"" >&5)
++ (eval echo "\"\$as_me:14514: $ac_compile\"" >&5)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&5
+- (eval echo "\"\$as_me:14515: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
++ (eval echo "\"\$as_me:14517: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&5
+- (eval echo "\"\$as_me:14518: output\"" >&5)
++ (eval echo "\"\$as_me:14520: output\"" >&5)
+ cat conftest.out >&5
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+@@ -15672,7 +15674,7 @@
+ ;;
+ *-*-irix6*)
+ # Find out which ABI we are using.
+- echo '#line 15675 "configure"' > conftest.$ac_ext
++ echo '#line 15677 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+@@ -16971,11 +16973,11 @@
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:16974: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:16976: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:16978: \$? = $ac_status" >&5
++ echo "$as_me:16980: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+@@ -17310,11 +17312,11 @@
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:17313: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:17315: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+- echo "$as_me:17317: \$? = $ac_status" >&5
++ echo "$as_me:17319: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+@@ -17415,11 +17417,11 @@
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:17418: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:17420: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:17422: \$? = $ac_status" >&5
++ echo "$as_me:17424: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+@@ -17470,11 +17472,11 @@
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+- (eval echo "\"\$as_me:17473: $lt_compile\"" >&5)
++ (eval echo "\"\$as_me:17475: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+- echo "$as_me:17477: \$? = $ac_status" >&5
++ echo "$as_me:17479: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+@@ -20282,7 +20284,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 20285 "configure"
++#line 20287 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -20378,7 +20380,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 20381 "configure"
++#line 20383 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -25544,6 +25546,7 @@
+ s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t
+ s,@BUILD_CFLAGS@,$BUILD_CFLAGS,;t t
+ s,@BUILD_LDFLAGS@,$BUILD_LDFLAGS,;t t
++s,@BUILD_CPPFLAGS@,$BUILD_CPPFLAGS,;t t
+ s,@STMP_FIXINC@,$STMP_FIXINC,;t t
+ s,@STMP_FIXPROTO@,$STMP_FIXPROTO,;t t
+ s,@collect2@,$collect2,;t t
+Index: gcc-4.4.1/Makefile.tpl
+===================================================================
+--- gcc-4.4.1.orig/Makefile.tpl 2009-04-14 01:57:33.000000000 -0700
++++ gcc-4.4.1/Makefile.tpl 2009-09-04 19:48:48.572480864 -0700
+@@ -291,6 +291,7 @@
+ AS_FOR_BUILD = @AS_FOR_BUILD@
+ CC_FOR_BUILD = @CC_FOR_BUILD@
+ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
++CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+ CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
+ CXX_FOR_BUILD = @CXX_FOR_BUILD@
+ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
+Index: gcc-4.4.1/configure
+===================================================================
+--- gcc-4.4.1.orig/configure 2009-09-04 19:44:36.588457634 -0700
++++ gcc-4.4.1/configure 2009-09-04 19:50:39.904468246 -0700
+@@ -272,7 +272,7 @@
+ PACKAGE_BUGREPORT=
+
+ ac_unique_file="move-if-change"
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS TOPLEVEL_CONFIGURE_ARGUMENTS build build_cpu build_vendor build_os build_noncanonical host_noncanonical target_noncanonical host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN LN_S build_libsubdir build_subdir host_subdir target_subdir CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE do_compare gmplibs gmpinc extra_mpfr_configure_flags ppllibs pplinc clooglibs clooginc stage1_languages SYSROOT_CFLAGS_FOR_TARGET DEBUG_PREFIX_CFLAGS_FOR_TARGET CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET RPATH_ENVVAR GCC_SHLIB_SUBDIR tooldir build_tooldir CONFIGURE_GDB_TK GDB_TK INSTALL_GDB_TK build_configargs build_configdirs host_configargs configdirs target_configargs AR_FOR_BUILD AS_FOR_BUILD CC_FOR_BUILD CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD CXX_FOR_BUILD DLLTOOL_FOR_BUILD GCJ_FOR_BUILD GFORTRAN_FOR_BUILD LDFLAGS_FOR_BUILD LD_FOR_BUILD NM_FOR_BUILD RANLIB_FOR_BUILD WINDMC_FOR_BUILD WINDRES_FOR_BUILD config_shell YACC BISON M4 LEX FLEX MAKEINFO EXPECT RUNTEST AR AS DLLTOOL LD LIPO NM RANLIB STRIP WINDRES WINDMC OBJCOPY OBJDUMP CC_FOR_TARGET CXX_FOR_TARGET GCC_FOR_TARGET GCJ_FOR_TARGET GFORTRAN_FOR_TARGET AR_FOR_TARGET AS_FOR_TARGET DLLTOOL_FOR_TARGET LD_FOR_TARGET LIPO_FOR_TARGET NM_FOR_TARGET OBJDUMP_FOR_TARGET RANLIB_FOR_TARGET STRIP_FOR_TARGET WINDRES_FOR_TARGET WINDMC_FOR_TARGET RAW_CXX_FOR_TARGET FLAGS_FOR_TARGET COMPILER_AS_FOR_TARGET COMPILER_LD_FOR_TARGET COMPILER_NM_FOR_TARGET MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT stage1_cflags stage1_checking stage2_werror_flag datarootdir docdir pdfdir htmldir LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS TOPLEVEL_CONFIGURE_ARGUMENTS build build_cpu build_vendor build_os build_noncanonical host_noncanonical target_noncanonical host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN LN_S build_libsubdir build_subdir host_subdir target_subdir CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE do_compare gmplibs gmpinc extra_mpfr_configure_flags ppllibs pplinc clooglibs clooginc stage1_languages SYSROOT_CFLAGS_FOR_TARGET DEBUG_PREFIX_CFLAGS_FOR_TARGET CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET RPATH_ENVVAR GCC_SHLIB_SUBDIR tooldir build_tooldir CONFIGURE_GDB_TK GDB_TK INSTALL_GDB_TK build_configargs build_configdirs host_configargs configdirs target_configargs AR_FOR_BUILD AS_FOR_BUILD CC_FOR_BUILD CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD CXX_FOR_BUILD DLLTOOL_FOR_BUILD GCJ_FOR_BUILD GFORTRAN_FOR_BUILD LDFLAGS_FOR_BUILD LD_FOR_BUILD NM_FOR_BUILD RANLIB_FOR_BUILD WINDMC_FOR_BUILD WINDRES_FOR_BUILD config_shell YACC BISON M4 LEX FLEX MAKEINFO EXPECT RUNTEST AR AS DLLTOOL LD LIPO NM RANLIB STRIP WINDRES WINDMC OBJCOPY OBJDUMP CC_FOR_TARGET CXX_FOR_TARGET GCC_FOR_TARGET GCJ_FOR_TARGET GFORTRAN_FOR_TARGET AR_FOR_TARGET AS_FOR_TARGET DLLTOOL_FOR_TARGET LD_FOR_TARGET LIPO_FOR_TARGET NM_FOR_TARGET OBJDUMP_FOR_TARGET RANLIB_FOR_TARGET STRIP_FOR_TARGET WINDRES_FOR_TARGET WINDMC_FOR_TARGET RAW_CXX_FOR_TARGET FLAGS_FOR_TARGET COMPILER_AS_FOR_TARGET COMPILER_LD_FOR_TARGET COMPILER_NM_FOR_TARGET MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT stage1_cflags stage1_checking stage2_werror_flag datarootdir docdir pdfdir htmldir LIBOBJS LTLIBOBJS'
+ ac_subst_files='serialization_dependencies host_makefile_frag target_makefile_frag alphaieee_frag ospace_frag'
+ ac_pwd=`pwd`
+
+@@ -6312,6 +6312,7 @@
+ # our build compiler if desired.
+ if test x"${build}" = x"${host}" ; then
+ CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
++ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
+ CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
+ LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
+ fi
+@@ -6390,6 +6391,7 @@
+
+
+
++
+ # Generate default definitions for YACC, M4, LEX and other programs that run
+ # on the build machine. These are used if the Makefile can't locate these
+ # programs in objdir.
+@@ -13279,6 +13281,7 @@
+ s,@AS_FOR_BUILD@,$AS_FOR_BUILD,;t t
+ s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t
+ s,@CFLAGS_FOR_BUILD@,$CFLAGS_FOR_BUILD,;t t
++s,@CPPFLAGS_FOR_BUILD@,$CPPFLAGS_FOR_BUILD,;t t
+ s,@CXXFLAGS_FOR_BUILD@,$CXXFLAGS_FOR_BUILD,;t t
+ s,@CXX_FOR_BUILD@,$CXX_FOR_BUILD,;t t
+ s,@DLLTOOL_FOR_BUILD@,$DLLTOOL_FOR_BUILD,;t t
+Index: gcc-4.4.1/configure.ac
+===================================================================
+--- gcc-4.4.1.orig/configure.ac 2009-09-04 19:44:36.584475215 -0700
++++ gcc-4.4.1/configure.ac 2009-09-04 19:48:48.576467893 -0700
+@@ -2613,6 +2613,7 @@
+ # our build compiler if desired.
+ if test x"${build}" = x"${host}" ; then
+ CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
++ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
+ CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
+ LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
+ fi
+@@ -2678,6 +2679,7 @@
+ AC_SUBST(AS_FOR_BUILD)
+ AC_SUBST(CC_FOR_BUILD)
+ AC_SUBST(CFLAGS_FOR_BUILD)
++AC_SUBST(CPPFLAGS_FOR_BUILD)
+ AC_SUBST(CXXFLAGS_FOR_BUILD)
+ AC_SUBST(CXX_FOR_BUILD)
+ AC_SUBST(DLLTOOL_FOR_BUILD)
diff --git a/recipes/gcc/gcc-4.4.3/gcc-improve-tls-macro.patch b/recipes/gcc/gcc-4.4.3/gcc-improve-tls-macro.patch
new file mode 100644
index 0000000000..88f110b030
--- /dev/null
+++ b/recipes/gcc/gcc-4.4.3/gcc-improve-tls-macro.patch
@@ -0,0 +1,691 @@
+This is fudge of following patches from trunk
+
+http://gcc.gnu.org/ml/gcc-cvs/2009-07/msg00629.html
+http://gcc.gnu.org/ml/gcc-cvs/2009-07/msg00606.html
+
+It improved the TLS support detection by performing link step
+because so far it was only probing assembler to determine
+if TLS was supported.
+
+-Khem
+Index: gcc-4.4.1/config/tls.m4
+===================================================================
+--- gcc-4.4.1.orig/config/tls.m4 2009-01-22 20:58:03.000000000 -0800
++++ gcc-4.4.1/config/tls.m4 2009-08-28 15:14:00.419824470 -0700
+@@ -1,5 +1,6 @@
+ dnl Check whether the target supports TLS.
+ AC_DEFUN([GCC_CHECK_TLS], [
++ AC_REQUIRE([AC_CANONICAL_HOST])
+ GCC_ENABLE(tls, yes, [], [Use thread-local storage])
+ AC_CACHE_CHECK([whether the target supports thread-local storage],
+ gcc_cv_have_tls, [
+@@ -66,7 +67,24 @@
+ [dnl This is the cross-compiling case. Assume libc supports TLS if the
+ dnl binutils and the compiler do.
+ AC_LINK_IFELSE([__thread int a; int b; int main() { return a = b; }],
+- [gcc_cv_have_tls=yes], [gcc_cv_have_tls=no])
++ [chktls_save_LDFLAGS="$LDFLAGS"
++ dnl Shared library options may depend on the host; this check
++ dnl is only known to be needed for GNU/Linux.
++ case $host in
++ *-*-linux*)
++ LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
++ ;;
++ esac
++ chktls_save_CFLAGS="$CFLAGS"
++ CFLAGS="-fPIC $CFLAGS"
++ dnl If -shared works, test if TLS works in a shared library.
++ AC_LINK_IFELSE([int f() { return 0; }],
++ [AC_LINK_IFELSE([__thread int a; int b; int f() { return a = b; }],
++ [gcc_cv_have_tls=yes],
++ [gcc_cv_have_tls=no])],
++ [gcc_cv_have_tls=yes])
++ CFLAGS="$chktls_save_CFLAGS"
++ LDFLAGS="$chktls_save_LDFLAGS"], [gcc_cv_have_tls=no])
+ ]
+ )])
+ if test "$enable_tls $gcc_cv_have_tls" = "yes yes"; then
+Index: gcc-4.4.1/libgomp/configure
+===================================================================
+--- gcc-4.4.1.orig/libgomp/configure 2009-08-28 16:08:56.936822000 -0700
++++ gcc-4.4.1/libgomp/configure 2009-08-28 16:11:50.135833432 -0700
+@@ -17859,6 +17859,7 @@
+
+ # See if we support thread-local storage.
+
++
+ # Check whether --enable-tls or --disable-tls was given.
+ if test "${enable_tls+set}" = set; then
+ enableval="$enable_tls"
+@@ -17906,6 +17907,64 @@
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
++ chktls_save_LDFLAGS="$LDFLAGS"
++ case $host in
++ *-*-linux*)
++ LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
++ ;;
++ esac
++ chktls_save_CFLAGS="$CFLAGS"
++ CFLAGS="-fPIC $CFLAGS"
++ cat >conftest.$ac_ext <<_ACEOF
++int f() { return 0; }
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; } &&
++ { ac_try='test -s conftest$ac_exeext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ cat >conftest.$ac_ext <<_ACEOF
++__thread int a; int b; int f() { return a = b; }
++_ACEOF
++rm -f conft