2001-01-11 Zack Weinberg <zack@wolery.stanford.edu>
authorzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 12 Jan 2001 04:54:42 +0000 (04:54 +0000)
committerzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 12 Jan 2001 04:54:42 +0000 (04:54 +0000)
* aclocal.m4 (AC_FUNC_MMAP_ANYWHERE): Completely rewritten.
Now defines HAVE_MMAP_DEV_ZERO and/or HAVE_MMAP_ANON depending
which you have.
(AC_FUNC_MMAP_FILE): Don't AC_REQUIRE AC_FUNC_MMAP_ANYWHERE.
* configure.in: Set GGC to ggc-page if any of mmap_dev_zero,
mmap_anon, and valloc is available.
* ggc-page.c: Restructure ifdef logic to match new autoconf
spec.  Don't throw away the test page in init_ggc.

* configure, config.in: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38934 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/aclocal.m4
gcc/config.in
gcc/configure
gcc/configure.in
gcc/ggc-page.c

index 078f431..50f9c20 100644 (file)
@@ -1,3 +1,16 @@
+2001-01-11  Zack Weinberg  <zack@wolery.stanford.edu>
+
+       * aclocal.m4 (AC_FUNC_MMAP_ANYWHERE): Completely rewritten.
+       Now defines HAVE_MMAP_DEV_ZERO and/or HAVE_MMAP_ANON depending
+       which you have.
+       (AC_FUNC_MMAP_FILE): Don't AC_REQUIRE AC_FUNC_MMAP_ANYWHERE.
+       * configure.in: Set GGC to ggc-page if any of mmap_dev_zero,
+       mmap_anon, and valloc is available.
+       * ggc-page.c: Restructure ifdef logic to match new autoconf
+       spec.  Don't throw away the test page in init_ggc.
+
+       * configure, config.in: Regenerate.
+
 2001-01-12  Michael Hayes  <mhayes@redhat.com>
 
        * loop.h (total_biv_increment): Constify iv_class pointer.
@@ -44,10 +57,10 @@ Fri Jan 12 00:04:00 MET 2001  Jan Hubicka  <jh@suse.cz>
 
        * builtins.c (std_expand_builtin_va_start): Handle varargs when
        sizeof (int) is larger than sizeof(__word__).
-       
+
 2001-01-11  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * cppinit.c (do_includes): Fix typo.
+       * cppinit.c (do_includes): Fix typo.
 
 2001-01-11  Stephane Carrez  <Stephane.Carrez@worldnet.fr>
 
@@ -63,27 +76,27 @@ Fri Jan 12 00:04:00 MET 2001  Jan Hubicka  <jh@suse.cz>
        (lshrdi_const1, lshrsi3_const16): Likewise.
        (*addhi3, lshrsi3_const1, lshrqi3_const1): Likewise.
        (*movhi_68hc12, *movqi_68hc12): Likewise.
-       (movstrictqi): Make sure reloading in D_REGS as a destination 
+       (movstrictqi): Make sure reloading in D_REGS as a destination
        does not happen.
 
 2001-01-11  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * cppspec.c (DEFAULT_WORD_SWITCH_TAKES_ARG): Add -MQ. 
+       * cppspec.c (DEFAULT_WORD_SWITCH_TAKES_ARG): Add -MQ.
 
 2001-01-11  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * cppinit.c (cpp_start_read): If -fpreprocessed, ignore
-        -D, -U and -A, and don't initialize the builtins.
+       * cppinit.c (cpp_start_read): If -fpreprocessed, ignore
+       -D, -U and -A, and don't initialize the builtins.
        (do_includes): Error if -include or -imacros with -fpreprocessed.
-        * cppmain.c (cb_define, cb_undef): Unconditionally process
-        the callback.
-        * tradcpp.c (main): Fix typo.
+       * cppmain.c (cb_define, cb_undef): Unconditionally process
+       the callback.
+       * tradcpp.c (main): Fix typo.
 
 2000-01-11  Mark Elbrecht  <snowball3@bigfoot.com>
-         
+
         * cppfiles.c (cpp_included, find_include_file, _cpp_execute_include)
           (read_name_map): Use IS_ABSOLUTE_PATH.
-        * tradcpp.c (get_filename): Likewise.   
+        * tradcpp.c (get_filename): Likewise.
 
 2001-01-11  Stephane Carrez  <Stephane.Carrez@worldnet.fr>
 
@@ -104,7 +117,7 @@ Fri Jan 12 00:04:00 MET 2001  Jan Hubicka  <jh@suse.cz>
 
 2001-01-11  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * invoke.texi: Restore documentation of the drivers' switches -MD
+       * invoke.texi: Restore documentation of the drivers' switches -MD
        and -MMD.
 
 2001-01-11  Alexandre Oliva  <aoliva@redhat.com>
@@ -155,22 +168,22 @@ Fri Jan 12 00:04:00 MET 2001  Jan Hubicka  <jh@suse.cz>
 
 2001-01-10  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * Makefile.in (tradcpp0): Depend on mkdeps.h.  Link mkdeps.o
-        * cppinit.c (cpp_start_read): Update comment, remove unneeded
-        if statement.
-        * tradcpp.c: Include mkdeps.h.
-        (deps, print_deps_phony_targets, deps_append, output_deps,
-        init_dependency_output, output_deps): New.
-        (deps_buffer, deps_allocated_size, deps_size, deps_column,
-        deps_output): Delete.
-        (print_deps_missing_files): Rename deps_missing_files.
-        (inhibit_output): Make global.
-        (main): Delete inhibit_output, deps_stream, deps_target.
-        Use mkdeps functionality in the same way as cpplib.  Remove
-        -g3 handling.  Handle -MF, -MP, -MQ, -MT.  Update handling of
-        -M and -MM.  Remove old handling of deps via deps_out, and
-        old reading of environment variables.
-        (get_filename): Update to use deps_add_dep.
+       * Makefile.in (tradcpp0): Depend on mkdeps.h.  Link mkdeps.o
+       * cppinit.c (cpp_start_read): Update comment, remove unneeded
+       if statement.
+       * tradcpp.c: Include mkdeps.h.
+       (deps, print_deps_phony_targets, deps_append, output_deps,
+       init_dependency_output, output_deps): New.
+       (deps_buffer, deps_allocated_size, deps_size, deps_column,
+       deps_output): Delete.
+       (print_deps_missing_files): Rename deps_missing_files.
+       (inhibit_output): Make global.
+       (main): Delete inhibit_output, deps_stream, deps_target.
+       Use mkdeps functionality in the same way as cpplib.  Remove
+       -g3 handling.  Handle -MF, -MP, -MQ, -MT.  Update handling of
+       -M and -MM.  Remove old handling of deps via deps_out, and
+       old reading of environment variables.
+       (get_filename): Update to use deps_add_dep.
 
 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
 
@@ -215,7 +228,7 @@ Fri Jan 12 00:04:00 MET 2001  Jan Hubicka  <jh@suse.cz>
        restore_machine_status.
 
        * emit-rtl.c (init_emit_once): Amend comment describing
-       {init|mark|free}_machine_status. 
+       {init|mark|free}_machine_status.
 
        * tm.texi (Per-Function Data): New node.  Describe the
        INIT_EXPANDERS macro and the {init|mark|free}_machine_status
@@ -223,17 +236,17 @@ Fri Jan 12 00:04:00 MET 2001  Jan Hubicka  <jh@suse.cz>
 
 2001-01-10  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * cppinit.c (OPT_g): Remove.
-        (cpp_handle_option): Update for removed -g3. 
-        (print_help): Update.
-        * cpplib.h (struct cpp_options): Remove debug_output.
-        * cppmain.c (setup_callbacks, cb_define): Update.
-        * gcc.c (cpp_options): Translate -g3 to -dD.  
+       * cppinit.c (OPT_g): Remove.
+       (cpp_handle_option): Update for removed -g3.
+       (print_help): Update.
+       * cpplib.h (struct cpp_options): Remove debug_output.
+       * cppmain.c (setup_callbacks, cb_define): Update.
+       * gcc.c (cpp_options): Translate -g3 to -dD.
 
 2001-01-10  Aldy Hernandez  <aldyh@redhat.com>
 
        * config/i960/i960.md: Change modifier to + on the zero_extract
-        pattern after the (rotate -2 reg) canonicalization pattern.
+       pattern after the (rotate -2 reg) canonicalization pattern.
 
 2001-01-10  Richard Henderson  <rth@redhat.com>
 
@@ -282,14 +295,14 @@ Wed Jan 10 16:38:31 MET 2001  Jan Hubicka  <jh@suse.cz>
        @w.
 
 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
-       
-        * gcc.c (cpp_options): Set MD file name from output
-        filename, if specified.
-        (suffix_subst): New static variable.
-        (do_spec): Clear it.
-        (do_spec_1, case '.'): Handle new `%.suffix' spec.
-        Clear it.
-        (give_switch): Handle suffix_subst.
+
+       * gcc.c (cpp_options): Set MD file name from output
+       filename, if specified.
+       (suffix_subst): New static variable.
+       (do_spec): Clear it.
+       (do_spec_1, case '.'): Handle new `%.suffix' spec.
+       Clear it.
+       (give_switch): Handle suffix_subst.
 
 2001-01-10  Phil Edwards  <pme@sources.redhat.com>
 
@@ -301,28 +314,28 @@ Wed Jan 10 16:38:31 MET 2001  Jan Hubicka  <jh@suse.cz>
 
 2001-01-10  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * c-lang.c (lang_hooks): Update.
