Patchwork : use mmap.m4 in gcc/configure

login
register
mail settings
Submitter Tristan Gingold
Date April 3, 2012, 9:25 a.m.
Message ID <597915CC-4C96-4276-B78D-520D894A4916@adacore.com>
Download mbox | patch
Permalink /patch/150354/
State New
Headers show

Comments

Tristan Gingold - April 3, 2012, 9:25 a.m.
Hi,

the gcc_AC_FUNC_MMAP_BLACKLIST function in gcc/acinclude.m4 is exactly the same as the GCC_AC_FUNC_MMAP_BLACKLIST function in config/mmap.m4 (except the case of the first three letters).  This patch makes gcc/configure.ac uses config/mmap.m4 instead of its own version.

Also, I modified config/mmap.m4 to match *vms* instead of vms* like all other configuration scripts (because the official name is now openvms).

Tested by building for ia64-hp-openvms and by visual inspection of the generated configure (only the *vms* lines changed).

Ok for trunk ?

Tristan.

config/
2012-04-03  Tristan Gingold  <gingold@adacore.com>

	* mmap.m4: Use *vms* instead of vms*.

gcc/
2012-04-03  Tristan Gingold  <gingold@adacore.com>

	* configure.ac: Use GCC_AC_FUNC_MMAP_BLACKLIST instead
	of gcc_AC_FUNC_MMAP_BLACKLIST.
	* aclocal.m4: Include mmap.m4
	* acinclude.m4 (gcc_AC_FUNC_MMAP_BLACKLIST): Remove.
	* Makefile.in (aclocal_deps): Add mmap.m4.
	* configure: Regenerate.

libitm/
2012-04-03  Tristan Gingold  <gingold@adacore.com>

	* configure: Regenerate.
Paolo Bonzini - April 3, 2012, 10:09 a.m.
Il 03/04/2012 11:25, Tristan Gingold ha scritto:
> Hi,
> 
> the gcc_AC_FUNC_MMAP_BLACKLIST function in gcc/acinclude.m4 is exactly the same as the GCC_AC_FUNC_MMAP_BLACKLIST function in config/mmap.m4 (except the case of the first three letters).  This patch makes gcc/configure.ac uses config/mmap.m4 instead of its own version.
> 
> Also, I modified config/mmap.m4 to match *vms* instead of vms* like all other configuration scripts (because the official name is now openvms).
> 
> Tested by building for ia64-hp-openvms and by visual inspection of the generated configure (only the *vms* lines changed).
> 
> Ok for trunk ?
> 
> Tristan.
> 
> config/
> 2012-04-03  Tristan Gingold  <gingold@adacore.com>
> 
> 	* mmap.m4: Use *vms* instead of vms*.
> 
> gcc/
> 2012-04-03  Tristan Gingold  <gingold@adacore.com>
> 
> 	* configure.ac: Use GCC_AC_FUNC_MMAP_BLACKLIST instead
> 	of gcc_AC_FUNC_MMAP_BLACKLIST.
> 	* aclocal.m4: Include mmap.m4

aclocal.m4 is supposed to be automatically generated, can you check that
nothing strange happens if you configure with --enable-maintainer-mode
and do "touch acinclude.m4 && make aclocal.m4" in the GCC directory?

> 	* acinclude.m4 (gcc_AC_FUNC_MMAP_BLACKLIST): Remove.
> 	* Makefile.in (aclocal_deps): Add mmap.m4.
> 	* configure: Regenerate.
> 
> libitm/
> 2012-04-03  Tristan Gingold  <gingold@adacore.com>
> 
> 	* configure: Regenerate.

Ok.

Paolo
Tristan Gingold - April 3, 2012, 10:33 a.m.
On Apr 3, 2012, at 12:09 PM, Paolo Bonzini wrote:

