This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GCC8: Is --with-cpu= allowed for ARM targets?


Hi,

I am seeing a failure to build in crosstool-NG configurations where GCC8 is configured with --with-cpu=... option:

[ALL  ]    libtool: compile: /home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/build/build-cc-gcc-final/./gcc/xgcc -B/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/build/build-cc-gcc-final/./gcc/ -B/home/avn/x-tools/arm-cortex_a15-linux-gnueabihf/arm-cortex_a15-linux-gnueabihf/bin/ -B/home/avn/x-tools/arm-cortex_a15-linux-gnueabihf/arm-cortex_a15-linux-gnueabihf/lib/ -isystem /home/avn/x-tools/arm-cortex_a15-linux-gnueabihf/arm-cortex_a15-linux-gnueabihf/include -isystem /home/avn/x-tools/arm-cortex_a15-linux-gnueabihf/arm-cortex_a15-linux-gnueabihf/sys-include -DHAVE_CONFIG_H -I/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/src/gcc/libatomic/config/arm -I/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/src/gcc/libatomic/config/linux/arm -I/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/src/gcc/libatomic/config/posix -I/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/src/gcc/libatomic -I. -Wall -Werror -pthread -mlittle-endian -mcpu=cortex-a15 -mfpu=neon-vfpv4 -mhard-float -g -Os -MT load_1_1_.lo -MD -MP -MF .deps/load_1_1_.lo.Ppo -DN=1 -DIFUNC_ALT=1 -march=armv7-a+fp -c /home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/src/gcc/libatomic/config/linux/arm/load_n.c -fPIC -DPIC -o .libs/load_1_1_.o [ERROR]    cc1: error: switch -mcpu=cortex-a15 conflicts with -march=armv7-a switch [-Werror]

GCC is configured with:

CC_FOR_BUILD='x86_64-build_pc-linux-gnu-gcc' CFLAGS='-O2 -g -pipe -I/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/buildtools/include ' CFLAGS_FOR_BUILD='-O2 -g -pipe -I/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/buildtools/include ' CXXFLAGS='-O2 -g -pipe -I/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/buildtools/include ' CXXFLAGS_FOR_BUILD='-O2 -g -pipe -I/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/buildtools/include ' LDFLAGS='-L/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/buildtools/lib -lstdc++ -lm' CFLAGS_FOR_TARGET='   -mlittle-endian -mcpu=cortex-a15  -mfpu=neon-vfpv4 -mhard-float ' CXXFLAGS_FOR_TARGET='   -mlittle-endian   -mcpu=cortex-a15 -mfpu=neon-vfpv4 -mhard-float ' LDFLAGS_FOR_TARGET='   -Wl,-EL ' '/bin/bash' '/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/src/gcc/configure' '--build=x86_64-build_pc-linux-gnu' '--host=x86_64-build_pc-linux-gnu' '--target=arm-cortex_a15-linux-gnueabihf' '--prefix=/home/avn/x-tools/arm-cortex_a15-linux-gnueabihf' '--with-sysroot=/home/avn/x-tools/arm-cortex_a15-linux-gnueabihf/arm-cortex_a15-linux-gnueabihf/sysroot' '--enable-languages=c,c++' '--with-cpu=cortex-a15' '--with-fpu=neon-vfpv4' '--with-float=hard' '--with-pkgversion=crosstool-NG 1.23.0-392-gd274ab06-dirty' '--enable-__cxa_atexit' '--disable-libmudflap' '--disable-libgomp' '--disable-libssp' '--disable-libquadmath' '--disable-libquadmath-support' '--disable-libsanitizer' '--disable-libmpx' '--with-gmp=/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/buildtools' '--with-mpfr=/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/buildtools' '--with-mpc=/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/buildtools' '--with-isl=/home/avn/work/ctng/crosstool-ng/.build/arm-cortex_a15-linux-gnueabihf/buildtools' '--enable-lto' '--with-host-libstdcxx=-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' '--enable-threads=posix' '--enable-target-optspace' '--enable-plugin' '--enable-gold' '--disable-nls' '--disable-multilib' '--with-local-prefix=/home/avn/x-tools/arm-cortex_a15-linux-gnueabihf/arm-cortex_a15-linux-gnueabihf/sysroot' '--enable-long-long'

The problem, as far as I understand, is that libatomic unconditionally adds -march=armv7-a for arm-*-linux configurations; here is a fragment of its Makefile.am:

## On a target-specific basis, include alternates to be selected by IFUNC.
if HAVE_IFUNC
...
if ARCH_ARM_LINUX
IFUNC_OPTIONS        = -march=armv7-a+fp -DHAVE_KERNEL64
libatomic_la_LIBADD += $(foreach s,$(SIZES),$(addsuffix _$(s)_1_.lo,$(SIZEOBJS)))
libatomic_la_LIBADD += $(addsuffix _8_2_.lo,$(SIZEOBJS))
endif

The -mcpu=cortex-a15 comes from the CPU selected during configure.

Is --with-cpu still allowed for ARM/Linux targets with GCC8? If it is, what should be the fix for this - only add -march=... if CPU is not selected?

Regards,
Alexey.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]