summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2023-05-10 17:20:49 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2023-05-10 17:23:11 -0700
commit028526149ee804617a302ccef22cc6adbda681b0 (patch)
tree6dc5aab4c0185ad6a94a568a2ef4e5841948da77
parent9c0183724614517a67d0955065171465bab7154a (diff)
downloadautoconf-028526149ee804617a302ccef22cc6adbda681b0.tar.gz
Port AC_FUNC_MMAP to more-modern systems
* lib/autoconf/functions.m4 (AC_FUNC_MMAP): Don’t call getpagesize, as it’s tricky to configure, modern POSIX doesn’t require it, and calling it without including <unistd.h> provokes a compile-time error on modern systems. Instead, rework the test to not need getpagesize. Add a FIXME comment for unnecessary tests; I don't want to remove them now as we're too close to a release. Remove long-obsolete comment about GNU grep.
-rw-r--r--lib/autoconf/functions.m444
1 files changed, 5 insertions, 39 deletions
diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index 499e4c02..5a0f0185 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -1283,6 +1283,7 @@ AU_ALIAS([AM_FUNC_MKTIME], [AC_FUNC_MKTIME])
AN_FUNCTION([mmap], [AC_FUNC_MMAP])
AC_DEFUN([AC_FUNC_MMAP],
[AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+dnl FIXME: Remove the unnecessary checks for unistd.h, sys/param.h, getpagesize.
AC_CHECK_HEADERS_ONCE([unistd.h sys/param.h])
AC_CHECK_FUNCS_ONCE([getpagesize])
AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
@@ -1305,48 +1306,11 @@ AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
VM page cache was not coherent with the file system buffer cache
like early versions of FreeBSD and possibly contemporary NetBSD.)
For shared mappings, we should conversely verify that changes get
- propagated back to all the places they're supposed to be.
-
- Grep wants private fixed already mapped.
- The main things grep needs to know about mmap are:
- * does it exist and is it safe to write into the mmap'd area
- * how to use it (BSD variants) */
+ propagated back to all the places they're supposed to be. */
#include <fcntl.h>
#include <sys/mman.h>
-/* This mess was copied from the GNU getpagesize.h. */
-#ifndef HAVE_GETPAGESIZE
-# ifdef _SC_PAGESIZE
-# define getpagesize() sysconf(_SC_PAGESIZE)
-# else /* no _SC_PAGESIZE */
-# ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>
-# ifdef EXEC_PAGESIZE
-# define getpagesize() EXEC_PAGESIZE
-# else /* no EXEC_PAGESIZE */
-# ifdef NBPG
-# define getpagesize() NBPG * CLSIZE
-# ifndef CLSIZE
-# define CLSIZE 1
-# endif /* no CLSIZE */
-# else /* no NBPG */
-# ifdef NBPC
-# define getpagesize() NBPC
-# else /* no NBPC */
-# ifdef PAGESIZE
-# define getpagesize() PAGESIZE
-# endif /* PAGESIZE */
-# endif /* no NBPC */
-# endif /* no NBPG */
-# endif /* no EXEC_PAGESIZE */
-# else /* no HAVE_SYS_PARAM_H */
-# define getpagesize() 8192 /* punt totally */
-# endif /* no HAVE_SYS_PARAM_H */
-# endif /* no _SC_PAGESIZE */
-
-#endif /* no HAVE_GETPAGESIZE */
-
int
main (void)
{
@@ -1355,7 +1319,9 @@ main (void)
int i, pagesize;
int fd, fd2;
- pagesize = getpagesize ();
+ /* The "page size" need not equal the system page size,
+ and need not even be a power of 2. */
+ pagesize = 8192;
/* First, make a file with some known garbage in it. */
data = (char *) malloc (pagesize);