cc/gcc: fix building for powerpc for the 4.4.x series
author"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Mar 20 18:42:34 2010 +0100 (2010-03-20)
changeset 185776b1923da63d
parent 1856 e23ffb5c7928
child 1858 43d14939d956
cc/gcc: fix building for powerpc for the 4.4.x series

Reported by: Thomas Petazzoni
http://sourceware.org/ml/crossgcc/2010-03/msg00057.html

Discussions:
http://lists.uclibc.org/pipermail/uclibc/2010-March/043697.html
http://lists.uclibc.org/pipermail/buildroot/2010-March/032790.html
http://ibot.rikers.org/%23uclibc/20100316.html.gz
(search for "copysignl", by kos_tom, blindvt and y_morin)
patches/gcc/4.4.0/380-powerpc-libgcc_s-link-libm.patch
patches/gcc/4.4.1/380-powerpc-libgcc_s-link-libm.patch
patches/gcc/4.4.2/380-powerpc-libgcc_s-link-libm.patch
patches/gcc/4.4.3/380-powerpc-libgcc_s-link-libm.patch
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/patches/gcc/4.4.0/380-powerpc-libgcc_s-link-libm.patch	Sat Mar 20 18:42:34 2010 +0100
     1.3 @@ -0,0 +1,135 @@
     1.4 +http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00269.html
     1.5 +
     1.6 +On glibc the libc.so carries a copy of the math function copysignl() but
     1.7 +on uClibc math functions like copysignl() live in libm. Since libgcc_s
     1.8 +contains unresolved symbols, any attempt to link against libgcc_s
     1.9 +without explicitely specifying -lm fails, resulting in a broken
    1.10 +bootstrap of the compiler.
    1.11 +
    1.12 +
    1.13 +diff -rdup gcc-4.4.0.old/gcc/config/t-slibgcc-elf-ver gcc-4.4.0/gcc/config/t-slibgcc-elf-ver
    1.14 +--- gcc-4.4.0.old/gcc/config/t-slibgcc-elf-ver	2005-10-31 18:03:08.000000000 +0100
    1.15 ++++ gcc-4.4.0/gcc/config/t-slibgcc-elf-ver	2008-10-07 19:28:13.000000000 +0200
    1.16 +@@ -9,7 +9,7 @@ SHLIB_MAP = @shlib_map_file@
    1.17 + SHLIB_OBJS = @shlib_objs@
    1.18 + SHLIB_DIR = @multilib_dir@
    1.19 + SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
    1.20 +-SHLIB_LC = -lc
    1.21 ++SHLIB_LC = @libgcc_libm@ -lc
    1.22 + 
    1.23 + SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
    1.24 + 	-Wl,--soname=$(SHLIB_SONAME) \
    1.25 +diff -rdup gcc-4.4.0.old/libgcc/configure gcc-4.4.0/libgcc/configure
    1.26 +--- gcc-4.4.0.old/libgcc/configure	2008-07-17 10:40:53.000000000 +0200
    1.27 ++++ gcc-4.4.0/libgcc/configure	2008-10-07 19:40:48.000000000 +0200
    1.28 +@@ -272,7 +272,7 @@ PACKAGE_STRING='GNU C Runtime Library 1.
    1.29 + PACKAGE_BUGREPORT=''
    1.30 + 
    1.31 + ac_unique_file="static-object.mk"
    1.32 +-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 libgcc_topdir enable_shared slibdir INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AWK build build_cpu build_vendor build_os host host_cpu host_vendor host_os host_noncanonical build_libsubdir build_subdir host_subdir target_subdir AR ac_ct_AR LIPO ac_ct_LIPO NM ac_ct_NM RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP decimal_float enable_decimal_float fixed_point vis_hide set_have_cc_tls tmake_file extra_parts asm_hidden_op LIBOBJS LTLIBOBJS'
    1.33 ++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 libgcc_topdir enable_shared slibdir INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AWK build build_cpu build_vendor build_os host host_cpu host_vendor host_os host_noncanonical build_libsubdir build_subdir host_subdir target_subdir AR ac_ct_AR LIPO ac_ct_LIPO NM ac_ct_NM RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP decimal_float enable_decimal_float fixed_point vis_hide set_have_cc_tls LIBGCC_LIBM tmake_file extra_parts asm_hidden_op LIBOBJS LTLIBOBJS'
    1.34 + ac_subst_files=''
    1.35 + ac_pwd=`pwd`
    1.36 + 
    1.37 +@@ -3522,6 +3522,39 @@ if test "$enable_tls $gcc_cv_have_cc_tls
    1.38 + fi
    1.39 + 
    1.40 + 
    1.41 ++# On powerpc libgcc_s references copysignl which is a libm function but
    1.42 ++# glibc apparently also provides it via libc as opposed to uClibc where
    1.43 ++# it lives in libm.
    1.44 ++echo "$as_me:$LINENO: checking for library containing copysignl" >&5
    1.45 ++echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6
    1.46 ++if test "${libgcc_cv_copysignl_lib+set}" = set; then
    1.47 ++  echo $ECHO_N "(cached) $ECHO_C" >&6
    1.48 ++else
    1.49 ++
    1.50 ++    echo '#include <features.h>' > conftest.c
    1.51 ++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
    1.52 ++    libgcc_cv_copysignl_lib="-lc"
    1.53 ++    if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5'
    1.54 ++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
    1.55 ++  (eval $ac_try) 2>&5
    1.56 ++  ac_status=$?
    1.57 ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
    1.58 ++  (exit $ac_status); }; }
    1.59 ++    then
    1.60 ++	libgcc_cv_copysignl_lib="-lm"
    1.61 ++    fi
    1.62 ++    rm -f conftest.*
    1.63 ++
    1.64 ++fi
    1.65 ++echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5
    1.66 ++echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6
    1.67 ++
    1.68 ++case /${libgcc_cv_copysignl_lib}/ in
    1.69 ++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
    1.70 ++  *) LIBGCC_LIBM= ;;
    1.71 ++esac
    1.72 ++
    1.73 ++
    1.74 + # Conditionalize the makefile for this target machine.
    1.75 + tmake_file_=
    1.76 + for f in ${tmake_file}
    1.77 +@@ -4242,6 +4275,7 @@ s,@enable_decimal_float@,$enable_decimal
    1.78 + s,@fixed_point@,$fixed_point,;t t
    1.79 + s,@vis_hide@,$vis_hide,;t t
    1.80 + s,@set_have_cc_tls@,$set_have_cc_tls,;t t
    1.81 ++s,@LIBGCC_LIBM@,$LIBGCC_LIBM,;t t
    1.82 + s,@tmake_file@,$tmake_file,;t t
    1.83 + s,@extra_parts@,$extra_parts,;t t
    1.84 + s,@asm_hidden_op@,$asm_hidden_op,;t t
    1.85 +diff -rdup gcc-4.4.0.old/libgcc/configure.ac gcc-4.4.0/libgcc/configure.ac
    1.86 +--- gcc-4.4.0.old/libgcc/configure.ac	2008-07-17 10:40:53.000000000 +0200
    1.87 ++++ gcc-4.4.0/libgcc/configure.ac	2008-10-07 19:34:48.000000000 +0200
    1.88 +@@ -203,6 +203,27 @@ if test "$enable_tls $gcc_cv_have_cc_tls
    1.89 + fi
    1.90 + AC_SUBST(set_have_cc_tls)
    1.91 + 
    1.92 ++# On powerpc libgcc_s references copysignl which is a libm function but
    1.93 ++# glibc apparently also provides it via libc as opposed to uClibc where
    1.94 ++# it lives in libm.
    1.95 ++AC_CACHE_CHECK
    1.96 ++  libgcc_cv_copysignl_lib,
    1.97 ++    echo '#include <features.h>' > conftest.c
    1.98 ++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
    1.99 ++    libgcc_cv_copysignl_lib="-lc"
   1.100 ++    if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD)
   1.101 ++    then
   1.102 ++	libgcc_cv_copysignl_lib="-lm"
   1.103 ++    fi
   1.104 ++    rm -f conftest.*
   1.105 ++  ])
   1.106 ++
   1.107 ++case /${libgcc_cv_copysignl_lib}/ in
   1.108 ++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
   1.109 ++  *) LIBGCC_LIBM= ;;
   1.110 ++esac
   1.111 ++AC_SUBST(LIBGCC_LIBM)
   1.112 ++
   1.113 + # Conditionalize the makefile for this target machine.
   1.114 + tmake_file_=
   1.115 + for f in ${tmake_file}
   1.116 +diff -rdup gcc-4.4.0.old/libgcc/Makefile.in gcc-4.4.0/libgcc/Makefile.in
   1.117 +--- gcc-4.4.0.old/libgcc/Makefile.in	2008-07-17 10:40:53.000000000 +0200
   1.118 ++++ gcc-4.4.0/libgcc/Makefile.in	2008-10-07 19:28:13.000000000 +0200
   1.119 +@@ -40,6 +40,7 @@ enable_shared = @enable_shared@
   1.120 + decimal_float = @decimal_float@
   1.121 + enable_decimal_float = @enable_decimal_float@
   1.122 + fixed_point = @fixed_point@
   1.123 ++LIBGCC_LIBM = @LIBGCC_LIBM@
   1.124 + 
   1.125 + host_noncanonical = @host_noncanonical@
   1.126 + 
   1.127 +@@ -786,9 +787,10 @@ libgcc_s$(SHLIB_EXT): $(libgcc-s-objects
   1.128 + 		@multilib_dir@,$(MULTIDIR),$(subst \
   1.129 + 		@shlib_objs@,$(objects),$(subst \
   1.130 + 		@shlib_base_name@,libgcc_s,$(subst \
   1.131 ++		@libgcc_libm@,$(LIBGCC_LIBM),$(subst \
   1.132 + 		@shlib_map_file@,$(mapfile),$(subst \
   1.133 + 		@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
   1.134 +-		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
   1.135 ++		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))))
   1.136 + 
   1.137 + libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
   1.138 + 	# @multilib_flags@ is still needed because this may use
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/patches/gcc/4.4.1/380-powerpc-libgcc_s-link-libm.patch	Sat Mar 20 18:42:34 2010 +0100
     2.3 @@ -0,0 +1,135 @@
     2.4 +http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00269.html
     2.5 +
     2.6 +On glibc the libc.so carries a copy of the math function copysignl() but
     2.7 +on uClibc math functions like copysignl() live in libm. Since libgcc_s
     2.8 +contains unresolved symbols, any attempt to link against libgcc_s
     2.9 +without explicitely specifying -lm fails, resulting in a broken
    2.10 +bootstrap of the compiler.
    2.11 +
    2.12 +
    2.13 +diff -rdup gcc-4.4.0.old/gcc/config/t-slibgcc-elf-ver gcc-4.4.0/gcc/config/t-slibgcc-elf-ver
    2.14 +--- gcc-4.4.0.old/gcc/config/t-slibgcc-elf-ver	2005-10-31 18:03:08.000000000 +0100
    2.15 ++++ gcc-4.4.0/gcc/config/t-slibgcc-elf-ver	2008-10-07 19:28:13.000000000 +0200
    2.16 +@@ -9,7 +9,7 @@ SHLIB_MAP = @shlib_map_file@
    2.17 + SHLIB_OBJS = @shlib_objs@
    2.18 + SHLIB_DIR = @multilib_dir@
    2.19 + SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
    2.20 +-SHLIB_LC = -lc
    2.21 ++SHLIB_LC = @libgcc_libm@ -lc
    2.22 + 
    2.23 + SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
    2.24 + 	-Wl,--soname=$(SHLIB_SONAME) \
    2.25 +diff -rdup gcc-4.4.0.old/libgcc/configure gcc-4.4.0/libgcc/configure
    2.26 +--- gcc-4.4.0.old/libgcc/configure	2008-07-17 10:40:53.000000000 +0200
    2.27 ++++ gcc-4.4.0/libgcc/configure	2008-10-07 19:40:48.000000000 +0200
    2.28 +@@ -272,7 +272,7 @@ PACKAGE_STRING='GNU C Runtime Library 1.
    2.29 + PACKAGE_BUGREPORT=''
    2.30 + 
    2.31 + ac_unique_file="static-object.mk"
    2.32 +-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 libgcc_topdir enable_shared slibdir INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AWK build build_cpu build_vendor build_os host host_cpu host_vendor host_os host_noncanonical build_libsubdir build_subdir host_subdir target_subdir AR ac_ct_AR LIPO ac_ct_LIPO NM ac_ct_NM RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP decimal_float enable_decimal_float fixed_point vis_hide set_have_cc_tls tmake_file extra_parts asm_hidden_op LIBOBJS LTLIBOBJS'
    2.33 ++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 libgcc_topdir enable_shared slibdir INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AWK build build_cpu build_vendor build_os host host_cpu host_vendor host_os host_noncanonical build_libsubdir build_subdir host_subdir target_subdir AR ac_ct_AR LIPO ac_ct_LIPO NM ac_ct_NM RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP decimal_float enable_decimal_float fixed_point vis_hide set_have_cc_tls LIBGCC_LIBM tmake_file extra_parts asm_hidden_op LIBOBJS LTLIBOBJS'
    2.34 + ac_subst_files=''
    2.35 + ac_pwd=`pwd`
    2.36 + 
    2.37 +@@ -3522,6 +3522,39 @@ if test "$enable_tls $gcc_cv_have_cc_tls
    2.38 + fi
    2.39 + 
    2.40 + 
    2.41 ++# On powerpc libgcc_s references copysignl which is a libm function but
    2.42 ++# glibc apparently also provides it via libc as opposed to uClibc where
    2.43 ++# it lives in libm.
    2.44 ++echo "$as_me:$LINENO: checking for library containing copysignl" >&5
    2.45 ++echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6
    2.46 ++if test "${libgcc_cv_copysignl_lib+set}" = set; then
    2.47 ++  echo $ECHO_N "(cached) $ECHO_C" >&6
    2.48 ++else
    2.49 ++
    2.50 ++    echo '#include <features.h>' > conftest.c
    2.51 ++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
    2.52 ++    libgcc_cv_copysignl_lib="-lc"
    2.53 ++    if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5'
    2.54 ++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
    2.55 ++  (eval $ac_try) 2>&5
    2.56 ++  ac_status=$?
    2.57 ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
    2.58 ++  (exit $ac_status); }; }
    2.59 ++    then
    2.60 ++	libgcc_cv_copysignl_lib="-lm"
    2.61 ++    fi
    2.62 ++    rm -f conftest.*
    2.63 ++
    2.64 ++fi
    2.65 ++echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5
    2.66 ++echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6
    2.67 ++
    2.68 ++case /${libgcc_cv_copysignl_lib}/ in
    2.69 ++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
    2.70 ++  *) LIBGCC_LIBM= ;;
    2.71 ++esac
    2.72 ++
    2.73 ++
    2.74 + # Conditionalize the makefile for this target machine.
    2.75 + tmake_file_=
    2.76 + for f in ${tmake_file}
    2.77 +@@ -4242,6 +4275,7 @@ s,@enable_decimal_float@,$enable_decimal
    2.78 + s,@fixed_point@,$fixed_point,;t t
    2.79 + s,@vis_hide@,$vis_hide,;t t
    2.80 + s,@set_have_cc_tls@,$set_have_cc_tls,;t t
    2.81 ++s,@LIBGCC_LIBM@,$LIBGCC_LIBM,;t t
    2.82 + s,@tmake_file@,$tmake_file,;t t
    2.83 + s,@extra_parts@,$extra_parts,;t t
    2.84 + s,@asm_hidden_op@,$asm_hidden_op,;t t
    2.85 +diff -rdup gcc-4.4.0.old/libgcc/configure.ac gcc-4.4.0/libgcc/configure.ac
    2.86 +--- gcc-4.4.0.old/libgcc/configure.ac	2008-07-17 10:40:53.000000000 +0200
    2.87 ++++ gcc-4.4.0/libgcc/configure.ac	2008-10-07 19:34:48.000000000 +0200
    2.88 +@@ -203,6 +203,27 @@ if test "$enable_tls $gcc_cv_have_cc_tls
    2.89 + fi
    2.90 + AC_SUBST(set_have_cc_tls)
    2.91 + 
    2.92 ++# On powerpc libgcc_s references copysignl which is a libm function but
    2.93 ++# glibc apparently also provides it via libc as opposed to uClibc where
    2.94 ++# it lives in libm.
    2.95 ++AC_CACHE_CHECK
    2.96 ++  libgcc_cv_copysignl_lib,
    2.97 ++    echo '#include <features.h>' > conftest.c
    2.98 ++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
    2.99 ++    libgcc_cv_copysignl_lib="-lc"
   2.100 ++    if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD)
   2.101 ++    then
   2.102 ++	libgcc_cv_copysignl_lib="-lm"
   2.103 ++    fi
   2.104 ++    rm -f conftest.*
   2.105 ++  ])
   2.106 ++
   2.107 ++case /${libgcc_cv_copysignl_lib}/ in
   2.108 ++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
   2.109 ++  *) LIBGCC_LIBM= ;;
   2.110 ++esac
   2.111 ++AC_SUBST(LIBGCC_LIBM)
   2.112 ++
   2.113 + # Conditionalize the makefile for this target machine.
   2.114 + tmake_file_=
   2.115 + for f in ${tmake_file}
   2.116 +diff -rdup gcc-4.4.0.old/libgcc/Makefile.in gcc-4.4.0/libgcc/Makefile.in
   2.117 +--- gcc-4.4.0.old/libgcc/Makefile.in	2008-07-17 10:40:53.000000000 +0200
   2.118 ++++ gcc-4.4.0/libgcc/Makefile.in	2008-10-07 19:28:13.000000000 +0200
   2.119 +@@ -40,6 +40,7 @@ enable_shared = @enable_shared@
   2.120 + decimal_float = @decimal_float@
   2.121 + enable_decimal_float = @enable_decimal_float@
   2.122 + fixed_point = @fixed_point@
   2.123 ++LIBGCC_LIBM = @LIBGCC_LIBM@
   2.124 + 
   2.125 + host_noncanonical = @host_noncanonical@
   2.126 + 
   2.127 +@@ -786,9 +787,10 @@ libgcc_s$(SHLIB_EXT): $(libgcc-s-objects
   2.128 + 		@multilib_dir@,$(MULTIDIR),$(subst \
   2.129 + 		@shlib_objs@,$(objects),$(subst \
   2.130 + 		@shlib_base_name@,libgcc_s,$(subst \
   2.131 ++		@libgcc_libm@,$(LIBGCC_LIBM),$(subst \
   2.132 + 		@shlib_map_file@,$(mapfile),$(subst \
   2.133 + 		@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
   2.134 +-		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
   2.135 ++		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))))
   2.136 + 
   2.137 + libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
   2.138 + 	# @multilib_flags@ is still needed because this may use
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/patches/gcc/4.4.2/380-powerpc-libgcc_s-link-libm.patch	Sat Mar 20 18:42:34 2010 +0100
     3.3 @@ -0,0 +1,135 @@
     3.4 +http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00269.html
     3.5 +
     3.6 +On glibc the libc.so carries a copy of the math function copysignl() but
     3.7 +on uClibc math functions like copysignl() live in libm. Since libgcc_s
     3.8 +contains unresolved symbols, any attempt to link against libgcc_s
     3.9 +without explicitely specifying -lm fails, resulting in a broken
    3.10 +bootstrap of the compiler.
    3.11 +
    3.12 +
    3.13 +diff -rdup gcc-4.4.0.old/gcc/config/t-slibgcc-elf-ver gcc-4.4.0/gcc/config/t-slibgcc-elf-ver
    3.14 +--- gcc-4.4.0.old/gcc/config/t-slibgcc-elf-ver	2005-10-31 18:03:08.000000000 +0100
    3.15 ++++ gcc-4.4.0/gcc/config/t-slibgcc-elf-ver	2008-10-07 19:28:13.000000000 +0200
    3.16 +@@ -9,7 +9,7 @@ SHLIB_MAP = @shlib_map_file@
    3.17 + SHLIB_OBJS = @shlib_objs@
    3.18 + SHLIB_DIR = @multilib_dir@
    3.19 + SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
    3.20 +-SHLIB_LC = -lc
    3.21 ++SHLIB_LC = @libgcc_libm@ -lc
    3.22 + 
    3.23 + SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
    3.24 + 	-Wl,--soname=$(SHLIB_SONAME) \
    3.25 +diff -rdup gcc-4.4.0.old/libgcc/configure gcc-4.4.0/libgcc/configure
    3.26 +--- gcc-4.4.0.old/libgcc/configure	2008-07-17 10:40:53.000000000 +0200
    3.27 ++++ gcc-4.4.0/libgcc/configure	2008-10-07 19:40:48.000000000 +0200
    3.28 +@@ -272,7 +272,7 @@ PACKAGE_STRING='GNU C Runtime Library 1.
    3.29 + PACKAGE_BUGREPORT=''
    3.30 + 
    3.31 + ac_unique_file="static-object.mk"
    3.32 +-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 libgcc_topdir enable_shared slibdir INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AWK build build_cpu build_vendor build_os host host_cpu host_vendor host_os host_noncanonical build_libsubdir build_subdir host_subdir target_subdir AR ac_ct_AR LIPO ac_ct_LIPO NM ac_ct_NM RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP decimal_float enable_decimal_float fixed_point vis_hide set_have_cc_tls tmake_file extra_parts asm_hidden_op LIBOBJS LTLIBOBJS'
    3.33 ++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 libgcc_topdir enable_shared slibdir INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AWK build build_cpu build_vendor build_os host host_cpu host_vendor host_os host_noncanonical build_libsubdir build_subdir host_subdir target_subdir AR ac_ct_AR LIPO ac_ct_LIPO NM ac_ct_NM RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP decimal_float enable_decimal_float fixed_point vis_hide set_have_cc_tls LIBGCC_LIBM tmake_file extra_parts asm_hidden_op LIBOBJS LTLIBOBJS'
    3.34 + ac_subst_files=''
    3.35 + ac_pwd=`pwd`
    3.36 + 
    3.37 +@@ -3522,6 +3522,39 @@ if test "$enable_tls $gcc_cv_have_cc_tls
    3.38 + fi
    3.39 + 
    3.40 + 
    3.41 ++# On powerpc libgcc_s references copysignl which is a libm function but
    3.42 ++# glibc apparently also provides it via libc as opposed to uClibc where
    3.43 ++# it lives in libm.
    3.44 ++echo "$as_me:$LINENO: checking for library containing copysignl" >&5
    3.45 ++echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6
    3.46 ++if test "${libgcc_cv_copysignl_lib+set}" = set; then
    3.47 ++  echo $ECHO_N "(cached) $ECHO_C" >&6
    3.48 ++else
    3.49 ++
    3.50 ++    echo '#include <features.h>' > conftest.c
    3.51 ++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
    3.52 ++    libgcc_cv_copysignl_lib="-lc"
    3.53 ++    if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5'
    3.54 ++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
    3.55 ++  (eval $ac_try) 2>&5
    3.56 ++  ac_status=$?
    3.57 ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
    3.58 ++  (exit $ac_status); }; }
    3.59 ++    then
    3.60 ++	libgcc_cv_copysignl_lib="-lm"
    3.61 ++    fi
    3.62 ++    rm -f conftest.*
    3.63 ++
    3.64 ++fi
    3.65 ++echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5
    3.66 ++echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6
    3.67 ++
    3.68 ++case /${libgcc_cv_copysignl_lib}/ in
    3.69 ++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
    3.70 ++  *) LIBGCC_LIBM= ;;
    3.71 ++esac
    3.72 ++
    3.73 ++
    3.74 + # Conditionalize the makefile for this target machine.
    3.75 + tmake_file_=
    3.76 + for f in ${tmake_file}
    3.77 +@@ -4242,6 +4275,7 @@ s,@enable_decimal_float@,$enable_decimal
    3.78 + s,@fixed_point@,$fixed_point,;t t
    3.79 + s,@vis_hide@,$vis_hide,;t t
    3.80 + s,@set_have_cc_tls@,$set_have_cc_tls,;t t
    3.81 ++s,@LIBGCC_LIBM@,$LIBGCC_LIBM,;t t
    3.82 + s,@tmake_file@,$tmake_file,;t t
    3.83 + s,@extra_parts@,$extra_parts,;t t
    3.84 + s,@asm_hidden_op@,$asm_hidden_op,;t t
    3.85 +diff -rdup gcc-4.4.0.old/libgcc/configure.ac gcc-4.4.0/libgcc/configure.ac
    3.86 +--- gcc-4.4.0.old/libgcc/configure.ac	2008-07-17 10:40:53.000000000 +0200
    3.87 ++++ gcc-4.4.0/libgcc/configure.ac	2008-10-07 19:34:48.000000000 +0200
    3.88 +@@ -203,6 +203,27 @@ if test "$enable_tls $gcc_cv_have_cc_tls
    3.89 + fi
    3.90 + AC_SUBST(set_have_cc_tls)
    3.91 + 
    3.92 ++# On powerpc libgcc_s references copysignl which is a libm function but
    3.93 ++# glibc apparently also provides it via libc as opposed to uClibc where
    3.94 ++# it lives in libm.
    3.95 ++AC_CACHE_CHECK
    3.96 ++  libgcc_cv_copysignl_lib,
    3.97 ++    echo '#include <features.h>' > conftest.c
    3.98 ++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
    3.99 ++    libgcc_cv_copysignl_lib="-lc"
   3.100 ++    if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD)
   3.101 ++    then
   3.102 ++	libgcc_cv_copysignl_lib="-lm"
   3.103 ++    fi
   3.104 ++    rm -f conftest.*
   3.105 ++  ])
   3.106 ++
   3.107 ++case /${libgcc_cv_copysignl_lib}/ in
   3.108 ++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
   3.109 ++  *) LIBGCC_LIBM= ;;
   3.110 ++esac
   3.111 ++AC_SUBST(LIBGCC_LIBM)
   3.112 ++
   3.113 + # Conditionalize the makefile for this target machine.
   3.114 + tmake_file_=
   3.115 + for f in ${tmake_file}
   3.116 +diff -rdup gcc-4.4.0.old/libgcc/Makefile.in gcc-4.4.0/libgcc/Makefile.in
   3.117 +--- gcc-4.4.0.old/libgcc/Makefile.in	2008-07-17 10:40:53.000000000 +0200
   3.118 ++++ gcc-4.4.0/libgcc/Makefile.in	2008-10-07 19:28:13.000000000 +0200
   3.119 +@@ -40,6 +40,7 @@ enable_shared = @enable_shared@
   3.120 + decimal_float = @decimal_float@
   3.121 + enable_decimal_float = @enable_decimal_float@
   3.122 + fixed_point = @fixed_point@
   3.123 ++LIBGCC_LIBM = @LIBGCC_LIBM@
   3.124 + 
   3.125 + host_noncanonical = @host_noncanonical@
   3.126 + 
   3.127 +@@ -786,9 +787,10 @@ libgcc_s$(SHLIB_EXT): $(libgcc-s-objects
   3.128 + 		@multilib_dir@,$(MULTIDIR),$(subst \
   3.129 + 		@shlib_objs@,$(objects),$(subst \
   3.130 + 		@shlib_base_name@,libgcc_s,$(subst \
   3.131 ++		@libgcc_libm@,$(LIBGCC_LIBM),$(subst \
   3.132 + 		@shlib_map_file@,$(mapfile),$(subst \
   3.133 + 		@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
   3.134 +-		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
   3.135 ++		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))))
   3.136 + 
   3.137 + libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
   3.138 + 	# @multilib_flags@ is still needed because this may use
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/patches/gcc/4.4.3/380-powerpc-libgcc_s-link-libm.patch	Sat Mar 20 18:42:34 2010 +0100
     4.3 @@ -0,0 +1,135 @@
     4.4 +http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00269.html
     4.5 +
     4.6 +On glibc the libc.so carries a copy of the math function copysignl() but
     4.7 +on uClibc math functions like copysignl() live in libm. Since libgcc_s
     4.8 +contains unresolved symbols, any attempt to link against libgcc_s
     4.9 +without explicitely specifying -lm fails, resulting in a broken
    4.10 +bootstrap of the compiler.
    4.11 +
    4.12 +
    4.13 +diff -rdup gcc-4.4.0.old/gcc/config/t-slibgcc-elf-ver gcc-4.4.0/gcc/config/t-slibgcc-elf-ver
    4.14 +--- gcc-4.4.0.old/gcc/config/t-slibgcc-elf-ver	2005-10-31 18:03:08.000000000 +0100
    4.15 ++++ gcc-4.4.0/gcc/config/t-slibgcc-elf-ver	2008-10-07 19:28:13.000000000 +0200
    4.16 +@@ -9,7 +9,7 @@ SHLIB_MAP = @shlib_map_file@
    4.17 + SHLIB_OBJS = @shlib_objs@
    4.18 + SHLIB_DIR = @multilib_dir@
    4.19 + SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
    4.20 +-SHLIB_LC = -lc
    4.21 ++SHLIB_LC = @libgcc_libm@ -lc
    4.22 + SHLIB_MAKE_SOLINK = $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
    4.23 + SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_SONAME) \
    4.24 + 	$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
    4.25 +diff -rdup gcc-4.4.0.old/libgcc/configure gcc-4.4.0/libgcc/configure
    4.26 +--- gcc-4.4.0.old/libgcc/configure	2008-07-17 10:40:53.000000000 +0200
    4.27 ++++ gcc-4.4.0/libgcc/configure	2008-10-07 19:40:48.000000000 +0200
    4.28 +@@ -272,7 +272,7 @@ PACKAGE_STRING='GNU C Runtime Library 1.
    4.29 + PACKAGE_BUGREPORT=''
    4.30 + 
    4.31 + ac_unique_file="static-object.mk"
    4.32 +-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 libgcc_topdir enable_shared slibdir INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AWK build build_cpu build_vendor build_os host host_cpu host_vendor host_os host_noncanonical build_libsubdir build_subdir host_subdir target_subdir AR ac_ct_AR LIPO ac_ct_LIPO NM ac_ct_NM RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP decimal_float enable_decimal_float fixed_point vis_hide set_have_cc_tls tmake_file extra_parts asm_hidden_op LIBOBJS LTLIBOBJS'
    4.33 ++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 libgcc_topdir enable_shared slibdir INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AWK build build_cpu build_vendor build_os host host_cpu host_vendor host_os host_noncanonical build_libsubdir build_subdir host_subdir target_subdir AR ac_ct_AR LIPO ac_ct_LIPO NM ac_ct_NM RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP decimal_float enable_decimal_float fixed_point vis_hide set_have_cc_tls LIBGCC_LIBM tmake_file extra_parts asm_hidden_op LIBOBJS LTLIBOBJS'
    4.34 + ac_subst_files=''
    4.35 + ac_pwd=`pwd`
    4.36 + 
    4.37 +@@ -3522,6 +3522,39 @@ if test "$enable_tls $gcc_cv_have_cc_tls
    4.38 + fi
    4.39 + 
    4.40 + 
    4.41 ++# On powerpc libgcc_s references copysignl which is a libm function but
    4.42 ++# glibc apparently also provides it via libc as opposed to uClibc where
    4.43 ++# it lives in libm.
    4.44 ++echo "$as_me:$LINENO: checking for library containing copysignl" >&5
    4.45 ++echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6
    4.46 ++if test "${libgcc_cv_copysignl_lib+set}" = set; then
    4.47 ++  echo $ECHO_N "(cached) $ECHO_C" >&6
    4.48 ++else
    4.49 ++
    4.50 ++    echo '#include <features.h>' > conftest.c
    4.51 ++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
    4.52 ++    libgcc_cv_copysignl_lib="-lc"
    4.53 ++    if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5'
    4.54 ++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
    4.55 ++  (eval $ac_try) 2>&5
    4.56 ++  ac_status=$?
    4.57 ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
    4.58 ++  (exit $ac_status); }; }
    4.59 ++    then
    4.60 ++	libgcc_cv_copysignl_lib="-lm"
    4.61 ++    fi
    4.62 ++    rm -f conftest.*
    4.63 ++
    4.64 ++fi
    4.65 ++echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5
    4.66 ++echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6
    4.67 ++
    4.68 ++case /${libgcc_cv_copysignl_lib}/ in
    4.69 ++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
    4.70 ++  *) LIBGCC_LIBM= ;;
    4.71 ++esac
    4.72 ++
    4.73 ++
    4.74 + # Conditionalize the makefile for this target machine.
    4.75 + tmake_file_=
    4.76 + for f in ${tmake_file}
    4.77 +@@ -4242,6 +4275,7 @@ s,@enable_decimal_float@,$enable_decimal
    4.78 + s,@fixed_point@,$fixed_point,;t t
    4.79 + s,@vis_hide@,$vis_hide,;t t
    4.80 + s,@set_have_cc_tls@,$set_have_cc_tls,;t t
    4.81 ++s,@LIBGCC_LIBM@,$LIBGCC_LIBM,;t t
    4.82 + s,@tmake_file@,$tmake_file,;t t
    4.83 + s,@extra_parts@,$extra_parts,;t t
    4.84 + s,@asm_hidden_op@,$asm_hidden_op,;t t
    4.85 +diff -rdup gcc-4.4.0.old/libgcc/configure.ac gcc-4.4.0/libgcc/configure.ac
    4.86 +--- gcc-4.4.0.old/libgcc/configure.ac	2008-07-17 10:40:53.000000000 +0200
    4.87 ++++ gcc-4.4.0/libgcc/configure.ac	2008-10-07 19:34:48.000000000 +0200
    4.88 +@@ -203,6 +203,27 @@ if test "$enable_tls $gcc_cv_have_cc_tls
    4.89 + fi
    4.90 + AC_SUBST(set_have_cc_tls)
    4.91 + 
    4.92 ++# On powerpc libgcc_s references copysignl which is a libm function but
    4.93 ++# glibc apparently also provides it via libc as opposed to uClibc where
    4.94 ++# it lives in libm.
    4.95 ++AC_CACHE_CHECK
    4.96 ++  libgcc_cv_copysignl_lib,
    4.97 ++    echo '#include <features.h>' > conftest.c
    4.98 ++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
    4.99 ++    libgcc_cv_copysignl_lib="-lc"
   4.100 ++    if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD)
   4.101 ++    then
   4.102 ++	libgcc_cv_copysignl_lib="-lm"
   4.103 ++    fi
   4.104 ++    rm -f conftest.*
   4.105 ++  ])
   4.106 ++
   4.107 ++case /${libgcc_cv_copysignl_lib}/ in
   4.108 ++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
   4.109 ++  *) LIBGCC_LIBM= ;;
   4.110 ++esac
   4.111 ++AC_SUBST(LIBGCC_LIBM)
   4.112 ++
   4.113 + # Conditionalize the makefile for this target machine.
   4.114 + tmake_file_=
   4.115 + for f in ${tmake_file}
   4.116 +diff -rdup gcc-4.4.0.old/libgcc/Makefile.in gcc-4.4.0/libgcc/Makefile.in
   4.117 +--- gcc-4.4.0.old/libgcc/Makefile.in	2008-07-17 10:40:53.000000000 +0200
   4.118 ++++ gcc-4.4.0/libgcc/Makefile.in	2008-10-07 19:28:13.000000000 +0200
   4.119 +@@ -40,6 +40,7 @@ enable_shared = @enable_shared@
   4.120 + decimal_float = @decimal_float@
   4.121 + enable_decimal_float = @enable_decimal_float@
   4.122 + fixed_point = @fixed_point@
   4.123 ++LIBGCC_LIBM = @LIBGCC_LIBM@
   4.124 + 
   4.125 + host_noncanonical = @host_noncanonical@
   4.126 + 
   4.127 +@@ -786,9 +787,10 @@ libgcc_s$(SHLIB_EXT): $(libgcc-s-objects
   4.128 + 		@multilib_dir@,$(MULTIDIR),$(subst \
   4.129 + 		@shlib_objs@,$(objects),$(subst \
   4.130 + 		@shlib_base_name@,libgcc_s,$(subst \
   4.131 ++		@libgcc_libm@,$(LIBGCC_LIBM),$(subst \
   4.132 + 		@shlib_map_file@,$(mapfile),$(subst \
   4.133 + 		@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
   4.134 +-		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
   4.135 ++		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))))
   4.136 + 
   4.137 + libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
   4.138 + 	# @multilib_flags@ is still needed because this may use