This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Re: Today's glibc/nptl failed to build on ia64 with gcc 3.4
- From: Dwayne Grant McConnell <dgm69 at us dot ibm dot com>
- To: "H. J. Lu" <hjl at lucon dot org>
- Cc: GNU C Library <libc-alpha at sources dot redhat dot com>
- Date: Thu, 8 Jul 2004 13:52:29 -0500 (Central Daylight Time)
- Subject: Re: Today's glibc/nptl failed to build on ia64 with gcc 3.4
- References: <20040708184228.GA18636@lucon.org>
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