Mercurial > gnulib
changeset 38874:4da497fc98e8
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.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sat, 30 Sep 2017 18:16:03 +0200 |
parents | 760837dbf3b5 |
children | c2cb596990c3 |
files | ChangeLog lib/vma-iter.c lib/vma-iter.h modules/vma-iter |
diffstat | 4 files changed, 21 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Sat Sep 30 15:59:27 2017 +0200 +++ b/ChangeLog Sat Sep 30 18:16:03 2017 +0200 @@ -1,3 +1,12 @@ +2017-09-30 Bruno Haible <bruno@clisp.org> + + 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 <bruno@clisp.org> havelib: Make it work for CC="gcc -m32" (regression from 2017-02-19).
--- a/lib/vma-iter.c Sat Sep 30 15:59:27 2017 +0200 +++ b/lib/vma-iter.c Sat Sep 30 18:16:03 2017 +0200 @@ -17,6 +17,15 @@ #include <config.h> +/* 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 <sys/procfs.h> /* PIOC*, prmap_t */ #endif -#if defined __sun && HAVE_SYS_PROCFS_H /* Solaris */ +#if defined __sun /* Solaris */ # include <string.h> /* memcpy */ # include <sys/types.h> # include <sys/mman.h> /* mmap, munmap */ @@ -814,7 +823,7 @@ close (fd); return -1; -#elif defined __sun && HAVE_SYS_PROCFS_H /* Solaris */ +#elif defined __sun /* 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):
--- a/lib/vma-iter.h Sat Sep 30 15:59:27 2017 +0200 +++ b/lib/vma-iter.h Sat Sep 30 18:16:03 2017 +0200 @@ -52,7 +52,7 @@ 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
--- a/modules/vma-iter Sat Sep 30 15:59:27 2017 +0200 +++ b/modules/vma-iter Sat Sep 30 18:16:03 2017 +0200 @@ -16,8 +16,6 @@ gl_FUNC_MMAP_ANON AC_REQUIRE([AC_C_INLINE]) 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