https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71212
Bug ID: 71212 Summary: Compilation of gcc (libstdc++) for foreign target platform problem. Product: gcc Version: 6.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: other Assignee: unassigned at gcc dot gnu.org Reporter: abominable-snowman at yandex dot ru Target Milestone: --- gcc: git's tag gcc-6_1_0-release (c441d9e8e0438dcf54274ec7a3539859e94ad201) Compilation of gcc for foreign target platform problem. Host arch is x86_64, target arch is arm (arm32). Configuration is: (cd build-gcc && DESTDIR=${SYSROOT} \ AR_FOR_TARGET=${TARGET_CROSS_PREFIX}-ar \ AS_FOR_TARGET=${TARGET_CROSS_PREFIX}-as \ CC_FOR_TARGET=${TARGET_CROSS_PREFIX}-gcc \ CXX_FOR_TARGET=${TARGET_CROSS_PREFIX}-c++ \ CPP_FOR_TARGET=${TARGET_CROSS_PREFIX}-cpp \ LD_FOR_TARGET=${TARGET_CROSS_PREFIX}-ld \ ../gcc/configure \ --prefix=/usr \ --host=${TARGET_CROSS} \ --target=${TARGET_OS} \ --enable-shared \ ${MULTILIB} \ ${_WITH_FLOAT} \ --disable-multiarch \ --with-arch=${TARGET_ARCH_AUX2} --with-tune=${TARGET_CPU} \ --enable-threads=posix \ --enable-__cxa_atexit \ --enable-c99 \ --enable-long-long \ --enable-clocale=gnu \ --enable-languages=c,c++ \ --disable-libstdcxx-pch \ --without-cloog \ --disable-bootstrap \ --disable-install-libiberty \ --with-system-zlib) Problem is in libstdc++ building, and I suspend that problem come from libtool: make[7]: Entering directory '/export/staging/ptr/continuous/development/build-gcc/arm-unknown-linux-gnueabi/libstdc++-v3/src' /bin/sh ../libtool --tag CXX --mode=compile /export/staging/ptr/continuous/toolchain-arm-continuous-linux-gnueabi/bin/arm-continuous-linux-gnueabi-c++ -I/export/staging/ptr/continuous/development/build-gcc/arm-unknown-linux-gnueabi/libstdc++-v3/include/arm-unknown-linux-gnueabi -I/export/staging/ptr/continuous/development/build-gcc/arm-unknown-linux-gnueabi/libstdc++-v3/include -I/export/staging/ptr/continuous/development/gcc/libstdc++-v3/libsupc++ -I/usr/include -std=gnu++98 -fPIC -DPIC -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=compatibility.lo -g -O2 -D_GNU_SOURCE -c -o compatibility.lo ../../../../gcc/libstdc++-v3/src/c++98/compatibility.cc ... libtool: compile: /export/staging/ptr/continuous/toolchain-arm-continuous-linux-gnueabi/bin/arm-continuous-linux-gnueabi-c++ -I/export/staging/ptr/continuous/development/build-gcc/arm-unknown-linux-gnueabi/libstdc++-v3/include/arm-unknown-linux-gnueabi -I/export/staging/ptr/continuous/development/build-gcc/arm-unknown-linux-gnueabi/libstdc++-v3/include -I/export/staging/ptr/continuous/development/gcc/libstdc++-v3/libsupc++ -I/usr/include -std=gnu++98 -fPIC -DPIC -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=compatibility.lo -g -O2 -D_GNU_SOURCE -c ../../../../gcc/libstdc++-v3/src/c++98/compatibility.cc -fPIC -DPIC -D_GLIBCXX_SHARED -o .libs/compatibility.o ... In file included from /usr/include/math.h:427:0, from /export/staging/ptr/continuous/development/build-gcc/arm-unknown-linux-gnueabi/libstdc++-v3/include/cmath:45, from ../../../../gcc/libstdc++-v3/src/c++98/compatibility.cc:50: /usr/include/bits/mathinline.h: In function ‘double __ceill_wrapper(double)’: /usr/include/bits/mathinline.h:764:1: error: invalid 'asm': invalid operand for code 'w' __inline_mathcodeNP (ceil, __x, \ ^ Makefile:623: recipe for target 'compatibility.lo' failed You see -I/usr/include, that cause problem. Compiler see in host's /usr/include/math.h that has different from target arch. Without it compilation is fine: (cd development/build-gcc/arm-unknown-linux-gnueabi/libstdc++-v3/src && /bin/sh ../libtool --tag CXX --mode=compile /export/staging/ptr/continuous/toolchain-arm-continuous-linux-gnueabi/bin/arm-continuous-linux-gnueabi-c++ -I/export/staging/ptr/continuous/development/build-gcc/arm-unknown-linux-gnueabi/libstdc++-v3/include/arm-unknown-linux-gnueabi -I/export/staging/ptr/continuous/development/build-gcc/arm-unknown-linux-gnueabi/libstdc++-v3/include -I/export/staging/ptr/continuous/development/gcc/libstdc++-v3/libsupc++ -std=gnu++98 -fPIC -DPIC -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=compatibility.lo -g -O2 -D_GNU_SOURCE -c -o compatibility.lo ../../../../gcc/libstdc++-v3/src/c++98/compatibility.cc) libtool: compile: /export/staging/ptr/continuous/toolchain-arm-continuous-linux-gnueabi/bin/arm-continuous-linux-gnueabi-c++ -I/export/staging/ptr/continuous/development/build-gcc/arm-unknown-linux-gnueabi/libstdc++-v3/include/arm-unknown-linux-gnueabi -I/export/staging/ptr/continuous/development/build-gcc/arm-unknown-linux-gnueabi/libstdc++-v3/include -I/export/staging/ptr/continuous/development/gcc/libstdc++-v3/libsupc++ -std=gnu++98 -fPIC -DPIC -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=compatibility.lo -g -O2 -D_GNU_SOURCE -c ../../../../gcc/libstdc++-v3/src/c++98/compatibility.cc -fPIC -DPIC -D_GLIBCXX_SHARED -o .libs/compatibility.o libtool: compile: /export/staging/ptr/continuous/toolchain-arm-continuous-linux-gnueabi/bin/arm-continuous-linux-gnueabi-c++ -I/export/staging/ptr/continuous/development/build-gcc/arm-unknown-linux-gnueabi/libstdc++-v3/include/arm-unknown-linux-gnueabi -I/export/staging/ptr/continuous/development/build-gcc/arm-unknown-linux-gnueabi/libstdc++-v3/include -I/export/staging/ptr/continuous/development/gcc/libstdc++-v3/libsupc++ -std=gnu++98 -fPIC -DPIC -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=compatibility.lo -g -O2 -D_GNU_SOURCE -c ../../../../gcc/libstdc++-v3/src/c++98/compatibility.cc -o compatibility.o >/dev/null 2>&1 But I wonder, from what place libtool extract it and insert into compilation?