-        (lang_decode_option): Remove.
-        (lang_init_options): Rename c_init_options.
-        * toplev.c (main): Use lang_hooks for lang_init_options
-        and lang_decode_option.
-        * toplev.h (lang_hooks): Add 2 new hooks.
-        * tree.h: Remove lang_init_options and lang_decode_option.
-        * cp/cp-tree.h (lang_decode_option): Rename cxx_decode_option.
-        * cp/decl2.c: Similarly.
-        * cp/lex.c (lang_init_options): Rename cxx_init_options.
-        (lang_hooks): Update.   
-        * f/com.c (f_init, f_finish): Rename ffe_init, ffe_finish
-        for consistency.
-        (lang_init_options): Rename ffe_init_options.
-        (lang_hooks): Update.
-        (lang_decode_option): Remove.
-        * java/lang.c (lang_init_options): Rename java_init_options.
-        (lang_decode_option): Rename java_decode_option.
-        (lang_hooks): Update.
-        * objc/objc-act.c (lang_init_options): Rename objc_init_options.
-        (lang_decode_option): Rename objc_decode_option.
-        (lang_hooks): Update.
+       * c-lang.c (lang_hooks): Update.
+       (lang_decode_option): Remove.
+       (lang_init_options): Rename c_init_options.
+       * toplev.c (main): Use lang_hooks for lang_init_options
+       and lang_decode_option.
+       * toplev.h (lang_hooks): Add 2 new hooks.
+       * tree.h: Remove lang_init_options and lang_decode_option.
+       * cp/cp-tree.h (lang_decode_option): Rename cxx_decode_option.
+       * cp/decl2.c: Similarly.
+       * cp/lex.c (lang_init_options): Rename cxx_init_options.
+       (lang_hooks): Update.
+       * f/com.c (f_init, f_finish): Rename ffe_init, ffe_finish
+       for consistency.
+       (lang_init_options): Rename ffe_init_options.
+       (lang_hooks): Update.
+       (lang_decode_option): Remove.
+       * java/lang.c (lang_init_options): Rename java_init_options.
+       (lang_decode_option): Rename java_decode_option.
+       (lang_hooks): Update.
+       * objc/objc-act.c (lang_init_options): Rename objc_init_options.
+       (lang_decode_option): Rename objc_decode_option.
+       (lang_hooks): Update.
 
 2001-01-09  Nick Clifton  <nickc@redhat.com>
 
@@ -367,7 +380,7 @@ Tue Jan  9 21:25:19 2001  Jeffrey A Law  (law@cygnus.com)
 
        * reload.c (find_reloads_address): Check for eliminable registers
                  when substituting a constant expression for a pseudo.
-       
+
 2001-01-09  Joseph S. Myers  <jsm28@cam.ac.uk>
 
        * c-common.c (enum format_type): Add format_type_error.
@@ -469,16 +482,16 @@ Tue Jan  9 21:25:19 2001  Jeffrey A Law  (law@cygnus.com)
 
 2001-01-09  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * cppinit.c (OPT_MD, OPT_MMD): Restore.
-        (cpp_handle_option): Handle them.
-        (cpp_post_options): Ensure one of -M or -MM is specified with
-        any other -M? option.
-        (init_dependency_output): Suppress output with -MG.
+       * cppinit.c (OPT_MD, OPT_MMD): Restore.
+       (cpp_handle_option): Handle them.
+       (cpp_post_options): Ensure one of -M or -MM is specified with
+       any other -M? option.
+       (init_dependency_output): Suppress output with -MG.
 
 2001-01-09  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * cpp.texi: Update.
-        * invoke.texi: Update.
+       * cpp.texi: Update.
+       * invoke.texi: Update.
 
 2001-01-09  Bernd Schmidt  <bernds@redhat.com>
 
@@ -488,25 +501,25 @@ Tue Jan  9 21:25:19 2001  Jeffrey A Law  (law@cygnus.com)
 2001-01-09  Neil Booth  <neil@daikokuya.demon.co.uk>
 
        * c-lang.c (lang_hooks): Update.
-        (lang_init): Rename c_init.
-        (lang_finish): Remove.
-        * toplev.c (compile_file): Use lang_hooks for lang_init ()
-        and lang_finish ().
-        * toplev.h (lang_hooks): Add init () and finish ().
-        * tree.h (lang_init, lang_finish): Remove.
-        * cp/tree.h (lang_init, lang_finish): Remove.
-        * cp/decl2.c (cxx_post_options, lang_hooks): Move to cp/lex.c.
-        * cp/lex.c (cxx_init, cxx_finish, cxx_post_options,
-        lang_hooks): New.
-        (lang_init, lang_finish): Remove.
-        * f/com.c (lang_init, lang_finish): Rename f_init, f_finish.
-        (lang_hooks): Update.
-        * java/lang.c (lang_init): Rename java_init.
-        (lang_finish): Remove.
-        (lang_hooks): Update.
-        * objc/objc-act.c (lang_init): Rename objc_init.
-        (lang_finish): Remove.
-        (lang_hoooks): Update.
+       (lang_init): Rename c_init.
+       (lang_finish): Remove.
+       * toplev.c (compile_file): Use lang_hooks for lang_init ()
+       and lang_finish ().
+       * toplev.h (lang_hooks): Add init () and finish ().
+       * tree.h (lang_init, lang_finish): Remove.
+       * cp/tree.h (lang_init, lang_finish): Remove.
+       * cp/decl2.c (cxx_post_options, lang_hooks): Move to cp/lex.c.
+       * cp/lex.c (cxx_init, cxx_finish, cxx_post_options,
+       lang_hooks): New.
+       (lang_init, lang_finish): Remove.
+       * f/com.c (lang_init, lang_finish): Rename f_init, f_finish.
+       (lang_hooks): Update.
+       * java/lang.c (lang_init): Rename java_init.
+       (lang_finish): Remove.
+       (lang_hooks): Update.
+       * objc/objc-act.c (lang_init): Rename objc_init.
+       (lang_finish): Remove.
+       (lang_hoooks): Update.
 
 20001-01-09  Graham Stott  <grahams@redhat.com>
 
@@ -550,7 +563,7 @@ Tue Jan  9 21:25:19 2001  Jeffrey A Law  (law@cygnus.com)
 2001-01-08  Nick Clifton  <nickc@redhat.com>
 
        * config/v850/v850.c (ra_rtx): Delete.
-        (v850_save_machine_status): Delete.
+       (v850_save_machine_status): Delete.
        (v850_restore_machine_status): Delete.
        (v850_init_machine_status): New function.
        (v850_mark_machine_status): New function.
@@ -563,7 +576,7 @@ Tue Jan  9 21:25:19 2001  Jeffrey A Law  (law@cygnus.com)
        to take a const char *, to avoid compile time warning.
        * config/v850/v850.h (ASM_OUTPUT_LABELREF): Undefine, not needed.
        (USER_LABEL_PREFIX): Redefine.
-       
+
 2000-01-08  Jim Wilson  <wilson@redhat.com>
 
        * sched-rgn.c (BITSET_ADD, BITSET_REMOVE, bitset_member): Cast
@@ -582,10 +595,10 @@ Tue Jan  9 21:25:19 2001  Jeffrey A Law  (law@cygnus.com)
 
 2001-01-08  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * cppinit.c (init): Rename init_library.
-        (cpp_create_reader): Update.
-        * gcc.c (cpp_options): If -o given, use it as the target of
-        any -M options.
+       * cppinit.c (init): Rename init_library.
+       (cpp_create_reader): Update.
+       * gcc.c (cpp_options): If -o given, use it as the target of
+       any -M options.
 
 2001-01-08  Richard Earnshaw  <rearnsha@arm.com>
 
@@ -604,7 +617,7 @@ Tue Jan  9 21:25:19 2001  Jeffrey A Law  (law@cygnus.com)
        (emit_multi_reg_push, emit_sfm, expand_prologue): Use constants.
        * arm.h (SP_REGNUM, IP_REGNUM, PC_REGNUM): Delete defines.
        (STACK_POINTER_REGNUM): Define in terms of SP_REGNUM.
-       
+
 Mon Jan  8 16:14:56 MET 2001  Jan Hubicka  <jh@suse.cz>
 
        * jump.c (jump_optimize_1): Use reversed_comparison_code
@@ -622,7 +635,7 @@ Mon Jan  8 16:14:56 MET 2001  Jan Hubicka  <jh@suse.cz>
 
        * arm.h (HARD_REGNO_RENAME_OK): Delete.
        (EPILOGUE_USES): Define.
-       (INITIAL_ELIMINATION_OFFSET): Current prologue code does not 
+       (INITIAL_ELIMINATION_OFFSET): Current prologue code does not
        automatically stack the LR if it isn't live.
 
 Mon Jan  8 13:46:02 MET 2001  Jan Hubicka  <jh@suse.cz>
@@ -702,28 +715,28 @@ Sun Jan  7 19:37:48 MET 2001  Jan Hubicka  <jh@suse.cz>
 
 2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * fix-header.c (read_scan_file): s/pfile/scan_in/.
+       * fix-header.c (read_scan_file): s/pfile/scan_in/.
 
 2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * c-lang.c (c_post_options): Call cpp_post_options.
+       * c-lang.c (c_post_options): Call cpp_post_options.
        * objc/objc-act.c (objc_post_options): Similarly.
        * cppmain.c (main): Similarly.
-        * fix-header.c (read_scan_file): Similarly.
-        * cppinit.c (cpp_start_read): Move option consistency checks
-        to cpp_post_options.  Don't call init_dependency_output.
-        If needed, add default target and main file dependency.
-        (OPT_MD, OPT_MMD): Remove.
-        (OPT_MF): New.
-        (cpp_handle_option): Update for OPT_* changes.
-        (cpp_post_options): New.
-        (init_dependency_output): Command line -MF overrides environment
-        variables.  Don't set default target etc.  Suppress output
-        if dependencies are going to stdout.
-        (print_help): Update.
-        * cpplib.h (cpp_post_options): New.
-        * gcc.c (cpp_options): Update for -MD, -MMD, -MF.
-       
+       * fix-header.c (read_scan_file): Similarly.
+       * cppinit.c (cpp_start_read): Move option consistency checks
+       to cpp_post_options.  Don't call init_dependency_output.
+       If needed, add default target and main file dependency.
+       (OPT_MD, OPT_MMD): Remove.
+       (OPT_MF): New.
+       (cpp_handle_option): Update for OPT_* changes.
+       (cpp_post_options): New.
+       (init_dependency_output): Command line -MF overrides environment
+       variables.  Don't set default target etc.  Suppress output
+       if dependencies are going to stdout.
+       (print_help): Update.
+       * cpplib.h (cpp_post_options): New.
+       * gcc.c (cpp_options): Update for -MD, -MMD, -MF.
+
 Sun Jan  7 14:44:19 MET 2001  Jan Hubicka  <jh@suse.cz>
 
        * jump.c (comparison_dominates_p): Support unordered compares.
