+2004-09-28 Ulrich Drepper <drepper@redhat.com>
+
+ * 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 <jakub@redhat.com>
+
+ * io/utime.h (utime): Allow second argument to be NULL.
+
+2004-09-28 Ulrich Drepper <drepper@redhat.com>
+
+ * 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 <aj@suse.de>
+
+ * 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 <drepper@redhat.com>
+
+ * 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 <roland@redhat.com>
+
+ * 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 <rth@redhat.com>
* sysdeps/alpha/alphaev6/memcpy.S: Mark .prologue.
# 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
-%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
%endif
%changelog
+* Wed Sep 29 2004 Jakub Jelinek <jakub@redhat.com> 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 <bits/pthreadtypes.h>
+
* Mon Sep 27 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-59
- update from CVS
- fix BZ #151, #362, #381, #407
*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
+2004-09-28 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/nb_NO: Make language field consistent in form with nn_NO.
+
+2004-09-27 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/cy_GB: Fix d_t_fmt ("a viz" -> "mis").
+ Reported by Alan Cox <alan@redhat.com>.
+
2004-08-07 Petter Reinholdtsen <pere@hungry.com>
* Makefile (test-input): Add tr_TR.UTF-8 sorting test. Test case
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
"<U0048><U0079><U0064><U0072><U0065><U0066>";/
"<U0054><U0061><U0063><U0068><U0077><U0065><U0064><U0064>";/
"<U0052><U0068><U0061><U0067><U0066><U0079><U0072>"
-d_t_fmt "<U0044><U0079><U0064><U0064><U0020><U0025><U0041><U0020><U0025><U0064><U0020><U0061><U0020><U0076><U0069><U007A><U0020><U0025><U0042><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
+d_t_fmt "<U0044><U0079><U0064><U0064><U0020><U0025><U0041><U0020><U0025><U0064><U0020><U006d><U0069><U0073><U0020><U0025><U0042><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0079>"
t_fmt "<U0025><U0054>"
am_pm "<U0041><U004D>";"<U0050><U004D>"
email "bug-glibc@gnu.org"
tel ""
fax ""
-language "Norwegian Bokm<U00E5>l"
+language "Norwegian, Bokm<U00E5>l"
territory "Norway"
revision "1.0"
date "2000-06-29"
#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)();
+2004-09-28 Ulrich Drepper <drepper@redhat.com>
+
+ * 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 <drepper@redhat.com>
* descr.h (struct pthread): Add stopped_start field.
-/* 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 <drepper@redhat.com>, 2002.
{
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;
}
-/* 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 <drepper@redhat.com>, 2002.
const struct sigaction *act;
struct sigaction *oact;
{
- if (sig == SIGCANCEL)
+ if (__builtin_expect (sig == SIGCANCEL || sig == SIGSETXID, 0))
{
__set_errno (EINVAL);
return -1;
{
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
{
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
{
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;
{
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
-/* 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 <drepper@redhat.com>, 2002.
/* 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. */
{
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
{
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
{
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
{
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
/* 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)
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);
{
/* 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;
-/* 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
#include <signal.h>
#include <sys/resource.h>
-/* These macros could also be defined int <stdlib.h>. */
+/* These macros could also be defined in <stdlib.h>. */
#if !defined _STDLIB_H || !defined __USE_XOPEN
/* This will define the `W*' macros for the flag
bits to `waitpid', `wait3', and `wait4'. */
# 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 /* <stdlib.h> not included. */
#ifdef __USE_BSD
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;
# 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 <sys/wait.h> not included. */
__BEGIN_NAMESPACE_STD
-# 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
include ../Makeconfig
+xtests := tst-getmyaddr
+
ifeq ($(have-thread-library),yes)
xtests += thrsvc
endif
__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;
+ }
}
{
struct ifaddrs *ifa;
- if (getifaddrs (&ifa) == 0)
+ if (getifaddrs (&ifa) != 0)
{
perror ("get_myaddress: getifaddrs");
exit (1);
{
struct ifaddrs *ifa;
- if (getifaddrs (&ifa) == 0)
+ if (getifaddrs (&ifa) != 0)
{
perror ("get_myaddress: getifaddrs");
exit (1);
{
struct ifaddrs *ifa;
- if (getifaddrs (&ifa) == 0)
+ if (getifaddrs (&ifa) != 0)
{
perror ("broadcast: getifaddrs");
return 0;
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,
*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)
{
*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";
--- /dev/null
+#include <stdio.h>
+#include <string.h>
+#include <arpa/inet.h>
+#include <netinet/in.h>
+#include <rpc/clnt.h>
+
+
+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"
-/* 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 <kukuk@vt.uni-paderborn.de>, 1998.
02111-1307 USA. */
#include <rpc/types.h>
+
+/* We play dirty tricks with aliases. */
+#define xdr_quad_t Xdr_quad_t
+#define xdr_u_quad_t Xdr_u_quad_t
#include <rpc/xdr.h>
+#undef xdr_quad_t
+#undef xdr_u_quad_t
+
/* XDR 64bit integers */
bool_t
return FALSE;
}
}
+strong_alias (xdr_int64_t, xdr_quad_t)
/* XDR 64bit unsigned integers */
bool_t
return FALSE;
}
}
+strong_alias (xdr_int64_t, xdr_u_quad_t)
/* XDR 32bit integers */
bool_t
/* 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
#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 <bits/waitflags.h> 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
-/* 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
#ifdef SIGCANCEL
__sigdelset (set, SIGCANCEL);
#endif
+ /* Likewise for the signal to implement setxid. */
+#ifdef SIGSETXID
+ __sigdelset (set, SIGSETXID);
+#endif
return 0;
}
/* 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,
}
#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)
}
#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)
}
#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)
{
}
#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)
{
#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)
{
}
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)
return GAIH_OKIFUNSPEC | -EAI_NONAME;
}
}
+
+ goto dupname;
}
}
{
void *si_addr; /* Faulting insn/memory ref. */
int _si_imm;
- int _si_pad0;
+ unsigned int _si_flags;
unsigned long int _si_isr;
} _sigfault;
#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
#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
-/* 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
{
#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
-/* 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
#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
-/* 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
{
#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
{
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