the 32 bit libstdc++.so.5.0.7 does not contain version information as described in http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html and defined in libstdc++-v3/config/linker-map.gnu 32 bit libraries: [code] gms2 ~ # readelf -s /usr/lib32/libstdc++.so.5.0.7 | grep S_first 1190: 000bab40 256 OBJECT GLOBAL DEFAULT 24 _ZSt12_S_first_one gms2 ~ # readelf -s /usr/lib/gcc-lib/x86_64-pc-linux-gnu/3.3.6/32/libstdc++.so.5.0.7 | grep S_first 1202: 000b5b60 256 OBJECT GLOBAL DEFAULT 24 _ZSt12_S_first_one [/code] 64 bit libraries are ok: [code] gms2 ~ # readelf -s /usr/lib/gcc-lib/x86_64-pc-linux-gnu/3.3.6/libstdc++.so.5.0.7 | grep S_first 2398: 00000000002c0420 256 OBJECT GLOBAL DEFAULT 25 _ZSt12_S_first_one@@GLIBCPP_3.2 gms2 ~ # readelf -s /usr/lib64/libstdc++.so.5.0.7 | grep S_first 2396: 00000000002c83e0 256 OBJECT GLOBAL DEFAULT 25 _ZSt12_S_first_one@@GLIBCPP_3.2 [/code] 32 bit library on debian/etch: [code] gms3 ~ # readelf /usr/lib/libstdc++.so.5.0.7 | grep S_first 2729: 000b1ec0 256 OBJECT GLOBAL DEFAULT 24 _ZSt12_S_first_one@@GLIBCPP_3.2 [/code] there is a similar bug report against icc and ifc: http://bugs.gentoo.org/show_bug.cgi?id=259403 dev-lang/icc-10.X and dev-lang/ifc-10.X problems with libstdc++.so.5 after sys-libs/libstdc++-v3-3.3.6 recompile Reproducible: Always Steps to Reproduce: emerge -1 libstdc++-v3 readelf -s /usr/lib32/libstdc++.so.5.0.7 Actual Results: you are not able to link against older third party libraries: [code] gms2 ~ # echo "int main(){}" >x.cpp gms2 ~ # g++-3.3 -o x x.cpp -m32 /opt/IBM/db2/V9.5/lib32/libdb2.so /opt/IBM/db2/V9.5/lib32/libdb2.so: undefined reference to `__cxa_vec_ctor@CXXABI_1.2' /opt/IBM/db2/V9.5/lib32/libdb2.so: undefined reference to `__gxx_personality_v0@CXXABI_1.2' /opt/IBM/db2/V9.5/lib32/libdb2.so: undefined reference to `vtable for __cxxabiv1::__vmi_class_type_info@GLIBCPP_3.2' /opt/IBM/db2/V9.5/lib32/libdb2.so: undefined reference to `operator delete[](void*)@GLIBCPP_3.2' /opt/IBM/db2/V9.5/lib32/libdb2.so: undefined reference to `operator delete(void*)@GLIBCPP_3.2' /opt/IBM/db2/V9.5/lib32/libdb2osse.so.1: undefined reference to `__cxa_begin_catch@CXXABI_1.2' /opt/IBM/db2/V9.5/lib32/libdb2.so: undefined reference to `vtable for __cxxabiv1::__si_class_type_info@GLIBCPP_3.2' /opt/IBM/db2/V9.5/lib32/libdb2.so: undefined reference to `__cxa_vec_dtor@CXXABI_1.2' /opt/IBM/db2/V9.5/lib32/libdb2.so: undefined reference to `operator new[](unsigned)@GLIBCPP_3.2' /opt/IBM/db2/V9.5/lib32/libdb2.so: undefined reference to `__cxa_pure_virtual@CXXABI_1.2' /opt/IBM/db2/V9.5/lib32/libdb2.so: undefined reference to `vtable for __cxxabiv1::__class_type_info@GLIBCPP_3.2' /opt/IBM/db2/V9.5/lib32/libdb2.so: undefined reference to `operator new(unsigned)@GLIBCPP_3.2' /opt/IBM/db2/V9.5/lib32/libdb2.so: undefined reference to `__cxa_vec_delete2@CXXABI_1.2' /opt/IBM/db2/V9.5/lib32/libdb2osse.so.1: undefined reference to `__cxa_end_catch@CXXABI_1.2' /opt/IBM/db2/V9.5/lib32/libdb2osse.so.1: undefined reference to `std::unexpected()@GLIBCPP_3.2' collect2: ld returned 1 exit status [/code] Expected Results: linking against this library should work no problem when using the libstdc++.so.5.0.7 provided by debian/etch: [code] gms2 ~ # g++-3.3 -o x x.cpp -m32 /opt/IBM/db2/V9.5/lib32/libdb2.so ./libstdc++.so.5.0.7.debian_etch gms2 ~ # [/code] [code] gms2 ~ # ldd /opt/IBM/db2/V9.5/lib32/libdb2.so /opt/IBM/db2/V9.5/lib32/libdb2.so: /usr/lib32/libstdc++.so.5: no version information available (required by /opt/IBM/db2/V9.5/lib32/libdb2.so) /opt/IBM/db2/V9.5/lib32/libdb2.so: /usr/lib32/libstdc++.so.5: no version information available (required by /opt/IBM/db2/V9.5/lib32/libdb2.so) /opt/IBM/db2/V9.5/lib32/libdb2.so: /usr/lib32/libstdc++.so.5: no version information available (required by /opt/IBM/db2/V9.5/lib32/libdb2dascmn.so.1) /opt/IBM/db2/V9.5/lib32/libdb2.so: /usr/lib32/libstdc++.so.5: no version information available (required by /opt/IBM/db2/V9.5/lib32/libdb2dascmn.so.1) /opt/IBM/db2/V9.5/lib32/libdb2.so: /usr/lib32/libstdc++.so.5: no version information available (required by /opt/IBM/db2/V9.5/lib32/libdb2g11n.so.1) /opt/IBM/db2/V9.5/lib32/libdb2.so: /usr/lib32/libstdc++.so.5: no version information available (required by /opt/IBM/db2/V9.5/lib32/libdb2genreg.so.1) /opt/IBM/db2/V9.5/lib32/libdb2.so: /usr/lib32/libstdc++.so.5: no version information available (required by /opt/IBM/db2/V9.5/lib32/libdb2genreg.so.1) /opt/IBM/db2/V9.5/lib32/libdb2.so: /usr/lib32/libstdc++.so.5: no version information available (required by /opt/IBM/db2/V9.5/lib32/libdb2install.so.1) /opt/IBM/db2/V9.5/lib32/libdb2.so: /usr/lib32/libstdc++.so.5: no version information available (required by /opt/IBM/db2/V9.5/lib32/libdb2locale.so.1) /opt/IBM/db2/V9.5/lib32/libdb2.so: /usr/lib32/libstdc++.so.5: no version information available (required by /opt/IBM/db2/V9.5/lib32/libdb2osse.so.1) /opt/IBM/db2/V9.5/lib32/libdb2.so: /usr/lib32/libstdc++.so.5: no version information available (required by /opt/IBM/db2/V9.5/lib32/libdb2osse.so.1) /opt/IBM/db2/V9.5/lib32/libdb2.so: /usr/lib32/libstdc++.so.5: no version information available (required by /opt/IBM/db2/V9.5/lib32/libdb2osse_db2.so.1) /opt/IBM/db2/V9.5/lib32/libdb2.so: /usr/lib32/libstdc++.so.5: no version information available (required by /opt/IBM/db2/V9.5/lib32/libdb2trcapi.so.1) linux-gate.so.1 => (0xf7798000) libcrypt.so.1 => /lib32/libcrypt.so.1 (0xf5d32000) libdl.so.2 => /lib32/libdl.so.2 (0xf5d2d000) libpthread.so.0 => /lib32/libpthread.so.0 (0xf5d14000) libm.so.6 => /lib32/libm.so.6 (0xf5cee000) libdb2dascmn.so.1 => /opt/IBM/db2/V9.5/lib32/libdb2dascmn.so.1 (0xf5cd1000) libdb2g11n.so.1 => /opt/IBM/db2/V9.5/lib32/libdb2g11n.so.1 (0xf5671000) libdb2genreg.so.1 => /opt/IBM/db2/V9.5/lib32/libdb2genreg.so.1 (0xf563d000) libdb2install.so.1 => /opt/IBM/db2/V9.5/lib32/libdb2install.so.1 (0xf5637000) libdb2locale.so.1 => /opt/IBM/db2/V9.5/lib32/libdb2locale.so.1 (0xf5625000) libdb2osse.so.1 => /opt/IBM/db2/V9.5/lib32/libdb2osse.so.1 (0xf5368000) libdb2osse_db2.so.1 => /opt/IBM/db2/V9.5/lib32/libdb2osse_db2.so.1 (0xf5339000) libdb2trcapi.so.1 => /opt/IBM/db2/V9.5/lib32/libdb2trcapi.so.1 (0xf532f000) libstdc++.so.5 => /usr/lib32/libstdc++.so.5 (0xf526c000) libgcc_s.so.1 => /lib32/libgcc_s.so.1 (0xf525e000) libc.so.6 => /lib32/libc.so.6 (0xf5116000) /lib/ld-linux.so.2 (0xf7799000) librt.so.1 => /lib32/librt.so.1 (0xf510c000) [/code] build.log: option "-Wl,--version-script=libstdc++-symbol.ver" is missing, when linking the 32 bit library: [code] ... /bin/sh ../libtool --tag CXX --mode=link /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/xgcc -shared-libgcc -B/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/ -nostdinc++ -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/x86_64-pc-linux-gnu/32/libstdc++-v3/src -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/x86_64-pc-linux-gnu/32/libstdc++-v3/src/.libs -B/usr/x86_64-pc-linux-gnu/bin/ -B/usr/x86_64-pc-linux-gnu/lib/ -isystem /usr/x86_64-pc-linux-gnu/include -m32 -Wl,-O1 -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -m32 -o libstdc++.la -rpath /usr/lib64/../lib32 -version-info 5:7:0 -lm bitset.lo codecvt.lo complex_io.lo concept-inst.lo ctype.lo ext-inst.lo fstream.lo fstream-inst.lo functexcept.lo globals.lo io-inst.lo ios.lo istream-inst.lo limits.lo locale.lo locale-inst.lo localename.lo misc-inst.lo ostream-inst.lo sstream-inst.lo stdexcept.lo stl-inst.lo streambuf-inst.lo string-inst.lo strstream.lo valarray-inst.lo vterminate.lo wstring-inst.lo codecvt_members.lo collate_members.lo ctype_members.lo messages_members.lo monetary_members.lo numeric_members.lo time_members.lo basic_file.lo c++locale.lo ../libmath/libmath.la ../libsupc++/libsupc++convenience.la -lm /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/xgcc -shared-libgcc -B/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/ -nostdinc++ -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/x86_64-pc-linux-gnu/32/libstdc++-v3/src -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/x86_64-pc-linux-gnu/32/libstdc++-v3/src/.libs -B/usr/x86_64-pc-linux-gnu/bin/ -B/usr/x86_64-pc-linux-gnu/lib/ -isystem /usr/x86_64-pc-linux-gnu/include -m32 -shared -nostdlib /usr/lib64/../lib32/crti.o /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/32/crtbeginS.o .libs/bitset.o .libs/codecvt.o .libs/complex_io.o .libs/concept-inst.o .libs/ctype.o .libs/ext-inst.o .libs/fstream.o .libs/fstream-inst.o .libs/functexcept.o .libs/globals.o .libs/io-inst.o .libs/ios.o .libs/istream-inst.o .libs/limits.o .libs/locale.o .libs/locale-inst.o .libs/localename.o .libs/misc-inst.o .libs/ostream-inst.o .libs/sstream-inst.o .libs/stdexcept.o .libs/stl-inst.o .libs/streambuf-inst.o .libs/string-inst.o .libs/strstream.o .libs/valarray-inst.o .libs/vterminate.o .libs/wstring-inst.o .libs/codecvt_members.o .libs/collate_members.o .libs/ctype_members.o .libs/messages_members.o .libs/monetary_members.o .libs/numeric_members.o .libs/time_members.o .libs/basic_file.o .libs/c++locale.o -Wl,--whole-archive ../libmath/.libs/libmath.a ../libsupc++/.libs/libsupc++convenience.a -Wl,--no-whole-archive -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/x86_64-pc-linux-gnu/32/libstdc++-v3/src -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/x86_64-pc-linux-gnu/32/libstdc++-v3/src/.libs -lm ../libmath/.libs/libmath.a -lm ../libsupc++/.libs/libsupc++convenience.a -lm -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/32 -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc -L/usr/x86_64-pc-linux-gnu/bin -L/usr/x86_64-pc-linux-gnu/lib -L/usr/lib64/../x86_64-pc-linux-gnu/lib -L/usr/lib64/../lib32 -L/usr/lib64 -L/lib/../lib32 -L/usr/lib/../lib32 -lgcc_s_32 -lc -lgcc_s_32 -lm -lgcc_s_32 -lc -lgcc_s_32 /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/32/crtendS.o /usr/lib64/../lib32/crtn.o -Wl,-O1 -Wl,-soname -Wl,libstdc++.so.5 -o .libs/libstdc++.so.5.0.7 ... /bin/sh ../libtool --tag CXX --mode=link /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/xgcc -shared-libgcc -B/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/ -nostdinc++ -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/x86_64-pc-linux-gnu/libstdc++-v3/src -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs -B/usr/x86_64-pc-linux-gnu/bin/ -B/usr/x86_64-pc-linux-gnu/lib/ -isystem /usr/x86_64-pc-linux-gnu/include -Wl,-O1 -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -o libstdc++.la -rpath /usr/lib64/../lib64 -version-info 5:7:0 -Wl,--version-script=libstdc++-symbol.ver -lm bitset.lo codecvt.lo complex_io.lo concept-inst.lo ctype.lo ext-inst.lo fstream.lo fstream-inst.lo functexcept.lo globals.lo io-inst.lo ios.lo istream-inst.lo limits.lo locale.lo locale-inst.lo localename.lo misc-inst.lo ostream-inst.lo sstream-inst.lo stdexcept.lo stl-inst.lo streambuf-inst.lo string-inst.lo strstream.lo valarray-inst.lo vterminate.lo wstring-inst.lo codecvt_members.lo collate_members.lo ctype_members.lo messages_members.lo monetary_members.lo numeric_members.lo time_members.lo basic_file.lo c++locale.lo ../libmath/libmath.la ../libsupc++/libsupc++convenience.la -lm /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/xgcc -shared-libgcc -B/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/ -nostdinc++ -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/x86_64-pc-linux-gnu/libstdc++-v3/src -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs -B/usr/x86_64-pc-linux-gnu/bin/ -B/usr/x86_64-pc-linux-gnu/lib/ -isystem /usr/x86_64-pc-linux-gnu/include -shared -nostdlib /usr/lib64/../lib64/crti.o /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/crtbeginS.o .libs/bitset.o .libs/codecvt.o .libs/complex_io.o .libs/concept-inst.o .libs/ctype.o .libs/ext-inst.o .libs/fstream.o .libs/fstream-inst.o .libs/functexcept.o .libs/globals.o .libs/io-inst.o .libs/ios.o .libs/istream-inst.o .libs/limits.o .libs/locale.o .libs/locale-inst.o .libs/localename.o .libs/misc-inst.o .libs/ostream-inst.o .libs/sstream-inst.o .libs/stdexcept.o .libs/stl-inst.o .libs/streambuf-inst.o .libs/string-inst.o .libs/strstream.o .libs/valarray-inst.o .libs/vterminate.o .libs/wstring-inst.o .libs/codecvt_members.o .libs/collate_members.o .libs/ctype_members.o .libs/messages_members.o .libs/monetary_members.o .libs/numeric_members.o .libs/time_members.o .libs/basic_file.o .libs/c++locale.o -Wl,--whole-archive ../libmath/.libs/libmath.a ../libsupc++/.libs/libsupc++convenience.a -Wl,--no-whole-archive -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/x86_64-pc-linux-gnu/libstdc++-v3/src -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs -lm ../libmath/.libs/libmath.a -lm ../libsupc++/.libs/libsupc++convenience.a -lm -L/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc -L/usr/x86_64-pc-linux-gnu/bin -L/usr/x86_64-pc-linux-gnu/lib -L/usr/lib64/../x86_64-pc-linux-gnu/lib -L/usr/lib64/../lib64 -L/usr/lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -lgcc_s -lc -lgcc_s -lm -lgcc_s -lc -lgcc_s /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/crtendS.o /usr/lib64/../lib64/crtn.o -Wl,-O1 -Wl,--version-script=libstdc++-symbol.ver -Wl,-soname -Wl,libstdc++.so.5 -o .libs/libstdc++.so.5.0.7 ... [/code]
Created attachment 219067 [details] emerge --info
Created attachment 219069 [details] build.log
Created attachment 219075 [details] build.log
further information: the shared libgcc was not available for 32-bit: 32-bit config.log: checking for shared libgcc... no checking versioning on shared library symbols... no 64-bit config.log: checking for shared libgcc... yes checking versioning on shared library symbols... gnu and the symlink 'libgcc_s.so' is indeed missing: gms1 ~ # find /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/ -name "libgcc_s*.*" /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/32/libgcc_s.so.1 /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/libgcc_s.so /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/libgcc_s.so.1 /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/libgcc_s_32.so
btw: can someone tell me, why the 32-bit libgcc_s.so for gcc:3.3 has been renamed to 'libgcc_s_32.so' ? gms2 ~ # equery files sys-devel/gcc:3.3 | grep libgcc_s /usr/lib/debug/usr/lib/gcc-lib/x86_64-pc-linux-gnu/3.3.6/32/libgcc_s.so.1.debug /usr/lib/debug/usr/lib/gcc-lib/x86_64-pc-linux-gnu/3.3.6/libgcc_s.so.1.debug /usr/lib/gcc-lib/x86_64-pc-linux-gnu/3.3.6/32/libgcc_s.so.1 /usr/lib/gcc-lib/x86_64-pc-linux-gnu/3.3.6/32/libgcc_s_32.so /usr/lib/gcc-lib/x86_64-pc-linux-gnu/3.3.6/libgcc_s.so /usr/lib/gcc-lib/x86_64-pc-linux-gnu/3.3.6/libgcc_s.so.1 gms1 ~ # equery files sys-devel/gcc:4.1 | grep libgcc_s /usr/lib/debug/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32/libgcc_s.so.1.debug /usr/lib/debug/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libgcc_s.so.1.debug /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32/libgcc_s.so /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32/libgcc_s.so.1 /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libgcc_s.so /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libgcc_s.so.1
configure wants to have 'libgcc_s.so' ( not 'libgcc_s_32.so' ): configure:23545: checking for shared libgcc configure:23556: /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/xgcc -B/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/ -B/usr/x86_64-pc-linux-gnu/bin/ -B/usr/x86_64-pc-linux-gnu/lib/ -isystem /usr/x86_64-pc-linux-gnu/include -m32 -o conftest -lgcc_s conftest.c -lm 1>&5 /usr/x86_64-pc-linux-gnu/bin/ld: skipping incompatible /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc/libgcc_s.so when searching for -lgcc_s /usr/x86_64-pc-linux-gnu/bin/ld: cannot find -lgcc_s collect2: ld returned 1 exit status configure: failed program was: #line 23549 "configure" #include "confdefs.h" int main() { return 0 ; return 0; }
*** Bug 370271 has been marked as a duplicate of this bug. ***
*** Bug 335733 has been marked as a duplicate of this bug. ***
*** Bug 259403 has been marked as a duplicate of this bug. ***
looks like we need to add this patch to our gcc-3.3.6 package http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/acinclude.m4.diff?cvsroot=gcc&r1=1.293&r2=1.294
fixed in the tree http://sources.gentoo.org/gentoo/src/patchsets/gcc/3.3.6/gentoo/53_all_pr14697-libstdc++-multilib-syms.patch?rev=1.1 $ readelf -s -W -V /usr/lib/gcc/x86_64-pc-linux-gnu/3.3.6/32/libstdc++.so.5 | grep Name:.*3.2 0x001c: Rev: 1 Flags: none Index: 2 Cnt: 1 Name: GLIBCPP_3.2 0x0038: Rev: 1 Flags: none Index: 3 Cnt: 2 Name: GLIBCPP_3.2.1 0x005c: Rev: 1 Flags: none Index: 4 Cnt: 2 Name: GLIBCPP_3.2.2 0x0080: Rev: 1 Flags: none Index: 5 Cnt: 2 Name: GLIBCPP_3.2.3 0x00a4: Rev: 1 Flags: none Index: 6 Cnt: 2 Name: GLIBCPP_3.2.4
Awesome! I can confirm that this appears to have solved the problem. Thanks SpanKY!