Hello, I've compiled 4.2.0 GCC on OpenBSD 3.9-current. I've configured it with:
/home/karel/svn/gcc/trunk/configure --prefix=/home/karel/usr/local/gcc-trunk-20060331 --enable-shared --enable-threads --enable-languages=c++ --disable-checking --disable-nls the problem is that resulting C++ compiler is not able to build simple hello world like application, since linking fails with: $ c++ hello.cc /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libstdc++.a(locale-misc-inst.o)(.gnu.linkonce.t._ZSt16__convert_from_vIeEiPciPKcT_RKPii+0x65): In function `int std::__convert_from_v<long double>(char*, int, char const*, long double, int* const&, int)': /home/karel/build/obj-gcc-trunk/i386-unknown-openbsd3.9/libstdc++-v3/include/i386-unknown-openbsd3.9/bits/c++locale.h:67: warning: strcpy() is almost always misused, please use strlcpy() /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libstdc++.a(locale-misc-inst.o)(.gnu.linkonce.t._ZSt16__convert_from_vIeEiPciPKcT_RKPii+0x8c):/home/karel/build/obj-gcc-trunk/i386-unknown-openbsd3.9/libstdc++-v3/include/i386-unknown-openbsd3.9/bits/c++locale.h:74: warning: sprintf() is often misused, please use snprintf() /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libstdc++.a(cp-demangle.o)(.text+0x3703): In function `d_demangle': : warning: strcat() is almost always misused, please use strlcat() /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libstdc++.a(locale_init.o)(.text._ZNSt6locale13_S_initializeEv+0x2a): In function `std::locale::_S_initialize()': /home/karel/svn/gcc/trunk/libstdc++-v3/src/locale_init.cc:145: undefined reference to `pthread_once' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libstdc++.a(eh_globals.o)(.text._Z41__static_initialization_and_destruction_0ii+0x4a): In function `__static_initialization_and_destruction_0(int, int)': /home/karel/svn/gcc/trunk/libstdc++-v3/libsupc++/eh_globals.cc:97: undefined reference to `pthread_key_create' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libstdc++.a(eh_globals.o)(.text.__cxa_get_globals_fast+0x71): In function `__cxa_get_globals_fast': /home/karel/svn/gcc/trunk/libstdc++-v3/libsupc++/eh_globals.cc:150: undefined reference to `pthread_getspecific' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libstdc++.a(eh_globals.o)(.text.__cxa_get_globals+0x71): In function `__cxa_get_globals': /home/karel/svn/gcc/trunk/libstdc++-v3/libsupc++/eh_globals.cc:150: undefined reference to `pthread_getspecific' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libstdc++.a(eh_globals.o)(.text.__cxa_get_globals+0xa9): In function `__cxa_get_globals': /home/karel/build/obj-gcc-trunk/i386-unknown-openbsd3.9/libstdc++-v3/include/i386-unknown-openbsd3.9/bits/gthr-default.h:542: undefined reference to `pthread_setspecific' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/libgcc.a(unwind-sjlj.o)(.text+0xcf): In function `fc_key_init_once': /home/karel/svn/gcc/trunk/gcc/gthr-posix.h:516: undefined reference to `pthread_once' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/libgcc.a(unwind-sjlj.o)(.text+0xfd): In function `fc_key_init': /home/karel/svn/gcc/trunk/gcc/gthr-posix.h:524: undefined reference to `pthread_key_create' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/libgcc.a(unwind-sjlj.o)(.text+0x1ab): In function `_Unwind_SjLj_Unregister': /home/karel/svn/gcc/trunk/gcc/gthr-posix.h:542: undefined reference to `pthread_setspecific' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/libgcc.a(unwind-sjlj.o)(.text+0x292): In function `uw_install_context': /home/karel/svn/gcc/trunk/gcc/gthr-posix.h:542: undefined reference to `pthread_setspecific' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/libgcc.a(unwind-sjlj.o)(.text+0x2dc): In function `_Unwind_SjLj_RaiseException': /home/karel/svn/gcc/trunk/gcc/gthr-posix.h:536: undefined reference to `pthread_getspecific' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/libgcc.a(unwind-sjlj.o)(.text+0x395): In function `_Unwind_SjLj_Register': /home/karel/svn/gcc/trunk/gcc/gthr-posix.h:536: undefined reference to `pthread_getspecific' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/libgcc.a(unwind-sjlj.o)(.text+0x3a6):/home/karel/svn/gcc/trunk/gcc/gthr-posix.h:542: undefined reference to `pthread_setspecific' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/libgcc.a(unwind-sjlj.o)(.text+0x3ee): In function `_Unwind_Backtrace': /home/karel/svn/gcc/trunk/gcc/gthr-posix.h:536: undefined reference to `pthread_getspecific' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/libgcc.a(unwind-sjlj.o)(.text+0x46a): In function `_Unwind_SjLj_Resume_or_Rethrow': /home/karel/svn/gcc/trunk/gcc/gthr-posix.h:536: undefined reference to `pthread_getspecific' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/libgcc.a(unwind-sjlj.o)(.text+0x4cf): In function `_Unwind_SjLj_Resume': /home/karel/svn/gcc/trunk/gcc/gthr-posix.h:536: undefined reference to `pthread_getspecific' /home/karel/usr/local/gcc-trunk-20060331/lib/gcc/i386-unknown-openbsd3.9/4.2.0/libgcc.a(unwind-sjlj.o)(.text+0x536): In function `_Unwind_SjLj_ForcedUnwind': /home/karel/svn/gcc/trunk/gcc/gthr-posix.h:536: undefined reference to `pthread_getspecific' collect2: ld returned 1 exit status If I add -lpthread to the command-line, then everything works as expected. The same behaviour is also presented on 4.1.0 and 4.0.3 releases. Cheers, Karel -- Summary: linking of C++ app fail on OpenBSD 3.9 due POSIX threading unresolved symbols Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: kgardas at objectsecurity dot com GCC build triplet: i386-unknown-openbsd3.9 GCC host triplet: i386-unknown-openbsd3.9 GCC target triplet: i386-unknown-openbsd3.9 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26966