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: [PATCH, RFA]: cygming, darwin, freebsd: Build libgcc2 TCmode complex functions



On 2 Sep 2010, at 06:08, Uros Bizjak wrote:
The testsuite is still running, but so far things look good.  Do you
expect to see any new PASSes?

No, since TCmode tests in gcc.target/i386 are currently limited to linux
targets only. I will enable them for other __float128 capable targets
once Darwin catches up with TCmode libgcc2 support.


well, there are differences in approach;
In the system levels, Darwin uses fat libraries rather than separating m32 and m64 into different directories.


The 'old' symbol exports for a build of gcc to run on Darwin* have to agree with those in the relevant system version of libgcc_s - which are defined by common export lists. For 'new' symbols this is immaterial.

However, some of the relevant symbols are not 'new' - we've been exporting them for years (via the LIB2_SIDITI_CONV_FUNCS mechanism) - so we must accommodate that.

It turns out that the libgcc Makefile does not honor LIB2FUNCS_EXCLUDE for these functions in the case of LIB2_SIDITI_CONV_FUNCS=yes.

I suspect that this an oversight - since it does honor it otherwise.

the patch below bootstrapped on i686-darwin9 (currently reg-testing) and has passed stage1 on i686-darwin8 and x86_64-darwin10

AFAICT the only targets using LIB2_SIDITI_CONV_FUNCS are MIPS and Darwin.

cheers,
Iain

Index: libgcc/Makefile.in
===================================================================
--- libgcc/Makefile.in	(revision 163732)
+++ libgcc/Makefile.in	(working copy)
@@ -384,9 +384,9 @@ ifneq ($(LIB2_SIDITI_CONV_FUNCS),)
 # functions are built with a wordsize of 4; the TImode functions are
 # built with the same labels, but a wordsize of 8.

-sifuncs = $(subst XX,si,$(swfloatfuncs))
-difuncs = $(subst XX,di,$(dwfloatfuncs))
-tifuncs = $(subst XX,ti,$(dwfloatfuncs))
+sifuncs := $(filter-out $(LIB2FUNCS_EXCLUDE),$(subst XX,si,$ (swfloatfuncs)))
+difuncs := $(filter-out $(LIB2FUNCS_EXCLUDE),$(subst XX,di,$ (dwfloatfuncs)))
+tifuncs := $(filter-out $(LIB2FUNCS_EXCLUDE),$(subst XX,ti,$ (dwfloatfuncs)))


 iter-items := $(sifuncs) $(difuncs) $(tifuncs)
 iter-labels := $(sifuncs) $(difuncs) $(difuncs)
Index: gcc/config/i386/t-darwin
===================================================================
--- gcc/config/i386/t-darwin	(revision 163732)
+++ gcc/config/i386/t-darwin	(working copy)
@@ -2,3 +2,4 @@ MULTILIB_OPTIONS = m64
 MULTILIB_DIRNAMES = x86_64
 LIB2_SIDITI_CONV_FUNCS=yes
 LIB2FUNCS_EXTRA = $(srcdir)/config/darwin-64.c
+LIB2FUNCS_EXCLUDE = _fixtfdi _fixunstfdi _floatditf _floatunditf



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