From 6166815d696407069c33c1f0cad76fb1847e4bc7 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 9 Oct 2002 09:42:48 +0000 Subject: Update. 2002-10-09 Ulrich Drepper * Versions.def (libc): Add GLIBC_2.3.1. (libpthread): Add GLIBC_2.3.1. * include/signal.h: Add libc_hidden_proto for __sigwait, __sigwaitinfo, and __sigtimedwait. * signal/Versions: Add __sigtimedwait, __sigwait, and __sigwaitinfo. * sysdeps/unix/sysv/linux/sigtimedwait.c (__sigtimedwait): Add libc_hidden_def. * sysdeps/unix/sysv/linux/sigwait.c (__sigwait): Likewise. * sysdeps/unix/sysv/linux/sigwaitinfo.c (__sigwaitinfo): Likewise. * include/sys/msg.h: Declare __libc_msgrcv and __libc_msgsnd. * sysdeps/unix/sysv/linux/msgrcv.c (__msgrcv): Rename to __libc_msgrcv and make old name an alias. * sysdeps/unix/sysv/linux/msgsnd.c (__msgsnd): Rename to __libc_msgsnd and make old name an alias. * sysvipc/Versions (libc) [GLIBC_PRIVATE]: Add __libc_msgrcv and __libc_msgsnd. * include/sys/uio.h: Declare __libc_readv and __libc_writev. * misc/Versions (libc) [GLIBC_PRIVATE]: Add __libc_readv and __libc_writev. * sysdeps/generic/readv.c (__readv): Rename to __libc_readv and make old name an alias. * sysdeps/posix/readv.c: Likewise * sysdeps/unix/sysv/aix/readv.c: Likewise. * sysdeps/unix/sysv/linux/readv.c: Likewise. * sysdeps/generic/writev.c (__writev): Rename to __libc_writev and make old name an alias. * sysdeps/posix/writev.c: Likewise * sysdeps/unix/sysv/aix/writev.c: Likewise. * sysdeps/unix/sysv/linux/writev.c: Likewise. * include/sys/wait.h: Declare __waitid. * posix/Versions (libc) [GLIBC_PRIVATE]: Add __waitid. * sysdeps/generic/waitid.c (waitid): Rename to __waitid and make old name an alias. * sysdeps/posix/waitid.c: Likewise. * sysdeps/unix/sysv/aix/waitid.c: Likewise. * sysdeps/unix/sysv/linux/syscalls.list: Add creat syscall. 2002-10-07 Jakub Jelinek * include/alloca.h (__libc_use_alloca, __libc_alloca_cutoff): New prototypes. (__MAX_ALLOCA_CUTOFF): Define. Include allocalim.h. * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r, _nss_dns_gethostbyaddr_r): Use alloca or malloc to allocate host_buffer depending on __libc_use_alloca. * resolv/nss_dns/dns-network.c (_nss_dns_getnetbyname_r, _nss_dns_getnetbyaddr_r): Use alloca or malloc to allocate net_buffer depending on __libc_use_alloca. * resolv/res_query.c (res_nquery): Use alloca or malloc to allocate buf depending on __libc_use_alloca. * resolv/gethnamaddr.c (gethostbyname2, gethostbyaddr): Likewise. * stdio-common/vfprintf.c (vfprintf): Use __libc_use_alloca instead of hardcoded constants. Pass proper size argument to alloca and compute end for wide char version. * stdio-common/printf_fp.c (__printf_fp): Use __libc_use_alloca instead of hardcoded constants. * string/strcoll.c (strcoll): Likewise. * string/strxfrm.c (strxfrm): Likewise. * sysdeps/posix/readv.c (__readv): Likewise. * sysdeps/posix/writev.c (__writev): Likewise. * sysdeps/generic/allocalim.h: New file. --- sysdeps/generic/allocalim.h | 4 ++++ sysdeps/generic/readv.c | 7 ++++--- sysdeps/generic/waitid.c | 5 +++-- sysdeps/generic/writev.c | 7 ++++--- sysdeps/posix/readv.c | 11 ++++++----- sysdeps/posix/waitid.c | 5 +++-- sysdeps/posix/writev.c | 11 ++++++----- sysdeps/unix/sysv/aix/readv.c | 7 ++++--- sysdeps/unix/sysv/aix/waitid.c | 5 +++-- sysdeps/unix/sysv/aix/writev.c | 7 ++++--- sysdeps/unix/sysv/linux/msgrcv.c | 5 +++-- sysdeps/unix/sysv/linux/msgsnd.c | 5 +++-- sysdeps/unix/sysv/linux/readv.c | 7 ++++--- sysdeps/unix/sysv/linux/sigtimedwait.c | 3 ++- sysdeps/unix/sysv/linux/sigwait.c | 1 + sysdeps/unix/sysv/linux/sigwaitinfo.c | 3 ++- sysdeps/unix/sysv/linux/syscalls.list | 2 +- sysdeps/unix/sysv/linux/writev.c | 7 ++++--- 18 files changed, 61 insertions(+), 41 deletions(-) create mode 100644 sysdeps/generic/allocalim.h (limited to 'sysdeps') diff --git a/sysdeps/generic/allocalim.h b/sysdeps/generic/allocalim.h new file mode 100644 index 0000000000..2491129a7d --- /dev/null +++ b/sysdeps/generic/allocalim.h @@ -0,0 +1,4 @@ +extern inline int __libc_use_alloca (size_t size) +{ + return size <= __MAX_ALLOCA_CUTOFF; +} diff --git a/sysdeps/generic/readv.c b/sysdeps/generic/readv.c index 82f86965de..b33444c036 100644 --- a/sysdeps/generic/readv.c +++ b/sysdeps/generic/readv.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1991,1995,1996,1997,1998,2002 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 @@ -26,7 +26,7 @@ Operates just like `read' (see ) except that data are put in VECTOR instead of a contiguous buffer. */ ssize_t -__readv (fd, vector, count) +__libc_readv (fd, vector, count) int fd; const struct iovec *vector; int count; @@ -34,7 +34,8 @@ __readv (fd, vector, count) __set_errno (ENOSYS); return -1; } -weak_alias (__readv, readv) +strong_alias (__libc_readv, __readv) +weak_alias (__libc_readv, readv) stub_warning (readv) #include diff --git a/sysdeps/generic/waitid.c b/sysdeps/generic/waitid.c index 9e2a3da9ad..a9de1a19a5 100644 --- a/sysdeps/generic/waitid.c +++ b/sysdeps/generic/waitid.c @@ -1,5 +1,5 @@ /* Stub version of waitid. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -23,7 +23,7 @@ #include int -waitid (idtype, id, infop, options) +__waitid (idtype, id, infop, options) idtype_t idtype; id_t id; siginfo_t *infop; @@ -32,3 +32,4 @@ waitid (idtype, id, infop, options) __set_errno (ENOSYS); return -1; } +weak_alias (__waitid, waitid) diff --git a/sysdeps/generic/writev.c b/sysdeps/generic/writev.c index 3bfc0be877..d424c72143 100644 --- a/sysdeps/generic/writev.c +++ b/sysdeps/generic/writev.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1991,1995,1996,1997,1998,2002 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 @@ -26,7 +26,7 @@ Operates just like `write' (see ) except that the data are taken from VECTOR instead of a contiguous buffer. */ ssize_t -__writev (fd, vector, count) +__libc_writev (fd, vector, count) int fd; const struct iovec *vector; int count; @@ -34,7 +34,8 @@ __writev (fd, vector, count) __set_errno (ENOSYS); return -1; } -weak_alias (__writev, writev) +strong_alias (__libc_writev, __writev) +weak_alias (__libc_writev, writev) stub_warning (writev) #include diff --git a/sysdeps/posix/readv.c b/sysdeps/posix/readv.c index bb6634529d..bde57b44fa 100644 --- a/sysdeps/posix/readv.c +++ b/sysdeps/posix/readv.c @@ -30,7 +30,7 @@ Operates just like `read' (see ) except that data are put in VECTOR instead of a contiguous buffer. */ ssize_t -__readv (int fd, const struct iovec *vector, int count) +__libc_readv (int fd, const struct iovec *vector, int count) { char *buffer; char *buffer_start; @@ -55,8 +55,8 @@ __readv (int fd, const struct iovec *vector, int count) /* Allocate a temporary buffer to hold the data. We should normally use alloca since it's faster and does not require synchronization with other threads. But we cannot if the amount of memory - required is too large. Use 512k as the limit. */ - if (bytes < 512 * 1024) + required is too large. */ + if (__libc_use_alloca (bytes)) buffer = (char *) __alloca (bytes); else { @@ -94,6 +94,7 @@ __readv (int fd, const struct iovec *vector, int count) return bytes_read; } -#ifndef __readv -weak_alias (__readv, readv) +#ifndef __libc_readv +strong_alias (__libc_readv, __readv) +weak_alias (__libc_readv, readv) #endif diff --git a/sysdeps/posix/waitid.c b/sysdeps/posix/waitid.c index dcb93b6769..8687436309 100644 --- a/sysdeps/posix/waitid.c +++ b/sysdeps/posix/waitid.c @@ -1,5 +1,5 @@ /* Pseudo implementation of waitid. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Zack Weinberg , 1997. @@ -28,7 +28,7 @@ #include int -waitid (idtype, id, infop, options) +__waitid (idtype, id, infop, options) idtype_t idtype; id_t id; siginfo_t *infop; @@ -118,3 +118,4 @@ waitid (idtype, id, infop, options) return 0; } +weak_alias (__waitid, waitid) diff --git a/sysdeps/posix/writev.c b/sysdeps/posix/writev.c index 7afdce3289..ae5ef1efb4 100644 --- a/sysdeps/posix/writev.c +++ b/sysdeps/posix/writev.c @@ -30,7 +30,7 @@ Operates just like `write' (see ) except that the data are taken from VECTOR instead of a contiguous buffer. */ ssize_t -__writev (int fd, const struct iovec *vector, int count) +__libc_writev (int fd, const struct iovec *vector, int count) { char *buffer; register char *bp; @@ -55,8 +55,8 @@ __writev (int fd, const struct iovec *vector, int count) /* Allocate a temporary buffer to hold the data. We should normally use alloca since it's faster and does not require synchronization with other threads. But we cannot if the amount of memory - required is too large. Use 512k as the limit. */ - if (bytes < 512 * 1024) + required is too large. */ + if (__libc_use_alloca (bytes)) buffer = (char *) __alloca (bytes); else { @@ -90,6 +90,7 @@ __writev (int fd, const struct iovec *vector, int count) return bytes_written; } -#ifndef __writev -weak_alias (__writev, writev) +#ifndef __libc_writev +strong_alias (__libc_writev, __writev) +weak_alias (__libc_writev, writev) #endif diff --git a/sysdeps/unix/sysv/aix/readv.c b/sysdeps/unix/sysv/aix/readv.c index 8c12690993..eddca0fc87 100644 --- a/sysdeps/unix/sysv/aix/readv.c +++ b/sysdeps/unix/sysv/aix/readv.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995-1998, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995-1998, 2000, 2002 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 @@ -27,11 +27,12 @@ extern ssize_t kreadv (int fd, const struct iovec *iovp, size_t iovcnt, Operates just like `read' (see ) except that data are put in VECTOR instead of a contiguous buffer. */ ssize_t -__readv (fd, vector, count) +__libc_readv (fd, vector, count) int fd; const struct iovec *vector; int count; { return kreadv (fd, vector, count, 0); } -strong_alias (__readv, readv) +strong_alias (__libc_readv, __readv) +weak_alias (__libc_readv, readv) diff --git a/sysdeps/unix/sysv/aix/waitid.c b/sysdeps/unix/sysv/aix/waitid.c index 36a012ef02..1d637df76e 100644 --- a/sysdeps/unix/sysv/aix/waitid.c +++ b/sysdeps/unix/sysv/aix/waitid.c @@ -1,5 +1,5 @@ /* Pseudo implementation of waitid. - Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Zack Weinberg , 1997. @@ -31,7 +31,7 @@ extern pid_t kwaitpid (int *stat_loc, pid_t pid, int options, struct rusage *ru_loc, siginfo_t *infop); int -waitid (idtype, id, infop, options) +__waitid (idtype, id, infop, options) idtype_t idtype; id_t id; siginfo_t *infop; @@ -80,3 +80,4 @@ waitid (idtype, id, infop, options) return 0; } +weak_alias (__waitid, waitid) diff --git a/sysdeps/unix/sysv/aix/writev.c b/sysdeps/unix/sysv/aix/writev.c index 0d5a3335af..d0e5741590 100644 --- a/sysdeps/unix/sysv/aix/writev.c +++ b/sysdeps/unix/sysv/aix/writev.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995-1998, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995-1998, 2000, 2002 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 @@ -27,11 +27,12 @@ extern ssize_t kwritev (int fd, const struct iovec *iovp, size_t iovcnt, Operates just like `read' (see ) except that data are put in VECTOR instead of a contiguous buffer. */ ssize_t -__writev (fd, vector, count) +__libc_writev (fd, vector, count) int fd; const struct iovec *vector; int count; { return kwritev (fd, vector, count, 0); } -strong_alias (__writev, writev) +strong_alias (__libc_writev, __writev) +weak_alias (__libc_writev, writev) diff --git a/sysdeps/unix/sysv/linux/msgrcv.c b/sysdeps/unix/sysv/linux/msgrcv.c index ab437920c9..fdc13ff0fa 100644 --- a/sysdeps/unix/sysv/linux/msgrcv.c +++ b/sysdeps/unix/sysv/linux/msgrcv.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1997, 1998, 2000, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , August 1995. @@ -36,7 +36,7 @@ struct ipc_kludge int -msgrcv (msqid, msgp, msgsz, msgtyp, msgflg) +__libc_msgrcv (msqid, msgp, msgsz, msgtyp, msgflg) int msqid; void *msgp; size_t msgsz; @@ -52,3 +52,4 @@ msgrcv (msqid, msgp, msgsz, msgtyp, msgflg) return INLINE_SYSCALL (ipc, 5, IPCOP_msgrcv, msqid, msgsz, msgflg, __ptrvalue (&tmp)); } +weak_alias (__libc_msgrcv, msgrcv) diff --git a/sysdeps/unix/sysv/linux/msgsnd.c b/sysdeps/unix/sysv/linux/msgsnd.c index f4df5da425..7beba6b198 100644 --- a/sysdeps/unix/sysv/linux/msgsnd.c +++ b/sysdeps/unix/sysv/linux/msgsnd.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1995,1997,1998,1999,2000,2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , August 1995. @@ -27,7 +27,7 @@ #include int -msgsnd (msqid, msgp, msgsz, msgflg) +__libc_msgsnd (msqid, msgp, msgsz, msgflg) int msqid; const void *msgp; size_t msgsz; @@ -36,3 +36,4 @@ msgsnd (msqid, msgp, msgsz, msgflg) return INLINE_SYSCALL (ipc, 5, IPCOP_msgsnd, msqid, msgsz, msgflg, (void *) CHECK_N (msgp, msgsz)); } +weak_alias (__libc_msgsnd, msgsnd) diff --git a/sysdeps/unix/sysv/linux/readv.c b/sysdeps/unix/sysv/linux/readv.c index 601afc09e5..eeba46a09d 100644 --- a/sysdeps/unix/sysv/linux/readv.c +++ b/sysdeps/unix/sysv/linux/readv.c @@ -40,7 +40,7 @@ static ssize_t __atomic_readv_replacement (int, __const struct iovec *, /* We should deal with kernel which have a smaller UIO_FASTIOV as well as a very big count. */ ssize_t -__readv (fd, vector, count) +__libc_readv (fd, vector, count) int fd; const struct iovec *vector; int count; @@ -54,7 +54,8 @@ __readv (fd, vector, count) return __atomic_readv_replacement (fd, vector, count); } -weak_alias (__readv, readv) +strong_alias (__libc_readv, __readv) +weak_alias (__libc_readv, readv) -#define __readv static internal_function __atomic_readv_replacement +#define __libc_readv static internal_function __atomic_readv_replacement #include diff --git a/sysdeps/unix/sysv/linux/sigtimedwait.c b/sysdeps/unix/sysv/linux/sigtimedwait.c index e96117b548..c374287ea6 100644 --- a/sysdeps/unix/sysv/linux/sigtimedwait.c +++ b/sysdeps/unix/sysv/linux/sigtimedwait.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2000, 2002 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 @@ -40,6 +40,7 @@ __sigtimedwait (set, info, timeout) return INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set), CHECK_1 (info), timeout, _NSIG / 8); } +libc_hidden_def (__sigtimedwait) weak_alias (__sigtimedwait, sigtimedwait) #else # include diff --git a/sysdeps/unix/sysv/linux/sigwait.c b/sysdeps/unix/sysv/linux/sigwait.c index 39cc3e9750..6eb4cf9532 100644 --- a/sysdeps/unix/sysv/linux/sigwait.c +++ b/sysdeps/unix/sysv/linux/sigwait.c @@ -53,6 +53,7 @@ __sigwait (set, sig) return ret; } +libc_hidden_def (__sigwait) weak_alias (__sigwait, sigwait) #else # include diff --git a/sysdeps/unix/sysv/linux/sigwaitinfo.c b/sysdeps/unix/sysv/linux/sigwaitinfo.c index b59ee54fc1..b1569bc67f 100644 --- a/sysdeps/unix/sysv/linux/sigwaitinfo.c +++ b/sysdeps/unix/sysv/linux/sigwaitinfo.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2000, 2002 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 @@ -41,6 +41,7 @@ __sigwaitinfo (set, info) return INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set), CHECK_1 (info), NULL, _NSIG / 8); } +libc_hidden_def (__sigwaitinfo) weak_alias (__sigwaitinfo, sigwaitinfo) #else # include diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 5ab190b97c..5fcc9b5d9a 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -4,6 +4,7 @@ adjtimex adjtime adjtimex i:p __adjtimex adjtimex ntp_adjtime __adjtimex_interna bdflush EXTRA bdflush i:ii bdflush capget EXTRA capget i:pp capget capset EXTRA capset i:pp capset +creat - creat i:si creat create_module EXTRA create_module 3 create_module delete_module EXTRA delete_module 3 delete_module fdatasync - fdatasync i:i fdatasync @@ -79,4 +80,3 @@ flistxattr EXTRA flistxattr i:isi flistxattr removexattr EXTRA removexattr i:ss removexattr lremovexattr EXTRA lremovexattr i:ss lremovexattr fremovexattr EXTRA fremovexattr i:is fremovexattr - diff --git a/sysdeps/unix/sysv/linux/writev.c b/sysdeps/unix/sysv/linux/writev.c index 729fd9aca5..76cc920dae 100644 --- a/sysdeps/unix/sysv/linux/writev.c +++ b/sysdeps/unix/sysv/linux/writev.c @@ -40,7 +40,7 @@ static ssize_t __atomic_writev_replacement (int, const struct iovec *, /* We should deal with kernel which have a smaller UIO_FASTIOV as well as a very big count. */ ssize_t -__writev (fd, vector, count) +__libc_writev (fd, vector, count) int fd; const struct iovec *vector; int count; @@ -54,7 +54,8 @@ __writev (fd, vector, count) return __atomic_writev_replacement (fd, vector, count); } -weak_alias (__writev, writev) +strong_alias (__libc_writev, __writev) +weak_alias (__libc_writev, writev) -#define __writev static internal_function __atomic_writev_replacement +#define __libc_writev static internal_function __atomic_writev_replacement #include -- cgit v1.2.3