From patchwork Fri Sep 1 17:59:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 22532 Received: (qmail 87085 invoked by alias); 1 Sep 2017 18:01:00 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 87051 invoked by uid 89); 1 Sep 2017 18:00:59 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.2 required=5.0 tests=BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_SOFTFAIL autolearn=ham version=3.3.2 spammy=H*m:gmail X-HELO: mga02.intel.com X-ExtLoop1: 1 From: "H.J. Lu" To: libc-alpha@sourceware.org Subject: [PATCH 21/58] Hide __readv and __writev [BZ #18822] Date: Fri, 1 Sep 2017 10:59:52 -0700 Message-Id: <20170901180029.9527-22-hjl.tools@gmail.com> In-Reply-To: <20170901180029.9527-1-hjl.tools@gmail.com> References: <20170901180029.9527-1-hjl.tools@gmail.com> 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. --- include/sys/uio.h | 2 ++ misc/readv.c | 1 + misc/writev.c | 1 + sysdeps/posix/readv.c | 1 + sysdeps/posix/writev.c | 1 + sysdeps/unix/sysv/linux/readv.c | 2 ++ sysdeps/unix/sysv/linux/writev.c | 2 ++ 7 files changed, 10 insertions(+) diff --git a/include/sys/uio.h b/include/sys/uio.h index 20860bfd82..204c4b906d 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 064f88523c..9ad94d370a 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 c8d222e04f..8bd2eddf1a 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 5b0c124e89..2875c76daf 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 7ce1deb80f..89d463033a 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 142a0a92a7..e4713008f1 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 1b56cbb709..2495fd938a 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)