From 778c59c850879b2ffc7a396cecfa5a5ad68a40e6 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sun, 19 Dec 1999 05:29:07 +0000 Subject: [PATCH] Update. 1999-12-18 Ulrich Drepper * include/unistd.h: Declare __libc_open64, __libc_lseek64, __libc_pread, __libc_pread64, __libc_pwrite, and __libc_pwrite64. * io/Versions: Export __libc_open64 and __libc_lseek64. * posix/Versions: Export __libc_pread, __libc_pread64, __libc_pwrite, and __libc_pwrite64. * sysdeps/generic/open64.c: Define __libc_* variant for cancelation wrapper. * sysdeps/generic/pread.c: Likewise. * sysdeps/generic/pread64.c: Likewise. * sysdeps/generic/pwrite.c: Likewise. * sysdeps/generic/pwrite64.c: Likewise. * sysdeps/posix/open64.c: Likewise. * sysdeps/posix/pread.c: Likewise. * sysdeps/posix/pread64.c: Likewise. * sysdeps/posix/pwrite.c: Likewise. * sysdeps/posix/pwrite64.c: Likewise. * sysdeps/unix/sysv/linux/llseek.c: Likewise. * sysdeps/unix/sysv/linux/pread.c: Likewise. * sysdeps/unix/sysv/linux/pread64.c: Likewise. * sysdeps/unix/sysv/linux/pwrite.c: Likewise. * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. * sysdeps/unix/sysv/linux/i386/pread.c: Likewise. * sysdeps/unix/sysv/linux/i386/pread64.c: Likewise. * sysdeps/unix/sysv/linux/i386/pwrite.c: Likewise. * sysdeps/unix/sysv/linux/i386/pwrite64.c: Likewise. * sysdeps/posix/open64.c: Help gcc generating better code. * sysdeps/generic/libc-start.c (check_one_fd): Use __libc_open instead of __open. --- ChangeLog | 33 +++++++++++++++++++++ config.make.in | 1 + include/unistd.h | 10 +++++++ io/Versions | 4 +++ linuxthreads/ChangeLog | 5 ++++ linuxthreads/Versions | 5 ++++ linuxthreads/wrapsyscall.c | 39 ++++++++++++++++++++++++- posix/Versions | 4 +++ sysdeps/generic/libc-start.c | 3 +- sysdeps/generic/open64.c | 7 +++-- sysdeps/generic/pread.c | 7 +++-- sysdeps/generic/pread64.c | 7 +++-- sysdeps/generic/pwrite.c | 7 +++-- sysdeps/generic/pwrite64.c | 7 +++-- sysdeps/posix/open64.c | 15 ++++------ sysdeps/posix/pread.c | 17 ++++++----- sysdeps/posix/pread64.c | 17 ++++++----- sysdeps/posix/pwrite.c | 17 ++++++----- sysdeps/posix/pwrite64.c | 17 ++++++----- sysdeps/unix/sysv/linux/i386/pread.c | 7 +++-- sysdeps/unix/sysv/linux/i386/pread64.c | 7 +++-- sysdeps/unix/sysv/linux/i386/pwrite.c | 7 +++-- sysdeps/unix/sysv/linux/i386/pwrite64.c | 7 +++-- sysdeps/unix/sysv/linux/llseek.c | 1 + sysdeps/unix/sysv/linux/pread.c | 7 +++-- sysdeps/unix/sysv/linux/pread64.c | 7 +++-- sysdeps/unix/sysv/linux/pwrite.c | 7 +++-- sysdeps/unix/sysv/linux/pwrite64.c | 7 +++-- 28 files changed, 197 insertions(+), 82 deletions(-) diff --git a/ChangeLog b/ChangeLog index c5f08aaa19..0ebe9e7d07 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,36 @@ +1999-12-18 Ulrich Drepper + + * include/unistd.h: Declare __libc_open64, __libc_lseek64, + __libc_pread, __libc_pread64, __libc_pwrite, and __libc_pwrite64. + * io/Versions: Export __libc_open64 and __libc_lseek64. + * posix/Versions: Export __libc_pread, __libc_pread64, __libc_pwrite, + and __libc_pwrite64. + * sysdeps/generic/open64.c: Define __libc_* variant for cancelation + wrapper. + * sysdeps/generic/pread.c: Likewise. + * sysdeps/generic/pread64.c: Likewise. + * sysdeps/generic/pwrite.c: Likewise. + * sysdeps/generic/pwrite64.c: Likewise. + * sysdeps/posix/open64.c: Likewise. + * sysdeps/posix/pread.c: Likewise. + * sysdeps/posix/pread64.c: Likewise. + * sysdeps/posix/pwrite.c: Likewise. + * sysdeps/posix/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/llseek.c: Likewise. + * sysdeps/unix/sysv/linux/pread.c: Likewise. + * sysdeps/unix/sysv/linux/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/pread.c: Likewise. + * sysdeps/unix/sysv/linux/i386/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/i386/pwrite64.c: Likewise. + + * sysdeps/posix/open64.c: Help gcc generating better code. + + * sysdeps/generic/libc-start.c (check_one_fd): Use __libc_open + instead of __open. + 1999-12-11 H.J. Lu * sysdeps/generic/libc-start.c (check_one_fd): Use __libc_fcntl diff --git a/config.make.in b/config.make.in index 06585d2259..727ae3c430 100644 --- a/config.make.in +++ b/config.make.in @@ -9,6 +9,7 @@ release = @RELEASE@ install_root = prefix = @prefix@ exec_prefix = @exec_prefix@ +datadir = @datadir@ libdir = @libdir@ slibdir = @libc_cv_slibdir@ sysconfdir = @libc_cv_sysconfdir@ diff --git a/include/unistd.h b/include/unistd.h index 78f0b9c4d2..642f1d29ce 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -4,11 +4,21 @@ /* Now define the internal interfaces. */ extern int __access (__const char *__name, int __type); extern int __euidaccess (__const char *__name, int __type); +extern int __libc_open64 (const char *file, int oflag, ...); extern __off64_t __lseek64 (int __fd, __off64_t __offset, int __whence); +extern __off64_t __libc_lseek64 (int __fd, __off64_t __offset, int __whence); extern ssize_t __pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset); +extern ssize_t __libc_pread (int __fd, void *__buf, size_t __nbytes, + __off_t __offset); +extern ssize_t __libc_pread64 (int __fd, void *__buf, size_t __nbytes, + __off64_t __offset); extern ssize_t __pwrite (int __fd, __const void *__buf, size_t __n, __off_t __offset); +extern ssize_t __libc_pwrite (int __fd, __const void *__buf, size_t __n, + __off_t __offset); +extern ssize_t __libc_pwrite64 (int __fd, __const void *__buf, size_t __n, + __off64_t __offset); extern int __pipe (int __pipedes[2]); extern unsigned int __sleep (unsigned int __seconds); extern int __chown (__const char *__file, diff --git a/io/Versions b/io/Versions index ab489fd25e..3cfe41511a 100644 --- a/io/Versions +++ b/io/Versions @@ -87,4 +87,8 @@ libc { # l* lockf64; } + GLIBC_2.1.3 { + # For the cancelation wrappers. + __libc_open64; __libc_lseek64; + } } diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 9bdf83e951..867e5e34cc 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,5 +1,10 @@ 1999-12-18 Ulrich Drepper + * Versions: Export pread, __pread64, pread64, pwrite, __pwrite64, + pwrite64, lseek64, open64, and __open64. + * wrapsyscall.c: Define pread, __pread64, pread64, pwrite, __pwrite64, + pwrite64, lseek64, open64, and __open64. + * manager.c (pthread_allocate_stack): Correct computation of new_thread_bottom. Correct handling of stack size and when the rlimit method to guard for stack growth is used. diff --git a/linuxthreads/Versions b/linuxthreads/Versions index ab4dce50da..0b21abb141 100644 --- a/linuxthreads/Versions +++ b/linuxthreads/Versions @@ -118,6 +118,11 @@ libpthread { __pthread_kill_other_threads_np; __vfork; } + GLIBC_2.1.3 { + # For the cancelation wrappers. + pread; __pread64; pread64; pwrite; __pwrite64; pwrite64; lseek64; + open64; __open64; + } GLIBC_2.2 { __res_state; } diff --git a/linuxthreads/wrapsyscall.c b/linuxthreads/wrapsyscall.c index d55e6cca61..a8ab857d8a 100644 --- a/linuxthreads/wrapsyscall.c +++ b/linuxthreads/wrapsyscall.c @@ -1,5 +1,5 @@ /* Wrapper arpund system calls to provide cancelation points. - Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -89,6 +89,11 @@ CANCELABLE_SYSCALL (off_t, lseek, (int fd, off_t offset, int whence), strong_alias (lseek, __lseek) +/* lseek64(2). */ +CANCELABLE_SYSCALL (off64_t, lseek64, (int fd, off64_t offset, int whence), + (fd, offset, whence)) + + /* msync(2). */ CANCELABLE_SYSCALL (int, msync, (__ptr_t addr, size_t length, int flags), (addr, length, flags)) @@ -106,10 +111,42 @@ CANCELABLE_SYSCALL_VA (int, open, (const char *pathname, int flags, ...), strong_alias (open, __open) +/* open64(3). */ +CANCELABLE_SYSCALL_VA (int, open64, (const char *pathname, int flags, ...), + (pathname, flags, va_arg (ap, mode_t)), flags) +strong_alias (open64, __open64) + + /* pause(2). */ CANCELABLE_SYSCALL (int, pause, (void), ()) +/* pread(3). */ +CANCELABLE_SYSCALL (ssize_t, pread, (int fd, void *buf, size_t count, + off_t offset), + (fd, buf, count, offset)) + + +/* pread64(3). */ +CANCELABLE_SYSCALL (ssize_t, pread64, (int fd, void *buf, size_t count, + off64_t offset), + (fd, buf, count, offset)) +strong_alias (pread64, __pread64) + + +/* pwrite(3). */ +CANCELABLE_SYSCALL (ssize_t, pwrite, (int fd, const void *buf, size_t n, + off_t offset), + (fd, buf, n, offset)) + + +/* pwrite64(3). */ +CANCELABLE_SYSCALL (ssize_t, pwrite64, (int fd, const void *buf, size_t n, + off64_t offset), + (fd, buf, n, offset)) +strong_alias (pwrite64, __pwrite64) + + /* read(2). */ CANCELABLE_SYSCALL (ssize_t, read, (int fd, void *buf, size_t count), (fd, buf, count)) diff --git a/posix/Versions b/posix/Versions index 195576937a..da7c479ffb 100644 --- a/posix/Versions +++ b/posix/Versions @@ -88,4 +88,8 @@ libc { # functions used in other libraries __libc_fork; __vfork; } + GLIBC_2.1.3 { + # For the cancelation wrappers. + __libc_pread; __libc_pread64; __libc_pwrite; __libc_pwrite64; + } } diff --git a/sysdeps/generic/libc-start.c b/sysdeps/generic/libc-start.c index 58e7804f26..ea3cbe6241 100644 --- a/sysdeps/generic/libc-start.c +++ b/sysdeps/generic/libc-start.c @@ -26,6 +26,7 @@ extern void __libc_init_first (int argc, char **argv, char **envp); extern int __libc_fcntl (int fd, int cmd, ...); +extern int __libc_open (const char *pathname, int flags, ...); extern int _dl_starting_up; weak_extern (_dl_starting_up) @@ -102,7 +103,7 @@ check_one_fd (int fd, int mode) /* Something is wrong with this descriptor, it's probably not opened. Open /dev/null so that the SUID program we are about to start does not accidently use this descriptor. */ - int nullfd = __open (_PATH_DEVNULL, mode); + int nullfd = __libc_open (_PATH_DEVNULL, mode); if (nullfd == -1) /* We cannot even given an error message here since it would run into the same problems. */ diff --git a/sysdeps/generic/open64.c b/sysdeps/generic/open64.c index 16e19730f4..c90b00c7cd 100644 --- a/sysdeps/generic/open64.c +++ b/sysdeps/generic/open64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995, 1996, 1997, 1999 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 @@ -24,7 +24,7 @@ /* Open FILE with access OFLAG. If OFLAG includes O_CREAT, a third argument is the file protection. */ int -__open64 (file, oflag) +__libc_open64 (file, oflag) const char *file; int oflag; { @@ -47,7 +47,8 @@ __open64 (file, oflag) __set_errno (ENOSYS); return -1; } -weak_alias (__open64, open64) +strong_alias (__libc_open64, __open64) +weak_alias (__libc_open64, open64) stub_warning (open64) #include diff --git a/sysdeps/generic/pread.c b/sysdeps/generic/pread.c index 82548d0272..07fa7dee97 100644 --- a/sysdeps/generic/pread.c +++ b/sysdeps/generic/pread.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995, 1996, 1997, 1999 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 @@ -22,7 +22,7 @@ /* Read NBYTES into BUF from FD at the given position OFFSET without changing the file pointer. Return the number read or -1. */ ssize_t -__pread (int fd, void *buf, size_t nbytes, off_t offset) +__libc_pread (int fd, void *buf, size_t nbytes, off_t offset) { if (nbytes == 0) return 0; @@ -40,6 +40,7 @@ __pread (int fd, void *buf, size_t nbytes, off_t offset) __set_errno (ENOSYS); return -1; } -weak_alias (__pread, pread) +strong_alias (__libc_pread, __pread) +weak_alias (__libc_pread, pread) stub_warning (pread) #include diff --git a/sysdeps/generic/pread64.c b/sysdeps/generic/pread64.c index e1596038ac..64ed9e2013 100644 --- a/sysdeps/generic/pread64.c +++ b/sysdeps/generic/pread64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995, 1996, 1997, 1999 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 @@ -22,7 +22,7 @@ /* Read NBYTES into BUF from FD at the given position OFFSET without changing the file pointer. Return the number read or -1. */ ssize_t -__pread64 (int fd, void *buf, size_t nbytes, off64_t offset) +__libc_pread64 (int fd, void *buf, size_t nbytes, off64_t offset) { if (nbytes == 0) return 0; @@ -40,6 +40,7 @@ __pread64 (int fd, void *buf, size_t nbytes, off64_t offset) __set_errno (ENOSYS); return -1; } -weak_alias (__pread64, pread64) +strong_alias (__libc_pread64, __pread64) +weak_alias (__libc_pread64, pread64) stub_warning (pread64) #include diff --git a/sysdeps/generic/pwrite.c b/sysdeps/generic/pwrite.c index 8eec560c9d..3e0f7fd8a0 100644 --- a/sysdeps/generic/pwrite.c +++ b/sysdeps/generic/pwrite.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995, 1996, 1997, 1999 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 @@ -22,7 +22,7 @@ /* Write NBYTES of BUF to FD at given position OFFSET without changing the file position. Return the number written, or -1. */ ssize_t -__pwrite (int fd, const void *buf, size_t nbytes, off_t offset) +__libc_pwrite (int fd, const void *buf, size_t nbytes, off_t offset) { if (nbytes == 0) return 0; @@ -40,6 +40,7 @@ __pwrite (int fd, const void *buf, size_t nbytes, off_t offset) __set_errno (ENOSYS); return -1; } -weak_alias (__pwrite, pwrite) +strong_alias (__libc_pwrite, __pwrite) +weak_alias (__libc_pwrite, pwrite) stub_warning (pwrite) #include diff --git a/sysdeps/generic/pwrite64.c b/sysdeps/generic/pwrite64.c index d84b63576a..4b080d00c2 100644 --- a/sysdeps/generic/pwrite64.c +++ b/sysdeps/generic/pwrite64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995, 1996, 1997, 1999 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 @@ -22,7 +22,7 @@ /* Write NBYTES of BUF to FD at given position OFFSET without changing the file position. Return the number written, or -1. */ ssize_t -__pwrite64 (int fd, const void *buf, size_t nbytes, off64_t offset) +__libc_pwrite64 (int fd, const void *buf, size_t nbytes, off64_t offset) { if (nbytes == 0) return 0; @@ -40,6 +40,7 @@ __pwrite64 (int fd, const void *buf, size_t nbytes, off64_t offset) __set_errno (ENOSYS); return -1; } -weak_alias (__pwrite64, pwrite64) +strong_alias (__libc_pwrite64, __pwrite64) +weak_alias (__libc_pwrite64, pwrite64) stub_warning (pwrite64) #include diff --git a/sysdeps/posix/open64.c b/sysdeps/posix/open64.c index e409891980..fba30a6ff7 100644 --- a/sysdeps/posix/open64.c +++ b/sysdeps/posix/open64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995, 1996, 1997, 1999 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 @@ -22,11 +22,9 @@ /* Open FILE with access OFLAG. If OFLAG includes O_CREAT, a third argument is the file protection. */ int -__open64 (file, oflag) - const char *file; - int oflag; +__libc_open64 (const char *file, int oflag, ...) { - int mode; + int mode = 0; if (oflag & O_CREAT) { @@ -35,9 +33,8 @@ __open64 (file, oflag) mode = va_arg (arg, int); va_end (arg); } - else - mode = 0; - return __open (file, oflag | O_LARGEFILE, mode); + return __libc_open (file, oflag | O_LARGEFILE, mode); } -weak_alias (__open64, open64) +strong_alias (__libc_open64, __open64) +weak_alias (__libc_open64, open64) diff --git a/sysdeps/posix/pread.c b/sysdeps/posix/pread.c index 5ad5acbd2a..7ecc99e0f7 100644 --- a/sysdeps/posix/pread.c +++ b/sysdeps/posix/pread.c @@ -1,6 +1,6 @@ /* Read block from given position in file without changing file pointer. POSIX version. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -23,28 +23,28 @@ #include ssize_t -__pread (int fd, void *buf, size_t nbyte, off_t offset) +__libc_pread (int fd, void *buf, size_t nbyte, off_t offset) { /* Since we must not change the file pointer preserve the value so that we can restore it later. */ int save_errno; ssize_t result; - off_t old_offset = __lseek (fd, 0, SEEK_CUR); + off_t old_offset = __libc_lseek (fd, 0, SEEK_CUR); if (old_offset == (off_t) -1) return -1; /* Set to wanted position. */ - if (__lseek (fd, offset, SEEK_SET) == (off_t) -1) + if (__libc_lseek (fd, offset, SEEK_SET) == (off_t) -1) return -1; /* Write out the data. */ - result = __read (fd, buf, nbyte); + result = __libc_read (fd, buf, nbyte); /* Now we have to restore the position. If this fails we have to return this as an error. But if the writing also failed we return this error. */ save_errno = errno; - if (__lseek (fd, old_offset, SEEK_SET) == (off_t) -1) + if (__libc_lseek (fd, old_offset, SEEK_SET) == (off_t) -1) { if (result == -1) __set_errno (save_errno); @@ -55,6 +55,7 @@ __pread (int fd, void *buf, size_t nbyte, off_t offset) return result; } -#ifndef __pread -weak_alias (__pread, pread) +#ifndef __libc_pread +strong_alias (__libc_pread, __pread) +weak_alias (__libc_pread, pread) #endif diff --git a/sysdeps/posix/pread64.c b/sysdeps/posix/pread64.c index 16fb3df142..ad850509a9 100644 --- a/sysdeps/posix/pread64.c +++ b/sysdeps/posix/pread64.c @@ -1,6 +1,6 @@ /* Read block from given position in file without changing file pointer. POSIX version. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -23,28 +23,28 @@ #include ssize_t -__pread64 (int fd, void *buf, size_t nbyte, off64_t offset) +__libc_pread64 (int fd, void *buf, size_t nbyte, off64_t offset) { /* Since we must not change the file pointer preserve the value so that we can restore it later. */ int save_errno; ssize_t result; - off64_t old_offset = __lseek64 (fd, 0, SEEK_CUR); + off64_t old_offset = __libc_lseek64 (fd, 0, SEEK_CUR); if (old_offset == (off64_t) -1) return -1; /* Set to wanted position. */ - if (__lseek64 (fd, offset, SEEK_SET) == (off64_t) -1) + if (__libc_lseek64 (fd, offset, SEEK_SET) == (off64_t) -1) return -1; /* Write out the data. */ - result = __read (fd, buf, nbyte); + result = __libc_read (fd, buf, nbyte); /* Now we have to restore the position. If this fails we have to return this as an error. But if the writing also failed we return this error. */ save_errno = errno; - if (__lseek64 (fd, old_offset, SEEK_SET) == (off64_t) -1) + if (__libc_lseek64 (fd, old_offset, SEEK_SET) == (off64_t) -1) { if (result == -1) __set_errno (save_errno); @@ -55,6 +55,7 @@ __pread64 (int fd, void *buf, size_t nbyte, off64_t offset) return result; } -#ifndef __pread64 -weak_alias (__pread64, pread64) +#ifndef __libc_pread64 +strong_alias (__libc_pread64, __pread64) +weak_alias (__libc_pread64, pread64) #endif diff --git a/sysdeps/posix/pwrite.c b/sysdeps/posix/pwrite.c index 6558eb5c9d..35028e21c5 100644 --- a/sysdeps/posix/pwrite.c +++ b/sysdeps/posix/pwrite.c @@ -1,6 +1,6 @@ /* Write block to given position in file without changing file pointer. POSIX version. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -23,28 +23,28 @@ #include ssize_t -__pwrite (int fd, const void *buf, size_t nbyte, off_t offset) +__libc_pwrite (int fd, const void *buf, size_t nbyte, off_t offset) { /* Since we must not change the file pointer preserve the value so that we can restore it later. */ int save_errno; ssize_t result; - off_t old_offset = __lseek (fd, 0, SEEK_CUR); + off_t old_offset = __libc_lseek (fd, 0, SEEK_CUR); if (old_offset == (off_t) -1) return -1; /* Set to wanted position. */ - if (__lseek (fd, offset, SEEK_SET) == (off_t) -1) + if (__libc_lseek (fd, offset, SEEK_SET) == (off_t) -1) return -1; /* Write out the data. */ - result = __write (fd, buf, nbyte); + result = __libc_write (fd, buf, nbyte); /* Now we have to restore the position. If this fails we have to return this as an error. But if the writing also failed we return this error. */ save_errno = errno; - if (__lseek (fd, old_offset, SEEK_SET) == (off_t) -1) + if (__libc_lseek (fd, old_offset, SEEK_SET) == (off_t) -1) { if (result == -1) __set_errno (save_errno); @@ -55,6 +55,7 @@ __pwrite (int fd, const void *buf, size_t nbyte, off_t offset) return result; } -#ifndef __pwrite -weak_alias (__pwrite, pwrite) +#ifndef __libc_pwrite +strong_alias (__libc_pwrite, __pwrite) +weak_alias (__libc_pwrite, pwrite) #endif diff --git a/sysdeps/posix/pwrite64.c b/sysdeps/posix/pwrite64.c index 89ec261b76..6cd5decdba 100644 --- a/sysdeps/posix/pwrite64.c +++ b/sysdeps/posix/pwrite64.c @@ -1,6 +1,6 @@ /* Write block to given position in file without changing file pointer. POSIX version. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -23,28 +23,28 @@ #include ssize_t -__pwrite64 (int fd, const void *buf, size_t nbyte, off64_t offset) +__libc_pwrite64 (int fd, const void *buf, size_t nbyte, off64_t offset) { /* Since we must not change the file pointer preserve the value so that we can restore it later. */ int save_errno; ssize_t result; - off64_t old_offset = __lseek64 (fd, 0, SEEK_CUR); + off64_t old_offset = __libc_lseek64 (fd, 0, SEEK_CUR); if (old_offset == (off64_t) -1) return -1; /* Set to wanted position. */ - if (__lseek64 (fd, offset, SEEK_SET) == (off64_t) -1) + if (__libc_lseek64 (fd, offset, SEEK_SET) == (off64_t) -1) return -1; /* Write out the data. */ - result = __write (fd, buf, nbyte); + result = __libc_write (fd, buf, nbyte); /* Now we have to restore the position. If this fails we have to return this as an error. But if the writing also failed we return this error. */ save_errno = errno; - if (__lseek64 (fd, old_offset, SEEK_SET) == (off64_t) -1) + if (__libc_lseek64 (fd, old_offset, SEEK_SET) == (off64_t) -1) { if (result == -1) __set_errno (save_errno); @@ -54,6 +54,7 @@ __pwrite64 (int fd, const void *buf, size_t nbyte, off64_t offset) return result; } -#ifndef __pwrite64 -weak_alias (__pwrite64, pwrite64) +#ifndef __libc_pwrite64 +strong_alias (__libc_pwrite64, __pwrite64) +weak_alias (__libc_pwrite64, pwrite64) #endif diff --git a/sysdeps/unix/sysv/linux/i386/pread.c b/sysdeps/unix/sysv/linux/i386/pread.c index 5745648306..2932e57987 100644 --- a/sysdeps/unix/sysv/linux/i386/pread.c +++ b/sysdeps/unix/sysv/linux/i386/pread.c @@ -34,7 +34,7 @@ static ssize_t __emulate_pread (int fd, void *buf, size_t count, ssize_t -__pread (fd, buf, count, offset) +__libc_pread (fd, buf, count, offset) int fd; void *buf; size_t count; @@ -53,9 +53,10 @@ __pread (fd, buf, count, offset) return result; } -weak_alias (__pread, pread) +strong_alias (__libc_pread, __pread) +weak_alias (__libc_pread, pread) -# define __pread(fd, buf, count, offset) \ +# define __libc_pread(fd, buf, count, offset) \ static internal_function __emulate_pread (fd, buf, count, offset) #endif diff --git a/sysdeps/unix/sysv/linux/i386/pread64.c b/sysdeps/unix/sysv/linux/i386/pread64.c index aa0c54d385..737ff25e1f 100644 --- a/sysdeps/unix/sysv/linux/i386/pread64.c +++ b/sysdeps/unix/sysv/linux/i386/pread64.c @@ -34,7 +34,7 @@ static ssize_t __emulate_pread64 (int fd, void *buf, size_t count, ssize_t -__pread64 (fd, buf, count, offset) +__libc_pread64 (fd, buf, count, offset) int fd; void *buf; size_t count; @@ -55,9 +55,10 @@ __pread64 (fd, buf, count, offset) return result; } -weak_alias (__pread64, pread64) +strong_alias (__libc_pread64, __pread64) +weak_alias (__libc_pread64, pread64) -# define __pread64(fd, buf, count, offset) \ +# define __libc_pread64(fd, buf, count, offset) \ static internal_function __emulate_pread64 (fd, buf, count, offset) #endif diff --git a/sysdeps/unix/sysv/linux/i386/pwrite.c b/sysdeps/unix/sysv/linux/i386/pwrite.c index 90eee5b4e1..114144c4a0 100644 --- a/sysdeps/unix/sysv/linux/i386/pwrite.c +++ b/sysdeps/unix/sysv/linux/i386/pwrite.c @@ -34,7 +34,7 @@ static ssize_t __emulate_pwrite (int fd, const void *buf, size_t count, ssize_t -__pwrite (fd, buf, count, offset) +__libc_pwrite (fd, buf, count, offset) int fd; const void *buf; size_t count; @@ -53,9 +53,10 @@ __pwrite (fd, buf, count, offset) return result; } -weak_alias (__pwrite, pwrite) +strong_alias (__libc_pwrite, __pwrite) +weak_alias (__libc_pwrite, pwrite) -# define __pwrite(fd, buf, count, offset) \ +# define __libc_pwrite(fd, buf, count, offset) \ static internal_function __emulate_pwrite (fd, buf, count, offset) #endif diff --git a/sysdeps/unix/sysv/linux/i386/pwrite64.c b/sysdeps/unix/sysv/linux/i386/pwrite64.c index 500cd7cef3..9dc4afb1f8 100644 --- a/sysdeps/unix/sysv/linux/i386/pwrite64.c +++ b/sysdeps/unix/sysv/linux/i386/pwrite64.c @@ -34,7 +34,7 @@ static ssize_t __emulate_pwrite64 (int fd, const void *buf, size_t count, ssize_t -__pwrite64 (fd, buf, count, offset) +__libc_pwrite64 (fd, buf, count, offset) int fd; const void *buf; size_t count; @@ -55,9 +55,10 @@ __pwrite64 (fd, buf, count, offset) return result; } -weak_alias (__pwrite64, pwrite64) +strong_alias (__libc_pwrite64, __pwrite64) +weak_alias (__libc_pwrite64, pwrite64) -# define __pwrite64(fd, buf, count, offset) \ +# define __libc_pwrite64(fd, buf, count, offset) \ static internal_function __emulate_pwrite64 (fd, buf, count, offset) #endif diff --git a/sysdeps/unix/sysv/linux/llseek.c b/sysdeps/unix/sysv/linux/llseek.c index a266a79b2a..67b34353f3 100644 --- a/sysdeps/unix/sysv/linux/llseek.c +++ b/sysdeps/unix/sysv/linux/llseek.c @@ -37,5 +37,6 @@ __llseek (int fd, loff_t offset, int whence) &result, whence) ?: result); } weak_alias (__llseek, llseek) +strong_alias (__llseek, __libc_lseek64) strong_alias (__llseek, __lseek64) weak_alias (__llseek, lseek64) diff --git a/sysdeps/unix/sysv/linux/pread.c b/sysdeps/unix/sysv/linux/pread.c index cae3d62a5d..86c6dd157f 100644 --- a/sysdeps/unix/sysv/linux/pread.c +++ b/sysdeps/unix/sysv/linux/pread.c @@ -37,7 +37,7 @@ static ssize_t __emulate_pread (int fd, void *buf, size_t count, ssize_t -__pread (fd, buf, count, offset) +__libc_pread (fd, buf, count, offset) int fd; void *buf; size_t count; @@ -56,9 +56,10 @@ __pread (fd, buf, count, offset) return result; } -weak_alias (__pread, pread) +strong_alias (__libc_pread, pread) +weak_alias (__libc_pread, pread) -# define __pread(fd, buf, count, offset) \ +# define __libc_pread(fd, buf, count, offset) \ static internal_function __emulate_pread (fd, buf, count, offset) #endif diff --git a/sysdeps/unix/sysv/linux/pread64.c b/sysdeps/unix/sysv/linux/pread64.c index fc4f7f24a0..ec93e45682 100644 --- a/sysdeps/unix/sysv/linux/pread64.c +++ b/sysdeps/unix/sysv/linux/pread64.c @@ -37,7 +37,7 @@ static ssize_t __emulate_pread64 (int fd, void *buf, size_t count, ssize_t -__pread64 (fd, buf, count, offset) +__libc_pread64 (fd, buf, count, offset) int fd; void *buf; size_t count; @@ -57,9 +57,10 @@ __pread64 (fd, buf, count, offset) return result; } -weak_alias (__pread64, pread64) +strong_alias (__libc_pread64, __pread64) +weak_alias (__libc_pread64, pread64) -# define __pread64(fd, buf, count, offset) \ +# define __libc_pread64(fd, buf, count, offset) \ static internal_function __emulate_pread64 (fd, buf, count, offset) #endif diff --git a/sysdeps/unix/sysv/linux/pwrite.c b/sysdeps/unix/sysv/linux/pwrite.c index fd4ec8896d..98576789b7 100644 --- a/sysdeps/unix/sysv/linux/pwrite.c +++ b/sysdeps/unix/sysv/linux/pwrite.c @@ -37,7 +37,7 @@ static ssize_t __emulate_pwrite (int fd, const void *buf, size_t count, ssize_t -__pwrite (fd, buf, count, offset) +__libc_pwrite (fd, buf, count, offset) int fd; const void *buf; size_t count; @@ -56,9 +56,10 @@ __pwrite (fd, buf, count, offset) return result; } -weak_alias (__pwrite, pwrite) +strong_alias (__libc_pwrite, __pwrite) +weak_alias (__libc_pwrite, pwrite) -# define __pwrite(fd, buf, count, offset) \ +# define __libc_pwrite(fd, buf, count, offset) \ static internal_function __emulate_pwrite (fd, buf, count, offset) #endif diff --git a/sysdeps/unix/sysv/linux/pwrite64.c b/sysdeps/unix/sysv/linux/pwrite64.c index cc92de1d76..236cbd7d49 100644 --- a/sysdeps/unix/sysv/linux/pwrite64.c +++ b/sysdeps/unix/sysv/linux/pwrite64.c @@ -37,7 +37,7 @@ static ssize_t __emulate_pwrite64 (int fd, const void *buf, size_t count, ssize_t -__pwrite64 (fd, buf, count, offset) +__libc_pwrite64 (fd, buf, count, offset) int fd; const void *buf; size_t count; @@ -57,9 +57,10 @@ __pwrite64 (fd, buf, count, offset) return result; } -weak_alias (__pwrite64, pwrite64) +strong_alias (__libc_pwrite64, __pwrite64) +weak_alias (__libc_pwrite64, pwrite64) -# define __pwrite64(fd, buf, count, offset) \ +# define __libc_pwrite64(fd, buf, count, offset) \ static internal_function __emulate_pwrite64 (fd, buf, count, offset) #endif -- 2.43.5