@@ -766,17 +779,17 @@ Sun Jan  7 13:49:19 MET 2001  Jan Hubicka  <jh@suse.cz>
 
 2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * (initialize, initialize_builtins,
-        initialize_dependency_output, initialize_standard_includes):
-        Rename s/initialize/init. Update.
-        (init_dependency_output): Move to after
-        cpp_handle_options, the correct location temporally at least.
-        (opt_comp): Move next to init (), its caller.  Fix prototype.
-        (init): Make "initialized" local scope.
-        (cpp_create_reader): Always call init ().
-        (cpp_start_read): Update.
-        (output_deps): New function, broken out of cpp_finish.
-        (cpp_finish): Break out output_deps.
+       * (initialize, initialize_builtins,
+       initialize_dependency_output, initialize_standard_includes):
+       Rename s/initialize/init. Update.
+       (init_dependency_output): Move to after
+       cpp_handle_options, the correct location temporally at least.
+       (opt_comp): Move next to init (), its caller.  Fix prototype.
+       (init): Make "initialized" local scope.
+       (cpp_create_reader): Always call init ().
+       (cpp_start_read): Update.
+       (output_deps): New function, broken out of cpp_finish.
+       (cpp_finish): Break out output_deps.
 
 2001-01-07  Richard Henderson  <rth@redhat.com>
 
@@ -870,26 +883,26 @@ Sun Jan  7 13:49:19 MET 2001  Jan Hubicka  <jh@suse.cz>
 
 2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * toplev.c (main): Call the front-end specific post_options
-        hook if one is given.
-        * toplev.h (struct_lang_hooks, lang_hooks): New.
-        * c-lang.c (c_post_options, lang_hooks): Implement lang_hooks
-        for the C front end.
-        * cp/decl2.c (cxx_post_options, lang_hooks): Implement
-        lang_hooks for the C++ front end.
-        * objc/objc-act.c (objc_post_options, lang_hooks): Implement
-        lang_hooks for the ObjC front end.
-        * f/com.c (lang_hooks): Hooks for the Fortran front end.
-        * java/lang.c (lang_hooks): Hooks for the Java front end.
+       * toplev.c (main): Call the front-end specific post_options
+       hook if one is given.
+       * toplev.h (struct_lang_hooks, lang_hooks): New.
+       * c-lang.c (c_post_options, lang_hooks): Implement lang_hooks
+       for the C front end.
+       * cp/decl2.c (cxx_post_options, lang_hooks): Implement
+       lang_hooks for the C++ front end.
+       * objc/objc-act.c (objc_post_options, lang_hooks): Implement
+       lang_hooks for the ObjC front end.
+       * f/com.c (lang_hooks): Hooks for the Fortran front end.
+       * java/lang.c (lang_hooks): Hooks for the Java front end.
 
 2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * c-lex.c (init_c_lex): Request #define / #undef callbacks
-        for verbose DWARF[2] debugging.
-        (cb_define, cb_undef): The new callbacks.
-        * toplev.h (debug_define, debug_undef): Make const correct.
-        * toplev.c (debug_define, debug_undef): Similarly.  Do not   
-        perform the verbosity tests here anymore.
+       * c-lex.c (init_c_lex): Request #define / #undef callbacks
+       for verbose DWARF[2] debugging.
+       (cb_define, cb_undef): The new callbacks.
+       * toplev.h (debug_define, debug_undef): Make const correct.
+       * toplev.c (debug_define, debug_undef): Similarly.  Do not
+       perform the verbosity tests here anymore.
 
 2001-01-07  Alexandre Oliva  <aoliva@redhat.com>
 
@@ -954,19 +967,19 @@ Fri Jan  5 16:34:18 2001  Nick Clifton  <nickc@redhat.com>
 
 2001-01-05  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * cpp.texi: Update for -MQ.
-        * cppinit.c (cpp_create_reader): Always create pfile->deps.
-        (cpp_cleanup): Always free pfile->deps.
-        (initialize_dependency_output): Don't create pfile->deps.
-        (cpp_handle_option): Similarly.
-        (OPT_MQ): New.
-        * gcc.c (cpp_options): Handle -MQ.
-        (DEFAULT_WORD_SWITCH_TAKES_ARG): Add -MQ.
-        * mkdeps.c (base_name): Remove.
-        (deps_init): Don't allocate vector space until it's needed.
-        (deps_free): Only free vectors if allocated.
-        (deps_add_target, deps_add_dep): Update for initial allocation.
-        (deps_add_default_target): Don't strip to the base_name.
+       * cpp.texi: Update for -MQ.
+       * cppinit.c (cpp_create_reader): Always create pfile->deps.
+       (cpp_cleanup): Always free pfile->deps.
+       (initialize_dependency_output): Don't create pfile->deps.
+       (cpp_handle_option): Similarly.
+       (OPT_MQ): New.
+       * gcc.c (cpp_options): Handle -MQ.
+       (DEFAULT_WORD_SWITCH_TAKES_ARG): Add -MQ.
+       * mkdeps.c (base_name): Remove.
+       (deps_init): Don't allocate vector space until it's needed.
+       (deps_free): Only free vectors if allocated.
+       (deps_add_target, deps_add_dep): Update for initial allocation.
+       (deps_add_default_target): Don't strip to the base_name.
 
 2001-01-05  DJ Delorie <dj@redhat.com>
 
@@ -981,7 +994,7 @@ Fri Jan  5 16:34:18 2001  Nick Clifton  <nickc@redhat.com>
 
        * config/v850/v850-protos.h: Add prototypes for v850_return_addr
        and v850_init_expanders.
-       
+
 2001-01-05  Zack Weinberg  <zack@wolery.stanford.edu>
 
        * cpplib.h (struct cpp_reader): Add help_only field.
@@ -1009,7 +1022,7 @@ Fri Jan  5 16:34:18 2001  Nick Clifton  <nickc@redhat.com>
        * print-rtl.c (print_simple_rtl): New.
        (flag_simple): New.
        (print_rtx): Disable printing of flags and modes, etc.,
-        if `flag_simple` nonzero.
+       if `flag_simple` nonzero.
 
 2001-01-05  Zack Weinberg  <zack@wolery.stanford.edu>
 
@@ -1086,7 +1099,7 @@ Fri Jan  5 20:34:06 2001  J"orn Rennecke <amylaar@redhat.com>
 2001-01-05  Daniel Berlin  <dberlin@redhat.com>
 
        * c-common.c (lang_get_alias_set): Say we know nothing of
-       VECTOR_TYPE aliasing. 
+       VECTOR_TYPE aliasing.
 
        * dwarf2out.c (is_base_type): Handle VECTOR_TYPE properly.
 
@@ -1127,18 +1140,18 @@ Fri Jan  5 16:29:49 MET 2001  Jan Hubicka  <jh@suse.cz>
 
 2001-01-05  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * cpp.texi: Update for -MP.  Clarify behaviour of -MT.
-        * cppinit.c (initialize_dependency_output):  Update.
-        (cpp_finish): Output dummy targets for -MP.
-        (OPT_MP): New.
-        (cpp_handle_option): Handle -MP.  Don't quote -MT options.  
-        * cpplib.h (struct cpp_options): Add deps_phony_targets.
-        * gcc.c (cpp_options): Update to handle -MP.
-        * mkdeps.c (deps_add_target, deps_add_default_target): Update
-        to quote only the default target.
-        (deps_phony_targets): Insert a preceding newline.  Rename from
-        deps_dummy_targets for consistency.
-        * mkdeps.h: Update
+       * cpp.texi: Update for -MP.  Clarify behaviour of -MT.
+       * cppinit.c (initialize_dependency_output):  Update.
+       (cpp_finish): Output dummy targets for -MP.
+       (OPT_MP): New.
+       (cpp_handle_option): Handle -MP.  Don't quote -MT options.
+       * cpplib.h (struct cpp_options): Add deps_phony_targets.
+       * gcc.c (cpp_options): Update to handle -MP.
+       * mkdeps.c (deps_add_target, deps_add_default_target): Update
+       to quote only the default target.
+       (deps_phony_targets): Insert a preceding newline.  Rename from
+       deps_dummy_targets for consistency.
+       * mkdeps.h: Update
 
 2001-01-05  Alexandre Oliva  <aoliva@redhat.com>
 
@@ -1159,7 +1172,7 @@ Fri Jan  5 16:29:49 MET 2001  Jan Hubicka  <jh@suse.cz>
        (process_init_element): Don't dereference null DECL_SIZE.
        * varasm.c (array_size_for_constructor): Return a HOST_WIDE_INT.
        Don't abort for empty constructors.  Use size_binop
-       (output_constructor): Add commentary regarding zero length 
+       (output_constructor): Add commentary regarding zero length
        array futures.  Abort if we try to initialize an array of
        unspecified length with a non-empty constructor in the middle
        of a structure.
@@ -1188,7 +1201,7 @@ Fri Jan  5 16:29:49 MET 2001  Jan Hubicka  <jh@suse.cz>
        for prset and prget.
 
 2001-01-05  Michael Hayes  <mhayes@redhat.com>
-       
+
        * loop.h (struct loop_reg): New.
        (struct loop_regs): Change to use array of `struct loop_reg'.
        * loop.c: Replace assortment of varrays with single regs array.
@@ -1201,7 +1214,7 @@ Fri Jan  5 16:29:49 MET 2001  Jan Hubicka  <jh@suse.cz>
        (loop_optimize): Delete `moved_once' array.
 
 2001-01-05  Michael Hayes  <mhayes@redhat.com>
-       
+
        * loop.c (prescan_loop): Set loop_info->has_nonconst_call.
        Use it instead of loop_info->has_call for scanning loop mems.
        (check_dbra_loop): Replace loop_info->has_call test with
@@ -1320,18 +1333,18 @@ Thu Jan  4 15:54:05 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
 2001-01-04  Neil Booth  <neil@daikokuya.demon.co.uk>
 
