Bug 42519 - bootstrap fails on powerpc64-linux because of libgomp
Summary: bootstrap fails on powerpc64-linux because of libgomp
Status: RESOLVED WONTFIX
Alias: None
Product: gcc
Classification: Unclassified
Component: libgomp (show other bugs)
Version: 4.5.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: build
Depends on:
Blocks:
 
Reported: 2009-12-28 15:16 UTC by Laurent GUERBY
Modified: 2013-12-27 14:05 UTC (History)
4 users (show)

See Also:
Host: powerpc64-unknown-linux-gnu
Target: powerpc64-unknown-linux-gnu
Build: powerpc64-unknown-linux-gnu
Known to work:
Known to fail:
Last reconfirmed: 2009-12-28 17:47:45


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Laurent GUERBY 2009-12-28 15:16:11 UTC
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
Comment 1 Jakub Jelinek 2009-12-28 17:33:07 UTC
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.
Comment 2 Alexander Monakov 2009-12-28 17:45:30 UTC
(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
Comment 3 Laurent GUERBY 2009-12-28 17:47:45 UTC
"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,
Comment 4 Jakub Jelinek 2009-12-28 17:50:44 UTC
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.
Comment 5 Laurent GUERBY 2009-12-28 17:55:38 UTC
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."

Comment 6 Steven Bosscher 2013-12-26 23:30:28 UTC
A serious candidate for WONTFIX... Laurent?
Comment 7 Laurent GUERBY 2013-12-27 08:23:40 UTC
debian etch is an obsolete OS now so feel free to close, I no longer have an etch system around to test anyway :).
Comment 8 Steven Bosscher 2013-12-27 14:05:04 UTC
LinuxThreads is obsolete also -> WONTFIX.