This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]