-        * cpp.texi: Update for -MT.
-        * cppinit.c (initialize_dependency_output): Add a default
-        target if none has been given already.
-        (no_tgt, OPT_MT): New.
-        (cpp_handle_option): Handle -MT.  Update -M etc.
-        * cpplib.h (struct cpp_options): Remove deps_target.
-        * gcc.c (cpp_options): Handle -MT.
-        * mkdeps.c (struct deps): Move from mkdeps.h.
-        (deps_calc_target): Rename deps_add_default_target.  Add a
-        default target if none has been specified already.
-        * mkdeps.h (struct deps): Move to mkdeps.c.
-        (deps_calc_target): Rename deps_add_default_target.
+       * cpp.texi: Update for -MT.
+       * cppinit.c (initialize_dependency_output): Add a default
+       target if none has been given already.
+       (no_tgt, OPT_MT): New.
+       (cpp_handle_option): Handle -MT.  Update -M etc.
+       * cpplib.h (struct cpp_options): Remove deps_target.
+       * gcc.c (cpp_options): Handle -MT.
+       * mkdeps.c (struct deps): Move from mkdeps.h.
+       (deps_calc_target): Rename deps_add_default_target.  Add a
+       default target if none has been specified already.
+       * mkdeps.h (struct deps): Move to mkdeps.c.
+       (deps_calc_target): Rename deps_add_default_target.
 
 2000-01-03  Richard Henderson  <rth@redhat.com>
 
@@ -1355,7 +1368,7 @@ Thu Jan  4 15:54:05 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
        * config/alpha/alpha.md (addvsi3, addvdi3): New.
        (negvsi2, negvdi2, subvsi3, subvdi3, mulvsi3, mulvdi3): New.
-       
+
 2001-01-03  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
 
        * tradcpp.c (main): Make sure finclude() is called with a valid
@@ -1464,7 +1477,7 @@ Wed Jan  3 08:53:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
        * c-common.h (ASM_INPUT_P): New.
        * c-parse.in (asm): Set it when needed.
-       * c-semantics.c (genrtl_asm_stmt): Test it instead of the 
+       * c-semantics.c (genrtl_asm_stmt): Test it instead of the
        existance of an operand.
 
 Tue Jan  2 20:27:07 MET 2001  Jan Hubicka  <jh@suse.cz>
@@ -1527,7 +1540,7 @@ Tue Jan  2 10:47:38 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.
 
 2001-01-02  Philip Blundell  <pb@futuretv.com>
 
-       * config/arm/linux-gas.h (CLEAR_INSN_CACHE): Avoid illegal clobber 
+       * config/arm/linux-gas.h (CLEAR_INSN_CACHE): Avoid illegal clobber
        of input operand.
 
 2001-01-02  Richard Henderson  <rth@redhat.com>
@@ -1585,9 +1598,9 @@ Mon Jan  1 21:28:29 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
 2001-01-01  John David Anglin  <dave@hiauly1.hia.nrc.ca>
 
-        * loop.c (add_label_notes): Increment the label usage count when
-        a note is added to an insn which refers to a CODE_LABEL.
-        * gcse.c (add_label_notes): Likewise.
+       * loop.c (add_label_notes): Increment the label usage count when
+       a note is added to an insn which refers to a CODE_LABEL.
+       * gcse.c (add_label_notes): Likewise.
 
 2001-01-01  Andreas Jaeger  <aj@suse.de>
 
