[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