Trunk bootstrap on powerpc64-linux (debian etch) fails on a warning during libgomp build: << if /bin/sh ./libtool --tag=CC --mode=compile /home/guerby/build-144268/./gcc/xgcc -B/home/guerby/build-144268/./gcc/ -B/n/41/guerby/install-trunk-144268/powerpc64-unknown-linux-gnu/bin/ -B/n/41/guerby/install-trunk-144268/powerpc64-unknown-linux-gnu/lib/ -isystem /n/41/guerby/install-trunk-144268/powerpc64-unknown-linux-gnu/include -isystem /n/41/guerby/install-trunk-144268/powerpc64-unknown-linux-gnu/sys-include -DHAVE_CONFIG_H -I. -I../../../../trunk/libgomp -I. -I../../../../trunk/libgomp/config/linux/powerpc -I../../../../trunk/libgomp/config/linux -I../../../../trunk/libgomp/config/posix -I../../../../trunk/libgomp -Wall -Werror -ftls-model=initial-exec -Wc,-pthread -g -O2 -m64 -fPIC -mstrict-align -MT proc.lo -MD -MP -MF ".deps/proc.Tpo" -c -o proc.lo ../../../../trunk/libgomp/config/linux/proc.c; \ then mv -f ".deps/proc.Tpo" ".deps/proc.Plo"; else rm -f ".deps/proc.Tpo"; exit 1; fi libtool: compile: /home/guerby/build-144268/./gcc/xgcc -B/home/guerby/build-144268/./gcc/ -B/n/41/guerby/install-trunk-144268/powerpc64-unknown-linux-gnu/bin/ -B/n/41/guerby/install-trunk-144268/powerpc64-unknown-linux-gnu/lib/ -isystem /n/41/guerby/install-trunk-144268/powerpc64-unknown-linux-gnu/include -isystem /n/41/guerby/install-trunk-144268/powerpc64-unknown-linux-gnu/sys-include -DHAVE_CONFIG_H -I. -I../../../../trunk/libgomp -I. -I../../../../trunk/libgomp/config/linux/powerpc -I../../../../trunk/libgomp/config/linux -I../../../../trunk/libgomp/config/posix -I../../../../trunk/libgomp -Wall -Werror -pthread -ftls-model=initial-exec -g -O2 -m64 -fPIC -mstrict-align -MT proc.lo -MD -MP -MF .deps/proc.Tpo -c ../../../../trunk/libgomp/config/linux/proc.c -fPIC -DPIC -o .libs/proc.o cc1: warnings being treated as errors ../../../../trunk/libgomp/config/linux/proc.c: In function 'gomp_init_num_threads': ../../../../trunk/libgomp/config/linux/proc.c:78: error: implicit declaration of function 'pthread_getaffinity_np' make[8]: *** [proc.lo] Error 1 make[8]: Leaving directory `/home/guerby/build-144268/powerpc64-unknown-linux-gnu/64/libgomp' make[7]: *** [all-recursive] Error 1 make[7]: Leaving directory `/home/guerby/build-144268/powerpc64-unknown-linux-gnu/64/libgomp' make[6]: *** [all] Error 2 make[6]: Leaving directory `/home/guerby/build-144268/powerpc64-unknown-linux-gnu/64/libgomp' make[5]: *** [multi-do] Error 1 make[5]: Leaving directory `/home/guerby/build-144268/powerpc64-unknown-linux-gnu/libgomp' make[4]: *** [all-multi] Error 2 make[4]: Leaving directory `/home/guerby/build-144268/powerpc64-unknown-linux-gnu/libgomp' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/home/guerby/build-144268/powerpc64-unknown-linux-gnu/libgomp' make[2]: *** [all] Error 2 make[2]: Leaving directory `/home/guerby/build-144268/powerpc64-unknown-linux-gnu/libgomp' make[1]: *** [all-target-libgomp] Error 2 make[1]: Leaving directory `/home/guerby/build-144268' make: *** [bootstrap] Error 2 >> Note: this was reported on another platform as http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32193 libgomp/configure.ac has: # Add -Wall -Werror if we are using GCC. if test "x$GCC" = "xyes"; then XCFLAGS="$XCFLAGS -Wall -Werror" fi I had to remove this part to be able to bootstrap. Now may be it's a bug in debian etch libc headers but it would be nice to honor --disable-werror in libgomp. http://gcc.gnu.org/ml/gcc/2009-02/msg00302.html
So, your pthread.h doesn't contain prototype for pthread_getaffinity_np, yet libpthread.so.0 exports it? Otherwise: # Check for pthread_{,attr_}[sg]etaffinity_np. AC_LINK_IFELSE( [AC_LANG_PROGRAM( [#define _GNU_SOURCE #include <pthread.h>], [cpu_set_t cpuset; pthread_attr_t attr; pthread_getaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset); if (CPU_ISSET (0, &cpuset)) CPU_SET (1, &cpuset); else CPU_ZERO (&cpuset); pthread_setaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset); pthread_attr_init (&attr); pthread_attr_getaffinity_np (&attr, sizeof (cpu_set_t), &cpuset); pthread_attr_setaffinity_np (&attr, sizeof (cpu_set_t), &cpuset);])], AC_DEFINE(HAVE_PTHREAD_AFFINITY_NP, 1, [ Define if pthread_{,attr_}{g,s}etaffinity_np is supported.])) would fail... pthread_getaffinity_np has been added to both pthread.h and libpthread.so.0 at the same time, 2003-05-09. libgomp/config/linux/proc.c starts with #ifndef _GNU_SOURCE #define _GNU_SOURCE 1 #endif, so the right CPU feature test macro is certainly defined.
(In reply to comment #1) > So, your pthread.h doesn't contain prototype for pthread_getaffinity_np, yet > libpthread.so.0 exports it? Otherwise: Affected system declares those functions in /usr/include/nptl/pthread.h. Some clarifications here: http://gcc.gnu.org/ml/gcc/2009-12/msg00376.html
"The second issue is how libgomp configure detects availability of pthread_{attr,}_{get,set}affinity_np. It uses link test and does not pass -Wall -Werror to compiler; thus, libgomp build fails if those functions are declared in /usr/include/nptl/pthread.h but not in /usr/include/pthread.h (libgomp only includes the latter)." I confirm: guerby@gcc40:/usr/include$ grep pthread_getaffinity_np *.h */*.h nptl/pthread.h:extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize,
If Debian provides by default LinuxThread's <pthread.h> instead of NPTL <pthread.h>, then it should also make sure linking with -lpthread links against LinuxThread's libpthread.so instead of NPTL one. So this looks like a distro bug to me.
Yes likely a distro header bug as I said: "Now may be it's a bug in debian etch libc headers but it would be nice to honor --disable-werror in libgomp."
A serious candidate for WONTFIX... Laurent?
debian etch is an obsolete OS now so feel free to close, I no longer have an etch system around to test anyway :).
LinuxThreads is obsolete also -> WONTFIX.