Fix pread/pwrite for LP64.
Unlike on 32-bit systems where off_t is 32-bit, we don't want to
throw away the top 32 bits of an LP64 system's 64-bit off_t.
Change-Id: Ib2e0daeb4fc0b8ab3d1b983d0b371d8f81033b50
diff --git a/libc/Android.mk b/libc/Android.mk
index 1496d1f..190272e 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -106,11 +106,9 @@
bionic/memswap.c \
bionic/pathconf.c \
bionic/perror.c \
- bionic/pread.c \
bionic/ptsname.c \
bionic/ptsname_r.c \
bionic/pututline.c \
- bionic/pwrite.c \
bionic/reboot.c \
bionic/recv.c \
bionic/sched_cpualloc.c \
@@ -180,6 +178,8 @@
bionic/__get_tls.cpp \
bionic/lseek64.c \
bionic/ndk_cruft.cpp \
+ bionic/pread.c \
+ bionic/pwrite.c \
bionic/statfs.c \
endif
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index f31073f..ce79e9c 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -88,8 +88,10 @@
# file descriptors
ssize_t read(int, void*, size_t) all
ssize_t write(int, const void*, size_t) all
-ssize_t pread64(int, void*, size_t, off64_t) all
-ssize_t pwrite64(int, void*, size_t, off64_t) all
+ssize_t pread64(int, void*, size_t, off64_t) arm,mips,x86
+ssize_t pread64|pread(int, void*, size_t, off_t) aarch64,x86_64
+ssize_t pwrite64(int, void*, size_t, off64_t) arm,mips,x86
+ssize_t pwrite64|pwrite(int, void*, size_t, off_t) aarch64,x86_64
int close(int) all
pid_t getpid() all
void* mmap(void*, size_t, int, int, int, long) aarch64,x86_64
diff --git a/libc/arch-aarch64/syscalls/pread64.S b/libc/arch-aarch64/syscalls/pread64.S
index 82a2fb2..941e55f 100644
--- a/libc/arch-aarch64/syscalls/pread64.S
+++ b/libc/arch-aarch64/syscalls/pread64.S
@@ -21,3 +21,6 @@
ret
END(pread64)
+
+ .globl _C_LABEL(pread)
+ .equ _C_LABEL(pread), _C_LABEL(pread64)
diff --git a/libc/arch-aarch64/syscalls/pwrite64.S b/libc/arch-aarch64/syscalls/pwrite64.S
index ab4b502..9700aa3 100644
--- a/libc/arch-aarch64/syscalls/pwrite64.S
+++ b/libc/arch-aarch64/syscalls/pwrite64.S
@@ -21,3 +21,6 @@
ret
END(pwrite64)
+
+ .globl _C_LABEL(pwrite)
+ .equ _C_LABEL(pwrite), _C_LABEL(pwrite64)
diff --git a/libc/arch-x86_64/syscalls/pread64.S b/libc/arch-x86_64/syscalls/pread64.S
index 25378c8..05dc021 100644
--- a/libc/arch-x86_64/syscalls/pread64.S
+++ b/libc/arch-x86_64/syscalls/pread64.S
@@ -17,3 +17,6 @@
1:
ret
END(pread64)
+
+ .globl _C_LABEL(pread)
+ .equ _C_LABEL(pread), _C_LABEL(pread64)
diff --git a/libc/arch-x86_64/syscalls/pwrite64.S b/libc/arch-x86_64/syscalls/pwrite64.S
index c3692e9..a1e0ea1 100644
--- a/libc/arch-x86_64/syscalls/pwrite64.S
+++ b/libc/arch-x86_64/syscalls/pwrite64.S
@@ -17,3 +17,6 @@
1:
ret
END(pwrite64)
+
+ .globl _C_LABEL(pwrite)
+ .equ _C_LABEL(pwrite), _C_LABEL(pwrite64)