gcc/libgcc
Joseph Myers 693b297b72 Do not build soft-fp code at all for powerpc64-linux-gnu.
When I added support for using soft-fp in libgcc
<https://gcc.gnu.org/ml/gcc-patches/2006-03/msg00689.html>, libgcc
configuration was still done in the gcc/ directory, meaning that the
variables set in makefile fragments could not depend on the multilib
being built.  Thus, building the soft-fp code for powerpc64-linux-gnu
was disabled in the same way as had been done with fp-bit: the code
was built, but with #ifndef __powerpc64__ wrappers around it so that
the resulting objects were empty.

Now that libgcc configuration is done in the toplevel libgcc
directory, such uses of softfp_wrap_start / softfp_wrap_end are better
replaced by configure-time conditionals that determine whether to use
soft-fp for a given multilib.  This patch does so for
powerpc*-*-linux*.  The same would appear to apply to
powerpc*-*-freebsd* (using rs6000/t-freebsd64), but I have not made
any changes there.  t-ppc64-fp is also used by AIX targets, but they
don't use soft-fp anyway so the changes are of no consequence to them.

The same principle of replacing softfp_wrap_start / softfp_wrap_end
with configure-time conditionals also applies to
softfp_exclude_libgcc2, which was intended for cases where soft-fp is
being used on hard-float multilibs and so it is desirable on those
multilibs for a few functions to come from libgcc2.c rather than
soft-fp (but the soft-fp versions would be more efficient on
soft-float multilibs).  Now we have hardfp.c and t-hardfp, those are
better to use in that case, to minimize the size of the bulk of the
functions that are only present for ABI compatibility and should never
be called by newly compiled code.

I intend followup patches to switch 32-bit hard-float multilibs to use
t-hardfp as far as possible (for all non-libgcc2.c operations for
classic hard float; for all except __unord* for e500v2; for all SFmode
operations except __unordsf2 for e500v1).  After that will come making
the soft-fp operations, in the remaining cases for which they are
built because they are actually needed for code compiled by current
GCC, into compat symbols when building for glibc 2.19 or later, so
that the glibc versions (with exception and rounding mode support) get
used instead (2.19 or later is needed for all the functions to be
exported from glibc as non-compat symbols).  In turn, that is required
before implementing TARGET_ATOMIC_ASSIGN_EXPAND_FENV for soft-float
and e500, as that can only be properly effective when GCC-compiled
code is actually interoperating correctly with the exception and
rounding mode state used by <fenv.h> functions.

Tested with no regressions with cross to powerpc64-linux-gnu (in
addition, verified that stripped libgcc_s.so.1 is identical before and
after the patch).

	* config.host (powerpc*-*-linux*): Only use soft-fp for 32-bit
	configurations.
	* config/rs6000/t-ppc64-fp (softfp_wrap_start, softfp_wrap_end):
	Remove variables.