index c3e1d57..4544c77 100644 (file)
@@ -737,16 +737,17 @@ AC_SUBST($1)dnl
 # Check whether mmap can map an arbitrary page from /dev/zero or with
 # MAP_ANONYMOUS, without MAP_FIXED.
 AC_DEFUN([AC_FUNC_MMAP_ANYWHERE],
-[AC_CHECK_HEADERS(unistd.h)
-AC_CHECK_FUNCS(getpagesize)
-AC_CACHE_CHECK(for working mmap which provides zeroed pages anywhere,
-  ac_cv_func_mmap_anywhere,
-[AC_TRY_RUN([
-/* Test by Richard Henderson and Alexandre Oliva.
-   Check whether mmap MAP_ANONYMOUS or mmap from /dev/zero works. */
+[AC_CHECK_FUNCS(getpagesize)
+# The test program for the next two tests is the same except for one
+# set of ifdefs.
+changequote({{{,}}})dnl
+{{{cat >ct-mmap.inc <<'EOF'
 #include <sys/types.h>
-#include <fcntl.h>
 #include <sys/mman.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <setjmp.h>
+#include <stdio.h>
 
 #if !defined (MAP_ANONYMOUS) && defined (MAP_ANON)
 # define MAP_ANONYMOUS MAP_ANON
@@ -793,45 +794,246 @@ AC_CACHE_CHECK(for working mmap which provides zeroed pages anywhere,
 
 #endif /* no HAVE_GETPAGESIZE */
 
-int main()
-{
-  char *x;
-  int fd, pg;
-
-#ifndef MAP_ANONYMOUS
-  fd = open("/dev/zero", O_RDWR);
-  if (fd < 0)
-    exit(1);
+#ifndef MAP_FAILED
+# define MAP_FAILED -1
 #endif
 
-  pg = getpagesize();
-#ifdef MAP_ANONYMOUS
-  x = (char*)mmap(0, pg, PROT_READ|PROT_WRITE,
-                  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+#undef perror_exit
+#define perror_exit(str, val) \
+  do { perror(str); exit(val); } while (0)
+
+/* Some versions of cygwin mmap require that munmap is called with the
+   same parameters as mmap.  GCC expects that this is not the case.
+   Test for various forms of this problem.  Warning - icky signal games.  */
+
+static sigset_t unblock_sigsegv;
+static jmp_buf r;
+static size_t pg;
+static int devzero;
+
+static char *
+anonmap (size)
+     size_t size;
+{
+#ifdef USE_MAP_ANON
+  return (char *) mmap (0, size, PROT_READ|PROT_WRITE,
+                       MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
 #else
-  x = (char*)mmap(0, pg, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
+  return (char *) mmap (0, size, PROT_READ|PROT_WRITE,
+                       MAP_PRIVATE, devzero, 0);
 #endif
-  if (x == (char *) -1)
-    exit(2);
+}
+
+static void
+sigsegv (unused)
+     int unused;
+{
+  sigprocmask (SIG_UNBLOCK, &unblock_sigsegv, 0);
+  longjmp (r, 1);
+}
+
+/* Basic functionality test.  */
+void
+test_0 ()
+{
+  char *x = anonmap (pg);
+  if (x == (char *) MAP_FAILED)
+    perror_exit("test 0 mmap", 2);
 
   *(int *)x += 1;
 
   if (munmap(x, pg) < 0)
-    exit(3);
+    perror_exit("test 0 munmap", 3);
+}
+
+/* 1. If we map a 2-page region and unmap its second page, the first page
+   must remain.  */
+static void
+test_1 ()
+{
+  char *x = anonmap (pg * 2);
+  if (x == (char *)MAP_FAILED)
+    perror_exit ("test 1 mmap", 4);
+
+  signal (SIGSEGV, sigsegv);
+  if (setjmp (r))
+    perror_exit ("test 1 fault", 5);
+
+  x[0] = 1;
+  x[pg] = 1;
+
+  if (munmap (x + pg, pg) < 0)
+    perror_exit ("test 1 munmap 1", 6);
+  x[0] = 2;
+
+  if (setjmp (r) == 0)
+    {
+      x[pg] = 1;
+      perror_exit ("test 1 no fault", 7);
+    }
+  if (munmap (x, pg) < 0)
+    perror_exit ("test 1 munmap 2", 8);
+}
+
+/* 2. If we map a 2-page region and unmap its first page, the second
+   page must remain.  */
+static void
+test_2 ()
+{
+  char *x = anonmap (pg * 2);
+  if (x == (char *)MAP_FAILED)
+    perror_exit ("test 2 mmap", 9);
+
+  signal (SIGSEGV, sigsegv);
+  if (setjmp (r))
+    perror_exit ("test 2 fault", 10);
+
+  x[0] = 1;
+  x[pg] = 1;
+
+  if (munmap (x, pg) < 0)
+    perror_exit ("test 2 munmap 1", 11);
+
+  x[pg] = 2;
+
+  if (setjmp (r) == 0)
+    {
+      x[0] = 1;
+      perror_exit ("test 2 no fault", 12);
+    }
+
+  if (munmap (x+pg, pg) < 0)
+    perror_exit ("test 2 munmap 2", 13);
+}
+
+/* 3. If we map two adjacent 1-page regions and unmap them both with
+   one munmap, both must go away.
+
+   Getting two adjacent 1-page regions with two mmap calls is slightly
+   tricky.  All OS's tested skip over already-allocated blocks; therefore
+   we have been careful to unmap all allocated regions in previous tests.
+   HP/UX allocates pages backward in memory.  No OS has yet been observed
+   to be so perverse as to leave unmapped space between consecutive calls
+   to mmap.  */
+
+static void
+test_3 ()
+{
+  char *x, *y, *z;
+
+  x = anonmap (pg);
+  if (x == (char *)MAP_FAILED)
+    perror_exit ("test 3 mmap 1", 14);
+  y = anonmap (pg);
+  if (y == (char *)MAP_FAILED)
+    perror_exit ("test 3 mmap 2", 15);
+
+  if (y != x + pg)
+    {
+      if (y == x - pg)
+       z = y, y = x, x = z;
+      else
+       {
+         fprintf (stderr, "test 3 nonconsecutive pages - %lx, %lx\n",
+                  (unsigned long)x, (unsigned long)y);
+         exit (16);
+       }
+    }
+
+  signal (SIGSEGV, sigsegv);
+  if (setjmp (r))
+    perror_exit ("test 3 fault", 17);
+
+  x[0] = 1;
+  y[0] = 1;
+
+  if (munmap (x, pg*2) < 0)
+    perror_exit ("test 3 munmap", 18);
+
+  if (setjmp (r) == 0)
+    {
+      x[0] = 1;
+      perror_exit ("test 3 no fault 1", 19);
+    }
+  
+  signal (SIGSEGV, sigsegv);
+  if (setjmp (r) == 0)
+    {
+      y[0] = 1;
+      perror_exit ("test 3 no fault 2", 20);
+    }
+}
+
+int
+main ()
+{
+  sigemptyset (&unblock_sigsegv);
+  sigaddset (&unblock_sigsegv, SIGSEGV);
+  pg = getpagesize ();
+#ifndef USE_MAP_ANON
+  devzero = open ("/dev/zero", O_RDWR);
+  if (devzero < 0)
+    perror_exit ("open /dev/zero", 1);
+#endif
+
+  test_0();
+  test_1();
+  test_2();
+  test_3();
 
   exit(0);
-}], ac_cv_func_mmap_anywhere=yes, ac_cv_func_mmap_anywhere=no,
-ac_cv_func_mmap_anywhere=no)])
-if test $ac_cv_func_mmap_anywhere = yes; then
-  AC_DEFINE(HAVE_MMAP_ANYWHERE, 1,
-           [Define if mmap can get us zeroed pages without MAP_FIXED.])
+}
+EOF}}}
+changequote([,])dnl
+
+AC_CACHE_CHECK(for working mmap from /dev/zero,
+  ac_cv_func_mmap_dev_zero,
+[AC_TRY_RUN(
+ [#include "ct-mmap.inc"],
+ ac_cv_func_mmap_dev_zero=yes,
+ [if test $? -lt 4
+ then ac_cv_func_mmap_dev_zero=no
+ else ac_cv_func_mmap_dev_zero=buggy
+ fi],
+ # If this is not cygwin, and /dev/zero is a character device, it's probably
+ # safe to assume it works.
+ [case "$host_os" in
+   cygwin* | win32 | pe | mingw* ) ac_cv_func_mmap_dev_zero=buggy ;;
+   * ) if test -c /dev/zero
+       then ac_cv_func_mmap_dev_zero=yes
+       else ac_cv_func_mmap_dev_zero=no
+       fi ;;
+  esac])
+])
+if test $ac_cv_func_mmap_dev_zero = yes; then
+  AC_DEFINE(HAVE_MMAP_DEV_ZERO, 1,
+           [Define if mmap can get us zeroed pages from /dev/zero.])
+fi
+
+AC_CACHE_CHECK([for working mmap with MAP_ANON(YMOUS)],
+  ac_cv_func_mmap_anon,
+[AC_TRY_RUN(
+ [#define USE_MAP_ANON
+#include "ct-mmap.inc"],
+ ac_cv_func_mmap_anon=yes,
+ [if test $? -lt 4
+ then ac_cv_func_mmap_anon=no
+ else ac_cv_func_mmap_anon=buggy
+ fi],
+ # Unlike /dev/zero, it is not safe to assume MAP_ANON(YMOUS) works
+ # just because it's there. Some SCO Un*xen define it but don't implement it.
+ ac_cv_func_mmap_anon=no)
+])
+if test $ac_cv_func_mmap_anon = yes; then
+  AC_DEFINE(HAVE_MMAP_ANON, 1,
+           [Define if mmap can get us zeroed pages using MAP_ANON(YMOUS).])
 fi
+rm -f ct-mmap.inc
 ])
 
 # Check whether mmap can map a plain file, without MAP_FIXED.
 AC_DEFUN([AC_FUNC_MMAP_FILE], 
-[AC_REQUIRE([AC_FUNC_MMAP_ANYWHERE])dnl
-AC_CACHE_CHECK(for working mmap of a file, ac_cv_func_mmap_file,
+[AC_CACHE_CHECK(for working mmap of a file, ac_cv_func_mmap_file,
 [# Create a file one thousand bytes long.
 for i in 1 2 3 4 5 6 7 8 9 0
 do for j in 1 2 3 4 5 6 7 8 9 0
index 63af404..5056b42 100644 (file)
 /* Define if printf supports %p. */
 #undef HAVE_PRINTF_PTR
 
-/* Define if mmap can get us zeroed pages without MAP_FIXED. */
-#undef HAVE_MMAP_ANYWHERE
+/* Define if mmap can get us zeroed pages from /dev/zero. */
+#undef HAVE_MMAP_DEV_ZERO
+
+/* Define if mmap can get us zeroed pages using MAP_ANON(YMOUS). */
+#undef HAVE_MMAP_ANON
 
 /* Define if read-only mmap of a plain file works. */
 #undef HAVE_MMAP_FILE
index 2e96d7d..39e8e46 100755 (executable)
@@ -1558,7 +1558,7 @@ for ac_kw in inline __inline__ __inline; do
 #include "confdefs.h"
 
 int main() {
-} $ac_kw foo() {
+} int $ac_kw foo() {
 ; return 0; }
 EOF
 if { (eval echo configure:1565: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
@@ -1588,7 +1588,7 @@ esac
 
 
 # Find some useful tools
-for ac_prog in gawk mawk nawk awk
+for ac_prog in mawk gawk nawk awk
 do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -3192,55 +3192,15 @@ EOF
 
 fi
 
-for ac_hdr in unistd.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3200: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3205 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3210: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
 for ac_func in getpagesize
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3239: checking for $ac_func" >&5
+echo "configure:3199: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3244 "configure"
+#line 3204 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3263,7 +3223,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3227: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3287,23 +3247,15 @@ else
 fi
 done
 
-echo $ac_n "checking for working mmap which provides zeroed pages anywhere""... $ac_c" 1>&6
-echo "configure:3292: checking for working mmap which provides zeroed pages anywhere" >&5
-if eval "test \"`echo '$''{'ac_cv_func_mmap_anywhere'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_func_mmap_anywhere=no
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3300 "configure"
-#include "confdefs.h"
-
-/* Test by Richard Henderson and Alexandre Oliva.
-   Check whether mmap MAP_ANONYMOUS or mmap from /dev/zero works. */
+# The test program for the next two tests is the same except for one
+# set of ifdefs.
+cat >ct-mmap.inc <<'EOF'
 #include <sys/types.h>
-#include <fcntl.h>
 #include <sys/mman.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <setjmp.h>
+#include <stdio.h>
 
 #if !defined (MAP_ANONYMOUS) && defined (MAP_ANON)
 # define MAP_ANONYMOUS MAP_ANON
@@ -3350,59 +3302,289 @@ else
 
 #endif /* no HAVE_GETPAGESIZE */
 
-int main()
-{
-  char *x;
-  int fd, pg;
-
-#ifndef MAP_ANONYMOUS
-  fd = open("/dev/zero", O_RDWR);
-  if (fd < 0)
-    exit(1);
+#ifndef MAP_FAILED
+# define MAP_FAILED -1
 #endif
 
-  pg = getpagesize();
-#ifdef MAP_ANONYMOUS
-  x = (char*)mmap(0, pg, PROT_READ|PROT_WRITE,
-                  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+#undef perror_exit
+#define perror_exit(str, val) \
+  do { perror(str); exit(val); } while (0)
+
+/* Some versions of cygwin mmap require that munmap is called with the
+   same parameters as mmap.  GCC expects that this is not the case.
+   Test for various forms of this problem.  Warning - icky signal games.  */
+
+static sigset_t unblock_sigsegv;
+static jmp_buf r;
+static size_t pg;
+static int devzero;
+
+static char *
+anonmap (size)
+     size_t size;
+{
+#ifdef USE_MAP_ANON
+  return (char *) mmap (0, size, PROT_READ|PROT_WRITE,
+                       MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
 #else
-  x = (char*)mmap(0, pg, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
+  return (char *) mmap (0, size, PROT_READ|PROT_WRITE,
+                       MAP_PRIVATE, devzero, 0);
 #endif
-  if (x == (char *) -1)
-    exit(2);
+}
+
+static void
+sigsegv (unused)
+     int unused;
+{
+  sigprocmask (SIG_UNBLOCK, &unblock_sigsegv, 0);
+  longjmp (r, 1);
+}
+
+/* Basic functionality test.  */
+void
+test_0 ()
+{
+  char *x = anonmap (pg);
+  if (x == (char *) MAP_FAILED)
+    perror_exit("test 0 mmap", 2);
 
   *(int *)x += 1;
 
   if (munmap(x, pg) < 0)
-    exit(3);
+    perror_exit("test 0 munmap", 3);
+}
+
+/* 1. If we map a 2-page region and unmap its second page, the first page
+   must remain.  */
+static void
+test_1 ()
+{
+  char *x = anonmap (pg * 2);
+  if (x == (char *)MAP_FAILED)
+    perror_exit ("test 1 mmap", 4);
+
+  signal (SIGSEGV, sigsegv);
+  if (setjmp (r))
+    perror_exit ("test 1 fault", 5);
+
+  x[0] = 1;
+  x[pg] = 1;
+
+  if (munmap (x + pg, pg) < 0)
+    perror_exit ("test 1 munmap 1", 6);
+  x[0] = 2;
+
+  if (setjmp (r) == 0)
+    {
+      x[pg] = 1;
+      perror_exit ("test 1 no fault", 7);
+    }
+  if (munmap (x, pg) < 0)
+    perror_exit ("test 1 munmap 2", 8);
+}
+
+/* 2. If we map a 2-page region and unmap its first page, the second
+   page must remain.  */
+static void
+test_2 ()
+{
+  char *x = anonmap (pg * 2);
+  if (x == (char *)MAP_FAILED)
+    perror_exit ("test 2 mmap", 9);
+
+  signal (SIGSEGV, sigsegv);
+  if (setjmp (r))
+    perror_exit ("test 2 fault", 10);
+
+  x[0] = 1;
+  x[pg] = 1;
+
+  if (munmap (x, pg) < 0)
+    perror_exit ("test 2 munmap 1", 11);
+
+  x[pg] = 2;
+
+  if (setjmp (r) == 0)
+    {
+      x[0] = 1;
+      perror_exit ("test 2 no fault", 12);
+    }
+
+  if (munmap (x+pg, pg) < 0)
+    perror_exit ("test 2 munmap 2", 13);
+}
+
+/* 3. If we map two adjacent 1-page regions and unmap them both with
+   one munmap, both must go away.
+
+   Getting two adjacent 1-page regions with two mmap calls is slightly
+   tricky.  All OS's tested skip over already-allocated blocks; therefore
+   we have been careful to unmap all allocated regions in previous tests.
+   HP/UX allocates pages backward in memory.  No OS has yet been observed
+   to be so perverse as to leave unmapped space between consecutive calls
+   to mmap.  */
+
+static void
+test_3 ()
+{
+  char *x, *y, *z;
+
+  x = anonmap (pg);
+  if (x == (char *)MAP_FAILED)
+    perror_exit ("test 3 mmap 1", 14);
+  y = anonmap (pg);
+  if (y == (char *)MAP_FAILED)
+    perror_exit ("test 3 mmap 2", 15);
+
+  if (y != x + pg)
+    {
+      if (y == x - pg)
+       z = y, y = x, x = z;
+      else
+       {
+         fprintf (stderr, "test 3 nonconsecutive pages - %lx, %lx\n",
+                  (unsigned long)x, (unsigned long)y);
+         exit (16);
+       }
+    }
+
+  signal (SIGSEGV, sigsegv);
+  if (setjmp (r))
+    perror_exit ("test 3 fault", 17);
+
+  x[0] = 1;
+  y[0] = 1;
+
+  if (munmap (x, pg*2) < 0)
+    perror_exit ("test 3 munmap", 18);
+
+  if (setjmp (r) == 0)
+    {
+      x[0] = 1;
+      perror_exit ("test 3 no fault 1", 19);
+    }
+  
+  signal (SIGSEGV, sigsegv);
+  if (setjmp (r) == 0)
+    {
+      y[0] = 1;
+      perror_exit ("test 3 no fault 2", 20);
+    }
+}
+
+int
+main ()
+{
+  sigemptyset (&unblock_sigsegv);
+  sigaddset (&unblock_sigsegv, SIGSEGV);
+  pg = getpagesize ();
+#ifndef USE_MAP_ANON
+  devzero = open ("/dev/zero", O_RDWR);
+  if (devzero < 0)
+    perror_exit ("open /dev/zero", 1);
+#endif
+
+  test_0();
+  test_1();
+  test_2();
+  test_3();
 
   exit(0);
 }
 EOF
-if { (eval echo configure:3383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+
+echo $ac_n "checking for working mmap from /dev/zero""... $ac_c" 1>&6
+echo "configure:3498: checking for working mmap from /dev/zero" >&5
+if eval "test \"`echo '$''{'ac_cv_func_mmap_dev_zero'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  # If this is not cygwin, and /dev/zero is a character device, it's probably
+ # safe to assume it works.
+ case "$host_os" in
+   cygwin* | win32 | pe | mingw* ) ac_cv_func_mmap_dev_zero=buggy ;;
+   * ) if test -c /dev/zero
+       then ac_cv_func_mmap_dev_zero=yes
+       else ac_cv_func_mmap_dev_zero=no
+       fi ;;
+  esac
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3514 "configure"
+#include "confdefs.h"
+#include "ct-mmap.inc"
+EOF
+if { (eval echo configure:3518: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_func_mmap_dev_zero=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  if test $? -lt 4
+ then ac_cv_func_mmap_dev_zero=no
+ else ac_cv_func_mmap_dev_zero=buggy
+ fi
+fi
+rm -fr conftest*
+fi
+
+
+fi
+
+echo "$ac_t""$ac_cv_func_mmap_dev_zero" 1>&6
+if test $ac_cv_func_mmap_dev_zero = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_MMAP_DEV_ZERO 1
+EOF
+
+fi
+
+echo $ac_n "checking for working mmap with MAP_ANON(YMOUS)""... $ac_c" 1>&6
+echo "configure:3545: checking for working mmap with MAP_ANON(YMOUS)" >&5
+if eval "test \"`echo '$''{'ac_cv_func_mmap_anon'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  # Unlike /dev/zero, it is not safe to assume MAP_ANON(YMOUS) works
+ # just because it's there. Some SCO Un*xen define it but don't implement it.
+ ac_cv_func_mmap_anon=no
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3555 "configure"
+#include "confdefs.h"
+#define USE_MAP_ANON
+#include "ct-mmap.inc"
+EOF
+if { (eval echo configure:3560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
-  ac_cv_func_mmap_anywhere=yes
+  ac_cv_func_mmap_anon=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -fr conftest*
-  ac_cv_func_mmap_anywhere=no
+  if test $? -lt 4
+ then ac_cv_func_mmap_anon=no
+ else ac_cv_func_mmap_anon=buggy
+ fi
 fi
 rm -fr conftest*
 fi
 
+
 fi
 
-echo "$ac_t""$ac_cv_func_mmap_anywhere" 1>&6
-if test $ac_cv_func_mmap_anywhere = yes; then
+echo "$ac_t""$ac_cv_func_mmap_anon" 1>&6
+if test $ac_cv_func_mmap_anon = yes; then
   cat >> confdefs.h <<\EOF
-#define HAVE_MMAP_ANYWHERE 1
+#define HAVE_MMAP_ANON 1
 EOF
 
 fi
+rm -f ct-mmap.inc
 
 echo $ac_n "checking for working mmap of a file""... $ac_c" 1>&6
-echo "configure:3406: checking for working mmap of a file" >&5
+echo "configure:3588: checking for working mmap of a file" >&5
 if eval "test \"`echo '$''{'ac_cv_func_mmap_file'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3417,7 +3599,7 @@ if test "$cross_compiling" = yes; then
   ac_cv_func_mmap_file=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 3421 "configure"
+#line 3603 "configure"
 #include "confdefs.h"
 
 /* Test by Zack Weinberg.  Modified from MMAP_ANYWHERE test by
@@ -3454,7 +3636,7 @@ int main()
   exit(0);
 }
 EOF
-if { (eval echo configure:3458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_mmap_file=yes
 else
@@ -3487,12 +3669,12 @@ for ac_func in bcopy \
 do
   ac_tr_decl=HAVE_DECL_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
 echo $ac_n "checking whether $ac_func is declared""... $ac_c" 1>&6
-echo "configure:3491: checking whether $ac_func is declared" >&5
+echo "configure:3673: checking whether $ac_func is declared" >&5
 if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3496 "configure"
+#line 3678 "configure"
 #include "confdefs.h"
 #include "gansidecl.h"
 #include "system.h"
@@ -3503,7 +3685,7 @@ char *(*pfn) = (char *(*)) $ac_func ;
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:3507: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "gcc_cv_have_decl_$ac_func=yes"
 else
@@ -3596,12 +3778,12 @@ for ac_func in getrlimit setrlimit getrusage
 do
   ac_tr_decl=HAVE_DECL_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
 echo $ac_n "checking whether $ac_func is declared""... $ac_c" 1>&6
-echo "configure:3600: checking whether $ac_func is declared" >&5
+echo "configure:3782: checking whether $ac_func is declared" >&5
 if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3605 "configure"
+#line 3787 "configure"
 #include "confdefs.h"
 #include "gansidecl.h"
 #include "system.h"
@@ -3616,7 +3798,7 @@ char *(*pfn) = (char *(*)) $ac_func ;
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:3620: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3802: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "gcc_cv_have_decl_$ac_func=yes"
 else
@@ -3659,12 +3841,12 @@ CFLAGS="$saved_CFLAGS"
 
 # mkdir takes a single argument on some systems. 
 echo $ac_n "checking if mkdir takes one argument""... $ac_c" 1>&6
-echo "configure:3663: checking if mkdir takes one argument" >&5
+echo "configure:3845: checking if mkdir takes one argument" >&5
 if eval "test \"`echo '$''{'gcc_cv_mkdir_takes_one_arg'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3668 "configure"
+#line 3850 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -3681,7 +3863,7 @@ int main() {
 mkdir ("foo", 0);
 ; return 0; }
 EOF
-if { (eval echo configure:3685: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   gcc_cv_mkdir_takes_one_arg=no
 else
@@ -3992,7 +4174,7 @@ fi
 
 
         echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6
-echo "configure:3996: checking for strerror in -lcposix" >&5
+echo "configure:4178: checking for strerror in -lcposix" >&5
 ac_lib_var=`echo cposix'_'strerror | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4000,7 +4182,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcposix  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4004 "configure"
+#line 4186 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4011,7 +4193,7 @@ int main() {
 strerror()
 ; return 0; }
 EOF
-if { (eval echo configure:4015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4034,18 +4216,18 @@ fi
   
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:4038: checking for working const" >&5
+echo "configure:4220: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4043 "configure"
+#line 4225 "configure"
 #include "confdefs.h"
 
 int main() {
 
 /* Ultrix mips cc rejects this.  */
-typedef int charset[2]; const charset x;
+typedef int charset[2]; const charset x = {0,0};
 /* SunOS 4.1.1 cc rejects this.  */
 char const *const *ccp;
 char **p;
@@ -4088,7 +4270,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:4092: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4274: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -4109,12 +4291,12 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:4113: checking for off_t" >&5
+echo "configure:4295: checking for off_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4118 "configure"
+#line 4300 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4142,12 +4324,12 @@ EOF
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:4146: checking for size_t" >&5
+echo "configure:4328: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4151 "configure"
+#line 4333 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4177,19 +4359,19 @@ fi
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
 echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:4181: checking for working alloca.h" >&5
+echo "configure:4363: checking for working alloca.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4186 "configure"
+#line 4368 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
-char *p = alloca(2 * sizeof(int));
+void *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:4193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_header_alloca_h=yes
 else
@@ -4210,12 +4392,12 @@ EOF
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:4214: checking for alloca" >&5
+echo "configure:4396: checking for alloca" >&5
 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4219 "configure"
+#line 4401 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -4243,7 +4425,7 @@ int main() {
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:4247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_func_alloca_works=yes
 else
@@ -4275,12 +4457,12 @@ EOF
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:4279: checking whether alloca needs Cray hooks" >&5
+echo "configure:4461: checking whether alloca needs Cray hooks" >&5
 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4284 "configure"
+#line 4466 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -4305,12 +4487,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
 if test $ac_cv_os_cray = yes; then
 for ac_func in _getb67 GETB67 getb67; do
   echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4309: checking for $ac_func" >&5
+echo "configure:4491: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4314 "configure"
+#line 4496 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4333,7 +4515,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4360,7 +4542,7 @@ done
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:4364: checking stack direction for C alloca" >&5
+echo "configure:4546: checking stack direction for C alloca" >&5
 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4368,7 +4550,7 @@ else
   ac_cv_c_stack_direction=0
 else
   cat > conftest.$ac_ext <<EOF
-#line 4372 "configure"
+#line 4554 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -4387,7 +4569,7 @@ main ()
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:4391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4573: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_stack_direction=1
 else
@@ -4414,17 +4596,17 @@ unistd.h sys/param.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4418: checking for $ac_hdr" >&5
+echo "configure:4600: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4423 "configure"
+#line 4605 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4428: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4610: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4454,12 +4636,12 @@ done
 strdup __argz_count __argz_stringify __argz_next
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4458: checking for $ac_func" >&5
+echo "configure:4640: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4463 "configure"
+#line 4645 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4482,7 +4664,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4511,12 +4693,12 @@ done
      for ac_func in stpcpy
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4515: checking for $ac_func" >&5
+echo "configure:4697: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4520 "configure"
+#line 4702 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4539,7 +4721,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4573,19 +4755,19 @@ EOF
 
    if test $ac_cv_header_locale_h = yes; then
     echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:4577: checking for LC_MESSAGES" >&5
+echo "configure:4759: checking for LC_MESSAGES" >&5
 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4582 "configure"
+#line 4764 "configure"
 #include "confdefs.h"
 #include <locale.h>
 int main() {
 return LC_MESSAGES
 ; return 0; }
 EOF
-if { (eval echo configure:4589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_val_LC_MESSAGES=yes
 else
@@ -4606,7 +4788,7 @@ EOF
     fi
   fi
    echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:4610: checking whether NLS is requested" >&5
+echo "configure:4792: checking whether NLS is requested" >&5
         # Check whether --enable-nls or --disable-nls was given.
 if test "${enable_nls+set}" = set; then
   enableval="$enable_nls"
@@ -4626,7 +4808,7 @@ fi
 EOF
 
       echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:4630: checking whether included gettext is requested" >&5
+echo "configure:4812: checking whether included gettext is requested" >&5
       # Check whether --with-included-gettext or --without-included-gettext was given.
 if test "${with_included_gettext+set}" = set; then
   withval="$with_included_gettext"
@@ -4645,17 +4827,17 @@ fi
 
        ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:4649: checking for libintl.h" >&5
+echo "configure:4831: checking for libintl.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4654 "configure"
+#line 4836 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4659: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4841: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4672,19 +4854,19 @@ fi
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:4676: checking for gettext in libc" >&5
+echo "configure:4858: checking for gettext in libc" >&5
 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4681 "configure"
+#line 4863 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 int main() {
 return (int) gettext ("")
 ; return 0; }
 EOF
-if { (eval echo configure:4688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   gt_cv_func_gettext_libc=yes
 else
@@ -4700,7 +4882,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
 
           if test "$gt_cv_func_gettext_libc" != "yes"; then
             echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:4704: checking for bindtextdomain in -lintl" >&5
+echo "configure:4886: checking for bindtextdomain in -lintl" >&5
 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4708,7 +4890,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4712 "configure"
+#line 4894 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4719,7 +4901,7 @@ int main() {
 bindtextdomain()
 ; return 0; }
 EOF
-if { (eval echo configure:4723: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4735,12 +4917,12 @@ fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:4739: checking for gettext in libintl" >&5
+echo "configure:4921: checking for gettext in libintl" >&5
 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
-echo "configure:4744: checking for gettext in -lintl" >&5
+echo "configure:4926: checking for gettext in -lintl" >&5
 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4748,7 +4930,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4752 "configure"
+#line 4934 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4759,7 +4941,7 @@ int main() {
 gettext()
 ; return 0; }
 EOF
-if { (eval echo configure:4763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4798,7 +4980,7 @@ EOF
              # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4802: checking for $ac_word" >&5
+echo "configure:4984: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'gcc_cv_path_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4832,12 +5014,12 @@ fi
                for ac_func in dcgettext
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4836: checking for $ac_func" >&5
+echo "configure:5018: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4841 "configure"
+#line 5023 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4860,7 +5042,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4864: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4887,7 +5069,7 @@ done
                # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4891: checking for $ac_word" >&5
+echo "configure:5073: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4923,7 +5105,7 @@ fi
                # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4927: checking for $ac_word" >&5
+echo "configure:5109: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'gcc_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4955,7 +5137,7 @@ else
 fi
 
                cat > conftest.$ac_ext <<EOF
-#line 4959 "configure"
+#line 5141 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4963,7 +5145,7 @@ extern int _nl_msg_cat_cntr;
                               return _nl_msg_cat_cntr
 ; return 0; }
 EOF
-if { (eval echo configure:4967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   CATOBJEXT=.gmo
                   DATADIRNAME=share
@@ -4988,7 +5170,7 @@ fi
 
         if test "$CATOBJEXT" = "NONE"; then
          echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6
-echo "configure:4992: checking whether catgets can be used" >&5
+echo "configure:5174: checking whether catgets can be used" >&5
          # Check whether --with-catgets or --without-catgets was given.
 if test "${with_catgets+set}" = set; then
   withval="$with_catgets"
@@ -5001,7 +5183,7 @@ fi
 
          if test "$nls_cv_use_catgets" = "yes"; then
                    echo $ac_n "checking for main in -li""... $ac_c" 1>&6
-echo "configure:5005: checking for main in -li" >&5
+echo "configure:5187: checking for main in -li" >&5
 ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5009,14 +5191,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-li  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5013 "configure"
+#line 5195 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5044,12 +5226,12 @@ else
 fi
 
            echo $ac_n "checking for catgets""... $ac_c" 1>&6
-echo "configure:5048: checking for catgets" >&5
+echo "configure:5230: checking for catgets" >&5
 if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5053 "configure"
+#line 5235 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char catgets(); below.  */
@@ -5072,7 +5254,7 @@ catgets();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_catgets=yes"
 else
@@ -5094,7 +5276,7 @@ EOF
               # Extract the first word of "gencat", so it can be a program name with args.
 set dummy gencat; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5098: checking for $ac_word" >&5
+echo "configure:5280: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'gcc_cv_path_GENCAT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5130,7 +5312,7 @@ fi
                 # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5134: checking for $ac_word" >&5
+echo "configure:5316: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5167,7 +5349,7 @@ fi
                   # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5171: checking for $ac_word" >&5
+echo "configure:5353: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5205,7 +5387,7 @@ fi
                 # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5209: checking for $ac_word" >&5
+echo "configure:5391: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'gcc_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5263,7 +5445,7 @@ fi
         # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5267: checking for $ac_word" >&5
+echo "configure:5449: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'gcc_cv_path_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5297,7 +5479,7 @@ fi
         # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5301: checking for $ac_word" >&5
+echo "configure:5483: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5336,7 +5518,7 @@ fi
         # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5340: checking for $ac_word" >&5
+echo "configure:5522: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'gcc_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5435,7 +5617,7 @@ fi
        LINGUAS=
      else
        echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:5439: checking for catalogs to be installed" >&5
+echo "configure:5621: checking for catalogs to be installed" >&5
        if test "x$LINGUAS" = "x"; then
         LINGUAS=$ALL_LINGUAS
        else
@@ -5467,17 +5649,17 @@ echo "configure:5439: checking for catalogs to be installed" >&5
    if test "$CATOBJEXT" = ".cat"; then
      ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:5471: checking for linux/version.h" >&5
+echo "configure:5653: checking for linux/version.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5476 "configure"
+#line 5658 "configure"
 #include "confdefs.h"
 #include <linux/version.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5481: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5663: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5552,7 +5734,7 @@ fi
 
 
 echo $ac_n "checking whether windows registry support is requested""... $ac_c" 1>&6
-echo "configure:5556: checking whether windows registry support is requested" >&5
+echo "configure:5738: checking whether windows registry support is requested" >&5
 if test x$enable_win32_registry != xno; then
   cat >> confdefs.h <<\EOF
 #define ENABLE_WIN32_REGISTRY 1
@@ -5581,7 +5763,7 @@ esac
 
 if test x$enable_win32_registry != xno; then
   echo $ac_n "checking registry key on windows hosts""... $ac_c" 1>&6
-echo "configure:5585: checking registry key on windows hosts" >&5
+echo "configure:5767: checking registry key on windows hosts" >&5
   cat >> confdefs.h <<EOF
 #define WIN32_REGISTRY_KEY "$gcc_cv_win32_registry_key"
 EOF
@@ -5761,7 +5943,7 @@ fi
 
 # Figure out what assembler we will be using.
 echo $ac_n "checking what assembler to use""... $ac_c" 1>&6
-echo "configure:5765: checking what assembler to use" >&5
+echo "configure:5947: checking what assembler to use" >&5
 gcc_cv_as=
 gcc_cv_gas_major_version=
 gcc_cv_gas_minor_version=
@@ -5846,7 +6028,7 @@ fi
 
 # Figure out what nm we will be using.
 echo $ac_n "checking what nm to use""... $ac_c" 1>&6
-echo "configure:5850: checking what nm to use" >&5
+echo "configure:6032: checking what nm to use" >&5
 if test -x nm$host_exeext; then
        gcc_cv_nm=./nm$host_exeext
 elif test x$host = x$target; then
@@ -5857,7 +6039,7 @@ echo "$ac_t""$gcc_cv_nm" 1>&6
 
 # Figure out what assembler alignment features are present.
 echo $ac_n "checking assembler alignment features""... $ac_c" 1>&6
-echo "configure:5861: checking assembler alignment features" >&5
+echo "configure:6043: checking assembler alignment features" >&5
 gcc_cv_as_alignment_features=none
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
        # Gas version 2.6 and later support for .balign and .p2align.
@@ -5905,7 +6087,7 @@ fi
 echo "$ac_t""$gcc_cv_as_alignment_features" 1>&6
 
 echo $ac_n "checking assembler subsection support""... $ac_c" 1>&6
-echo "configure:5909: checking assembler subsection support" >&5
+echo "configure:6091: checking assembler subsection support" >&5
 gcc_cv_as_subsections=no
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
@@ -5945,7 +6127,7 @@ fi
 echo "$ac_t""$gcc_cv_as_subsections" 1>&6
 
 echo $ac_n "checking assembler weak support""... $ac_c" 1>&6
-echo "configure:5949: checking assembler weak support" >&5
+echo "configure:6131: checking assembler weak support" >&5
 gcc_cv_as_weak=no
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 2 -o "$gcc_cv_gas_major_version" -gt 2; then
@@ -5968,7 +6150,7 @@ fi
 echo "$ac_t""$gcc_cv_as_weak" 1>&6
 
 echo $ac_n "checking assembler hidden support""... $ac_c" 1>&6
-echo "configure:5972: checking assembler hidden support" >&5
+echo "configure:6154: checking assembler hidden support" >&5
 gcc_cv_as_hidden=no
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 10 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
@@ -5994,7 +6176,7 @@ echo "$ac_t""$gcc_cv_as_hidden" 1>&6
 case "$target" in 
   sparc*-*-*)
     echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6
-echo "configure:5998: checking assembler .register pseudo-op support" >&5
+echo "configure:6180: checking assembler .register pseudo-op support" >&5
 if eval "test \"`echo '$''{'gcc_cv_as_register_pseudo_op'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6022,7 +6204,7 @@ EOF
     fi
 
     echo $ac_n "checking assembler supports -relax""... $ac_c" 1>&6
-echo "configure:6026: checking assembler supports -relax" >&5
+echo "configure:6208: checking assembler supports -relax" >&5
 if eval "test \"`echo '$''{'gcc_cv_as_relax_opt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6052,7 +6234,7 @@ EOF
     case "$tm_file" in
     *64*)
        echo $ac_n "checking for 64 bit support in assembler ($gcc_cv_as)""... $ac_c" 1>&6
-echo "configure:6056: checking for 64 bit support in assembler ($gcc_cv_as)" >&5
+echo "configure:6238: checking for 64 bit support in assembler ($gcc_cv_as)" >&5
 if eval "test \"`echo '$''{'gcc_cv_as_flags64'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6097,7 +6279,7 @@ EOF
 
     if test "x$gcc_cv_as_flags64" != xno; then
        echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6
-echo "configure:6101: checking for assembler offsetable %lo() support" >&5
+echo "configure:6283: checking for assembler offsetable %lo() support" >&5
 if eval "test \"`echo '$''{'gcc_cv_as_offsetable_lo10'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6136,7 +6318,7 @@ EOF
 
   i[34567]86-*-*)
     echo $ac_n "checking assembler instructions""... $ac_c" 1>&6
-echo "configure:6140: checking assembler instructions" >&5
+echo "configure:6322: checking assembler instructions" >&5
     gcc_cv_as_instructions=
     if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
       if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2; then
@@ -6165,7 +6347,7 @@ EOF
 esac
 
 echo $ac_n "checking assembler dwarf2 debug_line support""... $ac_c" 1>&6
-echo "configure:6169: checking assembler dwarf2 debug_line support" >&5
+echo "configure:6351: checking assembler dwarf2 debug_line support" >&5
 gcc_cv_as_dwarf2_debug_line=no
 # ??? Not all targets support dwarf2 debug_line, even within a version
 # of gas.  Moreover, we need to emit a valid instruction to trigger any
@@ -6284,7 +6466,8 @@ if test "${with_gc+set}" = set; then
     ;;
 esac
 else
-  if test $ac_cv_func_mmap_anywhere = yes \
+  if test $ac_cv_func_mmap_dev_zero = yes \
+    || test $ac_cv_func_mmap_anon = yes \
     || test $ac_cv_func_valloc = yes; then
   GGC=ggc-page
 else
@@ -6338,7 +6521,7 @@ EOF
 
 
 echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:6342: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:6525: checking whether to enable maintainer-specific portions of Makefiles" >&5
     # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then
   enableval="$enable_maintainer_mode"
index b0dd697..e318236 100644 (file)
@@ -1565,7 +1565,8 @@ AC_ARG_WITH(gc,
     AC_MSG_ERROR([$withval is an invalid option to --with-gc])
     ;;
 esac],
-[if test $ac_cv_func_mmap_anywhere = yes \
+[if test $ac_cv_func_mmap_dev_zero = yes \
+    || test $ac_cv_func_mmap_anon = yes \
     || test $ac_cv_func_valloc = yes; then
   GGC=ggc-page
 else
index 73dc4d1..b5c6d57 100644 (file)
@@ -29,16 +29,37 @@ Boston, MA 02111-1307, USA.  */
 #include "ggc.h"
 #include "timevar.h"
 
-#ifdef HAVE_MMAP_ANYWHERE
-#include <sys/mman.h>
+/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a
+   file open.  Prefer either to valloc.  */
+#ifdef HAVE_MMAP_ANON
+# undef HAVE_MMAP_DEV_ZERO
+# undef HAVE_VALLOC
+
+# include <sys/mman.h>
+# ifndef MAP_FAILED
+#  define MAP_FAILED -1
+# endif
+# if !defined (MAP_ANONYMOUS) && defined (MAP_ANON)
+#  define MAP_ANONYMOUS MAP_ANON
+# endif
+# define USING_MMAP
+
 #endif
 
-#ifndef MAP_FAILED
-#define MAP_FAILED -1
+#ifdef HAVE_MMAP_DEV_ZERO
+# undef HAVE_VALLOC
+
+# include <sys/mman.h>
+# ifndef MAP_FAILED
+#  define MAP_FAILED -1
+# endif
+# define USING_MMAP
+
 #endif
 
-#if !defined (MAP_ANONYMOUS) && defined (MAP_ANON)
-#define MAP_ANONYMOUS MAP_ANON
+#ifdef HAVE_VALLOC
+# undef MAP_FAILED
+# define MAP_FAILED 0
 #endif
 
 /* Stategy: 
@@ -279,7 +300,7 @@ static struct globals
   unsigned short context_depth;
 
   /* A file descriptor open to /dev/zero for reading.  */
-#if defined (HAVE_MMAP_ANYWHERE) && !defined(MAP_ANONYMOUS)
+#if defined (HAVE_MMAP_DEV_ZERO)
   int dev_zero_fd;
 #endif
 
@@ -445,38 +466,31 @@ debug_print_page_list (order)
 }
 
 /* Allocate SIZE bytes of anonymous memory, preferably near PREF,
-   (if non-null).  */
+   (if non-null).  The ifdef structure here is intended to cause a
+   compile error unless exactly one of the HAVE_* is defined.  */
 
 static inline char *
 alloc_anon (pref, size)
      char *pref ATTRIBUTE_UNUSED;
      size_t size;
 {
-  char *page;
-
-#ifdef HAVE_MMAP_ANYWHERE
-#ifdef MAP_ANONYMOUS
-  page = (char *) mmap (pref, size, PROT_READ | PROT_WRITE,
-                       MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-#else
-  page = (char *) mmap (pref, size, PROT_READ | PROT_WRITE,
-                       MAP_PRIVATE, G.dev_zero_fd, 0);
+#ifdef HAVE_MMAP_ANON
+  char *page = (char *) mmap (pref, size, PROT_READ | PROT_WRITE,
+                             MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+#endif
+#ifdef HAVE_MMAP_DEV_ZERO
+  char *page = (char *) mmap (pref, size, PROT_READ | PROT_WRITE,
+                             MAP_PRIVATE, G.dev_zero_fd, 0);
 #endif
-  if (page == (char *) MAP_FAILED)
-    {
-      fputs ("Virtual memory exhausted!\n", stderr);
-      exit(1);
-    }
-#else
 #ifdef HAVE_VALLOC
-  page = (char *) valloc (size);
-  if (!page)
+  char *page = (char *) valloc (size);
+#endif
+
+  if (page == (char *) MAP_FAILED)
     {
       fputs ("Virtual memory exhausted!\n", stderr);
       exit(1);
     }
-#endif /* HAVE_VALLOC */
-#endif /* HAVE_MMAP_ANYWHERE */
 
   /* Remember that we allocated this memory.  */
   G.bytes_mapped += size;
@@ -526,7 +540,7 @@ alloc_page (order)
       else
        free (p);
     }
-#ifdef HAVE_MMAP_ANYWHERE
+#ifdef USING_MMAP
   else if (entry_size == G.pagesize)
     {
       /* We want just one page.  Allocate a bunch of them and put the
@@ -601,7 +615,7 @@ release_pages ()
 {
   page_entry *p, *next;
 
-#ifdef HAVE_MMAP_ANYWHERE
+#ifdef USING_MMAP
   char *start;
   size_t len;
 
@@ -628,8 +642,6 @@ release_pages ()
       G.bytes_mapped -= len;
     }
 #else
-#ifdef HAVE_VALLOC
-
   for (p = G.free_pages; p; p = next)
     {
       next = p->next;
@@ -637,8 +649,7 @@ release_pages ()
       G.bytes_mapped -= p->bytes;
       free (p);
     }
-#endif /* HAVE_VALLOC */
-#endif /* HAVE_MMAP_ANYWHERE */
+#endif /* USING_MMAP */
 
   G.free_pages = NULL;
 }
@@ -849,7 +860,7 @@ init_ggc ()
   G.pagesize = getpagesize();
   G.lg_pagesize = exact_log2 (G.pagesize);
 
-#if defined (HAVE_MMAP_ANYWHERE) && !defined(MAP_ANONYMOUS)
+#ifdef HAVE_MMAP_DEV_ZERO
   G.dev_zero_fd = open ("/dev/zero", O_RDONLY);
   if (G.dev_zero_fd == -1)
     abort ();
@@ -863,13 +874,14 @@ init_ggc ()
 
   G.allocated_last_gc = GGC_MIN_LAST_ALLOCATED;
 
-#ifdef HAVE_MMAP_ANYWHERE
+#ifdef USING_MMAP
   /* StunOS has an amazing off-by-one error for the first mmap allocation
      after fiddling with RLIMIT_STACK.  The result, as hard as it is to
      believe, is an unaligned page allocation, which would cause us to
      hork badly if we tried to use it.  */
   {
     char *p = alloc_anon (NULL, G.pagesize);
+    struct page_entry *e;
     if ((size_t)p & (G.pagesize - 1))
       {
        /* How losing.  Discard this one and try another.  If we still
@@ -879,7 +891,13 @@ init_ggc ()
        if ((size_t)p & (G.pagesize - 1))
          abort ();
       }
-    munmap (p, G.pagesize);
+
+    /* We have a good page, might as well hold onto it... */
+    e = (struct page_entry *) xcalloc (1, sizeof (struct page_entry));
+    e->bytes = G.pagesize;
+    e->page = p;
+    e->next = G.free_pages;
+    G.free_pages = e;
   }
 #endif