From 2b13f2ccc0b53bb2f3a4f6dcc006d4dea7149e16 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 29 Sep 2004 08:48:32 +0000 Subject: [PATCH] Updated to fedora-glibc-20040929T0821 --- ChangeLog | 72 +++++++++++++++++++ fedora/branch.mk | 4 +- fedora/glibc.spec.in | 10 ++- io/utime.h | 2 +- localedata/ChangeLog | 9 +++ localedata/locales/cy_GB | 6 +- localedata/locales/nb_NO | 2 +- malloc/arena.c | 3 +- nptl/ChangeLog | 19 +++++ nptl/sysdeps/pthread/pthread_sigmask.c | 10 +-- nptl/sysdeps/pthread/sigaction.c | 4 +- .../unix/sysv/linux/alpha/bits/pthreadtypes.h | 8 +-- .../unix/sysv/linux/i386/bits/pthreadtypes.h | 8 +-- .../unix/sysv/linux/ia64/bits/pthreadtypes.h | 6 +- .../sysv/linux/powerpc/bits/pthreadtypes.h | 8 +-- nptl/sysdeps/unix/sysv/linux/pthread_kill.c | 7 +- .../unix/sysv/linux/s390/bits/pthreadtypes.h | 8 +-- .../unix/sysv/linux/sh/bits/pthreadtypes.h | 8 +-- .../unix/sysv/linux/sparc/bits/pthreadtypes.h | 8 +-- .../sysv/linux/x86_64/bits/pthreadtypes.h | 8 +-- nscd/nscd_getai.c | 6 +- posix/sys/wait.h | 7 +- posix/tst-waitid.c | 71 ++++++++++++++++++ stdlib/stdlib.h | 3 + sunrpc/Makefile | 4 +- sunrpc/Versions | 3 + sunrpc/get_myaddr.c | 2 +- sunrpc/pmap_clnt.c | 2 +- sunrpc/pmap_rmt.c | 2 +- sunrpc/rpc/xdr.h | 2 + sunrpc/rpc_parse.c | 12 ++-- sunrpc/tst-getmyaddr.c | 24 +++++++ sunrpc/xdr_intXX_t.c | 11 ++- sysdeps/generic/bits/waitstatus.h | 18 ++--- sysdeps/generic/sigfillset.c | 6 +- sysdeps/i386/dl-machine.h | 16 +++-- sysdeps/posix/getaddrinfo.c | 10 +++ sysdeps/unix/sysv/linux/ia64/bits/siginfo.h | 3 +- sysdeps/unix/sysv/linux/sigprocmask.c | 14 +++- sysdeps/unix/sysv/linux/sigtimedwait.c | 12 +++- sysdeps/unix/sysv/linux/sigwait.c | 12 +++- sysdeps/unix/sysv/linux/sigwaitinfo.c | 12 +++- sysdeps/unix/sysv/linux/waitid.c | 5 +- 43 files changed, 375 insertions(+), 92 deletions(-) create mode 100644 sunrpc/tst-getmyaddr.c diff --git a/ChangeLog b/ChangeLog index d208b771e9..f8a6690432 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,75 @@ +2004-09-28 Ulrich Drepper + + * nscd/nscd_getai.c: Use NO_MAPPING instead of MAP_FAILED for test + of failing __nscd_get_map_ref. Fix a few typos. + + * sysdeps/unix/sysv/linux/sigwait.c (do_sigwait): Make sure + SIGSETXID is not blocked. + * sysdeps/unix/sysv/linux/sigwaitinfo.c (do_sigwaitinfo): Likewise. + * sysdeps/unix/sysv/linux/sigtimedwait.c (do_sigtimedwait): Likewise. + * sysdeps/unix/sysv/linux/sigprocmask.c (__sigprocmask): Likewise. + * sysdeps/generic/sigfillset.c (sigfillset): Don't set SIGSETXID. + + * sunrpc/get_myaddr.c (get_myaddress): Fix test for failing + getifaddrs call. + * sunrpc/pmap_clnt.c (__get_myaddress): Likewise. + * sunrpc/pmap_rmt.c (getbroadcastnets): Likewise. + * sunrpc/Makefile (xtests): Add tst-getmyaddr. + * sunrpc/tst-getmyaddr.c: New file. + + * malloc/arena.c (ptmalloc_init): Allow MALLOC_CHECK_==0 to + disable all checking. + + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (si_flags): Add + support to get this value. + +2004-09-28 Jakub Jelinek + + * io/utime.h (utime): Allow second argument to be NULL. + +2004-09-28 Ulrich Drepper + + * sysdeps/posix/getaddrinfo.c (gaih_inet): If NAME is a numerical IP + address and AI_CANONNAME is set, return copy of NAME as ai_canonname. + +2004-09-27 Andreas Jaeger + + * sysdeps/i386/dl-machine.h (elf_machine_rela_relative): Replace + static inline by auto inline, add always_inline attribute. + (elf_machine_rel): Likewise. + (elf_machine_rela): Likewise. + (elf_machine_lazy_rel): Likewise. + (elf_machine_lazy_rela): Likewise. + (elf_machine_rel_relative): Likewise. + +2004-09-27 Ulrich Drepper + + * sunrpc/xdr_intXX_t.c: Add xdr_quad_t and xdr_u_quad_t aliases. + * sunrpc/rpc/xdr.h: Declare xdr_quad_t and xdr_u_quad_t. + * sunrpc/rpc_parse.c (get_type): Use "quad_t" for TOK_HYPER. + Otherwise isvectordef will loop infinitely if typedef hyper int64_t + is seen. + (unsigned_dec): Use "u_quad_t" for similar reasons. + * sunrpc/Versions: Export xdr_quad_t and xdr_u_quad_t. + +2004-09-27 Roland McGrath + + * sysdeps/generic/bits/waitstatus.h (__WIFSIGNALED): Simplify bit + twiddling in last change. + + * posix/tst-waitid.c (do_test): Add tests for waitpid with WCONTINUED. + + [BZ #409] + * posix/sys/wait.h [__WIFCONTINUED] (WIFCONTINUED): New macro. + * stdlib/stdlib.h [__WIFCONTINUED] (WIFCONTINUED): New macro. + * sysdeps/generic/bits/waitstatus.h (__W_CONTINUED): New macro. + [WCONTINUED] (__WIFCONTINUED): New macro. + (__WIFSIGNALED): Rewritten to exclude __W_CONTINUED value, and have no + branches. + + * sysdeps/unix/sysv/linux/waitid.c (do_waitid): Add fifth argument to + all three syscall uses, not just one! + 2004-09-26 Richard Henderson * sysdeps/alpha/alphaev6/memcpy.S: Mark .prologue. diff --git a/fedora/branch.mk b/fedora/branch.mk index 7a862eaf51..b85d5f7846 100644 --- a/fedora/branch.mk +++ b/fedora/branch.mk @@ -1,5 +1,5 @@ # This file is updated automatically by Makefile. glibc-branch := fedora glibc-base := HEAD -fedora-sync-date := 2004-09-27 06:11 UTC -fedora-sync-tag := fedora-glibc-20040927T0611 +fedora-sync-date := 2004-09-29 08:21 UTC +fedora-sync-tag := fedora-glibc-20040929T0821 diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in index 35e9dc74bd..2d32470640 100644 --- a/fedora/glibc.spec.in +++ b/fedora/glibc.spec.in @@ -1,4 +1,4 @@ -%define glibcrelease 59 +%define glibcrelease 60 %define auxarches i586 i686 athlon sparcv9 alphaev6 %define prelinkarches noarch %define nptlarches i386 i686 athlon x86_64 ia64 s390 s390x sparcv9 ppc ppc64 @@ -1239,6 +1239,14 @@ rm -f *.filelist* %endif %changelog +* Wed Sep 29 2004 Jakub Jelinek 2.3.3-60 +- update from CVS + - fix get_myaddress (#133982) + - remove nonnull attribute from second utime argument (#133866) + - handle SIGSETXID the same way as SIGCANCEL in + sigaction/pthread_kill/sigwait/sigwaitinfo etc. + - add __extension__ to long long types in NPTL + * Mon Sep 27 2004 Jakub Jelinek 2.3.3-59 - update from CVS - fix BZ #151, #362, #381, #407 diff --git a/io/utime.h b/io/utime.h index 4b861451bc..dd5d265708 100644 --- a/io/utime.h +++ b/io/utime.h @@ -45,7 +45,7 @@ struct utimbuf *FILE_TIMES. If FILE_TIMES is NULL, set them to the current time. */ extern int utime (__const char *__file, __const struct utimbuf *__file_times) - __THROW __nonnull ((1, 2)); + __THROW __nonnull ((1)); __END_DECLS diff --git a/localedata/ChangeLog b/localedata/ChangeLog index 2062632fa1..7014099b68 100644 --- a/localedata/ChangeLog +++ b/localedata/ChangeLog @@ -1,3 +1,12 @@ +2004-09-28 Ulrich Drepper + + * locales/nb_NO: Make language field consistent in form with nn_NO. + +2004-09-27 Ulrich Drepper + + * locales/cy_GB: Fix d_t_fmt ("a viz" -> "mis"). + Reported by Alan Cox . + 2004-08-07 Petter Reinholdtsen * Makefile (test-input): Add tr_TR.UTF-8 sorting test. Test case diff --git a/localedata/locales/cy_GB b/localedata/locales/cy_GB index 4890754a8a..0415e78454 100644 --- a/localedata/locales/cy_GB +++ b/localedata/locales/cy_GB @@ -13,8 +13,8 @@ tel "" fax "" language "Welsh" territory "Great Britain" -revision "0.8" -date "2001-01-28" +revision "0.9" +date "2004-09-27" category cy_GB:2000;LC_IDENTIFICATION category cy_GB:2000;LC_CTYPE @@ -245,7 +245,7 @@ mon "";/ "";/ "";/ "" -d_t_fmt "" +d_t_fmt "" d_fmt "" t_fmt "" am_pm "";"" diff --git a/localedata/locales/nb_NO b/localedata/locales/nb_NO index a382a2ff4e..f43a7323a3 100644 --- a/localedata/locales/nb_NO +++ b/localedata/locales/nb_NO @@ -28,7 +28,7 @@ contact "" email "bug-glibc@gnu.org" tel "" fax "" -language "Norwegian Bokml" +language "Norwegian, Bokml" territory "Norway" revision "1.0" date "2000-06-29" diff --git a/malloc/arena.c b/malloc/arena.c index 16574e1f7d..3adfbc45f8 100644 --- a/malloc/arena.c +++ b/malloc/arena.c @@ -495,7 +495,8 @@ ptmalloc_init (void) #endif if(s) { if(s[0]) mALLOPt(M_CHECK_ACTION, (int)(s[0] - '0')); - __malloc_check_init(); + if (check_action != 0) + __malloc_check_init(); } if(__malloc_initialize_hook != NULL) (*__malloc_initialize_hook)(); diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 2aff8c8dbb..aba6fc4661 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,22 @@ +2004-09-28 Ulrich Drepper + + * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): Don't + allow SIGSETXID to be sent. + * sysdeps/pthread/sigaction.c (__sigaction): Don't allow action + for SIGSETXID to be defined. + * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Make sure + SIGSETXID cannot be blocked. + + * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t): + Add __extension__ to long long types. + * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise. + 2004-09-25 Ulrich Drepper * descr.h (struct pthread): Add stopped_start field. diff --git a/nptl/sysdeps/pthread/pthread_sigmask.c b/nptl/sysdeps/pthread/pthread_sigmask.c index efe186ac2c..0d12fe6bf0 100644 --- a/nptl/sysdeps/pthread/pthread_sigmask.c +++ b/nptl/sysdeps/pthread/pthread_sigmask.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -31,13 +31,15 @@ pthread_sigmask (how, newmask, oldmask) { sigset_t local_newmask; - /* The only thing we have to make sure here is that SIGCANCEL is not - blocked. */ + /* The only thing we have to make sure here is that SIGCANCEL and + SIGSETXID is not blocked. */ if (newmask != NULL - && __builtin_expect (__sigismember (newmask, SIGCANCEL), 0)) + && (__builtin_expect (__sigismember (newmask, SIGCANCEL), 0) + || __builtin_expect (__sigismember (newmask, SIGSETXID), 0))) { local_newmask = *newmask; __sigdelset (&local_newmask, SIGCANCEL); + __sigdelset (&local_newmask, SIGSETXID); newmask = &local_newmask; } diff --git a/nptl/sysdeps/pthread/sigaction.c b/nptl/sysdeps/pthread/sigaction.c index 392cb65c90..4d36150a90 100644 --- a/nptl/sysdeps/pthread/sigaction.c +++ b/nptl/sysdeps/pthread/sigaction.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -36,7 +36,7 @@ __sigaction (sig, act, oact) const struct sigaction *act; struct sigaction *oact; { - if (sig == SIGCANCEL) + if (__builtin_expect (sig == SIGCANCEL || sig == SIGSETXID, 0)) { __set_errno (EINVAL); return -1; diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h index 79d43febdd..d13d6e86a4 100644 --- a/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h @@ -77,15 +77,15 @@ typedef union { int __lock; unsigned int __futex; - unsigned long long int __total_seq; - unsigned long long int __wakeup_seq; - unsigned long long int __woken_seq; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; void *__mutex; unsigned int __nwaiters; unsigned int __broadcast_seq; } __data; char __size[__SIZEOF_PTHREAD_COND_T]; - long long int __align; + __extension__ long long int __align; } pthread_cond_t; typedef union diff --git a/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h index 1db372d6a3..4d1c9450b5 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h @@ -77,15 +77,15 @@ typedef union { int __lock; unsigned int __futex; - unsigned long long int __total_seq; - unsigned long long int __wakeup_seq; - unsigned long long int __woken_seq; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; void *__mutex; unsigned int __nwaiters; unsigned int __broadcast_seq; } __data; char __size[__SIZEOF_PTHREAD_COND_T]; - long long int __align; + __extension__ long long int __align; } pthread_cond_t; typedef union diff --git a/nptl/sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h index 746138e420..afb8800ac9 100644 --- a/nptl/sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h @@ -77,9 +77,9 @@ typedef union { int __lock; unsigned int __futex; - unsigned long long int __total_seq; - unsigned long long int __wakeup_seq; - unsigned long long int __woken_seq; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; void *__mutex; unsigned int __nwaiters; unsigned int __broadcast_seq; diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h index 2f8e1d9600..90c0695697 100644 --- a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h @@ -97,15 +97,15 @@ typedef union { int __lock; unsigned int __futex; - unsigned long long int __total_seq; - unsigned long long int __wakeup_seq; - unsigned long long int __woken_seq; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; void *__mutex; unsigned int __nwaiters; unsigned int __broadcast_seq; } __data; char __size[__SIZEOF_PTHREAD_COND_T]; - long long int __align; + __extension__ long long int __align; } pthread_cond_t; typedef union diff --git a/nptl/sysdeps/unix/sysv/linux/pthread_kill.c b/nptl/sysdeps/unix/sysv/linux/pthread_kill.c index 87577be4dc..9115d6f40b 100644 --- a/nptl/sysdeps/unix/sysv/linux/pthread_kill.c +++ b/nptl/sysdeps/unix/sysv/linux/pthread_kill.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -37,8 +37,9 @@ __pthread_kill (threadid, signo) /* Not a valid thread handle. */ return ESRCH; - /* Disallow sending the signal we use for cancellation. */ - if (signo == SIGCANCEL || signo == SIGTIMER) + /* Disallow sending the signal we use for cancellation, timers, for + for the setxid implementation. */ + if (signo == SIGCANCEL || signo == SIGTIMER || signo == SIGSETXID) return EINVAL; /* We have a special syscall to do the work. */ diff --git a/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h index 9d7490444d..6b3618cd57 100644 --- a/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h @@ -96,15 +96,15 @@ typedef union { int __lock; unsigned int __futex; - unsigned long long int __total_seq; - unsigned long long int __wakeup_seq; - unsigned long long int __woken_seq; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; void *__mutex; unsigned int __nwaiters; unsigned int __broadcast_seq; } __data; char __size[__SIZEOF_PTHREAD_COND_T]; - long long int __align; + __extension__ long long int __align; } pthread_cond_t; typedef union diff --git a/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h index 914351a3e2..5125408dcb 100644 --- a/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h @@ -78,15 +78,15 @@ typedef union { int __lock; unsigned int __futex; - unsigned long long int __total_seq; - unsigned long long int __wakeup_seq; - unsigned long long int __woken_seq; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; void *__mutex; unsigned int __nwaiters; unsigned int __broadcast_seq; } __data; char __size[__SIZEOF_PTHREAD_COND_T]; - long long int __align; + __extension__ long long int __align; } pthread_cond_t; typedef union diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h index c894f12495..3c5a289445 100644 --- a/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h @@ -97,15 +97,15 @@ typedef union { int __lock; unsigned int __futex; - unsigned long long int __total_seq; - unsigned long long int __wakeup_seq; - unsigned long long int __woken_seq; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; void *__mutex; unsigned int __nwaiters; unsigned int __broadcast_seq; } __data; char __size[__SIZEOF_PTHREAD_COND_T]; - long long int __align; + __extension__ long long int __align; } pthread_cond_t; typedef union diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h index 6b996a412a..03c2ef8106 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h @@ -96,15 +96,15 @@ typedef union { int __lock; unsigned int __futex; - unsigned long long int __total_seq; - unsigned long long int __wakeup_seq; - unsigned long long int __woken_seq; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; void *__mutex; int __nwaiters; unsigned int __broadcast_seq; } __data; char __size[__SIZEOF_PTHREAD_COND_T]; - long long int __align; + __extension__ long long int __align; } pthread_cond_t; typedef union diff --git a/nscd/nscd_getai.c b/nscd/nscd_getai.c index 627fe8cf9d..a9eac48ac8 100644 --- a/nscd/nscd_getai.c +++ b/nscd/nscd_getai.c @@ -38,7 +38,7 @@ libc_locked_map_ptr (map_handle); /* Note that we only free the structure if necessary. The memory mapping is not removed since it is not visible to the malloc handling. */ -libc_freeres_fn (gr_map_free) +libc_freeres_fn (ai_map_free) { if (map_handle.mapped != NO_MAPPING) @@ -63,7 +63,7 @@ __nscd_getai (const char *key, struct nscd_ai_result **result, int *h_errnop) struct mapped_database *mapped = __nscd_get_map_ref (GETFDHST, "hosts", &map_handle, &gc_cycle); retry: - if (mapped != MAP_FAILED) + if (mapped != NO_MAPPING) { const struct datahead *found = __nscd_cache_search (GETAI, key, keylen, mapped); @@ -86,7 +86,7 @@ __nscd_getai (const char *key, struct nscd_ai_result **result, int *h_errnop) { /* nscd not running or wrong version or hosts caching disabled. */ __nss_not_use_nscd_hosts = 1; - goto out;; + goto out; } ai_resp = &ai_resp_mem; diff --git a/posix/sys/wait.h b/posix/sys/wait.h index e758f9e3ff..372d46c79a 100644 --- a/posix/sys/wait.h +++ b/posix/sys/wait.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1994,1996-2001,2003 Free Software Foundation, Inc. +/* Copyright (C) 1991-1994,1996-2001,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -30,7 +30,7 @@ __BEGIN_DECLS #include #include -/* These macros could also be defined int . */ +/* These macros could also be defined in . */ #if !defined _STDLIB_H || !defined __USE_XOPEN /* This will define the `W*' macros for the flag bits to `waitpid', `wait3', and `wait4'. */ @@ -84,6 +84,9 @@ typedef union # define WIFEXITED(status) __WIFEXITED(__WAIT_INT(status)) # define WIFSIGNALED(status) __WIFSIGNALED(__WAIT_INT(status)) # define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status)) +# ifdef __WIFCONTINUED +# define WIFCONTINUED(status) __WIFCONTINUED(__WAIT_INT(status)) +# endif #endif /* not included. */ #ifdef __USE_BSD diff --git a/posix/tst-waitid.c b/posix/tst-waitid.c index 3e81d7a0ac..642d529a9a 100644 --- a/posix/tst-waitid.c +++ b/posix/tst-waitid.c @@ -335,6 +335,77 @@ do_test (int argc, char *argv[]) info.si_signo); RETURN (EXIT_FAILURE); } + + /* Now stop him again and test waitpid with WCONTINUED. */ + expecting_sigchld = 1; + if (kill (pid, SIGSTOP) != 0) + { + error (0, errno, "kill (%d, SIGSTOP)", pid); + RETURN (EXIT_FAILURE); + } + pid_t wpid = waitpid (pid, &fail, WUNTRACED); + if (wpid < 0) + { + error (0, errno, "waitpid WUNTRACED on stopped"); + RETURN (EXIT_FAILURE); + } + else if (wpid != pid) + { + error (0, 0, + "waitpid WUNTRACED on stopped returned %d != %d (status %x)", + wpid, pid, fail); + RETURN (EXIT_FAILURE); + } + else if (!WIFSTOPPED (fail) || WIFSIGNALED (fail) || WIFEXITED (fail) + || WIFCONTINUED (fail) || WSTOPSIG (fail) != SIGSTOP) + { + error (0, 0, "waitpid WUNTRACED on stopped: status %x", fail); + RETURN (EXIT_FAILURE); + } + CHECK_SIGCHLD ("stopped", CLD_STOPPED, SIGSTOP); + + expecting_sigchld = 1; + if (kill (pid, SIGCONT) != 0) + { + error (0, errno, "kill (%d, SIGCONT)", pid); + RETURN (EXIT_FAILURE); + } + + /* Wait for the child to have continued. */ + sleep (2); + + if (expecting_sigchld) + { + error (0, 0, "no SIGCHLD seen for SIGCONT (optional)"); + expecting_sigchld = 0; + } + else + CHECK_SIGCHLD ("continued", CLD_CONTINUED, SIGCONT); + + wpid = waitpid (pid, &fail, WCONTINUED); + if (wpid < 0) + { + if (errno == EINVAL) + error (0, 0, "waitpid does not support WCONTINUED"); + else + { + error (0, errno, "waitpid WCONTINUED on continued"); + RETURN (EXIT_FAILURE); + } + } + else if (wpid != pid) + { + error (0, 0, + "waitpid WCONTINUED on continued returned %d != %d (status %x)", + wpid, pid, fail); + RETURN (EXIT_FAILURE); + } + else if (WIFSTOPPED (fail) || WIFSIGNALED (fail) || WIFEXITED (fail) + || !WIFCONTINUED (fail)) + { + error (0, 0, "waitpid WCONTINUED on continued: status %x", fail); + RETURN (EXIT_FAILURE); + } #endif expecting_sigchld = 1; diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h index dc0c712df7..e4f79369a6 100644 --- a/stdlib/stdlib.h +++ b/stdlib/stdlib.h @@ -88,6 +88,9 @@ typedef union # define WIFEXITED(status) __WIFEXITED(__WAIT_INT(status)) # define WIFSIGNALED(status) __WIFSIGNALED(__WAIT_INT(status)) # define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status)) +# ifdef __WIFCONTINUED +# define WIFCONTINUED(status) __WIFCONTINUED(__WAIT_INT(status)) +# endif #endif /* X/Open and not included. */ __BEGIN_NAMESPACE_STD diff --git a/sunrpc/Makefile b/sunrpc/Makefile index 6431324f3e..284e355cc3 100644 --- a/sunrpc/Makefile +++ b/sunrpc/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1994-2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 1994-2001, 2002, 2003, 2004 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -85,6 +85,8 @@ all: # Make this the default target; it will be defined in Rules. include ../Makeconfig +xtests := tst-getmyaddr + ifeq ($(have-thread-library),yes) xtests += thrsvc endif diff --git a/sunrpc/Versions b/sunrpc/Versions index b800172e08..cddf188766 100644 --- a/sunrpc/Versions +++ b/sunrpc/Versions @@ -113,4 +113,7 @@ libc { __rpc_thread_svc_fdset; __rpc_thread_createerr; __rpc_thread_svc_pollfd; __rpc_thread_svc_max_pollfd; } + GLIBC_2.3.4 { + xdr_quad_t; xdr_u_quad_t; + } } diff --git a/sunrpc/get_myaddr.c b/sunrpc/get_myaddr.c index ee822970f9..c0beee9c59 100644 --- a/sunrpc/get_myaddr.c +++ b/sunrpc/get_myaddr.c @@ -63,7 +63,7 @@ get_myaddress (struct sockaddr_in *addr) { struct ifaddrs *ifa; - if (getifaddrs (&ifa) == 0) + if (getifaddrs (&ifa) != 0) { perror ("get_myaddress: getifaddrs"); exit (1); diff --git a/sunrpc/pmap_clnt.c b/sunrpc/pmap_clnt.c index c968511e96..aa5740c8a0 100644 --- a/sunrpc/pmap_clnt.c +++ b/sunrpc/pmap_clnt.c @@ -57,7 +57,7 @@ __get_myaddress (struct sockaddr_in *addr) { struct ifaddrs *ifa; - if (getifaddrs (&ifa) == 0) + if (getifaddrs (&ifa) != 0) { perror ("get_myaddress: getifaddrs"); exit (1); diff --git a/sunrpc/pmap_rmt.c b/sunrpc/pmap_rmt.c index e446f5e608..4ff707ad15 100644 --- a/sunrpc/pmap_rmt.c +++ b/sunrpc/pmap_rmt.c @@ -179,7 +179,7 @@ getbroadcastnets (struct in_addr *addrs, int naddrs) { struct ifaddrs *ifa; - if (getifaddrs (&ifa) == 0) + if (getifaddrs (&ifa) != 0) { perror ("broadcast: getifaddrs"); return 0; diff --git a/sunrpc/rpc/xdr.h b/sunrpc/rpc/xdr.h index 64ac42fc5b..ba9691d1af 100644 --- a/sunrpc/rpc/xdr.h +++ b/sunrpc/rpc/xdr.h @@ -303,6 +303,8 @@ extern bool_t xdr_int32_t (XDR *__xdrs, int32_t *__ip) __THROW; extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW; extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW; extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW; +extern bool_t xdr_quad_t (XDR *__xdrs, quad_t *__ip) __THROW; +extern bool_t xdr_u_quad_t (XDR *__xdrs, u_quad_t *__up) __THROW; extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW; extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW; extern bool_t xdr_array (XDR * _xdrs, caddr_t *__addrp, u_int *__sizep, diff --git a/sunrpc/rpc_parse.c b/sunrpc/rpc_parse.c index b036aa456d..d6eda42309 100644 --- a/sunrpc/rpc_parse.c +++ b/sunrpc/rpc_parse.c @@ -621,10 +621,10 @@ get_type (const char **prefixp, const char **typep, defkind dkind) *typep = "long"; (void) peekscan (TOK_INT, &tok); break; - case TOK_HYPER: - *typep = "int64_t"; + case TOK_HYPER: + *typep = "quad_t"; (void) peekscan(TOK_INT, &tok); - break; + break; case TOK_VOID: if (dkind != DEF_UNION && dkind != DEF_PROGRAM) { @@ -668,11 +668,11 @@ unsigned_dec (const char **typep) *typep = "u_long"; (void) peekscan (TOK_INT, &tok); break; - case TOK_HYPER: + case TOK_HYPER: get_token (&tok); - *typep = "uint64_t"; + *typep = "u_quad_t"; (void) peekscan(TOK_INT, &tok); - break; + break; case TOK_INT: get_token (&tok); *typep = "u_int"; diff --git a/sunrpc/tst-getmyaddr.c b/sunrpc/tst-getmyaddr.c new file mode 100644 index 0000000000..1eaf9b22ca --- /dev/null +++ b/sunrpc/tst-getmyaddr.c @@ -0,0 +1,24 @@ +#include +#include +#include +#include +#include + + +static int +do_test (void) +{ + struct sockaddr_in ad; + struct sockaddr_in ad2; + memset (&ad, '\0', sizeof (ad)); + memset (&ad2, '\0', sizeof (ad2)); + + get_myaddress (&ad); + + printf ("addr = %s:%d\n", inet_ntoa (ad.sin_addr), ad.sin_port); + + return memcmp (&ad, &ad2, sizeof (ad)) == 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/sunrpc/xdr_intXX_t.c b/sunrpc/xdr_intXX_t.c index d36d1623bc..9d2f92e10d 100644 --- a/sunrpc/xdr_intXX_t.c +++ b/sunrpc/xdr_intXX_t.c @@ -1,4 +1,4 @@ -/* Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (c) 1998, 1999, 2000, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1998. @@ -18,7 +18,14 @@ 02111-1307 USA. */ #include + +/* We play dirty tricks with aliases. */ +#define xdr_quad_t Xdr_quad_t +#define xdr_u_quad_t Xdr_u_quad_t #include +#undef xdr_quad_t +#undef xdr_u_quad_t + /* XDR 64bit integers */ bool_t @@ -47,6 +54,7 @@ xdr_int64_t (XDR *xdrs, int64_t *ip) return FALSE; } } +strong_alias (xdr_int64_t, xdr_quad_t) /* XDR 64bit unsigned integers */ bool_t @@ -75,6 +83,7 @@ xdr_uint64_t (XDR *xdrs, uint64_t *uip) return FALSE; } } +strong_alias (xdr_int64_t, xdr_u_quad_t) /* XDR 32bit integers */ bool_t diff --git a/sysdeps/generic/bits/waitstatus.h b/sysdeps/generic/bits/waitstatus.h index 982c9dbb28..699c224989 100644 --- a/sysdeps/generic/bits/waitstatus.h +++ b/sysdeps/generic/bits/waitstatus.h @@ -1,5 +1,5 @@ /* Definitions of status bits for `wait' et al. - Copyright (C) 1992, 1994, 1996, 1997, 2000 Free Software Foundation, Inc. + Copyright (C) 1992,1994,1996,1997,2000,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -38,23 +38,25 @@ #define __WIFEXITED(status) (__WTERMSIG(status) == 0) /* Nonzero if STATUS indicates termination by a signal. */ -#ifdef __GNUC__ -# define __WIFSIGNALED(status) \ - (__extension__ ({ int __status = (status); \ - !__WIFSTOPPED(__status) && !__WIFEXITED(__status); })) -#else /* Not GCC. */ -# define __WIFSIGNALED(status) (!__WIFSTOPPED(status) && !__WIFEXITED(status)) -#endif /* GCC. */ +#define __WIFSIGNALED(status) \ + (((signed char) (((status) & 0x7f) + 1) >> 1) > 0) /* Nonzero if STATUS indicates the child is stopped. */ #define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f) +/* Nonzero if STATUS indicates the child continued after a stop. We only + define this if provides the WCONTINUED flag bit. */ +#ifdef WCONTINUED +# define __WIFCONTINUED(status) ((status) == __W_CONTINUED) +#endif + /* Nonzero if STATUS indicates the child dumped core. */ #define __WCOREDUMP(status) ((status) & __WCOREFLAG) /* Macros for constructing status values. */ #define __W_EXITCODE(ret, sig) ((ret) << 8 | (sig)) #define __W_STOPCODE(sig) ((sig) << 8 | 0x7f) +#define __W_CONTINUED 0xffff #define __WCOREFLAG 0x80 diff --git a/sysdeps/generic/sigfillset.c b/sysdeps/generic/sigfillset.c index 5f91fa6bda..95d52cf0c0 100644 --- a/sysdeps/generic/sigfillset.c +++ b/sysdeps/generic/sigfillset.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,96,97,2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1991,96,97,2002,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -37,6 +37,10 @@ sigfillset (set) #ifdef SIGCANCEL __sigdelset (set, SIGCANCEL); #endif + /* Likewise for the signal to implement setxid. */ +#ifdef SIGSETXID + __sigdelset (set, SIGSETXID); +#endif return 0; } diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h index 4b5b8f22e7..c48d9d325e 100644 --- a/sysdeps/i386/dl-machine.h +++ b/sysdeps/i386/dl-machine.h @@ -388,7 +388,7 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc, /* Perform the relocation specified by RELOC and SYM (which is fully resolved). MAP is the object containing the reloc. */ -static inline void +auto inline void __attribute ((always_inline)) elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, const Elf32_Sym *sym, const struct r_found_version *version, @@ -533,7 +533,8 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, } #ifndef RTLD_BOOTSTRAP -static inline void +auto inline void +__attribute__ ((always_inline)) elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, const Elf32_Sym *sym, const struct r_found_version *version, void *const reloc_addr_arg) @@ -639,7 +640,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, } #endif /* !RTLD_BOOTSTRAP */ -static inline void +auto inline void __attribute ((always_inline)) elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc, void *const reloc_addr_arg) @@ -650,7 +651,8 @@ elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc, } #ifndef RTLD_BOOTSTRAP -static inline void +auto inline void +__attribute__ ((always_inline)) elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, void *const reloc_addr_arg) { @@ -659,7 +661,8 @@ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, } #endif /* !RTLD_BOOTSTRAP */ -static inline void +auto inline void +__attribute__ ((always_inline)) elf_machine_lazy_rel (struct link_map *map, Elf32_Addr l_addr, const Elf32_Rel *reloc) { @@ -680,7 +683,8 @@ elf_machine_lazy_rel (struct link_map *map, #ifndef RTLD_BOOTSTRAP -static inline void +auto inline void +__attribute__ ((always_inline)) elf_machine_lazy_rela (struct link_map *map, Elf32_Addr l_addr, const Elf32_Rela *reloc) { diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c index 20e60de393..eb45709be1 100644 --- a/sysdeps/posix/getaddrinfo.c +++ b/sysdeps/posix/getaddrinfo.c @@ -556,6 +556,14 @@ gaih_inet (const char *name, const struct gaih_service *service, } else return -EAI_ADDRFAMILY; + + dupname: + if (req->ai_flags & AI_CANONNAME) + { + canon = strdup (name); + if (canon == NULL) + return -EAI_MEMORY; + } } if (at->family == AF_UNSPEC) @@ -603,6 +611,8 @@ gaih_inet (const char *name, const struct gaih_service *service, return GAIH_OKIFUNSPEC | -EAI_NONAME; } } + + goto dupname; } } diff --git a/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h b/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h index c3abe80de6..52d00e9da9 100644 --- a/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h +++ b/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h @@ -93,7 +93,7 @@ typedef struct siginfo { void *si_addr; /* Faulting insn/memory ref. */ int _si_imm; - int _si_pad0; + unsigned int _si_flags; unsigned long int _si_isr; } _sigfault; @@ -124,6 +124,7 @@ typedef struct siginfo #ifdef __USE_GNU # define si_imm _sifields._sigfault._si_imm +# define si_flags _sifields._sigfault._si_flags # define si_isr _sifields._sigfault._si_isr #endif diff --git a/sysdeps/unix/sysv/linux/sigprocmask.c b/sysdeps/unix/sysv/linux/sigprocmask.c index e1b57566a5..1573780d8e 100644 --- a/sysdeps/unix/sysv/linux/sigprocmask.c +++ b/sysdeps/unix/sysv/linux/sigprocmask.c @@ -43,12 +43,20 @@ __sigprocmask (how, set, oset) #ifdef SIGCANCEL sigset_t local_newmask; - /* The only thing we have to make sure here is that SIGCANCEL is not - blocked. */ - if (set != NULL && __builtin_expect (__sigismember (set, SIGCANCEL), 0)) + /* The only thing we have to make sure here is that SIGCANCEL and + SIGSETXID are not blocked. */ + if (set != NULL + && (__builtin_expect (__sigismember (set, SIGCANCEL), 0) +# ifdef SIGSETXID + || __builtin_expect (__sigismember (set, SIGSETXID), 0) +# endif + )) { local_newmask = *set; __sigdelset (&local_newmask, SIGCANCEL); +# ifdef SIGSETXID + __sigdelset (&local_newmask, SIGSETXID); +# endif set = &local_newmask; } #endif diff --git a/sysdeps/unix/sysv/linux/sigtimedwait.c b/sysdeps/unix/sysv/linux/sigtimedwait.c index 1705cb10bd..adeadc1587 100644 --- a/sysdeps/unix/sysv/linux/sigtimedwait.c +++ b/sysdeps/unix/sysv/linux/sigtimedwait.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1997,1998,2000,2002,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -32,12 +32,20 @@ do_sigtimedwait (const sigset_t *set, siginfo_t *info, { #ifdef SIGCANCEL sigset_t tmpset; - if (set != NULL && __sigismember (set, SIGCANCEL)) + if (set != NULL + && (__builtin_expect (__sigismember (set, SIGCANCEL), 0) +# ifdef SIGSETXID + || __builtin_expect (__sigismember (set, SIGSETXID), 0) +# endif + )) { /* Create a temporary mask without the bit for SIGCANCEL set. */ // We are not copying more than we have to. memcpy (&tmpset, set, _NSIG / 8); __sigdelset (&tmpset, SIGCANCEL); +# ifdef SIGSETXID + __sigdelset (&tmpset, SIGSETXID); +# endif set = &tmpset; } #endif diff --git a/sysdeps/unix/sysv/linux/sigwait.c b/sysdeps/unix/sysv/linux/sigwait.c index f755928493..7c865963cd 100644 --- a/sysdeps/unix/sysv/linux/sigwait.c +++ b/sysdeps/unix/sysv/linux/sigwait.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1997,1998,2000,2002,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,12 +36,20 @@ do_sigwait (const sigset_t *set, int *sig) #ifdef SIGCANCEL sigset_t tmpset; - if (set != NULL && __sigismember (set, SIGCANCEL)) + if (set != NULL + && (__builtin_expect (__sigismember (set, SIGCANCEL), 0) +# ifdef SIGSETXID + || __builtin_expect (__sigismember (set, SIGSETXID), 0) +# endif + )) { /* Create a temporary mask without the bit for SIGCANCEL set. */ // We are not copying more than we have to. memcpy (&tmpset, set, _NSIG / 8); __sigdelset (&tmpset, SIGCANCEL); +# ifdef SIGSETXID + __sigdelset (&tmpset, SIGSETXID); +# endif set = &tmpset; } #endif diff --git a/sysdeps/unix/sysv/linux/sigwaitinfo.c b/sysdeps/unix/sysv/linux/sigwaitinfo.c index a2dec820fc..a51a01f20b 100644 --- a/sysdeps/unix/sysv/linux/sigwaitinfo.c +++ b/sysdeps/unix/sysv/linux/sigwaitinfo.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1997,1998,2000,2002,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -33,12 +33,20 @@ do_sigwaitinfo (const sigset_t *set, siginfo_t *info) { #ifdef SIGCANCEL sigset_t tmpset; - if (set != NULL && __sigismember (set, SIGCANCEL)) + if (set != NULL + && (__builtin_expect (__sigismember (set, SIGCANCEL), 0) +# ifdef SIGSETXID + || __builtin_expect (__sigismember (set, SIGSETXID), 0) +# endif + )) { /* Create a temporary mask without the bit for SIGCANCEL set. */ // We are not copying more than we have to. memcpy (&tmpset, set, _NSIG / 8); __sigdelset (&tmpset, SIGCANCEL); +# ifdef SIGSETXID + __sigdelset (&tmpset, SIGSETXID); +# endif set = &tmpset; } #endif diff --git a/sysdeps/unix/sysv/linux/waitid.c b/sysdeps/unix/sysv/linux/waitid.c index 21226df37e..207c3d3453 100644 --- a/sysdeps/unix/sysv/linux/waitid.c +++ b/sysdeps/unix/sysv/linux/waitid.c @@ -47,10 +47,11 @@ do_waitid (idtype_t idtype, id_t id, siginfo_t *infop, int options) { static int waitid_works; if (waitid_works > 0) - return INLINE_SYSCALL (waitid, 4, idtype, id, infop, options); + return INLINE_SYSCALL (waitid, 5, idtype, id, infop, options, NULL); if (waitid_works == 0) { - int result = INLINE_SYSCALL (waitid, 4, idtype, id, infop, options); + int result = INLINE_SYSCALL (waitid, 5, + idtype, id, infop, options, NULL); if (result < 0 && errno == ENOSYS) waitid_works = -1; else