From: H.J. Lu Date: Sun, 1 Oct 2017 22:53:52 +0000 (-0700) Subject: Hide __readv and __writev [BZ #18822] X-Git-Tag: glibc-2.27~809 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d6daff12617290d4dfb499ed8425d33a48d844ba;p=thirdparty%2Fglibc.git Hide __readv and __writev [BZ #18822] Hide internal __readv and __writev functions to allow direct access within libc.so and libc.a without using GOT nor PLT. [BZ #18822] * include/sys/uio.h (__readv): Add libc_hidden_proto. (__writev): Likewise. * misc/readv.c (__readv): Add libc_hidden_def. * misc/writev.c (__writev): Likewise. * sysdeps/posix/readv.c (__readv): Likewise. * sysdeps/posix/writev.c (__writev): Likewise. * sysdeps/unix/sysv/linux/readv.c: Include . (__readv): Likewise. * sysdeps/unix/sysv/linux/writev.c: Include . (__writev): Likewise. --- diff --git a/ChangeLog b/ChangeLog index 3726fac199a..56b44eafc52 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2017-10-01 H.J. Lu + + [BZ #18822] + * include/sys/uio.h (__readv): Add libc_hidden_proto. + (__writev): Likewise. + * misc/readv.c (__readv): Add libc_hidden_def. + * misc/writev.c (__writev): Likewise. + * sysdeps/posix/readv.c (__readv): Likewise. + * sysdeps/posix/writev.c (__writev): Likewise. + * sysdeps/unix/sysv/linux/readv.c: Include . + (__readv): Likewise. + * sysdeps/unix/sysv/linux/writev.c: Include . + (__writev): Likewise. + 2017-10-01 H.J. Lu [BZ #18822] diff --git a/include/sys/uio.h b/include/sys/uio.h index 20860bfd825..204c4b906d7 100644 --- a/include/sys/uio.h +++ b/include/sys/uio.h @@ -5,8 +5,10 @@ /* Now define the internal interfaces. */ extern ssize_t __readv (int __fd, const struct iovec *__iovec, int __count); +libc_hidden_proto (__readv) extern ssize_t __writev (int __fd, const struct iovec *__iovec, int __count); +libc_hidden_proto (__writev) /* Used for p{read,write}{v64}v2 implementation. */ libc_hidden_proto (preadv) diff --git a/misc/readv.c b/misc/readv.c index 064f88523ca..9ad94d370a0 100644 --- a/misc/readv.c +++ b/misc/readv.c @@ -30,6 +30,7 @@ __readv (int fd, const struct iovec *vector, int count) __set_errno (ENOSYS); return -1; } +libc_hidden_def (__readv) weak_alias (__readv, readv) stub_warning (readv) diff --git a/misc/writev.c b/misc/writev.c index c8d222e04ff..8bd2eddf1a3 100644 --- a/misc/writev.c +++ b/misc/writev.c @@ -30,6 +30,7 @@ __writev (int fd, const struct iovec *vector, int count) __set_errno (ENOSYS); return -1; } +libc_hidden_def (__writev) weak_alias (__writev, writev) stub_warning (writev) diff --git a/sysdeps/posix/readv.c b/sysdeps/posix/readv.c index 5b0c124e89c..2875c76dafc 100644 --- a/sysdeps/posix/readv.c +++ b/sysdeps/posix/readv.c @@ -88,4 +88,5 @@ __readv (int fd, const struct iovec *vector, int count) return bytes_read; } +libc_hidden_def (__readv) weak_alias (__readv, readv) diff --git a/sysdeps/posix/writev.c b/sysdeps/posix/writev.c index 7ce1deb80fa..89d463033aa 100644 --- a/sysdeps/posix/writev.c +++ b/sysdeps/posix/writev.c @@ -88,4 +88,5 @@ __writev (int fd, const struct iovec *vector, int count) return bytes_written; } +libc_hidden_def (__writev) weak_alias (__writev, writev) diff --git a/sysdeps/unix/sysv/linux/readv.c b/sysdeps/unix/sysv/linux/readv.c index 142a0a92a7a..e4713008f1d 100644 --- a/sysdeps/unix/sysv/linux/readv.c +++ b/sysdeps/unix/sysv/linux/readv.c @@ -17,6 +17,7 @@ . */ #include +#include #include ssize_t @@ -24,4 +25,5 @@ __readv (int fd, const struct iovec *iov, int iovcnt) { return SYSCALL_CANCEL (readv, fd, iov, iovcnt); } +libc_hidden_def (__readv) weak_alias (__readv, readv) diff --git a/sysdeps/unix/sysv/linux/writev.c b/sysdeps/unix/sysv/linux/writev.c index 1b56cbb709f..2495fd938ae 100644 --- a/sysdeps/unix/sysv/linux/writev.c +++ b/sysdeps/unix/sysv/linux/writev.c @@ -17,6 +17,7 @@ . */ #include +#include #include ssize_t @@ -24,4 +25,5 @@ __writev (int fd, const struct iovec *iov, int iovcnt) { return SYSCALL_CANCEL (writev, fd, iov, iovcnt); } +libc_hidden_def (__writev) weak_alias (__writev, writev)