patches/gcc/4.4.6/380-powerpc-libgcc_s-link-libm.patch
author "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
Mon Apr 16 15:25:36 2012 +0200 (2012-04-16)
changeset 2941 13e40098fffc
parent 2149 98b7806295cc
permissions -rw-r--r--
cc/gcc: update Linaro GCC revisions to 2012.04

Update Linaro GCC with the latest available revisions.

The 4.7 revision is also released, but the infrastructure is not yet ready for
it in CT-NG.

Signed-off-by: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
yann@2149
     1
http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00269.html
yann@2149
     2
yann@2149
     3
On glibc the libc.so carries a copy of the math function copysignl() but
yann@2149
     4
contains unresolved symbols, any attempt to link against libgcc_s
yann@2149
     5
without explicitely specifying -lm fails, resulting in a broken
yann@2149
     6
bootstrap of the compiler.
yann@2149
     7
yann@2149
     8
yann@2149
     9
diff -durN gcc-4.4.5.orig/gcc/config/t-slibgcc-elf-ver gcc-4.4.5/gcc/config/t-slibgcc-elf-ver
yann@2149
    10
--- gcc-4.4.5.orig/gcc/config/t-slibgcc-elf-ver	2010-01-04 16:13:08.000000000 +0100
yann@2149
    11
+++ gcc-4.4.5/gcc/config/t-slibgcc-elf-ver	2010-10-09 23:14:18.000000000 +0200
yann@2149
    12
@@ -9,7 +9,7 @@
yann@2149
    13
 SHLIB_OBJS = @shlib_objs@
yann@2149
    14
 SHLIB_DIR = @multilib_dir@
yann@2149
    15
 SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
yann@2149
    16
-SHLIB_LC = -lc
yann@2149
    17
+SHLIB_LC = @libgcc_libm@ -lc
yann@2149
    18
 SHLIB_MAKE_SOLINK = $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
yann@2149
    19
 SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_SONAME) \
yann@2149
    20
 	$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
yann@2149
    21
diff -durN gcc-4.4.5.orig/libgcc/configure gcc-4.4.5/libgcc/configure
yann@2149
    22
--- gcc-4.4.5.orig/libgcc/configure	2008-11-20 18:13:01.000000000 +0100
yann@2149
    23
+++ gcc-4.4.5/libgcc/configure	2010-10-09 23:14:18.000000000 +0200
yann@2149
    24
@@ -272,7 +272,7 @@
yann@2149
    25
 PACKAGE_BUGREPORT=''
yann@2149
    26
 
yann@2149
    27
 ac_unique_file="static-object.mk"
yann@2149
    28
-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'
yann@2149
    29
+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'
yann@2149
    30
 ac_subst_files=''
yann@2149
    31
 ac_pwd=`pwd`
yann@2149
    32
 
yann@2149
    33
@@ -3547,6 +3547,39 @@
yann@2149
    34
 fi
yann@2149
    35
 
yann@2149
    36
 
yann@2149
    37
+# On powerpc libgcc_s references copysignl which is a libm function but
yann@2149
    38
+# glibc apparently also provides it via libc as opposed to uClibc where
yann@2149
    39
+# it lives in libm.
yann@2149
    40
+echo "$as_me:$LINENO: checking for library containing copysignl" >&5
yann@2149
    41
+echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6
yann@2149
    42
+if test "${libgcc_cv_copysignl_lib+set}" = set; then
yann@2149
    43
+  echo $ECHO_N "(cached) $ECHO_C" >&6
yann@2149
    44
+else
yann@2149
    45
+
yann@2149
    46
+    echo '#include <features.h>' > conftest.c
yann@2149
    47
+    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
yann@2149
    48
+    libgcc_cv_copysignl_lib="-lc"
yann@2149
    49
+    if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5'
yann@2149
    50
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
yann@2149
    51
+  (eval $ac_try) 2>&5
yann@2149
    52
+  ac_status=$?
yann@2149
    53
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
yann@2149
    54
+  (exit $ac_status); }; }
yann@2149
    55
+    then
yann@2149
    56
+	libgcc_cv_copysignl_lib="-lm"
yann@2149
    57
+    fi
yann@2149
    58
+    rm -f conftest.*
yann@2149
    59
+
yann@2149
    60
+fi
yann@2149
    61
+echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5
yann@2149
    62
+echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6
yann@2149
    63
+
yann@2149
    64
+case /${libgcc_cv_copysignl_lib}/ in
yann@2149
    65
+  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
yann@2149
    66
+  *) LIBGCC_LIBM= ;;
yann@2149
    67
