aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2017-04-26 18:34:47 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2017-05-02 14:57:40 -0300
commit827b82378366b026413c8e80a78ba880b9f94a18 (patch)
treeb1c604d790122f66fc43b5a9ff6b6fd59fa9fe02
parent24a10cfb3e46e8bf7257c099a2ed7c8814624f05 (diff)
downloadglibc-827b82378366b026413c8e80a78ba880b9f94a18.tar
glibc-827b82378366b026413c8e80a78ba880b9f94a18.tar.gz
glibc-827b82378366b026413c8e80a78ba880b9f94a18.tar.bz2
glibc-827b82378366b026413c8e80a78ba880b9f94a18.zip
posix: Fix internal p{read,write} plt usage
This patch adds internal alias for __pread, __pread64, and __pwrite following the already in place one for __pwrite64. This is not used in any implementation but on microblaze on preadv/pwritev fallback (since it does not define __ASSUME_PREADV). In fact it was signaled by commit c35db50ff5 which update the expected localptl.data for the architecture based on resulted value. This patch updates the plt for microblaze now that p{read,write}{64} are correctly routed to use internal alias. Checked on x86_64-linux-gnu and a build for all supported architectures (no all variants although). * include/unistd.h (__pread): Add libc_hidden_proto. (__pread64): Likewise. (__pwrite): Likewise. * sysdeps/unix/sysv/linux/microblaze/localplt.data [libc.so] (__pread64): Remove. * sysdeps/unix/sysv/linux/pread.c (__pread64): Add libc_hidden_weak. * sysdeps/unix/sysv/linux/pread64.c (__pread64): Likewise. * sysdeps/unix/sysv/linux/pwrite.c (__pwrite): Likewise.
-rw-r--r--ChangeLog11
-rw-r--r--include/unistd.h3
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/localplt.data1
-rw-r--r--sysdeps/unix/sysv/linux/pread.c1
-rw-r--r--sysdeps/unix/sysv/linux/pread64.c1
-rw-r--r--sysdeps/unix/sysv/linux/pwrite.c1
6 files changed, 17 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index fb1ffc9ed7..29a6592373 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2017-05-02 Adhemerval Zanella <adhemerval.zanella@linaro.org>
+
+ * include/unistd.h (__pread): Add libc_hidden_proto.
+ (__pread64): Likewise.
+ (__pwrite): Likewise.
+ * sysdeps/unix/sysv/linux/microblaze/localplt.data [libc.so]
+ (__pread64): Remove.
+ * sysdeps/unix/sysv/linux/pread.c (__pread64): Add libc_hidden_weak.
+ * sysdeps/unix/sysv/linux/pread64.c (__pread64): Likewise.
+ * sysdeps/unix/sysv/linux/pwrite.c (__pwrite): Likewise.
+
2017-05-02 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
* sysdeps/powerpc/fpu/libm-test-ulps: Update.
diff --git a/include/unistd.h b/include/unistd.h
index 16a88153a0..f36759b24d 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -33,14 +33,17 @@ extern __off_t __libc_lseek (int __fd, __off_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);
+libc_hidden_proto (__pread);
extern ssize_t __libc_pread (int __fd, void *__buf, size_t __nbytes,
__off_t __offset);
extern ssize_t __pread64 (int __fd, void *__buf, size_t __nbytes,
__off64_t __offset);
+libc_hidden_proto (__pread64);
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);
+libc_hidden_proto (__pwrite)
extern ssize_t __libc_pwrite (int __fd, const void *__buf, size_t __n,
__off_t __offset);
extern ssize_t __pwrite64 (int __fd, const void *__buf, size_t __n,
diff --git a/sysdeps/unix/sysv/linux/microblaze/localplt.data b/sysdeps/unix/sysv/linux/microblaze/localplt.data
index 418783229b..a61b94dfb8 100644
--- a/sysdeps/unix/sysv/linux/microblaze/localplt.data
+++ b/sysdeps/unix/sysv/linux/microblaze/localplt.data
@@ -1,5 +1,4 @@
libc.so: __errno_location
-libc.so: __pread64
libc.so: calloc
libc.so: free
libc.so: malloc
diff --git a/sysdeps/unix/sysv/linux/pread.c b/sysdeps/unix/sysv/linux/pread.c
index b4f1b87d64..96df99747a 100644
--- a/sysdeps/unix/sysv/linux/pread.c
+++ b/sysdeps/unix/sysv/linux/pread.c
@@ -32,5 +32,6 @@ __libc_pread (int fd, void *buf, size_t count, off_t offset)
}
strong_alias (__libc_pread, __pread)
+libc_hidden_weak (__pread)
weak_alias (__libc_pread, pread)
#endif
diff --git a/sysdeps/unix/sysv/linux/pread64.c b/sysdeps/unix/sysv/linux/pread64.c
index c7f9cb16ad..0c2c80e9e2 100644
--- a/sysdeps/unix/sysv/linux/pread64.c
+++ b/sysdeps/unix/sysv/linux/pread64.c
@@ -30,6 +30,7 @@ __libc_pread64 (int fd, void *buf, size_t count, off64_t offset)
}
weak_alias (__libc_pread64, __pread64)
+libc_hidden_weak (__pread64)
weak_alias (__libc_pread64, pread64)
#ifdef __OFF_T_MATCHES_OFF64_T
diff --git a/sysdeps/unix/sysv/linux/pwrite.c b/sysdeps/unix/sysv/linux/pwrite.c
index ef1bb01170..ef11d8f8a1 100644
--- a/sysdeps/unix/sysv/linux/pwrite.c
+++ b/sysdeps/unix/sysv/linux/pwrite.c
@@ -32,5 +32,6 @@ __libc_pwrite (int fd, const void *buf, size_t count, off_t offset)
}
strong_alias (__libc_pwrite, __pwrite)
+libc_hidden_weak (__pwrite)
weak_alias (__libc_pwrite, pwrite)
#endif