------- Comment #13 from kgardas at objectsecurity dot com 2006-04-04 15:53 ------- Subject: Re: linking of C++ app fail on OpenBSD 3.9 due POSIX threading unresolved symbols
Hello, I've rebuild todays trunk and configured it as: $ gcc -v Using built-in specs. Target: i386-unknown-openbsd3.9 Configured with: /home/karel/svn/gcc/trunk/configure --prefix=/home/karel/usr/local/gcc-trunk-20060404 --enable-shared --enable-threads --enable-languages=c++,objc --disable-checking --disable-nls --disable-werror Thread model: posix gcc version 4.2.0 20060404 (experimental) $ now I've tested your ObjC test and compilation fails with: $ gcc test.m /tmp//ccsP4264.o(.text+0x18): In function `main': : undefined reference to `objc_get_class' /tmp//ccsP4264.o(.text+0x2c): In function `main': : undefined reference to `objc_msg_lookup' /tmp//ccsP4264.o(.text+0x62): In function `__objc_gnu_init': : undefined reference to `__objc_exec_class' /tmp//ccsP4264.o(.data+0x40): undefined reference to `__objc_class_name_Object' collect2: ld returned 1 exit status $ as it seems gcc does not link against libobjc automatically I also tried this: $ gcc test.m -lobjc and I finally got some POSIX threading related undefined symbols: $ gcc test.m -lobjc /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: warning: strcpy() is almost always misused, please use strlcpy() /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: warning: sprintf() is often misused, please use snprintf() /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_cond_signal' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_attr_destroy' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_create' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_getspecific' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_attr_init' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_exit' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_key_delete' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_cond_broadcast' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_once' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_key_create' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_cond_init' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_mutex_unlock' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_self' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_mutex_destroy' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_mutex_lock' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_cond_wait' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_mutex_trylock' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_cond_destroy' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_mutex_init' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_attr_setdetachstate' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `sched_yield' /home/karel/usr/local/gcc-trunk-20060404/lib/gcc/i386-unknown-openbsd3.9/4.2.0/../../../libobjc.so.2.0: undefined reference to `pthread_setspecific' collect2: ld returned 1 exit status $ Please let me know what else to test or try in order to help with fixing this issue. Thanks, Karel -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26966