2022-11-23  Marek Polacek  <polacek@redhat.com>

	Revert:
	2022-11-23  Marek Polacek  <polacek@redhat.com>

	* configure.ac: Also set shared when enable_host_pie.
	* configure: Regenerate.

2022-11-23  Marek Polacek  <polacek@redhat.com>

	* configure.ac: Also set shared when enable_host_pie.
	* configure: Regenerate.

2022-11-15  Nathan Sidwell  <nathan@acm.org>

	* cp-demangle.c (struct d_print_info): Rename is_lambda_arg to
	lambda_tpl_parms.  Augment semantics.
	(d_make_comp): Add checks for new components.
	(d_template_parm, d_template_head): New.
	(d_lambda): Add templated lambda support.
	(d_print_init): Adjust.
	(d_print_lambda_parm_name): New.
	(d_print_comp_inner): Support templated lambdas,
	* testsuite/demangle-expected: Add testcases.

2022-11-14  Martin Liska  <mliska@suse.cz>

	Revert:
	2022-11-14  Martin Liska  <mliska@suse.cz>

	* doc/bsd.rst: New file.
	* doc/conf.py: New file.
	* doc/copyright.rst: New file.
	* doc/extensions.rst: New file.
	* doc/function-variable-and-macro-listing.rst: New file.
	* doc/index.rst: New file.
	* doc/indices-and-tables.rst: New file.
	* doc/introduction.rst: New file.
	* doc/lesser-general-public-license-2.1.rst: New file.
	* doc/overview.rst: New file.
	* doc/replacement-functions.rst: New file.
	* doc/supplemental-functions.rst: New file.
	* doc/using.rst: New file.

2022-11-14  Martin Liska  <mliska@suse.cz>

	Revert:
	2022-11-14  Martin Liska  <mliska@suse.cz>

	* Makefile.in: Support Sphinx based documentation.

2022-11-14  Martin Liska  <mliska@suse.cz>

	Revert:
	2022-11-14  Martin Liska  <mliska@suse.cz>

	* at-file.texi: Removed.
	* copying-lib.texi: Removed.
	* functions.texi: Removed.
	* libiberty.texi: Removed.
	* obstacks.texi: Removed.

2022-11-14  Martin Liska  <mliska@suse.cz>

	Revert:
	2022-11-14  Martin Liska  <mliska@suse.cz>

	* Makefile.in: Support --with-sphinx-build.
	* configure.ac: Likewise.
	* configure: Regenerate.

2022-11-14  Martin Liska  <mliska@suse.cz>

	Revert:
	2022-11-14  Martin Liska  <mliska@suse.cz>

	* doc/bsd.rst:
	Add trailing newline.
	* doc/copyright.rst:
	Add trailing newline.
	* doc/extensions.rst:
	Add trailing newline.
	* doc/function-variable-and-macro-listing.rst:
	Add trailing newline.
	* doc/index.rst:
	Add trailing newline.
	* doc/indices-and-tables.rst:
	Add trailing newline.
	* doc/introduction.rst:
	Add trailing newline.
	* doc/lesser-general-public-license-2.1.rst:
	Add trailing newline.
	* doc/overview.rst:
	Add trailing newline.
	* doc/replacement-functions.rst:
	Add trailing newline.
	* doc/supplemental-functions.rst:
	Add trailing newline.
	* doc/using.rst:
	Add trailing newline.

2022-11-14  Martin Liska  <mliska@suse.cz>

	Revert:
	2022-11-14  Martin Liska  <mliska@suse.cz>

	* doc/conf.py: Add newline at last line.

2022-11-14  Martin Liska  <mliska@suse.cz>

	Revert:
	2022-11-14  Martin Liska  <mliska@suse.cz>

	PR other/107620
	* configure: Regenerate.
	* configure.ac: Always set sphinx-build.

2022-11-13  Martin Liska  <mliska@suse.cz>

	PR other/107620
	* configure: Regenerate.
	* configure.ac: Always set sphinx-build.

2022-11-10  Martin Liska  <mliska@suse.cz>

	* doc/conf.py: Add newline at last line.

2022-11-09  Martin Liska  <mliska@suse.cz>

	* doc/bsd.rst:
	Add trailing newline.
	* doc/copyright.rst:
	Add trailing newline.
	* doc/extensions.rst:
	Add trailing newline.
	* doc/function-variable-and-macro-listing.rst:
	Add trailing newline.
	* doc/index.rst:
	Add trailing newline.
	* doc/indices-and-tables.rst:
	Add trailing newline.
	* doc/introduction.rst:
	Add trailing newline.
	* doc/lesser-general-public-license-2.1.rst:
	Add trailing newline.
	* doc/overview.rst:
	Add trailing newline.
	* doc/replacement-functions.rst:
	Add trailing newline.
	* doc/supplemental-functions.rst:
	Add trailing newline.
	* doc/using.rst:
	Add trailing newline.

2022-11-09  Martin Liska  <mliska@suse.cz>

	* Makefile.in: Support --with-sphinx-build.
	* configure.ac: Likewise.
	* configure: Regenerate.

2022-11-09  Martin Liska  <mliska@suse.cz>

	* at-file.texi: Removed.
	* copying-lib.texi: Removed.
	* functions.texi: Removed.
	* libiberty.texi: Removed.
	* obstacks.texi: Removed.

2022-11-09  Martin Liska  <mliska@suse.cz>

	* Makefile.in: Support Sphinx based documentation.

2022-11-09  Martin Liska  <mliska@suse.cz>

	* doc/bsd.rst: New file.
	* doc/conf.py: New file.
	* doc/copyright.rst: New file.
	* doc/extensions.rst: New file.
	* doc/function-variable-and-macro-listing.rst: New file.
	* doc/index.rst: New file.
	* doc/indices-and-tables.rst: New file.
	* doc/introduction.rst: New file.
	* doc/lesser-general-public-license-2.1.rst: New file.
	* doc/overview.rst: New file.
	* doc/replacement-functions.rst: New file.
	* doc/supplemental-functions.rst: New file.
	* doc/using.rst: New file.

2022-10-18  Florian Weimer  <fweimer@redhat.com>

	* acinclude.m4 (ac_cv_func_strncmp_works): Add missing
	int return type and parameter list to the definition of main.
	Include <stdlib.h> and <string.h> for prototypes.
	(ac_cv_c_stack_direction): Add missing
	int return type and parameter list to the definitions of
	main, find_stack_direction.  Include <stdlib.h> for exit
	prototype.
	* configure: Regenerate.

2022-10-14  Jakub Jelinek  <jakub@redhat.com>

	* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Increment.
	* cp-demangle.c (cplus_demangle_builtin_types): Add std::bfloat16_t
	entry.
	(cplus_demangle_type): Demangle DF16b.
	* testsuite/demangle-expected (_Z3xxxDF16b): New test.

2022-10-11  Nathan Sidwell  <nathan@acm.org>

	* cp-demangle.c (d_prefix): 'M' components are not
	(re-)added to the substitution table.
	* testsuite/demangle-expected: Add tests.

2022-10-07  Nathan Sidwell  <nathan@acm.org>

	* cp-demangle.c (d_print_comp_inner): Allow parameter packs
	in a lambda signature.
	* testsuite/demangle-expected: Add tests.

2022-09-27  Jakub Jelinek  <jakub@redhat.com>

	PR c++/106652
	PR c++/85518
	* cp-demangle.c (d_dump): Handle
	DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.  Don't handle
	DEMANGLE_COMPONENT_FIXED_TYPE.
	(d_make_extended_builtin_type): New function.
	(cplus_demangle_builtin_types): Add _Float entry.
	(cplus_demangle_type): For DF demangle it as _Float<N> or
	_Float<N>x rather than fixed point which conflicts with it.
	(d_count_templates_scopes): Handle
	DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.  Just break; for
	DEMANGLE_COMPONENT_FIXED_TYPE.
	(d_find_pack): Handle DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
	Don't handle DEMANGLE_COMPONENT_FIXED_TYPE.
	(d_print_comp_inner): Likewise.
	* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Bump.
	* testsuite/demangle-expected: Replace _Z3xxxDFyuVb test
	with _Z3xxxDF16_DF32_DF64_DF128_CDF16_Vb.  Add
	_Z3xxxDF32xDF64xDF128xCDF32xVb test.

2022-09-22  Jonathan Wakely  <jwakely@redhat.com>

	* README: Replace gcc-bugs email address with Bugzilla URL.

2022-08-25  Martin Liska  <mliska@suse.cz>

	* configure: Regenerate.

2022-07-22  Martin Liska  <mliska@suse.cz>

	PR other/106370
	* _doprnt.c: Remove continue as last stmt
	in a loop.

2022-07-14  Martin Liska  <mliska@suse.cz>

	* functions.texi: Replace strtoul with strtoull.

2022-07-04  Nick Clifton  <nickc@redhat.com>

	* rust-demangle.c (demangle_const): Add a missing goto pass_return
	at the end of the function.

2022-07-04  Nick Clifton  <nickc@redhat.com>

	* rust-demangle.c (demangle_path_maybe_open_generics): Add
	recursion limit.

2022-07-01  Nick Clifton  <nickc@redhat.com>

	PR demangler/105039
	* rust-demangle.c (demangle_const): Add recursion limit.

2022-06-26  Simon Marchi  <simon.marchi@efficios.com>

	* configure.ac: Add AC_CONFIG_MACRO_DIRS call.
	* configure: Re-generate.

2022-05-23  Nathan Sidwell  <nathan@acm.org>

	* cp-demangle.c (d_make_comp): Adjust.
	(d_name, d_prefix): Adjust subst handling. Add module handling.
	(d_maybe_module_name): New.
	(d_unqualified_name): Add incoming module parm. Handle it.  Adjust all callers.
	(d_special_name): Add 'GI' support.
	(d_count_template_scopes): Adjust.
	(d_print_comp_inner): Print module.
	* testsuite/demangle-expected: New test cases

2022-05-18  Nathan Sidwell  <nathan@acm.org>

	* cp-demangle.c (d_name): Add SUBSTABLE parameter,
	push substitution if requested. Adjust unscoped name handling.
	(d_prefix): Reorder main loop. Adjust all calls.
	(d_unqualified_name): Add SCOPE parameter, create qualified
	name here. Adjust all calls.
	(cplus_demangle_type): Do not handle 'S' here, leave all
	to d_class_enum_type.
	(d_class_enum_type): Add SUBSTABLE parameter.

2022-05-17  Nathan Sidwell  <nathan@acm.org>

	* cp-demangle.c (d_make_comp): Adjust.
	(d_unqualified_name): Add 'DC' support.
	(d_count_template_scopes): Adjust.
	(d_print_comp_inner): Add structured binding.
	* testsuite/demangle-expected: Add testcases.

2022-05-10  Martin Liska  <mliska@suse.cz>

	* regex.c: Restore comments.

2022-05-10  Martin Liska  <mliska@suse.cz>
	    Alan Modra  <amodra@gmail.com>

	* hashtab.c (htab_empty): Use void * type instead of void **.
	(htab_expand): Likewise.

2022-05-10  Martin Liska  <mliska@suse.cz>

	* random.c: Remove 'define PTR'.

2022-05-10  Martin Liska  <mliska@suse.cz>

	* alloca.c (C_alloca): Use void * instead PTR.
	* calloc.c (malloc): Likewise.
	(bzero): Likewise.
	(calloc): Likewise.
	* hashtab.c (find_empty_slot_for_expand): Likewise.
	(eq_pointer): Likewise.
	(htab_create_alloc_ex): Likewise.
	(htab_create_typed_alloc): Likewise.
	(htab_set_functions_ex): Likewise.
	(htab_delete): Likewise.
	(htab_empty): Likewise.
	(htab_expand): Likewise.
	(htab_find_with_hash): Likewise.
	(htab_find): Likewise.
	(htab_find_slot_with_hash): Likewise.
	(htab_find_slot): Likewise.
	(htab_remove_elt): Likewise.
	(htab_remove_elt_with_hash): Likewise.
	(htab_clear_slot): Likewise.
	(htab_traverse_noresize): Likewise.
	(htab_traverse): Likewise.
	(htab_hash_string): Likewise.
	(iterative_hash): Likewise.
	(hash_pointer): Likewise.
	* memchr.c (memchr): Likewise.
	* memcmp.c (memcmp): Likewise.
	* memcpy.c (memcpy): Likewise.
	* memmove.c (memmove): Likewise.
	* mempcpy.c (memcpy): Likewise.
	(mempcpy): Likewise.
	* memset.c (memset): Likewise.
	* objalloc.c (malloc): Likewise.
	(free): Likewise.
	(objalloc_create): Likewise.
	(_objalloc_alloc): Likewise.
	(objalloc_free_block): Likewise.
	* random.c (PTR): Likewise.
	(void): Likewise.
	(initstate): Likewise.
	(setstate): Likewise.
	* regex.c: Likewise.
	* spaces.c (malloc): Likewise.
	(free): Likewise.
	* stpcpy.c (memcpy): Likewise.
	* strdup.c (malloc): Likewise.
	(memcpy): Likewise.
	* strerror.c (malloc): Likewise.
	(memset): Likewise.
	* strndup.c (malloc): Likewise.
	(memcpy): Likewise.
	* strsignal.c (malloc): Likewise.
	(memset): Likewise.
	* vasprintf.c (malloc): Likewise.
	* vprintf-support.c: Likewise.
	* xatexit.c (malloc): Likewise.
	* xmalloc.c (xmalloc): Likewise.
	(xcalloc): Likewise.
	(xrealloc): Likewise.
	* xmemdup.c (xmemdup): Likewise.

2022-03-19  Tiezhu Yang  <yangtiezhu@loongson.cn>

	* floatformat.c (floatformat_ieee_quad_big): Renamed from
	floatformat_ia64_quad_big.
	(floatformat_ieee_quad_little): Similarly.

2022-02-22  Jakub Jelinek  <jakub@redhat.com>

	PR lto/104617
	* simple-object-elf.c (simple_object_elf_match): Fix up URL
	in comment.
	(simple_object_elf_copy_lto_debug_sections): Remap sh_info and
	sh_link even if they are in the SHN_LORESERVE .. SHN_HIRESERVE
	range (inclusive).

2022-02-17  Mark Wielaard  <mark@klomp.org>

	* rust-demangle.c (rust_demangle_callback): Ignore everything
	after '.' char in sym for v0. For legacy symbols search
	backwards to find the last 'E' before any '.'.
	* testsuite/rust-demangle-expected: Add new .suffix testcases.

2022-01-31  Nick Clifton  <nickc@redhat.com>

	PR demangler/98886
	PR demangler/99935
	* rust-demangle.c (struct rust_demangler): Add a recursion
	counter.
	(demangle_path): Increment/decrement the recursion counter upon
	entry and exit.  Fail if the counter exceeds a fixed limit.
	(demangle_type): Likewise.
	(rust_demangle_callback): Initialise the recursion counter,
	disabling if requested by the option flags.

2022-01-15  Martin Sebor  <msebor@redhat.com>

	* regex.c: Suppress -Wuse-after-free.

2021-12-30  Lancelot SIX  <lsix@lancelotsix.com>

	* cp-demangle.c (d_clone_suffix): Support digits in clone tag
	names.
	* testsuite/demangle-expected: Check demangling of clone symbols
	with digits in name.

2021-12-16  H.J. Lu  <hjl.tools@gmail.com>

	Revert:
	2021-12-16  H.J. Lu  <hjl.tools@gmail.com>

	* Makefile.in (AR): Add @AR_PLUGIN_OPTION@
	(RANLIB): Add @RANLIB_PLUGIN_OPTION@.
	(configure_deps): Depend on ../config/gcc-plugin.m4.
	* configure.ac: AC_SUBST AR_PLUGIN_OPTION and
	RANLIB_PLUGIN_OPTION.
	* aclocal.m4: Regenerated.
	* configure: Likewise.

2021-12-15  H.J. Lu  <hjl.tools@gmail.com>

	* Makefile.in (AR): Add @AR_PLUGIN_OPTION@
	(RANLIB): Add @RANLIB_PLUGIN_OPTION@.
	(configure_deps): Depend on ../config/gcc-plugin.m4.
	* configure.ac: AC_SUBST AR_PLUGIN_OPTION and
	RANLIB_PLUGIN_OPTION.
	* aclocal.m4: Regenerated.
	* configure: Likewise.

2021-11-29  Eric Gallager  <egallager@gcc.gnu.org>

	PR other/103021
	* Makefile.in: Use ETAGS variable in TAGS target.
	* configure: Regenerate.
	* configure.ac: Allow ETAGS variable to be overridden.

2021-11-29  Andrew Pinski  <apinski@marvell.com>

	* make-temp-file.c (try_dir): Check to see if the dir
	is actually a directory.

2021-10-22  Eric Gallager  <egallager@gcc.gnu.org>

	PR other/102663
	* Makefile.in: Allow dvi-formatted documentation
	to be installed.

2021-10-17  Luís Ferreira  <contact@lsferreira.net>

	PR d/102618
	* d-demangle.c (dlang_parse_qualified): Handle anonymous
	symbols correctly.
	* testsuite/d-demangle-expected: New tests to cover anonymous
	symbols.

2021-10-14  Luís Ferreira  <contact@lsferreira.net>

	* testsuite/d-demangle-expected: Add test case for function literals.

2021-10-14  Luís Ferreira  <contact@lsferreira.net>

	* testsuite/d-demangle-expected: Add test cases for simple special
	mangles.

2021-10-12  Luís Ferreira  <contact@lsferreira.net>

	* d-demangle.c (dlang_parse_qualified): Remove redudant parenthesis
	around lhs and rhs of assignments.

2021-10-01  Luís Ferreira  <contact@lsferreira.net>

	* testsuite/d-demangle-expected: Add missing format for new test

2021-09-23  Luís Ferreira  <contact@lsferreira.net>

	* d-demangle.c (dlang_Type): Validate MANGLED is nonnull.
	* testsuite/d-demangle-expected: New test.

2021-09-23  Luís Ferreira  <contact@lsferreira.net>

	* d-demangle.c (dlang_symbol_backref): Ensure strlen of
	string is less than length computed by dlang_number.

2021-09-01  Iain Sandoe  <iain@sandoe.co.uk>

	* configure: Regenerate.
	* configure.ac: Do not search for sbrk on Darwin.
	* xmalloc.c: Do not declare sbrk unless it has been found
	by configure.

2021-08-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_identifier): Skip over fake parent manglings.
	* testsuite/d-demangle-expected: Add tests.

2021-08-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_parse_arrayliteral): Add 'info' parameter.
	(dlang_parse_assocarray): Likewise.
	(dlang_parse_structlit): Likewise.
	(dlang_value): Likewise.  Handle function literal symbols.
	(dlang_template_args): Pass 'info' to dlang_value.
	* testsuite/d-demangle-expected: Add new test.

2021-08-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_attributes): Handle typeof(*null).
	(dlang_type): Likewise.  Demangle 'n' as typeof(null).
	* testsuite/d-demangle-expected: Update tests.

2021-08-23  Iain Sandoe  <iain@sandoe.co.uk>

	* simple-object-mach-o.c (simple_object_mach_o_write_segment):
	Cast the first argument to set_32 as needed.

2021-08-18  Iain Sandoe  <iain@sandoe.co.uk>

	* simple-object-mach-o.c (simple_object_mach_o_write_segment):
	Arrange to swap the LTO index tables where needed.

2021-06-30  Gerald Pfeifer  <gerald@pfeifer.com>

	* make-temp-file.c (usrtmp): Remove.
	(choose_tmpdir): Remove use of usrtmp.

2021-06-28  Indu Bhagat  <indu.bhagat@oracle.com>

	* simple-object.c (handle_lto_debug_sections): Copy over .BTF section.

2021-06-28  Indu Bhagat  <indu.bhagat@oracle.com>
	    David Faust  <david.faust@oracle.com>
	    Jose E. Marchesi  <jose.marchesi@oracle.com>
	    Weimin Pan  <weimin.pan@oracle.com>

	* simple-object.c (handle_lto_debug_sections): Copy over .ctf
	sections.

2021-06-05  John David Anglin  <danglin@gcc.gnu.org>

	PR target/100734
	* configure.ac: Use libiberty snprintf and vsnprintf on
	hppa*-*-hpux*.
	* configure: Regenerate.

2021-05-06  Tom Tromey  <tom@tromey.com>

	* hashtab.c (htab_eq_string): New function.

2021-05-04  Eric Botcazou  <ebotcazou@adacore.com>

	* configure.ac: Make test for variables more robust.
	* configure: Regenerate.

2021-05-03  H.J. Lu  <hjl.tools@gmail.com>

	PR bootstrap/99703
	* configure: Regenerated.

2021-04-21  Andreas Schwab  <schwab@linux-m68k.org>

	PR demangler/100177
	* rust-demangle.c (demangle_const_char): Properly print the
	character value.

2021-03-31  Patrick Palka  <ppalka@redhat.com>

	PR c++/88115
	* cp-demangle.c (d_dump, d_make_comp, d_expression_1)
	(d_count_templates_scopes): Handle DEMANGLE_COMPONENT_VENDOR_EXPR.
	(d_print_comp_inner): Likewise.
	<case DEMANGLE_COMPONENT_EXTENDED_OPERATOR>: Revert r11-4926
	change.
	<case DEMANGLE_COMPONENT_UNARY>: Likewise.
	* testsuite/demangle-expected: Adjust __alignof__ tests.

2021-03-16  Nick Clifton  <nickc@redhat.com>

	* sha1.c (sha1_process_bytes): Use memmove in place of memcpy.

2021-02-20  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (ACLOCAL, ACLOCAL_AMFLAGS, $(srcdir)/aclocal.m4): Define.
	(configure_deps): Rename to ...
	(aclocal_deps): ... this.  Replace aclocal.m4 with acinclude.m4.
	($(srcdir)/configure): Replace $(configure_deps) with
	$(srcdir)/aclocal.m4.
	* aclocal.m4: Move libiberty macros to acinclude.m4, then regenerate.
	* acinclude.m4: New file.
	* configure: Regenerate.

2021-02-19  Ayush Mittal  <ayush.m@samsung.com>

	* argv.c (expandargv): free allocated buffer if read fails.

2021-02-01  Martin Sebor  <msebor@redhat.com>

	* dyn-string.c (dyn_string_insert_cstr): Use memcpy instead of strncpy
	to avoid -Wstringop-truncation.

2021-01-04  Martin Liska  <mliska@suse.cz>

	* strverscmp.c: Convert to utf8 from iso8859.

2020-12-22  Jason Merrill  <jason@redhat.com>

	PR c++/67343
	* cp-demangle.h (struct d_info): Add unresolved_name_state.
	* cp-demangle.c (d_prefix): Add subst parm.
	(d_nested_name): Pass it.
	(d_unresolved_name): Split out from...
	(d_expression_1): ...here.
	(d_demangle_callback): Maybe retry with old sr mangling.
	* testsuite/demangle-expected: Add test.

2020-12-21  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_expression_1): Recognize qualified-id
	on RHS of dt/pt.
	* testsuite/demangle-expected: Add test.

2020-12-21  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_unqualified_name): Clear is_expression.
	* testsuite/demangle-expected: Add tests.

2020-11-25  Matthew Malcomson  <matthew.malcomson@arm.com>

	* configure: Regenerate.
	* configure.ac: Avoid using sanitizer.

2020-11-13  Eduard-Mihai Burtescu  <eddyb@lyken.rs>

	* rust-demangle.c (struct rust_demangler): Add
	skipping_printing and bound_lifetime_depth fields.
	(eat): Add (v0-only).
	(parse_integer_62): Add (v0-only).
	(parse_opt_integer_62): Add (v0-only).
	(parse_disambiguator): Add (v0-only).
	(struct rust_mangled_ident): Add punycode{,_len} fields.
	(parse_ident): Support v0 identifiers.
	(print_str): Respect skipping_printing.
	(print_uint64): Add (v0-only).
	(print_uint64_hex): Add (v0-only).
	(print_ident): Respect skipping_printing,
	Support v0 identifiers.
	(print_lifetime_from_index): Add (v0-only).
	(demangle_binder): Add (v0-only).
	(demangle_path): Add (v0-only).
	(demangle_generic_arg): Add (v0-only).
	(demangle_type): Add (v0-only).
	(demangle_path_maybe_open_generics): Add (v0-only).
	(demangle_dyn_trait): Add (v0-only).
	(demangle_const): Add (v0-only).
	(demangle_const_uint): Add (v0-only).
	(basic_type): Add (v0-only).
	(rust_demangle_callback): Support v0 symbols.
	* testsuite/rust-demangle-expected: Add v0 testcases.

2020-11-13  Seija Kijin  <doremylover456@gmail.com>

	* strstr.c (strstr): Make implementation ANSI/POSIX compliant.

2020-11-11  Patrick Palka  <ppalka@redhat.com>

	PR c++/88115
	* cp-demangle.c (d_print_comp_inner)
	<case DEMANGLE_COMPONENT_EXTENDED_OPERATOR>: Don't print the
	"operator " prefix for __alignof__.
	<case DEMANGLE_COMPONENT_UNARY>: Always print parens around the
	operand of __alignof__.
	* testsuite/demangle-expected: Test demangling for __alignof__.

2020-11-09  Christophe Lyon  <christophe.lyon@linaro.org>

	* pex-win32.c (pex_win32_exec_child): Initialize orig_err.

2020-10-06  Martin Liska  <mliska@suse.cz>

	PR lto/97290
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
	Use sh_link of a .symtab_shndx section.

2020-09-24  Mark Wielaard  <mark@klomp.org>

	* dwarfnames.c (get_DW_UT_name): Define using DW_UT_FIRST, DW_UT
	and DW_UT_END.

2020-09-08  Felix Willgerodt  <felix.willgerodt@intel.com>

	* floatformat.c (floatformat_bfloat16_big): New.
	(floatformat_bfloat16_little): New.

2020-09-08  Alan Modra  <amodra@gmail.com>

	* d-demangle.c: Include limits.h.
	(ULONG_MAX, UINT_MAX): Provide fall-back definition.
	(dlang_number): Simplify and correct overflow test.  Only
	write *ret on returning non-NULL.  Make "ret" an unsigned long*.
	Only succeed for result of [0,UINT_MAX].
	(dlang_decode_backref): Simplify and correct overflow test.
	Only write *ret on returning non-NULL.  Only succeed for
	result [1,MAX_LONG].
	(dlang_backref): Remove now unnecessary range check.
	(dlang_symbol_name_p): Likewise.
	(string_need): Take a size_t n arg, and use size_t tem.
	(string_append): Use size_t n.
	(string_appendn, string_prependn): Take a size_t n arg.
	(TEMPLATE_LENGTH_UNKNOWN): Define as -1UL.
	(dlang_lname, dlang_parse_template): Take an unsigned long len
	arg.
	(dlang_symbol_backref, dlang_identifier, dlang_parse_integer),
	(dlang_parse_integer, dlang_parse_string),
	(dlang_parse_arrayliteral, dlang_parse_assocarray),
	(dlang_parse_structlit, dlang_parse_tuple),
	(dlang_template_symbol_param, dlang_template_args): Use
	unsigned long variables.
	* testsuite/d-demangle-expected: Add new tests.

2020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_function_args): Handle 'in' and 'in ref'
	parameter storage classes.
	(dlang_type): Remove identifier type.
	* testsuite/d-demangle-expected: Update tests.

2020-08-03  Richard Biener  <rguenther@suse.de>

	PR lto/96385
	* simple-object-elf.c
	(simple_object_elf_copy_lto_debug_sections): Localize global
	UNDEFs and reuse the prevailing name.

2020-07-30  H.J. Lu  <hjl.tools@gmail.com>

	PR bootstrap/96202
	* configure: Regenerated.

2020-07-14  Ian Lance Taylor  <iant@golang.org>

	PR demangler/96143
	* cp-demangle.c (d_lambda): Don't add substitution candidate.
	* testsuite/demangle-expected: Update a few existing test cases
	accordingly, and add a new test case.

2020-07-10  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (cplus_demangle_operators): Add di, dx, dX.
	(d_expression_1): Handle di and dX.
	(is_designated_init, d_maybe_print_designated_init): New.
	(d_print_comp_inner): Use d_maybe_print_designated_init.
	* testsuite/demangle-expected: Add designator tests.

2020-06-26  Nick Clifton  <nickc@redhat.com>

	* bsearch.c (bsearch): Remove use of register keyword.
	* bsearch_r.c (bsearch_r): Likewise.

2020-06-23  Nick Alcock  <nick.alcock@oracle.com>

	* bsearch_r.c: New file.
	* Makefile.in (CFILES): Add bsearch_r.c.
	(REQUIRED_OFILES): Add bsearch_r.o.
	* functions.texi: Regenerate.

2020-05-29  H.J. Lu  <hjl.tools@gmail.com>

	PR bootstrap/95413
	* configure: Regenerated.

2020-05-15  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_attributes): Add @live attribute.
	* testsuite/d-demangle-expected: Add new tests.

2020-05-14  Rainer Schuetze  <r.sagitario@gmx.de>
	    Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (enum dlang_symbol_kinds): Remove enum.
	(struct dlang_info): New struct
	(dlang_decode_backref): New function.
	(dlang_backref): New function.
	(dlang_symbol_backref): New function.
	(dlang_type_backref): New function.
	(dlang_symbol_name_p): New function.
	(dlang_function_type_noreturn): New function.
	(dlang_function_type): Add 'info' parameter.  Decode function type
	with dlang_function_type_noreturn.
	(dlang_function_args): Add 'info' parameter.
	(dlang_type): Add 'info' parameter.  Handle back referenced types.
	(dlang_identifier): Replace 'kind' parameter with 'info'.  Handle back
	referenced symbols.  Split off decoding of plain identifiers to...
	(dlang_lname): ...here.
	(dlang_parse_mangle): Replace 'kind' parameter with 'info'.  Decode
	function type and return with dlang_type.
	(dlang_parse_qualified): Replace 'kind' parameter with 'info', add
	'suffix_modifier' parameter.  Decode function type with
	dlang_function_type_noreturn.
	(dlang_parse_tuple): Add 'info' parameter.
	(dlang_template_symbol_param): New function.
	(dlang_template_args): Add 'info' parameter.  Decode symbol parameter
	with dlang_template_symbol_param.  Handle back referenced values, and
	externally mangled parameters.
	(dlang_parse_template): Add 'info' parameter.
	(dlang_demangle_init_info): New function.
	(dlang_demangle): Initialize and pass 'info' parameter.
	* testsuite/d-demangle-expected: Add new tests.

2020-05-12  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/94998
	* configure: Regenerated.

2020-04-28  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/94739
	* configure: Regenerated.

2020-04-27  Jakub Jelinek  <jakub@redhat.com>

	PR demangler/94797
	* cp-demangle.c (cplus_demangle_operators): Add ss <=> operator.
	* testsuite/demangle-expected: Add operator<=> test.

2020-04-25  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/94739
	* Makefile.in (COMPILE.c): Add @CET_HOST_FLAGS@.
	(configure_deps): Add $(srcdir)/../config/cet.m4 and
	$(srcdir)/../config/enable.m4.
	* aclocal.m4: Include ../config/cet.m4 and ../config/enable.m4.
	* configure.ac: Add GCC_CET_HOST_FLAGS(CET_HOST_FLAGS) and
	AC_SUBST(CET_HOST_FLAGS).
	* configure: Regenerated.

2020-03-05  Egeyar Bagcioglu  <egeyar.bagcioglu@oracle.com>

	* simple-object.c (handle_lto_debug_sections): Name
	".GCC.command.line" among debug sections to be copied over
	from lto objects.

2020-03-02  Nick Clifton  <nickc@redhat.com>

	* testsuite/demangle-expected: Update expected demangling of
	enable_if pattern.

2020-03-02  H.J. Lu  <hongjiu.lu@intel.com>

	PR lto/93966
	* simple-object.c (handle_lto_debug_sections): Also copy
	.note.gnu.property section.

2020-02-12  Sandra Loosemore  <sandra@codesourcery.com>

	PR libstdc++/79193
	PR libstdc++/88999

	* configure: Regenerated.

2020-02-05  Andrew Burgess  <andrew.burgess@embecosm.com>

	* hashtab.c (htab_remove_elt): Make a parameter const.
	(htab_remove_elt_with_hash): Likewise.

2020-01-23  Alexandre Oliva <oliva@adacore.com>

	* argv.c (writeargv): Output empty args as "".

2020-01-01  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

2019-12-06  Tim Ruehsen  <tim.ruehsen@gmx.de>

	* make-relative-prefix.c (split_directories):
	Return early on empty 'name'

2019-11-16  Tim Ruehsen  <tim.ruehsen@gmx.de>

	* cp-demangle.c (d_print_init): Remove const from 4th param.
	(cplus_demangle_fill_name): Initialize d->d_counting.
	(cplus_demangle_fill_extended_operator): Likewise.
	(cplus_demangle_fill_ctor): Likewise.
	(cplus_demangle_fill_dtor): Likewise.
	(d_make_empty): Likewise.
	(d_count_templates_scopes): Remobe const from 3rd param,
	Return on dc->d_counting > 1,
	Increment dc->d_counting.
        * cp-demint.c (cplus_demangle_fill_component): Initialize d->d_counting.
	(cplus_demangle_fill_builtin_type): Likewise.
	(cplus_demangle_fill_operator): Likewise.

2019-11-16  Eduard-Mihai Burtescu  <eddyb@lyken.rs>

	* cplus-dem.c (cplus_demangle): Use rust_demangle directly.
	(rust_demangle): Remove.
	* rust-demangle.c (is_prefixed_hash): Rename to is_legacy_prefixed_hash.
	(parse_lower_hex_nibble): Rename to decode_lower_hex_nibble.
	(parse_legacy_escape): Rename to decode_legacy_escape.
	(rust_is_mangled): Remove.
	(struct rust_demangler): Add.
	(peek): Add.
	(next): Add.
	(struct rust_mangled_ident): Add.
	(parse_ident): Add.
	(rust_demangle_sym): Remove.
	(print_str): Add.
	(PRINT): Add.
	(print_ident): Add.
	(rust_demangle_callback): Add.
	(struct str_buf): Add.
	(str_buf_reserve): Add.
	(str_buf_append): Add.
	(str_buf_demangle_callback): Add.
	(rust_demangle): Add.
	* rust-demangle.h: Remove.

2019-11-15  Miguel Saldivar  <saldivarcher@gmail.com>

	* testsuite/demangle-expected: Fix test.

2019-11-04  Kamlesh Kumar  <kamleshbhalui@gmail.com>

	* cp-demangle.c (d_expr_primary): Handle
	nullptr demangling.
	* testsuite/demangle-expected: Added test.

2019-10-29 Paul Pluzhnikov  <ppluzhnikov@google.com>

	* cp-demangle.c (d_number): Avoid signed int overflow.

2019-10-28  Miguel Saldivar  <saldivarcher@gmail.com>

	* cp-demangle.c (d_print_mod): Add a space before printing `complex`
	and `imaginary`, as opposed to after.
	* testsuite/demangle-expected: Adjust test.

2019-10-03  Eduard-Mihai Burtescu  <eddyb@lyken.rs>

	* rust-demangle.c (looks_like_rust): Remove.
	(rust_is_mangled): Don't check escapes.
	(is_prefixed_hash): Allow 0-9a-f permutations.
	(rust_demangle_sym): Don't bail on unknown escapes.
	* testsuite/rust-demangle-expected: Update 'main::$99$' test.

2019-09-03  Eduard-Mihai Burtescu  <eddyb@lyken.rs>

	* rust-demangle.c (unescape): Remove.
	(parse_lower_hex_nibble): New function.
	(parse_legacy_escape): New function.
	(is_prefixed_hash): Use parse_lower_hex_nibble.
	(looks_like_rust): Use parse_legacy_escape.
	(rust_demangle_sym): Use parse_legacy_escape.
	* testsuite/rust-demangle-expected: Add 'llv$u6d$' test.

2019-08-27  Martin Liska  <mliska@suse.cz>

	PR lto/91478
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
	First find a WEAK HIDDEN symbol in symbol table that will be
	preserved.  Later, use the symbol name for all removed symbols.

2019-08-12  Martin Liska  <mliska@suse.cz>

	* Makefile.in: Add filedescriptor.c.
	* filedescriptor.c: New file.
	* lrealpath.c (is_valid_fd): Remove.

2019-08-08  Martin Liska  <mliska@suse.cz>

	PR bootstrap/91352
	* lrealpath.c (is_valid_fd): New function.

2019-07-24  Martin Liska  <mliska@suse.cz>

	PR lto/91228
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
	Find first '\0' starting from gnu_lto + 1.

2019-07-12  Ren Kimura  <rkx1209dev@gmail.com>

	* simple-object-elf.c (simple_object_elf_match): Check zero value shstrndx.
	This fixes a Bug 90924.

2019-07-22  Martin Liska  <mliska@suse.cz>

	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
	Do not search for gnu_lto_v1, but search for first '\0'.

2019-07-18  Eduard-Mihai Burtescu  <eddyb@lyken.rs>

	* cplus-dem.c: Include rust-demangle.h.
	* rust-demangle.c: Include rust-demangle.h.
	* rust-demangle.h: New file.

2019-05-31  Michael Forney  <mforney@mforney.org>

	* cp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__
	is non-zero.

2019-04-30  Ben L  <bobsayshilol@live.co.uk>

	* d-demangle.c (dlang_parse_assocarray): Correctly handle error result.
	* testsuite/d-demangle-expected: Add testcase.

	* d-demangle.c (dlang_parse_tuple): Correctly handle error result.
	* testsuite/d-demangle-expected: Add testcase.

	* d-demangle.c (dlang_parse_structlit): Correctly handle error result.
	* testsuite/d-demangle-expected: Add testcase.

	* d-demangle.c (dlang_parse_arrayliteral): Correctly handle error result.
	* testsuite/d-demangle-expected: Add testcase.

	* d-demangle.c (dlang_parse_integer): Fix stack underflow.
	* testsuite/d-demangle-expected: Add testcase.

	* cp-demangle (d_print_comp_inner): Guard against a NULL 'typed_name'.
	* testsuite/demangle-expected: Add testcase.

	* cp-demangle.c (d_encoding): Guard against NULL return values from
	d_right (dc).
	* testsuite/demangle-expected: Add testcase.

2019-04-29  Ben L  <bobsayshilol@live.co.uk>

	* cp-demangle.c (d_expression_1): Don't peek ahead unless the current
	char is valid.
	* testsuite/demangle-expected: Add testcase.

2019-04-10  Nick Clifton  <nickc@redhat.com>

	PR 89394
	* cp-demangle.c (cplus_demangle_fill_name): Reject negative
	lengths.
	(d_count_templates_scopes): Replace num_templates and num_scopes
	parameters with a struct d_print_info pointer parameter.  Adjust
	body of the function accordingly.  Add recursion counter and check
	that the recursion limit is not reached.
	(d_print_init): Pass dpi parameter to d_count_templates_scopes.
	Reset recursion counter afterwards, unless the recursion limit was
	reached.

2019-04-07  Alan Modra  <amodra@gmail.com>

	* functions.texi: Regenerate.

2019-03-14  Jason Merrill  <jason@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* hashtab.c (htab_remove_elt_with_hash): Return if slot is NULL rather
	than if *slot is HTAB_EMPTY_ENTRY.

2019-02-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* splay-tree.c (splay_tree_insert): Also release old KEY in case
	of insertion of a key equal to an already present key.
	(splay_tree_new_typed_alloc): Update comment.

2019-01-22  Nidal Faour  <nidal.faour@wdc.com>

	PR lto/88422
	* simple-object.c (O_BINARY): Define if not already defined.
	(simple_object_copy_lto_debug_sections): Create file in binary
	mode.

2019-01-21  Tom Tromey  <tom@tromey.com>

	* splay-tree.c (splay_tree_remove): Delete the key if necessary.

2019-01-14  Tom Honermann  <tom@honermann.net>

	* cp-demangle.c (cplus_demangle_builtin_types)
	(cplus_demangle_type): Add name demangling for char8_t (Du).
	* cp-demangle.h: Increase D_BUILTIN_TYPE_COUNT to accommodate the
	new char8_t type.

2019-01-09  Sandra Loosemore  <sandra@codesourcery.com>

	PR other/16615

	* cp-demangle.c: Mechanically replace "can not" with "cannot".
	* floatformat.c: Likewise.
	* strerror.c: Likewise.

2019-01-01  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

2018-12-22  Jason Merrill  <jason@redhat.com>

	Remove support for demangling GCC 2.x era mangling schemes.
	* cplus-dem.c: Remove cplus_mangle_opname, cplus_demangle_opname,
	internal_cplus_demangle, and all subroutines.
	(libiberty_demanglers): Remove entries for ancient GNU (pre-3.0),
	Lucid, ARM, HP, and EDG demangling styles.
	(cplus_demangle): Remove 'work' variable.  Don't call
	internal_cplus_demangle.

2018-12-07  Nick Clifton  <nickc@redhat.com>

	PR 87681
	PR 87675
	PR 87636
	PR 87350
	PR 87335
	* cp-demangle.h (struct d_info): Add recursion_level field.
	* cp-demangle.c (d_function_type): Add recursion counter.
	If the recursion limit is reached and the check is not disabled,
	then return with a failure result.
	(cplus_demangle_init_info): Initialise the recursion_level field.
        (d_demangle_callback): If the recursion limit is enabled, check
	for a mangled string that is so long that there is not enough
	stack space for the local arrays.
        * cplus-dem.c (struct work): Add recursion_level field.
	(squangle_mop_up): Set the numb and numk fields to zero.
	(work_stuff_copy_to_from): Handle the case where a btypevec or
	ktypevec field is NULL.
	(demangle_nested_args): Add recursion counter.  If
	the recursion limit is not disabled and reached, return with a
	failure result.

2018-10-23  Jason Merrill  <jason@redhat.com>

	Implement P0732R2, class types in non-type template parameters.
	* cp-demangle.c (d_dump, d_make_comp, d_count_templates_scopes)
	(d_print_comp_inner): Handle DEMANGLE_COMPONENT_TPARM_OBJ.
	(d_special_name): Handle TA.
	(d_expresion_1): Fix demangling of brace-enclosed initializer list.

2018-10-31  Joseph Myers  <joseph@codesourcery.com>

	PR bootstrap/82856
	Merge from binutils-gdb:
	2018-06-19  Simon Marchi  <simon.marchi@ericsson.com>

	* configure.ac: Remove AC_PREREQ.
	* configure: Re-generate.
	* config.in: Re-generate.

2018-10-01  Nathan Sidwell  <nathan@acm.org>

	* configure.ac (checkfuncs): Add pipe2.
	* config.in, configure: Rebuilt.
	* pex-unix.c (pex_unix_exec_child): Comminicate errors from child
	to parent with a pipe, when possible.

2018-08-23  Nathan Sidwell  <nathan@acm.org>
	    Martin Liska  <mliska@suse.cz>

	PR driver/87056
	* pex-unix.c (pex_unix_exec_child): Duplicate bad_fn into local
	scopes to avoid potential clobber.

2018-08-20  Nathan Sidwell  <nathan@acm.org>

	* pex-unix.c (pex_child_error): Delete.
	(pex_unix_exec_child): Commonize error paths to single message &
	exit.

2018-07-30  Tom Tromey  <tom@tromey.com>

	* cplus-dem.c (remember_Btype): Don't call memcpy with LEN==0.

2018-07-26  Martin Liska  <mliska@suse.cz>

	PR lto/86548
	* make-temp-file.c (TEMP_FILE): Remove leading 'cc'.
	(make_temp_file): Call make_temp_file_with_prefix with
	first argument set to NULL.
	(make_temp_file_with_prefix): Support also prefix.

2018-07-19  Eli Zaretskii  <eliz@gnu.org>

	* simple-object-elf.c (ENOTSUP): If not defined by errno.h, redirect
	to ENOSYS.

2018-05-30  Jan Hubicka  <hubicka@ucw.cz>

	* simple-object.c (handle_lto_debug_sections): Add rename parameter.
	(handle_lto_debug_sections_rename): New function.
	(handle_lto_debug_sections_norename): New function.
	(simple_object_copy_lto_debug_sections): Add rename parameter.

2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	* splay-tree.c (splay_tree_compare_strings,
	splay_tree_delete_pointers): New utility functions.

2018-05-10  Martin Liska  <mliska@suse.cz>

	PR bootstrap/64914
	* md5.c: Use strict alignment with UBSAN_BOOTSTRAP.

2018-04-30  Daniel van Gerpen  <daniel@vangerpen.de>

	* argv.c (expandargv): Fix memory leak for copied argv.

2018-04-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR lto/81968
	* simple-object.c (handle_lto_debug_sections): Keep .comment
	section.

2018-03-02  David Malcolm  <dmalcolm@redhat.com>

	* cp-demangle.c: Update URL for g++ V3 ABI.

2018-01-20  Eli Zaretskii  <eliz@gnu.org>

	* simple-object-xcoff.c (simple_object_xcoff_find_sections): Use
	ulong_type to avoid warning about 32-bit shift.

2018-01-11  Richard Biener  <rguenther@suse.de>
	Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR lto/81968
	* simple-object-common.h (struct simple_object_functions):
	Change copy_lto_debug_sections callback signature.
	* simple-object-elf.c (SHN_HIRESERVE, SHT_SYMTAB_SHNDX,
	SHF_INFO_LINK): Add defines.
	(simple_object_elf_copy_lto_debug_sections): Instead of
	leaving not to be copied sections empty unnamed SHT_NULL
	remove them from the target section headers and adjust section
	reference everywhere.  Handle SHN_XINDEX in the symbol table
	processing properly.
	* simple-object.c (handle_lto_debug_sections): Change
	interface to return a modified string and handle renaming
	of relocation sections.

2018-01-10  Daniel van Gerpen  <daniel@vangerpen.de>

	* argv.c (expandargv): Correct check for dynamically
	allocated argv.

2018-01-03  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

2017-01-02  Richard Biener  <rguenther@suse.de>

	PR lto/83452
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_section):
	Do not use UNDEF locals for removed symbols but instead just
	define them in the first prevailing section and with no name.
	Use the same gnu_lto_v1 name for all removed globals we promote to
	WEAK UNDEFs so hpux can use a stub to provide this symbol.  Clear
	sh_info and sh_link in removed sections.

2017-10-30  Richard Biener  <rguenther@suse.de>

	PR lto/82757
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
	Strip two leading _s from the __gnu_lto_* symbols.

2017-10-24  Alan Modra  <amodra@gmail.com>

	PR lto/82687
	PR lto/82575
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
	Only make __gnu_lto symbols hidden.

2017-10-20  Alan Modra  <amodra@gmail.com>

	PR lto/82575
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
	Make discarded non-local symbols weak and hidden.

2017-10-18  Jakub Jelinek  <jakub@redhat.com>

	PR lto/82598
	* simple-object.c (handle_lto_debug_sections): Copy over also
	.note.GNU-stack section with unchanged name.
	* simple-object-elf.c (SHF_EXECINSTR): Define.
	(simple_object_elf_copy_lto_debug_section): Drop SHF_EXECINSTR bit
	on .note.GNU-stack section.

2017-09-25  Nathan Sidwell  <nathan@acm.org>

	PR demangler/82195
	* cp-demangle.c (d_encoding): Strip return type when name is a
	LOCAL_NAME.
	(d_local_name): Strip return type of enclosing TYPED_NAME.
	* testsuite/demangle-expected: Add and adjust tests.

2017-09-21  Nathan Sidwell  <nathan@acm.org>

	PR demangler/82195
	* cp-demangle.c (d_name): Revert addition of 'toplevel' parm.
	(has_return_type): Recurse for DEMANGLE_COMPONENT_LOCAL_NAME.
	(d_encoding): Revert d_name change.  Use is_fnqual_component_type
	to strip modifiers that do not belong.
	(d_special_name, d_class_enum_type): Revert d_name call change.
	(d_expresion_1): Commonize DEMANGLE_COMPONENT_UNARY building.
	(d_local_name): Revert parsing of a function type.
	(d_print_comp_inner): An inner LOCAL_NAME might contain a
	TEMPLATE.
	* testsuite/demangle-expected: Add & adjust tests

2017-09-15  Nathan Sidwell  <nathan@acm.org>

	PR demangler/82195
	* cp-demangle.c (d_name): Add 'toplevel' parm.  Pass to	...
	(d_local_name): ... here.  Parse trailing function args on nested
	local_name.
	(d_encoding, d_special_name, d_class_enum_type): Adjust d_name calls.
	* testsuite/demangle-expected: Add tests.

2017-09-15  Richard Biener  <rguenther@suse.de>

	PR lto/81968
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
	Iterate marking dependent sections necessary.

2017-09-15  Nathan Sidwell  <nathan@acm.org>

	* cp-demangle.c (is_fnqual_component_type): Reimplement using
	FNQUAL_COMPONENT_CASE.
	(d_encoding): Hold bare_function_type in local var.
	(d_local_name): Build name in both cases and build result once.
	Collapse switch-if to single conditional.
	(d_local_name): 

	* testsuite/demangle-expected: Realign blank lines with tests.

2017-09-12  Jiong Wang  <jiong.wang@arm.com>

	* dwarfnames.c (DW_CFA_DUP): New define.

2017-09-01  Martin Liska  <mliska@suse.cz>

	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
	Remove duplicite declaration.

2017-08-31  Richard Biener  <rguenther@suse.de>

	PR lto/81968
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_section):
	Keep names of removed global symbols.

2017-08-29  Tony Reix  <tony.reix@atos.net>

	* simple-object-xcoff.c (simple_object_xcoff_find_sections):
	Improve .go_export csect handling.  Don't make assumptions
	on containing section or number of auxiliary entries.

2017-08-28  Richard Biener  <rguenther@suse.de>

	PR lto/81968
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_section):
	Adjust field with for sh_type write, set SHF_EXCLUDE only for
	removed sections.

2017-08-22  Richard Biener  <rguenther@suse.de>

	PR lto/81925
	* simple-object-elf.c (simple_object_elf_write_shdr): Adjust
	type of sh_addralign and sh_entsize and properly write
	sh_entsize as Elf_Addr.
	(simple_object_elf_write_to_file): Read sh_entsize as Elf_Addr.

2017-08-21  Richard Biener  <rguenther@suse.de>

	* simple-object-common.h (struct simple_object_functions): Add
	copy_lto_debug_sections hook.
	* simple-object.c: Include fcntl.h.
	(handle_lto_debug_sections): New helper function.
	(simple_object_copy_lto_debug_sections): New function copying
	early LTO debug sections to regular debug sections in a new file.
	(simple_object_start_write): Handle NULL segment_name.
	* simple-object-coff.c (simple_object_coff_functions): Adjust
	for not implemented copy_lto_debug_sections hook.
	* simple-object-mach-o.c (simple_object_mach_o_functions): Likewise.
	* simple-object-xcoff.c (simple_object_xcoff_functions): Likewise.
	* simple-object-elf.c (SHT_NULL, SHT_SYMTAB, SHT_RELA, SHT_REL,
	SHT_GROUP): Add various sectopn header types.
	(SHF_EXCLUDE): Add flag.
	(Elf32_External_Sym, Elf64_External_Sym): Add symbol struct.
	(ELF_ST_BIND, ELF_ST_TYPE, ELF_ST_INFO): Add accessors.
	(STT_OBJECT, STT_FUNC, STT_TLS, STT_GNU_IFUNC): Add Symbol types.
	(STV_DEFAULT): Add symbol visibility.
	(SHN_COMMON): Add special section index name.
	(struct simple_object_elf_write): New.
	(simple_object_elf_start_write): Adjust for new private data.
	(simple_object_elf_write_shdr): Pass in values for all fields
	we write.
	(simple_object_elf_write_to_file): Adjust.  Copy from recorded
	section headers if requested.
	(simple_object_elf_release_write): Release private data.
	(simple_object_elf_copy_lto_debug_sections): Copy and rename sections
	as denoted by PFN and all their dependences, symbols and relocations
	to the empty destination file.
	(simple_object_elf_functions): Adjust for copy_lto_debug_sections hook.

2017-07-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarfnames.c (DW_FIRST_IDX, DW_END_IDX, DW_IDX, DW_IDX_DUP): New.

2017-06-07  Tony Reix  <tony.reix@atos.net>
	    Matthieu Sarter  <matthieu.sarter.external@atos.net>
	    David Edelsohn  <dje.gcc@gmail.com>

	* simple-object-xcoff.c (simple_object_xcoff_find_sections):
	Search symbol table for .go_export symbol and apply pfn if found.

2017-05-31  DJ Delorie  <dj@redhat.com>

	* configure.ac (strnlen): Add to AC_CHECK_DECLS.
	* configure: Likewise.
	* config.in: Add HACE_DECL_STRNLEN.

2017-05-27  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_identifier): Prefix mangled init symbols
	with `initializer for'.
	* testsuite/demangle-expected: Update tests.

2017-05-27  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_call_convention_p): Move declaration
	before dlang_type.
	(dlang_type): Handle function types.
	* testsuite/d-demangle-expected: Add tests.

2017-05-27  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_parse_real): Remove stack buffer, write
	the demangled hexadecimal directly to string.
	* testsuite/d-demangle-expected: Add tests.

2017-05-24  Eli Zaretskii  <eliz@gnu.org>

	* waitpid.c (wait) [__MINGW32__]: Define as a macro
	that calls _cwait, so that this function works on MinGW.

2017-05-02  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_hexdigit): New function.
	(ascii2hex): Remove function.
	(dlang_parse_string): Update to call dlang_hexdigit.
	* testsuite/d-demangle-expected: Add tests.

2017-05-02  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (strtol): Remove declaration.
	Updated all callers to use dlang_number.
	(dlang_number): New function.
	(dlang_value): Moved check for ISDIGIT into dlang_parse_integer.
	* testsuite/d-demangle-expected: Add tests.

2017-05-02  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_parse_symbol): Remove function.
	(dlang_parse_qualified): New function.
	(dlang_parse_mangle): New function.
	(dlang_type): Update to call dlang_parse_qualified.
	(dlang_identifier): Update to call either dlang_parse_qualified or
	dlang_parse_mangle.
	(dlang_type_modifier_p): Remove function.
	(dlang_call_convention_p): Don't allow type modifiers in mangle.
	(dlang_template_args): Update to call dlang_identifier.
	(dlang_demangle): Update to call dlang_parse_mangle.
	* testsuite/d-demangle-expected: Add tests.

2017-05-01  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_value): Add comment explaining why cases for
	digits are required.
	* testsuite/d-demangle-expected: Update integer value tests.

2017-05-01  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_parse_symbol): Skip over anonymous symbols.
	* testsuite/d-demangle-expected: Add tests.

2017-05-01  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_identifier): Handle template constraint symbols.
	(dlang_parse_template): Only advance if template symbol prefix is
	followed by a digit.
	* testsuite/d-demangle-expected: Add tests.

2017-05-01  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_attributes): Handle scope attributes.
	* testsuite/d-demangle-expected: Add tests.

2017-04-27  Jonathan Wakely  <jwakely@redhat.com>

	PR demangler/80513
	* cp-demangle.c (d_number): Check for overflow.
	* cplus-dem.c (consume_count): Fix overflow check.
	(gnu_special): Check for underscore after thunk delta.
	* testsuite/demangle-expected: Add tests for overflows and invalid
	characters in thunks.

2017-04-21  Mark Wielaard  <mark@klomp.org>

	* cp-demangle.c (MAX_RECURSION_COUNT): New constant.
	(struct d_print_info): Add recursion field.
	(d_print_init): Initialize recursion.
	(d_print_comp): Check and update d_print_info recursion depth.

2017-04-21  Mark Wielaard  <mark@klomp.org>

	* cp-demangle.c (d_substitution): Return NULL if d_add_substitution
	fails.

2017-04-21  Mark Wielaard  <mark@klomp.org>

	* cp-demangle.h (struct d_info): Remove did_subs field.
	* cp-demangle.c (struct d_info_checkpoint): Likewise.
	(d_template_param): Don't update did_subs.
	(d_substitution): Likewise.
	(d_checkpoint): Don't assign did_subs.
	(d_backtrack): Likewise.
	(cplus_demangle_init_info): Don't initialize did_subs.

2017-03-27  Pedro Alves  <palves@redhat.com>

	* cp-demint.c (cplus_demangle_fill_component): Handle
	DEMANGLE_COMPONENT_RVALUE_REFERENCE.

2017-03-12  Mark Wielaard  <mark@klomp.org>

	* cp-demangle.c (cplus_demangle_fill_name): Initialize
	demangle_component d_printing.
	(cplus_demangle_fill_extended_operator): Likewise.
	(cplus_demangle_fill_ctor): Likewise.
	(cplus_demangle_fill_dtor): Likewise.

2017-03-08  Mark Wielaard  <mark@klomp.org>

	PR demangler/70909
	PR demangler/67264
	* cp-demangle.c: Fix endless recursion. Pass
	struct demangle_component as non const.
	(d_make_empty): Initialize variable.
	(d_print_comp_inner): Limit recursion.
	(d_print_comp): Decrement variable.
	* cp-demint.c (cplus_demangle_fill_component): Initialize
	variable.
	(cplus_demangle_fill_builtin_type): Likewise.
	(cplus_demangle_fill_operator): Likewise.
	* testsuite/demangle-expected: Add tests.

2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>

	PR PR c++/70182
	* cp-demangle.c (d_unqualified_name): Handle "on" for
	operator names.
	* testsuite/demangle-expected: Add tests.

2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>

	PR c++/77489
	* cp-demangle.c (d_discriminator): Handle discriminator >= 10.
	* testsuite/demangle-expected: Add tests for discriminator.

2017-01-04  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

2017-01-04  Alan Modra  <amodra@gmail.com>

	* Makefile.in (configure_deps): Update.
	* configure: Regenerate.

2016-12-13  Jakub Jelinek  <jakub@redhat.com>

	PR c++/78761
	* cp-demangle.c (cplus_demangle_type): Demangle Dc as decltype(auto).
	* testsuite/demangle-expected: Add test for decltype(auto).

2016-12-12  Nathan Sidwell  <nathan@acm.org>

	PR c++/78252
	* cp-demangle.c (struct d_print_info): Add is_lambda_arg field.
	(d_print_init): Initialize it.
	(d_print_comp_inner) <DEMANGLE_COMPONENT_TEMPLATE_PARAM>: Check
	is_lambda_arg for auto.
	<DEMANGLE_COMPONENT_REFERENCE,
	DEMANGLE_COMPONENT_RVALUE_REFERENCE>: Skip smashing check when
	is_lambda_arg.
	<DEMANGLE_COMPONENT_LAMBDA>: Increment is_lambda_arg around arg
	printing.
	* testsuite/demangle-expected: Add lambda auto mangling cases. 

2016-12-06  DJ Delorie  <dj@redhat.com>

	* argv.c (expandargv): Check for directories passed as @-files.

2016-11-30  David Malcolm  <dmalcolm@redhat.com>

	PR c/78498
	* strndup.c (strlen): Delete decl.
	(strnlen): Add decl.
	(strndup): Call strnlen rather than strlen.
	* xstrndup.c (xstrndup): Likewise.

2016-11-29  Nathan Sidwell  <nathan@acm.org>

	* cp-demangle.c (d_print_comp_inner): Fix parameter indentation.

2016-11-03  David Tolnay <dtolnay@gmail.com>
	    Mark Wielaard  <mark@klomp.org>

	* Makefile.in (CFILES): Add rust-demangle.c.
	(REQUIRED_OFILES): Add rust-demangle.o.
	* cplus-dem.c (libiberty_demanglers): Add rust_demangling case.
	(cplus_demangle): Handle RUST_DEMANGLING.
	(rust_demangle): New function.
	* rust-demangle.c: New file.
	* testsuite/Makefile.in (really-check): Add check-rust-demangle.
	(check-rust-demangle): New rule.
	* testsuite/rust-demangle-expected: New file.

2016-11-15  Mark Wielaard  <mark@klomp.org>

	* cp-demangle.c (d_expression_1): Make sure third expression
	exists for ?: and fold expressions.
	* testsuite/demangle-expected: Add examples of strings that could
	crash the demangler because of missing expression.

2016-11-14  Mark Wielaard  <mark@klomp.org>

	* cplus-dem.c (demangle_signature): After 'H', template function,
	no success and don't advance position if end of string reached.
	(demangle_template): After 'z', template name, return zero on
	premature end of string.
	(gnu_special): Guard strchr against searching for zero characters.
	(do_type): If member, only advance mangled string when 'F' found.
	* testsuite/demangle-expected: Add examples of strings that could
	crash the demangler by reading past end of input.

2016-11-06  Mark Wielaard  <mark@klomp.org>

	* configure.ac (ac_libiberty_warn_cflags): Add -Wshadow=local.
	* configure: Regenerated.

2016-11-07  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (is_fnqual_component_type): New.
	(d_encoding, d_print_comp_inner, d_print_mod_list): Use it.
	(FNQUAL_COMPONENT_CASE): New.
	(d_make_comp, has_return_type, d_print_comp_inner)
	(d_print_function_type): Use it.
	(next_is_type_qual): New.
	(d_cv_qualifiers, d_print_mod): Handle noexcept and throw-spec.

2016-11-02  Mark Wielaard  <mjw@redhat.com>

	* cplus-dem.c (demangle_signature): Move fall through comment.
	(demangle_fund_type): Add fall through comment between 'G' and 'I'.
	* hashtab.c (iterative_hash): Add fall through comments.
	* regex.c (regex_compile): Add Fall through comment after '+'/'?'.
	(byte_re_match_2_internal): Add Fall through comment after jump_n.
	Change "Note fall through" to "Fall through".
	(common_op_match_null_string_p): Return false after set_number_at
	instead of fall through.

2016-11-01  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_ctor_dtor_name): Handle inheriting constructor.

2016-10-31  Mark Wielaard  <mjw@redhat.com>

	* cplus-dem.c (ada_demangle): Initialize demangled to NULL and
	XDELETEVEC demangled when unknown.

2016-09-19  Andrew Stubbs  <ams@codesourcery.com>

	* pex-win32.c (argv_to_cmdline): Quote zero-length parameters.
	* testsuite/test-pexecute.c (main): Insert check for zero-length parameters.

2016-09-10  Mark Wielaard  <mjw@redhat.com>

	* cp-demangle.c (d_substitution): Change struct demangle_component
	variable name from c to dc.

2016-08-12  Marek Polacek  <polacek@redhat.com>

	PR c/7652
	* cp-demangle.c (d_print_mod): Add FALLTHRU.

2016-08-04  Marcel Böhme  <boehme.marcel@gmail.com>

	PR c++/71696
	* cplus-dem.c: Prevent infinite recursion when there is a cycle
	in the referencing of remembered mangled types.
	(work_stuff): New stack to keep track of the remembered mangled
	types that are currently being processed.
	(push_processed_type): New method to push currently processed
	remembered type onto the stack.
	(pop_processed_type): New method to pop currently processed
	remembered type from the stack.
	(work_stuff_copy_to_from): Copy values of new variables.
	(delete_non_B_K_work_stuff): Free stack memory.
	(demangle_args): Push/Pop currently processed remembered type.
	(do_type): Do not demangle a cyclic reference and push/pop
	referenced remembered type.

2016-07-29  Aldy Hernandez  <aldyh@redhat.com>

	* make-relative-prefix.c (make_relative_prefix_1): Fall back to
	malloc if alloca argument is greater than MAX_ALLOCA_SIZE.

2016-07-15  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (cplus_demangle_operators): Add f[lrLR].
	(d_expression_1): Handle them.
	(d_maybe_print_fold_expression): New.
	(d_print_comp_inner): Use it.
	(d_index_template_argument): Handle negative index.

	* cp-demangle.c (cplus_demangle_operators): Add sP and sZ.
	(d_print_comp_inner): Handle them.
	(d_template_args_1): Split out from d_template_args.
	(d_args_length): New.

2016-07-13  Marcel Böhme  <boehme.marcel@gmail.com>

	PR c++/70926
	* cplus-dem.c: Handle large values and overflow when demangling
	length variables.
	(demangle_template_value_parm): Read only until end of mangled string.
	(do_hpacc_template_literal): Likewise.
	(do_type): Handle overflow when demangling array indices.

2016-06-12  Brooks Moses  <bmoses@google.com>

	* cp-demangle.c (cplus_demangle_print_callback): Avoid zero-length
	VLAs.

2016-05-31  Alan Modra  <amodra@gmail.com>

	* xmemdup.c (xmemdup): Use xmalloc rather than xcalloc.

2016-05-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/70498
	* cp-demangle.c (d_expression_1): Formatting fix.

2016-05-18  Artemiy Volkov  <artemiyv@acm.org>

	* cplus-dem.c (enum type_kind_t): Add tk_rvalue_reference
	constant.
	(demangle_template_value_parm): Handle tk_rvalue_reference
	type kind.
	(do_type): Support 'O' type id (rvalue references).

	* testsuite/demangle-expected: Add tests.

2016-05-02  Marcel Böhme  <boehme.marcel@gmail.com>

	PR c++/70498
	* cp-demangle.c: Parse numbers as integer instead of long to avoid
	overflow after sanity checks. Include <limits.h> if available.
	(INT_MAX): Define if necessary.
	(d_make_template_param): Takes integer argument instead of long.
	(d_make_function_param): Likewise.
	(d_append_num): Likewise.
	(d_identifier): Likewise.
	(d_number): Parse as and return integer.
	(d_compact_number): Handle overflow.
	(d_source_name): Change variable type to integer for parsed number.
	(d_java_resource): Likewise.
	(d_special_name): Likewise.
	(d_discriminator): Likewise.
	(d_unnamed_type): Likewise.
	* testsuite/demangle-expected: Add regression test cases.

2016-04-30  Oleg Endo  <olegendo@gcc.gnu.org>

	* configure: Remove SH5 support.

2016-04-08  Marcel Böhme  <boehme.marcel@gmail.com>

	PR c++/69687
	* cplus-dem.c: Include <limits.h> if available.
	(INT_MAX): Define if necessary.
	(remember_type, remember_Ktype, register_Btype, string_need):
	Abort if we detect cases where we the size of the allocation would
	overflow.

	PR c++/70492
	* cplus-dem.c (gnu_special): Handle case where consume_count returns
	-1.

2016-03-31  Mikhail Maltsev  <maltsevm@gmail.com>
	    Marcel Bohme  <boehme.marcel@gmail.com>

	PR c++/67394
	PR c++/70481
	* cplus-dem.c (squangle_mop_up): Zero bsize/ksize after freeing
	btypevec/ktypevec.
	* testsuite/demangle-expected: Add coverage tests.

2016-01-27  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_call_convention): Handle extern Objective-C
	function calling convention.
	(dlang_call_convention_p): Likewise.
	(dlang_type): Likewise.
	* testsuite/d-demangle-expected: Add coverage tests.

2016-01-27  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_function_args): Append ',' for variadic functions
	only if parameters were seen before the elipsis symbol.
	* testsuite/d-demangle-expected: Add coverage test for parameter-less
	variadic functions.

2016-01-27  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_type): Handle function types only in the context
	of seeing a pointer type symbol.
	* testsuite/d-demangle-expected: Update function pointer tests.

2016-01-05  Mike Frysinger  <vapier@gentoo.org>

	* argv.c (dupargv): Change arg to char * const *.  Update comment.
	(writeargv, countargv): Likewise.
	* functions.texi (dupargv, writeargv, countargv): Likewise.

2016-01-05  Mike Frysinger  <vapier@gentoo.org>

	* argv.c (dupargv): Replace strlen/xmalloc/strcpy with xstrdup.

2015-12-28  Patrick Palka  <ppalka@gcc.gnu.org>

	* crc32.c: In the documentation, don't refer to GDB's
	now-nonexistent crc32 implementation.  In the table-generation
	program embedded within the documentation, change the type of
	the induction variables i and j from int to unsigned int, to
	avoid undefined behavior.

2015-12-21  Nick Clifton  <nickc@redhat.com>

	PR 66827
	* regex.c (EXTRACT_NUMBER): Cast sign byte to unsigned before left
	shifting.

2015-11-27  Pedro Alves  <palves@redhat.com>

	PR other/61321
	PR other/61233
	* cp-demangle.c (d_demangle_callback, d_make_comp): Handle
	DEMANGLE_COMPONENT_CONVERSION.
	(is_ctor_dtor_or_conversion): Handle DEMANGLE_COMPONENT_CONVERSION
	instead of DEMANGLE_COMPONENT_CAST.
	(d_operator_name): Return a DEMANGLE_COMPONENT_CONVERSION
	component if handling a conversion.
	(d_count_templates_scopes, d_print_comp_inner): Handle
	DEMANGLE_COMPONENT_CONVERSION.
	(d_print_comp_inner): Handle DEMANGLE_COMPONENT_CONVERSION instead
	of DEMANGLE_COMPONENT_CAST.
	(d_print_cast): Rename as ...
	(d_print_conversion): ... this.  Adjust comments.
	(d_print_cast): Rewrite - simply print the left subcomponent.
	* cp-demint.c (cplus_demangle_fill_component): Handle
	DEMANGLE_COMPONENT_CONVERSION.

	* testsuite/demangle-expected: Add tests.

2015-11-12  Mike Stump  <mikestump@comcast.net>

	* Makefile.in (etags tags TAGS): Use && instead of ;.

2015-11-09  Alan Modra  <amodra@gmail.com>

	* configure.ac: Check size of size_t.
	* configure: Regenerate.
	* config.in: Regenerate.

2015-11-09  Alan Modra  <amodra@gmail.com>

	* obstack.c (_obstack_newchunk): Silence -Wc++compat warning.
	(_obstack_begin_worker): Likewise.  Move assignment to h->chunk
	after alloc failure check.

2015-11-09  Alan Modra  <amodra@gmail.com>

	PR gdb/17133
	* obstack.c (__alignof__): Expand alignof_type from alignof.h.
	(obstack_exit_failure): Don't use exitfail.h.
	(_): Include libintl.h when HAVE_LIBINTL_H and nls enabled.
	Provide default.  Don't include gettext.h.
	(_Noreturn): Define.
	* obstacks.texi: Adjust node references to external libc info files.

2015-11-09  Alan Modra  <amodra@gmail.com>

	PR gdb/17133
	* obstack.c: Import current gnulib file.
	* obstacks.texi: Updated doc, from glibc's manual/memory.texi.

2015-11-06  Joel Brobecker  <brobecker@adacore.com>

	* configure.ac: Set AC_CV_FUNC_GETPAGESIZE to "yes" on
	Android hosts.
	* configure: Regenerate.

2015-10-28  Jason Merrill  <jason@redhat.com>

	* Makefile.in (TAGS): Fix for separate build directory.

2015-10-18  Roland McGrath  <roland@gnu.org>
	    Iain Sandoe  <iain@codesourcery.com>

	PR other/63758
	* pex-unix.c: Obtain the environment interface from settings in
	environ.h rather than in-line code.  Update copyright date.
	* setenv.c: Likewise.
	* xmalloc.c: Likewise.

2015-09-30  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_cv_qualifiers): Dx means transaction_safe.
	(cplus_demangle_type): Let d_cv_qualifiers handle it.
	(d_dump, d_make_comp, has_return_type, d_encoding)
	(d_count_templates_scopes, d_print_comp_inner)
	(d_print_mod_list, d_print_mod, d_print_function_type)
	(is_ctor_or_dtor): Handle DEMANGLE_COMPONENT_TRANSACTION_SAFE.

2015-08-15  Ian Lance Taylor  <iant@google.com>

	* cp-demangle.c (d_abi_tags): Preserve di->last_name across any
	ABI tags.

2015-08-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_parse_real): Remove call to strtod.
	(strtod): Remove declaration.
	* testsuite/d-demangle-expected: Update float and complex literal
	tests to check correct hexadecimal demangling.

2015-07-13  Mikhail Maltsev  <maltsevm@gmail.com>

	* cp-demangle.c (d_dump): Fix syntax error.
	(d_identifier): Adjust type of len to match d_source_name.
	(d_expression_1): Fix out-of-bounds access.  Check code variable for
	NULL before dereferencing it.
	(d_find_pack): Do not recurse for FIXED_TYPE, DEFAULT_ARG and NUMBER.
	(d_print_comp_inner): Add NULL pointer check.
	* cp-demangle.h (d_peek_next_char): Define as inline function when
	CHECK_DEMANGLER is defined.
	(d_advance): Likewise.
	* testsuite/demangle-expected: Add new testcases.

2015-07-09  Uros Bizjak  <ubizjak@gmail.com>

	* getruntime.c (RUSAGE_SELF): Define if not already defined.
	(get_runtime): Use RUSAGE_SELF as argument 1 of getrusage call.

2015-06-01  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (cplus_demangle_type): Handle arguments to vendor
	extended qualifier.

2015-05-22  Yunlian Jiang  <yunlian@google.com>

	* configure.ac: Add AC_GNU_SOURCE.
	* Makefile.in (COMPILE.c): Add -D_GNU_SOURCE.
	* configure, config.in: Rebuild.
	* floatformat.c (_GNU_SOURCE): Don't define if already defined.

2015-05-16  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_symbol_kinds): New enum.
	(dlang_parse_symbol): Update signature.  Handle an ambiguity between
	pascal functions and template value arguments.  Only check for a type
	if parsing a function, or at the top level.  Return failure if the
	entire symbol was not successfully demangled.
	(dlang_identifier): Update signature.  Handle an ambiguity between two
	adjacent digits in a mangled symbol string.
	(dlang_type): Update call to dlang_parse_symbol.
	(dlang_template_args): Likewise.
	(dlang_parse_template): Likewise.
	(dlang_demangle): Likewise.
	* testsuite/d-demangle-expected: Fix bad tests found, and add problematic
	examples to the unittests.

2015-05-16  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_template_args): Skip over specialized template
	parameters in mangled symbol.
	* testsuite/d-demangle-expected: Add coverage and unittest for specialized
	template parameters.

2015-05-16  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_type): Handle cent and ucent types.
	* testsuite/d-demangle-expected: Add coverage tests for cent and ucent.

2015-05-16  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_attributes): Handle return attributes, ignoring
	return parameters in the mangled string.  Return NULL if have encountered
	an unknown attribute.
	(dlang_function_args): Handle return parameters in the mangled string.
	* testsuite/d-demangle-expected: Add coverage tests for functions with
	return parameters and return attributes.

2015-05-16  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_identifier): Check encoded length of identifier
	to verify strncmp matches entire string.
	* testsuite/d-demangle-expected: Fix wrong test for postblit symbol.

2015-05-16  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_type_modifiers): New function.
	(dlang_type_modifier_p): New function.
	(dlang_call_convention_p): Ignore any kind of type modifier.
	(dlang_type): Handle and emit the type modifier after delegate types.
	(dlang_parse_symbol): Handle and emit the type modifier after the symbol.
	* testsuite/d-demangle-expected: Add coverage tests for all valid
	usages of function symbols with type modifiers.

2015-05-16  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_call_convention): Return NULL if have reached the
	end of the symbol, but expected something to read.
	(dlang_attributes): Likewise.
	(dlang_function_type): Likewise.
	(dlang_type): Likewise.
	(dlang_identifier): Likewise.
	(dlang_value): Likewise.

2015-05-16  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-demangle.c (dlang_parse_string): Represent embedded whitespace or
	non-printable characters as hex or escape sequences.
	* testsuite/d-demangle-expected: Add test for templates with tabs and
	newlines embedded into the signature.

2015-05-08  Joel Brobecker  <brobecker@adacore.com>

	* mkstemps.c: #include <time.h> if HAVE_TIME_H is defined
	but not HAVE_SYS_TIME_H.

2015-04-22  Eli Zaretskii  <eliz@gnu.org>

	* setenv.c <environ>: Declare only if not a macro.

2015-04-14  Max Ostapenko  <m.ostapenko@partner.samsung.com>

	* testsuite/Makefile.in (LIBCFLAGS): Add LDFLAGS.

2015-04-10  Jakub Jelinek  <jakub@redhat.com>
	    Iain Sandoe  <iain@codesourcery.com>

	PR target/65351
	* configure: Regenerate.

2015-04-07  Jakub Jelinek  <jakub@redhat.com>
	    Iain Sandoe  <iain@codesourcery.com>

	PR target/65351
	* configure: Regenerate.

2015-01-19  Eli Zaretskii  <eliz@gnu.org>

	* strerror.c <sys_nerr, sys_errlist>: Declare only if they aren't
	macros.

2014-12-24  Uros Bizjak  <ubizjak@gmail.com>
	    Ben Elliston  <bje@au.ibm.com>
	    Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* xasprintf.c: New file.
	* Makefile.in (CFILES): Add xasprintf.c.
	(REQUIRED_OFILES): Add xasprintf.$(objext).
	(xasprintf.$(objext)): New target.
	* functions.texi: Regenerate.

2014-12-11  Uros Bizjak  <ubizjak@gmail.com>
	    Ben Elliston  <bje@au.ibm.com>
	    Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* xvasprintf.c: New file.
	* vprintf-support.h: Likewise.
	* vprintf-support.c: Likewise.
	* Makefile.in (CFILES): Add vprintf-support.c, xvasprintf.c.
	(REQUIRED_OFILES): Add vprintf-support.$(objext), xvasprintf.$(objext).
	(vprintf-support.$(objext), xvasprintf.$(objext)): New targets.
	(vasprintf.$(objext)): Depend on $(srcdir)/vprintf-support.h.
	* functions.texi: Regenerate.
	* vasprintf.c (int_vasprintf): Use libiberty_vprintf_buffer_size.

2014-11-22  John David Anglin  <danglin@gcc.gnu.org>

	PR other/63694
	* configure.ac: Check for strtol, strtoul, strtoll and strtoull
	declarations.
	* configure: Regenerated.

2014-11-12  Kirill Yukhin  <kirill.yukhin@intel.com>

	* testsuite/test-strtol.c (run_tests): Cast strtol return to
	unsigned long.

2014-11-11  Anthony Brandon  <anthony.brandon@gmail.com>
	    Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR driver/36312
	* filename_cmp.c (canonical_filename_eq): New function to check if
	file names are the same.
	* functions.texi: Updated with documentation for new function.

2014-11-11  David Malcolm  <dmalcolm@redhat.com>

	* ChangeLog.jit: New.

2014-11-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* sigsetmask.c (_POSIX_SOURCE): Remove.

2014-10-28  Yury Gribov  <y.gribov@samsung.com>

	* strtoll.c: New file.
	* strtoull.c: New file.
	* configure.ac: Add long long checks.  Add harness for strtoll and
	strtoull.  Check decls for strtol, strtoul, strtoll, strtoull.
	* Makefile.in (CFILES, CONFIGURED_OFILES): Add strtoll and strtoull.
	* config.in: Regenerate.
	* configure: Regenerate.
	* functions.texi: Regenerate.
	* testsuite/Makefile.in (check-strtol): New rule.
	(test-strtol): Likewise.
	(mostlyclean): Clean up strtol test.
	* testsuite/test-strtol.c: New test.

2014-10-15  David Malcolm  <dmalcolm@redhat.com>

	* choose-temp.c (choose_tmpdir): Remove now-redundant local
	copy of prototype.
	* functions.texi: Regenerate.
	* make-temp-file.c (choose_tmpdir): Convert return type from
	char * to const char * - given that this returns a pointer to
	a memoized allocation, the caller must not touch it.

2014-10-14  Joel Brobecker  <brobecker@adacore.com>

	* d-demangle.c: Replace strtold with strtod in global comment.
	(strtold): Remove declaration.
	(strtod): New declaration.
	(dlang_parse_real): Declare value as double instead of long
	double.  Replace call to strtold by call to strtod.
	Update format in call to snprintf.

2014-09-26  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_substitution): Handle abi tags on abbreviation.

2014-09-26  Max Ostapenko  <m.ostapenko@partner.samsung.com>

	* pex-common.h (struct pex_funcs): Add new parameter for open_write field.
	* pex-unix.c (pex_unix_open_write): Add support for new parameter.
	* pex-djgpp.c (pex_djgpp_open_write): Likewise.
	* pex-win32.c (pex_win32_open_write): Likewise.
	* pex-common.c (pex_run_in_environment): Likewise.

2014-09-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Makefile.in (CFILES): Add d-demangle.c.
	(REQUIRED_OFILES): Add d-demangle.o.
	* cplus-dem.c (libiberty_demanglers): Add dlang_demangling case.
	(cplus_demangle): Likewise.
	* d-demangle.c: New file.
	* testsuite/Makefile.in (really-check): Add check-d-demangle.
	* testsuite/d-demangle-expected: New file.

2014-09-19  Ian Lance Taylor  <iant@google.com>

	* simple-object-elf.c (simple_object_elf_write_ehdr): Correctly
	handle objects with more than SHN_LORESERVE sections.
	(simple_object_elf_write_shdr): Add sh_link parameter.
	(simple_object_elf_write_to_file): Correctly handle objects with
	more than SHN_LORESERVE sections.

2014-08-29  Andrew Burgess  <aburgess@broadcom.com>

	* cp-demangle.c (d_dump): Only access field from s_fixed part of
	the union for DEMANGLE_COMPONENT_FIXED_TYPE.
	(d_count_templates_scopes): Likewise.

2014-08-13  Gary Benson  <gbenson@redhat.com>

	* testsuite/demangler-fuzzer.c: New file.
	* testsuite/Makefile.in (fuzz-demangler): New rule.
	(demangler-fuzzer): Likewise.
	(mostlyclean): Clean up demangler fuzzer.

2014-06-11  Andrew Burgess  <aburgess@broadcom.com>

	* cplus-dem.c (do_type): Call string_delete even if the call to
	demangle_template fails.

2014-06-01  Ray Donnelly  <mingw.android@gmail.com>

	* pex-win32.c (argv_to_cmdline): Don't quote
	args unnecessarily

2014-05-28  Pedro Alves  <palves@redhat.com>

	* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_FUNCTION_PARAM
	and DEMANGLE_COMPONENT_NUMBER.

2014-05-22  Thomas Schwinge  <thomas@codesourcery.com>

	* testsuite/demangle-expected: Fix last commit.

2014-05-14  Andrew Burgess  <aburgess@broadcom.com>

	* cplus-dmem.c (internal_cplus_demangle): Free any resources
	allocated by possible previous call to gnu_special.
	(squangle_mop_up): Reset pointers to NULL after calling free.
	* testsuite/demangle-expected: New test case.

2014-05-08  Gary Benson  <gbenson@redhat.com>

	* cp-demangle.c (struct d_component_stack): New structure.
	(struct d_print_info): New field component_stack.
	(d_print_init): Initialize the above.
	(d_print_comp_inner): Renamed from d_print_comp.
	Do not restore template stack if it would cause a loop.
	(d_print_comp): New function.
	* testsuite/demangle-expected: New test cases.

2014-04-17  Jakub Jelinek  <jakub@redhat.com>

	PR sanitizer/56781
	* maint-tool: Also emit rule for noasan/ subdirectory.
	* configure.ac (NOASANFLAG): Set and substitute.
	* Makefile.in: Regenerated.
	(NOASANFLAG): Set.
	(all, $(TARGETLIB), mostlyclean): Handle noasan subdir like pic
	subdir.
	(stamp-noasandir): New goal.
	* configure: Regenerated.

2014-04-01  Richard Biener  <rguenther@suse.de>

	* simple-object.c (simple_object_internal_write): Handle
	EINTR and short writes.

2014-03-28  Richard Biener  <rguenther@suse.de>

	* simple-object.c (simple_object_internal_read): Handle
	EINTR and short reads.

2014-03-13  Uros Bizjak  <ubizjak@gmail.com>

	* regex.c (bzero) [!_LIBC]: Define without coma expression.
	(regerror): Cast the call to memcpy to (void) to avoid unused
	value warnings.

2014-01-28  Thomas Schwinge  <thomas@codesourcery.com>

	* cp-demangle.c (d_demangle_callback): Put an abort call in place,
	to help the compiler.

2014-01-21  Tom Tromey  <tromey@redhat.com>

	* _doprint.c (checkit): Use stdarg, not VA_* macros.
	* asprintf.c (asprintf): Use stdarg, not VA_* macros.
	* concat.c (concat_length, concat_copy, concat_copy2, concat)
	(reconcat): Use stdarg, not VA_* macros.
	* snprintf.c (snprintf): Use stdarg, not VA_* macros.
	* vasprintf.c (checkit): Use stdarg, not VA_* macros.
	* vsnprintf.c (checkit): Use stdarg, not VA_* macros.

2014-01-06  Mike Frysinger  <vapier@gentoo.org>

	PR other/56780
	* configure.ac: Delete target_header_dir assignment.
	* configure: Regenerated.

2014-01-06  Gary Benson  <gbenson@redhat.com>

	* cp-demangle.c (struct d_print_info): New fields
	next_saved_scope, copy_templates, next_copy_template and
	num_copy_templates.
	(d_count_templates): New function.
	(d_print_init): New parameter "dc".
	Estimate numbers of templates and scopes required.
	(d_print_free): Removed function.
	(cplus_demangle_print_callback): Allocate stack for
	templates and scopes.  Removed call to d_print_free.
	(d_copy_templates): Removed function.
	(d_save_scope): New function.
	(d_get_saved_scope): Likewise.
	(d_print_comp): Replace state saving/restoring code with
	calls to d_save_scope and d_get_saved_scope.

2013-12-23  Bill Maddox  <maddox@google.com>

	* cp-demangle.c (cplus_demangle_fill_ctor,cplus_demangle_fill_dtor):
	Handle unified ctor/dtor.
	(d_ctor_dtor_name): Handle unified ctor/dtor.

2013-11-22  Cary Coutant  <ccoutant@google.com>
    
	PR other/59195
	* cp-demangle.c (struct d_info_checkpoint): New struct.
	(struct d_print_info): Add current_template field.
	(d_operator_name): Set flag when processing a conversion
	operator.
	(cplus_demangle_type): When processing <template-args> for
	a conversion operator, backtrack if necessary.
	(d_expression_1): Renamed from d_expression.
	(d_expression): New wrapper around d_expression_1.
	(d_checkpoint): New function.
	(d_backtrack): New function.
	(d_print_init): Initialize current_template.
	(d_print_comp): Set current_template.
	(d_print_cast): Put current_template in scope for
	printing conversion operator name.
	(cplus_demangle_init_info): Initialize is_expression and
	is_conversion.
	* cp-demangle.h (struct d_info): Add is_expression and
	is_conversion fields.
	* testsuite/demangle-expected: New test cases.

2013-11-15  Andreas Schwab  <schwab@linux-m68k.org>

	* configure: Regenerate.

2013-11-12  Uros Bizjak  <ubizjak@gmail.com>

	* cp-demangle.c (d_copy_templates): Cast result of malloc
	to (struct d_print_template *).
	(d_print_comp): Cast result of realloc to (struct d_saved scope *).

2013-10-29  Marc Glisse  <marc.glisse@inria.fr>

	PR tree-optimization/58689
	* concat.c: Remove note about xmalloc.

2013-10-27  Gerald Pfeifer  <gerald@pfeifer.com>

	* testsuite/test-demangle.c: Include unistd.h.

2013-10-25  Gary Benson  <gbenson@redhat.com>

	* cp-demangle.c (struct d_saved_scope): New structure.
	(struct d_print_info): New fields saved_scopes and
	num_saved_scopes.
	(d_print_init): Initialize the above.
	(d_print_free): New function.
	(cplus_demangle_print_callback): Call the above.
	(d_copy_templates): New function.
	(d_print_comp): New variables saved_templates and
	need_template_restore.
	[DEMANGLE_COMPONENT_REFERENCE, DEMANGLE_COMPONENT_RVALUE_REFERENCE]:
	Capture scope the first time the component is traversed, and use the
	captured scope for subsequent traversals.
	* testsuite/demangle-expected: Add regression test.

2013-10-23  Gerald Pfeifer  <gerald@pfeifer.com>

	* testsuite/test-expandargv.c: Include unistd.h.

2013-10-15  David Malcolm  <dmalcolm@redhat.com>

	* configure.ac: If --enable-host-shared, use -fPIC.
	* configure: Regenerate.

2013-10-11  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* cp-demangle.c (d_name): Demangle local-source-names.
	* testsuite/demangle-expected: New test.

2013-09-10  Paolo Carlini  <paolo.carlini@oracle.com>

	PR bootstrap/58386
	Revert:

	2013-09-10  Gary Benson  <gbenson@redhat.com>

	* cp-demangle.c: Include hashtab.h.
	(struct d_print_info): New field saved_scopes.
	(d_print_init): Initialize the above.
	(d_print_free): New function.
	(cplus_demangle_print_callback): Call the above.
	(struct d_saved_scope): New structure.
	(d_store_scope): New function.
	(d_free_scope) Likewise.
	(d_restore_scope) Likewise.
	(d_hash_saved_scope) Likewise.
	(d_equal_saved_scope) Likewise.
	(d_print_comp): New variable saved_scope.
	[DEMANGLE_COMPONENT_REFERENCE,
	DEMANGLE_COMPONENT_RVALUE_REFERENCE]: Capture scope the first
	time the component is traversed, and use the captured scope for
	subsequent traversals.
	* testsuite/demangle-expected: Add regression test.

2013-09-10  Gary Benson  <gbenson@redhat.com>

	* cp-demangle.c: Include hashtab.h.
	(struct d_print_info): New field saved_scopes.
	(d_print_init): Initialize the above.
	(d_print_free): New function.
	(cplus_demangle_print_callback): Call the above.
	(struct d_saved_scope): New structure.
	(d_store_scope): New function.
	(d_free_scope) Likewise.
	(d_restore_scope) Likewise.
	(d_hash_saved_scope) Likewise.
	(d_equal_saved_scope) Likewise.
	(d_print_comp): New variable saved_scope.
	[DEMANGLE_COMPONENT_REFERENCE,
	DEMANGLE_COMPONENT_RVALUE_REFERENCE]: Capture scope the first
	time the component is traversed, and use the captured scope for
	subsequent traversals.
	* testsuite/demangle-expected: Add regression test.

2013-08-20  Alan Modra  <amodra@gmail.com>

	* floatformat.c (floatformat_ibm_long_double): Rename to..
	(floatformat_ibm_long_double_big): ..this.
	(floatformat_ibm_long_double_little): New.

2013-07-09  Tristan Gingold  <gingold@adacore.com>

	* makefile.vms (OBJS): Add dwarfnames.obj

2013-05-31  Matt Burgess <matthew@linuxfromscratch.org>

	PR other/56780
	* configure.ac: Move test for --enable-install-libiberty
	outside of the 'with_target_subdir' test so that it actually gets
	run.  Add output messages to show the test result.
	* configure: Regenerate.
	* Makefile.in (install_to_libdir): Place the
	installation of the libiberty library in the same guard as that
	used for the headers to prevent it being installed unless
	requested via --enable-install-libiberty.

2013-05-06  David Edelsohn  <dje.gcc@gmail.com>
	    Peter Bergner  <bergner@vnet.ibm.com>
	    Segher Boessenkool  <segher@kernel.crashing.org>
	    Jakub Jelinek  <jakub@redhat.com>

	* hashtab.c (hash_pointer): Remove conditional and avoid
	unexecuted shift equal to wordsize.

2013-04-22  Andi Kleen  <ak@linux.intel.com>

	* hashtab.c (hash_pointer): Move to end of file and reimplement.

2013-04-03  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (cplus_demangle_type): Fix function quals.
	(d_pointer_to_member_type): Simplify.

	Demangle C++11 ref-qualifier.
	* cp-demangle.c (d_ref_qualifier): New.
	(d_nested_name, d_function_type): Use it.
	(d_parmlist): Don't get confused by a ref-qualifier.
	(cplus_demangle_type): Reorder ref-qualifier.
	(d_pointer_to_member_type): Likewise.
	(d_dump): Handle DEMANGLE_COMPONENT_REFERENCE_THIS and
	DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS.
	(d_make_comp, has_return_type, d_encoding): Likewise.
	(d_print_comp, d_print_mod_list, d_print_mod): Likewise.
	(d_print_function_type, is_ctor_or_dtor): Likewise.

2013-03-27  Kai Tietz  <ktietz@redhat.com>

	* configure: Regenerated.

2013-03-06  Tobias Burnus  <burnus@net-b.de>

	* libiberty.texi: Update comment, remove lowersections.
	* obstacks.texi: Regenerate.

2013-03-05  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/56526
	* simple-object-mach-o.c (simple_object_mach_o_segment): Initialize
	wrapper_sect_offset to avoid a warning.

2013-03-01  Andreas Schwab  <schwab@linux-m68k.org>

	* obstacks.texi (Obstacks): Trim @node to only contain the
	node name.
	* libiberty.texi (Obstacks): Lower section.

2013-02-14  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_DEFAULT_ARG.
	(d_print_comp): Likewise.

2013-02-09  Jakub Jelinek  <jakub@redhat.com>

	PR other/56245
	* regex.c (PTR_INT_TYPE): Define.
	(EXTEND_BUFFER): Change incr type from int to PTR_INT_TYPE.

2013-01-31  Kai Tietz  <ktietz@redhat.com>

	PR other/54620
	* sha1.c (sha1_process_block):  Handle case that size_t is
	a wider-integer-scalar as a 32-bit unsigned integer.

	PR other/53413
	* md5.c (md5_process_block):  Handle case that size_t is
	a wider-integer-scalar a 32-bit unsigned integer.

2013-01-04  Ian Lance Taylor  <iant@google.com>

	PR other/54800
	* simple-object-mach-o.c (simple_object_mach_o_segment): Don't
	bother to zero out a buffer we are about to set anyhow.

2013-01-01  David Edelsohn  <dje.gcc@gmail.com>

	* simple-object-xcoff.c: New file.
	* Makefile.in: Add it to build machinery.
	* simple-object-common.h (simple_object_xcoff_functions): Declare.
	* simple-object.c (format_functions): Add
	simple_object_xcoff_functions.

2012-11-10  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_unqualified_name): Handle abi tags here.
	(d_name): Not here.

2012-11-09  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_TAGGED_NAME.
	(d_make_comp, d_find_pack, d_print_comp): Likewise.
	(d_abi_tags): New.
	(d_name): Call it.

2012-10-08  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_special_name, d_dump): Handle TH and TW.
	(d_make_comp, d_print_comp): Likewise.

2012-09-18  Ian Lance Taylor  <iant@google.com>

	* strnlen.c: New file.
	* configure.ac: Check for strnlen, add it to AC_LIBOBJ if it's not
	present.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add strnlen.c.
	(CONFIGURED_OFILES): Add ./strnlen.$(objext).
	* configure, config.in, functions.texi: Rebuild.

	* maint-tool: Accept .def files in the include directory.

2012-09-18  Florian Weimer  <fweimer@redhat.com>

	PR other/54411
	* objalloc.c (_objalloc_alloc): Add overflow check covering
	alignment and CHUNK_HEADER_SIZE addition.

2011-08-28  H.J. Lu  <hongjiu.lu@intel.com>

	* argv.c (dupargv): Replace malloc with xmalloc.  Don't check
	xmalloc return.
	(buildargv): Likewise.  Also replace strdup with xstrdup.
	(expandargv): Don't check dupargv return.

2011-08-28  H.J. Lu  <hongjiu.lu@intel.com>

	PR binutils/14526
	* argv.c (buildargv): Replace alloca with xmalloc/free.

2012-08-17  Andreas Schwab  <schwab@linux-m68k.org>

	* floatformat.c (floatformat_to_double): Correctly handle numbers
	between 1 and 2.  Simplify handling of denormal number.
	(main): Test with 1.1.

2012-07-31  Mike Frysinger  <vapier@gentoo.org>

	* md5.c (md5_finish_ctx): Declare swap_bytes.  Assign SWAP() output
	to swap_bytes, and then call memcpy to move it to ctx->buffer.

2012-07-26  Kazu Hirata  <kazu@codesourcery.com>
	    Sandra Loosemore  <sandra@codesourcery.com>

	* pex-win32.c (pex_win32_exec_child): Only close original file
	descriptors if child is launched successfully.

2012-07-18  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (cplus_demangle_operators): Add *_cast.
	(op_is_new_cast): New.
	(d_expression, d_print_comp): Check it.

2012-07-13  Doug Evans  <dje@google.com>

	* filename_cmp.c (filename_hash, filename_eq): New functions.

2012-06-29  Andreas Schwab  <schwab@linux-m68k.org>

	* copying-lib.texi (Library Copying): Don't use @heading inside
	@enumerate.

2012-05-22  Tom Tromey  <tromey@redhat.com>

	http://sourceware.org/bugzilla/show_bug.cgi?id=14065
	* testsuite/demangle-expected: Add regression test.
	* cp-demangle.c (d_find_pack): Return NULL for
	DEMANGLE_COMPONENT_UNNAMED_TYPE.

2012-04-27  Tom Tromey  <tromey@redhat.com>

	* dwarfnames.c: New file.
	* Makefile.in (CFILES): Add dwarfnames.
	(REQUIRED_OFILES): Add dwarfnames.
	(./dwarfnames.$(objext)): New target.

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

	* pex-unix.c (to_ptr32): Fix style.

2012-04-02  Tristan Gingold  <gingold@adacore.com>

	* stack-limit.c: Includes ansidecl.h.
	(stack_limit_increase): Add ATTRIBUTE_UNUSED

2012-03-20  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (cplus_demangle_type): Handle 'auto'.

2012-03-07  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (cplus_demangle_operators): Add li.
	(d_unqualified_name): Handle it specially.

2012-01-26  Jakub Jelinek  <jakub@redhat.com>

	* make-relative-prefix.c (make_relative_prefix_1): Avoid warning
	about using preprocessor directives inside of macro arguments.

2012-01-22  Douglas B Rupp  <rupp@gnat.com>

	* configure: Regenerate.

2012-01-10  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_print_comp) [DEMANGLE_COMPONENT_OPERATOR]:
	Omit a trailing space in the operator name.

2012-01-06  Jason Merrill  <jason@redhat.com>

	PR c++/6057
	PR c++/48051
	PR c++/50855
	PR c++/51322
	* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_NULLARY and
	DEMANGLE_COMPONENT_INITIALIZER_LIST.
	(d_make_comp): Likewise.  Allow null right arg for
	DEMANGLE_COMPONENT_TRINARY_ARG2.
	(cplus_demangle_operators): Adjust new/delete; add .*, :: and throw.
	(d_template_args, d_template_arg): Handle 'J' for argument packs.
	(d_exprlist): Add terminator parm.
	(d_expression, d_print_comp): Handle initializer lists, nullary
	expressions, prefix/suffix operators, and new.
	(d_print_subexpr): Avoid parens around DEMANGLE_COMPONENT_QUAL_NAME
	and DEMANGLE_COMPONENT_INITIALIZER_LIST.
	* testsuite/demangle-expected: Add tests.

	* cp-demangle.c (cplus_demangle_type): decltype, pack expansion
	and vector are substitutable.
	(cplus_demangle_operators): Sort.

2012-01-04  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* configure: Regenerate.

2012-01-02  Jakub Jelinek  <jakub@redhat.com>

	* make-relative-prefix.c (make_relative_prefix_1): Avoid
	stack overflow if PATH contains just a single entry and
	HOST_EXECUTABLE_SUFFIX needs to be used.

	PR driver/48306
	* make-relative-prefix.c: Include sys/stat.h.
	(make_relative_prefix_1): If access succeeds, check also stat
	if nstore is a regular file.

2011-12-20  Andreas Schwab  <schwab@linux-m68k.org>

	* configure: Regenerate.

2011-12-20  Tristan Gingold  <gingold@adacore.com>

	* aclocal.m4: Assume strncmp works in cross case.
	* configure: Regenerate

2011-12-19  Andreas Schwab  <schwab@linux-m68k.org>

	* configure: Regenerate.

2011-11-07  Richard Henderson  <rth@redhat.com>

	Merged from transactional-memory.

	* cp-demangle.c (cplus_demangle_fill_ctor): Accept
	gnu_v3_object_ctor_group.
	(cplus_demangle_fill_dtor): Accept gnu_v3_object_dtor_group.
	(d_ctor_dtor_name): Recognize gnu_v3_object_ctor_group
	and gnu_v3_object_dtor_group.
	(d_dump): Handle DEMANGLE_COMPONENT_TRANSACTION_CLONE
	and DEMANGLE_COMPONENT_NONTRANSACTION_CLONE.
	(d_make_comp, d_print_comp): Likewise.
	(d_special_name): Generate them.

2011-11-04  Jason Merrill  <jason@redhat.com>

	PR c++/48370
	* cp-demangle.c (d_special_name, d_print_comp): Handle a
	discriminator number on DEMANGLE_COMPONENT_REFTEMP.

2011-11-02  Doug Evans  <dje@google.com>

	* Makefile.in (CFILES): Add timeval-utils.c.
	(REQUIRED_OFILES): Add timeval-utils.$(objext).
	(INSTALLED_HEADERS): Add timeval-utils.h.
	(timeval-utils.$(objext)): Add rule.

2011-10-28  Ian Lance Taylor  <iant@google.com>

	* setproctitle.c (setproctitle): Use "GNU/Linux" in comment.

2011-10-26  Iain Sandoe  <iains@gcc.gnu.org>

	PR target/48108
	* simple-object-mach-o.c  (GNU_WRAPPER_SECTS, GNU_WRAPPER_INDEX,
	GNU_WRAPPER_NAMES): New macros.
	(simple_object_mach_o_segment): Handle wrapper scheme.
	(simple_object_mach_o_write_section_header): Allow the segment name
	to be supplied.
	(simple_object_mach_o_write_segment): Handle wrapper scheme.  Ensure
	that the top-level segment name in the load command is empty.
	(simple_object_mach_o_write_to_file): Determine the number of
	sections during segment output, use that in writing the header.

2011-10-10  Ian Lance Taylor  <iant@google.com>

	PR c++/48665
	* cp-demangle.c (d_cv_qualifiers): If qualifiers are applied to a
	function type, change them to apply to the "this" parameter.
	* testsuite/demangle-expected: Add test case.

2011-09-28  Doug Evans  <dje@google.com>

	* timeval-utils.c: New file.

	* argv.c (countargv): New function.

2011-09-23  Cary Coutant  <ccoutant@google.com>

	PR 40831
	* cp-demangle.c (d_make_comp): Add new component type.
	(cplus_demangle_mangled_name): Check for clone suffixes.
	(d_parmlist): Don't error out if we see '.'.
	(d_clone_suffix): New function.
	(d_print_comp): Print info for clone suffixes.
	* testsuite/demangle-expected: Add new testcases.

2011-09-23  Ian Lance Taylor  <iant@google.com>
	    Pierre Vittet  <piervit@pvittet.com>

	* md5.c (md5_process_bytes): Correct handling of unaligned
	buffer.

2011-08-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* aclocal.m4: Include ../config/picflag.m4.
	* configure.ac (GCC_PICFLAG): Call it.
	(enable_shared): Clear PICFLAG unless shared.
	* configure: Regenerate.

2011-08-12  Steve Ellcey  <sje@cup.hp.com>

	* md5.c (md5_read_ctx): Handle mis-aligned resbuf pointer.

2011-08-06  Uros Bizjak  <ubizjak@gmail.com>

	* testsuite/test-expandargv.c (writeout_test): Check result of fwrite.

2011-08-01  Jason Merrill  <jason@redhat.com>

	PR c++/49932
	* cp-demangle.c (d_prefix): Handle decltype.
	* testsuite/demangle-expected: Test it.

2011-07-26  H.J. Lu  <hongjiu.lu@intel.com>

	* testsuite/demangle-expected: Remove an extra line.

2011-07-26  Ian Lance Taylor  <iant@google.com>

	* cp-demangle.c (d_print_init): Initialize pack_index field.
	(d_print_comp): Check for NULL template argument.
	* testsuite/demangle-expected: Add test case.

2011-07-22  Gerald Pfeifer  <gerald@pfeifer.com>

	PR target/49817
	* stack-limit.c: Include <stdint.h>.

2011-07-22  Jakub Jelinek  <jakub@redhat.com>

	PR c++/49756
	* stack-limit.c: New file.
	* Makefile.in: Regenerate deps.
	(CFILES): Add stack-limit.c.
	(REQUIRED_OFILES): Add ./stack-limit.$(objext).
	* configure.ac (checkfuncs): Add getrlimit and setrlimit.
	(AC_CHECK_FUNCS): Likewise.
	* configure: Regenerated.
	* config.in: Regenerated.

2011-07-04  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_expression): Handle 'this'.
	(d_print_comp) [DEMANGLE_COMPONENT_FUNCTION_PARAM]: Likewise.

2011-07-01  Joel Brobecker  <brobecker@adacore.com>

	* filename_cmp.c (filename_cmp, filename_ncmp): Add handling of
	HAVE_CASE_INSENSITIVE_FILE_SYSTEM.

2011-07-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	PR debug/49408
	* cp-demangle.c (d_print_comp): Suppress argument list for function
	references by the '&' unary operator.  Keep also already processed
	variant without the argument list.  Suppress argument list types for
	function call used in an expression.
	* testsuite/demangle-expected: Fix excessive argument list types in
	`test for typed function in decltype'.  New testcase for no argument
	list types printed.  3 new testcases for function references by the
	'&' unary operator..

2011-06-20  Jason Merrill  <jason@redhat.com>

	PR c++/37089
	* cp-demangle.c (d_print_comp): Handle reference smashing.
	* testsuite/demangle-expected: Test it.

2011-06-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* cp-demangle.c (d_print_comp) <DEMANGLE_COMPONENT_FUNCTION_TYPE>:
	Suppress d_print_mod for DMGL_RET_POSTFIX.
	* testsuite/demangle-expected: New testcases for --ret-postfix.

2011-06-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* cp-demangle.c (d_print_comp) <DEMANGLE_COMPONENT_FUNCTION_TYPE>: Do
	not pass DMGL_RET_POSTFIX or DMGL_RET_DROP.  Support DMGL_RET_DROP.
	* testsuite/demangle-expected: New testcases for --ret-drop.
	* testsuite/test-demangle.c: Document --ret-drop in a comment.
	(main): New variable ret_drop, fill it, call cplus_demangle with it.

2011-06-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* cp-demangle.c (struct d_print_info): Remove field options.
	(d_print_init): Remove parameter options.
	(cplus_demangle_print_callback): Update all the callers.
	(d_print_comp, d_print_mod_list, d_print_mod, d_print_function_type)
	(d_print_array_type, d_print_expr_op, d_print_cast, d_print_subexpr):
	Add parameter options, update all the callers.

2011-04-20  Jim Meyering  <meyering@redhat.com>

	* cp-demint.c (cplus_demangle_v3_components): Remove useless
	if-before-free.
	* cplus-dem.c (squangle_mop_up): Likewise.
	(delete_non_B_K_work_stuff): Likewise.
	* pex-common.c (pex_free): Likewise.
	* pex-msdos.c (pex_msdos_cleanup): Likewise.
	* pex-win32.c (mingw_rootify, msys_rootify): Likewise.
	(win32_spawn): Likewise.
	* regex.c (FREE_VAR, weak_alias): Likewise.
	* spaces.c (spaces): Likewise.

2011-04-10  Jim Meyering  <meyering@redhat.com>

	Avoid memory overrun in a test leading to potential double-free.
	* testsuite/test-expandargv.c (writeout_test): Fix off-by-one error:
	i.e., do copy the trailing NUL byte.

2011-03-31  Tristan Gingold  <gingold@adacore.com>

	* makefile.vms (OBJS): Add filename_cmp.obj

2011-02-28  Kai Tietz  <kai.tietz@onevision.com>

	* filename_cmp.c (filename_ncmp): New function.
	* functions.texi: Regenerated.

2011-02-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* splay-tree.c: Escape wrapping newlines in texinfo markup
	with '@', to fix function declaration output rendering.
	* gather-docs: Relax and improve macro name matching to actually
	match all current names and to allow input line wrapping.
	* bsearch.c, concat.c, crc32.c, fnmatch.txh, fopen_unlocked.c,
	hashtab.c, insque.c, make-relative-prefix.c, memchr.c, memcmp.c,
	memcpy.c, memmem.c, memmove.c, mempcpy.c, memset.c,
	pexecute.txh, random.c, setenv.c, setproctitle.c,
	simple-object.txh, snprintf.c, stpncpy.c, strncmp.c, strtod.c,
	strtol.c, vasprintf.c, vprintf.c, vsnprintf.c, xmemdup.c:
	Wrap long texinfo input lines.
	* functions.texi: Regenerate.

2011-01-18  Mike Frysinger  <vapier@gentoo.org>

	* .gitignore: New file.

2010-12-08  Doug Evans  <dje@google.com>

	* splay-tree.c (splay_tree_foreach_helper): Remove arg `sp',
	all callers updated.  Rewrite to be non-recursive.

2010-11-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* setproctitle.c [HAVE_SYS_PRCTL_H]: Include <sys/types.h>.

2010-11-20  Anthony Green  <green@moxielogic.com>

	* configure.ac: Turn PR_SET_NAME link test into a test for
	sys/prctl.h.
	* configure, config.in: Rebuilt.
	* setproctitle.c: Test for HAVE_SYS_PRCTL_H.
	(setproctitle) Test for PR_SET_NAME definition.

2010-11-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	PR other/46202
	* Makefile.in (install-strip): New phony target.
	(install): Also mark as phony.

2010-11-16  Ian Lance Taylor  <iant@google.com>

	* simple-object.c (simple_object_attributes_merge): Rename from
	simple_object_attributes_compare.  Call merge field.
	* simple-object-common.h (struct simple_object_functions): Rename
	attributes_compare field to attribute_merge.
	* simple-object-elf.c (EM_SPARC): Define.
	(EM_SPARC32PLUS): Define.
	(simple_object_elf_attributes_merge): Renamed from
	simple_object_elf_attributes_compare.  Permit EM_SPARC and
	EM_SPARC32PLUS objects to be merged.
	(simple_object_elf_functions): Update function name.
	* simple-object-coff.c (simple_object_coff_attributes_merge):
	Rename from simple_object_coff_attributes_compare.
	(simple_object_coff_functions): Update function name.
	* simple-object-mach-o.c (simple_object_mach_o_attributes_merge):
	Renamed from simple_object_mach_o_attributes_compare.
	(simple_object_mach_o_functions): Update function name.

2010-11-16  H.J. Lu  <hongjiu.lu@intel.com>

	PR other/42670
	PR binutils/11137
	* cp-demangle.c (d_make_demangle_mangled_name): New.
	(d_demangle_callback): Use it on DCT_GLOBAL_XTORS.

	* testsuite/demangle-expected: Updated.

2010-11-14  Kai Tietz  <kai.tietz@onevision.com>

	* simple-object-coff.c (simple_object_coff_read_strtab): Fix reading
	offset.

2010-11-12  Ian Lance Taylor  <iant@google.com>

	PR other/46332
	* cp-demangle.c (d_print_function_type): Don't print parentheses
	if there are no modifiers to print.
	* testsuite/demangle-expected: Tweak one test case, add another.

2010-11-04  Richard Henderson  <rth@redhat.com>

	* configure.ac (AC_CHECK_HEADERS): Add process.h.
	(checkfuncs): Add dup3, spawnve, spawnvpe; sort the list.
	(AC_CHECK_FUNCS): Add dup3, spawnve, spawnvpe.
	* configure, config.in: Rebuild.
	* pex-unix.c [HAVE_SPAWNVE] (pex_unix_exec_child): New function.
	[HAVE_SPAWNVE] (save_and_install_fd, restore_fd): New functions.

2010-11-02  Ian Lance Taylor  <iant@google.com>
	    Dave Korn  <dave.korn.cygwin@gmail.com>
	    Iain Sandoe  <iains@gcc.gnu.org>

	* simple-object.c: New file.
	* simple-object-common.h: New file.
	* simple-object-elf.c: New file.
	* simple-object-mach-o.c: New file.
	* simple-object-coff.c: New file.
	* simple-object.txh: New file.
	* configure.ac: Add AC_TYPE_SSIZE_T.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add simple-object.c, simple-object-coff,
	simple-object-elf.c, and simple-object-mach-o.c.
	(REQUIRED_OFILES): Add corresponding object files.
	* configure: Rebuild.
	* config.in: Rebuild.
	* functions.texi: Rebuild.

2010-10-29  Ian Lance Taylor  <iant@google.com>

	* setproctitle.c: Add space after function name in @deftypefn
	comment.
	* functions.texi: Rebuild.

2010-10-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* aclocal.m4 (AC_LANG_FUNC_LINK_TRY(C)): Delete.
	* configure: Regenerate.

2010-10-07  Andi Kleen  <ak@linux.intel.com>

	* configure: Regenerate.
	* configure.ac: Turn PR_SET_NAME check into link check.

2010-10-06  Andi Kleen  <ak@linux.intel.com>

	* Makefile.in (CFILES): Add setproctitle.
	(CONFIGURED_OFILES): Add setproctitle.
	(setproctitle): Add rule.
	* config.in: Regenerate.
	* configure: Regenerate.
	* configure.ac: Add checks for prctl PR_SET_NAME and setproctitle.
	* setproctitle.c: Add file.
	* functions.texi: Regenerate.

2010-09-22 Tristan Gingold  <gingold@adacore.com>

	* cplus-dem.c (ada_demangle): Add comments.
	Handle stream and controlled type operations.
	Decoding of some uppercase letters moved before separators.
	* testsuite/demangle-expected: Add tests.

2010-09-10  James Lyon  <jameslyon0@googlemail.com>

	http://sourceware.org/bugzilla/show_bug.cgi?id=11572
	* cp-demangle.c (d_find_pack): Add case for
	DEMANGLE_COMPONENT_LAMBDA.
	* testsuite/demangle-expected: Add regression test.

2010-09-08  Tristan Gingold  <gingold@adacore.com>

	PR 44001
	* maint-tool (missing): Fix pattern for object file.
	(deps): Use $(objext) for object extension.
	* Makefile.in (objext): New variable.
	Replace all occurences of .o with .$(objext)
	Regenerate with maint-deps
	* configure.ac (pexecute): Set to the basename.
	* configure: Regenerate.

2010-08-20  Maciej W. Rozycki  <macro@codesourcery.com>

	* pex-common.c (pex_read_err): Set stderr_pipe to -1 if a
	corresponding stream has been opened.
	(pex_free): Close pipe file descriptors corresponding to child's
	stdout and stderr before waiting.

2010-08-13  Nick Clifton  <nickc@redhat.com>

	* argv.c (expandargv): Limit the number of times that response
	files are opened in order to prevent infinite recursion.

2010-07-21  Pascal Obry  <obry@adacore.com>

	* make-temp-file.c (choose_tmpdir): Append a dot to P_tmpdir if needed.

2010-07-06  Ken Werner  <ken.werner@de.ibm.com>

	* floatformat.c (floatformat_ieee_half_big): New variable.
	(floatformat_ieee_half_little): Likewise.

2010-06-14  Gerald Pfeifer  <gerald@pfeifer.com>

	* libiberty.texi: Remove reference to GCC 3 and 2001 (thrice).
	Update copyright years.
	Move to GFDL 1.3.

2010-06-10  Jakub Jelinek  <jakub@redhat.com>

	PR other/43838
	* cp-demangle.c (struct d_print_info): Add flush_count field.
	(d_print_init): Initialize it to 0.
	(d_print_flush): Increment it.
	(d_print_comp): If needed flush before appending ", ".  Only
	decrement dpi->len if no flushes happened during the recursive
	call.
	* testsuite/demangle-expected: Add a test for this.

2010-06-08  Laurynas Biveinis  <laurynas.biveinis@gmail.com>

	* splay-tree.c: Update copyright years.
	(splay_tree_new_typed_alloc): New.
	(splay_tree_new_with_allocator): Use it.

	* hashtab.c: Update copyright years.
	(htab_create_typed_alloc): New.
	(htab_create_alloc): Use it.

	* functions.texi: Regenerate.

2010-06-03  Joern Rennecke <joern.rennecke@embecosm.com>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	PR bootstrap/42798
	* configure.ac: Check for declaration of 'basename(char *)'.
	* configure: Regenerate.

2010-05-26  Kai Tietz  <kai.tietz@onevision.com>

	* testsuite/demangle-expected: Add tests for __int128
	and unsigned __int128 types.

2010-05-06  Magnus Fromreide  <magfr@lysator.liu.se>
	    Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (cplus_demangle_builtin_types): Add nullptr.
	(cplus_demangle_type): Handle nullptr.
	* testsuite/demangle-expected: Test it.

2010-04-23  Pedro Alves  <pedro@codesourcery.com>

	* lbasename.c (lbasename): Split into ...
	(unix_lbasename, dos_basename): ... these.
	(lbasename): ... and reimplement on top of them.
	* Makefile.in (lbasename.o): Add dependency on
	$(INCDIR)/filenames.h.

2010-04-07  Jakub Jelinek  <jakub@redhat.com>

	* regex.c (byte_re_match_2_internal): Avoid set but not used
	warning.

2010-03-22  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_print_mod): Use () rather than [] for vectors.

2010-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.in (all): Do not use exec.

2010-02-04  Tom Tromey  <tromey@redhat.com>

	* testsuite/demangle-expected: Add missing --format=gnu-v3.

2010-02-03  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_expression): Handle dependent operator name.

	PR c++/12909
	* cp-demangle.c (d_number_component, d_vector_type): New.
	(cplus_demangle_type, d_print_comp, d_print_mod): Handle vectors.

2010-01-25  Ian Lance Taylor  <iant@google.com>

	* cp-demangle.c (cplus_demangle_type): Check for invalid type
	after "DF".
	* testsuite/demangle-expected: Add test.

2010-01-20  Jason Merrill  <jason@redhat.com>

	PR c++/42338
	* cp-demangle.c (d_print_comp): Fix array index printing.

2010-01-11  Tristan Gingold  <gingold@adacore.com>

	* cplus-dem.c (ada_demangle): Remove prototype.
	(grow_vect): Removed.
	(ada_demangle): Rewritten.
	(cplus_demangle): Fix indentation.
	* testsuite/demangle-expected: Add tests for Ada.

2010-01-09  Ian Lance Taylor  <iant@google.com>

	PR other/42230
	* cp-demangle.c (d_demangle): Return dgs.alc on success.

2010-01-04  Nobuhiro Iwamatsu <iwamatsu@nigauri.org>

	PR target/42316
	* configure.ac (PICFLAG): Use -fPIC on SH hosts.
	* configure: Regenerate.

2009-12-07  Doug Evans  <dje@google.com>

	* pex-unix.c (pex_unix_exec_child): Save/restore environ.

2009-11-26  Ben Elliston  <bje@au.ibm.com>

	* configure.ac (AC_CHECK_FUNCS): Sort into alphabetic order.
	* configure: Regenerate.

2009-11-25  Ben Elliston  <bje@au.ibm.com>

	* functions.texi: Rebuild.

2009-11-25  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
	    Ben Elliston  <bje@au.ibm.com>

	* README: Mention changes to Makefile.in and functions.texi.
	* gather-docs: Mention 'make stamp-functions' in the header.

2009-11-23  Ben Elliston  <bje@au.ibm.com>
	    Ian Lance Taylor  <iant@google.com>

	* pex-unix.c (pex_child_error): Improve warning avoidance by
	checking the results of write(3) and exiting with -2 if any write
	returns a negative value.

2009-11-22  Steve Ward  <planet36@gmail.com>

	* dyn-string.c (dyn_string_append_char): Fix typo in comment.

2009-11-20  Ben Elliston  <bje@au.ibm.com>

	* pex-unix.c (pex_child_error): Define writeerr macro to avoid
	unused result warnings from write(3) calls.  Undefine writeerr
	after all uses.

2009-10-08  Daniel Gutson  <dgutson@codesourcery.com>
	Daniel Jacobowitz  <dan@codesourcery.com>
	Pedro Alves  <pedro@codesourcery.com>

	* argv.c (consume_whitespace): New function.
	(only_whitespace): New function.
	(buildargv): Always use ISSPACE by calling consume_whitespace.
	(expandargv): Skip empty files.  Do not stop at the first empty
	argument (calling only_whitespace)..
	* testsuite/test-expandargv.c: (test_data): Test empty lines
	and empty arguments.
	(run_tests): Fix false positives due to shorter arguments.

2009-09-30  Martin Thuresson  <martint@google.com>

	* regex.c (byte_re_match_2_internal): Split declaration and
	assignment to avoid -Wc++-compat warning due to goto.

2009-09-29  Jason Merrill  <jason@redhat.com>

	* Makefile.in: Enable demangle target.
	* cp-demangle.c (d_lambda, d_unnamed_type, d_make_default_arg): New.
	(d_name, d_prefix, d_unqualified_name, d_local_name): Handle lambdas.
	(d_parmlist): Factor out from d_bare_function_type.
	(d_compact_number): Factor out from d_template_param and d_expression.
	(d_append_num): Factor out from d_print_comp.
	(d_print_comp, d_print_mod_list): Handle lambdas.
	* testsuite/demangle-expected: Add lambda tests.

2009-09-23  Matthew Gingell  <gingell@adacore.com>

	* cplus-dem.c (ada_demangle): Ensure demangled is freed.

2009-09-22  Ozkan Sezer  <sezeroz@gmail.com>

	* choose-temp.c: Include unistd.h for mingw targets.

2009-09-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* hashtab.c [HAVE_INTTYPES_H]: Include <inttypes.h>.

2009-09-15  Tristan Gingold  <gingold@adacore.com>

	* config.h-vms (intptr_t): Define to compile hashtab.c

2009-09-04  Ozkan Sezer  <sezeroz@gmail.com>

	PR target/39065
	* configure.ac: Replace AC_CHECK_TYPE() for intptr_t and uintptr_t
	with AC_TYPE_INTPTR_T and AC_TYPE_UINTPTR_T.
	* config.in: Regenerated.
	* configure: Regenerated.

2009-09-03  Ozkan Sezer  <sezeroz@gmail.com>

	PR target/39065
	* configure.ac: Also check for intptr_t.
	* config.h.in: Regenerated.
	* configure: Regenerated.
	* hashtab.c (hash_pointer): Cast the pointer argument to intptr_t
	instead of of long.

2009-09-02  Tristan Gingold  <gingold@adacore.com>

	* vmsbuild.com: Removed as unused and superceeded by makefile.vms.
	* makefile.vms: Ported to Itanium VMS.  Remove useless targets and
	dependencies.  Remove unused FORMAT variable.
	* configure.com: New file to create build.com DCL script for
	Itanium VMS or Alpha VMS.

2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure.ac (AC_PREREQ): Bump to 2.64.

2009-08-23  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/10536
	* Makefile.in (install-html-recursive): Removed.

2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* config.in: Regenerate.
	* configure: Regenerate.

2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.in (AUTOCONF, configure_deps): New variables.
	($(srcdir)/configure): New rule, active only in maintainer mode.

2009-07-29  Douglas B Rupp  <rupp@gnat.com>

	* make-temp-file.c (choose_tmpdir): Try standard temp logical on VMS.

2009-07-27  Douglas B Rupp  <rupp@gnat.com>

	* pex-unix.c (vfork): Remove VMS specific definition (get from header
	file instead).
	(to_ptr32): New function.
	(pex_unix_exec_child): Use it.

2009-07-24  Ian Lance Taylor  <iant@google.com>

	PR bootstrap/40854
	* crc32.c (xcrc32): Rename from crc32.

2009-07-24  Ian Lance Taylor  <iant@google.com>

	* crc32.c: New file.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add crc32.c.
	(REQUIRED_OFILES): Add ./crc32.o.
	* functions.texi: Rebuild.

2009-07-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* cp-demangle.c (d_print_comp <DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS>)
	(d_print_comp <DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS): New.
	(d_make_comp <DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS>)
	(d_make_comp <DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS): New.
	(d_demangle_callback): The variable type is now declared as enum.
	Replace parser of _GLOBAL_ symbols by a d_make_comp call.

2009-06-21  Jakub Jelinek  <jakub@redhat.com>

	* hashtab.c (htab_traverse): Don't call htab_expand for
	nearly empty hashtabs with sizes 7, 13 or 31.

2009-06-16  Nick Clifton  <nickc@redhat.com>

	PR 10197
	* testsuite/test-demangle.c: Rename getline to get_line to avoid
	conflicts with system function of the same name.

2009-05-30  Eli Zaretskii  <eliz@gnu.org>

	* snprintf.c: Doc fix.

	* vsnprintf.c: Doc fix.

2009-05-29  Kai Tietz  <kai.tietz@onevision.com>

	* pex-win32.c (pex_win32_fdopenr): Set INHERIT to false.

2009-05-29  Michael Matz  <matz@suse.de>

	* fibheap.c (fibheap_replace_key_data): Make sure we don't early
	out when forcing the minimum.
	(fibheap_delete_node): Assert that we managed to force the minimum.

2009-05-25  Tristan Gingold  <gingold@adacore.com>

	* config.h-vms: Rewritten.  Define configure macros.
	Use DEC-C builtin alloca.

	* makefile.vms (OBJS): Update list.
	(OPT): New variable.
	(CFLAGS): Update compilation flags.
	(libiberty.olb): Do not depend on alloca-conf.h anymore.

2009-05-19  Ian Lance Taylor  <iant@google.com>
	    Ben Elliston  <bje@au.ibm.com>

	* cp-demangle.c (cplus_demangle_fill_ctor): Fix logic bug.
	(cplus_demangle_fill_dtor): Likewise.

2009-05-17  Julian Brown  <julian@codesourcery.com>

	* pex-win32.c (pex_win32_exec_child): Fix logic to avoid closing
	standard handles (stdin, stdout, stderr) in parent.

2009-04-29  Julian Brown  <julian@codesourcery.com>

	* pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT.
	(pex_win32_exec_child): Ensure each process has only one handle open
	on pipe endpoints. Close standard input after creating child for
	symmetry with standard output/standard error.

2009-04-25  Eli Zaretskii  <eliz@gnu.org>

	* Makefile.in (needed-list): Target removed (not used in GCC
	3.0 and later).  All references deleted.
	(mostlyclean): Remove references to needed.awk and needed2.awk.

2009-04-14  Eli Zaretskii  <eliz@gnu.org>

	* configure.ac  (setobjs, msdosdjgpp): Move a-priori setting of
	existing and required library functions to with_target_subdir
	section, so that the native build does detect them at configure
	time.
	* configure: Regenerated.

2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>

	PR target/39397
	* pex-common.h (struct pex_obj): Store pid values as pid_t,
	not as long (members *children and (*wait))
	* pex-common.c (pex_run_in_environment): Likewise.
	* pex-win32.c (pex_win32_wait): Return pid_t and properly check
	returned pid value.
	* pex-djgpp.c (pex_djgpp_wait): Return pid_t.
	* pex-msdos.c (pex_msdos_wait): Likewise.

2009-04-07  Arnaud Patard <apatard@mandriva.com>

	* configure.ac: Fix Linux/MIPS matching rule.
	* configure: Regenerate.

2009-03-27  Ian Lance Taylor  <iant@google.com>

	* memmem.c: New file, from gnulib.
	* configure.ac: Add memmem to list of functions provided if they
	are not available on the host.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add memmem.c.
	(CONFIGURED_OFILES): Add memmem.o.
	* configure, config.in, functions.texi: Rebuild.

2009-03-23  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_expression): Handle pack expansion.
	(d_find_pack): Handle DEMANGLE_COMPONENT_FUNCTION_PARAM.
	(d_print_subexpr): Don't wrap function parms in ().
	(d_print_comp) [DEMANGLE_COMPONENT_PACK_EXPANSION]: Handle
	not finding a pack.

2009-03-17  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_make_function_param): new fn.
	(cplus_demangle_mangled_name): Work around abi v2 bug.
	(d_expr_primary): Likewise.
	(cplus_demangle_operators): Add alignof ops.
	(d_expression): Handle function parameters and conversions
	with other than 1 operand.
	(d_print_comp): Handle function parameters.  Fix bug with
	function used in type of function.
	* testsuite/demangle-expected: Update tests.

2009-02-21  Mark Mitchell  <mark@codesourcery.com>

	* make-temp-file.c (<windows.h>): Include on Windows.
	(choose_tmpdir): On Windows, use GetTempPath.

2009-01-18  Dave Korn  <dave.korn.cygwin@gmail.com>

	* configure.ac (funcs, vars, checkfuncs):  Don't munge on Cygwin,
	as it no longer shares libiberty object files.
	* configure:  Regenerated.

2009-01-07  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_expression): Remove mangling for zero-op casts.

2009-01-06  Ben Elliston  <bje@au.ibm.com>

	* cp-demangle.c (cplus_demangle_type): Return NULL if the
	character following a 'D' cannot be recognised.

2008-12-18  Jason Merrill  <jason@redhat.com>

	PR c++/38561
	* cp-demangle.c (d_expression, d_print_comp): Revert
	cast changes.

2008-12-17  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_expression): Handle rvalue stubs too.
	[DEMANGLE_COMPONENT_CAST]: Update mangling.
	(d_print_comp): Avoid extra ", " with empty template argument packs.
	Remove handling for obsolete T() mangling.

2008-12-10  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (cplus_demangle_type): Support fixed-point types.
	(d_print_comp, d_dump): Likewise.

2008-10-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (CPPFLAGS): Define.
	(FLAGS_TO_PASS, COMPILE.c): Add CPPFLAGS.

2008-10-15  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/37137
	* Makefile.in (LIBCFLAGS): Remove.
	(FLAGS_TO_PASS): Don't mention it.
	(COMPILE.c, MULTIOSDIR): Replace it with CFLAGS.

2008-10-08  David Edelsohn  <edelsohn@gnu.org>

	* xstrdup.c: Include <sys/types.h> after "config.h"

2008-10-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* configure.ac: Call AC_SYS_LARGEFILE.
	* config.in: Regenerated.
	* configure: Likewise.

2008-10-06  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (struct d_print_info): Add pack_index.
	(d_dump): Add DEMANGLE_COMPONENT_PACK_EXPANSION.
	(d_make_comp): Likewise.  DEMANGLE_COMPONENT_ARGLIST and
	DEMANGLE_COMPONENT_TEMPLATE_ARGLIST can have two null args.
	(cplus_demangle_builtin_types): Add char16/32_t.
	(cplus_demangle_type): Recognize them.
	(d_template_args): Handle empty argument packs.
	(d_template_arg): Handle argument packs.
	(d_expression): Handle dependent name.
	(d_index_template_argument): New fn.
	(d_lookup_template_argument): New fn.
	(d_find_pack, d_pack_length): New fn.
	(d_print_subexpr): Split out...
	(d_print_comp): ...from here.  Use d_*_template_argument.
	Handle empty arg lists.  Support pack expansions.
	* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Increase to 32.

2008-09-09  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_DECLTYPE.
	(d_make_comp): Likewise.
	(cplus_demangle_type): Handle decltype and DFP types.
	(cplus_demangle_operators): Call operator takes 2 args.
	(cplus_demangle_builtin_types): Add DFP types.
	(d_exprlist): New fn.
	(d_expression): Handle parm placeholders, T() and calls.
	(d_print_comp): Handle decltype, T() and calls.
	* testsuite/demangle-expected: Test the above.

2008-08-07  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>

	* pex-win32.c (argv_to_argc): New function.
	(spawn_script): Duplicate argv before calling win32_spawn.

2008-07-31  Jakub Jelinek  <jakub@redhat.com>

	* mkstemps.c (mkstemps): Keep looping even for EISDIR.

2008-07-31  Denys Vlasenko  <dvlasenk@redhat.com>

	* mkstemps.c (mkstemps): If open failed with errno other than
	EEXIST, return immediately.
	* make-temp-file.c: Include errno.h.
	(make_temp_file): If mkstemps failed, print an error message
	before aborting.

2008-07-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* maint-tool (deps): Output config.h instead of stamp-h.
	* Makefile.in: Rebuild deps.
	(maintainer-clean-subdir): Depend on stamp-h rather than config.h.
	Reverts 2007-07-11 change.

2008-06-19  Eric Blake  <ebb9@byu.net>

	Adjust strsignal to POSIX 200x prototype.
	* strsignal.c (strsignal): Remove const.

2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure: Regenerate.

2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libiberty.texi: Expand TABs, drop indentation outside examples.
	* obstacks.texi: Likewise.

2008-04-21  Aurelien Jarno  <aurelien@aurel32.net>

	* configure.ac: use -fPIC on Linux/MIPS hosts.
	* configure: Regenerate.

2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>

	* testsuite/demangle-expected: Added tests for char16_t and char32_t.

2008-04-18  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/35457
	* aclocal.m4: Add override.m4.
	* configure: Regenerate.

2008-03-31  Ian Lance Taylor  <iant@google.com>

	* cp-demangle.c (d_substitution): Correct overflow check to avoid
	-fstrict-overflow optimizations.

2008-03-27  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac (frags): Don't set, use frag instead.
	(PICFLAG): Set here and substitute.
	* Makefile.in (PICFLAG): Substitute from autoconf.
	* configure: Regenerate.

2008-03-24  Ian Lance Taylor  <iant@google.com>

	* sha1.c: New file, from gnulib.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add sha1.c.
	(REQUIRED_OFILES): Add sha1.o.

2008-03-24  Doug Evans  <dje@google.com>

	* make-relative-prefix.c (make_relative_prefix_1): Handle NULL
	return from strdup.

2008-03-12  Seongbae Park <seongbae.park@gmail.com>

	* cplus-dem.c (malloc, realloc): Use void * instead of char *
	as return type.

2008-03-11  Nick Clifton  <nickc@redhat.com>

	* md5.c (md5_process_bytes): Do not assume that memcpy will
	provide a return value.

2008-02-19  Ben Elliston  <bje@au.ibm.com>

	PR other/12618
	* testsuite/Makefile.in (mostlyclean): Remove any core file.

2008-01-26  David Daney  <ddaney@avtrex.com>

	* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_JAVA_RESOURCE,
	DEMANGLE_COMPONENT_COMPOUND_NAME, and
	DEMANGLE_COMPONENT_CHARACTER cases.
	(d_make_comp): Handle DEMANGLE_COMPONENT_COMPOUND_NAME and
	DEMANGLE_COMPONENT_JAVA_RESOURCE cases.
	(d_make_character): New function.
	(d_java_resource): Same.
	(d_special_name): Handle "Gr" case.
	(d_print_comp): Handle DEMANGLE_COMPONENT_JAVA_RESOURCE,
	DEMANGLE_COMPONENT_COMPOUND_NAME, and
	DEMANGLE_COMPONENT_CHARACTER cases.
	* testsuite/demangle-expected: Add test for java resource name
	mangling.

2008-01-23  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* cplus-dem.c (demangle_function_name): Changed to return value
	indicating if a name was correctly demangled.
	(iterate_demangle_function): Use demangle_function_name return
	value.

2008-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR other/33768
	* splay-tree.c (rotate_left): Fix minor typo in comment.
	(rotate_right): Likewise.

2007-11-12  Joseph Myers  <joseph@codesourcery.com>

	* floatformat.c (floatformat_ibm_long_double_is_valid): Fix
	compiler warnings.
	(floatformat_ibm_long_double): Use
	floatformat_ibm_long_double_is_valid.

2007-11-07  Joseph Myers  <joseph@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* floatformat.c (mant_bits_set): New.
	(floatformat_to_double): Use it.  Note no special handling of
	split formats.
	(floatformat_from_double): Note no special handing of split
	formats.
	(floatformat_ibm_long_double_is_valid,
	floatformat_ibm_long_double): New.
	(floatformat_ieee_single_big, floatformat_ieee_single_little,
	floatformat_ieee_double_big, floatformat_ieee_double_little,
	floatformat_ieee_double_littlebyte_bigword, floatformat_vax_f,
	floatformat_vax_d, floatformat_vax_g, floatformat_i387_ext,
	floatformat_m68881_ext, floatformat_i960_ext,
	floatformat_m88110_ext, floatformat_m88110_harris_ext,
	floatformat_arm_ext_big, floatformat_arm_ext_littlebyte_bigword,
	floatformat_ia64_spill_big, floatformat_ia64_spill_little,
	floatformat_ia64_quad_big, floatformat_ia64_quad_little): Update
	for addition of split_half field.

2007-09-06  Tom Tromey  <tromey@redhat.com>

	* pexecute.txh (pex_free): Document process killing.

2007-08-31  Douglas Gregor  <doug.gregor@gmail.com>

	* cp-demangle.c (d_dump): Handle
	DEMANGLE_COMPONENT_RVALUE_REFERENCE.
	(d_make_comp): Ditto.
	(cplus_demangle_type): Ditto.
	(d_print_comp): Ditto.
	(d_print_mod): Ditto.
	(d_print_function_type): Ditto.

2007-08-24  Kai Tietz  <kai.tietz@onevision.com>

	* pex-common.h: (pex_funcs): Retyped wait and exec_child to pid_t.
	* pex-djgpp.c: Likewise.
	* pex-msdos.c: Likewise.
	* pex-unix.c: Likewise.
	* pex-win32.c: Likewise.

2007-08-17  Michael Snyder  <msnyder@access-company.com>

	* make-relative-prefix.c (make_relative_prefix_1): Resource leaks.

2007-08-03  Michael Snyder  <msnyder@access-company.com>

	* make-relative-prefix.c (make_relative_prefix_1): Fix resource
	leak.

2007-07-31  Michael Snyder  <msnyder@access-company.com>

	* cp-demangle.c (d_print_comp): Guard against null.

2007-07-25  Ben Elliston  <bje@au.ibm.com>

	* Makefile.in (CFILES): Remove ternary.c.
	(REQUIRED_OFILES): Remove ./ternary.o.
	(INSTALLED_HEADERS): Remove ternary.h.
	(ternary.o): Remove.
	* ternary.c: Remove.

2007-07-23  DJ Delorie  <dj@redhat.com>

	* argv.c (writeargv): Fix typo in inline documentation.
	* functions.texi: Regenerate.

2007-07-17  DJ Delorie  <dj@redhat.com>

	* configure.ac (target_header_dir, msdosdjgpp): Remove duplicate
	gettimeofday entry.
	* configure: Likewise.

2007-07-11  Alexandre Oliva  <aoliva@redhat.com>

	* maint-tool (deps): Output stamp-h instead of config.h.
	* Makefile.in: Rebuild deps.
	(maintainer-clean-subdir): Depend on stamp-h rather than config.h.

2007-07-02  Simon Baldwin <simonb@google.com>

	* argv.c (writeargv): Removed declaration of unused variable.

2007-06-14  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac: Use ACX_PROG_CC_ALMOST_PEDANTIC too.
	* configure: Regenerate.

2007-06-14  Paolo Bonzini  <bonzini@gnu.org>

	* aclocal.m4: Include config/warnings.m4.
	* configure.ac: Use ACX_PROG_CC_WARNING_OPTS.
	* configure: Regenerate.

2007-06-07  Geoffrey Keating  <geoffk@apple.com>

	* configure.ac: Non-default multilibs can be cross compilations.
	* configure: Regenerate

2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>

	* argv.c (writeargv): New function.

2007-05-05  Geoffrey Keating  <geoffk@apple.com>

	* cp-demangle.c (d_name): Detect local-source-name.
	(d_prefix): Likewise.
	(d_unqualified_name): Implement local-source-name.

2007-05-03  Joel Brobecker  <brobecker@adacore.com>

	* filename_cmp.c: Replace include of ctype.h by include of
	safe-ctype.h.
	(filename_cmp): Use TOLOWER instead of tolower for conversions
	that are locale-independent.
	* Makefile.in (filename_cmp.o): Add dependency on safe-ctype.h.

2007-04-11  Thomas Neumann  <tneumann@users.sourceforge.net>

	* argv.c: Use ANSI C declarations.
	* make-relative-prefix.c: Likewise.

2007-04-06  Joel Brobecker  <brobecker@adacore.com>

	* filename_cmp.c (filename_cmp): Improve documentation.

2007-04-02  Andreas Schwab  <schwab@suse.de>

	* filename_cmp.c: Include "config.h".

2007-03-29  Joel Brobecker  <brobecker@adacore.com>

	* filename_cmp.c: New file.
	* Makefile.in (CFILES): Add filename_cmp.c.
	(REQUIRED_OFILES): Add filename_cmp.o
	(filename_cmp.o): New rule.
	* functions.texi: Regenerate.

2007-03-15  Geoffrey Keating  <geoffk@apple.com>

	* cp-demangle.c (d_encoding): Exit early on error.
	(d_pointer_to_member_type): Exit early if cplus_demangle_type
	returns NULL.
	(cplus_demangle_type): Likewise.
	* testsuite/demangle-expected: New testcase.

2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>

	* Makefile.in: Add install-pdf target as copied from
	automake v1.10 rules.
	* testsuite/Makefile.in: Add dummy install-pdf target.

2007-03-01  Peter Breitenlohner  <peb@mppmu.mpg.de>
	    Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR other/16513
	* Makefile.in: Install library under $(MULTIOSDIR), not $(MULTISUBDIR).
	Install headers in multilib independent location.

2007-02-26  DJ Delorie  <dj@redhat.com>

	* configure.ac: add djgpp-specific results, so we don't have to
	link during a cross compilation.
	* configure: Regenerated.

2007-01-31  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* hex.c: Fix typo.
	* choose-temp.c: Likewise.
	* functions.texi: Regenerate.

2007-01-31  Vladimir Prus  <vladimir@codesourcery.com>

	* pex-common.h (struct pex_obj): New fields
	stderr_pipe and read_err.
	* pex-common.c (pex_init_common): Initialize
	stderr_pipe.
	(pex_run_in_environment): Add error checking
	for PEX_STDERR_TO_PIPE.  Create a pipe
	for stderr if necessary.
	(pex_read_err): New.
	(pex_free): Close read_err.
	* pexecute.txh: Document changes.
	* functions.texi: Regenerated.

2007-01-31  Ben Elliston  <bje@au.ibm.com>

	* strsignal.c (psignal): Change type of signo to int.
	* functions.texi: Regenerate.

2007-01-29  Simon Baldwin <simonb@google.com>

	* cp-demangle.h (cplus_demangle_operators): External definition
	suppressed if not building for libstdc++.
	* cp-demangle.c (__gcclibcxx_demangle_callback): Augmented interface
	to demangling, provides a malloc-less version of __cxa_demangle.
	(cplus_demangle_print_callback): Public callback version of
	cplus_demangle_print.
	(struct d_growable_string): New growable string structure.
	(d_growable_string_init): New function, provides support for
	growable strings separate from print info.
	(d_growable_string_resize): Likewise.
	(d_growable_string_append_buffer): Likewise.
	(d_growable_string_callback_adapter):): Likewise.
	(d_print_init): New print info initialization function.
	(d_print_error): Macro replace by inline function.
	(d_print_saw_error): Likewise.
	(d_append_char): Likewise.
	(d_append_buffer): Likewise.
	(d_append_string): New inline function, replaces the
	d_append_string_constant macro.
	(d_flush_buffer): New function, flushes buffer to callback.
	(d_demangle_callback, is_ctor_or_dtor): Malloc-based fallback
	for unsupported dynamic arrays replaced by alloca().
	(d_demangle): Return string length estimating removed.
	(d_dump): Moved error case handling from call site into function.
	(d_print_resize): Function removed.
	(d_print_append_char): Likewise.
	(d_print_append_buffer): Likewise.
	(d_print_error): Likewise.
	(d_print_comp): Added special case handling for Java arrays.
	(java_demangle_v3): Removed string post-processing for Java arrays,
	now replaced by special case handling in d_print_comp.
	(cplus_demangle_v3_callback): Augmented interface to demangling,
	provides a malloc-less version of cplus_demangle_v3.
	(java_demangle_v3_callback): Augmented interface to demangling,
	provides a malloc-less version of java_demangle_v3.

2007-01-12  Ben Elliston  <bje@au.ibm.com>

	* pex-unix.c (writeerr): Cast write result to void.

	* choose-temp.c (choose_temp_base): Check the result of the call
	to mktemp rather than testing the length of the modified string.

2006-12-20  Geoffrey Keating  <geoffk@apple.com>

	* cp-demangle.h: Add comment explaining what to do to avoid
	overrunning string.
	(d_check_char): New.
	(d_next_char): Don't advance past trailing '\0'.
	* cp-demangle.c (cplus_demangle_mangled_name): Use d_check_char.
	(d_nested_name): Likewise.
	(d_special_name): Likewise.
	(d_call_offset): Likewise.
	(d_function_type): Likewise.
	(d_array_type): Likewise.
	(d_pointer_to_member_type): Likewise.
	(d_template_param): Likewise.
	(d_template_args): Likewise.
	(d_template_arg): Likewise.
	(d_expr_primary): Likewise.
	(d_local_name): Likewise.
	(d_substitution): Likewise.
	(d_ctor_dtor_name): Use d_advance rather than d_next_char.
	* testsuite/test-demangle.c: Include sys/mman.h.
	(MAP_ANONYMOUS): Define.
	(protect_end): New.
	(main): Use protect_end.
	* testsuite/demangle-expected: Add testcases for overrunning
	the end of the string.

2006-11-30  Andrew Stubbs  <andrew.stubbs@st.com>
	    J"orn Rennecke <joern.rennecke@st.com>

	PR driver/29931
	* make-relative-prefix.c (make_relative_prefix_1): New function,
	broken out of make_relative_prefix.  Make link resolution dependent
	on new parameter.
	(make_relative_prefix): Use make_relative_prefix_1.
	(make_relative_prefix_ignore_links): New function.

2006-11-08  Vladimir Prus  <vladimir@codesourcery.com>

	* pex-win32.c (no_suffixes): Remove.
	(std_suffixes): Add "" as first element.
	(find_executable): Remove detection of already-present
	extension. Try all suffixes in std_suffixes.

2006-11-07  Julian Brown  <julian@codesourcery.com>

	* floatformat.c (get_field): Fix segfault with little-endian word
	order on 64-bit hosts.
	(put_field): Likewise.
	(min): Move definition.

2006-10-26  Danny Smith  <dannysmith@users.sourceforge.net>

	pex-win32.c (argv_to_cmdline): Replace xmalloc with XNEWVEC.
	(find_executable): Likewise.
	(win32_spawn): Cast alloca return to (char**).
	Replace malloc with XNEWVEC.
	bcopy.c (bcopy): Add explict casts in assignments.

2006-10-25  Ben Elliston  <bje@au.ibm.com>

	* pexecute.txh: Wrap pexecute's "flag" argument with @var {..}.

2006-10-10  Brooks Moses  <bmoses@stanford.edu>

	* Makefile.in: Added "pdf", "libiberty.pdf" target support.
	* testsuite/Makefile.in: Added empty "pdf" target.

2006-09-22  Ian Lance Taylor  <ian@airs.com>

	PR other/29176
	* cp-demangle.c (d_substitution): Check for overflow when
	computing substitution index.

2006-08-30  Corinna Vinschen  <corinna@vinschen.de>

	* configure.ac: Add case for Mingw as host.
	* configure: Regenerate.

2006-08-27  Ian Lance Taylor  <ian@airs.com>

	PR driver/27622
	* pex-common.h (struct pex_funcs): Add toclose parameter to
	exec_child field.
	* pex-common.c (pex_run_in_environment): Pass toclose to
	exec_child.
	* pex-djgpp.c (pex_djgpp_exec_child): Add toclose parameter.
	* pex-unix.c (pex_unix_exec_child): Likewise.
	* pex-msdos.c (pex_msdos_exec_child): Likewise.
	* pex-win32.c (pex_win32_exec_child): Likewise.

	PR other/28797
	* cp-demangle.c (d_pointer_to_member_type): Do add a substitution
	for a qualified member which is not a function.
	* testsuite/demangle-expected: Add test case.

2006-07-27  Jan Hubicka  <jh@suse.cz>

	PR rtl-optimization/28071
	* hashtab.c (htab_empty): Clear out n_deleted/n_elements;
	downsize the hashtable.

2006-07-04  Peter O'Gorman  <peter@pogma.com>

	* Makefile.in: chmod 644 before ranlib during install.

2006-06-02  Mark Shinwell  <shinwell@codesourcery.com>

	* pex-unix.c (pex_unix_exec_child): Insert cast when assigning
	to environ.

2006-06-01  Mark Shinwell  <shinwell@codesourcery.com>

	* pex-common.c: New function pex_run_in_environment.
	* pex-common.h: Add environment parameter to exec_child.
	* pex-msdos.c: Add environment parameter to pex_msdos_exec_child.
	* pex-djgpp.c: Add environment parameter to pex_djgpp_exec_child.
	(pex_djgpp_exec_child): Pass environment to child process.
	* pex-unix.c: Add environment parameter to pex_unix_exec_child.
	(pex_unix_exec_child): Pass environment to child process.
	* pex-win32.c: Add environment parameter to pex_win32_exec_child.
	New function env_compare for comparing VAR=VALUE pairs.
	(win32_spawn): Assemble environment block and pass to CreateProcess.
	(spawn_script): Pass environment through to win32_spawn.
	(pex_win32_exec_child): Pass environment through to spawn_script and
	win32_spawn.
	* functions.texi: Regenerate.
	* pexecute.txh: Document pex_run_in_environment.

2006-05-28  Mark Shinwell  <shinwell@codesourcery.com>

	* mkstemps.c: Open temporary files in binary mode.

2006-05-12  Anton Blanchard  <anton@samba.org>

	* cplus-dem.c (demangle_fund_type): Ensure buf is large enough to
	hold "int%u_t".

2006-04-24  Julian Brown  <julian@codesourcery.com>

	* floatformat.c (floatformat_to_double): Fix (biased) exponent=0 case.

2006-03-29  Jim Blandy  <jimb@codesourcery.com>

	* pex-common.c (pex_input_file, pex_input_pipe): New functions.
	(pex_init_common): Initialize obj->input_file.
	(pex_run): Close any file opened by pex_input_file.
	* pexecute.txh (pex_input_file, pex_input_pipe): New docs.
	* pex-common.h (struct pex_obj): New field input_file.
	(struct pex_funcs): New function ptr fdopenw.
	* pex-unix.c (pex_unix_fdopenw): New function.
	(funcs): List it as our fdopenw function.
	* pex-win32.c (pex_win32_fdopenw): New function.
	(funcs): List it as our fdopenw function.
	* pex-djgpp.c (funcs): Leave fdopenw null.
	* pex-msdos (funcs): Same.
	* functions.texi: Regenerated.

2006-04-10  Jim Blandy  <jimb@codesourcery.com>

	* pex-common.c (temp_file): New function, containing guts of
	pex-style temporary file name generation.
	(pex_run): Use it.

2006-04-06  Carlos O'Donell  <carlos@codesourcery.com>

	* Makefile.in: Add install-html, install-html-am, and
	install-html-recursive targets. Define mkdir_p and
	NORMAL_INSTALL.
	* configure.ac: AC_SUBST datarootdir, docdir, htmldir.
	* configure: Regenerate.
	* testsuite/Makefile.in: Add install-html and html targets.

2006-03-31  Mark Mitchell  <mark@codesourcery.com>

	* pex-win32.c (<errno.h>): Include.
	(fix_argv): Remove.
	(argv_to_cmdline): New function.
	(std_suffixes): New variable.
	(no_suffixes): Likewise.
	(find_executable): New function.
	(win32_spawn): Likewise.
	(spawn_script): Use win32_spawn instead of _spawnv[p].
	(pex_win32_exec_child): Replace MSVCRT calls with Win32 API calls.
	(pex_win32_wait): Likewise.

2006-03-24  Jim Blandy  <jimb@codesourcery.com>

	* pex-common.c (pex_run): Simplify output name handling.

2006-03-12  Jim Blandy  <jimb@red-bean.com>

	* pex-common.h (struct pex_obj): Doc fixes.

2006-03-11  Jim Blandy  <jimb@red-bean.com>

	* functions.texi: Regenerate.

2006-02-21  Ben Elliston  <bje@au.ibm.com>

	* pexecute.c (pwait): Syntax fix for previous change.

2006-02-17  Uttam Pawar  <uttamp@us.ibm.com>

	* pexecute.c (pwait): Free vector pointer.
	* partition.c (partition_print): Free class_elements pointer.

2006-02-11  Roger Sayle  <roger@eyesopen.com>
	    R. Scott Bailey  <scott.bailey@eds.com>
	    Bill Northcott  <w.northcott@unsw.edu.au>

	PR bootstrap/16787
	* floatformat.c: Include <float.h> where available.
	(NAN): Use value of DBL_QNAN if defined, and NAN isn't.

2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* configure.ac: Add -Wc++-compat to ac_libibety_warn_cflags where
	supported.
	* configure: Regenerated.

2006-01-20  Carlos O'Donell  <carlos@codesourcery.com>

	* testsuite/Makefile.in: Add test-expandargv test.
	* testsuite/test-expandargv.c: New test.
	* argv.c (expandargv): Check for errors with ferror,
	rather than just by looking at return value from fread.

2005-12-17  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* floatformat.c (floatformat_i387_ext_is_valid): Use explicit cast
	to convert from "from".
	(floatformat_to_double): Likewise.
	(floatformat_from_double): Use explicit cast to convert from "to".

2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>

	PR java/9861
	* cp-demangle.c (d_bare_function_type): Recognize new 'J' qualifer
	and include return type when found.
	(d_print_comp)[DEMANGLE_COMPONENT_FUNCTION_TYPE]: Add
	conditional logic to change printing order of return type.when
	the DMGL_RET_POSTFIX option is present.
	(java_demangle_v3): Add DMGL_RET_POSTFIX option to d_demangle
	call.
	* testsuite/test-demangle.c (main): Recognize option --ret-postfix
	* testsuite/demangle-expected: Test cases to verify extended encoding.
	Updated comment to document --ret-postfix option.

2005-11-06  Richard Guenther  <rguenther@suse.de>

	* splay-tree.c (rotate_left): New function.
	(rotate_right): Likewise.
	(splay_tree_splay_helper): Remove.
	(splay_tree_splay): Re-implement.

2005-10-31  Mark Kettenis  <kettenis@gnu.org>

	* floatformat.c (floatformat_vax_aingle, floatformat_vax_double):
	New variables.

2005-10-07  Mark Mitchell  <mark@codesourcery.com>

	* at-file.texi: Fix typo.

2005-10-03  Mark Mitchell  <mark@codesourcery.com>

	* at-file.texi: New file.

2005-09-27  Mark Mitchell  <mark@codesourcery.com>

	* argv.c (expandargv): Do not use xmalloc_failed.

2005-09-26  Mark Mitchell  <mark@codesourcery.com>

	* argv.c (safe-ctype.h): Include it.
	(ISBLANK): Remove.
	(stdio.h): Include.
	(buildargv): Use ISSPACE instead of ISBLANK.
	(expandargv): New function.
	* Makefile.in: Regenerated.

2005-09-14  Christopher Faylor  <cgf@timesys.com>

	* pex-win32.c: Include "windows.h".
	(backslashify): New function.
	(fix_argv): Use backslashify to convert path to windows format.
	Allocate one more place in new argv for potential executable from '#!'
	parsing.
	(tack_on_executable): New function.  Conditional on USE_MINGW_MSYS
	(openkey): Ditto.
	(mingw_rootify): Ditto.
	(msys_rootify): Ditto.
	(spawn_script): New function.
	(pex_win32_exec_child): Save translated argv in newargv.  Pass to
	spawn_script if spawnv* fails.
	(main): New function.  Conditional on MAIN.  Useful for testing.

2005-08-17  Mark Kettenis  <kettenis@gnu.org>

	* floatformat.c (floatformat_always_valid): Change type of last
	argument to `void *'.
	(floatformat_i387_ext_is_valid): Likewise.
	(floatformat_to_double): Change type of second argument to `const
	void *'.
	(floatformat_from_double): Change type of last argument to `void
	*'.
	(floatformat_is_valid): Change type of last argument to `const
	void *'.
	(ieee_test): Remove redundant casts.

2005-08-17  Kelley Cook  <kcook@gcc.gnu.org>

	* strverscmp.c: Update FSF address.
	* testsuite/Makefile.in: Likewise.
	* testsuite/test-demangle.c: Likewise.
	* testsuite/test-pexecute.c: Likewise.

2005-07-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* getopt.c: Include ansidecl.h before system headers.

2005-07-22  Ben Elliston  <bje@gnu.org>

	* getopt.c: Include "ansidecl.h".
	(_getopt_initialize): Mark argc and argv parameters as unused.

2005-07-22  Ben Elliston  <bje@gnu.org>

	* regex.c (regcomp): Change type of `i' from unsigned to int.

2005-07-22  Ben Elliston  <bje@gnu.org>

	Recover patch lost in the sourceware repository:
	2005-07-09  Ben Elliston  <bje@au.ibm.com>
	* memcpy.c: Remove ANSI_PROTOTYPES conditional code.
	* memmove.c: Likewise.
	* objalloc.c: Likewise.

2005-07-22  Ben Elliston  <bje@gnu.org>

	* configure.ac: Check for a getopt(3) declaration.
	* configure, config.in: Regenerate.

2005-07-15  Ben Elliston  <bje@au.ibm.com>

	* regex.c (TRANSLATE): Cast rhs of ternary expression to char.

2005-07-12  Ben Elliston  <bje@au.ibm.com>

	* floatformat.c (floatformat_to_double): Add a comment about a
	potential source of warnings when compiling this file.

2005-07-12  Ben Elliston  <bje@au.ibm.com>

	* pexecute.c (pexecute): Cast string litrals to char *.
	* regex.c (re_comp): Cast a call to gettext() to char *.

2005-07-07  Kelley Cook  <kcook@gcc.gnu.org>

	* config.table: Delete file.  Move former contents into ...
	* configure.ac: ... here and escape any brackets for m4.
	* Makefile.in (config.status): Remove dependency on config.table.
	* configure: Regenerate.

2005-07-07  Kelley Cook  <kcook@gcc.gnu.org>

	* config.in: Regenerate for 6/20 change.

2005-07-03  Steve Ellcey  <sje@cup.hp.com>

	PR other/13906
	* md5.c (md5_process_bytes): Check alignment.

2005-07-01  Ian Lance Taylor  <ian@airs.com>

	PR other/22268
	* cp-demangle.c (d_expr_primary): Don't run off the end of the
	string while looking for the end of a literal value.
	* testsuite/demangle-expected: Add test case.

2005-06-30  Daniel Berlin  <dberlin@dberlin.org>

	* hashtab.c (EMPTY_ENTRY): Moved and renamed.
	(DELETED_ENTRY): Ditto.

2005-06-20  Geoffrey Keating  <geoffk@apple.com>

	* strverscmp.c: New.
	* Makefile.in (CFILES): Add strverscmp.c.
	(CONFIGURED_OFILES): Add strverscmp.o.
	(strverscmp.o): New rule.
	(stamp-functions): Add $(srcdir) to files in source directory.
	* configure.ac (funcs): Add strverscmp.
	(AC_CHECK_FUNCS): Add strverscmp.
	* configure: Regenerate.
	* functions.texi: Regenerate.

2005-05-28  Eli Zaretskii  <eliz@gnu.org>

	* configure.ac: Add snprintf and vsnprintf to AC_CHEK_DECLS.
	* config.in, configure: Regenerate.

2005-05-25  Richard Henderson  <rth@redhat.com>

	* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_HIDDEN_ALIAS.
	(d_make_comp, d_print_comp): Likewise.
	(d_special_name): Generate one.
	* testsuite/demangle-expected: Add a hidden alias test.

2005-05-24  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* configure.ac: Check declarations for calloc(), getenv(),
	malloc(), realloc() and sbrk().
	* config.in: Regenerate.
	* configure: Likewise.

	* alloca.c (C_alloca): Change "new" to "new_storage".  Use XNEWVEC
	instead of xmalloc.
	* choose-temp.c (choose_temp_base): Use XNEWVEC instea od xmalloc.
	* concat.c (liiberty_concat_ptr): Surround definition with an
	extern "C" block, if __cplusplus.
	(concat): Use XNEWVEC instead of xmalloc.
	(reconcat): Likewise.
	* cp-demangle.c (struct d_print_template): Rename member
	"template" to "template_decl".  Adjust use throughout the file.
	(d_print_resize): Properly cast return value of realloc().
	(cplus_demangle_print): Same for malloc().
	(d_demangle): Likewise.
	* cp-demint.c (cplus_demangle_fill_builtin_type): Rename parameter
	"typename" to "type_name".
	* cplus-dem.c (grow_vect): Use XRESIZEVEC instead of xrealloc().
	(work_stuff_copy_to_from): Use XNEWVEC insteand of xmalloc().
	(demangle_template_value_parm): Likewise.
	(demangle_template): Likewise.
	(recursively_demangle): Likewise.
	(do_hpacc_template_literal): Likewise.
	(do_arg): Likewise.
	(remember_type): Likewise.
	(remember_Ktype): Likewise.
	(register_Btype): Likewise.
	(string_need): Use XRESIZEVEC instead of xrealloc().
	* dyn-string.c (dyn_string_init): Use XNEWVEC.
	(dyn_string_new): Use XNEW.
	(dyn_string_resize): Use XRESIZEVEC.
	* fnmatch.c (fnmatch): Rename local variable "not" to "negate".
	* getopt.c (getenv): Declare only if !__cplusplus and !getenv.
	Otherwise include <stdlib.h>.
	(exchange): Cast return value of malloc().
	* hashtab.c (htab_size): Define as both macro and non-inline
	function.
	(htab_elements): Likewise.
	* getpwd.c (getpwd): Use XNEWVEC.
	(htab_create_alloc_ex): Use C90 prototype-style.
	* lrealpath.c (lrealpath): Appropriately cast return value of
	malloc().
	* make-relative-prefix.c (save_string): Likewise.
	* make-temp-file.c (try_dir): Rename from "try".  Adjust use in
	the file.
	(choose_tmpdir): Use XNEWVEC.
	* mkstemps.c (mkstemps): Rename parameter "template" to "pattern".
	* pex-common.c (pex_init_common): Use XNEW.
	(pex_add_remove): Use XRESIZEVEC.
	(pex_run): Likewise.
	(pex_get_status_and_time): Likewise.
	* pex-djgpp.c (pex_djgpp_exec_child): Likewise.
	* pex-msdos.c (pex_init): Use XNEW.
	(pex_msdos_exec_child): Likewise.
	(pex_msdos_exec_child): Use XRESIZEVEC.
	* pex-unix.c (pex_wait): Use XNEW.
	* pex-win32.c (fix_argv): Use XNEWVEC.
	* pexecute.c (pwait): Likewise.
	* setenv.c (setenv): Properly cast return value of malloc().
	* sigsetmask.c (sigsetmask): Rename local variables "old" and
	"new" to "old_sig" and "new_sig".
	* sort.c (main): Use XNEWVEC.
	* spaces.c (spaces): Cast return value of malloc().
	* strndup.c (strndup): Likewise.
	* ternary.c (ternary_insert): Use XNEW.
	* xmalloc.c (malloc, realloc, calloc, sbrk): Surround declaration
	with an extern "C" block if __cplusplus.
	* xstrdup.c (xstrdup): Cast return value of memcpy().
	* xstrerror.c (strerror): Enclose declaration in an extern "C"
	block if __cplusplus.
	* xstrndup.c (xstrndup): Use XNEW. Cast return value of memcpy().

2005-05-16  Andreas Jaeger  <aj@suse.de>

	* getpwd.c: Remove unneeded prototype getcwd and move getwd so
	that it's only declared if needed.

	* getopt1.c: Change order of includes so that __GNU_LIBRARY__ is
	defined.

2005-05-15  Andreas Jaeger  <aj@suse.de>

	* functions.texi: Regenerated.

2005-05-15  Eli Zaretskii  <eliz@gnu.org>

	* pexecute.txh: Enclose multi-word data types in @deftypefn in
	braces.  Minor wording fixes.  Use --- for em-dash.  Use
	@enumerate in enumerated lists.

	* fopen_unlocked.c: Enclose multi-word data types in @deftypefn in
	braces.

2005-05-11  Eli Zaretskii  <eliz@gnu.org>

	* pex-djgpp.c: Include string.h, fcntl.h, unistd.h, and
	sys/stat.h.
	(pex_init): Fix last argument to pex_init_common.
	(pex_djgpp_exec_child): Remove leading underscore from _open,
	_dup, _dup2, _close, and _spawnv/_spawnvp.  Replace `program',
	which is undeclared, with `executable', which was unused.  Remove
	unused variable `e'.  Fix casting of last arg to spawnv/spawnvp.
	(pex_djgpp_wait): Declare arguments with ATTRIBUTE_UNUSED.

2005-05-11  Paul Brook  <paul@codesourcery.com>

	* Makefile.in: Regenerate dependencies.

2005-05-10  Nick Clifton  <nickc@redhat.com>

	* Update the address and phone number of the FSF organization in
	the GPL notices in the following files:
	COPYING.LIB, Makefile.in, _doprnt.c, argv.c, asprintf.c,
	choose-temp.c, clock.c, concat.c, copying-lib.texi, cp-demangle.c,
	cp-demangle.h, cp-demint.c, cplus-dem.c, dyn-string.c, fdmatch.c,
	fibheap.c, floatformat.c, fnmatch.c, fopen_unlocked.c,
	gather-docs, getopt.c, getopt1.c, getruntime.c, hashtab.c, hex.c,
	lbasename.c, lrealpath.c, maint-tool, make-relative-prefix.c,
	make-temp-file.c, md5.c, mempcpy.c, mkstemps.c, objalloc.c,
	obstack.c, partition.c, pex-common.c, pex-common.h, pex-djgpp.c,
	pex-msdos.c, pex-one.c, pex-unix.c, pex-win32.c, pexecute.c,
	physmem.c, putenv.c, regex.c, safe-ctype.c, setenv.c, snprintf.c,
	sort.c, spaces.c, splay-tree.c, stpcpy.c, stpncpy.c, strndup.c,
	strtod.c, ternary.c, unlink-if-ordinary.c, vasprintf.c,
	vsnprintf.c, vsprintf.c, xexit.c, xmalloc.c, xstrndup.c

2005-05-06  Kelley Cook  <kcook@gcc.gnu.org>

	* aclocal.m4 (AC_DEFINE_NOAUTOHEADER): Remove.
	* configure.ac: Replace any AC_DEFINE_NOAUTOHEADER with AC_DEFINE.
	* configure: Regenerate.

2005-05-06  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS.
	Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF.
	* aclocal.m4: Don't include accross.m4.
	* configure, config.in: Regenerate.

2005-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fopen_unlocked.c (unlock_std_streams): New.

	* functions.texi: Regenerate.

2005-04-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fopen_unlocked.c (unlock_stream): New.
	Consolidate unlocking code into a helper function.

	* functions.texi: Regenerate.

2005-04-13  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* asprintf.c: Include config.h.
	* basename.c: Likewise.
	* fdmatch.c: Likewise.
	* hex.c: Likewise.
	* lbasename.c: Likewise.
	* spaces.c: Likewise.
	* xatexit.c:Likewise.
	* configure.ac:  Do check declarations for basename, ffs, asprintf
	and vasprintf for real.
	* configure: Regenerate.

2005-04-13  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* argv.c (dupargv): Allocate space of argv[argc], not
	sizeof(char *) of that amount.  Cast result to char *.

2005-04-12  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* regex.c (wcs_re_match_2_internal, byte_re_match_2_internal):
	Replace not with negate.

2005-04-12  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* configure.ac: Check declarations for basename, ffs, asprintf,
	vasprintf.
	* configure: Regenerate.
	* config.in: Likewise.

2005-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (CFILES): Add fopen_unlocked.c.
	(REQUIRED_OFILES): Add ./fopen_unlocked.o.
	Regenerate dependencies.

	* configure.ac: Check for stdio_ext.h and __fsetlocking.

	* fopen_unlocked.c: New file.

	* functions.texi, configure, config.in: Regenerate.

2005-04-04  Ian Lance Taylor  <ian@airs.com>

	* testsuite/test-pexecute.c (TEST_PEX_RUN): Move variable
	declaration before statement.

2005-04-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* bcmp.c: Fix warnings and implement using memcmp.
	* bcopy.c: Fix warnings.
	* bzero.c: Fix warnings and implement using memset.

	* configure.ac (ac_libiberty_warn_cflags): Add -Wwrite-strings
	-Wstrict-prototypes.
	* configure, config.in: Regenerate.

	* bsearch.c, index.c, rindex.c, strstr.c, strtol.c, waitpid.c: Fix
	warnings and reconcile interfaces with relevant standards.

2005-04-02  Ian Lance Taylor  <ian@airs.com>

	* cp-demangle.c: Update copyright.

2005-03-31  Joseph S. Myers  <joseph@codesourcery.com>

	* gettimeofday.c: Add "Supplemental" to @deftypefn.
	* functions.texi: Regenerate.

2005-03-28  Ian Lance Taylor  <ian@airs.com>

	* pex-common.c: New file.
	* pex-one.c: New file.
	* pexecute.c: New file.
	* pex-common.h: Include <stdio.h>.
	(struct pex_obj): Define.
	(struct pex_funcs): Define.
	(pex_init_common): Declare.
	* pex-unix.c: Rewrite.
	* pex-win32.c: Rewrite.
	* pex-djgpp.c: Rewrite.
	* pex-msdos.c: Rewrite.
	* testsuite/text-pexecute.c: New file.
	* pexecute.txh: Rewrite.
	* configure.ac: Check for wait3 and wait4.  Set CHECK to
	really-check rather than check-cplus-dem.
	* functions.texi: Rebuild.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add pexecute.c, pex-common.c, pex-one.c.
	(REQUIRED_OFILES): Add pexecute.o, pex-common.o, pex-one.o.
	* testsuite/Makefile.in (really-check): New target.
	(check-pexecute, test-pexecute): New targets.
	* configure: Rebuild.

2005-03-28  Mark Kettenis  <kettenis@gnu.org>

	* unlink-if-ordinary.c: Include <sys/types.h>.

2005-03-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to use ISO C prototype style 7/n.
	* regex.c (PARAMS): Remove definition.
	(PREFIX): Unconditionaly define using ISO C ## operator.
	(init_syntax_once, extract_number, extract_number_and_incr,
	print_fastmap, print_partial_compiled_pattern,
	print_compiled_pattern, print_double_string, printchar,
	convert_mbs_to_wcs, re_set_syntax, regex_grow_registers,
	regex_compile, store_op1, store_op2, insert_op1, insert_op2,
	at_begline_loc_p, at_endline_p, group_in_compile_stack,
	insert_space, wcs_compile_range, byte_compile_range,
	truncate_wchar, re_compile_fastmap, re_compile_fastmap,
	re_set_registers, re_search, re_search_2, re_search_3, re_match,
	re_match_2, count_mbs_length, wcs_re_match_2_internal,
	byte_re_match_2_internal, group_match_null_string_p,
	alt_match_null_string_p, common_op_match_null_string_p,
	bcmp_translate, re_compile_pattern, re_comp, re_exec, regcomp,
	regexec, regerror, regfree): Use ISO C prototype style.
	* partition.c: (elem_compare): Likewise.
	* cp-demangle.c (print_usage): Likewise.

2005-03-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to use ISO C prototype style 5/n.
	* random.c (srandom, initstate, setstate, random): Use ISO C
	prototypes.
	* putenv.c (putenv): Likewise.
	* physmem.c (physmem_available, physmem_total, main): Likewise.
	* pex-win32.c (fix_argv, pexecute, pwait): Likewise.
	* pex-unix.c (pexecute, pwait): Likewise.
	* pex-msdos.c (pexecute, pwait): Likewise.
	* pex-djgpp.c (pexecute, pwait): Likewise.
	* partition.c (partition_new, partition_delete, partition_union)
	(elem_compare, partition_print): Likewise.
	* obstack.c (_obstack_begin, _obstack_begin_1, _obstack_newchunk,
	_obstack_allocated_p, _obstack_free, obstack_free,
	_obstack_memory_used, print_and_abort, obstack_next_free,
	obstack_object_size, obstack_base): Likewise.  Remove codes
	predicated on !defined(__STDC__).
	* objalloc.c (objalloc_create, _objalloc_alloc, objalloc_free,
	objalloc_free_block): Use ISO C prototypes.
	* mkstemps.c (mkstemps): Likewise.
	* memset.c (memset): Likewise.
	* mempcpy.c (mempcpy): Likewise.
	* rename.c (rename): Likewise.
	* rindex.c (rindex): Likewise.
	* setenv.c (setenv, unsetenv): Likewise.
	* sigsetmask.c (sigsetmask): Likewise.
	* snprintf.c (snprintf): Likewise.
	* sort.c (sort_pointers, xmalloc): Likewise.
	* spaces.c (spaces): Likewise.
	* splay-tree.c (splay_tree_delete_helper,
	splay_tree_splay_helper, splay_tree_splay,
	splay_tree_foreach_helper, splay_tree_xmalloc_allocate,
	splay_tree_new, splay_tree_xmalloc_allocate,
	splay_tree_new_with_allocator, splay_tree_delete,
	splay_tree_insert, splay_tree_remove, splay_tree_lookup,
	splay_tree_max, splay_tree_min, splay_tree_predecessor,
	splay_tree_successor, splay_tree_foreach,
	splay_tree_compare_ints, splay_tree_compare_pointers): Likewise.
	* stpcpy.c (stpcpy): Likewise.
	* stpncpy.c (stpncpy): Likewise.
	* strcasecmp.c (strcasecmp): Likewise.
	* strchr.c (strchr): Likewise.
	* strdup.c (strdup): Likewise.

2005-03-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to use ISO C prototype style 6/n.
	* strerror.c (init_error_tables, errno_max, strerror, strerrno,
	strtoerrno, main): Use ISO C prototype style.
	* strncasecmp.c (strncasecmp): Likewise.
	* strncmp.c (strncmp): Likewise.
	* strndup.c (strndup): Likewise.
	* strrchr.c (strrchr): Likewise.
	* strsignal.c (init_signal_tables, signo_max, strsignal,
	strsigno, strtosigno, psignal, main): Likewise.
	* strstr.c (strstr): Likewise.
	* strtod.c (strtod, atof): Likewise.
	* strtol.c (strtol): Likewise.
	* strtoul.c (strtoul): Likewise.
	* ternary.c (ternary_insert, ternary_cleanup, ternary_search,
	ternary_recursivesearch): Likewise.
	* tmpnam.c (tmpnam): Likewise.
	* unlink-if-ordinary.c (unlink_if_ordinary): Likewise.
	* vasprintf.c (int_vasprintf, vasprintf, checkit, main): Likewise.
	* vfork.c (vfork): Likewise.
	* vfprintf.c (vfprintf): Likewise.
	* vprintf.c (vprintf): Likewise.
	* vsnprintf.c (vsnprintf, checkit, main): Likewise.
	* vsprintf.c (vsprintf): Likewise.
	* waitpid.c (waitpid): Likewise.
	* xatexit.c (xatexit, xatexit_cleanup): Likewise.
	* xexit.c (xexit): Likewise.
	* xmalloc.c (xmalloc_set_program_name, xmalloc_failed, xmalloc,
	xcalloc, xrealloc): Likewise.
	* xmemdup.c (xmemdup): Likewise.
	* xstrdup.c (xstrdup): Likewise.
	* xstrerror.c (xstrerror): Likewise.
	* xstrndup.c (xstrndup): Likewise.

2005-03-27  Andreas Jaeger  <aj@suse.de>

	* configure.ac (ac_c_preproc_warn_flag): Remove -Wtraditional
	flags.
	* configure: Regenerated.

2005-03-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* getopt1.c (getopt_long_only): Fix thinko.

2005-03-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to use ISO C prototype style 4/n.
	* hashtab.c (higher_prime_index, hash_pointer, eq_pointer,
	htab_size, htab_elements, htab_mod_1, htab_mod, htab_mod_m2,
	htab_create_alloc, htab_set_functions_ex, htab_create,
	htab_try_create, htab_delete, htab_empty,
	find_empty_slot_for_expand, htab_expand, htab_find_with_hash,
	htab_find, htab_find_slot_with_hash, htab_find_slot,
	htab_remove_elt, htab_remove_elt_with_hash, htab_clear_slot,
	htab_traverse_noresize, htab_traverse, htab_collisions,
	htab_hash_string, iterative_hash): Use ISO C prototype.
	* hex.c (hex_init): Likewise.
	* index.c (index): Likewise.
	* insque.c (insque, remque): Likewise.
	* lbasename.c (lbasename): Likewise.
	* lrealpath.c (lrealpath): Likewise.
	* make-relative-prefix.c (save_string, split_directories,
	free_split_directories, make_relative_prefix): Likewise.
	* make-temp-file.c (try, choose_tmpdir, make_temp_file): Likewise.
	* md5.c (md5_init_ctx, md5_read_ctx, md5_finish_ctx, md5_stream,
	md5_buffer, md5_process_bytes, md5_process_block): Likewise.
	* memchr.c (memchr): Likewise.
	* memcpy.c (memcpy): Likewise.
	* memmove.c (memmove): Likewise.
	* gettimeofday.c (gettimeofday): Likewise.
	* getruntime.c (get_run_time): Likewise.
	* getpwd.c (getpwd, getpwd): Likewise.
	* getpagesize.c (getpagesize): Likewise.
	* getopt1.c (getopt_long, getopt_long_only, main): Likewise.
	* getopt.c (my_index, exchange, _getopt_initialize,
	_getopt_internal, getopt, main): Likewise.
	* getcwd.c (getcwd): Likewise.
	* fnmatch.c (fnmatch): Likewise.
	* floatformat.c (floatformat_always_valid,
	floatformat_i387_ext_is_valid, get_field, floatformat_to_double,
	put_field, floatformat_from_double, floatformat_is_valid,
	ieee_test, main): Likewise.
	* fibheap.c (fibheap_new, fibnode_new, fibheap_compare,
	fibheap_comp_data, fibheap_insert, fibheap_min, fibheap_min_key,
	fibheap_union, fibheap_extract_min, fibheap_replace_key_data,
	fibheap_replace_key, fibheap_replace_data, fibheap_delete_node,
	fibheap_delete, fibheap_empty, fibheap_extr_min_node,
	fibheap_ins_root, fibheap_rem_root, fibheap_consolidate,
	fibheap_link, fibheap_cut, fibheap_cascading_cut,
	fibnode_insert_after, fibnode_remove): Likewise.
	* ffs.c (ffs): Likewise.
	* fdmatch.c (fdmatch): Likewise.
	* dyn-string.c (dyn_string_init, dyn_string_new,
	dyn_string_delete, dyn_string_release, dyn_string_resize,
	dyn_string_clear, dyn_string_copy, dyn_string_copy_cstr,
	dyn_string_prepend, dyn_string_prepend_cstr, dyn_string_insert,
	dyn_string_insert_cstr, dyn_string_insert_char,
	dyn_string_append, dyn_string_append_cstr,
	dyn_string_append_char, dyn_string_substring, dyn_string_eq):
	Likewise.

2005-03-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to use ISO C prototype style 3/n.
	* cplus-dem.c (set_cplus_marker_for_demangling, consume_count,
	consume_count_with_underscores, code_for_qualifier,
	qualifier_string, demangle_qualifier, cplus_demangle_opname,
	cplus_mangle_opname, cplus_demangle_set_style,
	cplus_demangle_name_to_style, cplus_demangle, grow_vect,
	ada_demangle, internal_cplus_demangle, squangle_mop_up,
	work_stuff_copy_to_from, delete_non_B_K_work_stuff,
	delete_work_stuff, mop_up, demangle_signature,
	demangle_method_args, demangle_template_template_parm,
	demangle_expression, demangle_integral_value,
	demangle_real_value, demangle_template_value_parm,
	demangle_template, arm_pt, demangle_arm_hp_template,
	demangle_class_name, demangle_class, iterate_demangle_function,
	demangle_prefix, gnu_special, recursively_demangle, arm_special,
	demangle_qualified, get_count, do_type, demangle_fund_type,
	do_hpacc_template_const_value, do_hpacc_template_literal,
	snarf_numeric_literal, do_arg, remember_type, remember_Ktype,
	register_Btype, remember_Btype, forget_B_and_K_types,
	forget_types, demangle_args, demangle_nested_args,
	demangle_function_name, string_need, string_delete, string_init,
	string_clear, string_empty, string_append, string_appends,
	string_appendn, string_prepend, string_prepends, string_prependn,
	string_append_template_idx): Use ISO C prootype style.
	* cp-demint.c (cplus_demangle_fill_component,
	cplus_demangle_fill_builtin_type, cplus_demangle_fill_operator,
	cplus_demangle_v3_components): Likewise.

2005-03-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to use ISO C prototype style 2/n.
	* cp-demangle.h: Remove uses of PARAMS.
	* cp-demangle.c: Likewise.
	(d_dump, cplus_demangle_fill_name,
	cplus_demangle_fill_extended_operator, cplus_demangle_fill_ctor,
	cplus_demangle_fill_dtor, d_make_empty, d_make_comp, d_make_name,
	d_make_builtin_type, d_make_operator, d_make_extended_operator,
	d_make_ctor, d_make_dtor, d_make_template_param, d_make_sub,
	cplus_demangle_mangled_name, has_return_type,
	is_ctor_dtor_or_conversion, d_encoding, d_name, d_nested_name,
	d_prefix, d_unqualified_name, d_source_name, d_number,
	d_identifier, d_operator_name, d_special_name, d_call_offset,
	d_ctor_dtor_name, cplus_demangle_type, d_cv_qualifiers,
	d_function_type, d_bare_function_type, d_class_enum_type,
	d_array_type, d_pointer_to_member_type, d_template_param,
	d_template_args, d_template_arg, d_expression, d_expr_primary,
	d_local_name, d_discriminator, d_add_substitution,
	d_substitution, d_print_resize, d_print_append_char,
	d_print_append_buffer, d_print_error, cplus_demangle_print,
	d_print_comp, d_print_java_identifier, d_print_mod_list,
	d_print_mod, d_print_function_type, d_print_array_type,
	d_print_expr_op, d_print_cast, cplus_demangle_init_info,
	d_demangle, __cxa_demangle, cplus_demangle_v3, java_demangle_v3,
	is_ctor_or_dtor, is_gnu_v3_mangled_ctor, is_gnu_v3_mangled_dtor,
	print_usage, main):

2005-03-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to ISO C prototype style 1/n.
	* _doprnt.c: Remove conditional #include <varargs.h> on
	ANSI_PROTOTYPES as the latter is always assumed.
	(_doprnt, checkit, main): Use ISO C prototype.
	* alloca.c (find_stack_direction, C_alloca): Use ISO C prototype.
	* argv.c: Remove conditional #includes on ANSI_PROTOTYPES.
	(dupargv, freeargv, buildargv, main): Use ISO C prototype.
	* atexit.c (atexit): Likewise
	* asprintf.c: Remove conditional include on ANSI_PROTOTYPES.
	(asprintf): Use ISO C prototype.
	* basename.c (basename): Likewise
	* bcmp.c (bcmp): Likewise.
	* bcopy.c (bcopy): Likewise.
	* bzero.c (bzero): Likewise.
	* bsearch.c (bsearch): Likewise.  Improve const-correctness.
	* choose-temp.c (choose_temp_base): Likewise.
	* calloc.c: Remove conditional #include on ANSI_PROTOTYPES.
	(calloc): Use ISO C prototype.
	* clock.c (clock): Likewise.
	* concat.c: Remove conditional #include on ANSI_PROTOTYPES.
	(vconcat_length, vconcat_copy, concat_length, concat_copy,
	concat_copy2, concat, reconcat, main): Use ISO C prototype.
	* copysign.c (copysign): Likewise.

2005-03-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (CFILES): Add strndup.c and xstrndup.c.
	(REQUIRED_OFILES): Add xstrndup.o.
	(CONFIGURED_OFILES): Add strndup.o.
	Regenerate dependencies.

	* configure.ac (funcs, AC_CHECK_FUNCS): Add strndup.

	* strndup.c, xstrndup.c: New.

	* config.in, configure, functions.texi: Regenerate.

2005-03-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* xmemdup.c, xstrdup.c: Expose the tail call.

2005-03-09  Mark Mitchell  <mark@codesourcery.com>

	* configure.ac (funcs): Add gettimeofday.
	* configure: Regenerated.
	* gettimeofday.c: New file.
	* Makefile.in (CFILES): Add gettimeofday.
	(CONFIGURED_OFILES): Add gettimeofday.o.
	(./gettimeofday.o): New rule.

2005-03-09  Ian Lance Taylor  <ian@airs.com>

	* pex-os2.c: Remove.
	* configure.ac: Remove *-*-os2-emx* case when setting pexecute.
	* Makefile.in (CFILES): Remove pex-os2.c.
	(CONFIGURED_OFILES): Remove pex-os2.o.
	(pex-os2.o): Remove target.
	* configure: Rebuild.

2005-03-07  Ian Lance Taylor  <ian@airs.com>

	* mpw-config.in: Remove.
	* mpw-make.sed: Remove.
	* mpw.c: Remove.
	* Makefile.in (CFILES): Remove pex-mpw.c.
	(CONFIGURED_OFILES): Remove pex-mpw.o.
	(mpw.o, pex-mpw.o): Remove targets.
	* maint-tool (undoc): Remove reference to mpw.c.

2005-03-06  DJ Delorie  <dj@redhat.com>

	* configure.ac (target_header_dir): vfork is a stub under djgpp.
	* configure: Regenerated.

2005-03-01  Jan Beulich  <jbeulich@novell.com>

	* Makefile.in (CFILES): Add unlink-if-ordinary.c
	(REQUIRED_OFILES): Add unlink-if-ordinary.o.
	Add dependencies and rule for unlink-if-ordinary.o.
	* unlink-if-ordinary.c: New.

2005-03-01  Ben Elliston  <bje@au.ibm.com>

	* hashtab.c (htab_find_slot_with_hash): Make function
	documentation clearer.

2005-02-13  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (__cxa_demangle): Change resolution of ambiguous
	arguments.

2005-01-11  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>

	* hex.c (hex_value): Group 'unsigned int' together to get correct
	markup.
	* functions.texi: Regenerated.

2004-12-27  H.J. Lu  <hongjiu.lu@intel.com>

	* Makefile.in: Undo to 2004-12-17.
	* aclocal.m4: Likewise.
	* config.table: Likewise.
	* configure.ac: Likewise.
	* maint-tool: Likewise.
	* configure: Likewise.

2004-12-19  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/19072
	* Makefile.in (enable_shared): New substitute.
	(LTTARGETLIB): New.
	(PREFIXTARGETLIB): New.
	(LTTESTLIB): New.
	(PREFIXTESTLIB): New.
	(CCLD): New.
	(LINK): New.
	($(TARGETLIB)): Use $(LINK) to create libraries and create
	targets by hand.
	($(TESTLIB)): Likewise.
	(mostlyclean): Don't remove .libs. Remove the libtool object
	directory.

	* config.table (enable_shared): Removed.

	* configure.ac (enable_static): Set to yes.
	(AC_PROG_LIBTOOL): Removed.
	(AM_DISABLE_SHARED): Uncommented.
	(AM_PROG_LIBTOOL): Likewise.
	(LIBOBJS): Add `./' to avoid VPATH.
	(LTLIBOBJS): Likewise.
	(enable_shared): Substitute.
	* configure: Regenerated.

2004-12-18  H.J. Lu  <hongjiu.lu@intel.com>

	* Makefile.in (top_builddir): Set to `.'.
	(OUTPUT_OPTION): Removed.
	(LIBTOOL): New.
	(LTLIBOBJS): New.
	(EXTRA_LTOFILES): New.
	(FLAGS_TO_PASS): Add EXTRA_LTOFILES.
	(all): Remove stamp-picdir.
	(LTCOMPILE): New.
	(.c.lo): New rule.
	(REQUIRED_LTOFILES): New.
	(CONFIGURED_LTOFILES): New.
	($(TARGETLIB)): Check .libs for PIC object files. Depend on
	$(REQUIRED_LTOFILES) $(EXTRA_LTOFILES) $(LTLIBOBJS).
	(stamp-picdir): Completely removed.
	(maint-missing): Pass $(REQUIRED_LTOFILES)
	$(CONFIGURED_LTOFILES) instead of (REQUIRED_OFILES)
	$(CONFIGURED_OFILES)
	(maint-buildall): Depend on $(REQUIRED_LTOFILES)
	$(CONFIGURED_LTOFILES).
	(mostlyclean): Also remove *.lo .libs.
	Run "make maint-deps".

	* aclocal.m4: Include ../libtool.m4.

	* config.table: Don't check --enable-shared.

	* configure.ac (AC_PROG_LIBTOOL): Add.
	(AC_PROG_CC_C_O): Removed.
	(OUTPUT_OPTION): Removed.
	(NO_MINUS_C_MINUS_O): Removed.
	(ltpexecute): New substitute.
	(LIBOBJS): Cleanup.
	* configure: Regenerated.

	* maint-tool: Updated for .lo/libtool.

2004-12-11  Ben Elliston  <bje@au.ibm.com>

	* configure.ac: Invoke AC_CHECK_SIZEOF for sizeof (int).
	* configure: Regenerate.
	* config.in: Likewise.

2004-12-07  DJ Delorie  <dj@redhat.com>

	* splay-tree.c (splay_tree_delete_helper): Redesign the logic so
	that recursion (and thus large stack space) is not needed.

2004-11-29  Matt Kraai  <kraai@alumni.cmu.edu>

	* pex-unix.c: Fix the spelling of longjmp.

2004-11-23  Ian Lance Taylor  <ian@wasabisystems.com>

	PR other/18623
	* cp-demangle.c (d_call_offset): Remove useless local variables
	offset and virtual_offset.
	* cplus-dem.c (ada_demangle): Remove useless local variable
	at_start_name.
	(demangle_template): Remove useless local variable start.

2004-11-19  Roger Sayle  <roger@eyesopen.com>

	* objalloc.c, strsignal.c, xstrerror.c: Include "config.h" before
	"ansidecl.h" to avoid redeclaration errors with native compilers.
	* regex.c: Protect config.h from multiple inclusion.

2004-11-12  Mike Stump  <mrs@apple.com>

	* Makefile.in (libiberty.html): Fix html generation.

2004-09-08  Adam Nemet  <anemet@lnxw.com>

	* vasprintf.c: Accept __va_copy in addition to va_copy.

2004-09-03  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

2004-09-02  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac: Do not enable multilibs for build-side libiberty.

2004-06-29  Danny Smith  <dannysmith@users.sourceforge.net>

	* lrealpath.c (lrealpath): Add _WIN32 support.

2004-06-28  Zack Weinberg  <zack@codesourcery.com>

	* cp-demangle.h: Declare cplus_demangle_operators,
	cplus_demangle_builtin_types, cplus_demangle_mangled_name, and
	cplus_demangle_type as static if IN_GLIBCPP_V3.

2004-06-28  Ian Lance Taylor  <ian@wasabisystems.com>

	PR other/16240
	* cp-demangle.c (d_expr_primary): Check for a failure return from
	cplus_demangle_type.
	* testsuite/demangle-expected: Add test case.

2004-05-31  Danny Smith  <dannysmith@users.sourceforge.net>

	* pex-win32.c (fix_argv): Expand comment.

2004-05-25  Daniel Jacobowitz  <drow@false.org>

	* Makefile.in: Add .NOEXPORT.

2004-04-29  Douglas B Rupp  <rupp@gnat.com>

	* mkstemps.c (mkstemps) [VMS]: Remove special open option. Update
	copyright.

2004-04-26  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* configure.ac (UNSIGNED_64BIT_TYPE): Unquote the definition.
	* configure: Regenerate.

2004-04-22  Richard Henderson  <rth@redhat.com>

	* hashtab.c: Include limits.h, stdint.h, ansidecl.h.
	(CHAR_BIT): Provide default.
	(struct prime_ent, prime_tab): New.
	(higher_prime_index): Rename from higher_prime_number, return index.
	(htab_mod_1): New.
	(htab_mod, htab_mod_m2): Use it.
	(htab_create_alloc, htab_create_alloc_ex): Store prime index.
	(htab_expand): Likewise.
	* configure.ac: Check for stdint.h.
	(UNSIGNED_64BIT_TYPE): New define and checks to fill it in.
	* config.in, configure: Rebuild.

2004-04-13  Ian Lance Taylor  <ian@wasabisystems.com>

	* strerror.c: Include config.h, and redefine sys_nerr and
	sys_errlist, before including ansidecl.h and libiberty.h.

2004-04-13  Jeff Law  <law@redhat.com>

	* hashtab.c (htab_remove_elt_with_hash): New function.
	(htab_remove_elt): Implement in terms of htab_remove_elt_with_hash.

2004-03-31  Richard Henderson  <rth@redhat.com>

	* hashtab.c (htab_size): Move to top of file; mark inline.
	(htab_elements): Likewise.
	(htab_mod, htab_mod_m2): New.
	(htab_delete): Refactor htab->size and htab->entries.
	(htab_empty): Likewise.
	(find_empty_slot_for_expand): Use htab_size, htab_mod, htab_mod_m2.
	(htab_find_with_hash, htab_find_slot_with_hash): Likewise.
	(htab_clear_slot): Use htab_size, htab_elements.
	(htab_traverse_noresize, htab_traverse): Likewise.

2004-03-17  Ian Lance Taylor  <ian@wasabisystems.com>

	* pex-unix.c (pexecute): Use vfork instead of fork, with
	appropriate changes to make this safe.
	* pex-common.h (STDERR_FILE_NO): Define.

	* Makefile.in: Clean up REQUIRED_OFILES and CONFIGURED_OFILES for
	an 80 column screen.  Run maint-deps.

2004-03-09  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.ac: Bump version to 2.59.  Apply suggested autoupdates.
	* acconfig.h: Delete redundant file.
	* config.in: Regenerate.
	* configure: Regenerate.

2004-03-09  Hans-Peter Nilsson  <hp@axis.com>

	* configure: Regenerate for config/accross.m4 correction.

2004-03-07  Andreas Jaeger  <aj@suse.de>

	* testsuite/test-demangle.c: Include <string.h> and <stdlib.h> for
	prototypes.
	(main): Initialize style.

2004-02-24  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.h (enum d_builtin_type_print): Add D_PRINT_UNSIGNED,
	D_PRINT_UNSIGNED_LONG, D_PRINT_LONG_LONG,
	D_PRINT_UNSIGNED_LONG_LONG, D_PRINT_FLOAT.
	* cp-demangle.c (cplus_demangle_builtin_types): Change char and
	short types to D_PRINT_DEFAULT.  Change other integer types to use
	new D_PRINT_* values where appropriate.  Change float types to
	D_PRINT_FLOAT.
	(d_print_comp) [LITERAL, LITERAL_NEG]: Handle new D_PRINT_*
	values.
	* testsuite/demangle-expected: Adjust two test cases.

	* cp-demangle.c (d_print_function_type): Print a space before the
	parenthesis around the function type in more cases.
	* testsuite/demangle-expected: Adjust one test case.

	* cp-demangle.c (d_print_comp) [UNARY]: Don't emit extra
	parentheses around a cast.
	* testsuite/demangle-expected: Adjust two test cases to match new
	output.

	* cp-demangle.c (__cxa_demangle): Pass DMGL_PARAMS to d_demangle.

	* cp-demangle.c (d_print_comp) [RESTRICT, VOLATILE, CONST]: Don't
	push more than one of the same CV-qualifier on the top of the
	stack.
	(d_print_comp) [ARRAY_TYPE]: If the array itself is CV-qualified,
	move the CV-qualifiers to apply to the element type instead.
	(d_print_array_type): When checking the modifiers, keep looking
	past ones which have been printed already.
	* testsuite/demangle-expected: Add three test cases.

2004-02-23  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (__cxa_demangle): Adjust last patch to handle
	empty string correctly.

	* cp-demangle.c (__cxa_demangle): It is not an error if status is
	not NULL.  It is an error if the mangled name is the same as a
	built-in type name.
	(main): If IN_GLIBCPP_V3 is defined, test __cxa_demangle rather
	than cplus_demangle_v3.

	* dyn-string.c: Remove test of IN_LIBGCC2 and IN_GLIBCPP_V3 and
	the associated #define of RETURN_ON_ALLOCATION_FAILURE.

2004-02-16  Matt Kraai  <kraai@alumni.cmu.edu>

	* regex.c: Include <ansidecl.h>.
	(regcomp): Cast i to int.
	(regerror): Add ATTRIBUTE_UNUSED to parameter preg.

2004-01-25  Ian Lance Taylor  <ian@wasabisystems.com>

	* configure.ac: Add m4_pattern_allow(LIBOBJS).
	* configure: Regenerate.

2004-01-22  DJ Delorie  <dj@redhat.com>

	* Makefile.in: Convert to ./ throughout.  Rebuild dependencies
	with explicit build rules.
	(VPATH): Remove.
	(.c.o): Poison.
	* configure.ac (pexecute, LIBOBJS): Add ./ .
	* maint-tool: Build dependencies with explicit rules.

2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>

	* strdup.c (strdup): Constify the argument.

2004-01-14  Loren J. Rittle  <ljrittle@acm.org>

	* Makefile.in (distclean): Remove config.cache.

2004-01-13  Daniel Jacobowitz  <drow@mvista.com>

	* cp-demangle.c (d_make_comp): DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE
	takes two parameters.
	* cp-demint.c (cplus_demangle_fill_component): Likewise.

2004-01-12  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c: Include "cp-demangle.h".  If IN_GLIBCPP_V3 is
	defined, rename some functions which are to become static via
	#define.
	(CP_STATIC_IF_GLIBCPP_V3): Define.
	(struct d_operator_info): Move definition to cp-demangle.h, and
	rename to demangle_operator_info.  Change all uses.
	(enum d_builtin_type_print): Move definition to cp-demangle.h.
	(struct d_builtin_type_info): Move definition to cp-demangle.h,
	and rename to demangle_builtin_type_info.  Change all uses.
	(enum d_comp_type): Move definition to include/demangle.h, and
	rename to demangle_component_type, and change all enums to start
	with DEMANGLE_COMPONENT_ instead of D_.  Change all uses.
	(struct d_comp): Move definition to include/demangle.h, and rename
	to demangle_component.  Change all uses.
	(struct d_info): Move definition to cp-demangle.h.
	(cplus_demangle_fill_name): New function.
	(cplus_demangle_fill_extended_operator): New function.
	(cplus_demangle_fill_ctor): New function.
	(cplus_demangle_fill_dtor): New function.
	(d_make_empty): Remove type parameter.  Change all callers.
	(d_make_name): Use cplus_demangle_fill_name.
	(d_make_extended_operator): Use
	cplus_demangle_fill_extended_operator.
	(d_make_ctor): Use cplus_demangle_fill_ctor.
	(d_make_dtor): Use cplus_demangle_fill_dtor.
	(cplus_demangle_mangled_name): Rename from d_mangled_name.  Make
	non-static by default.  Change all callers.
	(cplus_demangle_operators): Rename from d_operators.  Change all
	uses.  Make non-static by default.  Add sentinel at end of array.
	(d_operator_name): Adjust initialization of high for new sentinel
	in cplus_demangle_operators.
	(cplus_demangle_builtin_types): Rename from d_builtin_types.
	Change all uses.  Make non-static by default.  Change initializer
	to use D_BUILTIN_TYPE_COUNT instead of magic number 26.
	(cplus_demangle_type): Rename from d_type.  Make non-static by
	default.  Change all callers.
	(cplus_demangle_init_info): Rename from d_init_info.  Make
	non-static by default.  Change all callers.
	* cp-demangle.h: New file.
	* cp-demint.c: New file.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add cp-demint.c.
	(REQUIRED_OFILES): Add cp-demint.o.

2004-01-09  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.in:  Rename file to ...
	* configure.ac:  ... this.
	* Makefile.in: Update a comment for above change.
	* README: Likewise.
	* config.in: Regenerate.

2004-01-02  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (d_encoding): When DMGL_PARAMS is not set, strip
	CV-qualifiers from D_COMP_LOCAL_NAME right subtree.
	* cplus-dem.c (demangle_arm_hp_template): Set DMGL_PARAMS when
	demangling template parameters.
	* testsuite/test-demangle.c (fail): New static function.
	(main): Support new options in input file: --no-params,
	--is-v3-ctor, and --is-v3-dtor.
	* testsuite/demangle-expected: Add --no-params to most tests, and
	add the correct result when parameters are not demangled.  Add
	some simple tests for V3 constructor/destructor recognition.

2003-12-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cp-demangle.c (is_ctor_or_dtor): Fix error in last change.

2003-12-22  Daniel Jacobowitz  <drow@mvista.com>

	PR debug/13272
	* Makefile.in (lbasename.o): Depend on filenames.h.
	* lbasename.c: Include "filenames.h" instead of defining
	its macros locally.

2003-12-22  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (CP_DYNAMIC_ARRAYS): Define if compiler supports
	dynamic arrays.
	(struct d_operator_info): Add len field.
	(struct d_builtin_type_info): Add len and java_len fields.
	(struct d_standard_sub_info): Add simple_len, full_len, and
	set_last_name_len fields.
	(struct d_comp): Add len field to s_string.
	(struct d_info): Add send, did_subs, and expansion fields.
	(d_append_string_constant): Define.
	(d_append_string): Remove.  Change all users to use
	d_append_string_constant or d_append_buffer instead.
	(d_make_sub): Add len parameter.  Change all callers.
	(d_name): Increase expansion when substituting std::.
	(d_unqualified_name): Increase expansion for an operator.
	(d_number): Don't use multiplication for negative numbers.
	(d_identifier): Make sure there are enough characters in the
	string for the specified length.  Adjust expansion for an
	anonymous namespace.
	(d_operators): Initialize len field.
	(d_special_name, d_ctor_dtor_name): Increase expansion.
	(d_builtin_types): Initialize len and java_len fields.
	(d_type): Increase expansion for a builtin type.
	(d_cv_qualifiers): Increase expansion for each qualifier.
	(d_bare_function_type): Decrease expansion when removing single
	void parameter.
	(d_template_param): Increment did_subs.
	(d_expression): Increase expansion for an operator.
	(d_expr_primary): Decrease expansion for a type we will print
	specially.
	(standard_subs): Initialize new fields.
	(d_substitution): Increment did_subs when doing a normal
	substitution.  Increase expansion for a special substitution.
	(d_print): Add estimate parameter.  Change all callers.
	(d_print_comp) [D_COMP_NAME]: Handle C++ case inline.
	(d_print_comp) [D_COMP_BINARY]: Use length to avoid strcmp call.
	(d_print_java_identifier): Rename from d_print_identifier.  Handle
	only Java case.  Change caller.
	(d_init_info): Change return type to void.  Change all callers.
	Initialize send, did_subs, and expansion fields.  Do not
	initialize comps and subs fields.
	(d_demangle): Ifdef CP_DYNAMIC_ARRAYS, allocate comps and subs
	arrays on stack.  Make an estimate of the length of the demangled
	name.  Ifdef CP_DEMANGLE_DEBUG, print estimation failures.
	(is_ctor_or_dtor): Ifdef CP_DYNAMIC_ARRAYS, allocate comps and
	subs arrays on stack.

2003-12-20  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (d_identifier): In Java mode, skip an optional '$'
	after the identifier.
	* testsuite/demangle-expected: Add test case.

2003-12-19  Ian Lance Taylor  <ian@wasabisystems.com>

	Fix for PR c++/13447:
	* cp-demangle.c (enum d_comp_type): Add D_COMP_LOCAL_NAME.
	(d_dump, d_make_comp): Handle D_COMP_LOCAL_NAME.
	(is_ctor_dtor_or_conversion): Handle D_COMP_LOCAL_NAME like
	D_COMP_QUAL_NAME.
	(is_ctor_or_dtor): Likewise.
	(d_local_name): Use D_COMP_LOCAL_NAME rather than
	D_COMP_QUAL_NAME.
	(d_print_comp) [D_COMP_LOCAL_NAME]: New.
	(d_prinT_comp) [D_COMP_TYPED_NAME]: If the left tree is
	D_COMP_LOCAL_NAME, pull any qualifiers off its right subtree.
	(d_print_mod_list): Handle D_COMP_LOCAL_NAME.
	* testsuite/demangle-expected: Add two test cases.

	* cp-demangle.c (d_print_function_type): Clear the global modifier
	list when printing the modifiers, not just when printing the
	function parameters.
	* testsuite/demangle-expected: Add two test cases.

2003-12-15  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (d_print_function_type): Print the function
	parameters with no modifiers.
	* testsuite/demangle-expected: Add test case.

	* cp-demangle.c (d_demangle): If DMGL_PARAMS is not set, don't
	expect that we've read the entire string.
	(is_ctor_or_dtor): Don't expect that we've read the entire
	string--reverse patch of 2003-11-29.

2003-12-15  Brendan Kehoe  <brendan@zen.org>

	* Makefile.in (floatformat.o): Add dependency on
	config.h to accompany change of 2003-12-03.

2003-12-15  Ian Lance Taylor  <ian@wasabisystems.com>

	Fix handling of constructor/destructor of standard substitution:
	* cp-demangle.c (struct d_standard_sub_info): Define.
	(d_substitution): Add prefix argument.  Change all callers.
	Rework handling of standard substitutions to print full name when
	qualifying a constructor/destructor, or when DMGL_VERBOSE is set.
	* testsuite/demangle-expected: Add test case.

	Fix handling of negative literal constants:
	* cp-demangle.c (enum d_comp_type): Add D_COMP_LITERAL_NEG.
	(d_dump, d_make_comp): Handle D_COMP_LITERAL_NEG.
	(d_expr_primary): Use D_COMP_LITERAL_NEG for a negative number.
	(d_print_comp): Handle D_COMP_LITERAL_NEG.
	* testsuite/demangle-expected: Add test case.

2003-12-04  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (IS_UPPER, IS_LOWER): Define.
	(d_last_char): Define new macro.
	(d_make_name): Reject an empty name.
	(d_prefix, d_unqualified_name, d_type): Use new IS_* macros.
	(d_substitution, d_print_identifier): Likewise.
	(d_print_comp) [D_COMP_OPERATOR]: Likewise.
	(d_print_comp) [D_COMP_TEMPLATE]: Use new d_last_char macro.
	(d_print_mod) Use new d_last_char macro.
	(d_print_cast): Use new d_last_char macro.
	(is_ctor_or_dtor): Don't leak memory.

	Fix handling of member function modifiers:
	* cp-demangle.c (enum d_comp_type): Add D_COMP_RESTRICT_THIS,
	D_COMP_VOLATILE_THIS, and D_COMP_CONST_THIS.
	(d_dump): Dump new d_comp_type values.
	(d_make_comp): Accept new d_comp_type values.
	(has_return_type): Only accept _THIS variants of qualifiers.
	(d_encoding): Without DMGL_PARAMS, only remove _THIS variants of
	qualifiers.
	(d_cv_qualifiers): Add member_fn parameter.  Change all callers.
	(d_print_comp) [D_COMP_TYPED_NAME]: Rather than removing
	qualifiers and printing them at the end, add _THIS qualifiers to
	the modifier list.
	(d_print_comp) [D_COMP_*_THIS]: New cases.
	(d_print_comp) [D_COMP_PTRMEM_TYPE]: Remove special handling of
	qualifiers.
	(d_print_mod_list): Add suffix parameter.  Change all callers.
	Keep walking the list even if the current modifier has been
	printed.
	(d_print_mod): Handle new _THIS qualifiers.
	(d_print_function_type): Handle new _THIS qualifiers when deciding
	whether to print a parenthesis.  Put a space before the
	parenthesis in some cases.  Call d_print_mod_list again at the
	end, passing suffix as 1.
	(is_ctor_or_dtor): Look for new _THIS qualifiers.
	* testsuite/demangle-expected: Add test case.

	Fix for PR gcc/13304:
	* cp-demangle.c (d_print_comp) [D_COMP_TEMPLATE]: If the character
	before the '<' is itself a '<', insert a space.
	(d_print_cast): Likewise.
	* testsuite/demangle-expected: Add test case.

	Fix for PR gcc/13244:
	* cp-demangle.c (d_print_comp) [D_COMP_BINARY]: Wrap an expression
	which uses the '>' operator in an extra layer of parens.
	* testsuite/demangle-expected: Add test case.

2003-12-03  Ian Lance Taylor  <ian@wasabisystems.com>

	* floatformat.c: Include "config.h" and <string.h> if available.
	(INFINITY, NAN): Define if not defined by <math.h>.
	(floatformat_to_double): Handle NaN, infinity, and denormalized
	numbers.
	(floatformat_from_double): Likewise.
	(ieee_test): In debugging code, use little endian rather than big
	endian.  Correct tests to handle NaN and to check correct sign of
	zero.  Omit m68k extended test.
	(main): Add more debugging cases.

2003-11-29  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (d_demangle): Only return success if we consumed
	the entire demangled string.
	(is_ctor_or_dtor): Likewise.

	* testsuite/demangle-expected: Revert one part of 2003-06-26 patch
	to restore expected result of EDG test case to original expected
	result.

2003-11-26  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (struct d_print_mod): Add templates field.
	(d_make_builtin_type): Check for NULL type.
	(d_make_extended_operator): Check for NULL name.
	(d_make_ctor, d_make_dtor): Likewise.
	(d_mangled_name): Add top_level parameter.  Change all callers.
	(d_encoding): If DMGL_PARAMS is not set, strip off initial
	CV-qualifiers.
	(d_type): Check some return values we rely on.
	(d_bare_function_type, d_array_type): Likewise.
	(d_pointer_to_member_type, d_template_args): Likewise.
	(d_add_substitution): Fail if argument is NULL.
	(d_print_resize): Check whether buf is NULL.
	(d_print_comp): Save current templates list with each modifier.
	Don't pass the modifier list down when printing a template.
	(d_print_cast): Don't pass the modifier list down when printing a
	template.
	(d_print_mod_list): Temporarily set templates list while printing
	a modifier.
	(d_print_mod): Check that buf is not NULL before using it.
	(d_print_function_type): Print parens if there is no modifier.
	(d_init_info): Permit as many substitutions as there are
	characters in the mangled name.
	* testsuite/demangle-expected: Add two new test cases.

2003-11-25  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (java_demangle_v3): Pass DMGL_PARAMS to
	d_demangle.

2003-11-22  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (d_encoding): Add top_level parameter.  Change all
	callers.
	(print_usage): Display new -p option.
	(long_options): Add --no-params.
	(main): Accept and handle -p.

2003-11-21  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (has_return_type): Skip qualifiers when checking
	whether we have a template.
	* testsuite/demangle-expected: Add four new tests.

2003-11-20  Ian Lance Taylor  <ian@wasabisystems.com>

	* testsuite/demangle-expected: Minor changes to match output of
	new demangler: adjust whitespace in four tests, and change order
	of qualifiers in one test.

	* cp-demangle.c: Complete rewrite.

2003-11-19  Mark Mitchell  <mark@codesourcery.com>

	* cp-demangle.c (demangle_type): Correct thinko in substitution
	processing.

2003-11-18  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (demangle_operator_name): Remove space before
	"sizeof".
	(demangle_type_ptr): Put qualifiers in the right place.  Handle
	qualifiers in pointer to member specially.
	(demangle_type): Handle qualifiers for pointer or reference
	specially.  Handle function type.
	(demangle_local_name): Save and restore caret around demangling of
	initial encoding.

	* testsuite/test-demangle.c (main): Don't pass DMGL_VERBOSE to
	cplus_demangle.

	* testsuite/Makefile.in (test-demangle): Depend upon libiberty.a.

2003-10-31  Andreas Jaeger  <aj@suse.de>

	* floatformat.c (floatformat_always_valid): Add unused attribute.

2003-10-30  Josef Zlomek  <zlomekj@suse.cz>

	Jan Hubicka <jh@suse.cz>
	* vasprintf.c (int_vasprintf): Pass va_list by value.
	Use va_copy for copying va_list.
	(vasprintf): Pass va_list by value.

2003-10-30  Josef Zlomek  <zlomekj@suse.cz>

	* hashtab.c (htab_find_slot_with_hash): Decrease n_deleted
	instead of increasing n_elements when inserting to deleted slot.

2003-10-20  J. Brobecker  <brobecker@gnat.com>

	* cplus-dem.c (demangle_template): Register a new Btype only
	when needed.
	* testsuite/demangle-expected: Add a new test.

2003-10-16  H.J. Lu  <hongjiu.lu@intel.com>

	* testsuite/demangle-expected: Update the expected output of
	_GLOBAL__I__Z2fnv.

2003-10-02  Daniel Jacobowitz  <drow@mvista.com>

	* strerror.c: Revert last change.  Declare static sys_nerr
	and sys_errlist using different names.

2003-10-01  Daniel Jacobowitz  <drow@mvista.com>

	* strerror.c: Don't provide or reference sys_errlist if
	strerror is available.

2003-10-01  H.J. Lu  <hongjiu.lu@intel.com>

	* configure.in: Check if $MAKEINFO is missing.
	* configure: Regenerated.

2003-09-24  Daniel Jacobowitz  <drow@mvista.com>

	* configure.in: Use AC_PROG_CPP_WERROR.
	* configure: Regenerated.

2003-09-22  Andrew Cagney  <cagney@redhat.com>

	* floatformat.c (floatformat_i387_ext_is_valid): New function.
	(floatformat_always_valid): New function.
	(floatformat_i387_ext): Initialize new "is_valid" field to
	"floatformat_i387_ext_is_valid".
	(floatformat_ieee_single_little): Initialize "is_valid" field to
	floatformat_always_valid.
	(floatformat_ieee_double_big): Ditto.
	(floatformat_ieee_double_little): Ditto.
	(floatformat_ieee_double_little): Ditto.
	(floatformat_ieee_double_littlebyte_bigword): Ditto.
	(floatformat_i960_ext): Ditto.
	(floatformat_m88110_ext): Ditto.
	(floatformat_m88110_harris_ext): Ditto.
	(floatformat_arm_ext_big): Ditto.
	(floatformat_arm_ext_littlebyte_bigword): Ditto.
	(floatformat_ia64_spill_big): Ditto.
	(floatformat_ia64_spill_little): Ditto.
	(floatformat_ia64_quad_big): Ditto.
	(floatformat_ia64_quad_little): Ditto.
	(floatformat_ia64_quad_little): Ditto.
	(floatformat_is_valid): Call "is_valid".

2003-09-15  Andrew Cagney  <cagney@redhat.com>

	* floatformat.c (get_field): Make "data" constant.
	(floatformat_is_valid, floatformat_to_double): Make "from"
	constant, fix casts.
	(floatformat_from_double): Make "from" constant.

2003-09-15  Daniel Jacobowitz  <drow@mvista.com>

	* floatformat.c (floatformat_is_valid): New function.
	(get_field, put_field): Correct comments.

2003-09-06  Josef Zlomek  <zlomekj@suse.cz>

	* fibheap.c (fibheap_replace_key_data): Change type of OKEY to
	FIBHEAPKEY_T.

2003-09-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR bootstrap/12100
	* aclocal.m4 (AC_LANG_FUNC_LINK_TRY): Define.
	* configure: Rebuilt.

2003-08-27  Daniel Jacobowitz  <drow@mvista.com>

	* aclocal.m4: Include acx.m4 and no-executables.m4.
	(libiberty_AC_FUNC_STRNCMP): Use AC_LIBOBJ.
	(LIB_AC_PROG_CC): Remove.
	* configure.in: Update AC_PREREQ to 2.57.  Use GCC_NO_EXECUTABLES.
	Use AC_PROG_CC and set ac_libiberty_warn_cflags instead of using
	LIB_AC_PROG_CC.  Use AC_LIBOBJ.  Call AC_ISC_POSIX later, only if
	performing link tests.
	* configure: Regenerated.

2003-08-12  Nathanael Nerode  <neroden@gcc.gnu.org>

	* cp-demangle.c: Clarify what package(s) this is part of.

2003-07-05  Danny Smith  <dannysmith@users.sourceforge.net>

	* pex-win32.c (pexecute): Mark parameters this_pname and
	temp_base as unused. Remove unused variables retries,
	sleep_interval. Initialize org_stdin, org_stdout.
	(pwait): Mark parameter flags as unused.

2003-07-02  Danny Smith  <dannysmith@users.sourceforge.net>

	* pex-win32.c (fix_argv): Ensure that the executable pathname
	uses Win32 backslashes.
	(pexecute): Cast away constness when assigning *errmsg_arg.

2003-06-26  H.J. Lu <hongjiu.lu@intel.com>

	* testsuite/demangle-expected: Add more GNU V3 testcases.

2003-06-22  Zack Weinberg  <zack@codesourcery.com>

	* safe-ctype.c: Use HOST_CHARSET_ASCII and HOST_CHARSET_EBCDIC,
	not HC_ASCII and HC_EBCDIC.
	Add documentation in form expected by gather-docs.
	* hex.c: Use HOST_CHARSET, not hand-coded check of character set.
	* Makefile.in, functions.texi: Regenerate.

2003-06-21  Zack Weinberg  <zack@codesourcery.com>

	* safe-ctype.c: Separate out EOF==-1 check.  Use HOST_CHARSET
	for charset determination.

2003-06-19  Dara Hazeghi  <dhazeghi@yahoo.com>

	* configure.in: Add check for malloc.h needed by
	m68k for function free().
	* configure: Regenerated.
	* config.in: Add HAVE_MALLOC_H.
	* hashtab.c: include malloc.h were available for
	free().

2003-06-09  Albert Chin-A-Young  <china@thewrittenword.com>

	PR bootstrap/10974
	* physmem.c: Update comment.
	* configure.in: Modify test for _system_configuration for older
	AIX systems.

	* config.in, configure: Regenerated.

2003-06-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR other/10810
	* test-demangle.c (getline): Fix fence-post error.

2003-06-03  Nick Clifton  <nickc@redhat.com>

	* asprintf.c: Change comment to note that -1 is returned upon
	error.
	* vasprintf.c: Likewise.
	(vasprintf): Return -1 upon error.
	* functions.texi: Document changes to asprintf and vasprintf.

2003-05-19  Kelley Cook  <kelleycook@wideopenwest.com>

	* config.table: Accept i[345867]86 variant.

2003-05-15  Jim Blandy  <jimb@redhat.com>

	* hex.c (_hex_value): Make this unsigned.
	(hex_value): Update documentation for new return type.  hex_value
	now expands to an unsigned int expression, to avoid unexpected
	sign extension when we store it in a bfd_vma, which is larger than
	int on some platforms.
	* functions.texi: Regenerated.

2003-05-07  Josef Zlomek  <zlomekj@suse.cz>

	* splay-tree.c (splay_tree_predecessor): Fix comment.
	(splay_tree_successor): Fix comment.

2003-05-07  Jason Merrill  <jason@redhat.com>

	* hashtab.c (iterative_hash): New fn.
	* configure.in: Add AC_C_BIGENDIAN_CROSS.
	* aclocal.m4: Include accross.m4.
	* configure, config.in: Regenerate.

2003-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (AC_CHECK_FUNCS): Don't make multiple calls.
	* configure: Regenerate.

2003-05-03  Carlo Wood  <carlo@alinoe.com>

	* cp-demangle.c: Fix typo in "char_traints" string-literal.

2003-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* vsnprintf.c (vsnprintf): Don't pad string with extra nulls.
	(main): Test that we don't write too much data.

2003-04-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (funcs, AC_CHECK_FUNCS): Add snprintf and
	vsnprintf.
	* snprintf.c, vsnprintf.c: New files.
	* Makefile.in (CFILES): Add snprintf.c and vsnprintf.c.
	(CONFIGURED_OFILES): Add snprintf.o and vsnprintf.o.
	Regenerate dependencies.

	* functions.texi, configure, config.in: Regenerated.

2003-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mempcpy.c, stpcpy.c, stpncpy.c: New files.
	* configure.in (funcs, AC_CHECK_FUNCS): Add mempcpy, stpcpy
	and stpncpy.
	* Makefile.in (CFILES): Add mempcpy.c, stpcpy.c and stpncpy.c.
	(CONFIGURED_OFILES): Add mempcpy.o, stpcpy.o and stpncpy.o.
	Regenerate dependencies.

	* functions.texi, configure, config.in: Regenerated.

2003-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* argv.c: Fix comments.
	* calloc.c: Don't unnecessarily include "libiberty.h".
	(bzero): Add prototype.
	* floatformat.c: Include "ansidecl.h", rely on ANSI_PROTOTYPES.
	* getcwd.c (getcwd): Use standard definition to avoid conflicts
	with system headers.
	* hashtab.c (htab_traverse): Delete unused variables.
	* rename.c: Include "ansidecl.h".
	(rename): Use standard definition to avoid conflicts with system
	headers.
	* strsignal.c: Rely on ANSI_PROTOTYPES.
	* strstr.c: Check GNUC >= 2, not GNUC == 2.
	* vfprintf.c: Include "ansidecl.h", rely on ANSI_PROTOTYPES.
	* vprintf.c: Include "ansidecl.h" earlier, rely on
	ANSI_PROTOTYPES.
	* vsprintf.c: Include "ansidecl.h" earlier, rely on
	ANSI_PROTOTYPES and possibly include <stdarg.h>.

	* Makefile.in: Regenerate dependencies.

2003-04-15  DJ Delorie  <dj@redhat.com>

	* maint-tool (deps): Scan for headers in $srcdir also.

2003-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR target/10338
	PR bootstrap/10198
	PR bootstrap/10140
	* getopt.c (exchange, _getopt_initialize): Use mempcpy not
	__mempcpy.
	* regex.c (regerror): Likewise.

2003-04-14  Roger Sayle  <roger@eyesopen.com>

	* argv.c: Use ANSI_PROTOTYPES instead of __STDC__.
	* memchr.c: Likewise.
	* strcasecmp.c: Likewise.
	* strncasecmp.c: Likewise.
	* strncmp.c: Likewise.
	* xatexit.c: Likewise.
	* xmalloc.c: Likewise.

	* copysign.c: Use traditional function declaration instead of DEFUN.
	* sigsetmask.c: Likewise.

	* memcmp.c: Both of the above, ANSI_PROTOTYPES and DEFUN.
	* memset.c: Likewise.

	* memcpy.c: ANSI_PROTOTYPES, DEFUN and prototype bcopy.
	* memmove.c: Likewise.

2003-04-14  Roger Sayle  <roger@eyesopen.com>

	* strdup.c (strdup): Tweak implementation to use memcpy.

2003-04-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (HAVE_UINTPTR_T): Always define.
	* configure: Regenerated.

2003-03-23  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (MULTIOSDIR): New macro.  Use $(CC) $(LIBCFLAGS)
	instead of $$CC alone.
	(install_to_tooldir): Use it.

2003-17-03  Jan Hubicka  <jh@suse.cz>

	* hashtab.c (htab_traverse_noresize): Break out from ...
	* hashtab.c (htab_traverse): ... here.

2003-12-03  Jan Hubicka  <jh@suse.cz>

	* hashtab.c (htab_expand): Fix warning.

	* hashtab.c (htab_expand): Compute the size of hashtable based
	on the number of elements actually used.
	(htab_traverse):  Call htab_expand when table is too empty.

2003-03-11  Carlo Wood  <carlo@gnu.org>

	* cplus-dem.c (demangle_integral_value): Correction to reflect
	patch of 2002-01-10 in order to also make negative multi-digits
	without leading underscore work.

2003-03-03  Mark Mitchell  <mark@codesourcery.com>

	* cplus-dem.c: Add license exception to copyright notice.

2003-02-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* physmem.c: Formatting changes from upstream.

2003-02-24  Danny Smith  <dannysmith@users.source.forge.net>

	* physmem.c (physmem_total): Add _WIN32 support.
	(physmem_available): Likewise.

2003-02-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* physmem.c (physmem_total) [HAVE_GETSYSINFO]: Test for
	GSI_PHYSMEM.
	(physmem_available) [HAVE_TABLE]: Test for TBL_VMSTATS.

2003-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Check for sys/systemcfg.h and
	_system_configuration.
	* physmem.c: Add support for AIX.  Tweek formatting as per
	upstream coreutils beta.

2003-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
	    Richard Earnshaw  <rearnsha@arm.com>
	    Geoffrey Keating  <geoffk@apple.com>

	* configure.in: Check for sys/sysctl.h and sysctl.
	* physmem.c: Add support for *bsd and darwin.
	* Makefile.in: Generate depedency for physmem.o.

2003-02-21  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* physmem.c (physmem_total) [HAVE_GETSYSINFO]: Use getsysinfo on
	Tru64 UNIX.
	(physmem_available) [HAVE_TABLE && HAVE_SYS_TABLE_H]: Use table on
	Tru64 UNIX.

	* configure.in (AC_CHECK_HEADERS): Check for sys/sysinfo.h,
	machine/hal_sysinfo.h, sys/table.h.
	(checkfuncs, AC_CHECKFUNCS): Check for getsysinfo, table.
	* configure, config.in: Regenerate.

2003-02-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Check for sys/sysmp.h and sysmp.
	* physmem.c: Pull upstream copy, add support for irix6.

	* config.in, configure: Regenerated.

2003-02-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* physmem.c (physmem_total, physmem_available): De-ANSI-fy.
	* configure.in (AC_CHECK_FUNCS): Add pstat_getstatic and
	pstat_getdynamic.

2003-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (CFILES): Add physmem.c.
	(REQUIRED_OFILES): Add physmem.o.
	* configure.in: Check for sys/pstat.h.
	(checkfuncs): Add pstat_getstatic and pstat_getdynamic.
	* physmem.c: New file, copied from textutils.

	* config.in, configure: Regenerated.

2003-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (CFILES): Add lrealpath.c.
	(REQUIRED_OFILES): Add lrealpath.o.
	(lrealpath.o): Add rule.
	* aclocal.m4 (libiberty_NEED_DECLARATION): Add.
	* configure.in: Add realpath and canonicalize_file_name to
	checkfuncs and AC_CHECK_FUNCS.  Use libiberty_NEED_DECLARATION
	for canonicalize_file_name.
	* lrealpath.c: New file.
	* make-relative-prefix.c: Update documentation.
	(make_relative_prefix): Simplify.  Use lbasename and lrealpath.
	* config.in: Regenerated.
	* configure: Regenerated.
	* functions.texi: Regenerated.

2003-02-20  jmc  <jmc@prioris.mini.pw.edu.pl>

	* cplus_dem.c: Fix typo: intializes -> initializes.

2003-02-20  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to
	config.status.
	* configure: Rebuilt.

2003-02-13  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR c++/7612.
	* cplus-dem.c (demangle_signature): Call string_delete.
	Remove extra string_init.
	(demangle_arm_hp_template): Call string_delete instead of
	string_clear.  Add missing string_delete call.
	(demangle_qualified): Add missing string_delete call.
	(do_type): Remove unused variable btype.  Add missing string_delete
	call.  Call string_delete instead of string_clear.
	(demangle_fund_type): Move variable btype inside of the switch
	statement.  Add missing string_delete call.
	(do_arg): Call string_delete instead of string_clear.  Remove extra
	string_init.
	(demangle_nested_args): Free work->previous_argument.

2003-02-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* acconfig.h: New file.  Add uintptr_t.
	* config.in: Regenerated.

2003-02-04  Joseph S. Myers  <jsm@polyomino.org.uk>

	* libiberty.texi: Update to GFDL 1.2.

2003-01-30  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* Makefile.in (libiberty_topdir): New subst.
	(mkinstalldirs): Redefine in terms of the above.
	* configure.in: AC_SUBST it.
	* configure: Regenerate.

2003-01-28  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* Makefile.in (all-subdir, check-subdir, installcheck-subdir)
	(info-subdir, install-info-subdir, clean-info-subdir)
	(dvi-subdir, install-subdir, etags-subdir, mostlyclean-subdir)
	(clean-subdir, distclean-subdir, maintainer-clean-subdir):
	Pass $(FLAGS_TO_PASS).

2003-01-27  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (install_to_tooldir): Instead of $(MULTISUBDIR), use
	/`$$CC -print-multi-os-directory`.

2003-01-26  Daniel Jacobowitz  <drow@mvista.com>

	* hashtab.c (htab_create_alloc_ex): New function.
	(hatab_set_functions_ex): New function.
	(htab_delete, htab_expand): Support alternate allocation functions.

2003-01-24  Christopher Faylor  <cgf@redhat.com>

	* configure.in: Remove special pex-cygwin consideration.
	* configure: Regenerate.
	* pex-cygwin.c: Remove.
	* Makefile.in: Remove pex-cygwin.[co] lines.

2003-01-24  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (CFILES): Add pex-*.c.
	(REQUIRED_OFILES): Change pexecute.o to @pexecute@
	(CONFIGURED_OFILES): Add pex-*.o.
	(TEXIFILES): Add pexecute.txh.
	(pexecute.o): Delete rule.
	(pex-cygwin.o, pex-djgpp.o, pex-mpw.o, pex-msdos.o, pex-os2.o,
	pex-unix.o, pex-win32.o): New rules.
	* configure.in: Change AC_INIT argument to xmalloc.c.
	Compute appropriate pexecute implementation and substitute it
	as @pexecute@.

	* pexecute.c: Split up into...
	* pex-cygwin.c, pex-djgpp.c, pex-mpw.c, pex-msdos.c, pex-os2.c,
	pex-unix.c, pex-win32.c, pex-common.h, pexecute.txh: ... these
	new files.

	* functions.texi: Regenerate.
	* configure: Regenerate.

2003-01-20  Josef Zlomek  <zlomekj@suse.cz>

	* hashtab.c (htab_expand): Fix allocation of new entries.

2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* Makefile.in (FLAGS_TO_PASS): Also pass DESTDIR.

	* Makefile.in (install_to_libdir, install_to_tooldir): Add a
	mkinstalldirs command.

2002-12-04  Danny Smith  <dannysmith@users.sourceforge.net>

	* make-relative-prefix.c (HAVE_HOST_EXECUTABLE_SUFFIX):
	Define for hosts with HOST_EXECUTABLE_SUFFIX.

2002-11-24  Nick Clifton  <nickc@redhat.com>

	* make-relative-prefix.c (make_relative_prefix): Ensure return
	string is empty before using strcat to construct it.

2002-11-22  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in: Add make-relative-prefix.c.
	* make-relative-prefix.c: New file.
	* functions.texi: Rebuilt.

2002-11-16  Jakub Jelinek  <jakub@redhat.com>

	* md5.c (md5_process_block): Avoid `function-like macro "F{G,H,I}" must be
	used with arguments in traditional C' warnings.

2002-10-16  Jakub Jelinek  <jakub@redhat.com>

	* config.table: Use mh-s390pic for s390x too.

2002-10-06  Andreas Jaeger  <aj@suse.de>

	* cplus-dem.c (ada_demangle): Get rid of unneeded
	variable and of strict-aliasing warning.
	(grow_vect): Use char as first parameter.

2002-09-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (all): Fix multilib parallel build.

2002-09-19  John David Anglin  <dave@hiuly1.hia.nrc.ca>

	* cp-demangle.c (demangling_new): Cast 0 to enum.
	(demangle_char): Cast return of strdup to char *.
	(is_gnu_v3_mangled_ctor): Cast 0 to enum.
	(is_gnu_v3_mangled_dtor): Likewise.
	* cplus-dem.c (grow_vect): Cast return of xrealloc to void *.
	(work_stuff_copy_to_from): Cast return of xmalloc to char **.
	* fibheap.c (fibnode_new): Cast return of xcalloc to fibnode_t.
	* md5.c (md5_process_bytes): Cast results back to const void *.
	(md5_process_block): Add cast to const md5_uint32 *.
	* regex.c (re_compile_fastmap): Cast enum to UCHAR_T.
	* safe-ctype.c (L, XL, U, XU, D, P, _, C, Z, M, V, T, S): Add cast to
	unsigned short.
	* splay-tree.c (splay_tree_xmalloc_allocate): Cast return of xmalloc
	to void *.
	* vasprintf.c (int_vasprintf): Cast return of malloc to char *.

2002-09-19  Nick Clifton  <nickc@redhat.com>

	* README: Update email addresses for bugs and patches.

2002-09-10  Mike Stump  <mrs@apple.com>

	* splay-tree.c (splay_tree_successor): Fix comments.

2002-09-11  Zack Weinberg  <zack@codesourcery.com>

	* cplus-dem.c: Code under #ifdef MAIN moved to gcc/cp/cxxfilt.c.
	* testsuite/Makefile.in: Adjust for test-demangle.
	* testsuite/regress-demangle: Deleted.
	* testsuite/test-demangle.c: New file.
	* testsuite/demangle-expected: Change \$ to $ throughout, now that
	this file is not being read by a shell script.

2002-09-05  Roger Sayle  <roger@eyesopen.com>

	* regex.c: Only use "#pragma alloca" on AIX when not using gcc.

2002-08-07  DJ Delorie  <dj@redhat.com>

	* regex.c (re_error_msgid): Just use a simple array of strings.
	(re_compile_pattern): Compensate.
	(re_comp): Likewise.
	(re_comp): Likewise.
	(regerror): Likewise.

2002-07-29  Neil Booth  <neil@daikokuya.co.uk>

	* cplus-dem.c (PREPEND_BLANK): Remove.

2002-07-10  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (demangle_identifier): Support extended Unicode
	characters.

2002-07-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cp-demangle.c (demangle_v3_with_details): Wrap in
	!defined IN_GLIBCPP_V3.

2002-07-01  Mark Mitchell  <mark@codesourcery.com>

	* cp-demangle.c (demangle_operator_name): Add type_arg parameter.
	Set it for the "st" operator.
	(demangle_expression): Handle expressions with types as arguments.

2002-06-30  Douglas Rupp  <rupp@gnat.com>

	* configure.in (OUTPUT_OPTION,NO_MINUS_C_MINUS_O): Configure.
	* Makefile.in (OUTPUT_OPTION): Use.

2002-06-22  Peter Breitenlohner <peb@mppmu.mpg.de>

	* Makefile.in (install_to_libdir): Add $(DESTDIR).
	(install_to_tooldir): Likewise.

2002-06-17  Douglas Rupp  <rupp@gnat.com>

	* lbasename.c: Add 2002 to copyright.
	(IS_DIR_SEPARATOR): Remove VMS junk.

2002-06-05  Geoffrey Keating  <geoffk@redhat.com>

	* hashtab.c (htab_create): New stub function for backward
	compatibility.
	(htab_try_create): Likewise.

2002-06-03  Geoffrey Keating  <geoffk@redhat.com>

	* hashtab.c (htab_create): Delete.
	(htab_try_create): Delete.
	(htab_create_alloc): New.
	(htab_delete): Support user-specified memory allocation.
	(htab_expand): Likewise.

2002-05-22  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* configure.in: Fix typo in the code checking for sys_errlist.
	* configure: Regenerated.

2002-05-13  Andreas Schwab  <schwab@suse.de>

	* config.table: Use mh-x86pic also for x86-64.

2002-05-08  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at
	script entry, and set LD to it when configuring multilibs.
	* configure: Rebuilt.

2002-05-07  Mark Mitchell  <mark@codesourcery.com>

	* configure.in (AC_TYPE_PID_T): Use it.
	* configure: Regenerated.
	* getruntime.c: Include <sys/types.h>.
	* waitpid.c: Likewise.  Use pid_t, not int, as the type of "pid".

2002-04-09  Richard Henderson  <rth@redhat.com>

	* hashtab.c (higher_prime_number): Use 7 as minimum.
	(find_empty_slot_for_expand): Don't compute hash2 unless needed.
	(htab_find_slot_with_hash): Likewise.

2002-04-01  Phil Edwards  <pme@gcc.gnu.org>

	* cp-demangle.c (__cxa_demangle):  Also protect with IN_GLIBCPP_V3.
	(is_gnu_v3_mangled_ctor, is_gnu_v3_mangled_ctor):  Conditionally
	not compile if IN_GLIBCPP_V3 defined.
	* dyn-string.c:  Also allow IN_GLIBCPP_V3 to change allocation scheme.

2002-03-30  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* cp-demangle.c (java_demangle_v3): Don't try to release "demangled"
	if it is NULL.

2002-03-27  DJ Delorie  <dj@redhat.com>

	* hex.c: Add documentation.
	(_hex_value): Provide non-ASCII empty table.
	(hex_init): Initialize the non-ASCII table.
	* functions.texi: Regenerate.

2002-03-27  Mark Mitchell  <mark@codesourcery.com>

	* dyn-string.c: Add libgcc exception to copyright notice.

2002-03-26  H.J. Lu  (hjl@gnu.org)

	* config.table: Support --with-build-subdir.
	* configure.in: Likewise.
	* configure: Rebuild.

2002-03-18  Stuart Griffith  <Stuart_Griffith@credence.com>

	* strtod.c (strtod): Increment 8 chars, not 7, when `infinity'
	seen.

2002-03-12  Mark Mitchell  <mark@codesourcery.com>

	* cp-demangle.c: Add libgcc exception to cp-demangle.c copyright
	notice.

2002-03-11  Douglas B Rupp  <rupp@gnat.com>

	* xatexit.c [VMS]: Include stdlib.h and unixlib.h.

2002-03-06  Jim Blandy  <jimb@redhat.com>

	* splay-tree.c (splay_tree_xmalloc_allocate,
	splay_tree_xmalloc_deallocate): Use K&R-style definitions, not
	prototyped definitions.  Mark `data' arguments as unused.

2002-03-06  Andrew Cagney  <ac131313@redhat.com>

	* floatformat.c (floatformat_arm_ext_big): Delete definition.

2002-03-04  Phil Edwards  <pme@gcc.gnu.org>

	* configure.in:  Add --enable-install-libiberty option.
	* Makefile.in (INSTALLED_HEADERS):  New variable.
	(install_to_libdir):  Possibly also copy headers.
	* configure:  Regenerated.

2002-03-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* xmalloc.c (xmalloc_fail): Clarify error message further.

2002-03-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* xmalloc.c (xmalloc_fail): Clarify error message.

2002-02-22  Jim Blandy  <jimb@redhat.com>

	* splay-tree.c (splay_tree_xmalloc_allocate,
	splay_tree_xmalloc_deallocate): New functions.
	(splay_tree_new): Call splay_tree_new_with_allocator, passing the
	above functions and a dummy data pointer.
	(splay_tree_new_with_allocator): New function.
	(splay_tree_delete_helper, splay_tree_delete, splay_tree_insert,
	splay_tree_remove): Use the splay tree's allocation and
	deallocation functions.

2002-02-19  Scott Snyder  <snyder@fnal.gov>

	* testsuite/demangle-expected: Add test case for infinite loop in
	demangler.
	* cplus-dem.c (demangle_arm_hp_template): Stop trying to demangle
	if do_type() doesn't make any progress --- prevents an infinite
	loop.

2002-02-18  Carlo Wood  <carlo@gnu.org>

	PR c++/5390
	* cplus-dem.c (demangle_integral_value): Accept multi-digit
	numbers that do not start with an underscore; This is needed
	for integer template parameters. This doesn't break anything
	because multi-digit numbers are never followed by a digit.
	* testsuite/demangle-expected: Corrected all mangled test
	cases with multi-digit template parameters: g++ 2.95.x does
	not generate underscores around these parameters.

2002-02-05  Jason Merrill  <jason@redhat.com>

	* cplus-dem.c (flags): Add DMGL_VERBOSE
	(cplus_demangle_v3_p): Remove.
	(demangle_it): Add DMGL_TYPES to passed flags.
	* cp-demangle.c (cplus_demangle_v3_all): Remove.
	(cplus_demangle_v3_type): Remove.
	(cplus_demangle_v3): Add options parm.

2002-02-02  H.J. Lu  (hjl@gnu.org)

	* cp-demangle.c (cp_demangle_type): Do not protect with
	IN_LIBGCC2.
	(cplus_demangle_v3_all): New.
	(cplus_demangle_v3): Call cplus_demangle_v3_all.
	(cplus_demangle_v3_type): Call cplus_demangle_v3_all.

	* cplus-dem.c (cplus_demangle_v3_p): New function pointer.
	Initialized to cplus_demangle_v3.
	(cplus_demangle_with_style): Call cplus_demangle_v3_p instead
	of cplus_demangle_v3.
	(main): Set cplus_demangle_v3_p to cplus_demangle_v3_type for
	command line symbol.

	* testsuite/regress-demangle: Pass the mangled name at the
	command line.

2002-02-01  H.J. Lu  <hjl@gnu.org>

	* cp-demangle.c (cp_demangle_type): Call demangling_new with
	DMGL_GNU_V3.

2002-01-31  Phil Edwards  <pme@gcc.gnu.org>

	* cp-demangle.c:  Revert yesterday's change.

2002-01-31  Adam Megacz  <adam@xwt.org>

	* configure.in: Treat mingw the same as cywin
	wrt HAVE_SYS_ERRLIST.

2002-01-30  Phil Edwards  <pme@gcc.gnu.org>

	* cp-demangle.c (cp_demangle_type):  Do not protect with IN_LIBGCC2.
	(cplus_demangle_v3):  Mimic __cxa_demangle and fall back on
	cp_demangle_type.
	* testsuite/demangle-expected:  New gnu-v3 test.

2002-01-22  Momchil Velikov  <velco@fadata.bg>

	* configure.in (variable detection): Use arrays of unspecified
	size instead of plain integers.

2002-01-18  DJ Delorie  <dj@redhat.com>

	* Makefile.in (TESTLIB): New.  This library is for future
	testsuites.
	(CFILES, REQUIRED_OFILES, CONFIGURED_OFILES): Re-alphabetize,
	break down by letter.
	(REQUIRED_OFILES): List long-to-compile files first.
	(maint-deps): New, target for updating dependencies.
	(dependencies): Update.
	* maint-tool: Add dependency-generating option.
	* configure.in: Check for _doprnt even if we're not providing it.
	* configure: Regenerate.

	* _doprnt.c: Modifications to allow compiling on any platform.
	* copysign.c: Likewise.
	* putenv.c: Likewise.
	* setenv.c: Likewise.
	* vsprintf.c: Likewise.

2002-01-15  Douglas B Rupp  <rupp@gnat.com>

	* mkstemps.c (mkstemps): On VMS, open temp file with option
	that causes it to be deleted when closed.

2002-01-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cp-demangle.c (long_options): Const-ify.
	* cplus-dem.c (long_options): Likewise.

	* cplus-dem.c (mystrstr): Delete.  All callers changed to use
	strstr instead.

2001-12-31  Ira Ruben	<ira@apple.com>

	* aclocal.m4 (libiberty_AC_FUNC_STRNCMP): Use anon mmap as 2nd try.
	* configure: Regenerated.

2001-12-24  Douglas B. Rupp  <rupp@gnat.com>

	* configure.in (uintptr_t): Use AC_CHECK_TYPE.
	* configure: Regenerated.

2001-12-12  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR other/2719
	* cplus-dem.c (consume_count): Treat negative count as an error.
	* testsuite/demangle-expected: Added testcase.

Tue Dec 11 07:08:57 2001  Douglas B. Rupp  <rupp@gnat.com>

	* configure.in: Hardcode that vfork works on VMS host.
	* configure: Regenerated.

2001-12-06  Richard Henderson  <rth@redhat.com>

	* cplus-dem.c (libiberty_demanglers): Add no_demangling case.
	(cplus_demangle): Support no_demangling.

2001-11-27  Zack Weinberg  <zack@codesourcery.com>

	* _doprnt.c: Moved here from gcc/doprint.c.  Adjust to build
	in libiberty context.  Fix typo in leading comment.
	* configure.in: Fix various AC_DEFINEs so autoheader works.
	If any of vprintf, vsprintf, vfprintf is missing from libc,
	then AC_REPLACE_FUNCS(_doprnt).

2001-11-26  DJ Delorie  <dj@redhat.com>
	    Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (stamp-h): Depend on Makefile for proper
	serialization.
	(*-subdir): Depend on config.h for proper serialization.

2001-11-26  DJ Delorie  <dj@redhat.com>

	* configure.in: Check for alloca.h (for regex.c and putenv.c).
	* configure: Regenerate.
	* config.h: Add HAVE_ALLOCA_H.

2001-11-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* regex.c: Check defined(__STDC__) || defined(ALMOST_STDC) ||
	defined(HAVE_STRINGIZE) to determine whether ISO CPP token pasting
	is available.

Thu Nov 15 11:06:25 2001  Jeffrey A Law  (law@cygnus.com)

	* config.in (HAVE_UINTPTR_T): Provide autoconf stub.
	* configure.in (HAVE_UINTPTR_T): Test for system defining
	uintptr_t and define HAVE_UINTPTR_T appropriately.
	* regex.c (uintptr_t): Do not provide a definition if the
	system provided one.

	* regex.c (PREFIX): Provide an alternate definition for
	non-ANSI/ISO compilers.
	(ARG_PREFIX): Likewise.

2001-11-12  Jim Meyering  <meyering@lucent.com>

	* obstack.c (_): Honor the setting of ENABLE_NLS.  Otherwise,
	this code would end up calling gettext even in packages built
	with --disable-nls.
	* getopt.c (_): Likewise.
	* regex.c (_): Likewise.

2001-11-03  Alan Modra  <amodra@bigpond.net.au>

	* configure.in: Cope with missing makeinfo.
	* configure: Regenerate.

2001-10-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* hex.c (hex_init): Provide empty stub.

	* hex.c (hex_init): Delete.
	(_hex_value): Const-ify and initialize at compile-time.

2001-10-19  H.J. Lu <hjl@gnu.org>

	* Makefile.in ($(TARGETLIB)): Also generate pic/$(TARGETLIB) if
	necessary.

2001-10-17  DJ Delorie  <dj@redhat.com>

	* argv.c, asprintf.c, choose-temp.c, concat.c, cplus-dem.c,
	ffs.c, fnmatch.txh, getruntime.c, make-temp-file.c,
	mkstemps.c, pexecute.c, random.c, strsignal.c, vasprintf.c:
	Improve manual formatting.
	* functions.texi: Regenerate.

2001-10-15  DJ Delorie  <dj@redhat.com>

	* Makefile.in (TEXIFILES): Add fnmatch.txh.
	(maint-undoc): New.
	maint-tool: Add "undoc" tool.
	* alloca.c, argv.c, asprintf.c, choose-temp.c, concat.c,
	fdmatch.c, ffs.c, getruntime.c, insque.c, lbasename.c,
	make-temp-file.c, mkstemps.c, pexecute.c, random.c, spaces.c,
	strerror.s, strsignal.c, strtol.c, vasprintf.c: Add or update
	documentation.
	* fnmatch.txh: New.
	* functions.texi: Regenerate.

2001-10-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* bcmp.c, setenv.c: Use "nonzero" instead of "non-zero".
	* strtod.c: Use "ISO C" instead of "ANSI C".
	* functions.texi: Regenerate.

2001-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>

	* alloca.c, clock.c, getcwd.c, getpagesize.c, getpwd.c, index.c,
	libiberty.texi, memchr.c, putenv.c, rindex.c, strchr.c, strdup.c,
	strerror.c, strrchr.c, strstr.c, strtod.c, tmpnam.c, vfork.c,
	xatexit.c, xmalloc.c, xstrerror.c: Improve manual formatting.  Fix
	spelling.  Give names to function arguments in documentation.  Use
	(void) prototypes in documentation.
	* functions.texi: Regenerate.

2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* argv.c (buildargv, tests, main): Const-ify.
	* cp-demangle.c (operator_code): Likewise.
	* cplus-dem.c (optable, libiberty_demanglers,
	cplus_demangle_set_style, cplus_demangle_name_to_style,
	print_demangler_list): Likewise.
	* hashtab.c (higher_prime_number): Likewise.
	* strcasecmp.c (charmap): Likewise.
	* strerror.c (error_info, strerror, main): Likewise.
	* strncasecmp.c (charmap): Likewise.
	* strsignal.c (signal_info): Likewise.

2001-09-29  DJ Delorie  <dj@redhat.com>

	* configure: Regenerate.

2001-09-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* concat.c: Include stdlib.h.

2001-09-27  Eli Zaretskii  <eliz@is.elta.co.il>

	* libiberty.texi: (Top level): Add syncodeindex pg.  Add
	@dircategory and @direntry directives.  Add @finalout.
	(many nodes): Lose the next,prev,up pointers on the @nide line.
	(Using, Supplemental Functions, Replacement Functions): Fix
	markup.
	(Functions): Move around, to allow makeinfo to build the manual
	without next,prev,up pointers in thye node lines.
	(Licenses): Fix typos.

	* index.c, rindex.c, strchr.c, strerror.c, strrchr.c, strstr.c,
	strtol.c, xatexit.c, xexit.c, xmalloc.c: Fix spelling and markup.
	* functions.texi: Regenerate.

	* copying-lib.texi: Lose the next,prev,up pointers on the @node
	line.

2001-09-27  DJ Delorie  <dj@redhat.com>

	* configure.in: Don't use in-tree texinfo, because libiberty must
	be built before it.  Check for makeinfo version 4 or higher.
	* functions.texi: Regenerate.

2001-09-20  DJ Delorie  <dj@redhat.com>
	    Phil Edwards  <pedwards@disaster.jaj.com>

	* configure.in (MAKEINFO, PERL): Detect these.
	(--enable-maintainer-mode): Add.
	* configure: Regenerate.
	* Makefile.in (MAKEINFO, PERL): Define.
	(libiberty.info, libiberty.dvi, libiberty.html): New.
	(CFILES): Add bsearch.c.
	(CONFIGURED_OFILES): New, list of objects configure might add.
	(maint-missing, maint-buildall): New, for maintainers only.
	(clean, mostlyclean): Add info/dvi/html files.
	* libiberty.texi, copying-lib.texi, obstacks.texi, functions.texi: New.
	* gather-docs: New, for maintainers.
	* maint-tool: New, for maintainers.
	* alloca.c, atexit.c, basename.c, bcmp.c, bcopy.c, bsearch.c,
	bzero.c, calloc.c, clock.c, configure.in, configure, getcwd.c,
	getpagesize.c, getpwd.c, index.c, memchr.c, memcmp.c, memcpy.c,
	memmove.c, memset.c, putenv.c, rename.c, rindex.c, setenv.c,
	sigsetmask.c, strcasecmp.c, strchr.c, strdup.c, strerror.c,
	strncasecmp.c, strncmp.c, strrchr.c, strstr.c, strtod.c, strtol.c,
	tmpnam.c, vfork.c, vprintf.c, waitpid.c, xatexit.c, xexit.c,
	xmalloc.c, xmemdup.c, xstrdup.c, xstrerror.c: Add or update
	documentation.

2001-09-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* concat.c (reconcat): Fix for traditional C.

2001-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* concat.c (reconcat): New function.

2001-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* concat.c (vconcat_length, vconcat_copy, concat_length,
	concat_copy, concat_copy2): New functions.
	(concat): Use vconcat_length/vconcat_copy.

	* alloca.c (libiberty_optr, libiberty_nptr, libiberty_len):
	Define.

2001-09-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* asprintf.c: Don't define USE_STDARG.  Use VPARAMS, VA_OPEN,
	VA_FIXEDARG & VA_CLOSE.

	* vasprintf.c: Check HAVE_STRING_H when including string.h.
	(checkit): Delete redundant prototype.  Add ATTRIBUTE_PRINTF_1.
	Use VA_OPEN, VA_FIXEDARG & VA_CLOSE.  Free allocated string.

2001-08-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* concat.c (concat): Use VPARAMS, VA_OPEN, VA_FIXEDARG & VA_CLOSE.

2001-08-23  Ulrich Drepper  <drepper@redhat.com>

	* regex.c (truncate_wchar): Use wcrtomb not wctomb.

2001-08-23  Ulrich Drepper  <drepper@redhat.com>

	* posix/regex.c [_LIBC] (convert_mbs_to_wcs): Use __mbrtowc
	instead of mbrtowc.
	[_LIBC]: Use __iswctype instead of iswctype, __wcslen instead of
	wcslen, and __wcscoll instead of wcscoll.

2001-08-22  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* fibheap.c (fibheap_init, fibnode_init): Remove.
	(fibheap_new, fibnode_new): Use xcalloc to allocate and
	initialize memory.
	(fibheap_insert): Remove check for node allocation failure.

2001-08-21  Richard Henderson  <rth@redhat.com>

	* Makefile.in (fibheap.o): Depend on config.h.
	* fibheap.c: Tidy formatting.  Use config.h.` Rearrange some
	functions for inlining.

Tue Aug 21 12:35:04 2001  Christopher Faylor <cgf@cygnus.com>

	* configure.in: Need to set HAVE_SYS_ERRLIST and HAVE_SYS_NERR whenever
	hosting on cygwin.
	* configure: Regenerate.

2001-08-20  Andrew Cagney  <ac131313@redhat.com>

	* floatformat.c (floatformat_m88110_ext): Remove #ifdef
	HARRIS_FLOAT_FORMAT.
	(floatformat_ia64_spill_little, floatformat_ia64_quad_little)
	(floatformat_ia64_spill_big, floatformat_ia64_quad_big)
	(floatformat_arm_ext_big, floatformat_arm_ext_littlebyte_bigword)
	(floatformat_m88110_harris_ext): New float formats.

2001-08-20  Daniel Berlin  <dan@cgsoftware.com>

	* fibheap.c: New file. Fibonacci heap.

	* Makefile.in (CFILES): Add fibheap.c.
	(REQUIRED_OFILES): Add fibheap.o.
	(fibheap.o): Add dependencies for fibheap.o.

2001-08-17  Christopher Faylor <cgf@cygnus.com>

	* configure.in: Always set HAVE_SYS_ERRLIST when targetting cygwin.
	* configure: Regenerate.

2001-08-16  Richard Henderson  <rth@redhat.com>

	* hashtab.c (htab_hash_string): New.

2001-08-13  Andrew Cagney  <ac131313@redhat.com>

	* floatformat.c (floatformat_ieee_double_littlebyte_bigword): Fix
	name.

2001-08-12  Isamu Hasegawa  <isamu@yamato.ibm.com>

	* regex.c (wcs_regex_compile): Use appropriate string
	to compare with collating element.
	Fix the padding for the alignment.

2001-08-10  Andrew Cagney  <ac131313@redhat.com>

	* lbasename.c (lbasename): Change function definition to return a
	const char pointer.

2001-08-07  Jason Merrill  <jason_merrill@redhat.com>

	* cp-demangle.c (demangle_special_name): "GR" -> "reference temporary
	for".

2001-08-03  Richard Henderson  <rth@redhat.com>

	* Makefile.in (concat.o): Depend on config.h.

2001-07-30  Andreas Jaeger  <aj@suse.de>

	* concat.c: Include "config.h".

2001-07-30  Andreas Jaeger  <aj@suse.de>

	* regex.c: Declare wcs functions only if compiling with
	MBS_SUPPORT.
	Don't use #elif for traditional C.

2001-07-23  Ulrich Drepper  <drepper@redhat.com>

	* regex.c: Revamp memory allocation for WCHAR functions to
	not use too much stack.

2001-07-30  Andreas Jaeger  <aj@suse.de>

	* regex.c: Declare wcs functions only if compiling with
	MBS_SUPPORT.
	Don't use #elif for traditional C.

2001-07-25  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (regex.o): Add dependency on config.h.

2001-07-18  Andreas Schwab  <schwab@suse.de>

	* regex.c (WORDCHAR_P) [WCHAR]: Also return true for the
	underscore character.

2001-07-18  Ulrich Drepper  <drepper@redhat.com>

	* regex.c: Limit string length printed in debug messages to 100
	chars.

2001-07-18  Andreas Jaeger  <aj@suse.de>

	* regex.c: Place under LGPL version 2.1.

2001-07-10  Jeff Johnston  <jjohnstn@redhat.com>

	* Makefile.in: Add support for regex code.
	* regex.c: New file.

2001-07-05  Mark Klein  <mklein@dis.com>

	* Makefile.in: Add ffs.c dependency.
	* configure.in: Add ffs.c.
	* ffs.c: New file.

2001-06-18  Richard Henderson  <rth@redhat.com>

	* concat.c: Include <sys/types.h>.

2001-06-11  Loren J. Rittle  <ljrittle@acm.org>

	bootstrap/3106
	* strerror.c (sys_nerr): Hide the OS header version.
	* strsignal.c (sys_nsig): Likewise.

2001-06-10  Richard Henderson  <rth@redhat.com>

	* concat.c: Include string.h.  Fix int vs size_t usage.
	Simplify the iteration loops.  Use memcpy.

2001-05-16  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* partition.c: Fix misspelling of `implementation'.

2001-05-09  Thiemo Seufer  <seufer@csv.ica.uni-stuttgart.de>

	* md5.c (md5_init_ctx): Declare constants as unsigned.
	(md5_process_block): Likewise.

2001-05-07  Zack Weinberg  <zackw@stanford.edu>

	* cp-demangle.c (demangle_v3_with_details,
	is_gnu_v3_mangled_ctor, is_gnu_v3_mangled_dtor): Use K+R style
	function definition.
	* ternary.c: Use K+R style function definitions.  Use PTR, not
	void *.  Make arguments constant where possible.

2001-05-07  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.h (splay_tree_max): New function.
	(splay_tree_min): Likewise.

2001-04-15  Daniel Berlin  <dan@cgsoftware.com>

	* ternary.c: New file - Ternary search tree implementation.

	* Makefile.in: Add ternary.o, and ternary.c dependencies.

2001-04-03  Zack Weinberg  <zackw@stanford.edu>

	* make-temp-file.c (try): Inline.

2001-02-28  Richard Henderson  <rth@redhat.com>

	* Makefile.in (make-temp-file.o): Depend on config.h.

2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* memchr.c (memchr): Adjust condition to avoid infinite loop.

2001-03-23  Jakub Jelinek  <jakub@redhat.com>

	* cp-demangle.c (demangle_discriminator): `_0' is discriminator #1,
	`_' not followed by a digit is invalid.

2001-03-22  Jim Blandy  <jimb@redhat.com>

	* cp-demangle.c (string_list_delete): Use dyn_string_delete
	instead of free, to free the contents as well as the string
	structure.

2001-03-21  Zack Weinberg  <zackw@stanford.edu>

	* make-temp-file.c: Always default DIR_SEPARATOR to '/'.
	Don't default P_tmpdir to anything.  Try /var/tmp before
	/usr/tmp.

2001-03-20  Zack Weinberg  <zackw@stanford.edu>

	* choose-temp.c: Split off make_temp_file, and the code
	duplicated between it and choose_temp_base, into...
	* make-temp-file.c: ... here; new file.

	* Makefile.in (CFILES): Add make-temp-file.c.
	(REQUIRED_OFILES): Add make-temp-file.o.

2001-03-20  Jim Blandy  <jimb@redhat.com>

	* cp-demangle.c (struct demangling_def): New fields:
	is_constructor and is_destructor.
	(demangling_new): Initialize them.
	(demangle_ctor_dtor_name): Set them, if we detect a constructor
	or destructor.
	(demangle_v3_with_details, is_gnu_v3_mangled_ctor,
	is_gnu_v3_mangled_dtor): New functions.

2001-03-20  Jason Merrill  <jason@redhat.com>

	* cplus-dem.c (main): Skip initial $.

2001-03-15  Michael Meissner  <meissner@redhat.com>

	* hashtab.c (higher_prime_number): Silence warning that 4294967291
	might be a signed integer under pre-ISO C systems.

2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
	    John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* lbasename.c: New file.
	* Makefile.in: Update for lbasename.

2001-03-06  Zack Weinberg  <zackw@stanford.edu>

	* aclocal.m4 (libiberty_AC_FUNC_C_ALLOCA): New.
	* configure.in: Replace all alloca logic with a simple use of
	the above new macro.
	* config.table: Kill *-*-beos* entry.
	* config/mh-beos: Delete.
	* configure, config.in: Regenerate.

	* Makefile.in (ALLOCA, HFILES): Kill.
	(REQUIRED_OFILES): Add alloca.o.
	(alloca.o): Depend on libiberty.h.
	(argv.o): Don't depend on alloca-conf.h.
	* alloca-conf.h: Delete.
	* alloca.c: Include libiberty.h.  Kill all #ifdef emacs
	blocks.  Provide the C alloca unconditionally.  Use PTR where
	appropriate.  Make i00afunc static.
	* argv.c: Don't include alloca-conf.h.

2001-03-04  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* cplus-dem.c (main): Cast enum style to int.

2001-02-16  Loren J. Rittle  <ljrittle@acm.org>

	* cplus-dem.c (main): Initialize style.

2001-02-02  Phil Edwards  <pme@sources.redhat.com>

	* COPYING.LIB:  Update to LGPL 2.1 from the FSF.

2001-01-31  Bryce McKinlay  <bryce@albatross.co.nz>

	Add support for Java demangling under the v3 ABI:
	* cp-demangle.c (NAMESPACE_SEPARATOR): New define.
	(struct demangling_def): Add `style' field.
	(demangling_new): New parameter `style'. Set it in demangling_t.
	(demangle_prefix): Use NAMESPACE_SEPARATOR.
	(demangle_type_ptr): Don't emit pointer symbol if doing Java output.
	(cp_demangle): New parameter `style'. Pass it to demangling_new().
	(main): Call cp_demangle with extra parameter.
	(java_demangle_v3): New function.
	(java_builtin_type_names): New. Table of primitive type names used
	for Java demangling.
	(demangle_builtin_type): Look up in java_builtin_type_names if doing
	Java output.
	* cplus-dem.c (cplus_demangle): Use java_demangle_v3 to do Java
	demangling.
	(long_options): Remove obsolete `java' option.
	(main): Remove explicit handling of `java' option. Instead, pass style
	parameter in cplus_demangle flags as gdb does.
	* testsuite/demangle.expected: Add some Java test cases.

2000-12-29  DJ Delorie  <dj@redhat.com>

	* fnmatch.c: Make the note about the origins of this file more
	accurate, at least until we can sync with glibc.
	* getopt.c: Ditto.
	* getopt1.c: Ditto.
	* md5.c: Ditto.
	* obstack.c: Ditto.

2000-12-26  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* bsearch.c: New file.
	* configure.in (funcs): Add bsearch.
	(AC_CHECK_FUNCS): Likewise.
	* configure, config.in: Regenerate.

2000-12-13  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* safe-ctype.c: #include "ansidecl.h".
	* strtod.c: Likewise.

2000-12-13  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* strtoul.c: Include safe-ctype.h, not ctype.h.

2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>

	* safe-ctype.c: New file.
	* Makefile.in (CFILES): Add safe-ctype.c.
	(REQUIRED_OFILES): Add safe-ctype.o.

	* argv.c: Define ISBLANK and use it, not isspace.
	* basename.c, cplus-dem.c, fnmatch.c, pexecute.c, strtod.c,
	strtol.c, strtoul.c: Include safe-ctype.h, not ctype.h.  Use
	uppercase ctype macros.  Don't test ISUPPER(c)/ISLOWER(c)
	before calling TOLOWER(c)/TOUPPER(c).

2000-12-07  Mike Stump  <mrs@wrs.com>

	* Makefile.in (distclean): When cleaning, remove testsuite.

2000-12-05  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (cplus_demangle_v3): Check that it's a v3 mangled
	name before allocating the dyn_string.

2000-12-04  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c: s/new_abi/v3/.
	* cplus-dem.c: Likewise.
	(current_demangling_style): Now auto_demangling.
	(cplus_demangle): Try v3 demangling if AUTO_DEMANGLING.
	(main): Use standard symbol chars for auto_demangling.

2000-11-26  Mark Mitchell  <mark@codesourcery.com>

	* hashtab.c (higher_prime_number): Use a table, rather than a
	seive, to find the next prime.

2000-11-22  H.J. Lu  <hjl@gnu.org>

	* cplus-dem.c (main): Handle gnat_demangling.

2000-11-22  Zack Weinberg  <zack@wolery.stanford.edu>

	* aclocal.m4 (LIB_AC_PROG_CC): Moved here from configure.in.
	(AC_DEFINE_NOAUTOHEADER): New - work around bug in autoheader.
	* configure.in: Call AC_C_INLINE and AC_C_CONST.  Use three
	argument form of AC_DEFINE in dummy definitions block.  Use
	AC_DEFINE_NOAUTOHEADER for real definitions of things defined
	in dummy block.  Preload cache variables instead of bypassing
	tests, where possible.
	* acconfig.h: Removed.

	* xmalloc.c (xmalloc_failed): New function, does error
	reporting on failed allocation.
	(xmalloc, xcalloc, xrealloc): Use it.

2000-11-21  Hans-Peter Nilsson  <hp@bitrange.com>

	* cplus-dem.c (cplus_demangle): Fix formatting.
	(grow_vect): Ditto.
	(ada_demangle): Ditto.
	(internal_cplus_demangle): Ditto.
	(mop_up): Ditto.

2000-11-21  H.J. Lu  <hjl@gnu.org>

	* cplus-dem.c (main): Handle java_demangling.

2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (grow_vect): Prototype.
	(ada_demangle): Cast the arg of ctype macros to unsigned char.

2000-11-15  Hans-Peter Nilsson  <hp@bitrange.com>

	* cplus-dem.c (ada_demangle): Add back ATTRIBUTE_UNUSED for
	parameter `option'.

2000-11-15  Kenneth Block  <kenneth.block@compaq.com>

	* cplus-dem.c: Eliminate use of DEFUN, it is obsolete and cannot
	be used in GCC.

2000-11-15  Kenneth Block  <kenneth.block@compaq.com>

	* cplus-dem.c: Add gnat demangler.  Add java to demangle style
	list.

2000-11-04  Hans-Peter Nilsson  <hp@bitrange.com>

	* hashtab.c (htab_expand): Change to return int.  Use calloc or
	xcalloc depending on htab->return_allocation_failure.  Return zero
	if calloc fails.
	(htab_create): Update comment to cover memory allocation.
	(htab_try_create): New.
	(htab_find_slot_with_hash): Return NULL if htab_expand fails.
	Update comment to cover this.

2000-11-03  Hans-Peter Nilsson  <hp@bitrange.com>

	* hashtab.c: Change void * to PTR where necessary.
	(htab_create, htab_expand): Correct formatting of comment before
	function.

2000-10-22  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (string_list_def): Add caret_position and comments.
	(result_caret_pos): New macro.
	(result_append_string): Rename to...
	(result_add_string): ... this, and insert at caret position.
	Rename throughout.
	(result_append): Rename to...
	(result_add): ... this, and insert at caret position.  Rename
	throughout.
	(result_append_char): Rename to...
	(result_add_char): ... this, and insert at caret position.  Rename
	throughout.
	(result_append_space): Remove.
	(string_list_new): Initialize caret position.
	(result_add_separated_char): Use caret position.
	(result_get_caret): New funtion.
	(result_set_caret): Likewise.
	(result_shift_caret): Likewise.
	(result_previous_char_is_space): Likewise.
	(substitution_start): Use caret position.
	(substitution_add): Likewise.
	(demangling_new): Initialize caret position.
	(demangle_encoding): Use caret position.
	(demanglin_nested_name): Put CV qualifiers after name.
	(demangle_type_ptr): Use switch statement.  Handle pointers to
	arrays.  Don't use result_append_space.  Use caret position.
	(demangle_type): Emit CV qualifiers after underlying type.  Adjust
	call to demangle_array_type.
	(demangle_array_type): Add parameter to handle pointers to arrays.

2000-10-01  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.c (splay_tree_insert): Fix formatting.

2000-09-16  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.c (splay_tree_predecessor): Fix typo in comment.

2000-09-14  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* splay-tree.c: #include <stdio.h>.

2000-09-14  Hans-Peter Nilsson  <hp@axis.com>

	* testsuite/demangle-expected: Add two tests for anonymous
	namespaces.
	* cplus-dem.c (gnu_special): Handle anonymous namespaces.

2000-09-10  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.c (splay_tree_predecessor): New function.
	(splay_tree_successor): Likewise.

2000-09-10  Hans-Peter Nilsson  <hp@axis.com>

	* testsuite/demangle-expected: Add four tests for type_info
	mangling.
	* cplus-dem.c (gnu_special): Use do_type, not demangle_fund_type,
	for a non-template non-qualified type_info function or node.

2000-09-08  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c: Fix copyright banner.

2000-09-07  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* md5.c: #include "ansidecl.h".

2000-09-06  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (status_allocation_failed): Rearrange whitespace.
	(demangle_type): Handle substitution candidates correctly in the
	face of special substitutions.

2000-09-05  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_encoding): Rename variable.
	(demangle_name): Rename parameter.  Handle return type
	suppression.
	(demangle_nested_name): Rename parameter.
	(demangle_prefix): Likewise.  Change return type suppression.
	(demangle_unqualified_name): Add parameter.  Flag constructors and
	conversion operators.
	(demangle_special_name): Fix comment.
	(demangle_type): Rename variable.
	(demangle_bare_function_type): Check for missing return type and
	parameter.
	(demangle_class_enum_type): Rename parameter.
	(demangle_discriminator): Fix misspelling in comment.

2000-08-31  DJ Delorie  <dj@redhat.com>

	* configure.in (Cygwin): special case cygwin only when we're
	building cygwin, not when we're hosting cygwin.

2000-09-04  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_template_arg): Eat an `E' after an
	<expression>.

2000-09-04  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_type_ptr): Increment position past
	pointer and reference characters.

2000-09-04  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_nv_offset): New function.
	(demangle_v_offset): Likewise.
	(demangle_call_offset): Likewise.
	(demangle_special_name): Update thunk demangling to comply with
	ABI changes.

2000-09-03  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (ANONYMOUS_NAMESPACE_PREFIX): New macro.
	(substitution_def): Remove template_parm_number.
	(NOT_TEMPLATE_PARM): Remove.
	(result_insert_string): New macro.
	(result_insert): Likewise.
	(result_insert_char): Likewise.
	(substitution_add): Remove last parameter.  Don't store template
	parm number.
	(BFT_NO_RETURN_TYPE): Define as NULL.
	(demangle_encoding): Adjust call to demangle_bare_function_type.
	(demangle_name): Adjust substitution.  Adjust call to
	substitution_add.
	(demangle_prefix): Adjust call to substitution_add.
	(demangle_identifier): Handle anonymous namespaces.
	(demangle_operator_name): Change demangling of vendor-extended
	operator to match ABI changes.
	(demangle_type_ptr): Change parameters.  Make recursive.  Handle
	substitutions here.
	(demangle_type): Adjust calls to demangle_template_param,
	substitution_add, and demangle_type_ptr.  Fix substitution of
	templated types.
	(demangle_function_type): Change parameter to a pointer.
	(demangle_bare_function_type): Likewise.  Adjust insertion point.
	(demangle_template_param): Remove last parameter.
	(demangle_expr_primary): Remove unused variable.  Adjust call to
	demangle_template_param.
	(is_mangled_char): Accept `$' and `.'.
	* cplus-dem.c (gnu_new_abi_symbol_characters): Add '$' and '.'.
	* dyn-string.c (dyn_string_insert_char): New function.

2000-08-31  Hans-Peter Nilsson  <hp@axis.com>

	* testsuite/demangle-expected: Add nine tests for
	underscore-after-number followed by five tests for name-signature
	delimiter.

2000-08-28  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (md5.o): Depend on config.h.

2000-08-28  Jason Merrill  <jason@redhat.com>

	* Makefile.in (REQUIRED_OFILES): Add md5.o.
	(CFILES): Add md5.c.
	* md5.c: New file.

2000-08-27  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_name): Initialize template_p in local
	name case.  Don't re-add substitutions as candidates.
	(demangle_nested_name): Use <unqualified-name>.
	(demangle_prefix): Likewise.  Don't add template names as
	substitution candidates twice, or re-add a substitution or the
	last prefix component.
	(demangle_local_name): Adjust output format.

2000-08-25  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (result_add_separated_char): Change parameter to
	int.
	(substitution_add): Don't check for duplicates.  Check if
	previously allocated size is zero.
	(demangle_name): Remove duplicate check for std substitution.
	Clear template flag appropriately.
	(demangle_prefix): Remove argument to demangle_substitution.
	Don't check that template flag is already set.
	(demangle_operator_name): Add pt operator.
	(demangle_type): Don't treat r as built-in type.  Remove argument
	to demangle_substitution.  Fix substitution candidate mechanics.
	Handle <template-template-parm>s.  Improve comments.
	(demangle_template_param): Don't handle template arg lists here.
	(demangle_substitution): Remove parameter.
	(print_usage): Remove extra fprintf option.

2000-08-24  Greg McGary  <greg@mcgary.org>

	* random.c (end_ptr): Revert previous change.

2000-08-24  Greg McGary  <greg@mcgary.org>

	* cplus-dem.c (cplus_demangle_opname, cplus_mangle_opname,
	demangle_expression, demangle_function_name): Use ARRAY_SIZE.
	* random.c (end_ptr): Likewise.

2000-08-23  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (result_close_template_list): Remove function.
	(result_add_separated_char): New function.
	(result_open_template_list): New macro.
	(result_close_template_list): Likewise.
	(demangle_prefix): Don't set template_p if the
	prefix ends with a ctor name.
	(demangle_type_ptr): Remove duplicate RETURN_IF_ERROR.
	(demangle_type): Check for template args after substitution.
	(demangle_template_args): Use result_open_template_list.

2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>

	* pexecute.c:  Don't use vfork.  Initialize 'pid' before retry loop.

2000-07-26  Dave Pitts  <dpitts@cozx.com>

	* config/mh-openedition.h: Added -DLE370 definition.

2000-07-26 Mark Elbrecht <snowball3@bigfoot.com>

	* pexecute.c (pexecute) [__MSDOS__]: Change __GO32__ to
	__DJGPP__. Use P_WAIT instead of constant in the spawnv* call.
	Cast program to 'char *' in errmsg_arg assignment.
	(PWAIT_ERROR): Define.
	(pwait): Use PWAIT_ERROR.  Adjust DJGPP's status code to conform
	to DJGPP's WIF* macros.

2000-07-27  RodneyBrown  <RodneyBrown@pmsc.com>
	    Jeff Law <law@cygnus.com>

	* getcwd.c: Include string.h, stdlib.h for prototypes

	* Makefile.in (rename.o, waitpid.o): Depend on config.h
	* rename.c: Include config.h, unistd.h
	* waitpid.c: Include config.h, sys/wait.h

2000-07-24  Hans-Peter Nilsson  <hp@axis.com>

	* cplus-dem.c (work_stuff_copy_to_from): New.
	(delete_non_B_K_work_stuff): New.
	(delete_work_stuff): New.
	(mop_up): Break out work_stuff partly destruction to
	delete_non_B_K_work_stuff.
	(iterate_demangle_function): New.
	(demangle_prefix): Call iterate_demangle_function instead of
	demangle_function_name.  Leave handling of name-signature
	__-delimiters to iterate_demangle_function.
	(demangle_integral_value): Strip an optional
	following underscore cautiously.  Handle negative numbers.

2000-07-24  Daniel Berlin <dberlin@redhat.com>

	* cplus-dem.c (demangle_signature): Change if (GNU_DEMANGLING) to
	if (AUTO_DEMANGLING || GNU_DEMANGLING)

2000-07-21  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_ctor_dtor_name): Remove not-in-charge
	allocating ctor mangling.
	(demangle_array_type): Handle empty and non-constant array length.

2000-07-23  Michael Sokolov  <msokolov@ivan.Harhan.ORG>
	    Jeff Law <law@cygnus.com>

	* configure.in (AC_CHECK_HEADERS): Add time.h.
	(AC_HEADER_TIME): Add check.
	* configure, config.in: Regenerate.
	* getruntime.c: Portably #include <sys/time.h> and/or <time.h>.

	* configure.in (AC_CHECK_HEADERS): Add limits.h.
	* configure, config.in: Regenerate.
	* sort.c: Portably #include <limits.h> and/or <sys/param.h>.
	* strtol.c, strtoul.c: #include "config.h". Portably #include
	<limits.h> and/or <sys/param.h>.
	* Makefile.in (strtol.o, strtoul.o): Update dependencies.

	* aclocal.m4 (libiberty_AC_DECLARE_ERRNO): New macro.
	* configure.in (libiberty_AC_DECLARE_ERRNO): Add check.
	* configure, config.in: Regenerate.
	* pexecute.c, strtol.c, strtoul.c: Declare errno if necessary.

	* cp-demangle.c, mkstemps.c: #include <sys/types.h>.

2000-07-21  Mike Stump  <mrs@wrs.com>

	* Makefile.in (xexit.o): Add dependency for config.h in xexit.c.
	* (vasprintf.o): Add dependency for config.h in vasprintf.c.

2000-07-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cp-demangle.c (cp_demangle_type): Wrap in IN_LIBGCC2.

	* setenv.c (setenv): Initialize variable `ep'.

	* sigsetmask.c (abort): Prototype.

	* vasprintf.c: Include config.h.  Check ANSI_PROTOTYPES, not
	__STDC__ for stdarg.h include.
	(int_vasprintf): Prototype.
	(checkit): Prototype.  Use VPARAMS/ANSI_PROTOTYPES/VA_START in
	definition.  Cast `global_total_width' in comparison.
	(main): Prototype.  Return a value.

	* vfork.c (fork): Prototype.

	* xexit.c: Include config.h.

2000-07-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* cplus-dem.c (demangle_fund_type): Make 'dec' an unsigned int,
	and print it with %u.

2000-07-17  Hans-Peter Nilsson  <hp@axis.com>

	* testsuite/regress-demangle (failed test): Show result and
	expected output.

2000-07-07  Andrew Haley  <aph@cygnus.com>

	* cplus-dem.c (main): fflush() after emitting last char before
	waiting for input.

2000-06-28  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_encoding): Accept no substitutions.
	(demangle_name): Handle <substitution> followed by
	<unqualified-template-name>.
	(demangle_type): Follow special substitutions with
	<class-enum-type>
	(demangle_subtitution): Set template_p for special substitutions.
	(main): Fix typos.

2000-06-27  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_special_name): Swap base and derived
	class when demangling construction vtables.

2000-06-21  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c: Don't include ctype.h.
	(IS_DIGIT): New macro.
	(IS_ALPHA): Likewise.  Use IS_DIGIT and IS_ALPHA throughout
	instead of isdigit and isalpanum.
	(demangling_def): Make name and next const pointers.
	(STATUS_ALLOCATION_FAILED): New status code.
	(dyn_string_append_space): Handle failure in
	dyn_string_append_char.
	(int_to_dyn_string): Likewise.  Change return value to status_t.
	(string_list_new): Handle failure of dyn_string_init.
	(result_close_template_list): Change return type to status_t.
	Handle failure in dyn_string_append.
	(result_push): Change return value to status_t.  Handle failure in
	string_list_new.  Handle failure of result_push throughout.
	(substitution_add): Change return value to status_t.  Handle
	dyn_string failures.  Handle failure of substitution_add
	throughout.
	(template_arg_list_new): Return NULL on allocation failure.
	(result_append_string): Return STATUS_ALLOCATION_FAILED on error.
	Handle error result throughout.
	(result_append): Likewise.
	(result_append_char): Likewise.
	(result_append_space): Likewise.
	(demangling_new): Make argument a const pointer.  Handle
	allocation failures.
	(demangle_template_args): Handle failure in template_arg_list_new
	and result_close_template_list.
	(demangle_discriminator): Return if int_to_dyn_string fails.
	(cp_demangle): Likewise.
	(cp_demangle_type): New function.
	(cplus_demangle_new_abi): Don't call dyn_string_delete.  Abort on
	memory allocation failure.
	(main): Likewise.
	* dyn-string.c (RETURN_ON_ALLOCATION_FAILURE): Define if
	IN_LIBGCC2.
	(dyn_string_init): Change return value to int.  Handle
	RETURN_ON_ALLOCATION_FAILURE case.
	(dyn_string_new): Handle RETURN_ON_ALLOCATION_FAILURE case.
	(dyn_string_release): Delete the dyn_string.
	(dyn_string_resize): Handle RETURN_ON_ALLOCATION_FAILURE case.
	(dyn_string_copy): Change return type to int.
	(dyn_string_copy_cstr): Likewise.
	(dyn_string_prepend): Likewise.
	(dyn_string_prepend_cstr): Likewise.
	(dyn_string_insert): Likewise.
	(dyn_string_insert_cstr): Likewise.
	(dyn_string_append): Likewise.
	(dyn_string_append_cstr): Likewise.
	(dyn_string_append_char): Likewise.
	(dyn_string_substring): Likewise.

2000-06-09  Zack Weinberg  <zack@wolery.cumb.org>

	* cp-demangle.c (demangle_operator_name): Add spaces before
	names beginning with a letter: delete, delete[], new, new[],
	sizeof.
	(demangle_special_name): Handle TF <type> and TJ <type>.

Thu Jun  8 18:52:24 2000  Philippe De Muyter  <phdm@macqel.be>

	* cp-demangle.c (template_arg_list_new): Revert previous PARAMS patch.

Thu Jun  8 09:25:54 2000  Philippe De Muyter  <phdm@macqel.be>

	* cp-demangle.c (stdio.h): File included unconditionaly.
	(template_arg_list_new): Parameter list is PARAMS ((void)), not ().
	* dyn-string.c (stdio.h): File included.
	* partition.c (partition_print): No `&' needed to take the address of
	a function.

2000-06-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (ac_libiberty_warn_cflags): Add -pedantic.

	* choose-temp.c (try, choose_temp_base, make_temp_file): Constify.

	* cp-demangle.c (demangle_char): Change parameter from char to int.
	(demangle_expression, demangle_expr_primary): Remove extra
	semi-colon in prototype.

	* dyn-string.c (dyn_string_append_char): Change parameter from
	char to int.

	* memcmp.c (memcmp): Constify.

	* mkstemps.c (gcc_uint64_t): Mark GNUC `long long' case with
	__extension__.

	* partition.c (elem_compare): Prototype.  Don't cast away
	const-ness.

	* setenv.c (setenv): Use braces to avoid ambiguous `else'.

2000-06-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (cp-demangle.o): Depend on $(INCDIR)/demangle.h.

	* cp-demangle.c: Include demangle.h.
	(template_arg_list_new): DeANSIfy.
	(cp_demangle): Make static and add prototype.
	(operator_code, operators): Constify.
	(demangle_operator_name): Likewise for variables `p1', `p2' and `p'.

2000-06-05  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_prefix): Cast argument to isdigit to
	unsigned char.
	(demangle_unqualified_name): Likewise.
	(demangle_number_literally): Likewise.
	(demangle_type): Likewise.
	(demangle_substitution): Likewise.
	(is_mangled_char): Likewise, for isalnum.

2000-06-04  Alex Samuel  <samuel@codesourcery.com>

	* Makefile.in (CFILES): Add cp-demangle.c and dyn-string.c.
	(REQUIRED_OFILES): Add cp-demangle.o and dyn-string.o.
	(cp-demangle.o): New dependency.
	(dyn-string.o): Likewise.

	* dyn-string.c: Move here from gcc/dyn-string.c.  Add new functions.

	* cplus-dem.c (libiberty_demanglers): Add initializer for new-ABI
	demangler.
	(cplus_demangle): Call cplus_demangle_new_abi if in new-ABI
	demangling mode.
	(gnu_new_abi_symbol_characters): New function.
	(main): Use gnu_new_abi_symbol_characters.  * cp-demangle.c: New
	file.
	* cp-demangle.c: New file.

Tue May 30 16:45:25 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* floatformat.c: Add name to each floatformat field.

Tue May 30 15:07:52 2000  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (objalloc.o): Depend on config.h

2000-05-29  Zack Weinberg  <zack@wolery.cumb.org>

	* hashtab.c, partition.c, sort.c, xmemdup.c: Include string.h
	if HAVE_STRING_H.
	* pexecute.c, xexit.c: Include stdlib.h if HAVE_STDLIB_H.
	* objalloc.c: Include config.h.  Include stdlib.h and don't
	declare malloc or free if HAVE_STDLIB_H.
	* strerror.c, strsignal.c: Include stdlib.h if HAVE_STDLIB_H,
	else declare malloc without prototype.  Include string.h if
	HAVE_STRING_H, else declare memset without prototype.  Don't
	include stddef.h.

2000-05-23  Mike Stump  <mrs@wrs.com>

	* Makefile.in (xmalloc.o): Add dependency for config.h, fixes make
	-j3.

2000-05-18  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* xmalloc.c: Include config.h for HAVE_SBRK definition.

2000-05-16  Horst von Brand <vonbrand@sleipnir.valparaiso.cl>

	* hashtab.c (hash_pointer): Delete low-order bits which are
	probably zero, also eliminate a warning on alpha.

2000-05-15  David Edelsohn  <edelsohn@gnu.org>

	* Makefile.in: Change "pic" to depend on $(PICFLAG), not
	on $(enable_shared).

2000-05-10  Jakub Jelinek  <jakub@redhat.com>

	* config.table: Use mh-sparcpic for sparc*-*-*.

2000-05-08  Nick Clifton  <nickc@cygnus.com>

	* Makefile.in (CFILES): Add strncmp.c.
	(NEEDED): Add strncmp.

2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (cplus_demangle_opname, demangle_function_name):
	Cast the arguments to `islower' to `unsigned char'.
	(print_demangler_list): Prototype.

Thu May  4 17:14:41 2000  Philippe De Muyter  <phdm@macqel.be>

	* sort.c (UCHAR_MAX): Provide fallback definition.

2000-04-29  Alexandre Oliva  <aoliva@cygnus.com>

	* Makefile.in (maintainer-clean-subdir): Fix handling of empty
	SUBDIRS.

2000-04-28  Kenneth Block  <block@zk3.dec.com>
	    Jason Merrill  <jason@casey.cygnus.com>

	* cplus-dem.c (libiberty_demanglers): New table for demangle styles.
	(cplus_demangle_set_style): New function for setting style.
	(cplus_demangle_name_to_style): New function to translate name.

2000-04-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* aclocal.m4: New file with new test libiberty_AC_FUNC_STRNCMP.

	* configure.in (AC_CHECK_HEADERS): Add sys/mman.h fcntl.h.
	(libiberty_AC_FUNC_STRNCMP): Invoke.

	* strncmp.c: New file.

Thu Apr 27 16:58:43 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* hashtab.c (htab_expand): Add prototype.
	(find_empty_slot_for_expand): Likewise.

2000-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* hashtab.c (hash_pointer, eq_pointer): Make definition static to
	match prototype.
	(htab_expand): Cast the return value of xcalloc.

2000-04-24  Mark Mitchell  <mark@codesourcery.com>

	* hashtab.c (hash_pointer): New function.
	(eq_pointer): Likewise.
	(htab_hash_pointer): New variable.
	(htab_eq_pointer): Likewise.

2000-04-23  Mark Mitchell  <mark@codesourcery.com>

	* sort.c (sort_pointers): Fix endianness bugs.

	* sort.c: New file.
	* Makefile.in (CFILES): Add sort.c
	(REQUIRED_OFILES): Add sort.o.
	(sort.o): New target.

2000-04-21  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* Makefile.in (*-subdir): Revamp slightly to avoid losing on
	4.3BSD systems.

Tue Apr 18 16:23:31 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* hashtab.c: Various minor cleanups.
	(htab_find_slot_with_hash): INSERT is now enum insert_option.
	(htab_find_slot): Likewise.

2000-04-16  Dave Pitts  <dpitts@cozx.com>

	* cplus-dem.c (cplus_demangle_opname): Changed to use islower.

2000-04-05  Richard Henderson  <rth@cygnus.com>

	* splay-tree.c (splay_tree_remove): New.

2000-03-30  Mark Mitchell  <mark@codesourcery.com>

	* hashtab.c (find_empty_slot_for_expand): Use hashval_t for hash
	codes.
	(htab_find_with_hash): Likewise.
	(htab_find_slot_with_hash): Likewise.

2000-03-29  Zack Weinberg  <zack@wolery.cumb.org>

	* hashtab.c (htab_find_with_hash): Avoid calculating hash2
	unless it will be used.  Rearrange loop for better
	optimization.
	(higher_prime_number): Add static prototype.

Thu Mar 16 01:33:58 2000  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (partition.o): Depend on config.h

2000-03-14  Bernd Schmidt  <bernds@cygnus.co.uk>

	* hashtab.c (find_empty_slot_for_expand): New function.
	(htab_expand): Use it instead of htab_find_slot.
	(htab_find_with_hash): Renamed from htab_find; now accepts extra
	argument HASH.
	(htab_find_slot_with_hash): Likewise for htab_find_slot.
	(htab_find): New wrapper function.
	(htab_find_slot): Likewise.
	(htab_traverse): Pass slot, not entry, to called function.

2000-03-09  Alex Samuel  <samuel@codesourcery.com>

	* Makefile.in (CFILES): Add partition.c.
	(REQUIRED_OFILES): Add partition.o.
	(partition.o): New rule.
	* partition.c: New file.

2000-03-09  Zack Weinberg  <zack@wolery.cumb.org>

	* hashtab.c (htab_create): Set del_f.
	(htab_delete, htab_empty, htab_remove_elt, htab_clear_slot):
	Use it.

2000-03-08  Zack Weinberg  <zack@wolery.cumb.org>

	* hashtab.c: Remove debugging variables (all_searches,
	all_collisions, all_expansions). Delete
	all_hash_table_collisions.
	(create_hash_table, delete_hash_table, empty_hash_table,
	find_hash_table_entry, remove_element_from_hash_table_entry,
	clear_hash_table_slot, traverse_hash_table, hash_table_size,
	hash_table_elements_number, hash_table_collisions): Rename to:
	htab_create, htab_delete, htab_empty, htab_find_slot,
	htab_remove_elt, htab_clear_slot, htab_traverse, htab_size,
	htab_elements, htab_collisions.
	(htab_find): New function, handles common case where you don't
	plan to add or delete an entry.
	(htab_expand): Don't create a whole new table, just a new
	entry vector.
	(htab_find_slot): Simplify logic.

1999-08-03  Ian Lance Taylor  <ian@zembu.com>

	* floatformat.c: Add casts to avoid signed/unsigned warnings.
	* pexecute.c: Add ATTRIBUTE_UNUSED as needed on Unix.

	* Makefile.in (install_to_libdir): Change $(TARGETLIB).n to
	$(TARGETLIB)n so it works on MSDOS.
	(install_to_tooldir): Likewise.

1999-07-21  Ian Lance Taylor  <ian@zembu.com>

	From Mark Elbrecht:
	* makefile.dos: Remove; obsolete.
	* configure.bat: Remove; obsolete.

1999-07-11  Ian Lance Taylor  <ian@zembu.com>

	* splay-tree.c (splay_tree_insert): Add initialization to avoid
	warning.

2000-01-04  Mumit Khan  <khan@xraylith.wisc.edu>

	* pexecute.c: Conditionally include string.h.
	(fix_argv): Handle embedded whitespace in args for Mingw32.

2000-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (ac_libiberty_warn_cflags): Turn on warnings if
	we're using gcc.

	* Makefile.in (COMPILE.c): Add @ac_libiberty_warn_cflags@

1999-12-27  Geoff Keating  <geoffk@cygnus.com>

	* vasprintf.c (int_vasprintf): Don't re-read the format character
	as this mishandles strings like '%%s'.

1999-12-05  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.c (splay_tree_new): Use struct splay_tree_node_s
	rather than struct splay_tree_node.
	(splay_tree_insert): Use struct splay_tree_s rather than struct
	splay_tree.

Sun Nov 28 00:59:39 1999  Philippe De Muyter  <phdm@macqel.be>

	* hashtab.c (sys/types.h): File included.

1999-11-22  Jason Merrill  <jason@casey.cygnus.com>

	* strtoul.c, strtol.c, random.c: Remove advertising clause from
	BSD license, pursuant with

	ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change

Wed Nov 10 09:42:39 1999  Jeffrey A Law  (law@cygnus.com)

	* hashtab.c: Include stdio.h.

Mon Nov  8 09:23:41 1999  Jeffrey A Law  (law@cygnus.com)

	* hashtab.c (traverse_hash_table): Protect prototype with PARAMS.

Tue Nov  2 03:23:13 1999  Philippe De Muyter  <phdm@macqel.be>

	* xstrdup (sys/types.h): Include this file.

1999-10-28  Nathan Sidwell  <nathan@acm.org>

	* Makefile.in (SUBDIRS): New macro.
	(mostlyclean, clean, distclean, maintainer-clean): Adjust to
	avoid multiple subdirectory cleaning.
	(*-subdir): Use SUBDIRS.

1999-10-25  Jim Kingdon  <http://developer.redhat.com/>

	* cplus-dem.c: Move declarations of standard_symbol_characters and
	hp_symbol_characters inside #ifdef MAIN to avoid compiler
	warnings.

1999-10-23 08:51 -0700  Zack Weinberg  <zack@bitmover.com>

	* hashtab.c (find_hash_table_entry): When returning a
	DELETED_ENTRY slot, change it to EMPTY_ENTRY first.
	(clear_hash_table_slot): New function which deletes an entry
	by its position in the table, not its value.
	(traverse_hash_table): New function which calls a hook
	function for every live entry in the table.

1999-10-19  Mark Mitchell  <mark@codesourcery.com>

	* cplus-dem.c (INTBUF_SIZE): New macro.
	(string_append_template_idx): New function.
	(demangle_expression): Likewise.
	(demangle_integral_value): Use it.
	(demangle_real_value): New function, split out from ...
	(demangle_template_value_parm): ... here.  Use
	string_append_template_idx.  Use demangle_real_value.
	(demangle_template): Use string_append_template_idx.
	(demangle_qualified): Use consume_count_with_underscores.
	(get_count): Tweak formatting.
	(do_type): Use string_append_template_idx.

1999-10-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* calloc.c: Add a public domain notice.

Mon Oct 18 02:30:47 1999  Philippe De Muyter  <phdm@macqel.be>

	* setenv.c (sys/types.h, stdio.h): Include those files unconditionaly.

Fri Oct 15 01:47:51 1999  Vladimir Makarov  <vmakarov@loony.cygnus.com>

	* Makefile.in (CFILES): Add hashtab.c
	(REQUIRED_OFILES): Add hashtab.o
	(hashtab.o): Add dependencies.
	* hashtab.c: New file

Wed Oct 13 01:16:47 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* basename.c (DIR_SEPARATOR): New macro.
	(DIR_SEPARATOR_2): Likewise.
	(HAVE_DOS_BASED_FILESYSTEM): Likewise.
	(IS_DIR_SEPARATOR): Likewise.
	(main): Handle MSDOS style pathname.

1999-10-11  Mark Mitchell  <mark@codesourcery.com>

	* cplus-dem.c (do_type): Handle pointer to member types whose
	enclosing classes have namespace scope.

Sun Oct 10 01:23:50 1999  Marc Espie <espie@cvs.openbsd.org>

	* config.table:  Provide a backup shell for executing move-if-change.

1999-10-02  Mark Mitchell  <mark@codesourcery.com>

	* xmalloc.c (xmalloc): Fix spelling error.
	(xcalloc, xrealloc): Likewise.

1999-10-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (fancy_abort, demangle_integral_value,
	demangle_arm_hp_template, recursively_demangle,
	standard_symbol_characters, hp_symbol_characters, main): Add prototype.
	(program_name, program_version, fatal): Constify a char*.
	(usage, fatal): Mark with ATTRIBUTE_NORETURN.
	(main): Call return, not exit.

1999-09-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* choose-temp.c: Remove obsolete comment about gcc.
	(make_temp_file): Constify a char*.

Wed Sep  8 20:03:28 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* xmemdup.c: Include sys/types.h.

1999-09-07  Jeff Garzik  <jgarzik@pobox.com>

	* xmemdup.c: New xmemdup function.
	* Makefile.in, makefile.vms, vmsbuild.com:  Use xmemdup.[co].

Tue Sep  7 23:32:18 1999  Linas Vepstas  <linas@linas.org>

	* config.table: Add openedition target.
	* config/mh-openedition: New file.

Thu Sep  2 01:36:12 1999  Marc Espie <espie@cvs.openbsd.org>

	* pexecute.c (pexecute):  Fill in temp_base when needed.

1999-08-31  Richard Henderson  <rth@cygnus.com>

	* getpwd.c: Check HAVE_GETCWD before defining it away.

1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (CFILES): Add calloc.c and getpwd.c.
	(REQUIRED_OFILES): Add getpwd.o.
	(getpwd.o): Add target.

	* configure.in (AC_PREREQ): Bump to 2.13.
	(AC_CHECK_HEADERS): Add check for <sys/stat.h>.

	* getpwd.c: New file, moved here from gcc.

1999-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (gnu_special): Cast a `size_t' to `long' when
	comparing against a signed quantity.
	(arm_special): Likewise.
	(demangle_fund_type): Likewise.
	(do_hpacc_template_const_value): Mark parameter `work' with
	ATTRIBUTE_UNUSED.
	(main): Constify variable `valid_symbols'.

Tue Aug 24 02:50:45 1999  Philippe De Muyter  <phdm@macqel.be>

	* strtoul.c (strtoul): Add parentheses around && within ||.

Fri Aug  6 23:32:29 1999  Daniel Jacobowitz <drow@drow.them.org>

	* Makefile.in (FLAGS_TO_PASS): Include prefix, exec_prefix,
	libdir, libsubdir and tooldir.

1999-08-01  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.c (splay_tree_insert): Return the new node.

1999-07-14  Richard Henderson  <rth@cygnus.com>

	* argv.c: Include stdlib.h and string.h instead of
	prototyping directly.
	* choose-temp.c: Conditionally include string.h.

1999-07-12  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (NEEDED): Add bcmp, bcopy, bzero.

1999-07-11  Ian Lance Taylor  <ian@zembu.com>

	* splay-tree.c (splay_tree_insert): Add initialization to avoid
	warning.

1999-07-07  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (needed-list): Only include stuff we actually need
	for libstdc++.

1999-06-21  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* configure.in (checkfuncs): Add gettimeofday.
	* config.in, configure: Regenerated.

Mon Jun 21 05:56:01 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* configure.in (*-*-uwin*): UWIN has sys_{errlist,nerr} even if
	the test fails.
	* configure: Regenerate.

1999-06-10  Mike Stump  <mrs@wrs.com>

	* Makefile.in (setenv.o): Add config.h dep for setenv.o to fix
	parallel builds.

1999-05-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* putenv.c: Include ansidecl.h to define `const'.
	* setenv.c: Likewise.

Wed May 26 03:58:20 1999  "Melissa O'Neill" <oneill@cs.sfu.ca>

	* Makefile.in (CFILES): Add putenv.c and setenv.c.
	* configure.in (funcs): Add putenv and setenv.
	(AC_CHECK_FUNCS): Check for putenv and setenv.
	* configure: Rebuilt.
	* putenv.c setenv.c: New files.

	* getcwd.c (getcwd): If pathname is NULL, then obtain SIZE
	bytes of space using malloc.

Mon May 17 01:42:34 1999  Stu Grossman  <grossman@babylon-5.cygnus.com>

	* cplus-dem.c (demangle_fund_type (near 'I' case)): Don't advance
	the *mangled pointer beyond the end of the string.  Clean up code to
	match prevailing coding style.

1999-05-13  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* tmpnam.c (L_tmpnam): Fix typo.

Thu May 13 01:14:46 1999 Marc Espie <espie@cvs.openbsd.org>

	* cplus-dem.c (standard_symbol_characters): Renamed from
	standard_symbol_alphabet.  No longer modify TABLE.
	(hp_symbol_characters): Renamed from hp_symbol_alphabet.  No longer
	modify TABLE.
	(main): Corresponding changes.  Use strchr to determine if a
	character is valid.

1999-05-11  Jim Blandy  <jimb@zwingli.cygnus.com>

	* cplus-dem.c (main): Use table lookup to distinguish identifier
	characters from non-identifier characters.
	(standard_symbol_alphabet, hp_symbol_alphabet): New functions.

Thu May  6 20:34:42 1999  Fred Fish  <fnf@be.com>

	* configure.in (sys/resource.h): Add to AC_CHECK_HEADERS list.
	* getruntime.c: Only attempt to include sys/resource.h and
	use getrusage if both HAVE_GETRUSAGE and HAVE_SYS_RESOURCE_H
	are defined.

Mon Apr 26 01:36:06 1999  Donn Terry (donn@interix.com)

	* configure.in (alloca detection): Handle alloca directly for interix.
	* configure: Rebuilt.

Sun Apr 25 01:18:21 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* choose-temp.c (DIR_SEPARATOR): Use '\\' only for native windows32.

1999-04-20  Jim Blandy  <jimb@zwingli.cygnus.com>

	Fix from Dale Hawkins:
	* cplus-dem.c (mop_up): Set typevec_size to zero, so it'll be
	reallocated properly if we use it again.

	* cplus-dem.c (demangle_fund_type): Check for buffer overrun.  Be
	stricter about syntax.  Always null-terminate string.

Thu Apr 15 23:00:55 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* configure.in (checkfuncs): Check for sbrk.
	* config.in: Rebuilt.
	* configure: Likewise.
	* xmalloc.c: Use HAVE_SBRK instead of the host specific definitions.

1999-04-12  Jim Blandy  <jimb@zwingli.cygnus.com>

	Fix from Marcus Daniels:
	* cplus-dem.c (demangle_fund_type): Don't run off the end of the
	identifier looking for another underscore.

Sun Apr 11 23:20:59 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* pexecute.c: Change all references to __UWIN__ to _UWIN.
	* xmalloc.c: Likewise.
	(xcalloc): UWIN has sbrk.
	(xrealloc): Fix guard macro.

1999-04-11  Richard Henderson  <rth@cygnus.com>

	* alloca-conf.h (alloca) [C_ALLOCA]: Don't use Gcc builtin
	or <alloca.h>.
	* clock.c (GNU_HZ): New definition.
	(clock): Use it.
	* getruntime.c: Likewise.

	* config.table: Use mh-beos.
	* config/mh-beos: New file.

1999-04-11  Mark Mitchell  <mark@codesourcery.com>

	* cplus-dem.c (demangle_template_value_parm): Handle
	pointers-to-members.
	(do_type): Handle template parameters as qualifiers.

1999-04-01  Jim Blandy  <jimb@zwingli.cygnus.com>

	* cplus-dem.c: Attempt to handle overflows in counts with some
	semblance of grace.
	(consume_count): Detect overflows.  Return -1 to indicate errors,
	instead of zero.
	(demangle_template_value_parm, demangle_template): Handle change
	to consume_count's return convention.

1999-04-05  Tom Tromey  <tromey@cygnus.com>

	* testsuite/regress-demangle: New file.
	* testsuite/demangle-expected: New file.

	* Makefile.in (all, check, installcheck, info, install-info,
	clean-info, dvi, install, etags, tags, mostlyclean, clean,
	distclean, maintainer-clean, realclean): Depend on corresponding
	`-subdir' target.
	(all-subdir check-subdir installcheck-subdir info-subdir
	install-info-subdir clean-info-subdir dvi-subdir
	install-info-subdir etags-subdir mostlyclean-subdir clean-subdir
	distclean-subdir maintainer-clean-subdir): New target.
	* testsuite/Makefile.in: New file.
	* configure: Rebuilt.
	* configure.in: Create testsuite/Makefile.

1999-04-02  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.h (splay_tree_compare_pointers): Define.

1999-03-30  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.c (splay_tree_compare_ints): Define.

1999-03-30  Tom Tromey  <tromey@cygnus.com>

	* cplus-dem.c (consume_count): If `count' wraps, return 0 and
	don't advance input pointer.
	(demangle_class_name): If consume_count didn't find a count, do
	nothing.  Don't bother with `strlen' sanity check; consume_count
	does it for us.

1999-03-16  Stan Shebs  <shebs@andros.cygnus.com>

	From Art Haas  <ahaas@neosoft.com>:
	* cplus-dem.c (demangle_prefix): Don't grab all the '__' strings
	when doing arm or hp style.
	(demangle_nested_args): Decr forgetting_types field when done.

Thu Mar 11 01:22:58 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* pexecute.c (__CYGWIN32__): Rename to
	(__CYGWIN__): this.
	* xmalloc.c: Likewise.

	Changes to support i386-pc-uwin.
	* configure.in (*-*-uwin*): Workaround for vfork bug.
	* configure: Regenerate.
	* pexecute.c (pexecute): Be like standard Unix.
	(pwait): Likewise.
	* xmalloc.c (first_break): Define.
	(xmalloc_set_program_name): Use.
	(xmalloc): Use.

Thu Mar 11 01:07:55 1999  Franz Sirl <Franz.Sirl-kernel@lauterbach.com>

	* config.table: Cleanup and add mh-*pic handling for alpha, arm, powerpc

Sun Feb 28 22:30:44 1999  Geoffrey Noer  <noer@cygnus.com>

	* config.table: Check cygwin*, not cygwin32*.

Tue Feb  9 16:39:01 1999  Dave Brolley  <brolley@cygnus.com>

	* Makefile.in: Change mkstemp -> mkstemps.

Tue Feb  9 01:12:27 1999  Marc Espie <Marc.Espie@liafa.jussieu.fr>

	* Makefile.in (REQUIRED_OFILES): remove mkstemp.o
	* configure.in (funcs): Check for and conditionally add mkstemps to
	the list of functions libiberty will provide.
	* configure: Rebuilt.

Wed Feb  3 00:01:15 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* clock.c (HZ): Define in terms of (ISO C) CLOCKS_PER_SEC on
	platforms that don't have HZ.
	* getruntime.c (HZ): Likewise.

Sat Jan 30 13:28:04 1999  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (xstrdup.o): Depend on config.h.

Wed Jan 13 07:26:44 1999  H.J. Lu  (hjl@gnu.org)

	* cplus-dem.c (mop_up): Set work->previous_argument to NULL after
	freeing it.

Wed Jan 13 14:16:36 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* xstrdup.c (xstrdup): Switch from strcpy to memcpy for speed.

Tue Jan  5 15:58:29 1999  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* Makefile.in (CFILES): fix typo, splay-tree.c instead of
	splay-tree.o.

1999-01-04  Jason Molenda  (jsm@bugshack.cygnus.com)

	* configure.in: Require autoconf 2.12.1 or higher.

1998-12-30  Michael Meissner  <meissner@cygnus.com>

	* random.c (NULL): Don't redefine NULL if it is already defined.

Tue Dec 22 09:43:35 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* argv.c (buildargv): Cast the result of alloca in assignment.

	* choose-temp.c: Include stdlib.h.

	* cplus-dem.c (demangle_arm_pt): Remove unused prototype.
	(snarf_numeric_literal): Constify first parameter.
	(code_for_qualifier): Avoid a gcc extension, make the parameter an
	int, not a char.
	(demangle_qualifier): Likewise.
	(demangle_signature): Cast the argument of a ctype function to
	unsigned char.
	(arm_pt): Add parens around assignment used as truth value.
	(demangle_arm_hp_template): Constify variable `args'.
	(do_hpacc_template_const_value): Cast the argument of a ctype
	function to unsigned char.
	(do_hpacc_template_literal): Remove unused variable `i'.
	(snarf_numeric_literal): Constify parameter `args'.
	Cast the argument of a ctype function to unsigned char.

	* floatformat.c (floatformat_to_double): Add explicit braces to
	avoid ambiguous `else'.

	* fnmatch.c (fnmatch): Change type of variables `c', `c1',
	`cstart' and `cend' to unsigned char.  Cast the argument of macro
	`FOLD', which uses ctype functions, to unsigned char.

	* objalloc.c (free): Add prototype.

Sun Dec 20 16:03:46 1998  Hans-Peter Nilsson  <hp@axis.se>

	* Makefile.in (CFILES): Fix typo: splay-tree.c, not splay-tree.o

Fri Dec 18 17:50:18 1998  David Taylor  <taylor@texas.cygnus.com>

	* cplus-dem.c (demangle_arm_pt): remove declaration -- function
	doesn't exist.
	(do_hpacc_template_literal): remove unused variable `i'.

Fri Dec 18 16:11:43 EST 1998  Andrew MacLeod  <amacleod@cygnus.com>

	* cplus-dem.c (demangle_fund_type): Process CV and u codes before
	bumping the pointer we read from. Also prepend these codes,
	as we do in other places.

1998-12-18  Nick Clifton  <nickc@cygnus.com>

	* cplus-dem.c (demangle_arm_hp_template): Make variable 'args' be
	'const char *' in order to match its usage when calling siblings.
	(snarf_numeric_literal): Make first arg 'const char **' in order
	to match usage.

Mon Dec 14 09:55:50 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* choose-temp.c: Don't check IN_GCC anymore.

	* floatformat.c (floatformat_from_double): Use `const', not `CONST'.
	* memchr.c (memchr): Likewise.
	* memcpy.c (memcpy): Likewise.
	* memmove.c (memmove): Likewise.

	* mkstemp.c: Don't check IN_GCC anymore.
	* pexecute.c: Likewise.
	* splay-tree.c: Likewise.

	* strchr.c (strchr): Use `const', not `CONST'.
	* strrchr.c (strrchr): Likewise.
	* strtol.c (strtol): Likewise.
	* strtoul.c (strtoul): Likewise.

Fri Dec  4 13:51:04 1998  David Taylor   <taylor@texas.cygnus.com>
			  Elena Zannoni  <ezannoni@cygnus.com>
			  Stan Shebs     <shebs@cygnus.com>
			  Edith Epstein  <eepstein@cygnus.com>
			  Andres MacLeod <amacleod@cygnus.com>
			  Satish Pai	 <pai@apollo.hp.com>

	* HP aCC demangling support.
	* cplus-dem.c
	(main): Remove default to HP style demangling, set to EDG
	demangling correctly when -edg specified; set the demangling style
	when user specifies 'edg'. Set strip_underscore to
	prepends_underscore, if not HPUXHPPA.  Set
	current_demangling_style to hp_demangling if HPUXHPPA.  Set
	current demangling style correctly if the switch is hp.  Read
	label correctly also in the HP style case.
	(work_stuff): add temp_start field; add field for volatile member
	function.
	(arm_pt): handle ARM_DEMANGLING and EDG_DEMANGLING styles; HP
	style for this case is the same as ARM.
	(demangle_args): handle EDG_DEMANGLING style; support HP style.
	(demangle_arm_hp_template): new function. (It was
	demangle_arm_pt.); check and set value of temp_start field in
	multiple places. Also, when ceching for end of template args,
	check to see if at end of static member of template class.
	(demangle_class): new local variable : save_class_name_end Don't
	include template args in string defining class.
	(demangle_class_name): use demangel_arm_hp_template.
	(demangle_function_name): handle case where demangling style is
	HP_DEMANGLING and currently point at an 'X' in the mangled name.
	Handle EDG_DEMANGLING style.  Handle constructor and destructor
	ops for HP style.
	(demangle_prefix): handle EDG_DEMANGLING and ARM_DEMANGLING
	styles.  global destructor and constructor for HP style are same
	as for ARM style. Same for local variables.
	(demangle_qualified): handle EDG_DEMANGLING style.
	(demangle_signature): add case for volatile member function.  For
	cases '1' - '9' : initialize the temp_start field to -1 and handle
	the EDG_DEMANGLING style.  for case 'F' : handle EDG_DEMANGLING
	and AUTO_DEMANGLING styles.  If expecting a function and managed
	to demangle the funct args, then handle the LUCID_DEMANGLING,
	ARM_DEMANGLING, and EDG_DEMANGLING styles.  Add case for local
	class name after "Lnnn_ in HP style case. HP style too needs to
	forget types.  _nnn is OK for HP style, so don't report failure.
	(do_hpacc_template_const_value): new function. Handle template's
	value param for HP/aCC.
	(do_hpacc_template_literal): new function.  Handle a template's
	literal parameter for HP aCC.
	(recursively_demangle): new function
	(snarf_numeric_literal): new function.
	(usage): add 'edg' to the list of demangling styles; add hp switch
	to message.

Sat Nov 28 17:25:22 1998  Christopher Faylor <cgf@cygnus.com>

	* pexecute.c: Remove obsolete ifdefed cygwin code.

Fri Nov 27 13:26:06 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* choose-temp.c: Always include libiberty.h.  Avoid redundancies.
	* cplus-dem.c: Likewise.  Conform to libiberty.h.
	* pexecute.c: Likewise.
	* splay-tree.c: Likewise.

1998-11-25  Mike Stump  <mrs@wrs.com>

	* Makefile.in (splay-tree.o): Add config.h dependency.

Mon Nov 23 16:59:49 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	*  configure.in: Use AC_PREREQ(2.12.1).

1998-11-16  Benjamin Kosnik  <bkoz@haight.constant.com>

	* cplus-dem.c (demangle_fund_type): Add demangling for C9x types.

Thu Nov 19 22:15:50 1998  Jeffrey A Law  (law@cygnus.com)

	* mpw.c (mpw_access): Add missing parens.

Thu Nov 19 12:59:21 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Call AC_HEADER_SYS_WAIT.

	* pexecute.c: Include sys/wait.h when !IN_GCC.

Thu Nov 19 14:38:20 1998  Geoffrey Noer  <noer@cygnus.com>

	* pexecute.c: revert back to checking old Cygwin
	preprocessor symbol until some time has passed.

Wed Nov 18 08:52:26 1998  Christopher Faylor <cgf@cygnus.com>

	* pexecute.c: Reorganize WIN32 case to accomodate Cygwin
	since it will now support similar constructs.

Fri Nov 13 19:18:05 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Check for calloc.

	* calloc.c: New	file.

	* xmalloc.c (xcalloc): New function.

Fri Nov 13 08:51:46 EST 1998  Andrew MacLeod  <amacleod@cygnus.com>

	*cplus-dem.c (demangle_prefix): Use the last "__"
	in the mangled name when looking for the signature. This allows
	template names to begin with "__".

1998-11-08  Mark Mitchell  <mark@markmitchell.com>

	* cplus-dem.c (type_kind_t): Add tk_reference.
	(demangle_template_value_parm): Handle it.
	(do_type): Use it for references, instead of tk_pointer.

	* cplus-dem.c (demangle_template_value_parm): Use cplus_demangle,
	not internal_cplus_demangle.

Sat Nov  7 16:02:10 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* choose-temp.c: Don't include gansidecl.h.
	* mkstemp.c: Likewise.
	* pexecute.c: Likewise.

Mon Nov  2 15:05:33 1998  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: detect cygwin* instead of cygwin32*
	* configure: regenerate

Mon Nov  2 10:22:01 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* pexecute.c: Check HAVE_CONFIG_H, not IN_GCC, when determining
	whether to include config.h.  Possibly include unistd.h in the
	!IN_GCC case.  Define VFORK_STRING as a printable function call
	for error messages (either "vfork" or "fork".)  If HAVE_VFORK_H is
	defined, include vfork.h.  If VMS is defined, define vfork()
	appropriately.  Remove vfork check on USG, we're using autoconf.
	(pexecute): Set `errmsg_fmt' to VFORK_STRING instead of checking
	locally what string to use.

1998-10-26  Mark Mitchell  <mark@markmitchell.com>

	* splay-tree.c: Tweak include directives to make sure declarations of
	xmalloc and free are available.

1998-10-25  Mark Mitchell  <mark@markmitchell.com>

	* cplus-dem.c (gnu_special): Fix handling of virtual tables in
	anonymous namespaces.

1998-10-23  Mark Mitchell  <mark@markmitchell.com>

	* cplus-dem.c (work_stuff): Replace const_type and volatile_type
	with type_quals.
	(TYPE_UNQUALIFIED): New macro.
	(TYPE_QUAL_CONST): Likewise.
	(TYPE_QUAL_VOLATILE): Likewise.
	(TYPE_QUAL_RESTRICT): Likewise.
	(code_for_qualifier): New function.
	(qualifier_string): Likewise.
	(demangle_qualifier): Likewise.
	(internal_cplus_demangle): Use them.
	(demangle_signature): Likewise.
	(demangle_template_value_parm): Likewise.
	(do_type): Likewise.
	(demangle_fund_type)): Likewise.

Thu Oct 22 19:58:43 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* splay-tree.c (splay_tree_foreach_helper): Make definition static
	to match prototype.

1998-10-21  Mark Mitchell  <mark@markmitchell.com>

	* splay-tree.c: New file.
	* Makefile.in (CFILES): Add it.
	(REQUIRED_OFILES): Likewise.
	(splay-tree.o): Add dependencies.

Tue Oct 20 12:29:02 1998  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* cplus-dem.c (demangle_qualified): Fix off-by-one when checking
	range of 'K' index.

Thu Oct 15 18:51:12 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* choose-temp.c: Prototype mkstemps() when IN_GCC.

	* cplus-dem.c (consume_count): Cast argument of ctype macro to
	`unsigned char'.
	(cplus_demangle_opname): Cast the result of `strlen' to (int) when
	comparing against one.
	(cplus_mangle_opname): Likewise.
	(demangle_integral_value): Cast argument of ctype macro to
	`unsigned char'.
	(demangle_template_value_parm): Likewise.
	(demangle_template): Initialize variable `bindex'.  Cast the
	result of `strlen' to (int) when comparing against one.  Remove
	unused variable `start_of_value_parm'.
	(demangle_class_name): Cast the result of `strlen' to (int) when
	comparing against one.
	(demangle_prefix): Cast argument of ctype macro to `unsigned char'.
	(gnu_special): Likewise.  Cast the result of `strlen' to (int)
	when comparing against one.
	(demangle_qualified): Cast argument of ctype macro to `unsigned char'.
	(get_count): Likewise.
	(do_type): Likewise.  Cast the result of `strlen' to (int) when
	comparing against one.
	(demangle_fund_type): Cast argument of ctype macro to `unsigned char'.
	(demangle_function_name): Cast the result of `strlen' to (int)
	when comparing against one.

	* mkstemp.c (mkstemps): Cast variable `len' to (int) when
	comparing against one.

Tue Oct 13 23:51:51 1998  Jeffrey A Law  (law@cygnus.com)

	* mkstemp.c: Check HAVE_SYS_TIME_H before including sys/time.h
	* configure.in (AC_CHECK_HEADERS): Check for sys/time.h too.
	* config.in, configure: Rebuilt.

	* getopt.c: Check HAVE_STRINGS_H before including strings.h.
	* configure.in (AC_CHECK_HEADERS): Check for strings.h too.
	* config.in, configure: Rebuilt.

Mon Oct 12 19:15:59 1998  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: in comment, call AC_EXEEXT instead of AM_EXEEXT

Sun Oct 11 17:36:06 1998  Michael Tiemann  <tiemann@holodeck.cygnus.com>

	* Makefile.in (cplus-dem.o, obstack.o): Depend upon config.h.

Thu Oct  8 23:42:08 1998  Jeffrey A Law  (law@cygnus.com)

	* Merge egcs & devo libiberty.

1998-09-08  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* cplus-dem.c (demangle_arm_pt): Demangle anonymous namespaces.

Mon Sep  7 23:29:01 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mkstemp.c: Include config.h even when not IN_GCC.  Wrap header
	inclusions inside HAVE_*_H macros.  Include ansidecl.h when not
	IN_GCC.

	* vasprintf.c: Include stdarg.h/varargs.h first.

	* vprintf.c: Likewise.

Sat Sep  5 03:24:49 1998  Jeffrey A Law  (law@cygnus.com)

	* pexecute.c: Updates from gcc.  Copy in gcc has been removed.  This
	is the canonical copy.  Define ISSPACE if !IN_GCC.
	* alloca.c, vfprintf.c, choose-temp.c, mkstemp.c, getopt.c: Similarly.
	* getopt1.c, obstack.c: Similarly.
	* Makefile.in: Build mkstemp.o

Tue Sep  1 23:12:47 1998  Christopher Faylor <cgf@cygnus.com>

	* configure.in: Include asprintf in list of functions known not
	to be in newlib.
	* configure: Rebuild.

Wed Aug 19 14:05:01 1998  Mumit Khan  <khan@xraylith.wisc.edu>

	* cplus-dem.c (work_stuff): Add dllimported.
	(demangled_prefix): Mark symbols imported from PE DLL.
	(internal_cplus_demangled): Handle.

1998-08-17  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (do_type): Fix simple array handling.  If we fail,
	stay failed.

Mon Aug 17 10:40:34 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c: Include config.h if it exists.  Also, only
	prototype malloc/realloc if we can't get stdlib.h.

Sat Aug 15 16:15:01 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Switch back to checking --with-target-subdir when
	deciding whether to check for newlib, undoing part of July 15
	change.
	* configure: Rebuild.

Thu Aug 13 16:47:38 1998  Mark Mitchell  <mark@markmitchell.com>

	* cplus-dem.c (type_kind_t): New type.
	(demangle_template_value_parm): Add type_kind_t parameter.  Rely
	on this paramter, rather than demangling the type again.
	(demangle_integral_value): Pass tk_integral.
	(demangle_template_: Pass the value returned from do_type.
	(do_type): Return a type_kind_t.  Pass tk_integral to
	demangle_template_value_parm for array bounds.
	(demangle_fund_type): Likewise.

	Also incorporate from GCC version:

	Tue Jul 21 13:28:19 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (do_type): Use demangle_template_value_parm for arrays.

Thu Aug 13 16:47:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (demangle_nested_args): Make function definition
	static to match the prototype.

Tue Jul 28 11:33:09 1998  Mark Mitchell  <mark@markmitchell.com>

	* cplus-dem.c (type_kind_t): New type.
	(demangle_template_value_parm): Add type_kind_t parameter.  Rely
	on this paramter, rather than demangling the type again.
	(demangle_integral_value): Pass tk_integral.
	(demangle_template_: Pass the value returned from do_type.
	(do_type): Return a type_kind_t.  Pass tk_integral to
	demangle_template_value_parm for array bounds.
	(demangle_fund_type): Likewise.

	Also incorporate from GCC version:

	Tue Jul 21 13:28:19 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (do_type): Use demangle_template_value_parm for arrays.

Mon Jul 27 12:16:08 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (ALLOCA): New variable.
	($(TARGETLIB)): Add $(ALLOCA) to library.
	(needed-list): Add $(ALLOCA).
	($(ALLOCA)): Depend upon stamp-picdir.

Sun Jul 19 08:23:17 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (demangle_nested_args): Make function definition
	static to match the prototype.

Wed Jul 15 00:12:58 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Check --with-cross-host rather than
	--with-target-subdir when deciding whether build uses a cross
	compiler, and when deciding where to install the library.
	* configure: Rebuild.

Sun Jul 12 01:27:05 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (demangle_nested_args): Return a value.

Sat Jul 11 16:19:48 1998  Mark Mitchell  <mark@markmitchell.com>

	* cplus-dem.c (string): Move definition before work_stuff.
	(work_stuff): Add volatile_type, forgetting_types,
	previous_argument, and nrepeats fields.
	(SCOPE_STRING): New macro.
	(demangle_template): Add `remember' parameter.  Add comment.
	Register the `B' code type here, if remembering.  Tidy.  Fix crash
	on NULL tmpl_argvec.  Be consistent with use of tname/trawname.
	(demangle_nested_args): New function.
	(internal_cplus_demangle): Handle volatile-qualified member
	functions.
	(mop_up): Delete the previous_argument string if present.
	(demangle_signature): Tidy.  Handle volatile-qualified member
	functions.  Handle back-references using the `B' code.  Use extra
	parameter to demangle_template and SCOPE_STRING where appropriate.
	(demangle_template_value_parm): Fix thinko; 'B' is not an integral
	code.
	(demangle_class): Use SCOPE_STRING.
	(gnu_special): Pass additional argument to demangle_template.
	Use SCOPE_STRING.
	(demangle_qualified): Save qualified types for later
	back-references.  Handle constructors and destructors for template
	types correctly.
	(do_type): Tidy.  Use SCOPE_STRING.  Pass extra argument to
	demangle_template.  Use demangled_nested_args.  Don't remember
	qualified types here; that's now done in demangle_qualified.
	Similarly for templates.
	(do_arg): Improve commment.  Handle 'n' repeat code.
	(remember_type): Check forgetting_types.
	(demangle_args): Deal with 'n' repeat codes.  Tidy.

Thu Jul  2 16:26:24 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config.table: Only use mh-fbsd21 on *-*-freebsd2.2.[012], not on
	*-*-freebsd2.2.*.  From Dmitrij Tejblum <tejblum@arc.hq.cti.ru>.

Mon Jun 15 16:29:01 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in (setobjs): Correct quoting error in cygwin32 case.
	From Chris Faylor <cgf@cygnus.com>.

Mon Jun  1 13:47:55 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* obstack.c: Update to latest FSF version.

Mon Jun  1 14:17:36 1998  Mike Stump  <mrs@wrs.com>

	* Makefile.in: Add a dependency on stamp-picdir for the
	objects, so that we can do a parallel build.

Sat May 30 22:17:13 1998  Mumit Khan  <khan@xraylith.wisc.edu>

	* configure.in (checkfuncs): Add missing "'".

Fri May 29 12:40:41 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* obstack.c (_obstack_memory_used):  Elide this function if we're
	on a system with GNU libc.

Tue May 26 18:28:43 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (distclean): Remove config.log.

Tue May 26 15:01:52 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile.in (distclean): Don't remove alloca-conf.h.

Fri May 22 01:38:07 1998  Hans-Peter Nilsson  <hp@axis.se>

	* cplus-dem.c (MBUF_SIZE): Bumped from 512 to 32767.

1998-05-21  Mark Mitchell  <mmitchell@usa.net>

	* cplus-dem.c (do_type): Handle volatile qualification.

1998-05-21  Manfred Hollstein  <manfred@s-direktnet.de>

	* configure.in: Check for unistd.h as well.
	* configure: Rebuild.
	* config.in: Rebuild.
	* getpagesize.c (GNU_OUR_PAGESIZE): Use sysconf only if _SC_PAGESIZE
	is defined in unistd.h. Reformat conditional block for easier reading.

	* config.table (shared): Default to no if ${enable_shared}
	is unset or empty; this logic is used by the toplevel
	configure scripts, too.

Sat May 16 14:01:26 1998  Jeffrey A Law  (law@cygnus.com)

	* config.table: Add line to set enable_shared in the Makefile
	as needed.

Wed May 13 14:24:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (squangle_mop_up): Change return type to void.
	(internal_cplus_demangle): Remove unused parameter `options'.
	All callers changed.
	(cplus_demangle_opname): Remove function wide variable `int i' and
	replace with `size_t i' at each location where it is used.
	(cplus_mangle_opname): change type of `i' from int to size_t.

Wed May 13 13:39:38 1998  Ian Lance Taylor  <ian@cygnus.com>

	* alloca-conf.h: Include config.h.  Check HAVE_ALLOCA_H rather
	than sparc or sun.
	* Makefile.in (argv.o): Depend upon config.h and alloca-conf.h.

Fri May  8 00:23:51 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Set libiberty_topdir correctly when srcdir is
	"." and with_target_subdir is not set.
	* configure: Rebuild.

Thu May  7 13:01:44 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Add *-*-mingw32* case.
	* configure: Rebuild.

Wed May  6 11:33:51 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config.table: Never use a PIC file for *-*-cygwin32*.

	* Makefile.in (config.status): Depend upon config.table.

	* configure.in: On a cygwin32 host, always compile random, and
	don't test for sys_siglist, strsignal, or psignal.
	* configure: Rebuild.

	* clock.c: Check HAVE_SYS_PARAM_H rather than NO_SYS_PARAM_H.
	* getcwd.c: Likewise.
	* getpagesize.c: Likewise.
	* getruntime.c: Likewise.

Tue May  5 18:08:32 1998  Ian Lance Taylor  <ian@cygnus.com>

	Use autoconf tests rather than the old dummy.c test:
	* configure.in: Add AC_ARG_WITH calls for --with-target-subdir and
	--with-newlib.  Add AC_CONFIG_HEADER.  Use AC_REPLACE_FUNCS for
	most functions.  Add special cases to handle newlib and VxWorks.
	Remove target_makefile_frag.  Create stamp-h in AC_OUTPUT if
	CONFIG_HEADERS is set.  Only call config-ml.in in AC_OUTPUT if
	CONFIG_FILES is set; set ac_file before calling it.
	* config.table (arm-*-riscix*, *-*-cygwin32): Remove.
	(*-*-hpux*, *-*-hiux*, *-*-irix4*, *-*-solaris2*): Remove.
	(*-*-sysv4*, *-*-go32, *-*-vxworks5*, *-*-vxworks): Remove
	(i[3456]-*-mingw32*): Remove.
	* Makefile.in (ERRORS_CC, CONFIG_H, NEEDED_LIST): Remove.
	(LIBOBJS): New variable.
	(HOST_OFILES, DO_ALSO, STAGESTUFF): Remove.
	(all): Depend upon needed-list.  Don't check RULE1.
	(@target_makefile_frag@): Remove.
	(COMPILE.c): Include @DEFS@.
	(HFILES): Add alloca-conf.h.
	(REQUIRED_OFILES): Remove basename.o.
	($(TARGETLIB)): New target.
	(stamp-needed, lneeded-list, needed.awk, stamp-config): Remove.
	(lconfig.h, needed2.awk, dummy.o, errors): Remove.
	(needed-list, config.h): Rewrite.
	(RULE1, $(RULE1), RULE2, $(RULE2)): Remove.
	(.always.): Remove.
	(Makefile): Set CONFIG_FILES and CONFIG_HEADERS.
	(stamp-h): New target.
	(atexit.o, clock.o, getcwd.o, getpagesize.o): New targets.
	(basename.o): Don't depend upon config.h.
	(getruntime.o): Depend upon config.h.
	* atexit.c: Include config.h.  Check HAVE_ON_EXIT rather than
	NEED_on_exit.
	* basename.c: Don't include config.h.  Don't check NEED_basename.
	* clock.c: Include config.h.
	* getcwd.c: Likewise.
	* getpagesize.c: Likewise.
	* getruntime.c: Likewise.  Fix checks which set HAVE_GETRUSAGE and
	HAVE_TIMES.
	* strerror.c: Change uses of NEED_sys_errlist to
	HAVE_SYS_ERRLIST.  Likewise for NEED_strerror and HAVE_STRERROR.
	* strsignal.c: Likewise for NEED_sys_siglist and HAVE_SYS_SIGLIST,
	and for NEED_strsignal and HAVE_STRSIGNAL and for NEED_psignal and
	HAVE_PSIGNAL.
	* acconfig.h: New file.
	* dummy.c: Remove.
	* functions.def: Remove.
	* config/mh-cxux7 (HDEFINES): Remove -DHAVE_SYSCONF.
	* config/mh-windows (HDEFINES): Remove.
	* config/mh-cygwin32: Remove.
	* config/mh-go32: Remove.
	* config/mh-irix4: Remove.
	* config/mh-riscix: Remove.
	* config/mh-sysv4: Remove.
	* config/mt-mingw32: Remove.
	* config/mt-vxworks5: Remove.
	* config.in: New file, generated using autoheader.
	* configure: Rebuild.

Mon May  4 13:00:28 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Rewrite to use autoconf.
	* configure: Generate using autoconf.
	* config/mh-a68bsd: Remove.
	* config/mh-apollo68: Remove.
	* config/mh-hpbsd: Remove.
	* config/mh-ncr3000: Remove.
	* config/mh-sysv: Remove.
	* config/mh-aix (RANLIB, INSTALL): Don't define.
	* config/mh-cxux7 (RANLIB, INSTALL): Don't define.
	* config/mh-irix4 (CC, RANLIB, INSTALL): Don't define.
	* config/mh-sysv4 (RANLIB, INSTALL): Don't define.
	* config.table: Change config_shell to CONFIG_SHELL, and use
	libiberty_topdir to find move-if-change.
	(m68k-apollo-bsd*, m68k-apollo-sysv*): Remove.
	(i[3456]86-ncr-sysv4*, *-*-dgux*, hppa*-hp-bsd*): Remove.
	(*-*-irix*, *-*-m88kbcs*, *-*-sysv*): Remove.
	* Makefile.in (srcdir): Set to @srcdir@.
	(VPATH): Likewise.
	(prefix, exec_prefix, bindir, libdir): Set to autoconf variables.
	(SHELL, INSTALL, INSTALL_PROGRAM, INSTALL_DATA): Likewise.
	(CC, CFLAGS, RANLIB)): Likewise.
	(datadir, man*dir, infodir, includedir, MAKEINFO): Remove.
	(target_makefile_frag, host_makefile_frag): Add substitutions.
	(INSTALL_DEST): Set to @INSTALL_DEST@.
	(Makefile): Depend upon config.status.  Don't depend upon
	$(host_makefile_frag) or $(target_makefile_frag).
	(config.status): New target.

Sun May  3 17:58:49 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/mt-sunos4: Remove.  Should be handled by --with-headers
	and --with-libraries options at top level.
	* config.table: Never use mt-sunos4.

	* alloca-conf.h: New file, combining alloca-norm.h and
	alloca-botch.h.
	* alloca-norm.h: Remove.
	* alloca-botch.h: Remove.
	* configure.in: Set shell variables files and links to empty.
	* config.table: Don't set shell variable files.
	* configure.bat: Don't create alloca-conf.h.
	* makefile.vms: Likewise.
	* mpw-config.in: Likewise.
	* vmsbuild.com: Likewise.

Fri May  1 11:41:42 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in ($(HOST_OFILES) $(REQUIRED_OFILES)): Remove old
	target depending upon config.h.
	(alloca.o): Add target depending upon config.h
	(basename.o, choose-temp.o, fnmatch.o): Likewise.
	(getopt.o, getopt1.o, pexecute.o, strerror.o): Likewise.
	(strsignal.o, xstrerror.o): Likewise.

Fri May  1 04:26:25 1998  Peter Schauer <pes@regent.e-technik.tu-muenchen.de>

	* cplus-dem.c (cplus_demangle_opname):  Initialize work.

Mon Apr 27 15:53:30 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>

	* cplus-dem.c (demangle_qualified): Replace missing else.

Sun Apr 26 15:38:50 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* cplus-dem.c (gnu_special): Fix off-by-one bug when checking the
	length in the name of a virtual table.

Wed Apr 22 10:53:49 EDT 1998 Andrew MacLeod  <amacleod@cygnus.com>

	* cplus-dem.c (struct work stuff): Add field for B and K mangle codes.
	(cplus_demangle_opname): Call mop_up_squangle.
	(cplus_demangle): Initialize squangle info, then call
	internal_cplus_demangle. (Most code moved there as well)
	(internal_cplus_demangle): New function, performs most of what use
	to be done in cplus_demangle, but is only called with this file.
	(squangle_mop_up): New function to clean up B and K code data.
	(mop_up): set pointers to NULL after freeing.
	(demangle_signature, demangle_template, demangle_class): Add
	switch elements to handle K and B codes.
	(demangle_prefix, gnu_special, demangle_qualified): Add
	code to handle K and B codes.
	(do_type, demangle_fund_type): Handle B and K codes.
	(remember_Ktype): New function to store K info.
	(register_Btype, remember_Btype): New functions for B codes.
	(forget_B_and_K_types): New function to destroy B and K info.

Fri Apr 10 01:49:10 1998  Jeffrey A Law  (law@cygnus.com)

	* COPYING.LIB, choose-temp.c, cplus-dem.c: Sync with egcs & gcc.

Thu Mar  5 09:23:28 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* config.table: Make locating frag files failsafe even for the
	special case if configuring and building in srcdir.

Mon Feb 23 14:33:15 1998  Ian Lance Taylor  <ian@cygnus.com>

	* choose-temp.c: Fix handling of sys/file.h to work in libiberty.

Sun Feb 22 18:03:23 1998  Jeffrey A Law  (law@cygnus.com)

	* choose-temp.c: Sync with copy in gcc.

Thu Feb 12 16:29:49 1998  Ian Lance Taylor  <ian@cygnus.com>

	* getopt.c: Update to latest FSF version.
	* getopt1.c: Likewise.

Tue Feb 10 16:58:33 1998  Stan Shebs  <shebs@andros.cygnus.com>

	* cplus-dem.c (gnu_special): Don't get confused by .<digits>
	strings that are not actually lengths.

Fri Feb  6 01:35:17 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* Makefile.in (FLAGS_TO_PASS): Don't pass PICFLAG.
	(.c.o): Check value of enable_shared, not PICFLAG.
	(stamp-picdir): Dito.

Thu Feb  5 18:48:56 1998  Geoffrey Noer  <noer@cygnus.com>

	* config/mh-cygwin32: remove vasprintf.o from EXTRA_OFILES
	since it gets built automatically

Sun Feb  1 02:52:32 1998  Mike Stump  <mrs@wrs.com>

	* config.table (vxworks configs): Default to VxWorks 5.x, as that is
	the currently shipping OS.

Tue Jan 27 16:08:20 1998  Pat Rankin  <rankin@eql.caltech.edu>

	* vmsbuild.com [REQUIRE_OFILES]: Synchronized with Makefile.in:
	Add fnmatch.o and objalloc.o; remove vasprintf.o.
	[config.h]: Define NEED_strsignal.

Mon Jan 19 12:20:01 1998  Ian Lance Taylor  <ian@cygnus.com>

	* functions.def: Correct argument types for strerror and
	strsignal.  Reported by Alex Gutman <agutman@emc.com>.

Sun Jan 18 15:57:28 1998  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* vasprintf.c (int_vasprintf): Increase buffer size for float/double
	values.

Sat Jan 17 22:28:38 1998  Mumit Khan  <khan@xraylith.wisc.edu>
			  J.J. VanderHeijden <J.J.vanderHeijden@student.utwente.nl>

	Add mingw32 support.
	* pexecute.c (pexecute): New function for mingw32. Supports pipes.
	(pwait): New function for mingw32.

	* config.table (i[3456]86-*-mingw32*): Support for i386-mingw32.
	* config/mt-mingw32: New file.
	* xmalloc.c (first_break): Not used for mingw32.
	(xmalloc_set_program_name): Don't use sbrk on mingw32.
	(xmalloc): Likewise.
	(xrealloc): Likewise.

Sat Jan 17 22:28:05 1998  Jeffrey A Law  (law@cygnus.com)

	* choose-temp.c: Sync with gcc version.

Tue Jan 13 18:34:39 1998  Jim Wilson  <wilson@cygnus.com>

	* Makefile.in (install_to_libdir, install_to_tooldir): Add MULTISUBDIR
	to all filenames in libdir and tooldir.
	(distclean): Do MULTICLEAN before deleting Makefile.
	(stamp-needed, stamp-config): Add MULTISRCTOP to
	pathname for move-if-change.

Thu Dec  4 17:25:19 1997  Jeffrey A Law  (law@cygnus.com)

	* strsignal.c (sys_nsig): Try NSIG and _NSIG.

Wed Nov 19 13:37:06 1997  Michael Meissner  <meissner@cygnus.com>

	* alloca-norm.h (alloca, GCC case): Don't redefine alloca if it
	was already defined previously.

Mon Nov 10 12:48:03 1997  Philippe De Muyter  <phdm@macqel.be>

	* Makefile.in (INSTALL): Use ../install-sh, not install.

Tue Oct 28 23:41:15 1997  Judy Goldberg  <jodyg@idt.net>

	* Makefile.in (CFILES): Add pexecute.c.

Wed Oct 15 19:13:48 1997  Ian Lance Taylor  <ian@cygnus.com>

	* asprintf.c: Consistently use either stdarg or varargs.

Tue Oct 14 12:01:00 1997  Mark Mitchell  <mmitchell@usa.net>

	* cplus-dem.c (demangle_signature): Don't look for return types on
	constructors.  Handle member template constructors.

Fri Oct  3 17:53:30 1997  Ian Lance Taylor  <ian@cygnus.com>

	* README: Fix configuration instructions.

Mon Sep 29 12:28:41 1997  Ian Lance Taylor  <ian@cygnus.com>

	* pexecute.c: Update to current version from /gd/gnu/lib:

	Mon Sep 29 12:27:59 1997  Ian Lance Taylor  <ian@cygnus.com>

	* pexecute.c: Use spawn if __CYGWIN32__.

	1997-08-08  Paul Eggert  <eggert@twinsun.com>

	* pexecute.c: Include "config.h" first, as per autoconf manual.

	Fri Jun 27 15:20:29 1997  Scott Christley <scottc@net-community.com>

	* pexecute.c (fix_argv): New function.
	(pexecute): Win32 but not Cygwin32 needs its arguments fixed.
	Add underscore to cwait function call.

Sun Sep 28 12:00:52 1997  Mark Mitchell  <mmitchell@usa.net>

	* cplus-dem.c (demangle_template): Add new parameter.  Handle new
	template-function mangling.
	(consume_count_with_underscores): New function.
	(demangle_signature): Handle new name-mangling scheme.

Wed Sep 24 00:31:59 1997  Felix Lee  <flee@yin.cygnus.com>

	* asprintf.c: stdarg.h when ALMOST_STDC
	* config/mh-windows (EXTRA_OFILES): add asprintf.o and
	strncasecmp.o.

Thu Aug 28 14:27:15 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* vasprintf.c (vasprintf): Allow for _BSD_VA_LIST_.

	* config.table: Add case for FreeBSD 2.1 and 2.2, needs mh-fbsd21.

	* config/mh-fbsd21 (EXTRA_OFILES): Force vasprintf.o

Wed Sep 10 12:43:10 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (demangle_fund_type): Change "complex" to "__complex".

Fri Sep  5 16:34:42 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* asprintf.c (asprintf): New file.
	* Makefile.in (CFILES): Add asprintf.c
	* functions.def: Ditto.

Thu Aug 28 18:53:34 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* argv.c (dupargv): New function, duplicate an argument vector.

Tue Aug 19 20:28:45 1997  Geoffrey Noer  <noer@cygnus.com>

	* config/mh-cygwin32: also build random.o

Tue Aug 19 17:10:56 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c: Add 'extern' to prepends_underscore.

Wed Jul 30 11:42:19 1997  Per Bothner  <bothner@cygnus.com>

	* cplus-dem.c: Various changes to produce Java output when passed
	DMGL_JAVA.  Thus "::" becomes "." and "JArray<Foo>" becomes "Foo[]".
	(main): Support --java and -j flags to set DMGL_JAVA.

Tue Jul 22 19:05:23 1997  Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>

	* config/mh-go32 (CC, AR, RANLIB): Don't define.

Tue Jul 22 17:49:54 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (REQUIRED_OFILES): Add pexecute.o.
	(pexecute.o): New target.

	* Makefile.in (stamp-needed): New target, replacing needed-list.
	(needed-list): Just depend upon stamp-needed.
	(stamp-config): New target, replacing config.h.
	(config.h): Just depend upon stamp-config.
	(mostlyclean): Remove stamp-*.

Thu Jun 12 11:00:18 1997  Angela Marie Thomas (angela@cygnus.com)

	* Makefile.in (FLAGS_TO_PASS): pass INSTALL, INSTALL_PROGRAM and
	INSTALL_DATA for multilibbed installs

Tue Jun  3 13:21:05 1997  Doug Evans  <dje@canuck.cygnus.com>

	Tue Dec 10 09:44:57 1996  Paul Eggert  <eggert@twinsun.com>

	* choose-temp.c (choose_temp_base): Don't dump core if TMPDIR is empty.

	* choose-temp.c (try): Insist that temp dir be searchable.

	Wed Oct 23 17:36:39 1996  Doug Rupp  (rupp@gnat.com)

	* choose-temp.c (choose_temp_base): On VMS, use proper syntax
	for current directory.

	Sat Feb 15 19:03:48 1997  Geoffrey Noer  (noer@cygnus.com)

	* pexecute.c: Remove special cases for cygwin32.
	(pwait): Remove local definition of `pid'.

	Tue Nov 12 18:26:15 1996  Doug Rupp  (rupp@gnat.com)

	* pexecute.c (vfork): Supply new definition for VMS.
	(pwait): Use waitpid instead of wait for VMS.

Tue May 20 14:02:20 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cplus-dem.c (do_type): Handle `J'.
	(demangle_fund_type): Print "complex" for it.

Wed Apr 30 12:15:45 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* configure.in: Don't turn on multilib here.

Mon Apr 28 19:04:31 1997  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* obstack.c: move _obstack_memory_used outside of ifdef.  Cannot be
	elided; needed by gdb and not present in libc.

Thu Apr 24 19:33:47 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (clean): Remove tmpmulti.out.

Tue Apr 22 10:25:15 1997  Fred Fish  <fnf@cygnus.com>

	* floatformat.c (floatformat_ieee_double_littlebyte_bigword):
	Add new floatformat, mainly for ARM doubles.

Mon Apr 14 12:11:16 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config.table: Use ${config_shell} with ${moveifchange}.  From
	Thomas Graichen <graichen@rzpd.de>.

Fri Apr  4 03:09:24 1997  Ulrich Drepper  <drepper@cygnus.com>

	* configure.in: Enable multilibing by default.
	Update multilib template to read config-ml.in.

Tue Apr  1 16:26:39 1997  Klaus Kaempf  <kkaempf@progis.de>

	* makefile.vms: Add objalloc.

Mon Mar 31 23:57:51 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* cplus-dem.c (demangle_it): Add prototype declaration.
	(usage, fatal): Likewise.

	* xexit.c (_xexit_cleanup): Add prototype.

	* strerror.c (init_error_tables): Declare.

Fri Mar 28 11:43:20 1997  H.J. Lu  <hjl@lucon.org>

	* functions.def: Add DEF of vasprintf, and DEFFUNC of strsignal.
	* strsignal.c: Only define strsignal if NEED_strsignal.
	* Makefile.in (REQUIRED_OFILES): Remove vasprintf.o.
	* configure.in: Add NEED_strsignal to xconfig.h.  Add vasprintf.o
	to xneeded-list.
	* config/mh-cygwin32 (HDEFINES): Add -DNEED_strsignal.
	(EXTRA_OFILES): Define to vasprintf.o.
	* config/mh-windows (HDEFINES): Add -DNEED_strsignal.
	(EXTRA_OFILES): Add vasprintf.o.
	* config/mt-vxworks5 (vxconfig.h): Define NEED_strsignal.
	(vxneeded-list): Add vasprintf.o.

Thu Mar 20 17:02:09 1997  Ian Lance Taylor  <ian@cygnus.com>

	* objalloc.c: Include <stdio.h>.

Mon Mar 17 19:23:11 1997  Ian Lance Taylor  <ian@cygnus.com>

	* objalloc.c: New file.
	* Makefile.in (CFILES): Add objalloc.c
	(REQUIRED_OFILES): Add objalloc.o.
	(objalloc.o): New target.

Sat Mar 15 18:49:41 1997  Ian Lance Taylor  <ian@cygnus.com>

	* obstack.c: Update to current FSF version.

Fri Mar 14 14:18:47 1997  Ian Lance Taylor  <ian@cygnus.com>

	* cplus-dem.c: Add prototypes for all static functions.
	(mystrstr): Make static.  Make arguments and result const.
	(cplus_match): Remove; not used.

Tue Mar 11 14:20:31 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cplus-dem.c (gnu_special): Call demangled_fund_type for other
	__t* symbols.

Tue Mar 11 15:41:21 1997  H.J. Lu  <hjl@lucon.org>

	* spaces.c: Declare malloc and free properly.
	* strsignal.c (init_signal_tables): Add prototype.
	* xatexit.c (_xexit_cleanup): Add parameter declarations.

Wed Feb 19 15:43:24 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* Makefile.in (lneeded-list): If alloca.o is needed, xexit.o is
	also required because of xmalloc.o.

Fri Feb 14 13:43:38 1997  Ian Lance Taylor  <ian@cygnus.com>

	* strsignal.c: Unconditionally redefine sys_siglist around the
	inclusion of the system header files.

Thu Feb 13 22:01:04 1997  Klaus Kaempf  <kkaempf@progis.de>

	* makefile.vms: Remove 8 bit characters.  Update to latest
	gcc release.

Tue Feb  4 11:52:19 1997  Ian Lance Taylor  <ian@cygnus.com>

	* strsignal.c: Use NEED_sys_siglist instead of
	LOSING_SYS_SIGLIST.
	* config.table: Don't use mh-lynxos.
	* config/mh-lynxos: Remove.

Thu Jan 16 14:51:03 1997  Bob Manson  <manson@charmed.cygnus.com>

	* cplus-dem.c: Fix indenting; make identical to the copy
	in GCC.
	(do_type, case 'M'): Check for a template as well as a class.

Thu Dec 19 13:51:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* config/mt-vxworks5 (vxneeded-list): Remove sigsetmask.o, since
	vxworks 5.[0-3] all have sigsetmask in them; the one provided by
	libiberty is incorrect, as well.

Mon Dec  2 15:03:42 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* alloca.c (alloca): When compiled with an ANSI/ISO compiler,
	alloca takes a size_t argument, not just unsigned.

Mon Nov 18 15:42:08 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c: Note that this file also lives in GCC.

Mon Nov 18 15:19:00 1996  Dawn Perchik  <dawn@critters.cygnus.com>

	* alloca.c: Remove include of libiberty.h for hpux.
	* argv.c:  Replace defs from libiberty.h.
	* spaces.c: Put back externs from removed from libiberty.h.
	* vasprintf.c: Remove include of libiberty.h for hpux.

Mon Nov 18 14:08:00 1996  Dawn Perchik  <dawn@critters.cygnus.com>

	* cplus-dem.c: Checking in again; last checkin filed due to sticky tag.

Wed Nov 13 08:22:00 1996  Dawn Perchik  <dawn@critters.cygnus.com>

	* cplus-dem.c: Revert last two commits due to conflicts with
	hpux system headers.

Wed Nov 13 08:22:00 1996  Dawn Perchik  <dawn@critters.cygnus.com>

	* alloca.c, argv.c, spaces.c, strcasecmp.c, vasprintf.c, vprintf.c:
	Revert last commit due to conflicts with hpux system headers.

Wed Nov 13 10:36:50 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* cplus-dem.c (x{m,re}alloc): Make declarations compatibile with
	libiberty.h when compiled with a standard compiler.

Tue Nov 12 16:31:00 1996  Dawn Perchik  <dawn@critters.cygnus.com>

	* alloca.c: Include libiberty.h for definition of xmalloc.
	Don't redefine NULL.
	* argv.c: Move prototypes to libiberty.h.
	* cplus-dem.c: Include libiberty.h for definition of xmalloc.
	Don't redefine NULL.
	Use casts to eliminate compiler warnings.
	* spaces.c: Remove prototypes for malloc and free which are
	already in libibrty.h.
	* strcasecmp.c: Use casts to eliminate compiler warnings.
	* vasprintf.c: Include libiberty.h for definition of malloc.
	Don't redefine NULL.
	* vprintf.c: Include stdarg.h if __STDC__.

Fri Oct 11 15:42:12 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* config/mh-windows:  Add strcasecmp.o to EXTRA_OFILES.

Fri Oct 11 11:16:31 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw.c (mpwify_filename): Rewrite to simplify, and to handle
	upward components correctly.

Tue Oct  8 08:55:34 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* config.table, config/mh-windows:  Add support for building under
	MSVC (the Microsoft build environment).

Mon Oct  7 10:50:27 1996  Ian Lance Taylor  <ian@cygnus.com>

	* fnmatch.c: Undef const if not __STDC__.

Thu Oct  3 13:46:39 1996  Ian Lance Taylor  <ian@cygnus.com>

	* fnmatch.c: New file.
	* Makefile.in (CFILES): Add fnmatch.c.
	(REQUIRED_OFILES): Add fnmatch.o.
	(fnmatch.o): New target.

Wed Sep 18 14:49:13 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (demangle_template): Fix handling of address args.
	(gnu_special): Handle type_info stuff.

Fri Sep 13 17:52:55 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw.c (DebugPI): Make settable from the env var DEBUG_PATHNAMES.
	(mpwify_filename): Handle "::/" case.

Thu Sep 12 13:30:40 1996  Geoffrey Noer  <noer@cygnus.com>

	* config/mh-cygwin32: new file (need -DNEED_basename and
		-DNEED_sys_siglist for native NT rebuilding)
	* config.table (*-*-cygwin32): new entry
	* choose-temp.c: bring in sync with gcc (revert Aug 17 change)

Thu Aug 29 16:48:45 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config.table (i[345]86-*-*): Recognize i686 for pentium pro.

Tue Aug 27 13:47:58 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* pexecute.c (pexecute) [MPW]: Remove old bogus code that
	messed with arguments that included a '/', add escape chars
	to double quotes, remove const decl from arg that Mac
	compilers don't seem to like.

Sat Aug 17 04:44:27 1996  Geoffrey Noer  <noer@cygnus.com>

	* pexecute.c: Update test for win32 (&& ! cygwin32).
	* choose-temp.c: fix WIN32 preprocessor defines

Thu Aug 15 12:26:48 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Add @DASH_C_FLAG@ and @SEGMENT_FLAG({Default})@
	to editing of default makefile rule.

Sun Aug 11 21:03:27 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* alloca-norm.h:  Include <malloc.h> if _WIN32.
	* argv.c:  Include non-prototyped decls for malloc and string
	functions if ! _WIN32 or if __GNUC__.

Thu Aug  8 12:42:40 1996  Klaus Kaempf  <kkaempf@progis.de>

	* config.h-vms: New file.
	* makefile.vms: Use it.

Wed Aug  7 17:16:12 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* getopt.c (_getopt_internal):  If argc is 0, just return (before
	we reference *argv and segfault).

Mon Aug  5 01:29:08 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (distclean): Add multilib.out.

Thu Jul 18 17:40:55 1996  Ian Lance Taylor  <ian@cygnus.com>

	* alloca-norm.h: Change #ifdef sparc to #if defined (sparc) &&
	defined (sun).  From Andrew Gierth <ANDREWG@microlise.co.uk>.

Mon Jul  1 13:40:44 1996  Ken Raeburn  <raeburn@cygnus.com>

	Tue May 28 15:29:03 1996  Pat Rankin  <rankin@eql.caltech.edu>

	* vmsbuild.com (REQUIRD_OFILES): Add choose-temp.o and xstrdup.o.

	Thu Jan 25 18:20:04 1996  Pat Rankin  <rankin@eql.caltech.edu>

	* vmsbuild.com: Changes to handle DEFFUNC(on_exit).
	(do_ofiles): Allow nonexistent source file in pass 3.
	(chk_deffunc): New routine.

Tue Jun 25 19:24:43 1996  Doug Evans  <dje@canuck.cygnus.com>

	* pexecute.c (PEXECUTE_VERBOSE): Define.
	(MPW pexecute): Check flags & PEXECUTE_VERBOSE instead of verbose_flag.

Tue Jun 25 23:11:48 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (docdir): Removed.

Tue Jun 25 23:01:07 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (oldincludedir): Removed.

Tue Jun 25 22:50:07 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (datadir): Set to $(prefix)/share.

Thu Jun 20 21:17:52 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cplus-dem.c (demangle_arm_pt): Reindent.  Avoid endless loop by
	checking for errors from do_type.

Tue Jun 18 14:36:19 1996  Klaus Kaempf  <kkaempf@progis.de>

	* makefile.vms: New file.
	* xmalloc.c: If VMS, include <stdlib.h> and <unixlib.h> rather
	than declaring malloc, realloc, and sbrk.

Mon Jun 10 13:17:17 1996  Doug Evans  <dje@canuck.cygnus.com>

	* pexecute.c: New file.

Wed Jun  5 16:57:45 1996  Richard Henderson  <rth@tamu.edu>

	* xmalloc.c: Declare sbrk.

Sat May  4 05:08:45 1996  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* alloca-norm.h:  Add SPARCworks cc compatible __builtin_alloca
	declaration.

Mon Apr 22 18:41:49 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xstrerror.c: Include <stdio.h>.

Sun Apr 21 11:55:12 1996  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (CFILES): Add atexit.c.

Sun Apr 21 09:50:09 1996  Stephen L Moshier  (moshier@world.std.com)

	* choose-temp.c: Include sys/types.h before sys/file.h for sco3.2v5.

Wed Apr 17 11:17:55 1996  Doug Evans  <dje@canuck.cygnus.com>

	* choose-temp.c: Don't #include sys/file.h ifdef NO_SYS_FILE_H.
	#include <stdio.h>
	* config/mt-vxworks5 (HDEFINES): Define NO_SYS_FILE_H.

Tue Apr 16 11:27:16 1996  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (lneeded-list): If alloca.o is needed, so is xmalloc.o.
	Reverts Feb 8, 1995 change.

Mon Apr 15 12:53:26 1996  Doug Evans  <dje@canuck.cygnus.com>

	* choose-temp.c: New file.
	* Makefile.in (CFILES): Add choose-temp.c.
	(REQUIRED_OFILES): Add choose-temp.o.

Sat Apr 13 14:19:30 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* floatformat.c (floatformat_to_double):  Don't bias exponent when
	handling zero's, denorms or NaNs.

Thu Apr 11 13:36:56 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* floatformat.c (floatformat_to_double):  Fix bugs with handling
	numbers with fractions < 32 bits.

Mon Apr  8 14:48:34 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config.table: Permit --enable-shared to specify a list of
	directories.

Tue Mar 19 22:02:07 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (demangle_template): Fix for non-mangled pointer
	arguments.

Fri Mar  8 17:24:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: If srcdir is `.' and with_target_subdir is not
	`.', then set MULTISRCTOP before calling config-ml.in.

Thu Mar  7 13:37:10 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw.c (mpw_open): Add debugging output option.

Wed Mar  6 17:36:03 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (demangle_template): Fix for address-of-extern arguments.

Tue Feb 27 12:00:50 1996  Raymond Jou  <rjou@mexican.cygnus.com>

	* mpw.c (mpwify_filename): Change 6 to 5 in
	strncmp (unixname, "/tmp/", 5).

Tue Feb 20 10:55:53 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cplus-dem.c (demangle_template): Initialize is_bool.  Correctly
	handle 0 as a pointer value parameter.

Mon Feb  5 16:41:44 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (all): Depend upon required-list.
	(required-list): New target.
	(clean): Remove required-list.

Wed Jan 31 10:19:41 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	* win32.c: Deleted.
	* config.table (i386-*-win32): Deleted.
	* config/mh-i386win32: Deleted.

Thu Jan 18 11:34:17 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cplus-dem.c (cplus_demangle_opname): Change opname parameter to
	const char *.
	(cplus_mangle_opname): Change return type and opname parameter to
	const char *.  Don't cast return value.

Tue Jan 16 12:13:11 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw.c: Include Timer.h, in order to get m68k Microseconds trap
	definition.

Wed Jan  3 13:15:04 1996  Fred Fish  <fnf@cygnus.com>

	* obstack.c: Update copyright to 1996.
	(_obstack_memory_used): Define new function.  Called via
	obstack_memory_used macro.

Thu Dec 28 11:39:40 1995  Ian Lance Taylor  <ian@cygnus.com>

	* xstrdup.c: New file.
	* Makefile.in (CFILES): Add xstrdup.c.
	(REQUIRED_OFILES): Add xstrdup.o.
	(xstrdup.o): New target.

Mon Dec 11 18:18:52 1995  Mike Stump  <mrs@cygnus.com>

	* atexit.c: New stub to provide atexit on systems that have
	on_exit, like SunOS 4.1.x systems.
	* functions.def (on_exit, atexit): Ditto.

Mon Dec 11 15:42:14 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw.c (mpw_abort): Remove decl.
	(mpw_access): Move debugging printf.

Sat Dec  2 01:25:23 1995  Ian Lance Taylor  <ian@cygnus.com>

	* config.table: Consistently use ${host} rather than ${xhost} or
	${target}.
	* configure.in: Don't bother to set ${xhost} before calling
	config.table.

Tue Nov 28 14:16:57 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* Makefile.in (.c.o): Use test instead of the left bracket, to
	avoid problems with some versions of make.

Tue Nov 28 11:45:17 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Fix INCDIR edit to work with Nov 14 change.

Tue Nov 21 11:26:34 1995  Fred Fish  <fnf@rtl.cygnus.com>

	* config/mh-hpux: Remove.  It was only used to define EXTRA_OFILES,
	which was set to just alloca.o, which is now automatically marked
	as needed by the autoconfiguration process.

Tue Nov 21 14:15:06 1995  Ian Lance Taylor  <ian@cygnus.com>

	* config.table: Check ${with_cross_host} rather than comparing
	${host} and ${target}.

Thu Nov 16 14:34:42 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: If with_target_subdir is empty, set xhost to
	${host} rather than ${target} before calling config.table.

Tue Nov 14 01:38:30 1995  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (MULTITOP): Deleted.
	(MULTISRCTOP, MULTIBUILDTOP): New.
	(FLAGS_TO_PASS): Delete INCDIR.
	(INCDIR): Add $(MULTISRCTOP).
	(install_to_libdir): Add $(MULTISUBDIR).  Call $(MULTIDO).
	* configure.in: Delete call to cfg-ml-com.in.  Call config-ml.in
	instead of cfg-ml-pos.in.
	(cross-compile check): Change to test for with_target_subdir.
	(EXTRA_LINKS): Delete.

Sun Nov 12 12:13:04 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Add getpagesize.c.o to needed-list.
	* mpw.c [USE_MW_HEADERS]: Conditionalize compiling of
	functions that are supplied by Metrowerks libraries.
	(fstat): Clean up descriptor->pointer conversion code.
	(InstallConsole, etc): Empty definitions, for when linking
	with SIOUX.

Sun Nov  5 19:25:27 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* Makefile.in (FLAGS_TO_PASS):  Also pass PICFLAGS.
	(.c.o):  Stylistic change.

Thu Nov  2 12:06:29 1995  Ian Lance Taylor  <ian@cygnus.com>

	* strtol.c, strtoul.c: Don't include <stdlib.h>.  From
	phdm@info.ucl.ac.be (Philippe De Muyter).

Wed Nov  1 11:59:36 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Correct sed call.

Mon Oct 30 13:03:45 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* configure.in:  Clean up / simplify for native.

	* configure.in:  Merge in stuff from ../xiberty/configure.in.
	* Makefile.in (CC):  Add definition (so it can be overrridden
	by ../configure).

Tue Oct 24 17:57:27 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Leave strerror.c.o in standard list of functions.
	* mpw.c (R_OK, ENOENT, EACCESS, ENOSYS): Remove.
	(link): Remove useless definition with error return.
	(last_microseconds, warn_if_spin_delay, record_for_spin_delay):
	Use UnsignedWide type for microsecond counts.

Thu Oct 19 10:52:07 1995  Michael Meissner  <meissner@wogglebug.tiac.net>

	* memcmp.c (memcmp): Argument types are const void *, not void
	*const.

	* strncasecmp.c (strncasecmp): Include ansidecl.h/stdarg.h, not
	sys/types.h.
	* strcasecmp.c (strcasecmp): Ditto.

Tue Oct 10 11:03:24 1995  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (BISON):  Remove macro.

Tue Sep 26 15:06:46 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* Makefile.in (HFILES): Add default empty definition.
	* mpw-config.in (config.h): Only update if changed.
	* mpw-make.in: Remove.
	* mpw-make.sed: New file, edits Makefile.in into MPW makefile.
	* mpw.c: Remove semi-clone of strerror code.
	(sys_nerr, sys_errlist): Define here.
	(Microseconds): Only define as A-line trap if m68k Mac.

Wed Sep 20 12:53:32 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (maintainer-clean): New synonym for distclean.

Mon Aug 28 19:47:52 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* config.table:  For host, generalize rs6000-ibm-aix*
	to *-ibm-aix* so we also include powerpc.

Tue Aug 22 03:18:05 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>

	Fri Jun 16 18:35:40 1995  Pat Rankin  (rankin@eql.caltech.edu)

	* xstrerror.c: New file.
	* Makefile.in, vmsbuild.com: Compile it.

Mon Jul 31 12:16:32 1995  steve chamberlain  <sac@slash.cygnus.com>

	* config.table (i386-*-win32): New.

Fri Jul 21 11:35:52 1995  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (MULTITOP): New variable.
	(MULTIDIRS, MULTISUBDIR, MULTIDO, MULTICLEAN): Likewise.
	(all): Add multilib support.
	(install_to_tooldir, *clean): Likewise.

Mon Jul 10 11:47:27 1995  Ken Raeburn  <raeburn@cygnus.com>

	* makefile.dos (OBJS): Add hex.o.  From DJ Delorie.

Fri Jun 30 17:28:59 1995  Pat Rankin  (rankin@eql.caltech.edu)

	* vmsbuild.com:  create "new-lib.olb", build libiberty under that
	name, and then make it become "liberty.olb" when done, so that an
	incomplete build attempt never leaves behind something which looks
	like a complete library.

Thu Jun 29 00:22:02 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* config/mh-i386pe: New file for PE hosts.
	* config.table: Understand PE hosts.

Wed Jun 28 19:13:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* cplus-dem.c: Update from gcc.

	* argv.c, dummy.c: If __STDC__, #include "alloca-conf.h" after
	<stddef.h>.
	* alloca-norm.h: If __STDC__, declare alloca with its parameter.

Thu Jun 22 18:57:47 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.in (ALL_CFLAGS): Define NEED_basename.
	* mpw.c: Only test DebugPI once whenever printing debug info.
	(mpwify_filename): If filename is /tmp/foo, change it into :_foo,
	also fix to not write on input filename buffer.
	(mpw_access): Use stat() instead of open(), works for directories
	as well as files.

Mon Jun 19 00:33:22 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* Makefile.in: Massage broken shells that require 'else true'.

Sat Jun 17 23:21:58 1995  Fred Fish  <fnf@cygnus.com>

	* alloca-norm.h: Declare alloca as type "PTR" to match functions.def.
	Declare __builtin_alloca in the sparc case, as argv.c did.
	* argv.c: Replace inline version of alloca-norm.h at start of file with
	a #include of alloca-conf.h.  Precede it with an include of ansidecl.h
	because alloca-norm.h needs to declare alloca as "PTR".

Mon Jun 12 14:24:26 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* win32.c: New file.

Fri Jun  9 15:16:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* dummy.c: #include "alloca-conf.h".

Wed Jun  7 11:46:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* Makefile.in (mostlyclean): Remove stamp-picdir.
	(clean): Don't.

Mon Jun  5 18:46:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* config.table (frags): Use toplevel pic frags.

	* Makefile.in (PICFLAG): New macro.
	(all): Depend on stamp-picdir.
	(needed-list): Ditto.
	(.c.o): Also build pic object.
	(stamp-picdir): New rule.
	(mostlyclean): Remove pic.
	(clean): Remove stamp-picdir.

Fri Mar 24 16:55:48 1995  Pat Rankin  (rankin@eql.caltech.edu)

	* vmsbuild.com (config.h): Add `#define NEED_basename'.

Tue May 23 10:12:46 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* clock.c, getopt.c, strtod.c, vsprintf.c:  Change from using LGPL
	to libio-style copyright.
	* getpagesize.c:  Remove FSF copyright.

Sat May 20 12:30:23 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>

	Added improved VMS support from Pat Rankin:

	Fri Mar 17 18:40:36 1995  Pat Rankin  (rankin@eql.caltech.edu)

	* vmsbuild.com:  new file.

	* getpagesize.c (getpagesize):  implement for VMS;
	* strerror.c (strerror, strerrno, strtoerrno):  add rudimentary
	support for EVMSERR.

Thu May 18 17:01:42 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>

	Wed May 10 14:28:16 1995 Richard Earnshaw (rearnsha@armltd.co.uk)

	* floatformat.c (floatformat_arm_ext): Define.

Tue May 16 13:30:59 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* basename.c, bcmp.c, getcwd.c, insque.c, rename.c, sigsetmask.c,
	strerror.c, strsignal.c:  Remove FSF copyright.
	* sigsetmask.c: #include <sys/types.h> - seems to be needed by ISC.

Mon May 15 19:53:17 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* bcopy.c, bzero.c, memcmp.c, memcpy.c, memset.c, strchr.c,
	strrchr.c, strstr.c, vfork.c:  Remove FSF Copyright, because this
	might contaminate libstdc++ with the LGPL.  (OK'd by RMS 11 Oct 94.)
	* strchr.c, strrchr.c:  Add cast to suppress const warning.

Thu May  4 14:36:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* cplus-dem.c: Use const instead of CONST.  Don't include
	ansidecl.h directly.

Wed Apr 19 01:30:27 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* cplus-dem.c: Don't include libiberty.h.  Do declare xmalloc and
	xrealloc.
	(-DMAIN): Don't rely on an externally-defined version number;
	instead, require the version number to be defined as a
	preprocessor macro.  Handle the RS/6000 leading dot.  Define
	xmalloc, xrealloc and fatal.  Don't strip a leading underscore
	if we couldn't demangle the word.

Tue Apr  4 13:03:51 1995  Stan Shebs  <shebs@andros.cygnus.com>

	(Old mpw.c change descriptions retained for informational value.)
	* mpw.c (warning_threshold): Default to .4 sec.
	(overflow_count, current_progress): New globals.
	(warn_if_spin_delay): Include current progress type,
	such as program name, in message.
	(mpw_start_progress): Set current_progress variable from arg.
	(mpw_end_progress): Report spin delays by power-of-two-size
	buckets instead of constant-size buckets.

	* mpw.c: Clean up formatting, types, returns, etc.
	(ENOSYS): Define.
	(mpw_fread, mpw_fwrite): Define.
	(sleep): Define correctly.

	* mpw.c: New code to implement cursor spinning support.
	(umask): New function.
	(mpw_fopen, mpw_fseek, stat, fstat): Call PROGRESS.

	* mpw.c (mpw_basename, mpw_mixed_basename): New functions, find
	basenames for MPW and MPW/Unix filenames.
	(mpw_special_init): New function, calls Macsbug if desired.

	* mpw.c: Add GPL notice.
	(mpwify_filename): Add more transformations.
	(mpw_fopen): Call mpwify_filename on file names.
	(rename): Remove.
	(chdir, getcwd): Add simple definitions.

	* mpw.c: Random cleanups, remove unused code bits.
	Added copy of strerror.c for gcc's use.
	(stat, fstat, _stat): New versions based on Guido van Rossum code.

	* mpw.c (mpw_fseek): Make it work correctly when doing SEEK_CUR.

	* mpw.c (stat): Remove hack definition, get from sys/stat.h.
	(fork, vfork, etc): Print error messages if called.
	(getrusage, sbrk, environ, isatty, link, utime, mkdir, rmdir,
	rename, chown): Define.

	* mpw-config.in: New file, MPW version of configure.in.
	* mpw-make.in: New file, MPW version of Makefile.in.
	* mpw.c: New file, MPW compatibility routines.

Fri Mar 24 14:10:30 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* basename.c: Include config.h before checking for NEED_basename.

Thu Mar 23 19:09:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* functions.def: Add DEFFUNC for basename.

	* basename.c: Only define basename if NEED_basename.

Thu Mar 16 13:36:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* config.table: Fix --enable-shared logic for native builds.

Mon Mar 13 11:05:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* cplus-dem.c (demangle_template): Demangle bool literals properly.

Mon Mar  6 23:57:28 1995  Stu Grossman  (grossman@cygnus.com)

	* strtol.c strtoul.c:  Replace these with less buggy versions from
	NetBSD.  (strtoul in particular couldn't handle base 16.)

Wed Mar  1 15:59:01 1995  Ian Lance Taylor  <ian@cygnus.com>

	* config/mt-vxworks5 (HDEFINES): Define NO_SYS_PARAM_H.

	* clock.c: If NO_SYS_PARAM_H is defined, don't include
	<sys/param.h>.
	* getcwd.c, getpagesize.c, getruntime.c: Likewise.

Fri Feb 17 15:40:55 1995  Ian Lance Taylor  <ian@cygnus.com>

	* getruntime.c (get_run_time): Don't assume that CLOCKS_PER_SEC is
	a number; ANSI appears to permit any expression, including a
	function call.

	* config.table (*-*-vxworks5*): Use mt-vxworks5 when configuring
	xiberty.
	* config/mt-vxworks5: New file.

Thu Feb  9 14:19:45 1995  Ian Lance Taylor  <ian@cygnus.com>

	* basename.c (basename): Change argument to be const.

Wed Feb  8 18:06:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* Makefile.in (lneeded-list): Don't worry about xmalloc.

Sun Jan 15 00:40:36 1995  Jeff Law  (law@snake.cs.utah.edu)

	* Makefile.in (distclean): Delete xhost-mkfrag.

Thu Jan 12 16:54:18 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* Makefile.in (lneeded-list): If alloca.o is needed, so is xmalloc.o.

Wed Jan 11 22:39:56 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* hex.c: New file.
	* Makefile.in (REQUIRED_OFILES, CFILES): List it.
	(hex.o): Add dependencies.

	* cplus-dem.c (demangle_prefix): For GNU style constructor and
	destructor names, try demangling the remainder of the string.

Wed Dec 28 00:49:15 1994  Ian Lance Taylor  <ian@tweedledumb.cygnus.com>

	* vasprintf.c (int_vasprintf): New static function.
	(vasprintf): Use int_vasprintf.  Removes assumption that va_list
	is assignment compatible.

Sat Nov  5 19:29:12 1994  Jason Merrill  (jason@phydeaux.cygnus.com)

	* Makefile.in (LIBCFLAGS): New variable.
	(FLAGS_TO_PASS): Pass it.
	(.c.o): Use it.

Thu Nov  3 19:09:47 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* getopt.c, getopt1.c: Do compile these functions under Linux,
	since many native versions are based on glibc but are buggy.

Mon Oct 24 15:16:46 1994  Per Bothner  <bothner@kalessin.cygnus.com>

	* vasprintf.c:  Make 'format' arg be const, to avoid a mismatch
	with prototype in GNU libc.  Support stdarg.h as well as varargs.h.

Tue Oct 11 17:48:27 1994  Jason Merrill  (jason@phydeaux.cygnus.com)

	* Makefile.in (REQUIRED_OFILES): Add vasprintf.o.
	* functions.def: Remove vasprintf.

Wed Sep 14 17:04:55 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* xmalloc.c (first_break): New static variable.
	(xmalloc_set_program_name): Record sbrk (0) in first_break.
	(xmalloc): If memory allocation fails, try to report how much
	memory was allocated by the program up to this point.
	(xrealloc): Likewise.

Sun Sep 04 17:58:10 1994  Richard Earnshaw (rwe@pegasus.esprit.ec.org)

	* Makefile.in (ERRORS_CC): New variable, defaulted to $(CC).  Use it
	when linking dummy.
	* config.table: Add host RISCiX Makefile frag.
	* config/mh-riscix: New file.

Thu Aug 25 17:29:44 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* Makefile.in (FLAGS_TO_PASS): Define.
	($(RULE1)): Use $(FLAGS_TO_PASS).

Wed Aug 24 17:08:47 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* vasprintf.c: Include <string.h>.
	(vasprintf): Add casts to void for va_arg to avoid gcc warnings.
	* xatexit.c: Declare malloc.

Fri Aug 19 15:29:12 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle_args): Fix a bug in previous patch (the
	one below).

Thu Aug 18 14:37:14 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle args): Handle ARM repeat encoding where
	the type index is greater than 9.

Wed Aug 17 16:13:49 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle_qualified): accept optional '_' between
	qualified name. This is baecause the template name may end with
	numeric and can mixed up with the length of next qualified name.

Wed Aug  3 05:52:14 1994  D. V. Henkel-Wallace  (gumby@cygnus.com)

	* config/mt-sunos4: Use our standard location for cross-includes
	and cross-libs when the target is also a "host" environment (ie no
	newlib; includes and such don't belong to us).  This is specific
	to the Cygnus Support environment.

Tue Aug  2 15:25:12 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle_template): demangle as xxx<'Q'> not
	xxx<ch=81>.

Mon Aug  1 17:02:48 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (main): flush stdout to make pipe work.

Sat Jul 16 12:56:32 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* config.table (*-*-cxux7*):  Recognize.
	* floatformat.c (floatformat_m88110_ext) [HARRIS_FLOAT_FORMAT]:
	Harris-specific float format.
	* config/mh-cxux7: New file.

Wed Jun 29 00:26:17 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* cplus-dem.c (demangle_template):  Make sure that the result of
	consume_count doesn't index beyond the end of the string.

Mon Jun 20 23:54:37 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* cplus-dem.c (gnu_special):  Handle vtable mangling of gcc-2.4.5 and
	earlier. Improve test for new vtable mangling. Change output back
	to `virtual table'.

Mon Jun 20 11:37:30 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* obstack.c: Always compile this code, even if using the GNU
	library.  Avoids problems with relatively recent binary
	incompatibility.

Thu Jun 16 17:54:01 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* cplus-dem.c: Include libiberty.h.
	(xmalloc, xrealloc, free): Don't declare.
	(strstr): Don't declare parameters.
	(xmalloc, xrealloc): Don't define.
	(long_options): Add no-strip-underscores.
	(main): Call xmalloc_set_program_name.  Pass n in short options to
	getopt_long.  Handle option 'n' to not strip underscores.
	(usage): Mention -n and --no-strip-underscores.

Sun Jun 12 01:37:09 1994  Jason Merrill  (jason@deneb.cygnus.com)

	* cplus-dem.c (demangle_template): Separate consecutive >'s with a
	space.
	(gnu_special): Demangle template and qualified names in a vtable name.

Fri May 27 12:27:52 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	From gas-2.3 and binutils-2.4 net releases:

	Wed May 11 22:32:00 1994  DJ Delorie (dj@ctron.com)

	* makefile.dos: [new] Makefile for dos/go32
	* configure.bat: update for latest files
	* msdos.c: remove some functions now in libc.a

Fri May 20 18:53:32 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* cplus-dem.c (gnu_special):  Recognize thunks, as well as
	the new naming style for vtables (when -fvtable-thunks).

Wed May 18 13:34:06 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* Makefile.in (XTRAFLAGS): Don't define.
	(.c.o, dummy.o): Don't use XTRAFLAGS.
	($(RULE1)): Don't pass XTRAFLAGS down in recursive call.

Fri May 13 16:02:12 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* vasprintf.c: New file.
	* Makefile.in, functions.def: Add it.

Fri May 13 16:20:28 1994  Jason Merrill  (jason@deneb.cygnus.com)

	* cplus-dem.c (demangle_fund_type): Grok bool.

Fri May  6 14:44:21 1994  Steve Chamberlain  (sac@cygnus.com)

	* config.table: Add go32
	* config/mh-go32: New template.

Fri May  6 11:01:59 1994  D. V. Henkel-Wallace  (gumby@rtl.cygnus.com)

	* config.table, config/mt-sunos4: config for when sun4 is cross target.

Mon Apr 11 00:54:33 1994  Richard Stallman  (rms@mole.gnu.ai.mit.edu)

	* getopt.c [not __GNU_LIBRARY__] [__GCC__] [not __STDC__]:
	Declare strlen to return int.  Don't include stddef.h.

Fri Apr  1 00:38:17 1994  Jim Wilson  (wilson@mole.gnu.ai.mit.edu)

	* getopt.c: Delete use of IN_GCC to control whether
	stddef.h or gstddef.h is included.

Thu Apr 14 14:00:56 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle_signature): Fix a bug in template function
	type numbering.

Wed Apr 13 17:23:03 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle_signature): Fix template function with arm
	style argument type number, Tn.

Wed Apr 13 17:11:15 1994  Jason Merrill  (jason@deneb.cygnus.com)

	* cplus-dem.c (optable): Add new[] and delete[].

Fri Apr  8 11:21:42 1994  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* argv.c (buildargv): Don't produce empty argument just because
	there is trailing whitespace.

Wed Apr  6 11:42:14 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle_template): fix 'Q' qualified name bug.
	Handle 'p' same as 'P'.
	* cplus-dem.c (do_type): Handle 'p' same as 'P'.

Sat Mar 26 12:00:13 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* floatformat.c (get_field, put_field):  Fix off by one error in
	little endian case.

Thu Mar 24 10:40:19 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* floatformat.c (floatformat_from_double): Pass unsigned char *,
	not char *, to put_field.

Fri Mar 18 12:34:33 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* memmove.c:  Re-wrote;  placed in public domain.

Wed Mar 16 10:33:07 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* cplus-dem.c (demangle_prefix): If ARM demangling, don't treat
	__Q* as a constructor.

Mon Mar 14 12:26:02 1994  Ian Lance Taylor  (ian@cygnus.com)

	* ieee-float.c: Removed; no longer used.
	* Makefile.in: Changed accordingly.

Mon Mar  7 12:28:17 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* floatformat.c (get_field): Removed unused local variable i.
	(put_field): Removed unused local variable i.

Sun Feb 27 21:50:11 1994  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* floatformat.c: New file, intended to replace ieee-float.c.
	* Makefile.in: Change accordingly.

Thu Feb 24 11:51:12 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* getopt.c: Remove #ifdef GETOPT_COMPAT and #if 0 code.
	(_getopt_initialize): New function, broken out of _getopt_internal.
	(_getopt_internal):
	If long_only and the ARGV-element has the form "-f", where f is
	a valid short option, don't consider it an abbreviated form of
	a long option that starts with f.  Otherwise there would be no
	way to give the -f short option.

Thu Feb 10 14:44:16 1994  Richard Stallman  (rms@mole.gnu.ai.mit.edu)

	* getopt.c [not __GNU_LIBRARY__] [__GNUC__] [not IN_GCC]:
	Test just __STDC__, not emacs.

Wed Feb  9 00:14:00 1994  Richard Stallman  (rms@mole.gnu.ai.mit.edu)

	* getopt.c [not __GNU_LIBRARY__] [__GNUC__] [not IN_GCC]
	[emacs] [not __STDC__]: Don't include stddef.h.  Don't declare strlen.

Fri Dec 24 19:43:00 1993  Noah Friedman  (friedman@nutrimat.gnu.ai.mit.edu)

	* getopt.c (_NO_PROTO): Define before config.h is included.

Mon Sep 20 15:59:03 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* getopt.c, getopt1.c [emacs || CONFIG_BROKETS]: Include
	<config.h> only under these, else "config.h".

Thu Aug 12 18:16:49 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* getopt.c, getopt1.c [HAVE_CONFIG_H]: Include
	<config.h> instead of "config.h".

Sun Feb 20 17:17:01 1994  Ian Lance Taylor  (ian@lisa.cygnus.com)

	* concat.c: Check ANSI_PROTOTYPES rather than __STDC__ to decide
	whether to use prototypes or not.
	* strerror.c (const): Never undefine; let ansidecl.h handle it.
	* strsignal.c (const): Likewise.

Thu Feb 17 13:27:35 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* xatexit.c (_xexit_cleanup): Declare as extern; don't initialize.
	Merging common and initialized variables need not be supported by
	ANSI C compilers.
	(xatexit): Initialize _xexit_cleanup if not already set.
	* xexit.c: Comment fix.

Wed Feb 16 01:15:36 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* xmalloc.c: Don't declare xexit; it's declared in libiberty.h.
	(xrealloc): If oldmem is NULL, allocate with malloc, rather than
	assuming that realloc works correctly.

Tue Feb 15 09:26:16 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* concat.c, ieee-float.c:  Replace inclusion of <string.h>
	with explicit function declarations, as recommended by Ian Taylor.

Sat Feb 12 10:31:11 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* xmalloc.c (xmalloc, xrealloc): Use PTR and size_t throughout.
	(malloc, realloc): Declare.

Thu Feb 10 17:08:19 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* argv.c, basename.c: Include ansidecl.h and libiberty.h.
	* concat.c, fdmatch.c, getruntime.c, spaces.c: Likewise.
	* strerror.c, strsignal.c, xatexit.c, xexit.c: Likewise.
	* xmalloc.c: Likewise.
	* concat.c: Don't declare xmalloc.  If __STDC__, use <stdarg.h>
	macros, not <varargs.h> macros.
	* spaces.c (spaces): Make return type const.  Don't crash if
	malloc returns NULL.
	* strerror.c (struct error_info): Make name and msg fields const.
	(error_names): Make const.
	(strerrno): Make const.
	(strtoerrno): Make argument const.
	* strsignal.c (struct signal_info): Make name and msg fields
	const.
	(signal_names, sys_siglist): Make const.
	(strsignal, strsigno): Make const.
	(strtosigno): Make argument const.
	* xatexit.c: Declare parameter types.
	* xmalloc.c (name): Make const.
	(xmalloc_set_program_name): Make argument const.
	* Makefile.in (INCDIR): Define.
	(.c.o): Use $(INCDIR).
	(dummy.o): Likewise.
	(argv.o, basename.o): New targets; depend on libiberty.h.
	(concat.o, fdmatch.o, getruntime.o, spaces.o): Likewise.
	(strerror.o, strsignal.o, xatexit.o, xexit.o): Likewise.
	(xmalloc.o): Likewise.
	(cplus-dem.o): New target; depend on demangle.h.
	(getopt.o, getopt1.o): New targets; depend on getopt.h.
	(ieee-float.o): New target; depend on ieee-float.h.
	(obstack.o): New target; depend on obstack.h.

Tue Feb  8 05:29:08 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	Handle obstack_chunk_alloc returning NULL.  This allows
	obstacks to be used by libraries, without forcing them
	to call exit or longjmp.
	* obstack.c (_obstack_begin, _obstack_begin_1, _obstack_newchunk):
	If CALL_CHUNKFUN returns NULL, set alloc_failed, else clear it.
	(_obstack_begin, _obstack_begin_1): Return 1 if successful, 0 if not.

Tue Feb  8 00:32:28 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* concat.c, ieee-float.c:  Include <string.h>.

Sun Feb  6 21:28:46 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* xmalloc.c (xmalloc_set_program_name): New function.
	(xmalloc, xrealloc): Include the name in the error message, if set.

	* Replace atexit.c with xatexit.c.
	* Makefile.in (CFILES), functions.def: Change references.

Sat Feb  5 14:02:32 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* getruntime.c (get_run_time): Use getrusage or times if
	HAVE_GETRUSAGE or HAVE_TIMES are defined.

Fri Feb  4 15:49:38 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* atexit.c: New file.
	* Makefile.in (CFILES), functions.def: Add it.
	* xexit.c: New file.
	* Makefile.in (CFILES, REQUIRED_OFILES): Add it.
	* xmalloc.c (xmalloc, xrealloc): Call xexit instead of exit.
	Change request for 0 bytes into request for 1 byte.

Wed Feb  2 11:36:49 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* xmalloc.c (xmalloc, xrealloc): Print size using %lu, and cast to
	unsigned long, to avoid warnings.

Fri Jan 28 17:49:06 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* dummy.c: Don't include time.h ever; always define clock_t as
	"unsigned long".  Until gcc/fixincludes ensures that clock_t
	exists, __STDC__ isn't a sufficient test.  And if clock() doesn't
	exist, clock_t probably doesn't either.

Mon Jan 24 11:52:31 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* clock.c, getruntime.c: New files.
	* Makefile.in: Add to file lists.
	* functions.def (clock): Add to list.
	* dummy.c (time.h): Add if __STDC__.
	(clock_t): #define as "unsigned long" if not __STDC__.

Tue Jan 11 11:27:44 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* strtod.c: Declare atof.  From edler@jan.ultra.nyu.edu (Jan
	Edler).

Tue Dec 28 14:17:30 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* Makefile.in (errors): Use CFLAGS as well as LDFLAGS when
	linking.

Fri Dec 17 12:26:07 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c (demangle_arm_pt): New function.  Common code
	for ARM template demangling.
	* cplus-dem.c (demangle_class_name): Use demangle_arm_pt.
	* cplus-dem.c (demangle_prefix): Likewise.

Tue Nov 30 15:47:48 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* cplus-dem.c (cplus_demangle_opname): Add CONST to please gcc.

Sat Nov 27 11:05:50 1993  Fred Fish  (fnf@cygnus.com)

	Merge changes from tom@basil.icce.rug.nl (Tom R.Hageman)
	* strerror.c, strsignal.c:  As a small space optimization, don't
	include messages when they aren't actually used.

	Merge changes from takefive.co.at!joe (Josef Leherbauer)
	* cplus-dem.c (demangle_prefix, demangle_function_name,
	cplus_demangle_opname):  Fixes for systems where cplus_marker
	is something other than '$'.

Fri Nov 26 13:51:11 1993  Per Bothner  (bothner@kalessin.cygnus.com)

	* waitpid.c:  Simple-minded approcimation to waitpid
	using vanilla wait.
	* functions.def, Makefile.in:  Update accordingly,

Thu Nov 18 18:01:15 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c(demangle_template): fix bug template instantiation
	with value of user defined type.

Wed Nov 17 18:30:21 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c(cplus_demangle_opname): add the subject new function
	to support unified search of operator in class.

Wed Nov 10 09:47:22 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	gcc -Wall lint:
	* strtoul.c (strtoul): use "(digit = *s) != '\0'" not just
	"digit = *s" as condition in while loop.

Tue Nov  9 15:52:22 1993  Mark Eichin  (eichin@cygnus.com)

	* Makefile.in: pass SHELL to recursive make

Thu Nov  4 12:09:26 1993  Per Bothner  (bothner@kalessin.cygnus.com)

	* vfprintf.c, vprintf.c, vsprintf.c:  Make format arg
	be (const char*), for ANSI (and gcc w/fixproto) consistency.

Thu Nov  4 08:29:04 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.table: Make *-*-hiux* use mh-hpux.

Fri Oct 22 07:53:15 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.table: Add * to end of all OS names.

Tue Oct 19 17:12:01 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* Makefile.in (lneeded-list): ensure that object file names are
	not duplicated, as multiple instances of the same object file in
	a library causes problems on some machines

Mon Oct 18 21:59:28 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* strcasecmp.c, strncasecmp.c: Change u_char to unsigned char.

Fri Oct 15 22:17:11 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* strncasecmp.c: new file, implements strncasecmp
	* strcasecmp.c: new file, implement strcasecmp

	* Makefile.in (CFILES): list these two new source files

	* functions.def: add strcasecmp and strncasecmp entries

Fri Oct 15 14:53:05 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* strtoul.c (strtoul), strtol.c (strtol): Handle overflow
	according to ANSI C.

Thu Oct 14 16:34:19 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c: add support of ARM global constructor/destructor,
	and 'G' for passing record or union in parameter.

Wed Oct 13 13:36:19 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in: Fix comment to clarify that stuff in REQUIRED_OFILES
	should not be in functions.def.

Wed Oct 13 13:13:38 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* functions.def: Removed xmalloc.  Stuff in REQUIRED_OFILES should
	not be in functions.def.

Mon Oct  4 18:26:39 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c: change globl constructor/destructor to proper name

Tue Sep 28 18:11:07 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c: fix bug in constructor/destructor

Tue Sep 28 16:20:49 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c: support both old and new _vt$... vtbl mangled names

Fri Sep 24 19:07:16 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* cplus-dem.c: Fix demangle_template prototype

Fri Sep 24 17:32:55 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c: fix template demangling
	* cplus-dem.c: fix const type demangling
	* cplus-dem.c: fix constructor/destructor, virtual table,
	qualifier, global constructor/destructor demangling

Wed Sep  1 23:13:11 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* strsignal.c, strerror.c: Use fully-bracketed initializer to
	keep gcc -Wall happy.

Fri Aug 27 10:30:09 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* cplus-dem.c (do_type): Add CONSTS to make gcc happy with last
	patch.

Fri Aug 27 11:24:54 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	Patch from Paul Flinders:
	* cplus-dem.c (do_type): Deal with arrays.

Tue Aug 24 14:23:50 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* cplus-dem.c (demangle_qualified: Deal with GNU format for more
	than 9 classes.

Wed Aug 18 19:50:29 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* Makefile.in (dummy.o): Redirect to /dev/null to avoid "variable
	not initialized" warnings under HP/UX

Sun Aug 15 20:42:40 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* strerror.c: Move include of stdio.h after sys_errlist #define.
	Also remove NULL definition (stdio.h always defines NULL, so it
	never did anything but clutter up the code).

Sat Aug 14 14:21:49 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* Makefile.in, functions.def: handle xmalloc.c

	* xmalloc.c: provide xmalloc and xrealloc functions

Thu Aug 12 17:38:57 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* cplus-dem.c: Fix a comment.

Sat Aug  7 13:56:35 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* getopt1.c: Declare const the way getopt.c does.

Fri Aug  6 17:03:13 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* obstack.c, alloca.c: Update from FSF.
	* getopt.c, getopt1.c: Update to current FSF version, which
	doesn't use alloca.

Tue Jul 27 14:03:57 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (demangle): Add the target with a message saying
	where demangle went.

Mon Jul 26 15:49:54 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in: Remove obsolete `demangle' target.

Thu Jul 22 08:31:01 1993  Fred Fish  (fnf@deneb.cygnus.com)

	* cplus-dem.c (arm_special):  Apply patch from arg@lucid.com to
	avoid infinite loop on vtbl symbols with disambiguating "junk"
	tacked on the end.

Mon Jul 19 14:10:37 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* strsignal.c: work around some systems losing definitions of
	sys_siglist

	* config/mh-lynxos: this system has a losing definition of
	sys_siglist

	* config.table: use mh-lynxos for *-*-lynxos

Mon Jul 19 17:08:52 1993  Ken Raeburn  (raeburn@rtl.cygnus.com)

	* config.table: Add support for HPPA BSD hosts.

	* config/mh-hpbsd: New file.

Mon Jul 12 18:00:40 1993  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in (TAGS): make work when srcdir != objdir.

Sun Jun 27 15:35:31 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* cplus-dem.c (main): Add long options, including --help and
	--version.
	(usage): New function from code in main.

Tue Jun 22 11:37:38 1993  Per Bothner  (bothner@deneb.cygnus.com)

	* config.table:  New shell scipt, sourced by both ./configure,in
	and ../xiberty/configure.in, to avoid maintainance lossages.
	* configure.in and ../xiberty/configure.in:  Use config.table.

	* configure.in: Don't use mh-aix for AIX 3.2, only for 3.1.
	* configure.in: Map *-*-irix* (except irix4) to mh-sysv.
	* ../xiberty/configure.in:  Update from ./configure.in.

Tue Jun 15 17:05:31 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: remove parentdir support

Wed May 26 12:59:09 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* cplus-dem.c (xrealloc):  Match definition with prototype.

Tue May 25 14:27:51 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* cplus-dem.c (demangle_prefix):  Demangle cfront
	local variables as an extension to ARM demangling.

Fri May 21 09:53:57 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* ieee-float.c: Don't require pointers to double to be aligned.

Tue May 18 17:12:10 1993  Fred Fish  (fnf@cygnus.com)

	(merge changes from dlong@cse.ucsc.edu)
	* cplus-dem.c (consume_count):  Simplify.
	* cplus-dem.c (arm_pt, demangle_class_name):  New functions.
	* cplus-dem.c (various):  Calls to arm_pt, demangle_class_name.

	* cplus-dem.c (xmalloc, xrealloc, strstr):  Make extern decls into
	full prototypes.
	* cplus-dem.c (free):  Add prototype.
	* cplus-dem.c (optable):  Fully bracketize initializer.

Fri May 14 17:13:05 1993  Per Bothner  (bothner@cygnus.com)

	* cplus-dem.c:  Whether initial underscores are stripped
	depends on the external variable prepends_underscore
	(which is generated by the binutils Makefile).

Fri May 14 07:32:20 1993  Ken Raeburn  (raeburn@deneb.cygnus.com)

	* cplus-dem.c (mop_up, arm_special): Remove some unused variables.

Tue May  4 20:31:59 1993  Fred Fish  (fnf@cygnus.com)

	* cplus-dem.c (consume_count):  Return zero if arg does not
	start with digit, and don't consume any input.

Tue May  4 08:10:28 1993  Jim Kingdon  (kingdon@cygnus.com)

	* Makefile.in (demangle): Use ${srcdir} not $^.

	* strtod.c: New file, needed at least for BSD 4.3.

Sun May  2 11:30:42 1993  Fred Fish  (fnf@cygnus.com)

	* strsignal.c (sys_siglist):  For ANSI compilations, type is
	"const char *const".  Also remove conditionalization on __STDC__
	since const is defined away for non-ANSI.

Wed Apr 28 19:29:55 1993  Ken Raeburn  (raeburn@deneb.cygnus.com)

	* configure.in: Recognize *-*-hpux.
	* config/mh-hpux: New file.

Tue Apr 27 15:22:19 1993  Per Bothner  (bothner@cygnus.com)

	* tmpnam.c:  Added ANSI tmpnam() function.
	* functions.def, Makefile.in:  Update accordingly.

Tue Apr 27 13:38:38 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* cplus-dem.c (demangle_function_name): Get the demangling of
	stop__1A right.

Fri Apr 16 23:48:24 1993  Jim Kingdon  (kingdon at calvin)

	* cplus-dem.c: Declare strstr return type.

Fri Mar 26 12:01:26 1993  Jim Kingdon  (kingdon@cygnus.com)

	* strsignal.c: Add some AIX signals.

Thu Mar 25 15:17:23 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (MAKEOVERRIDES): Define to be empty.

Wed Mar 24 01:59:25 1993  david d `zoo' zuhn  (zoo at poseidon.cygnus.com)

	* Makefile.in: add installcheck & dvi targets

Thu Mar 18 14:05:44 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* ieee-float.c:  New file, moved from ../gdb (since it is
	needed by ../opcode/m68k-dis.c).

Tue Mar  2 17:47:31 1993  Fred Fish  (fnf@cygnus.com)

	* cplus-dem.c:  Replace all references to cfront with ARM.

Fri Feb 26 00:17:07 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* cplus-dem.c:  Fix main program (when compiled with -DMAIN)
	to be more useful as a filter.

Sat Feb 20 21:41:39 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (install_to_libdir, install_to_tooldir): Go into the
	destination directory before running $(RANLIB), in case that
	program tries to create a file in the current directory as part of
	its work.

Thu Feb 18 23:00:19 1993  John Gilmore  (gnu@cygnus.com)

	* strsignal.c (sys_siglist):  Remove yet another *%^&%&$# "const"
	because BSD 4.4 lacks one.  Isn't this fun?

Thu Feb 18 11:24:25 1993  Fred Fish  (fnf@cygnus.com)

	* cplus-dem.c (demangle_signature):  Set func_done after
	demangling a template.
	* cplus-dem.c (demangle_template):  Fix several small bugs
	in demangling GNU style templates.
	* cplus-dem.c (demangle_prefix):  Fix for templates in GNU
	style constructors.
	* cplus-dem.c (gnu_special):  Fix for templates in GNU style
	static data members.

Tue Feb 16 17:28:35 1993  Fred Fish  (fnf@cygnus.com)

	* cplus-dem.c (demangle_signature):  Modify to include type
	modifiers like static and const in remembered types.

Thu Feb 11 22:20:47 1993  Fred Fish  (fnf@cygnus.com)

	* cplus-dem.c (demangled_qualified):  Add new parameter that tells
	whether to prepend or append the qualifiers.
	* cplus-dem.c (string_prepends):  Used now, remove #if 0.
	* cplus-dem.c (demangle_signature):  Call demangle_qualified
	with prepending.
	* cplus-dem.c (gnu_special):  Recognize static data members that
	use qualified names.
	* cplus-dem.c (demangle_qualified):  Accumulate qualifiers in a
	temporary buffer and the prepend or append them to the result,
	as specified by the new "append" flag.
	* cplus-dem.c (do_type):  Call demangled_qualified with
	appending.

Mon Dec 28 10:47:19 1992  Ken Raeburn  (raeburn@cygnus.com)

	* strsignal.c (signal_table): Now const.
	(init_signal_tables): Variable eip now points to const.

	* strerror.c (error_table): Now const.
	(init_error_tables): Variable eip now points to const.

Tue Dec 15 15:36:50 1992  Per Bothner  (bothner@cygnus.com)

	* memchr.c (memchr):  New (ANSI standard) function.
	* Makefile.in, functions.def:  Added memchr.
	* Makefile.in (AR_FLAGS): Use rc instad of non-standard cq.

Wed Dec  2 22:49:10 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* getopt.c: remove use of USG around <alloca.h>, which never meant
	anything anyway

	* config/mh-{aix,apollo68,ncr3000,sysv,sysv4}: removed definitions
	of USG and USGr4

Thu Nov 19 03:09:33 1992  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* cplus-dem.c (demangle_fund_type): Recognize `w', a wide character;
	it's now a type according to the ANSI X3J16 working paper; output
	"wchar_t" for it.
	(demangle_template): Accept `w' as an integral type.
	(xmalloc, xrealloc): Use `char *', not `PTR'.  Cast calls to their
	counterparts malloc and realloc to `char *'.
	(main): Exit with a 0 status.
	* Makefile.in (demangle): Don't expect the user to define
	DEMANGLE, instead force to be cplus-dem.c.  Look in $(srcdir)/../include
	for demangle.h.  Pass it any HDEFINES or XTRAFLAGS.

Wed Nov 18 18:56:20 1992  John Gilmore  (gnu@cygnus.com)

	* Makefile.in (AR_FLAGS):  Avoid verbosity.
	* config/mh-sysv4:  Remove AR_FLAGS override, use INSTALL=cp,
	replace USGr4 with HAVE_SYSCONF.
	* config/mh-solaris:  Remove; mh-sysv4 works now.
	* getpagesize.c:  Replace USGr4 with HAVE_SYSCONF.
	* configure.in:  Simplify host matching table, remove separate
	solaris config file.

Sun Nov 15 09:35:16 1992  Fred Fish  (fnf@cygnus.com)

	* configure.in (i[34]86-*-solaris2*):  Add, use mh-sysv4.

Tue Nov  3 21:27:03 1992  Brendan Kehoe  (brendan@cygnus.com)

	* cplus-dem.c (xmalloc, xrealloc): Add decls.
	(remember_type): Don't cast xmalloc.
	(string_need): Likewise; don't cast xrealloc either.

Fri Oct 23 08:52:01 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in, functions.defs, rename.c: added simple
	implementation of rename, since some binutils programs use it.

Thu Oct 15 15:18:22 1992  Per Bothner  (bothner@cygnus.com)

	* strsignal.c:  Add appropriate 'const' to sys_siglist
	extern declaration (if __STDC__).  (Needed for Linux.)
	* strsignal.c (strsignal): Add cast to remove const-ness.

Fri Oct  9 03:22:55 1992  John Gilmore  (gnu@cygnus.com)

	* Makefile.in (needed.awk, needed2.awk):  Remove erroneous \'s
	before "'s, diagnosed by BSD 4.4 awk.

Thu Oct  8 15:25:12 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: create config.h and needed-list through $(CONFIG_H)
	and $(NEEDED_LIST), to give some hooks for xiberty.

Thu Oct  1 23:31:42 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: use cpu-vendor-triple instead of nested cases

Wed Sep 30 11:26:59 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in, argv.c, basename.c, bcmp.c, bcopy.c, bzero.c,
	concat.c, cplus-dem.c, fdmatch.c, getcwd.c, getopt.c, getopt1.c,
	getpagesize.c, insque.c, memcmp.c, memcpy.c, memmove.c, memset.c,
	obstack.c, sigsetmask.c, spaces.c, strchr.c, strerror.c,
	strrchr.c, strsignal.c, strstr.c, vfork.c, vsprintf.c:
	Convert from using GPL to LGPL.

Sat Sep 26 04:01:30 1992  John Gilmore  (gnu@cygnus.com)

	* Makefile.in (errors):  Leave dummy.o and dummy around so that
	we can see how the needed list was generated (it's sometimes wrong).
	(mostlyclean):  Remove them.

Mon Sep 21 14:50:42 1992  Ian Lance Taylor  (ian@cygnus.com)

	* getcwd.c: supply a default if MAXPATHLEN is not defined.

	* config/mh-irix4: set EXTRA_OFILES to alloca.o, from WRS.

Wed Sep  9 12:41:48 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: Use XTRAFLAGS when compiling, so that xiberty works
	when cross-compiling.

Thu Sep  3 13:29:39 1992  K. Richard Pixley  (rich@sendai.cygnus.com)

	* cplus-dem.c: (demangle_prefix): reduction in strength of strstr
	as a time optimization.

	* cplus-dem.c (cplus_demangle): remove strpbrk test.  Appears to
	be more expensive than simply demangling.

	* cplus-dem.c (cplus_match): new function.

Tue Sep  1 15:24:04 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* cplus-dem.c:  #include <stdio.h>, to define NULL.
	Define current_demangling_style.

Sun Aug 30 17:58:19 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* cplus-dem.c:  New file, moved from ../gdb.
	* cplus-dem.c (set_cplus_marker_for_demangling):  New exported
	function, to avoid compiling in target-dependency for CPLUS_MARKER.
	* cplus-dem.c (cplus_demangle):  Allow demangling style option
	to be passed as a parameter, but using the global variable
	current_demangling_style as a default.
	* Makefile.in:  Update for cplus-dem.c

Sat Aug 29 10:44:09 1992  Fred Fish  (fnf@cygnus.com)

	* obstack.c:  Merge in comment changes from FSF version.  Now
	matches the FSF version exactly.

Fri Aug 28 18:39:08 1992  John Gilmore  (gnu@cygnus.com)

	* obstack.c (CALL_FREEFUN):  Can't use ?: with void values (at
	least on losing DECstations!); use if-then-else instead.

Wed Aug 19 14:40:34 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: always create installation directories.

Mon Aug 10 17:33:40 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: clean up definition of CFILES, more comments

Sat Aug  8 23:10:59 1992  Fred Fish  (fnf@cygnus.com)

	* getopt.c (my_index):  Make first arg const to match strchr,
	which it sometimes is remapped to.

Sat Aug  1 13:48:50 1992  Fred Fish  (fnf@cygnus.com)

	* obstack.c (DEFAULT_ALIGNMENT):  Update to match FSF version.
	* obstack.c (_obstack_begin):  Initialize use_extra_arg.
	* obstack.c (_obstack_begin_1):  New, from FSF version.

Mon Jul 20 21:07:58 1992  Fred Fish  (fnf@cygnus.com)

	* obstack.c (CALL_CHECKFUN, CALL_FREEFUN):  Use use_extra_arg and
	extra_arg.
	* obstack.c (_obstack_begin):  Remove area_id and flags arguments
	(previously added for mmalloc support, interface has changed).
	Also convert flags usage to use use_extra_arg and maybe_empty_object.

Fri Jul 10 00:41:53 1992  Fred Fish  (fnf@cygnus.com)

	* argv.c:  Move expandargv inline and eliminate static variables.
	Rewrite to always allocate in powers of two.  Fix to return an
	argv with a single null string arg if passed a null string.

Fri Jul  3 20:27:29 1992  Fred Fish  (fnf@cygnus.com)

	* random.c, sigsetmask.c, strerror.c, strsignal.c:  Remove
	"(void)" casts from function calls where the return value is
	ignored, in accordance with GNU coding standards.

Mon Jun 29 10:54:19 1992  Fred Fish  (fnf at cygnus.com)

	* bcopy.c, strerror.c, strsignal.c:  Lint.

Thu Jun 25 09:18:41 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* getopt.c: merge changes from make.

Thu Jun 25 04:43:22 1992  John Gilmore  (gnu at cygnus.com)

	* alloca.c:  Incorporate fixes from gdb/alloca.c.
	FIXME:  Eventually move gdb's alloca configuration files here,
	and remove gdb/alloca.c and its Makefile.in support.

Tue Jun 23 21:56:30 1992  Fred Fish  (fnf@cygnus.com)

	* dummy.c:  Define NOTHING to /*nothing*/, change return type
	of main to int and return zero.
	* functions.def:  Supply NOTHING as the fourth arg to macros
	that don't have an explicit arg, to satisfy picky preprocessors.

Wed Jun 17 18:13:58 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in:  Clean up *clean rules, as per standards.texi.

Tue Jun 16 16:11:59 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* getopt.c, getopt1.c: merged largely gratuitous, mostly
	whitespace diffs from other prep distributions.

Mon Jun 15 12:25:46 1992  Fred Fish  (fnf@cygnus.com)

	* config/mh-ncr3000 (INSTALL):  Don't use /usr/ucb/install,
	it is broken on ncr 3000's.

Mon Jun 15 01:03:26 1992  John Gilmore  (gnu at cygnus.com)

	* sigsetmask.c:  Rewrite.  Old one was very confused about its
	arguments and result.  New one can't do much, but at least knows
	what it can't do, and it's good enough for GDB's use.

Sun Jun 14 15:17:40 1992  Stu Grossman  (grossman at cygnus.com)

	* functions.def:  Use proper prototype for strtoul.

Fri Jun 12 19:22:40 1992  John Gilmore  (gnu at cygnus.com)

	* Makefile.in:  Add random.c.
	* config/mh-*:  Use "true" rather than "echo >/dev/null" for ranlib.
	* configure.in:  update solaris2 config.

Wed Jun 10 16:31:29 1992  Fred Fish  (fnf@cygnus.com)

	* random.c:  Add for random() and srandom().
	* functions.def:  Add random

Tue Jun  9 17:27:18 1992  Fred Fish  (fnf@cygnus.com)

	* config/{mh-ncr3000, mh-sysv4}:  Add definition for INSTALL
	using /usr/ucb/install.

Mon Jun  1 13:20:17 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* strerror.c:  Kludge to guard against a conflict with
	possible declaration of sys_errlist in errno.h.

Sun May 31 15:07:47 1992  Mark Eichin  (eichin at cygnus.com)

	* configure.in, config/mh-solaris: add solaris2 config support.

Fri May 29 17:23:23 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* sigsetmask.c:  #ifdef out sigsetmask if SIG_SETMASK
	is not defined (should be defined in signal.h, says Posix.).

Mon May 18 17:35:04 1992  K. Richard Pixley  (rich@cygnus.com)

	* getopt.c: merged changes from make-3.62.11.

Fri May  8 14:53:07 1992  K. Richard Pixley  (rich@cygnus.com)

	* getopt.c: merged changes from bison-1.18.

Tue May  5 11:51:40 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in:  Don't have $(EXTRA_OFILES) depend on config.h,
	since that introduces a circular dependency.
	($(EXTRA_OFILES) are used to build config.h.)

	* strtoul.c:  Fixes to handle non-decimal bases better.

Wed Apr 22 09:27:51 1992  Fred Fish  (fnf@cygnus.com)

	* config/mh-ncr3000:  Replace MINUS_G with CFLAGS.
	* Makefile.dos:  Finish MINUS_G eradication.
	* Makefile.in (CFILES):  Add strsignal.c.
	* Makefile.in (REQUIRED_OFILES):  Add strerror.o strsignal.o
	* Makefile.in (needed-list):  Split creation of errors file to
	separate make target.
	* Makefile.in (config.h, needed2.awk, errors):  New targets.
	* Makefile.in (clean):  Split to multiple lines, add needed2.awk
	and config.h.
	* dummy.c (DEFFUNC, DEFVAR):  Add defines and undefs.
	* functions.def (strerror):  Remove from optional list.
	* functions.def (sys_nerr, sys_errlist, sys_siglist):  DEFVAR's
	* functions.def (strerror, psignal):  DEFFUNC's
	* strerror.c:  Rewrite from scratch to use sys_errlist only if
	available, add errno_max(), add strerrno(), add strtoerrno(),
	add test driver.
	* strsignal.c:  New file, signal equivalent to strerror.c.
	Uses sys_siglist if available, defines signo_max(), strsignal(),
	strsigno(), strtosigno(), psignal(), and test driver.

Mon Apr 20 20:49:32 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: do not print recursion line.

	* Makefile.in: allow CFLAGS to be passed in from command line.
	Removed MINUS_G.  Default CFLAGS to -g.

Mon Apr 20 12:57:46 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* config/mh-aix:  New.  EXTRA_OFILES lists copysign.o,
	so libg++ users don't have to be inconvenienced by a
	libc.a bug (libc.a needs copysign, but doesn't define it!).
	* configure.in:  Use config/mh-aix.
	* strtoul.c:  Handle '-' as required by ANSI.
	Clean up radix handling.
	* strstr.c:  Fix buggy algorithm.
	* Makefile.in:  Change so that ${EXTRA_OFILES} is
	appended to needed-list (which is used by libg++).

Fri Apr 10 22:51:41 1992  Fred Fish  (fnf@cygnus.com)

	* configure.in:  Recognize new ncr3000 config.
	* config/mh-ncr3000:  New config file.

Wed Apr  1 23:31:43 1992  John Gilmore  (gnu at cygnus.com)

	* argv.c, dummy.c:  Lint.

Tue Mar 31 18:46:44 1992  Fred Fish  (fnf@cygnus.com)

	* config/mh-sysv4:  New config file.
	* configure.in (host_makefile_frag):  Set to config/mh-sysv4 for
	host_os == sysv4.
	* getpagesize.c:  For SVR4, use sysconf(_SC_PAGESIZE) to get
	pagesize.

Sun Mar 29 12:26:42 1992  John Gilmore  (gnu at cygnus.com)

	* getopt.c:  Lint.

Fri Mar 27 08:32:55 1992  Fred Fish  (fnf@cygnus.com)

	* functions.def (alloca):  Fix return type and args to avoid
	type clash with gcc's builtin alloca.

Tue Mar 24 23:33:42 1992  K. Richard Pixley  (rich@cygnus.com)

	* configure.in, config/mh-irix4: irix4 support.

	* Makefile.in, functions.def, alloca.c: added alloca.

Tue Mar 24 17:34:46 1992  Stu Grossman  (grossman at cygnus.com)

	* obstack.c (CALL_FREEFUN):  Make it compile on DECstations.

Thu Mar 19 13:57:42 1992  Fred Fish  (fnf@cygnus.com)

	* argv.c:  Fix various external function definitions to be
	correct in an ANSI compilation environment.

Sat Mar 14 17:28:17 1992  Fred Fish  (fnf@cygnus.com)

	* obstack.c:  Changes to support calling mmalloc functions,
	which take an additional argument over malloc functions.

Fri Mar  6 22:01:10 1992  K. Richard Pixley  (rich@cygnus.com)

	* added check target.

Thu Feb 27 22:19:39 1992  Per Bothner  (bothner@cygnus.com)

	* argv.c:  #include alloca-conf.h (needed by AIX).

Wed Feb 26 18:04:40 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in, configure.in: removed traces of namesubdir,
	-subdirs, $(subdir), $(unsubdir), some rcs triggers.  Forced
	copyrights to '92, changed some from Cygnus to FSF.

Sat Feb 22 01:09:21 1992  Stu Grossman  (grossman at cygnus.com)

	* argv.c:  Check in Fred's version which fixes problems with
	alloca().

Fri Feb  7 21:46:08 1992  Stu Grossman  (grossman at cygnus.com)

	* makefile.dos:  Remove NUL to keep patch from failing.

Thu Jan 30 22:48:41 1992  Stu Grossman  (grossman at cygnus.com)

	* getopt.c (_getopt_internal):  Fix usage of enum has_arg.

Mon Jan 20 18:53:23 1992  Stu Grossman  (grossman at cygnus.com)

	* getopt.c, getopt1.c, ../include/getopt.h:  Get latest versions.

Sat Jan 18 16:53:01 1992  Fred Fish  (fnf at cygnus.com)

	* argv.c:  New file to build and destroy standard argument
	vectors from a command string.

	* Makefile.in:  Add argv.c and argv.o to appropriate macros.

Fri Dec 20 12:12:57 1991  Fred Fish  (fnf at cygnus.com)

	* configure.in:  Change svr4 references to sysv4.

	* rindex.c:  Declare return type of externally used function
	strrchr().

Thu Dec 19 18:35:03 1991  John Gilmore  (gnu at cygnus.com)

	* Makefile.in:  Remove "***" in normal output, since Make produces
	this on errors, and it's convenient to search for.

Tue Dec 17 23:21:30 1991  Per Bothner  (bothner at cygnus.com)

	* memcmp.c, memcpy.c, memmove.c, memset.c, strchr.c, strrchr.c:
	New ANSI functions.  The old non-ANSI functions (such as bcopy)
	should be avoided.
	* bcopy.c:  Fix to correctly handle overlapping regions.
	* index.c, rindex.c:  Re-write in terms of strchr() and strrchr().
	* functions.def:  Add the new functions.
	* functions.def:  Add 4th parameter to DEF macro,
	an ansidecl.h-style prototype.
	* dummy.c:  Use expanded DEF macro to create a dummy function
	call, with correct parameter types.  (This avoids some
	complaints from gcc about predefined builtins.)

	Move the functionality of config/mh-default into Makefile.in.
	This avoid duplication, and simplifies things slightly.
	* Makefile.in:  Tweak so we don't need config/mh-default.
	* README:  Update.
	* configure.in:  No longer need config/mh-default.
	* config/mh-default:  Deleted.
	* config/mh-sysv:  Remove lines copied from old mh-default.

Tue Dec 17 05:46:46 1991  John Gilmore  (gnu at cygnus.com)

	* fdmatch.c (fdmatch):  Don't compare st_rdev, which is for
	'mknod' device numbers.

Mon Dec 16 12:25:34 1991  Fred Fish  (fnf at cygnus.com)

	* fdmatch.c, Makefile.in:  Add new function that takes two
	open file descriptors and returns nonzero if they refer to
	the same file, zero otherwise.  (used in gdb)

Wed Dec 11 17:40:39 1991  Steve Chamberlain  (sac at rtl.cygnus.com)
	From DJ:
	* msdos.c: stub functions for dos.
	* makefile.dos, configdj.bat: new.
	* getopt.c: Don't include alloca-conf.h in a GO32 world.


Tue Dec 10 04:14:49 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: infodir belongs in datadir.

Fri Dec  6 23:26:45 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: remove spaces following hyphens because bsd make
	can't cope.  added standards.text support.  install using
	INSTALL_DATA.

	* configure.in: remove commontargets as it is no longer a
	recognized hook.

Thu Dec  5 22:46:46 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: idestdir and ddestdir go away.  Added copyrights
	and shift gpl to v2.  Added ChangeLog if it didn't exist. docdir
	and mandir now keyed off datadir by default.

Fri Nov 22 19:15:29 1991  John Gilmore  (gnu at cygnus.com)

	* Makefile.in:  find-needed.awk does not fit in 14 chars.

	* Makefile.in:  Suppress error checking when compiling the test
	program, because Ultrix make/sh aborts there due to a bug.

Fri Nov 22 12:23:17 1991  Per Bothner  (bothner at cygnus.com)

	* Makefile.in:  Re-did how EXTRA_OFILES is used to be more useful.
	* README:  Explained how the auto-configuration works,
	and how to add new files and/or configurations.

Fri Nov 22 09:45:23 1991  John Gilmore  (gnu at cygnus.com)

	* strtoul.c:  Avoid defining ULONG_MAX if already defined;
	cast a const char * to char * for pedants.

	* getopt.c:  Only define "const" after local include files get to,
	and only if they haven't defined it.

Thu Nov 21 16:58:53 1991  John Gilmore  (gnu at cygnus.com)

	* getcwd.c (remove getwd.c): GNU code should call getcwd().  We
	emulate it with getwd() if available.  This avoids callers having
	to find a MAXPATHLEN or PATH_MAX value from somewhere.
	* Makefile.in, functions.def:  getwd->getcwd.
	* configure.in:  Use generic case for every system.
	* config/mh-{delta88,mach,rs6000,svr4}:  Remove.
	* config/mh-sysv:  Use default handling, just add -DUSG.

Thu Nov 14 10:58:05 1991  Per Bothner  (bothner at cygnus.com)

	* Makefile.in, config/mh-default: Re-do make magic
	so that for the default ("automatic") mode we only
	compile the files we actually need.  Do this using
	a recursive make:  The top-level generates the list
	of needed files (loosely, the ones missing in libc),
	and then passes that list to the recursive make.
	* config/mh-mach:  Remove obsolete STRERROR-{C,O} macros.

Tue Nov 12 19:10:57 1991  John Gilmore  (gnu at cygnus.com)

	RS/6000 host support (grumble).

	* configure.in:  Build alloca-conf.h file from alloca-norm.h
	(everything else) or alloca-botch.h (rs/6000).
	* Makefile.in:  Include . on the include path.
	* getopt.c:  Use alloca-conf.h.
	* alloca-norm.h:  How to declare alloca on reasonable machines.
	* alloca-botch.h: How to declare alloca on braindead machines.

Tue Nov 12 09:21:48 1991  Fred Fish  (fnf at cygnus.com)

	* concat.c :  New file, like concat() in gdb but can take a
	variable number of arguments rather than fixed at 3 args.  For
	now, client applications must supply an xmalloc(), which is a
	front end function to malloc() that deals with out-of-memory
	conditions.

	* Makefile.in:  Add concat.c and concat.o to appropriate macros.

Sat Nov  9 13:29:59 1991  Fred Fish  (fnf at cygnus.com)

	* config/mh-svr4:  Add sigsetmask to list of required functions.

Sun Nov  3 11:57:56 1991  Per Bothner  (bothner at cygnus.com)

	* vsprintf.c:  New file.
	* functions.def, Makefile.in:  Add vsprintf.

Sun Oct 27 16:31:22 1991  John Gilmore  (gnu at cygnus.com)

	* configure.in, config/mh-rs6000:  Add rs/6000 host support.
	* Makefile.in:  Compile with debug info.

Fri Oct 25 17:01:12 1991  Per Bothner  (bothner at cygnus.com)

	* Makefile.in, configure.in, and new files: dummy.c, functions.def,
	config/mf-default:  Added a default configuration mode,
	which includes into libiberty.a functions that are "missing" in libc.
	* strdup.c, vprintf.c, vfprintf.c: New files.

Thu Oct 24 02:29:26 1991  Fred Fish  (fnf at cygnus.com)

	* config/hmake-svr4: New file.

	* config/hmake-sysv: Add HOST_CFILES and HOST_OFILES.

	* basename.c, bcmp.c, bcopy.c, bzero.c, getpagesize.c getwd.c,
	index.c, insque.c, rindex.c, spaces.c, strstr.c, vfork.c: New
	files containing either portable C versions or emulations using
	native library calls.

	* strerror.c:  Add copyright, internal documentation, etc.

	* strtol.c:  Replace hardwired hex constants with some more
	portable macros.  Remove illegal (according to gcc) cast.

	* strtoul.c: Replace hardwired hex constant with more portable
	macro.

	* Makefile.in: Move TARGETLIB and CFLAGS where makefile fragments
	can override them.  Add new source and object file names to CFILES
	and OFILES respectively.

	* configure.in: Add support for SVR4 makefile fragments.

Tue Oct 22 19:00:23 1991  Steve Chamberlain  (steve at cygnus.com)

	* Makefile.in: Move RANLIB, AR and AR_FLAGS to where they can be
	over-ridden by config/hmake-*
	* configure.in: added m88kcvs to sysv list

Fri Oct  4 01:29:08 1991  John Gilmore  (gnu at cygnus.com)

	* Makefile.in:  Most hosts need strerror, but one or two don't,
	and they override these definitions in the host-dependent makefile
	fragment.
	* config/hmake-mach:  The odd man out on strerror -- it's supplied.
	* strerror.c:  New file.

	* strtol.c, strtoul.c:  Add strtol to libiberty, since Mach lacks
	it and bfd uses it.
	* configure.in, Makefile.in, config/hmake-mach:  Only configure
	strtol & strotoul in on Mach.

Tue Sep  3 06:36:23 1991  John Gilmore  (gnu at cygint.cygnus.com)

	* obstack.c:  Merge with latest FSF version.


Local Variables:
version-control: never
End:
