]> git.ipfire.org Git - thirdparty/gnulib.git/commitdiff
pagealign_alloc, vma-prot tests: Fix use of HAVE_MMAP (regr. yesterday).
authorBruno Haible <bruno@clisp.org>
Thu, 11 Sep 2025 12:38:39 +0000 (14:38 +0200)
committerBruno Haible <bruno@clisp.org>
Thu, 11 Sep 2025 12:54:34 +0000 (14:54 +0200)
* m4/mmap-anon.m4 (gl_FUNC_MMAP_ANON): Test for sys/mman.h. Use
ac_cv_header_sys_mman_h instead of gl_have_mmap.
* lib/pagealign_alloc.c: Test HAVE_SYS_MMAN_H instead of HAVE_MMAP.
* tests/test-vma-prot.c: Likewise.

ChangeLog
lib/pagealign_alloc.c
m4/mmap-anon.m4
tests/test-vma-prot.c

index 2fb14e6f2ad2bfffa528dda4bc6a6804aa8e94a2..93901ebace1f7e694afdad12811e0cfbd73c8267 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2025-09-11  Bruno Haible  <bruno@clisp.org>
+
+       pagealign_alloc, vma-prot tests: Fix use of HAVE_MMAP (regr. yesterday).
+       * m4/mmap-anon.m4 (gl_FUNC_MMAP_ANON): Test for sys/mman.h. Use
+       ac_cv_header_sys_mman_h instead of gl_have_mmap.
+       * lib/pagealign_alloc.c: Test HAVE_SYS_MMAN_H instead of HAVE_MMAP.
+       * tests/test-vma-prot.c: Likewise.
+
 2025-09-10  Paul Eggert  <eggert@cs.ucla.edu>
 
        pagealign_alloc: prefer posix_memalign
index fdfffb4514e988afb5b5c2497cc2cc10f4ffc87a..dc739b950990ca98a1c850b1d5e3fb7aecdee72e 100644 (file)
@@ -28,7 +28,7 @@
 #include <unistd.h>
 #include <stdint.h>
 
-#if HAVE_MMAP
+#if HAVE_SYS_MMAN_H
 # include <sys/mman.h>
 #endif
 
@@ -38,7 +38,7 @@
 
 #define _(msgid) dgettext (GNULIB_TEXT_DOMAIN, msgid)
 
-#if HAVE_MMAP
+#if HAVE_SYS_MMAN_H
 /* Define MAP_FAILED for old systems which neglect to.  */
 # ifndef MAP_FAILED
 #  define MAP_FAILED ((void *)-1)
@@ -48,7 +48,7 @@
 
 #if ! HAVE_POSIX_MEMALIGN
 
-# if HAVE_MMAP
+# if HAVE_SYS_MMAN_H
 /* For each memory region, we store its size.  */
 typedef size_t info_t;
 # else
@@ -124,7 +124,7 @@ pagealign_alloc (size_t size)
       errno = status;
       return NULL;
     }
-#elif HAVE_MMAP
+#elif HAVE_SYS_MMAN_H
   /* Prefer mmap to malloc, since the latter often wastes an entire
      memory page per call.  */
   ret = mmap (NULL, size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE,
@@ -132,7 +132,7 @@ pagealign_alloc (size_t size)
   if (ret == MAP_FAILED)
     return NULL;
   new_memnode (ret, size);
-#else /* !HAVE_MMAP && !HAVE_POSIX_MEMALIGN */
+#else /* !HAVE_SYS_MMAN_H && !HAVE_POSIX_MEMALIGN */
   size_t pagesize = getpagesize ();
   void *unaligned_ptr = malloc (size + pagesize - 1);
   if (unaligned_ptr == NULL)
@@ -145,7 +145,7 @@ pagealign_alloc (size_t size)
   ret = (char *) unaligned_ptr
         + ((- (uintptr_t) unaligned_ptr) & (pagesize - 1));
   new_memnode (ret, unaligned_ptr);
-#endif /* HAVE_MMAP && HAVE_POSIX_MEMALIGN */
+#endif /* HAVE_SYS_MMAN_H && HAVE_POSIX_MEMALIGN */
   return ret;
 }
 
@@ -167,7 +167,7 @@ pagealign_free (void *aligned_ptr)
 {
 #if HAVE_POSIX_MEMALIGN
   free (aligned_ptr);
-#elif HAVE_MMAP
+#elif HAVE_SYS_MMAN_H
   if (munmap (aligned_ptr, get_memnode (aligned_ptr)) < 0)
     error (EXIT_FAILURE, errno, "Failed to unmap memory");
 #else
index 48fefbdcf1fb717fc9a0acfc81212c9ebd2a7568..abf6194a2883a4618145d59b60f3c80381991c8c 100644 (file)
@@ -1,5 +1,5 @@
 # mmap-anon.m4
-# serial 14
+# serial 15
 dnl Copyright (C) 2005, 2007, 2009-2025 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -21,11 +21,13 @@ AC_DEFUN_ONCE([gl_FUNC_MMAP_ANON],
   # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it
   # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is
   # irrelevant for anonymous mappings.
-  AC_CHECK_FUNC([mmap], [gl_have_mmap=yes], [gl_have_mmap=no])
+  # Instead, assume that mmap() exists if and only if <sys/mman.h> exists.
+  # Code needs to tests HAVE_SYS_MMAN_H, not HAVE_MMAP.
+  AC_CHECK_HEADERS_ONCE([sys/mman.h])
 
   # Try to allow MAP_ANONYMOUS.
   gl_have_mmap_anonymous=no
-  if test $gl_have_mmap = yes; then
+  if test $ac_cv_header_sys_mman_h = yes; then
     AC_MSG_CHECKING([for MAP_ANONYMOUS])
     AC_EGREP_CPP([I cannot identify this map], [
 #include <sys/mman.h>
index 994dbe07c4bdc23168a6807a921a7e9fd981f205..9336c16be0fb31df3035fe1c594b148675eb6168 100644 (file)
@@ -22,7 +22,7 @@
 
 #include <stdlib.h>
 
-#if HAVE_MMAP
+#if HAVE_SYS_MMAN_H
 # include <sys/mman.h>
 # include <unistd.h>
 #endif
@@ -56,7 +56,7 @@ main (void)
     ASSERT (((VMA_PROT_READ | VMA_PROT_WRITE) & ~prot) == 0);
   }
 
-#if HAVE_MMAP
+#if HAVE_SYS_MMAN_H
   /* Test on memory allocated through mmap().  */
   {
     char *mem = mmap (NULL, 1024*1024, PROT_READ | PROT_WRITE,