From-SVN: r216564
2014-10-22 18:29:14 +01:00
..
config Do not build soft-fp code at all for powerpc64-linux-gnu. 2014-10-22 18:29:14 +01:00
soft-fp Update soft-fp from glibc. 2014-10-09 19:21:30 +01:00
ChangeLog Do not build soft-fp code at all for powerpc64-linux-gnu. 2014-10-22 18:29:14 +01:00
Makefile.in Makefile.in: Fix dependence. 2014-10-07 04:02:31 +00:00
config.host Do not build soft-fp code at all for powerpc64-linux-gnu. 2014-10-22 18:29:14 +01:00
config.in Use i386-cpuinfo.c on all i386 targets 2012-05-10 08:51:39 +00:00
configure crtstuff.c (USE_EH_FRAME_REGISTRY): Let USE_EH_FRAME_REGISTRY_ALWAYS override USE_PT_GNU_EH_FRAME. 2014-09-22 00:49:01 +00:00
configure.ac crtstuff.c (USE_EH_FRAME_REGISTRY): Let USE_EH_FRAME_REGISTRY_ALWAYS override USE_PT_GNU_EH_FRAME. 2014-09-22 00:49:01 +00:00
crtstuff.c crtstuff.c (USE_EH_FRAME_REGISTRY): Let USE_EH_FRAME_REGISTRY_ALWAYS override USE_PT_GNU_EH_FRAME. 2014-09-22 00:49:01 +00:00
dfp-bit.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
dfp-bit.h Remove LIBGCC2_LONG_DOUBLE_TYPE_SIZE target macro. 2014-09-23 01:48:46 +01:00
divmod.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
empty.mk
emutls.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
enable-execute-stack-empty.c enable-execute-stack-empty.c (__enable_execute_stack): Add prototype. 2011-06-22 13:20:07 +02:00
enable-execute-stack-mprotect.c config.gcc (*-*-dragonfly*): New target. 2014-05-21 12:08:58 +01:00
fixed-bit.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
fixed-bit.h Remove LIBGCC2_HAS_?F_MODE target macros. 2014-09-12 13:05:18 +01:00
fixed-obj.mk Makefile.in (fixed-funcs,fixed-conv-funcs): filter-out LIB2FUNCS_EXCLUDE before adding them to libgcc-objects, libgcc-s-objects. 2012-08-23 15:41:03 +00:00
floatunsidf.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
floatunsisf.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
floatunsitf.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
floatunsixf.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
fp-bit.c Remove no-longer-needed fp-bit target macros. 2014-09-08 13:22:56 +01:00
fp-bit.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
gbl-ctors.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
gen-fixed.sh fixed-obj.mk: New file to support fine-grain fixed-point functions. 2007-09-17 22:18:13 +00:00
generic-morestack-thread.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
generic-morestack.c Use -fbuilding-libgcc for more target macros used in libgcc. 2014-09-05 13:03:46 +01:00
generic-morestack.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
gstdint.h dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined. 2008-06-11 00:43:09 +01:00
gthr-posix.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
gthr-single.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
gthr.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
libgcc-std.ver.in Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
libgcc2.c Remove LIBGCC2_LONG_DOUBLE_TYPE_SIZE target macro. 2014-09-23 01:48:46 +01:00
libgcc2.h Remove LIBGCC2_LONG_DOUBLE_TYPE_SIZE target macro. 2014-09-23 01:48:46 +01:00
libgcov-driver-system.c libgcov-driver.c (struct gcov_filename_aux): Rename ... 2014-07-27 07:22:47 +00:00
libgcov-driver.c Add overlap functionality to gcov-tool. 2014-10-08 21:51:41 +00:00
libgcov-interface.c Makefile.in (LIBGCOV_INTERFACE): Add _gcov_dump from ... 2014-09-17 20:13:17 +00:00
libgcov-merge.c Makefile.in: Fix dependence. 2014-10-07 04:02:31 +00:00
libgcov-profiler.c Makefile.in: Fix dependence. 2014-10-07 04:02:31 +00:00
libgcov-util.c Add overlap functionality to gcov-tool. 2014-10-08 21:51:41 +00:00
libgcov.h Makefile.in: Fix dependence. 2014-10-07 04:02:31 +00:00
memcmp.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
memcpy.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
memmove.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
memset.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
mkheader.sh Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
mkmap-flat.awk Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
mkmap-symver.awk Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
shared-object.mk shared-object.mk (c_flags-$o): Save c_flags. 2011-06-21 14:26:13 +00:00
siditi-object.mk Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
static-object.mk Makefile.in (vis_hide, [...]): Do not make definitions depend on --enable-shared. 2012-08-22 09:36:23 +01:00
sync.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
udivmod.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
udivmodsi4.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
unwind-arm-common.inc Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
unwind-c.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
unwind-compat.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
unwind-compat.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
unwind-dw2-fde-compat.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
unwind-dw2-fde-dip.c config.gcc (*-*-dragonfly*): New target. 2014-05-21 12:08:58 +01:00
unwind-dw2-fde.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
unwind-dw2-fde.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
unwind-dw2.c Use -fbuilding-libgcc for more target macros used in libgcc. 2014-09-05 13:03:46 +01:00
unwind-dw2.h Use -fbuilding-libgcc for more target macros used in libgcc. 2014-09-05 13:03:46 +01:00
unwind-generic.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
unwind-pe.h Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
unwind-seh.c re PR libgcc/61585 (Subscript-out-of-range in unwind-seh.c?) 2014-06-23 18:20:31 +02:00
unwind-sjlj.c Use -fbuilding-libgcc for more target macros used in libgcc. 2014-09-05 13:03:46 +01:00
unwind.inc Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
vtv_end.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
vtv_end_preinit.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
vtv_start.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00
vtv_start_preinit.c Update copyright years in libgcc/ 2014-01-02 22:25:22 +00:00