Hi, Attached is a patch that modifies BE8_LINK_SPEC to pass -be8 option to the linker by default if the target is big endian, and to not pass -be8 option if -mlittle-endian is used. It also preserves the existing usage whereby -be8 gets passed with the use of -mbig-endian.
Patch: bash-3.00$ svn diff Index: gcc/ChangeLog =================================================================== --- gcc/ChangeLog (revision 189388) +++ gcc/ChangeLog (working copy) @@ -1,3 +1,9 @@ +2012-07-10 Bharathi Seshadri <bsesh...@cisco.com> + Jim Wilson <jimwi...@cisco.com> + + * config/arm/bpabi.h (BE8_LINK_SPEC): Set according to + TARGET_BIG_ENDIAN_DEFAULT. + 2012-07-09 Jason Merrill <ja...@redhat.com> PR c++/53882 Index: gcc/config/arm/bpabi.h =================================================================== --- gcc/config/arm/bpabi.h (revision 189388) +++ gcc/config/arm/bpabi.h (working copy) @@ -55,15 +55,27 @@ #define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*"\ "|march=armv4|mcpu=fa526|mcpu=fa626:--fix-v4bx}" +#if TARGET_BIG_ENDIAN_DEFAULT #define BE8_LINK_SPEC \ - " %{mbig-endian:%{march=armv7-a|mcpu=cortex-a5 \ - |mcpu=cortex-a7 \ - |mcpu=cortex-a8|mcpu=cortex-a9|mcpu=cortex-a15 \ - |mcpu=generic-armv7-a \ - |march=armv7-m|mcpu=cortex-m3 \ - |march=armv7e-m|mcpu=cortex-m4 \ - |march=armv6-m|mcpu=cortex-m0 \ + " %{!mlittle-endian:%{march=armv7-a|mcpu=cortex-a5 \ + |mcpu=cortex-a7 \ + |mcpu=cortex-a8|mcpu=cortex-a9|mcpu=cortex-a15 \ + |mcpu=generic-armv7-a \ + |march=armv7-m|mcpu=cortex-m3 \ + |march=armv7e-m|mcpu=cortex-m4 \ + |march=armv6-m|mcpu=cortex-m0 \ :%{!r:--be8}}}" +#else +#define BE8_LINK_SPEC \ + " %{mbig-endian:%{march=armv7-a|mcpu=cortex-a5 \ + |mcpu=cortex-a7 \ + |mcpu=cortex-a8|mcpu=cortex-a9|mcpu=cortex-a15 \ + |mcpu=generic-armv7-a \ + |march=armv7-m|mcpu=cortex-m3 \ + |march=armv7e-m|mcpu=cortex-m4 \ + |march=armv6-m|mcpu=cortex-m0 \ + :%{!r:--be8}}}" +#endif /* Tell the assembler to build BPABI binaries. */ #undef SUBTARGET_EXTRA_ASM_SPEC Test: # Built arm-eabi and armeb-linux-gnueabi cross-compilers on Linux x86_64 on gcc trunk (as of 07/10/2012) . # Running the armeb-linux-gnueabi compiler with -v option shows that -be8 option is being passed by default; With -mlittle-endian, it can be seen that the option is not passed. bash-3.00$ cat ~/t1.c int main (void) { return 0; } bash-3.00$ armeb-linux-gnueabi-gcc -v ~/t1.c <snip> /auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/libexec/gcc/armeb-linux-gnueabi/4.8.0/collect2 --sysroot=/auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/armeb-linux-gnueabi/sys --eh-frame-hdr --be8 -dynamic-linker /lib/ld-linux.so.3 -X -m armelfb_linux_eabi /auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/armeb-linux-gnueabi/sys/usr/lib/crt1.o /auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/armeb-linux-gnueabi/sys/usr/lib/crti.o /auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/lib/gcc/armeb-linux-gnueabi/4.8.0/crtbegin.o -L/auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/lib/gcc/armeb-linux-gnueabi/4.8.0 -L/auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/lib/gcc/armeb-linux-gnueabi/4.8.0/../../../../../x86_64-linux/armeb-linux-gnueabi/lib -L/auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/armeb-linux-gnueabi/sys/lib -L/auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/armeb-linux-gnueabi/sys/usr/lib /tmp/ccA09qV0.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/lib/gcc/armeb-linux-gnueabi/4.8.0/crtend.o /auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/armeb-linux-gnueabi/sys/usr/lib/crtn.o bash-3.00$ armeb-linux-gnueabi-gcc -v -mlittle-endian ~/t1.c <snip> /auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/libexec/gcc/armeb-linux-gnueabi/4.8.0/collect2 --sysroot=/auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/armeb-linux-gnueabi/sys --eh-frame-hdr -dynamic-linker /lib/ld-linux.so.3 -X -EL -m armelfb_linux_eabi /auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/armeb-linux-gnueabi/sys/usr/lib/crt1.o /auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/armeb-linux-gnueabi/sys/usr/lib/crti.o /auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/lib/gcc/armeb-linux-gnueabi/4.8.0/crtbegin.o -L/auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/lib/gcc/armeb-linux-gnueabi/4.8.0 -L/auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/lib/gcc/armeb-linux-gnueabi/4.8.0/../../../../../x86_64-linux/armeb-linux-gnueabi/lib -L/auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/armeb-linux-gnueabi/sys/lib -L/auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/armeb-linux-gnueabi/sys/usr/lib /tmp/cckylg2b.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/lib/gcc/armeb-linux-gnueabi/4.8.0/crtend.o /auto/compiler-dev/bseshadr/gcc-trunk/build/c4.7.1-p0/x86_64-linux/armeb-linux-gnueabi/sys/usr/lib/crtn.o Bharathi