Re: AC_FUNC_MMAP lacks <unistd.h> include?

Paul Eggert <[email protected]>
Newsgroups gmane.comp.sysutils.autoconf.bugs
Organization UCLA Computer Science Department
Message-ID <[email protected]>
On 2023-05-17 11:14, Florian Weimer wrote:
+#ifndef getpagesize
>> +# ifdef _SC_PAGESIZE
>> +#  define getpagesize() sysconf (_SC_PAGESIZE)
>> +# elif defined _SC_PAGE_SIZE
>> +#  define getpagesize() sysconf (_SC_PAGE_SIZE)
>> +# elif HAVE_GETPAGESIZE
>> +int getpagesize ();
> 
> Isn't this a bit weird?  Why can't we rely on the HAVE_GETPAGESIZE
> check?

POSIX has standardized on sysconf; it no longer specifies getpagesize. 
Also, getpagesize doesn't work for page sizes greater than INT_MAX. For 
both reasons, it's better to prefer sysconf to getpagesize nowadays. I 
installed the attached patch to try to make this clearer.


> Shouldn't <unistd.h> come from [AC_INCLUDES_DEFAULT]?

Yes. I didn't see the need for urgent changes there, though. The code 
should work as-is, and although it may be suboptimal right now we're 
limiting ourselves to bug fixes.
0001-Improve-AC_FUNC_MMAP-comments.patch (text/x-patch, 889 B)
From 8e7281d7bebb5e389befe6e9a5afbb7b2ae13ae0 Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email protected]>
Date: Wed, 17 May 2023 11:50:27 -0700
Subject: [PATCH] Improve AC_FUNC_MMAP comments

* lib/autoconf/functions.m4 (AC_FUNC_MMAP): Add comment.
---
 lib/autoconf/functions.m4 | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index 3d6e4aca..54d04cc3 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -1311,6 +1311,8 @@ AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
 #include <sys/mman.h>
 
 #ifndef getpagesize
+/* Prefer sysconf to the legacy getpagesize function, as getpagesize has
+   been removed from POSIX and is limited to page sizes that fit in 'int'.  */
 # ifdef _SC_PAGESIZE
 #  define getpagesize() sysconf (_SC_PAGESIZE)
 # elif defined _SC_PAGE_SIZE
-- 
2.39.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.