This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] preliminary patch to move decimal float runtime to new libs


Hello Janis,

do we need a separate shared library for the DFP functions? Since all these
function are already part of libgcc.a why shouldn't we simply put them into
libgcc_s.so?

Bye,

-Andreas-

> [RFC] preliminary patch to move decimal float runtime to new libs
>
> 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
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]