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