From 901dfcc7f6e0550e46d865befe0f4da4ccc60988 Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 12 Jan 2001 04:54:42 +0000 Subject: [PATCH] 2001-01-11 Zack Weinberg * 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 | 403 ++++++++++++++++++++------------------- gcc/aclocal.m4 | 266 ++++++++++++++++++++++---- gcc/config.in | 7 +- gcc/configure | 563 ++++++++++++++++++++++++++++++++++++------------------- gcc/configure.in | 3 +- gcc/ggc-page.c | 90 +++++---- 6 files changed, 876 insertions(+), 456 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 078f431..50f9c20 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2001-01-11 Zack Weinberg + + * 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 * loop.h (total_biv_increment): Constify iv_class pointer. @@ -44,10 +57,10 @@ Fri Jan 12 00:04:00 MET 2001 Jan Hubicka * builtins.c (std_expand_builtin_va_start): Handle varargs when sizeof (int) is larger than sizeof(__word__). - + 2001-01-11 Neil Booth - * cppinit.c (do_includes): Fix typo. + * cppinit.c (do_includes): Fix typo. 2001-01-11 Stephane Carrez @@ -63,27 +76,27 @@ Fri Jan 12 00:04:00 MET 2001 Jan Hubicka (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 - * cppspec.c (DEFAULT_WORD_SWITCH_TAKES_ARG): Add -MQ. + * cppspec.c (DEFAULT_WORD_SWITCH_TAKES_ARG): Add -MQ. 2001-01-11 Neil Booth - * 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 - + * 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 @@ -104,7 +117,7 @@ Fri Jan 12 00:04:00 MET 2001 Jan Hubicka 2001-01-11 Neil Booth - * 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 @@ -155,22 +168,22 @@ Fri Jan 12 00:04:00 MET 2001 Jan Hubicka 2001-01-10 Neil Booth - * 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 @@ -215,7 +228,7 @@ Fri Jan 12 00:04:00 MET 2001 Jan Hubicka 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 2001-01-10 Neil Booth - * 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 * 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 @@ -282,14 +295,14 @@ Wed Jan 10 16:38:31 MET 2001 Jan Hubicka @w. 2001-01-10 Nathan Sidwell - - * 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 @@ -301,28 +314,28 @@ Wed Jan 10 16:38:31 MET 2001 Jan Hubicka 2001-01-10 Neil Booth - * 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 @@ -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 * 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 - * 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 - * cpp.texi: Update. - * invoke.texi: Update. + * cpp.texi: Update. + * invoke.texi: Update. 2001-01-09 Bernd Schmidt @@ -488,25 +501,25 @@ Tue Jan 9 21:25:19 2001 Jeffrey A Law (law@cygnus.com) 2001-01-09 Neil Booth * 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 @@ -550,7 +563,7 @@ Tue Jan 9 21:25:19 2001 Jeffrey A Law (law@cygnus.com) 2001-01-08 Nick Clifton * 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 * 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 - * 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 @@ -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 * jump.c (jump_optimize_1): Use reversed_comparison_code @@ -622,7 +635,7 @@ Mon Jan 8 16:14:56 MET 2001 Jan Hubicka * 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 @@ -702,28 +715,28 @@ Sun Jan 7 19:37:48 MET 2001 Jan Hubicka 2001-01-07 Neil Booth - * 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 - * 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 * jump.c (comparison_dominates_p): Support unordered compares. @@ -766,17 +779,17 @@ Sun Jan 7 13:49:19 MET 2001 Jan Hubicka 2001-01-07 Neil Booth - * (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 @@ -870,26 +883,26 @@ Sun Jan 7 13:49:19 MET 2001 Jan Hubicka 2001-01-07 Neil Booth - * 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 - * 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 @@ -954,19 +967,19 @@ Fri Jan 5 16:34:18 2001 Nick Clifton 2001-01-05 Neil Booth - * 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 @@ -981,7 +994,7 @@ Fri Jan 5 16:34:18 2001 Nick Clifton * config/v850/v850-protos.h: Add prototypes for v850_return_addr and v850_init_expanders. - + 2001-01-05 Zack Weinberg * cpplib.h (struct cpp_reader): Add help_only field. @@ -1009,7 +1022,7 @@ Fri Jan 5 16:34:18 2001 Nick Clifton * 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 @@ -1086,7 +1099,7 @@ Fri Jan 5 20:34:06 2001 J"orn Rennecke 2001-01-05 Daniel Berlin * 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 2001-01-05 Neil Booth - * 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 @@ -1159,7 +1172,7 @@ Fri Jan 5 16:29:49 MET 2001 Jan Hubicka (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 for prset and prget. 2001-01-05 Michael Hayes - + * 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 (loop_optimize): Delete `moved_once' array. 2001-01-05 Michael Hayes - + * 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 2001-01-04 Neil Booth - * 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 @@ -1355,7 +1368,7 @@ Thu Jan 4 15:54:05 2001 Richard Kenner * config/alpha/alpha.md (addvsi3, addvdi3): New. (negvsi2, negvdi2, subvsi3, subvdi3, mulvsi3, mulvdi3): New. - + 2001-01-03 Franz Sirl * tradcpp.c (main): Make sure finclude() is called with a valid @@ -1464,7 +1477,7 @@ Wed Jan 3 08:53:50 2001 Richard Kenner * 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 @@ -1527,7 +1540,7 @@ Tue Jan 2 10:47:38 2001 Richard Kenner - * 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 @@ -1585,9 +1598,9 @@ Mon Jan 1 21:28:29 2001 Richard Kenner 2001-01-01 John David Anglin - * 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 diff --git a/gcc/aclocal.m4 b/gcc/aclocal.m4 index c3e1d57..4544c77 100644 --- a/gcc/aclocal.m4 +++ b/gcc/aclocal.m4 @@ -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 -#include #include +#include +#include +#include +#include #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 diff --git a/gcc/config.in b/gcc/config.in index 63af404..5056b42 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -330,8 +330,11 @@ /* 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 diff --git a/gcc/configure b/gcc/configure index 2e96d7d..39e8e46 100755 --- a/gcc/configure +++ b/gcc/configure @@ -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 -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 <&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 <&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 <ct-mmap.inc <<'EOF' #include -#include #include +#include +#include +#include +#include #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 <&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 <&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 <&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 <&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 <&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 < @@ -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 <&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 <&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 < #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 < #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 < 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 <&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 <&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 <&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 <&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 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 <&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 <&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 < 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 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 < 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 <&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 <&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 <&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 <&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 <&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 <&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 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 <&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" diff --git a/gcc/configure.in b/gcc/configure.in index b0dd697..e318236 100644 --- a/gcc/configure.in +++ b/gcc/configure.in @@ -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 diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c index 73dc4d1..b5c6d57 100644 --- a/gcc/ggc-page.c +++ b/gcc/ggc-page.c @@ -29,16 +29,37 @@ Boston, MA 02111-1307, USA. */ #include "ggc.h" #include "timevar.h" -#ifdef HAVE_MMAP_ANYWHERE -#include +/* 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 +# 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 +# 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 -- 2.7.4