OSDN Git Service

Fix pread/pwrite for LP64.
authorElliott Hughes <enh@google.com>
Wed, 6 Nov 2013 21:10:37 +0000 (13:10 -0800)
committerElliott Hughes <enh@google.com>
Wed, 6 Nov 2013 21:10:37 +0000 (13:10 -0800)
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

libc/Android.mk
libc/SYSCALLS.TXT
libc/arch-aarch64/syscalls/pread64.S
libc/arch-aarch64/syscalls/pwrite64.S
libc/arch-x86_64/syscalls/pread64.S
libc/arch-x86_64/syscalls/pwrite64.S

index 1496d1f..190272e 100644 (file)
@@ -106,11 +106,9 @@ libc_common_src_files := \
        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 @@ libc_common_src_files += \
     bionic/__get_tls.cpp \
     bionic/lseek64.c \
     bionic/ndk_cruft.cpp \
+    bionic/pread.c \
+    bionic/pwrite.c \
     bionic/statfs.c \
 
 endif
index f31073f..ce79e9c 100644 (file)
@@ -88,8 +88,10 @@ int     acct(const char*  filepath)  all
 # 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
index 82a2fb2..941e55f 100644 (file)
@@ -21,3 +21,6 @@ ENTRY(pread64)
 
     ret
 END(pread64)
+
+    .globl _C_LABEL(pread)
+    .equ _C_LABEL(pread), _C_LABEL(pread64)
index ab4b502..9700aa3 100644 (file)
@@ -21,3 +21,6 @@ ENTRY(pwrite64)
 
     ret
 END(pwrite64)
+
+    .globl _C_LABEL(pwrite)
+    .equ _C_LABEL(pwrite), _C_LABEL(pwrite64)
index 25378c8..05dc021 100644 (file)
@@ -17,3 +17,6 @@ ENTRY(pread64)
 1:
     ret
 END(pread64)
+
+    .globl _C_LABEL(pread)
+    .equ _C_LABEL(pread), _C_LABEL(pread64)
index c3692e9..a1e0ea1 100644 (file)
@@ -17,3 +17,6 @@ ENTRY(pwrite64)
 1:
     ret
 END(pwrite64)
+
+    .globl _C_LABEL(pwrite)
+    .equ _C_LABEL(pwrite), _C_LABEL(pwrite64)