On 08/01/15 20:28, Andreas Tobler wrote:
> On 08.01.15 17:22, Richard Earnshaw wrote:
>> On 27/11/14 20:56, Andreas Tobler wrote:
>>> Hi all,
>>>
>>> this is the second attempt.
>>>
>>> I reworked the issues Richard mentioned in the previous review.
>>> I also found one issue which will break build/bootstrap if I pass
>>> --enable-gnu-indirect-function, also fixed.
>>>
>>> One thing which came up is the way we generate code for the
>>> armv6*-*-freebsd* triplet versus the arm-*-freebsd* triplet.
>>>
>>> I think the thing which confuses is the fact that we have only two fixed
>>> triplets where we build a complete OS with. Means the whole OS is built
>>> with the same optimization, not only the kernel or one binary.
>>>
>>> For the armv6* we want to benefit from the cpu's functionality by
>>> default. We build all __ARM_ARCH >= 6 with TARGET_CPU_arm1176jzs,
>>> on the other hand all __ARM_ARCH <=5 will be built with TARGET_CPU_arm9.
>>>
>>> Now who becomes arm-*-freebsd* and who becomes armv6*-*-freebsd*?
>>>
>>> As tried above, we only know two triplets, so __ARM_ARCH >= 6 becomes
>>> armv6*-*-freebsd* and __ARM_ARCH <=5 becomes arm-*-freebsd*.
>>>
>>> armv8 is not yet in the portfolio and it will become something
>>> different, either arm64 or aarch64, I do not know.
>>>
>>> I'd like to keep this since our system compilers, clang and gcc-4.2.1
>>> behave the same.
>>> If we have to change here, we would confuse people quite a lot.
>>>
>>> The whole thing is FreeBSD specific and does not touch others.
>>>
>>> As usual, bootstrapped, cross compiled, tested.
>>>
>>> Ok for trunk?
>>>
>>> TIA,
>>> Andreas
>>>
>>> toplevel:
>>>
>>>     * configure.ac: Don't add ${libgcj} for arm*-*-freebsd*.
>>>     * configure: Regenerate.
>>> gcc:
>>>     * config.gcc (arm*-*-freebsd*): New configuration.
>>>     * config/arm/freebsd.h: New file.
>>>     * config.host: Add extra components for arm*-*-freebsd*.
>>>     * config/arm/arm.h: Introduce MAX_SYNC_LIBFUNC_SIZE.
>>>     * config/arm/arm.c (arm_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE.
>>>
>>> libgcc:
>>>
>>>     * config.host (arm*-*-freebsd*): Add new configuration for
>>>     arm*-*-freebsd*.
>>>     * config/arm/freebsd-atomic.c: New file.
>>>     * config/arm/t-freebsd: Likewise.
>>>     * config/arm/unwind-arm.h: Add __FreeBSD__ to the list of
>>>     'PC-relative indirect' OS's.
>>>
>>> libatomic:
>>>
>>>     * configure.tgt: Exclude arm*-*-freebsd* from try_ifunc.
>>>
>>> libstdc++-v3:
>>>
>>>     * configure.host: Add arm*-*-freebsd* port_specific_symbol_files.
>>>
>>>
>>
> 
> 
>> Sorry for the delay in responding, I've been OoO quite a bit over the
>> last month or so and not had much time for patch reviewing.
> 
> Thank you for the review. Also being very busy, I know what you're 
> talking about.
> 
>> This is OK to go in.  Most of the patch is now in OS specific files and
>> thus not really relevant to the CPU maintenance.
>>
>> One item I do think you may need to think about is the definition of
>> SUBTARGET_EXTRA_LINK_SPEC.  This picks the linker emulation setting.
>> But it's a build-time choice and seems to ignore a run-time -mbig-endian
>> or -mlittle-endian choice on the command line.  Is this selection even
>> necessary?  I don't remember ever having to do it on other OS ports -
>> the linker just picks the correct emulation based on the first object
>> file in the link list.
> 
> I don't think this is necessary. Certainly not yet. Might become a 
> future issue.
> 
> I also got your second mail.
> 
> If you're ok with, I'll commit the first hunk and send the undwind 
> update as separate patch again for review?
> 

Yes, that's fine.

R.

> Thanks,
> Andreas
> 
> 
> 


Reply via email to