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 Thu, Sep 2, 2010 at 11:48 AM, IainS <developer@sandoe-acoustics.co.uk> wrote:
>
> 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
>
>
>

I assume you also included this patch:

Index: config/i386/darwin.h
===================================================================
--- config/i386/darwin.h	(revision 163732)
+++ config/i386/darwin.h	(working copy)
@@ -148,6 +148,12 @@

 #define SHIFT_DOUBLE_OMITS_COUNT 0

+/* Put all *tf routines in libgcc.  */
+#undef LIBGCC2_HAS_TF_MODE
+#define LIBGCC2_HAS_TF_MODE 1
+#define LIBGCC2_TF_CEXT q
+#define TF_SIZE 113
+
 #undef TARGET_ASM_FILE_END
 #define TARGET_ASM_FILE_END darwin_file_end


Uros.


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