https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32415
bruno at clisp dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bruno at clisp dot org --- Comment #14 from bruno at clisp dot org --- I'm seeing this also, with gcc 4.9.0. Configured on x86_64 Linux with ../gcc-4.9.0/configure --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu --prefix=/arch/x86_64-linux-gnu/gnu-inst-gcc/4.9.0 --enable-shared --enable-version-specific-runtime-libs --enable-nls --enable-threads=posix --enable-__cxa_atexit --with-as=/arch/x86_64-linux-gnu/gnu/bin/as --with-gmp=/arch/x86_64-linux-gnu/gnu-inst-gcc/4.9.0 --with-mpfr=/arch/x86_64-linux-gnu/gnu-inst-gcc/4.9.0 --with-mpc=/arch/x86_64-linux-gnu/gnu-inst-gcc/4.9.0 --with-libelf=/arch/x86_64-linux-gnu/gnu-inst-gcc/4.9.0 --with-isl=/arch/x86_64-linux-gnu/gnu-inst-gcc/4.9.0 --with-cloog=/arch/x86_64-linux-gnu/gnu-inst-gcc/4.9.0 --with-ecj-jar=/downloads/sourceware.org-ecj/ecj-latest.jar The build with --enable-version-specific-runtime-libs fails to find libgcc_s when linking programs. The build without this option works fine. Analyzing the difference: * Location of installed libraries other than libgcc_s: Most 32-bit libraries get installed in - PREFIX/lib32 for the working build, - PREFIX/lib/gcc/x86_64-pc-linux-gnu/4.9.0/32 for the build with --enable-version-specific-runtime-libs. Most 64-bit libraries get installed in - PREFIX/lib64 for the working build, - PREFIX/lib/gcc/x86_64-pc-linux-gnu/4.9.0 for the build with --enable-version-specific-runtime-libs. * Location of installed libgcc_s (.so symlink and .so.1): 32-bit libgcc_s gets installed in - PREFIX/lib32 for the working build, - PREFIX/lib/gcc/x86_64-pc-linux-gnu/lib32 for the build with --enable-version-specific-runtime-libs. 64-bit libgcc_s gets installed in - PREFIX/lib64 for the working build, - PREFIX/lib/gcc/x86_64-pc-linux-gnu/lib64 for the build with --enable-version-specific-runtime-libs. * The library path (set of -L options) that collect2 passes to ld, however, is the same in both cases (without and with --enable-version-specific-runtime-libs). Namely: When creating 32-bit binaries: PREFIX/lib/gcc/x86_64-pc-linux-gnu/4.9.0/32 PREFIX/lib/gcc/x86_64-pc-linux-gnu/4.9.0/../../../../lib32 /lib/i386-linux-gnu /lib/../lib32 /usr/lib/i386-linux-gnu /usr/lib/../lib32 PREFIX/lib/gcc/x86_64-pc-linux-gnu/4.9.0 PREFIX/lib/gcc PREFIX/lib/gcc/x86_64-pc-linux-gnu/4.9.0/../../.. /lib/i386-linux-gnu /usr/lib/i386-linux-gnu When creating 64-bit binaries: PREFIX/lib/gcc/x86_64-pc-linux-gnu/4.9.0 PREFIX/lib/gcc PREFIX/lib/gcc/x86_64-pc-linux-gnu/4.9.0/../../../../lib64 /lib/x86_64-linux-gnu /lib/../lib64 /usr/lib/x86_64-linux-gnu PREFIX/lib/gcc/x86_64-pc-linux-gnu/4.9.0/../../.. This library path contains the location of all installed libraries except libgcc_s. Conclusion: So it looks really like a bug in the installation rules for libgcc_s. - The 32-bit libgcc_s ought to be installed in PREFIX/lib/gcc/x86_64-pc-linux-gnu/4.9.0/32, not PREFIX/lib/gcc/x86_64-pc-linux-gnu/lib32. - The 64-bit libgcc_s ought to be installed in PREFIX/lib/gcc/x86_64-pc-linux-gnu/4.9.0, not PREFIX/lib/gcc/x86_64-pc-linux-gnu/lib64.