diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2016-07-12 09:21:36 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2016-07-12 09:21:56 -0700 |
commit | f531f93056b34800383c5154280e7ba5112563c7 (patch) | |
tree | 23cd6ebe83824bea3829476456b8c112221666aa | |
parent | 3bbee82a56b38fc4ee28ecb59721ea1d42494642 (diff) | |
download | glibc-f531f93056b34800383c5154280e7ba5112563c7.tar glibc-f531f93056b34800383c5154280e7ba5112563c7.tar.gz glibc-f531f93056b34800383c5154280e7ba5112563c7.tar.bz2 glibc-f531f93056b34800383c5154280e7ba5112563c7.zip |
x86-64: Add p{read,write}[v]64 to syscalls.list [BZ #20348]
64-bit off_t in pread64, preadv, pwrite64 and pwritev syscalls is passed
in one 64-bit register for both x32 and x86-64. Since the inline
asm statement only passes long, which is 32-bit for x32, in registers,
64-bit off_t is truncated to 32-bit on x32. Since __ASSUME_PREADV and
__ASSUME_PWRITEV are defined unconditionally, these syscalls can be
implemented in syscalls.list to pass 64-bit off_t in one 64-bit register.
Tested on x86-64 and x32 with off_t > 4GB on pread64/pwrite64 and
preadv64/pwritev64.
[BZ #20348]
* sysdeps/unix/sysv/linux/x86_64/syscalls.list: Add pread64,
preadv64, pwrite64 and pwritev64.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/x86_64/syscalls.list | 4 |
2 files changed, 10 insertions, 0 deletions
@@ -1,5 +1,11 @@ 2016-07-12 H.J. Lu <hongjiu.lu@intel.com> + [BZ #20348] + * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Add pread64, + preadv64, pwrite64 and pwritev64. + +2016-07-12 H.J. Lu <hongjiu.lu@intel.com> + [BZ #20350] * posix/tst-preadwrite.c: Renamed to ... * posix/tst-preadwrite-common.c: This. diff --git a/sysdeps/unix/sysv/linux/x86_64/syscalls.list b/sysdeps/unix/sysv/linux/x86_64/syscalls.list index d09d101da5..bcf63701de 100644 --- a/sysdeps/unix/sysv/linux/x86_64/syscalls.list +++ b/sysdeps/unix/sysv/linux/x86_64/syscalls.list @@ -6,6 +6,10 @@ msgctl - msgctl i:iip __msgctl msgctl msgget - msgget i:ii __msgget msgget msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv msgsnd - msgsnd Ci:ibni __msgsnd msgsnd +pread64 - pread64 Ci:ipii __libc_pread __libc_pread64 __pread64 pread64 __pread pread +preadv64 - preadv Ci:ipii preadv64 preadv +pwrite64 - pwrite64 Ci:ipii __libc_pwrite __pwrite64 pwrite64 __pwrite pwrite +pwritev64 - pwritev Ci:ipii pwritev64 pwritev shmat - shmat i:ipi __shmat shmat shmctl - shmctl i:iip __shmctl shmctl shmdt - shmdt i:s __shmdt shmdt |