> Il 03/04/2012 11:25, Tristan Gingold ha scritto:
>> Hi,
>> 
>> the gcc_AC_FUNC_MMAP_BLACKLIST function in gcc/acinclude.m4 is exactly the same as the GCC_AC_FUNC_MMAP_BLACKLIST function in config/mmap.m4 (except the case of the first three letters).  This patch makes gcc/configure.ac uses config/mmap.m4 instead of its own version.
>> 
>> Also, I modified config/mmap.m4 to match *vms* instead of vms* like all other configuration scripts (because the official name is now openvms).
>> 
>> Tested by building for ia64-hp-openvms and by visual inspection of the generated configure (only the *vms* lines changed).
>> 
>> Ok for trunk ?
>> 
>> Tristan.
>> 
>> config/
>> 2012-04-03  Tristan Gingold  <gingold@adacore.com>
>> 
>> 	* mmap.m4: Use *vms* instead of vms*.
>> 
>> gcc/
>> 2012-04-03  Tristan Gingold  <gingold@adacore.com>
>> 
>> 	* configure.ac: Use GCC_AC_FUNC_MMAP_BLACKLIST instead
>> 	of gcc_AC_FUNC_MMAP_BLACKLIST.
>> 	* aclocal.m4: Include mmap.m4
> 
> aclocal.m4 is supposed to be automatically generated, can you check that
> nothing strange happens if you configure with --enable-maintainer-mode
> and do "touch acinclude.m4 && make aclocal.m4" in the GCC directory?

Ah thanks.  I missed the fact that aclocal was able to automagically find which files to include.

'touch $srcdir/acinclude.m4 && make $srcdir/aclocal.m4' doesn't change anything.

> 
>> 	* acinclude.m4 (gcc_AC_FUNC_MMAP_BLACKLIST): Remove.
>> 	* Makefile.in (aclocal_deps): Add mmap.m4.
>> 	* configure: Regenerate.
>> 
>> libitm/
>> 2012-04-03  Tristan Gingold  <gingold@adacore.com>
>> 
>> 	* configure: Regenerate.
> 
> Ok.

Thanks,

Tristan.

Patch

diff --git a/config/mmap.m4 b/config/mmap.m4
index 39d79af..fba0d9d 100644
--- a/config/mmap.m4
+++ b/config/mmap.m4
@@ -24,7 +24,7 @@  else
    # read() to the same fd.  The only system known to have a problem here
    # is VMS, where text files have record structure.
    case "$host_os" in
-     vms* | ultrix*) 
+     *vms* | ultrix*)
         gcc_cv_func_mmap_file=no ;;
      *)
         gcc_cv_func_mmap_file=yes;;
@@ -42,7 +42,7 @@  else
    # Systems known to be in this category are Windows (all variants),
    # VMS, and Darwin.
    case "$host_os" in
-     vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00)
+     *vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00)
         gcc_cv_func_mmap_dev_zero=no ;;
      *)
         gcc_cv_func_mmap_dev_zero=yes;;
@@ -74,7 +74,7 @@  else
    # above for use of /dev/zero.
    # Systems known to be in this category are Windows, VMS, and SCO Unix.
    case "$host_os" in
-     vms* | cygwin* | pe | mingw* | sco* | udk* )
+     *vms* | cygwin* | pe | mingw* | sco* | udk* )
         gcc_cv_func_mmap_anon=no ;;
      *)
         gcc_cv_func_mmap_anon=yes;;
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index f5fa0c3..8fd8208 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1650,6 +1650,7 @@  aclocal_deps = \
 	$(srcdir)/../config/unwind_ipinfo.m4 \
 	$(srcdir)/../config/warnings.m4 \
 	$(srcdir)/../config/dfp.m4 \
+	$(srcdir)/../config/mmap.m4 \
 	$(srcdir)/acinclude.m4
 
 $(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/aclocal.m4
diff --git a/gcc/acinclude.m4 b/gcc/acinclude.m4
index 84b828f..c24464b 100644
--- a/gcc/acinclude.m4
+++ b/gcc/acinclude.m4
@@ -221,99 +221,6 @@  test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 AC_SUBST(INSTALL_DATA)dnl
 ])
 
