On Tue, Oct 21, 2014 at 9:06 PM, Joseph S. Myers <jos...@codesourcery.com> wrote: > 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). OK to commit? > > 2014-10-22 Joseph Myers <jos...@codesourcery.com> > > * 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.
Okay. Thanks, David