[PATCH, RFA]: cygming, darwin, freebsd: Build libgcc2 TCmode complex functions

IainS developer@sandoe-acoustics.co.uk
Thu Sep 2 10:38:00 GMT 2010


On 2 Sep 2010, at 11:25, Uros Bizjak wrote:

> 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:

yes.
Iain

>
> 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.



More information about the Gcc-patches mailing list