summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--configure.in13
-rw-r--r--io.c5
3 files changed, 18 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 2b33091503..a7748f8427 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Jun 9 00:04:25 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (posix_fadvise): disable use of posix_fadvise
+ itself on 32-bit AIX. [ruby-core:62968] [Bug #9914]
+
Sun Jun 8 23:28:00 2014 <kanemoto@ruby-lang.org>
* io.c (rb_io_advise): AIX currently does not support a 32-bit call to
diff --git a/configure.in b/configure.in
index cfd9065514..8b7f95dad3 100644
--- a/configure.in
+++ b/configure.in
@@ -1200,7 +1200,18 @@ mv confdefs.h largefile.h
mv confdefs1.h confdefs.h
cat largefile.h >> confdefs.h
-AS_CASE(["$target_os"],[mingw*], [ac_cv_type_off_t=yes;ac_cv_sizeof_off_t=8])
+AS_CASE(["$target_os"],
+ [mingw*], [ac_cv_type_off_t=yes;ac_cv_sizeof_off_t=8],
+ [aix*], [
+ AS_CASE(["$target_cpu:$ac_cv_sys_large_files"],
+ [ppc64:*|powerpc64:*], [],
+ [*:no|*:unknown], []
+ [
+ # AIX currently does not support a 32-bit call to posix_fadvise()
+ # if _LARGE_FILES is defined.
+ ac_cv_posix_fadvise=no
+ ])
+ ])
AC_C_BIGENDIAN
AC_C_CONST
diff --git a/io.c b/io.c
index 81067126d0..9900118818 100644
--- a/io.c
+++ b/io.c
@@ -8591,10 +8591,7 @@ rb_io_advise(int argc, VALUE *argv, VALUE io)
off = NIL_P(offset) ? 0 : NUM2OFFT(offset);
l = NIL_P(len) ? 0 : NUM2OFFT(len);
- /* AIX currently does not support a 32-bit call to posix_fadvise()
- * if _LARGE_FILES is defined.
- */
-#if defined(HAVE_POSIX_FADVISE) && !(defined(_AIX) && defined(_LARGE_FILES) && !defined(_ARCH_PPC64))
+#ifdef HAVE_POSIX_FADVISE
return do_io_advise(fptr, advice, off, l);
#else
((void)off, (void)l); /* Ignore all hint */