[Bug libstdc++/96751] New: overwriting libstdc++ for a default target during building libraries for armv5te/mthumb-interwork

djuki.car.kv at gmail dot com gcc-bugzilla@gcc.gnu.org
Sun Aug 23 10:09:41 GMT 2020


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


More information about the Gcc-bugs mailing list