https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96751
Bug ID: 96751 Summary: overwriting libstdc++ for a default target during building libraries for armv5te/mthumb-interwork Product: gcc Version: 9.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: djuki.car.kv at gmail dot com Target Milestone: --- Created attachment 49103 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49103&action=edit GCC configuration patch to reduce arm targets Dear GCC team, I noticed that during building multilib for armv5te/mthumb-interwork, libstdc++ and libsup++ are generated in a folder for a default target (arm_none_eabi/lib) instead of arm_none_eabi/lib/armv5te/le/interwork. I think just this part of the log file will be sufficient for describing a bug: /bin/sh /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/../mkinstalldirs /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/./pstl for file in /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/algorithm_fwd.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/algorithm_impl.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/execution_defs.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/execution_impl.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/glue_algorithm_defs.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/glue_algorithm_impl.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/glue_execution_defs.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/glue_memory_defs.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/glue_memory_impl.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/glue_numeric_defs.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/glue_numeric_impl.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/memory_impl.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/numeric_fwd.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/numeric_impl.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/parallel_backend.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/parallel_backend_tbb.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/parallel_backend_utils.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/parallel_impl.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/pstl_config.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/unseq_backend_simd.h /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/include/pstl/utils.h; do \ /bin/install -c -m 644 ${file} /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/./pstl; done make[8]: Leaving directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/include' make[7]: Leaving directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/include' Making install in libsupc++ make[7]: Entering directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/libsupc++' make[8]: Entering directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/libsupc++' /bin/mkdir -p '/build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib' /bin/sh ../libtool --mode=install /bin/install -c libsupc++.la '/build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib' libtool: install: /bin/install -c .libs/libsupc++.lai /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib/libsupc++.la libtool: install: /bin/install -c .libs/libsupc++.a /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib/libsupc++.a libtool: install: chmod 644 /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib/libsupc++.a libtool: install: /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/bin/ranlib /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib/libsupc++.a ---------------------------------------------------------------------- Libraries have been installed in: /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /bin/sh /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/../mkinstalldirs /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/bits /bin/install -c -m 644 ../../../../../../../../gcc-9.2.0/libstdc++-v3/libsupc++/atomic_lockfree_defines.h /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/bits/atomic_lockfree_defines.h /bin/install -c -m 644 ../../../../../../../../gcc-9.2.0/libstdc++-v3/libsupc++/cxxabi_forced.h /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/bits/cxxabi_forced.h /bin/install -c -m 644 ../../../../../../../../gcc-9.2.0/libstdc++-v3/libsupc++/exception_defines.h /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/bits/exception_defines.h /bin/install -c -m 644 ../../../../../../../../gcc-9.2.0/libstdc++-v3/libsupc++/exception_ptr.h /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/bits/exception_ptr.h /bin/install -c -m 644 ../../../../../../../../gcc-9.2.0/libstdc++-v3/libsupc++/hash_bytes.h /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/bits/hash_bytes.h /bin/install -c -m 644 ../../../../../../../../gcc-9.2.0/libstdc++-v3/libsupc++/nested_exception.h /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/bits/nested_exception.h /bin/install -c -m 644 ../../../../../../../../gcc-9.2.0/libstdc++-v3/libsupc++/exception.h /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/bits/exception.h /bin/install -c -m 644 ../../../../../../../../gcc-9.2.0/libstdc++-v3/libsupc++/cxxabi_init_exception.h /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/bits/cxxabi_init_exception.h /bin/sh /build/arm-none-eabi_9.2.0/gcc-9.2.0/libstdc++-v3/../mkinstalldirs /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0 /bin/install -c -m 644 ../../../../../../../../gcc-9.2.0/libstdc++-v3/libsupc++/cxxabi.h /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/cxxabi.h /bin/install -c -m 644 ../../../../../../../../gcc-9.2.0/libstdc++-v3/libsupc++/exception /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/exception /bin/install -c -m 644 ../../../../../../../../gcc-9.2.0/libstdc++-v3/libsupc++/initializer_list /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/initializer_list /bin/install -c -m 644 ../../../../../../../../gcc-9.2.0/libstdc++-v3/libsupc++/new /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/new /bin/install -c -m 644 ../../../../../../../../gcc-9.2.0/libstdc++-v3/libsupc++/typeinfo /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/include/c++/9.2.0/typeinfo make[8]: Leaving directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/libsupc++' make[7]: Leaving directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/libsupc++' Making install in src make[7]: Entering directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src' Making install in c++98 make[8]: Entering directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src/c++98' make[9]: Entering directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src/c++98' make[9]: Nothing to be done for 'install-exec-am'. make[9]: Nothing to be done for 'install-data-am'. make[9]: Leaving directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src/c++98' make[8]: Leaving directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src/c++98' Making install in c++11 make[8]: Entering directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src/c++11' make[9]: Entering directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src/c++11' make[9]: Nothing to be done for 'install-exec-am'. make[9]: Nothing to be done for 'install-data-am'. make[9]: Leaving directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src/c++11' make[8]: Leaving directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src/c++11' Making install in c++17 make[8]: Entering directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src/c++17' make[9]: Entering directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src/c++17' make[9]: Nothing to be done for 'install-exec-am'. make[9]: Nothing to be done for 'install-data-am'. make[9]: Leaving directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src/c++17' make[8]: Leaving directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src/c++17' make[8]: Entering directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src' make[9]: Entering directory '/build/arm-none-eabi_9.2.0/arm-none-eabi/gcc/arm-none-eabi/v5te/le/interwork/libstdc++-v3/src' /bin/mkdir -p '/build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib' /bin/sh ../libtool --mode=install /bin/install -c libstdc++.la '/build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib' libtool: install: /bin/install -c .libs/libstdc++.lai /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib/libstdc++.la libtool: install: /bin/install -c .libs/libstdc++.a /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib/libstdc++.a libtool: install: chmod 644 /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib/libstdc++.a libtool: install: /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/bin/ranlib /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib/libstdc++.a ---------------------------------------------------------------------- Libraries have been installed in: /build/arm-none-eabi_9.2.0/cross-gcc/arm-none-eabi/arm-none-eabi/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- It happens only for armv5te. For example armv7 doesn’t have this issue. I have tried on Linux Debian 10 and MinGW 9.2.0 on Windows 10 and in both I have noticed the same issue. If you need a full log, I can provide it to you. The command line which I have used to configure GCC is : $SRCDIR/configure --host=$host --build=$build --prefix=$prefix --target=$target --disable-nls --enable-languages=c,c++ --enable-multilib --enable-interwork --disable-lto --disable-shared --disable-threads --disable-libmudflap --disable-libssp --disable-libgomp --disable-libstdcxx-pch --disable-libffi --without-headers --enable-poison-system-directories --disable-decimal-float --disable-win32-registry --with-newlib --with-gcc --with-gnu-as --with-gnu-ld '--with-host-libstdcxx=-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-sysroot=$prefix --with-gmp=$prefixlocal --with-mpfr=$prefixlocal --with-mpc=$prefixlocal --with-isl=$prefixlocal --with-zstd=$prefixlocal Before this command I did some other configuration of the target, you can find a patch in a attachment. It is just additional configuration in t-arm-elf file to reduce number of the arm targets. I have tried with releases gcc_9.2.0 and gcc_10.1.0. In both of the releases, I noticed this problem. I tried to update the source file, but I couldn’t find it. Please let me know if I can assist any further. With best regards, M.Eng. Filip Bascarevic