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:
