[RFC] preliminary patch to move decimal float runtime to new libs
Janis Johnson
janis187@us.ibm.com
Fri Aug 15 09:40:00 GMT 2008
I've made progress on moving decimal float runtime support from libgcc.a
to libgcc_dfp.a and building a new shared library, libgcc_dfp.so.1.
The patch works sometimes but still has problems and so is not yet ready
for a full review, but I'd appreciate comments on the general approach.
I'll be out of touch until Tuesday.
The new libraries are installed in the same locations as libgcc.a
(inst_libdir) and libgcc_s.a (inst_slibdir). They are only built for
targets that support decimal float and when that support is enabled.
It doesn't quite work yet, but the the specs will add -lgcc_dfp to
the link line, with --as-needed, when decimal float support is enabled.
2008-08-14 Janis Johnson <janis187@us.ibm.com>
libgcc/
* Makefile.in (libgcc_dfp.a, libgcc_dfp$(SHLIB_EXT),
install_shared-libgcc_dfp, install-libgcc_dfp) New targets.
gcc/
* gcc.c (init_spec): Use dfp libraries if they were built.
* config.gcc: Add t-libgccdfp-elf to tmake_file for targets
that support decimal float; set flag to build and use
runtime decimal float support, to be used in init_spec.
* Makefile.in (libgcc.mvars): Pass along new variables for
shared decimal float library.
* config/t-libgccdfp-elf (SHLIBGCCDFP_SOVERSION, SHLIBGCCDFP_SONAME,
SHLIBGCCDFP_LINK, SHLIBGCCDFP_INSTALL): New file.
* config/t-libgccdfp: New file.
Index: libgcc/Makefile.in
===================================================================
--- libgcc/Makefile.in (revision 139039)
+++ libgcc/Makefile.in (working copy)
@@ -1,6 +1,6 @@
# Makefile.in
-# Copyright (C) 2005, 2006 Free Software Foundation
+# Copyright (C) 2005, 2006, 2008 Free Software Foundation
#
# This file is part of GCC.
#
@@ -122,6 +122,7 @@ clean:
-rm -f *.a
-rm -f libunwind$(SHLIB_EXT)
-rm -f libgcc_s*
+ -rm -f libgcc_dfp*
@$(MULTICLEAN) multi-clean DO=clean
distclean: clean
@$(MULTICLEAN) multi-clean DO=distclean
@@ -195,6 +196,7 @@ DECNUMINC = -I$(srcdir)/../libdecnumber/
endif
else
DECNUMINC =
+SHLIBGCCDFP_LINK =
endif
# Specify the directories to be searched for header files.
@@ -252,6 +254,12 @@ ifeq ($(enable_shared),yes)
install-libunwind = install-libunwind
endif
+ # If the target supports decimal float and it is enabled, build the
+ # shared library with decimal float runtime support.
+ ifneq ($(SHLIBGCCDFP_LINK),)
+ install-shared-libgcc_dfp = install-shared-libgcc_dfp
+ endif
+
# For -fvisibility=hidden. We need both a -fvisibility=hidden on
# the command line, and a #define to prevent libgcc2.h etc from
# overriding that with #pragmas.
@@ -277,6 +285,7 @@ else
iterator = $(srcdir)/empty.mk $(patsubst %,$(srcdir)/static-object.mk,$(iter-items))
vis_hide =
gen-hide-list = echo > \$@
+SHLIBGCCDFP_LINK =
endif
ifneq ($(EXTRA_PARTS),)
@@ -468,6 +477,8 @@ endif
# Build decimal floating point support.
ifeq ($(decimal_float),yes)
+install-libgcc_dfp = install-libgcc_dfp
+
# If $DFP_ENABLE is set, then we want all data type sizes.
ifneq ($(DFP_ENABLE),)
D32PBIT = 1
@@ -475,6 +486,7 @@ D64PBIT = 1
D128PBIT = 1
endif
+
dfp-filenames =
ifneq ($(D32PBIT)$(D64PBIT)$(D128PBIT),)
ifeq ($(enable_decimal_float),bid)
@@ -494,6 +506,7 @@ dfp-filenames += decContext decNumber de
endif
endif
+# Build the static versions of basic decimal float support.
dfp-objects = $(patsubst %,%$(objext),$(dfp-filenames))
ifeq ($(enable_decimal_float),bid)
$(dfp-objects): %$(objext): $(srcdir)/config/libbid/%.c
@@ -501,7 +514,19 @@ else
$(dfp-objects): %$(objext): $(srcdir)/../libdecnumber/%.c
endif
$(gcc_compile) -c $<
-libgcc-objects += $(dfp-objects)
+libgcc-dfp-objects += $(dfp-objects)
+
+ifneq ($(SHLIBGCCDFP_LINK),)
+# Build the shared versions of basic decimal float support.
+dfp-s-objects = $(patsubst %,%_s$(objext),$(dfp-filenames))
+ifeq ($(enable_decimal_float),bid)
+$(dfp-s-objects): %_s$(objext): $(srcdir)/config/libbid/%.c
+else
+$(dfp-s-objects): %_s$(objext): $(srcdir)/../libdecnumber/%.c
+endif
+ $(gcc_s_compile) -c $<
+libgcc-dfp-s-objects += $(dfp-s-objects)
+endif
decbits-filenames =
ifneq ($(enable_decimal_float),bid)
@@ -518,6 +543,7 @@ decbits-filenames += decimal128
endif
endif
+# Build the static version of another set of basic support.
decbits-objects = $(patsubst %,%$(objext),$(decbits-filenames))
ifeq ($(enable_decimal_float),bid)
$(decbits-objects): %$(objext): $(srcdir)/config/libbid/%.c
@@ -525,7 +551,19 @@ else
$(decbits-objects): %$(objext): $(srcdir)/../libdecnumber/$(enable_decimal_float)/%.c
endif
$(gcc_compile) -c $<
-libgcc-objects += $(decbits-objects)
+libgcc-dfp-objects += $(decbits-objects)
+
+ifneq ($(SHLIBGCCDFP_LINK),)
+# Build the shared version of that second set of basic support.
+decbits-s-objects = $(patsubst %,%_s$(objext),$(decbits-filenames))
+ifeq ($(enable_decimal_float),bid)
+$(decbits-s-objects): %_s$(objext): $(srcdir)/config/libbid/%.c
+else
+$(decbits-s-objects): %_s$(objext): $(srcdir)/../libdecnumber/$(enable_decimal_float)/%.c
+endif
+ $(gcc_s_compile) -c $<
+libgcc-dfp-s-objects += $(decbits-s-objects)
+endif
# Next build individual support functions.
ifeq ($(enable_decimal_float),bid)
@@ -542,6 +580,7 @@ D128PBIT_FUNCS:=$(filter-out _plus_td _m
endif
endif
+# Build the static objects for 32-bit functions.
ifneq ($(D32PBIT),)
d32pbit-o = $(patsubst %,%$(objext),$(D32PBIT_FUNCS))
ifeq ($(enable_decimal_float),bid)
@@ -550,10 +589,23 @@ else
$(d32pbit-o): %$(objext): $(gcc_srcdir)/config/dfp-bit.c
endif
$(gcc_compile) -DFINE_GRAINED_LIBRARIES -DL$* -DWIDTH=32 -c $<
-libgcc-objects += $(d32pbit-o)
+libgcc-dfp-objects += $(d32pbit-o)
+
+ifneq ($(SHLIBGCCDFP_LINK),)
+# Build the shared objects for 32-bit functions.
+d32pbit-s-o = $(patsubst %,%_s$(objext),$(D32PBIT_FUNCS))
+ifeq ($(enable_decimal_float),bid)
+$(d32pbit-s-o): %_s$(objext): $(srcdir)/config/libbid/%.c
+else
+$(d32pbit-s-o): %_s$(objext): $(gcc_srcdir)/config/dfp-bit.c
+endif
+ $(gcc_s_compile) -DFINE_GRAINED_LIBRARIES -DL$* -DWIDTH=32 -c $<
+libgcc-dfp-s-objects += $(d32pbit-s-o)
+endif
endif
ifneq ($(D64PBIT),)
+# Build the static objects for 64-bit functions.
d64pbit-o = $(patsubst %,%$(objext),$(D64PBIT_FUNCS))
ifeq ($(enable_decimal_float),bid)
$(d64pbit-o): %$(objext): $(srcdir)/config/libbid/%.c
@@ -561,10 +613,23 @@ else
$(d64pbit-o): %$(objext): $(gcc_srcdir)/config/dfp-bit.c
endif
$(gcc_compile) -DFINE_GRAINED_LIBRARIES -DL$* -DWIDTH=64 -c $<
-libgcc-objects += $(d64pbit-o)
+libgcc-dfp-objects += $(d64pbit-o)
+
+ifneq ($(SHLIBGCCDFP_LINK),)
+# Build the static objects for 64-bit functions.
+d64pbit-s-o = $(patsubst %,%_s$(objext),$(D64PBIT_FUNCS))
+ifeq ($(enable_decimal_float),bid)
+$(d64pbit-s-o): %_s$(objext): $(srcdir)/config/libbid/%.c
+else
+$(d64pbit-s-o): %_s$(objext): $(gcc_srcdir)/config/dfp-bit.c
+endif
+ $(gcc_s_compile) -DFINE_GRAINED_LIBRARIES -DL$* -DWIDTH=64 -c $<
+libgcc-dfp-s-objects += $(d64pbit-s-o)
+endif
endif
ifneq ($(D128PBIT),)
+# Build the static objects for 128-bit functions.
d128pbit-o = $(patsubst %,%$(objext),$(D128PBIT_FUNCS))
ifeq ($(enable_decimal_float),bid)
$(d128pbit-o): %$(objext): $(srcdir)/config/libbid/%.c
@@ -572,7 +637,18 @@ else
$(d128pbit-o): %$(objext): $(gcc_srcdir)/config/dfp-bit.c
endif
$(gcc_compile) -DFINE_GRAINED_LIBRARIES -DL$* -DWIDTH=128 -c $<
-libgcc-objects += $(d128pbit-o)
+libgcc-dfp-objects += $(d128pbit-o)
+ifneq ($(SHLIBGCCDFP_LINK),)
+# Build the shared objects for 128-bit functions.
+d128pbit-s-o = $(patsubst %,%_s$(objext),$(D128PBIT_FUNCS))
+ifeq ($(enable_decimal_float),bid)
+$(d128pbit-s-o): %_s$(objext): $(srcdir)/config/libbid/%.c
+else
+$(d128pbit-s-o): %_s$(objext): $(gcc_srcdir)/config/dfp-bit.c
+endif
+ $(gcc_s_compile) -DFINE_GRAINED_LIBRARIES -DL$* -DWIDTH=128 -c $<
+libgcc-dfp-s-objects += $(d128pbit-s-o)
+endif
endif
endif
@@ -731,8 +807,9 @@ libgcc.a: $(libgcc-objects)
libgcov.a: $(libgcov-objects)
libunwind.a: $(libunwind-objects)
libgcc_eh.a: $(libgcc-eh-objects)
+libgcc_dfp.a: $(libgcc-dfp-objects)
-libgcc.a libgcov.a libunwind.a libgcc_eh.a:
+libgcc.a libgcov.a libunwind.a libgcc_eh.a libgcc_dfp.a:
-rm -f $@
objects="$(objects)"; \
@@ -760,6 +837,14 @@ all: libunwind$(SHLIB_EXT)
endif
endif
+ifeq ($(decimal_float),yes)
+all: libgcc_dfp.a
+ifneq ($(SHLIBGCCDFP_LINK),)
+all: libgcc_dfp$(SHLIB_EXT)
+libgcc_dfp$(SHLIB_EXT): libgcc_s$(SHLIB_EXT)
+endif
+endif
+
ifeq ($(enable_shared),yes)
# Map-file generation.
@@ -802,6 +887,19 @@ libunwind$(SHLIB_EXT): $(libunwind-s-obj
@shlib_base_name@,libunwind,$(subst \
@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIBUNWIND_LINK))))))
+libgcc_dfp$(SHLIB_EXT): $(libgcc-dfp-s-objects) $(extra-parts)
+ # @multilib_flags@ is still needed because this may use
+ # $(GCC_FOR_TARGET) and $(LIBGCC2_CFLAGS) directly.
+ # @multilib_dir@ is not really necessary, but sometimes it has
+ # more uses than just a directory name.
+ $(mkinstalldirs) $(MULTIDIR)
+ $(subst @multilib_flags@,$(CFLAGS) -B./,$(subst \
+ @multilib_dir@,$(MULTIDIR),$(subst \
+ @shlib_objs@,$(objects),$(subst \
+ @shlib_base_name@,libgcc_dfp,$(subst \
+ @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
+ @shlib_slibdir@,$(shlib_slibdir),$(SHLIBGCCDFP_LINK)))))))
+
endif
# Build the standard GCC startfiles and endfiles.
@@ -920,6 +1018,13 @@ install-libunwind:
@shlib_base_name@,libunwind,$(subst \
@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIBUNWIND_INSTALL))))
+install-shared-libgcc_dfp:
+ $(mkinstalldirs) $(DESTDIR)$(inst_slibdir)
+
+ $(subst @multilib_dir@,$(MULTIDIR),$(subst \
+ @shlib_base_name@,libgcc_dfp,$(subst \
+ @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIBGCCDFP_INSTALL))))
+
install-shared:
$(mkinstalldirs) $(DESTDIR)$(inst_libdir)
@@ -931,7 +1036,14 @@ install-shared:
@shlib_base_name@,libgcc_s,$(subst \
@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIB_INSTALL))))
-install-leaf: $(install-shared) $(install-libunwind)
+install-libgcc_dfp:
+ $(mkinstalldirs) $(DESTDIR)$(inst_libdir)
+
+ $(INSTALL_DATA) libgcc_dfp.a $(DESTDIR)$(inst_libdir)/
+ chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_dfp.a
+ $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_dfp.a
+
+install-leaf: $(install-shared) $(install-libunwind) $(install-shared-libgcc_dfp) $(install-libgcc_dfp)
$(mkinstalldirs) $(DESTDIR)$(inst_libdir)
$(INSTALL_DATA) libgcc.a $(DESTDIR)$(inst_libdir)/
@@ -950,7 +1062,7 @@ install-leaf: $(install-shared) $(instal
install: install-leaf
@$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=install
-.PHONY: install install-shared install-libunwind
+.PHONY: install install-shared install-libunwind install-libgcc_dfp install-shared-libgcc_dfp
# Don't export variables to the environment, in order to not confuse
# configure.
Index: gcc/gcc.c
===================================================================
--- gcc/gcc.c (revision 139039)
+++ gcc/gcc.c (working copy)
@@ -1779,12 +1779,18 @@ init_spec (void)
if (in_sep && *p == '-' && strncmp (p, "-lgcc", 5) == 0)
{
init_gcc_specs (&obstack,
- "-lgcc_s"
+#ifdef USE_LIBGCCDFP
+ "-lgcc_dfp"
+#endif
+ " -lgcc_s"
#ifdef USE_LIBUNWIND_EXCEPTIONS
" -lunwind"
#endif
,
- "-lgcc",
+#ifdef USE_LIBGCCDFP
+ "-lgcc_dfp"
+#endif
+ " -lgcc",
"-lgcc_eh"
#ifdef USE_LIBUNWIND_EXCEPTIONS
# ifdef HAVE_LD_STATIC_DYNAMIC
Index: gcc/config.gcc
===================================================================
--- gcc/config.gcc (revision 139039)
+++ gcc/config.gcc (working copy)
@@ -1114,7 +1114,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfree
i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} i386/linux.h knetbsd-gnu.h i386/knetbsd-gnu.h" ;;
i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} i386/linux.h kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
esac
- tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules"
+ tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules t-libgccdfp-elf"
;;
x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h \
@@ -1123,7 +1123,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu
x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;;
x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;;
esac
- tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules"
+ tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules t-libgccdfp-elf"
;;
i[34567]86-*-gnu*)
;;
@@ -1717,7 +1717,7 @@ powerpc64-*-linux*)
tm_file="rs6000/secureplt.h ${tm_file}"
fi
extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
- tmake_file="t-dfprules rs6000/t-fprules ${tmake_file} rs6000/t-ppccomm rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp"
+ tmake_file="t-dfprules t-libgccdfp-elf rs6000/t-fprules ${tmake_file} rs6000/t-ppccomm rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp"
;;
powerpc64-*-gnu*)
tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux64.h rs6000/gnu.h"
@@ -1799,7 +1799,7 @@ powerpc-*-linux*altivec*)
powerpc-*-linux*spe*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxspe.h rs6000/e500.h"
extra_options="${extra_options} rs6000/sysv4.opt"
- tmake_file="t-dfprules rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
+ tmake_file="t-dfprules t-libgccdfp-elf rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
;;
powerpc-*-linux*paired*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/750cl.h"
@@ -1809,7 +1809,7 @@ powerpc-*-linux*paired*)
powerpc-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h"
extra_options="${extra_options} rs6000/sysv4.opt"
- tmake_file="t-dfprules rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
+ tmake_file="t-dfprules t-libgccdfp-elf rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
case ${enable_targets}:${cpu_is_64bit} in
*powerpc64* | all:* | *:yes)
if test x$cpu_is_64bit = xyes; then
@@ -1934,7 +1934,7 @@ rs6000-ibm-aix[6789].* | powerpc-ibm-aix
;;
s390-*-linux*)
tm_file="s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h"
- tmake_file="${tmake_file} t-dfprules s390/t-crtstuff s390/t-linux"
+ tmake_file="${tmake_file} t-dfprules t-libgccdfp-elf s390/t-crtstuff s390/t-linux"
;;
s390x-*-linux*)
tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h"
@@ -1942,7 +1942,7 @@ s390x-*-linux*)
md_file=s390/s390.md
extra_modes=s390/s390-modes.def
out_file=s390/s390.c
- tmake_file="${tmake_file} t-dfprules s390/t-crtstuff s390/t-linux s390/t-linux64"
+ tmake_file="${tmake_file} t-dfprules t-libgccdfp-elf s390/t-crtstuff s390/t-linux s390/t-linux64"
;;
s390x-ibm-tpf*)
tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h s390/tpf.h"
@@ -2554,6 +2554,13 @@ if test x$with_schedule = x; then
esac
fi
+# Flag whether to build and use runtime decimal float support.
+case ${enable_decimal_float} in
+ yes | dpd | bid)
+ tmake_file="${tmake_file} t-libgccdfp"
+ ;;
+esac
+
# Validate and mark as valid any --with options supported
# by this target. In order to use a particular --with option
# you must list it in supported_defaults; validating the value
Index: gcc/Makefile.in
===================================================================
--- gcc/Makefile.in (revision 139039)
+++ gcc/Makefile.in (working copy)
@@ -1671,6 +1671,10 @@ libgcc.mvars: config.status Makefile $(L
echo D64PBIT_FUNCS='$(D64PBIT_FUNCS)' >> tmp-libgcc.mvars
echo D128PBIT='$(D128PBIT)' >> tmp-libgcc.mvars
echo D128PBIT_FUNCS='$(D128PBIT_FUNCS)' >> tmp-libgcc.mvars
+ echo SHLIBGCCDFP_SOVERSION = '$(SHLIBGCCDFP_SOVERSION)' >> tmp-libgcc.mvars
+ echo SHLIBGCCDFP_SONAME = '$(SHLIBGCCDFP_SONAME)' >> tmp-libgcc.mvars
+ echo SHLIBGCCDFP_LINK = '$(SHLIBGCCDFP_LINK)' >> tmp-libgcc.mvars
+ echo SHLIBGCCDFP_INSTALL = '$(SHLIBGCCDFP_INSTALL)' >> tmp-libgcc.mvars
echo GCC_EXTRA_PARTS = '$(GCC_EXTRA_PARTS)' >> tmp-libgcc.mvars
echo SHLIB_LINK = '$(subst $(GCC_FOR_TARGET),$$(GCC_FOR_TARGET),$(SHLIB_LINK))' >> tmp-libgcc.mvars
echo SHLIB_INSTALL = '$(SHLIB_INSTALL)' >> tmp-libgcc.mvars
Index: gcc/config/t-libgccdfp-elf
===================================================================
--- gcc/config/t-libgccdfp-elf (revision 0)
+++ gcc/config/t-libgccdfp-elf (revision 0)
@@ -0,0 +1,27 @@
+# Build libgccdfp for ELF with the GNU linker.
+
+SHLIBGCCDFP_SOVERSION = 1
+SHLIBGCCDFP_SONAME = @shlib_base_name@.so.$(SHLIBGCCDFP_SOVERSION)
+
+SHLIBGCCDFP_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared \
+ -nodefaultlibs -Wl,-h,$(SHLIBGCCDFP_SONAME) \
+ -Wl,-z,text -Wl,-z,defs -o $(SHLIB_DIR)/$(SHLIBGCCDFP_SONAME).tmp \
+ @multilib_flags@ $(SHLIB_OBJS) -lc -L. -lgcc_s && \
+ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
+ if [ -f $(SHLIB_DIR)/$(SHLIBGCCDFP_SONAME) ]; then \
+ mv -f $(SHLIB_DIR)/$(SHLIBGCCDFP_SONAME) \
+ $(SHLIB_DIR)/$(SHLIBGCCDFP_SONAME).backup; \
+ else true; fi && \
+ mv $(SHLIB_DIR)/$(SHLIBGCCDFP_SONAME).tmp \
+ $(SHLIB_DIR)/$(SHLIBGCCDFP_SONAME) && \
+ $(LN_S) $(SHLIBGCCDFP_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
+
+# $(slibdir) double quoted to protect it from expansion while building
+# libgcc.mk. We want this delayed until actual install time.
+SHLIBGCCDFP_INSTALL = \
+ $$(SHELL) $$(srcdir)/mkinstalldirs $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
+ $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIBGCCDFP_SONAME) \
+ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIBGCCDFP_SONAME); \
+ rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
+ $(LN_S) $(SHLIBGCCDFP_SONAME) \
+ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
Index: gcc/config/t-libgccdfp
===================================================================
--- gcc/config/t-libgccdfp (revision 0)
+++ gcc/config/t-libgccdfp (revision 0)
@@ -0,0 +1,2 @@
+# Support a separate library for runtime decimal float support.
+T_CFLAGS += -DUSE_LIBGCCDFP
More information about the Gcc-patches
mailing list