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