bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: vma-iter: support Solaris


From: Bruno Haible
Subject: Re: vma-iter: support Solaris
Date: Wed, 19 Apr 2017 01:05:27 +0200
User-agent: KMail/5.1.3 (Linux/4.4.0-72-generic; KDE/5.18.0; x86_64; ; )

Tom G. Christensen wrote:
> This is causing my daily gnulib builds to fail on Solaris.
> 
> On Solaris 8 and 9 I'm seeing this error:
> 
> In file included from vma-iter.c:41:0:
> /usr/include/sys/procfs.h:44:2: error: #error "Cannot use procfs in the 
> large file compilation environment"
>   #error "Cannot use procfs in the large file compilation environment"
>    ^
> make[4]: *** [vma-iter.o] Error 1

Fixed as follows. Thanks for the report!


2017-04-18  Bruno Haible  <address@hidden>

        vma-iter: Fix conflict with module 'largefile' on 32-bit Solaris 9.
        * modules/vma-iter (configure.ac): Test whether <sys/procfs.h> can be
        included.
        * lib/vma-iter.c: On Solaris, test HAVE_SYS_PROCFS_H before including
        <sys/procfs.h>.
        * lib/vma-iter.h (VMA_ITERATE_SUPPORTED): Don't define on Solaris when
        <sys/procfs.h> cannot be included.
        Reported by Tom G. Christensen <address@hidden>.

diff --git a/modules/vma-iter b/modules/vma-iter
index df9e7b8..40e5605 100644
--- a/modules/vma-iter
+++ b/modules/vma-iter
@@ -15,6 +15,8 @@ getpagesize
 configure.ac:
 gl_FUNC_MMAP_ANON
 AC_CHECK_FUNCS_ONCE([mquery pstat_getprocvm])
+dnl On Solaris <= 9, <sys/procfs.h> is unusable when AC_SYS_LARGEFILE is in 
use.
+AC_CHECK_HEADERS([sys/procfs.h])
 
 Makefile.am:
 lib_SOURCES += vma-iter.c
diff --git a/lib/vma-iter.c b/lib/vma-iter.c
index 7356188..d4bae13 100644
--- a/lib/vma-iter.c
+++ b/lib/vma-iter.c
@@ -32,7 +32,7 @@
 # include <sys/procfs.h> /* PIOC*, prmap_t */
 #endif
 
-#if defined __sun /* Solaris */
+#if defined __sun && HAVE_SYS_PROCFS_H /* Solaris */
 # include <string.h> /* memcpy */
 # include <sys/types.h>
 # include <sys/mman.h> /* mmap, munmap */
@@ -378,7 +378,7 @@ vma_iterate (vma_iterate_callback_fn callback, void *data)
   close (fd);
   return -1;
 
-#elif defined __sun /* Solaris */
+#elif defined __sun && HAVE_SYS_PROCFS_H /* Solaris */
 
   /* Note: Solaris <sys/procfs.h> 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 bb1f3c1..95374ef 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__ || 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
+#if defined __linux__ || defined __FreeBSD__ || 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
 # define VMA_ITERATE_SUPPORTED 1
 #endif
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]