From e5e45b53371ed058ed385b1940e8b36419740750 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 10 Dec 2002 04:05:39 +0000 Subject: [PATCH] Update. 2002-12-09 Ulrich Drepper * sysdeps/unix/sysv/linux/syscalls.list: Add __libc_creat and __libc_select aliases. * sysdeps/unix/sysv/linux/sigwaitinfo.c: Define __libc_sigwaitinfo alias. * sysdeps/unix/sysv/linux/sigwait.c: Define __libc_sigwait alias. * sysdeps/unix/sysv/linux/sigsuspend.c: Define __libc_sigsuspend alias. * sysdeps/unix/sysv/linux/poll.c: Define __libc_poll alias. * sysdeps/unix/syscalls.list: Define __libc_select alias. * sysdeps/posix/waitid.c: Define __libc_waitid alias. * sysdeps/posix/sigpause.c: Define __libc_sigpause and __libc___xpg_sigpause aliases. * sysdeps/generic/pselect.c: Define __libc_pselect alias. * misc/error.c: Remove use of USE_IN_LIBIO. --- ChangeLog | 25 ++++++++++ FAQ.in | 2 +- INSTALL | 17 ++----- linuxthreads/ChangeLog | 8 ++++ linuxthreads/Versions | 8 ++++ linuxthreads/wrapsyscall.c | 68 ++++++++++++++++++++++++++- misc/error.c | 38 ++++----------- nptl/ChangeLog | 4 ++ nptl/Versions | 9 ++-- sysdeps/generic/pselect.c | 1 + sysdeps/posix/sigpause.c | 2 + sysdeps/posix/waitid.c | 1 + sysdeps/unix/syscalls.list | 2 +- sysdeps/unix/sysv/linux/poll.c | 1 + sysdeps/unix/sysv/linux/sigsuspend.c | 1 + sysdeps/unix/sysv/linux/sigwait.c | 1 + sysdeps/unix/sysv/linux/sigwaitinfo.c | 1 + sysdeps/unix/sysv/linux/syscalls.list | 4 +- 18 files changed, 143 insertions(+), 50 deletions(-) diff --git a/ChangeLog b/ChangeLog index f885e3b25c..72acea0718 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,28 @@ +2002-12-09 Ulrich Drepper + + * sysdeps/unix/sysv/linux/syscalls.list: Add __libc_creat and + __libc_select aliases. + + * sysdeps/unix/sysv/linux/sigwaitinfo.c: Define __libc_sigwaitinfo + alias. + + * sysdeps/unix/sysv/linux/sigwait.c: Define __libc_sigwait alias. + + * sysdeps/unix/sysv/linux/sigsuspend.c: Define __libc_sigsuspend alias. + + * sysdeps/unix/sysv/linux/poll.c: Define __libc_poll alias. + + * sysdeps/unix/syscalls.list: Define __libc_select alias. + + * sysdeps/posix/waitid.c: Define __libc_waitid alias. + + * sysdeps/posix/sigpause.c: Define __libc_sigpause and + __libc___xpg_sigpause aliases. + + * sysdeps/generic/pselect.c: Define __libc_pselect alias. + + * misc/error.c: Remove use of USE_IN_LIBIO. + 2002-12-08 Roland McGrath * elf/Makefile (tests): Uncomment tst-array[123]. diff --git a/FAQ.in b/FAQ.in index ba99f9cb20..51f13b37ec 100644 --- a/FAQ.in +++ b/FAQ.in @@ -87,7 +87,7 @@ understand all the features of ELF, including weak and versioned symbols. The static library can be compiled with less featureful tools, but lacks key features such as NSS. -For Linux or Hurd, you want binutils 2.10.1 or higher. These are the only +For Linux or Hurd, you want binutils 2.13 or higher. These are the only versions we've tested and found reliable. Other versions may work but we don't recommend them, especially not when C++ is involved. diff --git a/INSTALL b/INSTALL index 230c612740..e81af07f09 100644 --- a/INSTALL +++ b/INSTALL @@ -316,20 +316,11 @@ build the GNU C library: Check the FAQ for any special compiler issues on particular platforms. - * GNU `binutils' 2.10.1 or later + * GNU `binutils' 2.13 or later - You must use GNU `binutils' (as and ld) if you want to build a - shared library. Even if you don't want to build a shared library, - we recommend you use them anyway. No one has tested compilation - with non-GNU `binutils' in a long time. - - The quality of `binutils' releases has varied a bit recently. The - bugs are in obscure features, but glibc uses quite a few of those. - 2.10.1 and later releases are known to work. Versions after - 2.8.1.0.23 may or may not work. Older versions definitely don't. - - For PPC you might need some patches even on top of the last - `binutils' version. See the FAQ. + You must use GNU `binutils' (as and ld) to build the GNU C library. + No other assembler and linker has the necessary functionality in + the moment. * GNU `texinfo' 3.12f diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 10e075adfe..989fbb66ea 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,11 @@ +2002-12-09 Ulrich Drepper + + * wrapsyscall.c: Add wrappers for creat, poll, pselect, readv, select, + sigpause, __xpg_sigpause, sigsuspend, sigwaitinfo, waitid, and writev. + * Versions: Export creat, poll, pselect, readv, select, sigpause, + __xpg_sigpause, sigsuspend, sigwaitinfo, waitid, and writev from + libpthread in version GLIBC_2.3.2. + 2002-12-06 Ulrich Drepper * sysdeps/pthread/bits/libc-lock.h: Define __rtld_lock_* macros. diff --git a/linuxthreads/Versions b/linuxthreads/Versions index 79169c8b8e..13d008cd65 100644 --- a/linuxthreads/Versions +++ b/linuxthreads/Versions @@ -21,6 +21,10 @@ libc { __libc_internal_tsd_get; __libc_internal_tsd_set; __libc_internal_tsd_address; __libc_alloca_cutoff; __libc_dl_error_tsd; + + __libc_creat; __libc_poll; __libc_pselect; __libc_select; + __libc_sigpause; __libc_sigsuspend; __libc_sigwait; __libc_sigwaitinfo; + __libc_waitid; __libc___xpg_sigpause; } } @@ -151,6 +155,10 @@ libpthread { # Cancellation wrapper __nanosleep; } + GLIBC_2.3.2 { + creat; poll; pselect; readv; select; sigpause; sigsuspend; + sigwaitinfo; __xpg_sigpause; waitid; writev; + } GLIBC_PRIVATE { # Internal libc interface to libpthread __libc_internal_tsd_get; __libc_internal_tsd_set; diff --git a/linuxthreads/wrapsyscall.c b/linuxthreads/wrapsyscall.c index c5180355b2..a475c4392d 100644 --- a/linuxthreads/wrapsyscall.c +++ b/linuxthreads/wrapsyscall.c @@ -26,7 +26,10 @@ #include #include #include +#include #include +#include +#include #include #include @@ -39,7 +42,7 @@ const int __pthread_provide_wrappers = 0; #define CANCELABLE_SYSCALL(res_type, name, param_list, params) \ -res_type __libc_##name param_list; \ +extern res_type __libc_##name param_list; \ res_type \ __attribute__ ((weak)) \ name param_list \ @@ -77,6 +80,11 @@ CANCELABLE_SYSCALL (int, close, (int fd), (fd)) strong_alias (close, __close) +/* creat(2). */ +CANCELABLE_SYSCALL (int, creat, (const char *pathname, mode_t mode), + (pathname, mode)) + + /* fcntl(2). */ CANCELABLE_SYSCALL_VA (int, fcntl, (int fd, int cmd, ...), (fd, cmd, va_arg (ap, long int)), cmd) @@ -130,6 +138,12 @@ strong_alias (open64, __open64) CANCELABLE_SYSCALL (int, pause, (void), ()) +/* poll(2). */ +CANCELABLE_SYSCALL (int, poll, + (struct pollfd *ufds, nfds_t nfds, int timeout), + (ufds, nfds, timeout)) + + /* pread(3). */ CANCELABLE_SYSCALL (ssize_t, pread, (int fd, void *buf, size_t count, off_t offset), @@ -143,6 +157,14 @@ CANCELABLE_SYSCALL (ssize_t, pread64, (int fd, void *buf, size_t count, strong_alias (pread64, __pread64) +/* pselect(3). */ +CANCELABLE_SYSCALL (int, pselect, (int n, fd_set *readfds, fd_set *writefds, + fd_set *exceptfds, + const struct timespec *timeout, + const sigset_t *sigmask), + (n, readfds, writefds, exceptfds, timeout, sigmask)) + + /* pwrite(3). */ CANCELABLE_SYSCALL (ssize_t, pwrite, (int fd, const void *buf, size_t n, off_t offset), @@ -162,6 +184,38 @@ CANCELABLE_SYSCALL (ssize_t, read, (int fd, void *buf, size_t count), strong_alias (read, __read) +/* readv(2). */ +CANCELABLE_SYSCALL (ssize_t, readv, + (int fd, const struct iovec *vector, int count), + (fd, vector, count)) + + +/* select(2). */ +CANCELABLE_SYSCALL (int, select, (int n, fd_set *readfds, + fd_set *writefds, + fd_set *exceptfds, + struct timeval *timeout), + (n, readfds, writefds, exceptfds, timeout)) + + +/* sigpause(3). */ +#undef sigpause +CANCELABLE_SYSCALL (int, sigpause, (int sigmask), (sigmask)) + + +/* __xpg_sigpause(3). */ +CANCELABLE_SYSCALL (int, __xpg_sigpause, (int sigmask), (sigmask)) + + +/* sigsuspend(2). */ +CANCELABLE_SYSCALL (int, sigsuspend, (const sigset_t *mask), (mask)) + + +/* sigwaitinfo(3). */ +CANCELABLE_SYSCALL (int, sigwaitinfo, (const sigset_t *set, siginfo_t *info), + (set, info)) + + /* system(3). */ CANCELABLE_SYSCALL (int, system, (const char *line), (line)) @@ -175,6 +229,12 @@ CANCELABLE_SYSCALL (__pid_t, wait, (__WAIT_STATUS_DEFN stat_loc), (stat_loc)) strong_alias (wait, __wait) +/* waitid(3). */ +CANCELABLE_SYSCALL (int, waitid, + (idtype_t idtype, id_t id, siginfo_t *info, int options), + (idtype, id, info, options)) + + /* waitpid(2). */ CANCELABLE_SYSCALL (__pid_t, waitpid, (__pid_t pid, int *stat_loc, int options), @@ -187,6 +247,12 @@ CANCELABLE_SYSCALL (ssize_t, write, (int fd, const void *buf, size_t n), strong_alias (write, __write) +/* writev(2). */ +CANCELABLE_SYSCALL (ssize_t, writev, + (int fd, const struct iovec *vector, int count), + (fd, vector, count)) + + /* The following system calls are thread cancellation points specified in XNS. */ diff --git a/misc/error.c b/misc/error.c index 5463f17c42..17dda08814 100644 --- a/misc/error.c +++ b/misc/error.c @@ -87,12 +87,10 @@ extern void __error_at_line (int status, int errnum, const char *file_name, # define error __error # define error_at_line __error_at_line -# ifdef USE_IN_LIBIO -# include -# define fflush(s) INTUSE(_IO_fflush) (s) -# undef putc -# define putc(c, fp) INTUSE(_IO_putc) (c, fp) -# endif +# include +# define fflush(s) INTUSE(_IO_fflush) (s) +# undef putc +# define putc(c, fp) INTUSE(_IO_putc) (c, fp) #else /* not _LIBC */ @@ -157,7 +155,7 @@ print_errno_message (int errnum) s = _("Unknown system error"); #endif -#if _LIBC && USE_IN_LIBIO +#if _LIBC if (_IO_fwide (stderr, 0) > 0) { __fwprintf (stderr, L": %s", s); @@ -173,7 +171,7 @@ static void error_tail (int status, int errnum, const char *message, va_list args) { # if HAVE_VPRINTF || _LIBC -# if _LIBC && USE_IN_LIBIO +# if _LIBC if (_IO_fwide (stderr, 0) > 0) { # define ALLOCA_LIMIT 2000 @@ -224,7 +222,7 @@ error_tail (int status, int errnum, const char *message, va_list args) ++error_message_count; if (errnum) print_errno_message (errnum); -# if _LIBC && USE_IN_LIBIO +# if _LIBC if (_IO_fwide (stderr, 0) > 0) putwc (L'\n', stderr); else @@ -259,17 +257,13 @@ error (status, errnum, message, va_alist) fflush (stdout); #ifdef _LIBC -# ifdef USE_IN_LIBIO _IO_flockfile (stderr); -# else - __flockfile (stderr); -# endif #endif if (error_print_progname) (*error_print_progname) (); else { -#if _LIBC && USE_IN_LIBIO +#if _LIBC if (_IO_fwide (stderr, 0) > 0) __fwprintf (stderr, L"%s: ", program_name); else @@ -293,11 +287,7 @@ error (status, errnum, message, va_alist) #endif #ifdef _LIBC -# ifdef USE_IN_LIBIO _IO_funlockfile (stderr); -# else - __funlockfile (stderr); -# endif #endif } @@ -340,17 +330,13 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist) fflush (stdout); #ifdef _LIBC -# ifdef USE_IN_LIBIO _IO_flockfile (stderr); -# else - __flockfile (stderr); -# endif #endif if (error_print_progname) (*error_print_progname) (); else { -#if _LIBC && USE_IN_LIBIO +#if _LIBC if (_IO_fwide (stderr, 0) > 0) __fwprintf (stderr, L"%s: ", program_name); else @@ -360,7 +346,7 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist) if (file_name != NULL) { -#if _LIBC && USE_IN_LIBIO +#if _LIBC if (_IO_fwide (stderr, 0) > 0) __fwprintf (stderr, L"%s:%d: ", file_name, line_number); else @@ -384,11 +370,7 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist) #endif #ifdef _LIBC -# ifdef USE_IN_LIBIO _IO_funlockfile (stderr); -# else - __funlockfile (stderr); -# endif #endif } diff --git a/nptl/ChangeLog b/nptl/ChangeLog index a1152ea1a5..66fc21ca1a 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,7 @@ +2002-12-09 Ulrich Drepper + + * Versions: Remove duplicated sigwait entry. + 2002-12-08 Ulrich Drepper * pthreadP.h: Enable pthread_cleanup_{push,pop} optimizations only diff --git a/nptl/Versions b/nptl/Versions index e85db80a3a..309a1018eb 100644 --- a/nptl/Versions +++ b/nptl/Versions @@ -189,13 +189,14 @@ libpthread { __nanosleep; } - # XXX Adjust number for final release. GLIBC_2.3.2 { + # The version for these interfaces is fixed. + creat; poll; pselect; readv; select; sigpause; sigsuspend; + sigwaitinfo; waitid; writev; __xpg_sigpause; + # Proposed API extensions. + # XXX Adjust number for final release. pthread_tryjoin_np; pthread_timedjoin_np; - - creat; poll; pselect; readv; select; sigpause; sigsuspend; sigwait; - sigwaitinfo; waitid; writev; __xpg_sigpause; } GLIBC_PRIVATE { diff --git a/sysdeps/generic/pselect.c b/sysdeps/generic/pselect.c index 031540e81d..6aa60e8e72 100644 --- a/sysdeps/generic/pselect.c +++ b/sysdeps/generic/pselect.c @@ -63,3 +63,4 @@ __pselect (nfds, readfds, writefds, exceptfds, timeout, sigmask) return retval; } weak_alias (__pselect, pselect) +strong_alias (__pselect, __libc_pselect) diff --git a/sysdeps/posix/sigpause.c b/sysdeps/posix/sigpause.c index 71818740ed..f764cba0fc 100644 --- a/sysdeps/posix/sigpause.c +++ b/sysdeps/posix/sigpause.c @@ -54,6 +54,7 @@ __default_sigpause (int mask) } #undef sigpause weak_alias (__default_sigpause, sigpause) +strong_alias (__default_sigpause, __libc_sigpause) /* We have to provide a default version of this function since the @@ -64,3 +65,4 @@ __xpg_sigpause (int sig) { return __sigpause (sig, 1); } +strong_alias (__xpg_sigpause, __libc___xpg_sigpause) diff --git a/sysdeps/posix/waitid.c b/sysdeps/posix/waitid.c index 8687436309..ef2ab2ed54 100644 --- a/sysdeps/posix/waitid.c +++ b/sysdeps/posix/waitid.c @@ -119,3 +119,4 @@ __waitid (idtype, id, infop, options) return 0; } weak_alias (__waitid, waitid) +strong_alias (__waitid, __libc_waitid) diff --git a/sysdeps/unix/syscalls.list b/sysdeps/unix/syscalls.list index edcd4a749e..a7a875450b 100644 --- a/sysdeps/unix/syscalls.list +++ b/sysdeps/unix/syscalls.list @@ -35,7 +35,7 @@ readv - readv i:ipi __readv readv reboot - reboot i:i reboot rename - rename i:ss rename rmdir - rmdir i:s __rmdir rmdir -select - select i:iPPPP __select select +select - select i:iPPPP __select __libc_select select setdomain - setdomainname i:si setdomainname setegid - setegid i:i __setegid setegid seteuid - seteuid i:i __seteuid seteuid diff --git a/sysdeps/unix/sysv/linux/poll.c b/sysdeps/unix/sysv/linux/poll.c index 8ddb244f2a..296893d4ca 100644 --- a/sysdeps/unix/sysv/linux/poll.c +++ b/sysdeps/unix/sysv/linux/poll.c @@ -65,6 +65,7 @@ __poll (fds, nfds, timeout) } libc_hidden_def (__poll) weak_alias (__poll, poll) +strong_alias (__poll, __libc_poll) /* Get the emulation code. */ # define __poll(fds, nfds, timeout) \ diff --git a/sysdeps/unix/sysv/linux/sigsuspend.c b/sysdeps/unix/sysv/linux/sigsuspend.c index 493dfcbf80..443c855d6c 100644 --- a/sysdeps/unix/sysv/linux/sigsuspend.c +++ b/sysdeps/unix/sysv/linux/sigsuspend.c @@ -66,3 +66,4 @@ __sigsuspend (set) } libc_hidden_def (__sigsuspend) weak_alias (__sigsuspend, sigsuspend) +strong_alias (__sigsuspend, __libc_sigsuspend) diff --git a/sysdeps/unix/sysv/linux/sigwait.c b/sysdeps/unix/sysv/linux/sigwait.c index 121e5e0557..78e58524d5 100644 --- a/sysdeps/unix/sysv/linux/sigwait.c +++ b/sysdeps/unix/sysv/linux/sigwait.c @@ -69,3 +69,4 @@ weak_alias (__sigwait, sigwait) #else # include #endif +strong_alias (__sigwait, __libc_sigwait) diff --git a/sysdeps/unix/sysv/linux/sigwaitinfo.c b/sysdeps/unix/sysv/linux/sigwaitinfo.c index b1569bc67f..d1e7a8da28 100644 --- a/sysdeps/unix/sysv/linux/sigwaitinfo.c +++ b/sysdeps/unix/sysv/linux/sigwaitinfo.c @@ -46,3 +46,4 @@ weak_alias (__sigwaitinfo, sigwaitinfo) #else # include #endif +strong_alias (__sigwaitinfo, __libc_sigwaitinfo) diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 2cb922e8cc..ce0f58bb0a 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -4,7 +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 +creat - creat i:si __libc_creat creat create_module EXTRA create_module 3 create_module delete_module EXTRA delete_module 3 delete_module fdatasync - fdatasync i:i fdatasync @@ -52,7 +52,7 @@ sched_setaffinity - sched_setaffinity i:iip sched_setaffinity sched_setp - sched_setparam i:ip __sched_setparam sched_setparam sched_sets - sched_setscheduler i:iip __sched_setscheduler sched_setscheduler sched_yield - sched_yield i: __sched_yield sched_yield -select - _newselect i:iPPPP __select select +select - _newselect i:iPPPP __select __libc_select select sendfile - sendfile i:iipi sendfile sendfile64 - sendfile64 i:iipi sendfile64 setfsgid EXTRA setfsgid i:i setfsgid -- 2.43.5