Today's glibc/nptl failed to build on ia64 with gcc 3.4

Dwayne Grant McConnell dgm69@us.ibm.com
Thu Jul 8 18:52:00 GMT 2004


On Thu, 8 Jul 2004, H. J. Lu wrote:

> I got
>
> ../sysdeps/unix/sysv/linux/fcntl.c:33: warning: static declaration of
> '__fcntl_nocancel' follows non-static declaration
> ../include/fcntl.h:12: warning: previous declaration of '__fcntl_nocancel' was
> here
> ../sysdeps/unix/sysv/linux/fcntl.c: In function `__fcntl_nocancel':
> ../sysdeps/unix/sysv/linux/fcntl.c:33: sorry, unimplemented: function
> '__fcntl_nocancel' can never be inlined because it uses variable argument lists
> make[4]: ***
> [/export/build/gnu/glibc-nptl-3.4/build-ia64-linux/io/rtld-fcntl.os] Error 1

This happens with ppc64 too. The error is triggered by.

int
#ifdef NO_CANCELLATION
static inline __attribute ((always_inline))
#endif
__fcntl_nocancel (int fd, int cmd, ...)

I played around with a small testcase to discover that gcc 3.3 hammer does 
not object to this code but gcc 3.4 does. If "__attribute 
((always_inline))" is removed gcc 3.4 is happy. I noticed that between gcc 
3.3 hammer and 3.4 the code which prevents inlining has changed. In 3.3 
hammer this code was located in c-objc-common.c:inline_forbidden_p() but 
was not being triggered. In 3.4 this code is located in 
tree-inline.c:inline_forbidden_p_1() and is being triggered. I have not 
tracked down what exact changes caused it though.

-- 
Dwayne Grant McConnell <dgm69@us.ibm.com>
Lotus Notes: Dwayne McConnell/Austin/IBM@IBMUS



More information about the Libc-alpha mailing list