+esac
yann@2149
    68
+
yann@2149
    69
+
yann@2149
    70
 # Conditionalize the makefile for this target machine.
yann@2149
    71
 tmake_file_=
yann@2149
    72
 for f in ${tmake_file}
yann@2149
    73
@@ -4267,6 +4300,7 @@
yann@2149
    74
 s,@fixed_point@,$fixed_point,;t t
yann@2149
    75
 s,@vis_hide@,$vis_hide,;t t
yann@2149
    76
 s,@set_have_cc_tls@,$set_have_cc_tls,;t t
yann@2149
    77
+s,@LIBGCC_LIBM@,$LIBGCC_LIBM,;t t
yann@2149
    78
 s,@tmake_file@,$tmake_file,;t t
yann@2149
    79
 s,@extra_parts@,$extra_parts,;t t
yann@2149
    80
 s,@asm_hidden_op@,$asm_hidden_op,;t t
yann@2149
    81
diff -durN gcc-4.4.5.orig/libgcc/configure.ac gcc-4.4.5/libgcc/configure.ac
yann@2149
    82
--- gcc-4.4.5.orig/libgcc/configure.ac	2008-11-20 18:13:01.000000000 +0100
yann@2149
    83
+++ gcc-4.4.5/libgcc/configure.ac	2010-10-09 23:14:18.000000000 +0200
yann@2149
    84
@@ -223,6 +223,27 @@
yann@2149
    85
 fi
yann@2149
    86
 AC_SUBST(set_have_cc_tls)
yann@2149
    87
 
yann@2149
    88
+# On powerpc libgcc_s references copysignl which is a libm function but
yann@2149
    89
+# glibc apparently also provides it via libc as opposed to uClibc where
yann@2149
    90
+# it lives in libm.
yann@2149
    91
+AC_CACHE_CHECK
yann@2149
    92
+  libgcc_cv_copysignl_lib,
yann@2149
    93
+    echo '#include <features.h>' > conftest.c
yann@2149
    94
+    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
yann@2149
    95
+    libgcc_cv_copysignl_lib="-lc"
yann@2149
    96
+    if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD)
yann@2149
    97
+    then
yann@2149
    98
+	libgcc_cv_copysignl_lib="-lm"
yann@2149
    99
+    fi
yann@2149
   100
+    rm -f conftest.*
yann@2149
   101
+  ])
yann@2149
   102
+
yann@2149
   103
+case /${libgcc_cv_copysignl_lib}/ in
yann@2149
   104
+  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
yann@2149
   105
+  *) LIBGCC_LIBM= ;;
yann@2149
   106
+esac
yann@2149
   107
+AC_SUBST(LIBGCC_LIBM)
yann@2149
   108
+
yann@2149
   109
 # Conditionalize the makefile for this target machine.
yann@2149
   110
 tmake_file_=
yann@2149
   111
 for f in ${tmake_file}
yann@2149
   112
diff -durN gcc-4.4.5.orig/libgcc/Makefile.in gcc-4.4.5/libgcc/Makefile.in
yann@2149
   113
--- gcc-4.4.5.orig/libgcc/Makefile.in	2009-04-10 01:23:07.000000000 +0200
yann@2149
   114
+++ gcc-4.4.5/libgcc/Makefile.in	2010-10-09 23:14:18.000000000 +0200
yann@2149
   115
@@ -39,6 +39,7 @@
yann@2149
   116
 decimal_float = @decimal_float@
yann@2149
   117
 enable_decimal_float = @enable_decimal_float@
yann@2149
   118
 fixed_point = @fixed_point@
yann@2149
   119
+LIBGCC_LIBM = @LIBGCC_LIBM@
yann@2149
   120
 
yann@2149
   121
 host_noncanonical = @host_noncanonical@
yann@2149
   122
 
yann@2149
   123
@@ -787,9 +788,10 @@
yann@2149
   124
 		@multilib_dir@,$(MULTIDIR),$(subst \
yann@2149
   125
 		@shlib_objs@,$(objects),$(subst \
yann@2149
   126
 		@shlib_base_name@,libgcc_s,$(subst \
yann@2149
   127
+		@libgcc_libm@,$(LIBGCC_LIBM),$(subst \
yann@2149
   128
 		@shlib_map_file@,$(mapfile),$(subst \
yann@2149
   129
 		@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
yann@2149
   130
-		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
yann@2149
   131
+		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))))
yann@2149
   132
 
yann@2149
   133
 libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
yann@2149
   134
 	# @multilib_flags@ is still needed because this may use