This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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