All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Korsgaard <jacmet@uclibc.org>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] gcc-4.3.3: add a patch to link with the math lib to	 get copysignal (updated)
Date: Tue, 05 May 2009 09:29:16 +0200	[thread overview]
Message-ID: <87my9sgg8j.fsf@macbook.be.48ers.dk> (raw)
In-Reply-To: <4A0026240200007000014C65@gwia.alliedtelesyn.co.nz> (angus salkeld's message of "Tue\, 05 May 2009 11\:42\:28 +1200")

>>>>> "angus" == angus salkeld <angus.salkeld@alliedtelesis.co.nz> writes:

 angus> I have just tried powerpc-603e and it has the same problem, so
 angus> I have altered the logic slightly.

 angus> Conditionally apply the following patch by Bernhard Reutner-Fischer which
 angus> solves a link error on powerpc when using a shared libgcc_s

.. and BR2_SOFT_FLOAT I guess? Without soft float it works fine here
(why would you not use the hardware FPU of the 603e)?

Bernhard, is this the most uptodate version of your patch?

 angus> See: http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00237.html
 angus> http://www.nabble.com/PPC-won't-build-with-soft-float-td22772110.html
 angus> ---
 angus>  .../powerpc-link-with-math-lib.patch.conditional   |  130 ++++++++++++++++++++
 angus>  toolchain/gcc/gcc-uclibc-4.x.mk                    |    5 +
 angus>  2 files changed, 135 insertions(+), 0 deletions(-)
 angus>  create mode 100644 toolchain/gcc/4.3.3/powerpc-link-with-math-lib.patch.conditional

 angus> diff --git a/toolchain/gcc/4.3.3/powerpc-link-with-math-lib.patch.conditional b/toolchain/gcc/4.3.3/powerpc-link-with-math-lib.patch.conditional
 angus> new file mode 100644
 angus> index 0000000..7d6aa5e
 angus> --- /dev/null
 angus> +++ b/toolchain/gcc/4.3.3/powerpc-link-with-math-lib.patch.conditional
 angus> @@ -0,0 +1,130 @@
 angus> +See: http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00237.html
 angus> +Patch by: Bernhard Reutner-Fischer
 angus> +
 angus> +diff -rdup gcc-4.4.0.old/gcc/config/t-slibgcc-elf-ver gcc-4.4.0/gcc/config/t-slibgcc-elf-ver
 angus> +--- gcc-4.4.0.old/gcc/config/t-slibgcc-elf-ver	2005-10-31 18:03:08.000000000 +0100
 angus> ++++ gcc-4.4.0/gcc/config/t-slibgcc-elf-ver	2008-10-07 19:28:13.000000000 +0200
 angus> +@@ -9,7 +9,7 @@ SHLIB_MAP = @shlib_map_file@
 angus> + SHLIB_OBJS = @shlib_objs@
 angus> + SHLIB_DIR = @multilib_dir@
 angus> + SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
 angus> +-SHLIB_LC = -lc
 angus> ++SHLIB_LC = @libgcc_libm@ -lc
 angus> + 
 angus> + SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
 angus> + 	-Wl,--soname=$(SHLIB_SONAME) \
 angus> +diff -rdup gcc-4.4.0.old/libgcc/configure gcc-4.4.0/libgcc/configure
 angus> +--- gcc-4.4.0.old/libgcc/configure	2008-07-17 10:40:53.000000000 +0200
 angus> ++++ gcc-4.4.0/libgcc/configure	2008-10-07 19:40:48.000000000 +0200
 angus> +@@ -272,7 +272,7 @@ PACKAGE_STRING='GNU C Runtime Library 1.
 angus> + PACKAGE_BUGREPORT=''
 angus> + 
 angus> + ac_unique_file="static-object.mk"
 angus> +-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'
 angus> ++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'
 angus> + ac_subst_files=''
 angus> + ac_pwd=`pwd`
 angus> + 
 angus> +@@ -3522,6 +3522,39 @@ if test "$enable_tls $gcc_cv_have_cc_tls
 angus> + fi
 angus> + 
 angus> + 
 angus> ++# On powerpc libgcc_s references copysignl which is a libm function but
 angus> ++# glibc apparently also provides it via libc as opposed to uClibc where
 angus> ++# it lives in libm.
 angus> ++echo "$as_me:$LINENO: checking for library containing copysignl" >&5
 angus> ++echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6
 angus> ++if test "${libgcc_cv_copysignl_lib+set}" = set; then
 angus> ++  echo $ECHO_N "(cached) $ECHO_C" >&6
 angus> ++else
 angus> ++
 angus> ++    echo '#include <features.h>' > conftest.c
 angus> ++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
 angus> ++    libgcc_cv_copysignl_lib="-lc"
 angus> ++    if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5'
 angus> ++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
 angus> ++  (eval $ac_try) 2>&5
 angus> ++  ac_status=$?
 angus> ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
 angus> ++  (exit $ac_status); }; }
 angus> ++    then
 angus> ++	libgcc_cv_copysignl_lib="-lm"
 angus> ++    fi
 angus> ++    rm -f conftest.*
 angus> ++
 angus> ++fi
 angus> ++echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5
 angus> ++echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6
 angus> ++
 angus> ++case /${libgcc_cv_copysignl_lib}/ in
 angus> ++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
 angus> ++  *) LIBGCC_LIBM= ;;
 angus> ++esac
 angus> ++
 angus> ++
 angus> + # Conditionalize the makefile for this target machine.
 angus> + tmake_file_=
 angus> + for f in ${tmake_file}
 angus> +@@ -4242,6 +4275,7 @@ s, at enable_decimal_float@,$enable_decimal
 angus> + s, at fixed_point@,$fixed_point,;t t
 angus> + s, at vis_hide@,$vis_hide,;t t
 angus> + s, at set_have_cc_tls@,$set_have_cc_tls,;t t
 angus> ++s, at LIBGCC_LIBM@,$LIBGCC_LIBM,;t t
 angus> + s, at tmake_file@,$tmake_file,;t t
 angus> + s, at extra_parts@,$extra_parts,;t t
 angus> + s, at asm_hidden_op@,$asm_hidden_op,;t t
 angus> +diff -rdup gcc-4.4.0.old/libgcc/configure.ac gcc-4.4.0/libgcc/configure.ac
 angus> +--- gcc-4.4.0.old/libgcc/configure.ac	2008-07-17 10:40:53.000000000 +0200
 angus> ++++ gcc-4.4.0/libgcc/configure.ac	2008-10-07 19:34:48.000000000 +0200
 angus> +@@ -203,6 +203,27 @@ if test "$enable_tls $gcc_cv_have_cc_tls
 angus> + fi
 angus> + AC_SUBST(set_have_cc_tls)
 angus> + 
 angus> ++# On powerpc libgcc_s references copysignl which is a libm function but
 angus> ++# glibc apparently also provides it via libc as opposed to uClibc where
 angus> ++# it lives in libm.
 angus> ++AC_CACHE_CHECK([for library containing copysignl],
 angus> ++  libgcc_cv_copysignl_lib, [
 angus> ++    echo '#include <features.h>' > conftest.c
 angus> ++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
 angus> ++    libgcc_cv_copysignl_lib="-lc"
 angus> ++    if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD)
 angus> ++    then
 angus> ++	libgcc_cv_copysignl_lib="-lm"
 angus> ++    fi
 angus> ++    rm -f conftest.*
 angus> ++  ])
 angus> ++
 angus> ++case /${libgcc_cv_copysignl_lib}/ in
 angus> ++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
 angus> ++  *) LIBGCC_LIBM= ;;
 angus> ++esac
 angus> ++AC_SUBST(LIBGCC_LIBM)
 angus> ++
 angus> + # Conditionalize the makefile for this target machine.
 angus> + tmake_file_=
 angus> + for f in ${tmake_file}
 angus> +diff -rdup gcc-4.4.0.old/libgcc/Makefile.in gcc-4.4.0/libgcc/Makefile.in
 angus> +--- gcc-4.4.0.old/libgcc/Makefile.in	2008-07-17 10:40:53.000000000 +0200
 angus> ++++ gcc-4.4.0/libgcc/Makefile.in	2008-10-07 19:28:13.000000000 +0200
 angus> +@@ -40,6 +40,7 @@ enable_shared = @enable_shared@
 angus> + decimal_float = @decimal_float@
 angus> + enable_decimal_float = @enable_decimal_float@
 angus> + fixed_point = @fixed_point@
 angus> ++LIBGCC_LIBM = @LIBGCC_LIBM@
 angus> + 
 angus> + host_noncanonical = @host_noncanonical@
 angus> + 
 angus> +@@ -786,9 +787,10 @@ libgcc_s$(SHLIB_EXT): $(libgcc-s-objects
 angus> + 		@multilib_dir@,$(MULTIDIR),$(subst \
 angus> + 		@shlib_objs@,$(objects),$(subst \
 angus> + 		@shlib_base_name@,libgcc_s,$(subst \
 angus> ++		@libgcc_libm@,$(LIBGCC_LIBM),$(subst \
 angus> + 		@shlib_map_file@,$(mapfile),$(subst \
 angus> + 		@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
 angus> +-		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
 angus> ++		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))))
 angus> + 
 angus> + libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
 angus> + 	# @multilib_flags@ is still needed because this may use
 angus> +
 angus> diff --git a/toolchain/gcc/gcc-uclibc-4.x.mk b/toolchain/gcc/gcc-uclibc-4.x.mk
 angus> index 4fe3fa5..6b27d63 100644
 angus> --- a/toolchain/gcc/gcc-uclibc-4.x.mk
 angus> +++ b/toolchain/gcc/gcc-uclibc-4.x.mk
 angus> @@ -185,6 +185,11 @@ ifeq ("$(strip $(ARCH))","armeb")
 angus>  	toolchain/patch-kernel.sh $(GCC_DIR) toolchain/gcc/$(GCC_VERSION) arm-softfloat.patch.conditional
 angus>  endif
 angus>  endif
 angus> +ifeq ($(BR2_GCC_SHARED_LIBGCC),y)
 angus> +ifeq ("$(strip $(ARCH))","powerpc")
 angus> +	toolchain/patch-kernel.sh $(GCC_DIR) toolchain/gcc/$(GCC_VERSION) powerpc-link-with-math-lib.patch.conditional
 angus> +endif
 angus> +endif
 angus>  	touch $@
 
 angus>  #############################################################
 angus> -- 
 angus> 1.5.6

-- 
Bye, Peter Korsgaard

  reply	other threads:[~2009-05-05  7:29 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-04 23:42 [Buildroot] [PATCH] gcc-4.3.3: add a patch to link with the math lib to get copysignal (updated) angus salkeld
2009-05-05  7:29 ` Peter Korsgaard [this message]
2009-05-05 10:52 angus salkeld

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87my9sgg8j.fsf@macbook.be.48ers.dk \
    --to=jacmet@uclibc.org \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.