>From 26e27d9fa2d3de97e5a8e428c6ed286a8ad5de73 Mon Sep 17 00:00:00 2001
From: Bruno Haible
Date: Sat, 30 Sep 2017 18:16:03 +0200
Subject: [PATCH] vma-iter: Make it work on 32-bit Solaris with module
'largefile'.
* modules/vma-iter: Don't test for sys/procfs.h, as this test would
fail when module 'largefile' is in use.
* lib/vma-iter.h (VMA_ITERATE_SUPPORTED): Don't test HAVE_SYS_PROCFS_H.
* lib/vma-iter.c: Undefine _FILE_OFFSET_BITS early.
Don't test HAVE_SYS_PROCFS_H.
---
ChangeLog | 9 +++++++++
lib/vma-iter.c | 13 +++++++++++--
lib/vma-iter.h | 2 +-
modules/vma-iter | 2 --
4 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 0d219bd..e02588d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2017-09-30 Bruno Haible
+ vma-iter: Make it work on 32-bit Solaris with module 'largefile'.
+ * modules/vma-iter: Don't test for sys/procfs.h, as this test would
+ fail when module 'largefile' is in use.
+ * lib/vma-iter.h (VMA_ITERATE_SUPPORTED): Don't test HAVE_SYS_PROCFS_H.
+ * lib/vma-iter.c: Undefine _FILE_OFFSET_BITS early.
+ Don't test HAVE_SYS_PROCFS_H.
+
+2017-09-30 Bruno Haible
+
havelib: Make it work for CC="gcc -m32" (regression from 2017-02-19).
* m4/lib-prefix.m4 (AC_LIB_PREPARE_MULTILIB): Require gl_HOST_CPU_C_ABI.
When $CC produces 32-bit code, set acl_libdirstem to 'lib', not 'lib64'.
diff --git a/lib/vma-iter.c b/lib/vma-iter.c
index 961e5a2..3d105e8 100644
--- a/lib/vma-iter.c
+++ b/lib/vma-iter.c
@@ -17,6 +17,15 @@
#include
+/* On Solaris in 32-bit mode, when gnulib module 'largefile' is in use,
+ prevent a compilation error
+ "Cannot use procfs in the large file compilation environment"
+ The files that we access in this compilation unit are less than 2 GB
+ large. */
+#if defined __sun
+# undef _FILE_OFFSET_BITS
+#endif
+
/* Specification. */
#include "vma-iter.h"
@@ -49,7 +58,7 @@
# include /* PIOC*, prmap_t */
#endif
-#if defined __sun && HAVE_SYS_PROCFS_H /* Solaris */
+#if defined __sun /* Solaris */
# include /* memcpy */
# include
# include /* mmap, munmap */
@@ -814,7 +823,7 @@ vma_iterate (vma_iterate_callback_fn callback, void *data)
close (fd);
return -1;
-#elif defined __sun && HAVE_SYS_PROCFS_H /* Solaris */
+#elif defined __sun /* Solaris */
/* Note: Solaris defines a different type prmap_t with
_STRUCTURED_PROC than without! Here's a table of sizeof(prmap_t):
diff --git a/lib/vma-iter.h b/lib/vma-iter.h
index 2346972..13fb538 100644
--- a/lib/vma-iter.h
+++ b/lib/vma-iter.h
@@ -52,7 +52,7 @@ extern int vma_iterate (vma_iterate_callback_fn callback, void *data);
this platform.
Note that even when this macro is defined, vma_iterate() may still fail to
find any virtual memory area, for example if /proc is not mounted. */
-#if defined __linux__ || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sgi || defined __osf__ || (defined __sun && HAVE_SYS_PROCFS_H) || HAVE_PSTAT_GETPROCVM || (defined __APPLE__ && defined __MACH__) || (defined _WIN32 || defined __WIN32__) || defined __CYGWIN__ || defined __BEOS__ || defined __HAIKU__ || HAVE_MQUERY
+#if defined __linux__ || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sgi || defined __osf__ || defined __sun || HAVE_PSTAT_GETPROCVM || (defined __APPLE__ && defined __MACH__) || (defined _WIN32 || defined __WIN32__) || defined __CYGWIN__ || defined __BEOS__ || defined __HAIKU__ || HAVE_MQUERY
# define VMA_ITERATE_SUPPORTED 1
#endif
diff --git a/modules/vma-iter b/modules/vma-iter
index b681e2b..08f3c0f 100644
--- a/modules/vma-iter
+++ b/modules/vma-iter
@@ -16,8 +16,6 @@ configure.ac:
gl_FUNC_MMAP_ANON
AC_REQUIRE([AC_C_INLINE])
AC_CHECK_FUNCS_ONCE([mquery pstat_getprocvm])
-dnl On Solaris <= 9, is unusable when AC_SYS_LARGEFILE is in use.
-AC_CHECK_HEADERS([sys/procfs.h])
Makefile.am:
lib_SOURCES += vma-iter.c
--
2.7.4