Index: gdb/gnulib/import/m4/fcntl-o.m4 |
diff --git a/gdb/gnulib/import/m4/fcntl-o.m4 b/gdb/gnulib/import/m4/fcntl-o.m4 |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9862741f3943c38cc2269b8a582c5c4294ddf942 |
--- /dev/null |
+++ b/gdb/gnulib/import/m4/fcntl-o.m4 |
@@ -0,0 +1,123 @@ |
+# fcntl-o.m4 serial 4 |
+dnl Copyright (C) 2006, 2009-2012 Free Software Foundation, Inc. |
+dnl This file is free software; the Free Software Foundation |
+dnl gives unlimited permission to copy and/or distribute it, |
+dnl with or without modifications, as long as this notice is preserved. |
+ |
+dnl Written by Paul Eggert. |
+ |
+# Test whether the flags O_NOATIME and O_NOFOLLOW actually work. |
+# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise. |
+# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise. |
+AC_DEFUN([gl_FCNTL_O_FLAGS], |
+[ |
+ dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW. |
+ dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes |
+ dnl AC_GNU_SOURCE. |
+ m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], |
+ [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], |
+ [AC_REQUIRE([AC_GNU_SOURCE])]) |
+ |
+ AC_CHECK_HEADERS_ONCE([unistd.h]) |
+ AC_CHECK_FUNCS_ONCE([symlink]) |
+ AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], |
+ [AC_RUN_IFELSE( |
+ [AC_LANG_PROGRAM( |
+ [[#include <sys/types.h> |
+ #include <sys/stat.h> |
+ #if HAVE_UNISTD_H |
+ # include <unistd.h> |
+ #else /* on Windows with MSVC */ |
+ # include <io.h> |
+ # include <stdlib.h> |
+ # defined sleep(n) _sleep ((n) * 1000) |
+ #endif |
+ #include <fcntl.h> |
+ #ifndef O_NOATIME |
+ #define O_NOATIME 0 |
+ #endif |
+ #ifndef O_NOFOLLOW |
+ #define O_NOFOLLOW 0 |
+ #endif |
+ static int const constants[] = |
+ { |
+ O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, |
+ O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY |
+ }; |
+ ]], |
+ [[ |
+ int result = !constants; |
+ #if HAVE_SYMLINK |
+ { |
+ static char const sym[] = "conftest.sym"; |
+ if (symlink (".", sym) != 0) |
+ result |= 2; |
+ else |
+ { |
+ int fd = open (sym, O_RDONLY | O_NOFOLLOW); |
+ if (fd >= 0) |
+ { |
+ close (fd); |
+ result |= 4; |
+ } |
+ } |
+ unlink (sym); |
+ } |
+ #endif |
+ { |
+ static char const file[] = "confdefs.h"; |
+ int fd = open (file, O_RDONLY | O_NOATIME); |
+ if (fd < 0) |
+ result |= 8; |
+ else |
+ { |
+ struct stat st0; |
+ if (fstat (fd, &st0) != 0) |
+ result |= 16; |
+ else |
+ { |
+ char c; |
+ sleep (1); |
+ if (read (fd, &c, 1) != 1) |
+ result |= 24; |
+ else |
+ { |
+ if (close (fd) != 0) |
+ result |= 32; |
+ else |
+ { |
+ struct stat st1; |
+ if (stat (file, &st1) != 0) |
+ result |= 40; |
+ else |
+ if (st0.st_atime != st1.st_atime) |
+ result |= 64; |
+ } |
+ } |
+ } |
+ } |
+ } |
+ return result;]])], |
+ [gl_cv_header_working_fcntl_h=yes], |
+ [case $? in #( |
+ 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( |
+ 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( |
+ 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( |
+ *) gl_cv_header_working_fcntl_h='no';; |
+ esac], |
+ [gl_cv_header_working_fcntl_h=cross-compiling])]) |
+ |
+ case $gl_cv_header_working_fcntl_h in #( |
+ *O_NOATIME* | no | cross-compiling) ac_val=0;; #( |
+ *) ac_val=1;; |
+ esac |
+ AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val], |
+ [Define to 1 if O_NOATIME works.]) |
+ |
+ case $gl_cv_header_working_fcntl_h in #( |
+ *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( |
+ *) ac_val=1;; |
+ esac |
+ AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val], |
+ [Define to 1 if O_NOFOLLOW works.]) |
+]) |