OSDN Git Service

posix_fadvise64: fix x86 implementation
authorTimo Teräs <timo.teras@iki.fi>
Wed, 20 Apr 2011 10:59:15 +0000 (13:59 +0300)
committerKhem Raj <raj.khem@gmail.com>
Sat, 7 May 2011 23:59:48 +0000 (16:59 -0700)
Commit 73d59554144f429b1cf0d4d7fa7de42bdf59ad92 completely broke
the x86 implementation of posix_fadvise64. It moved the first
the assembly code retn instruction gets missing depending on the

Technically the file has two implementaions for posix_fadvise64,
one when __NR_fadvise64_64 is available, and second one if only
__NR_fadvise64 is there. Fix the #ifdef's to be proper for that.

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
libc/sysdeps/linux/i386/posix_fadvise64.S

index b4aeff1..8a8947d 100644 (file)
@@ -22,7 +22,7 @@
 #include <bits/errno.h>
 #include <sys/syscall.h>
 
-#if defined __NR_fadvise64_64
+#if defined __NR_fadvise64_64 || defined __NR_fadvise64
 
 /* Was named __libc_posix_fadvise64 for some inexplicable reason.
 ** google says only uclibc has *__libc*_posix_fadviseXXX,
@@ -35,6 +35,7 @@
 .global posix_fadvise64
 .type   posix_fadvise64,%function
 posix_fadvise64:
+#if defined __NR_fadvise64_64
        /* Save regs  */
        pushl   %ebp
        pushl   %ebx
@@ -91,6 +92,7 @@ overflow:
 
        /* Returns 0 on success, else an error code.  */
        negl    %eax
+#endif
 
        /* Successful; return the syscall's value.  */
        ret