-# mmap(2) blacklisting.  Some platforms provide the mmap library routine
-# but don't support all of the features we need from it.
-AC_DEFUN([gcc_AC_FUNC_MMAP_BLACKLIST],
-[
-AC_CHECK_HEADER([sys/mman.h],
-		[gcc_header_sys_mman_h=yes], [gcc_header_sys_mman_h=no])
-AC_CHECK_FUNC([mmap], [gcc_func_mmap=yes], [gcc_func_mmap=no])
-if test "$gcc_header_sys_mman_h" != yes \
- || test "$gcc_func_mmap" != yes; then
-   gcc_cv_func_mmap_file=no
-   gcc_cv_func_mmap_dev_zero=no
-   gcc_cv_func_mmap_anon=no
-else
-   AC_CACHE_CHECK([whether read-only mmap of a plain file works], 
-  gcc_cv_func_mmap_file,
-  [# Add a system to this blacklist if 
-   # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a
-   # memory area containing the same data that you'd get if you applied
-   # read() to the same fd.  The only system known to have a problem here
-   # is VMS, where text files have record structure.
-   case "$host_os" in
-     vms* | ultrix*) 
-        gcc_cv_func_mmap_file=no ;;
-     *)
-        gcc_cv_func_mmap_file=yes;;
-   esac])
-   AC_CACHE_CHECK([whether mmap from /dev/zero works],
-  gcc_cv_func_mmap_dev_zero,
-  [# Add a system to this blacklist if it has mmap() but /dev/zero
-   # does not exist, or if mmapping /dev/zero does not give anonymous
-   # zeroed pages with both the following properties:
-   # 1. If you map N consecutive pages in with one call, and then
-   #    unmap any subset of those pages, the pages that were not
-   #    explicitly unmapped remain accessible.
-   # 2. If you map two adjacent blocks of memory and then unmap them
-   #    both at once, they must both go away.
-   # Systems known to be in this category are Windows (all variants),
-   # VMS, and Darwin.
-   case "$host_os" in
-     vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00)
-        gcc_cv_func_mmap_dev_zero=no ;;
-     *)
-        gcc_cv_func_mmap_dev_zero=yes;;
-   esac])
-
-   # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for.
-   AC_CACHE_CHECK([for MAP_ANON(YMOUS)], gcc_cv_decl_map_anon,
-    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
-[#include <sys/types.h>
-#include <sys/mman.h>
-#include <unistd.h>
-
-#ifndef MAP_ANONYMOUS
-#define MAP_ANONYMOUS MAP_ANON
-#endif
-],
-[int n = MAP_ANONYMOUS;])],
-    gcc_cv_decl_map_anon=yes,
-    gcc_cv_decl_map_anon=no)])
-
-   if test $gcc_cv_decl_map_anon = no; then
-     gcc_cv_func_mmap_anon=no
-   else
-     AC_CACHE_CHECK([whether mmap with MAP_ANON(YMOUS) works],
-     gcc_cv_func_mmap_anon,
-  [# Add a system to this blacklist if it has mmap() and MAP_ANON or
-   # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
-   # doesn't give anonymous zeroed pages with the same properties listed
-   # above for use of /dev/zero.
-   # Systems known to be in this category are Windows, VMS, and SCO Unix.
-   case "$host_os" in
-     vms* | cygwin* | pe | mingw* | sco* | udk* )
-        gcc_cv_func_mmap_anon=no ;;
-     *)
-        gcc_cv_func_mmap_anon=yes;;
-   esac])
-   fi
-fi
-
-if test $gcc_cv_func_mmap_file = yes; then
-  AC_DEFINE(HAVE_MMAP_FILE, 1,
-	    [Define if read-only mmap of a plain file works.])
-fi
-if test $gcc_cv_func_mmap_dev_zero = yes; then
-  AC_DEFINE(HAVE_MMAP_DEV_ZERO, 1,
-	    [Define if mmap of /dev/zero works.])
-fi
-if test $gcc_cv_func_mmap_anon = yes; then
-  AC_DEFINE(HAVE_MMAP_ANON, 1,
-	    [Define if mmap with MAP_ANON(YMOUS) works.])
-fi
-])
-
 dnl Determine if enumerated bitfields are unsigned.   ISO C says they can 
 dnl be either signed or unsigned.
 dnl
diff --git a/gcc/aclocal.m4 b/gcc/aclocal.m4
index 06028cc..a992c3a 100644
--- a/gcc/aclocal.m4
+++ b/gcc/aclocal.m4
@@ -113,6 +113,7 @@  m4_include([../config/lcmessage.m4])
 m4_include([../config/lib-ld.m4])
 m4_include([../config/lib-link.m4])
 m4_include([../config/lib-prefix.m4])
+m4_include([../config/mmap.m4])
 m4_include([../config/override.m4])
 m4_include([../config/picflag.m4])
 m4_include([../config/progtest.m4])
diff --git a/gcc/configure.ac b/gcc/configure.ac
index d860b2b..8869121 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -1059,7 +1059,7 @@  fi
 AC_CHECK_TYPE(ssize_t, int)
 AC_CHECK_TYPE(caddr_t, char *)
 
-gcc_AC_FUNC_MMAP_BLACKLIST
+GCC_AC_FUNC_MMAP_BLACKLIST
 
 case "${host}" in
 *-*-*vms*)