[patch, build] Restore bootstrap in building libcc1 on darwin
Iain Sandoe
iain@codesourcery.com
Wed Feb 11 14:38:00 GMT 2015
Hi Jeff,
On 9 Feb 2015, at 14:47, Jeff Law <law@redhat.com> wrote:
> On 02/01/15 09:42, Iain Sandoe wrote:
>>
>> This is a GCC5 bootstrap regression on 32bit Darwin hosts ( I can raise a PR if that is considered necessary).
> Has this been addressed or is it still pending?
I believe it's still awaiting review - I'm travelling this week, so limited access to resources - but will be able to tackle any comments at the weekend.
thanks
Iain
>
>
>>
>> In fact it is not libcc1, but libiberty that is the cause -
>>
>> On 26 Jan 2015, at 14:13, Rainer Orth wrote:
>>
>>> FX <fxcoudert@gmail.com> writes:
>>>
>>>>> The default BOOT_CFLAGS are: -O2 -g -mdynamic-no-pic
>>>>> the libiberty pic build appends: -fno-common (and not even -fPIC) [NB
>>>>> -fPIC _won't_ override -mdynamic-no-pic, so that's not a simple way out]
>>>>> This means that the PIC library is being built with non-pic relocs.
>>>>
>>>> config/mh-darwin says that -mdynamic-no-pic is there because it “speeds
>>>> compiles by 3-5%”. I don’t think we care about speed when the bootstrap
>>>> fails, so can we remove it altogether?
>>>
>>> Darwin/i686 still doesn't bootstrap without this patch, I believe.
>>> Shouldn't it be applied to trunk before GCC 5 ships, rather than leaving
>>> that target broken?
>>
>> The PIC variant of libiberty, has never (since it was added, AFAICT) catered for the possibility that non-PIC and PIC options might conflict (and/or that it might not be possible to override non-PIC options simply by appending PIC ones).
>>
>> This has gone un-noticed until the libcc1 plugin started linking with the pic version of libiberty.
>>
>> Darwin uses -mdynamic-no-pic as a default flag during bootstrap for 32bit targets, since that gives a stated ~ 3-5% improvement in performance.
>>
>> It is not possible to override this non-pic option by appending -fPIC (that simply results in a warning that mdynamic-no-pic takes precedence).
>>
>> I'd rather not pretend that there's no problem and simply penalise performance on m32 darwin by removing the option from the bootflags.
>>
>> So here's a patch that allows a target to declare incompatible non-pic options (in the same way that we have PIC options already declared as distinct).
>>
>> The patch is largely mechanical (each of the targets adjusted to use the NONPIC flag for the relevant case).
>>
>> As an aside, is there a portability reason that we don't make this repeated operation into a make function?
>>
>> bootstapped on x86_64-linux, x86_64-darwin12, i686-darwin10, powerpc-darwin9,
>> cross-compiled x86-64-darwin12 X i686-darwin10 , native X i686-darwin10 (x86_64-darwin12 build).
>>
>> all languages including Ada (note that there's a local patch needed to work-around an Ada bootstrap issue - pr64349)
>>
>> OK for trunk?
>> Iain
>>
>> libiberty:
>> * Makefile.in (NONPICFLAG, NEWCFLAGS, NEWCPPFLAGS): New.
>> (COMPILE.c): Adjust to use new flags. (all non-pic targets):
>> Adjust to use NONPIC flag.
>> * configure.ac (NOPICFLAG): New.
>> * configure: Regenerate.
>>
>
More information about the Gcc-patches
mailing list