2024-04-02  Tom Tromey  <tom@tromey.com>

	* cplus-dem.c (cplus_demangle): Try the D demangler with
	"auto" format.
	* testsuite/d-demangle-expected: Add --format=auto test.

2024-04-02  Jakub Jelinek  <jakub@redhat.com>

	* regex.c (byte_re_match_2_internal): Fix duplicated words in comment;
	next next -> next.
	* dyn-string.c (dyn_string_init): Fix duplicated words in comment;
	of of -> of.

2024-02-19  Iain Sandoe  <iain@sandoe.co.uk>

	PR other/113957
	* pex-unix.c (pex_unix_exec_child): Set pid = -1 in the error
	paths, since that is used to signal an erroneous outcome for
	the routine.

2024-02-15  Richard Biener  <rguenther@suse.de>

	* hashtab.c (iterative_hash): Remove TBAA violating handling
	of aligned little-endian case in favor of just keeping the
	aligned case special-cased.  Use | for composing a larger word.

2024-02-12  Jakub Jelinek  <jakub@redhat.com>

	* vprintf-support.c (libiberty_vprintf_buffer_size): Handle
	properly l, ll, z, t or on _WIN32 I64 modifiers for diouxX
	and L modifier for fFgGeE.

2024-01-13  Jakub Jelinek  <jakub@redhat.com>

	* cp-demangle.c (FNQUAL_COMPONENT_CASE): Add case for
	DEMANGLE_COMPONENT_XOBJ_MEMBER_FUNCTION.
	(d_dump): Handle DEMANGLE_COMPONENT_XOBJ_MEMBER_FUNCTION.
	(d_nested_name): Parse H after N in nested name.
	(d_count_templates_scopes): Handle
	DEMANGLE_COMPONENT_XOBJ_MEMBER_FUNCTION.
	(d_print_mod): Likewise.
	(d_print_function_type): Likewise.
	* testsuite/demangle-expected: Add tests for explicit object
	member functions.

2023-12-05  Jakub Jelinek  <jakub@redhat.com>

	* configure.ac (HAVE_X86_SHA1_HW_SUPPORT): Verify __get_cpuid and
	__get_cpuid_count are not implicitly declared.
	* configure: Regenerated.

2023-12-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* pex-unix.c (pex_unix_wait): Change return type to pid_t.

2023-12-01  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_make_comp): Handle
	DEMANGLE_COMPONENT_CONSTRAINTS.
	(d_count_templates_scopes): Likewise.
	(d_print_comp_inner): Likewise.
	(d_maybe_constraints): New.
	(d_encoding, d_template_args_1): Call it.
	(d_parmlist): Handle 'Q'.
	* testsuite/demangle-expected: Add some constraint tests.

2023-11-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* configure.ac (GCC_CHECK_ASSEMBLER_HWCAP): Invoke.
	* configure, aclocal.m4: Regenerate.
	* Makefile.in (COMPILE.c): Add HWCAP_CFLAGS.

2023-11-28  Jakub Jelinek  <jakub@redhat.com>

	* configure.ac (HAVE_X86_SHA1_HW_SUPPORT): New check.
	* sha1.c: If HAVE_X86_SHA1_HW_SUPPORT is defined, include x86intrin.h
	and cpuid.h.
	(sha1_hw_process_bytes, sha1_hw_process_block,
	sha1_choose_process_bytes): New functions.
	* config.in: Regenerated.
	* configure: Regenerated.

2023-11-15  Mark Wielaard  <mjw@redhat.com>

	* aclocal.m4: Rebuild.

2023-11-10  Brendan Shanks  <bshanks@codeweavers.com>

	* configure.ac (AC_CHECK_HEADERS): Add spawn.h.
	(checkfuncs): Add posix_spawn, posix_spawnp.
	(AC_CHECK_FUNCS): Add posix_spawn, posix_spawnp.
	* aclocal.m4, configure, config.in: Rebuild.
	* pex-unix.c [HAVE_POSIX_SPAWN] (pex_unix_exec_child): New function.

2023-08-22  Jason Merrill  <jason@redhat.com>

	PR c++/109751
	* cp-demangle.c (d_make_comp): Handle DEMANGLE_COMPONENT_FRIEND.
	(d_count_templates_scopes): Likewise.
	(d_print_comp_inner): Likewise.
	(d_unqualified_name): Handle member-like friend mangling.
	* testsuite/demangle-expected: Add test.

2023-08-07  John Ericson  <git@JohnEricson.me>

	* configure: Regenerate.

2023-08-07  H.J. Lu  <hjl.tools@gmail.com>

	* configure: Regenerate.

2023-08-07  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.

2023-06-15  Marek Polacek  <polacek@redhat.com>

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

2023-06-13  Nathan Sidwell  <nathan@acm.org>

	* cp-demangle.c (d_print_conversion): Remove incorrect
	template instantiation handling.
	* testsuite/demangle-expected: Add testcases.

2023-06-07  Costas Argyris  <costas.argyris@gmail.com>

	* argv.c (writeargv): Constant propagate "0" for "status",
	simplifying the code slightly.

2023-06-06  Costas Argyris  <costas.argyris@gmail.com>

	* argv.c (writeargv): Simplify & remove gotos.

2023-06-05  Costas Argyris  <costas.argyris@gmail.com>

	* pex-win32.c: fix typos.

2023-06-05  Costas Argyris  <costas.argyris@gmail.com>

	* pex-win32.c (win32_spawn): Check command line length
	and generate a response file if necessary.
	(spawn_script): Adjust parameters.
	(pex_win32_exec_child): Ditto.

2023-06-03  Patrick Palka  <ppalka@redhat.com>

	PR c++/70790
	* cp-demangle.c (cplus_demangle_operators): Add the noexcept
	operator.
	(d_print_comp_inner) <case DEMANGLE_COMPONENT_UNARY>: Always
	print parens around the operand of noexcept too.
	* testsuite/demangle-expected: Test noexcept operator
	demangling.

2023-04-02  Jakub Jelinek  <jakub@redhat.com>

	PR other/109306
	* strstr.c: Revert the 2020-11-13 changes.
	(strstr): Return s1 if len is 0.

2023-03-30  Gerald Pfeifer  <gerald@pfeifer.com>

	* obstacks.texi (Preparing for Obstacks): Remove a (broken)
	reference to the Glibc manual.

2023-03-03  Costas Argyris  <costas.argyris@gmail.com>

	* pex-win32.c (win32_spawn): Fix memory leak of cmdline
	buffer and refactor to have cleanup code appear once
	for all exit cases.

2023-02-11  niXman  <i.nixman@autistici.org>

	* lrealpath.c (lrealpath): try to resolve symlink and
	use UNC paths where applicable.

2023-01-07  LIU Hao  <lh_mouse@126.com>

	PR middle-end/108300
	* make-temp-file.c: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
	* pex-win32.c: Likewise.

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

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

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

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

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

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

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

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

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

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

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

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

	* Makefile.in: Support Sphinx based documentation.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* Makefile.in: Support Sphinx based documentation.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* configure: Regenerate.

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

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

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

	* functions.texi: Replace strtoul with strtoull.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* regex.c: Restore comments.

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

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

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

	* random.c: Remove 'define PTR'.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* hashtab.c (htab_eq_string): New function.

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

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

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

	PR bootstrap/99703
	* configure: Regenerated.

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

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

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

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

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

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

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

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

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

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

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

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

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

	* strverscmp.c: Convert to utf8 from iso8859.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	PR bootstrap/96202
	* configure: Regenerated.

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

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

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

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

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

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

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

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

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

	PR bootstrap/95413
	* configure: Regenerated.

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

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

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

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

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

	PR bootstrap/94998
	* configure: Regenerated.

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

	PR bootstrap/94739
	* configure: Regenerated.

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

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

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

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

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

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

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

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

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

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

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

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

	* configure: Regenerated.

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

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

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

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

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

	Update copyright years.

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

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

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

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

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

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

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

	* testsuite/demangle-expected: Fix test.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* functions.texi: Regenerate.

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

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

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

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

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

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

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

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

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

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

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

	PR other/16615

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

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

	Update copyright years.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Update copyright years.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* dwarfnames.c (DW_CFA_DUP): New define.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Update copyright years.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* testsuite/demangle-expected: Add tests.

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

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

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

	* configure: Remove SH5 support.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* testsuite/demangle-expected: Add tests.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	PR target/65351
	* configure: Regenerate.

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

	PR target/65351
	* configure: Regenerate.

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

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

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

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

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

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

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

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

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

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

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

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

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

	* ChangeLog.jit: New.

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

	* sigsetmask.c (_POSIX_SOURCE): Remove.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* testsuite/demangle-expected: Fix last commit.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* configure: Regenerate.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	PR bootstrap/58386
	Revert:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* configure: Regenerated.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* configure: Regenerate.

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

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

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

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

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

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

	* configure: Regenerate.

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

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

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

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

	* configure: Regenerate.

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

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

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

	* configure: Regenerate.

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

	Merged from transactional-memory.

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

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

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

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

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

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

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

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

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

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

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

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

	* timeval-utils.c: New file.

	* argv.c (countargv): New function.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* .gitignore: New file.

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

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

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

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

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

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

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

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

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

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

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

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

	* testsuite/demangle-expected: Updated.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* functions.texi: Regenerate.

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

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

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

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

2010-05-06  Magnus Fromreide  <magfr@lysator.liu.se>
	    Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (cplus_demangle_builtin_types): Add nullptr.
	(cplus_demangle_type): Handle nullptr.
	* testsuite/demangle-expected: Test it.

2010-04-23  Pedro Alves  <pedro@codesourcery.com>

	* lbasename.c (lbasename): Split into ...
	(unix_lbasename, dos_basename): ... these.
	(lbasename): ... and reimplement on top of them.
	* Makefile.in (lbasename.o): Add dependency on
	$(INCDIR)/filenames.h.

2010-04-07  Jakub Jelinek  <jakub@redhat.com>

	* regex.c (byte_re_match_2_internal): Avoid set but not used
	warning.

2010-03-22  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_print_mod): Use () rather than [] for vectors.

2010-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.in (all): Do not use exec.

2010-02-04  Tom Tromey  <tromey@redhat.com>

	* testsuite/demangle-expected: Add missing --format=gnu-v3.

2010-02-03  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_expression): Handle dependent operator name.

	PR c++/12909
	* cp-demangle.c (d_number_component, d_vector_type): New.
	(cplus_demangle_type, d_print_comp, d_print_mod): Handle vectors.

2010-01-25  Ian Lance Taylor  <iant@google.com>

	* cp-demangle.c (cplus_demangle_type): Check for invalid type
	after "DF".
	* testsuite/demangle-expected: Add test.

2010-01-20  Jason Merrill  <jason@redhat.com>

	PR c++/42338
	* cp-demangle.c (d_print_comp): Fix array index printing.

2010-01-11  Tristan Gingold  <gingold@adacore.com>

	* cplus-dem.c (ada_demangle): Remove prototype.
	(grow_vect): Removed.
	(ada_demangle): Rewritten.
	(cplus_demangle): Fix indentation.
	* testsuite/demangle-expected: Add tests for Ada.

2010-01-09  Ian Lance Taylor  <iant@google.com>

	PR other/42230
	* cp-demangle.c (d_demangle): Return dgs.alc on success.

2010-01-04  Nobuhiro Iwamatsu <iwamatsu@nigauri.org>

	PR target/42316
	* configure.ac (PICFLAG): Use -fPIC on SH hosts.
	* configure: Regenerate.

2009-12-07  Doug Evans  <dje@google.com>

	* pex-unix.c (pex_unix_exec_child): Save/restore environ.

2009-11-26  Ben Elliston  <bje@au.ibm.com>

	* configure.ac (AC_CHECK_FUNCS): Sort into alphabetic order.
	* configure: Regenerate.

2009-11-25  Ben Elliston  <bje@au.ibm.com>

	* functions.texi: Rebuild.

2009-11-25  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
	    Ben Elliston  <bje@au.ibm.com>

	* README: Mention changes to Makefile.in and functions.texi.
	* gather-docs: Mention 'make stamp-functions' in the header.

2009-11-23  Ben Elliston  <bje@au.ibm.com>
	    Ian Lance Taylor  <iant@google.com>

	* pex-unix.c (pex_child_error): Improve warning avoidance by
	checking the results of write(3) and exiting with -2 if any write
	returns a negative value.

2009-11-22  Steve Ward  <planet36@gmail.com>

	* dyn-string.c (dyn_string_append_char): Fix typo in comment.

2009-11-20  Ben Elliston  <bje@au.ibm.com>

	* pex-unix.c (pex_child_error): Define writeerr macro to avoid
	unused result warnings from write(3) calls.  Undefine writeerr
	after all uses.

2009-10-08  Daniel Gutson  <dgutson@codesourcery.com>
	Daniel Jacobowitz  <dan@codesourcery.com>
	Pedro Alves  <pedro@codesourcery.com>

	* argv.c (consume_whitespace): New function.
	(only_whitespace): New function.
	(buildargv): Always use ISSPACE by calling consume_whitespace.
	(expandargv): Skip empty files.  Do not stop at the first empty
	argument (calling only_whitespace)..
	* testsuite/test-expandargv.c: (test_data): Test empty lines
	and empty arguments.
	(run_tests): Fix false positives due to shorter arguments.

2009-09-30  Martin Thuresson  <martint@google.com>

	* regex.c (byte_re_match_2_internal): Split declaration and
	assignment to avoid -Wc++-compat warning due to goto.

2009-09-29  Jason Merrill  <jason@redhat.com>

	* Makefile.in: Enable demangle target.
	* cp-demangle.c (d_lambda, d_unnamed_type, d_make_default_arg): New.
	(d_name, d_prefix, d_unqualified_name, d_local_name): Handle lambdas.
	(d_parmlist): Factor out from d_bare_function_type.
	(d_compact_number): Factor out from d_template_param and d_expression.
	(d_append_num): Factor out from d_print_comp.
	(d_print_comp, d_print_mod_list): Handle lambdas.
	* testsuite/demangle-expected: Add lambda tests.

2009-09-23  Matthew Gingell  <gingell@adacore.com>

	* cplus-dem.c (ada_demangle): Ensure demangled is freed.

2009-09-22  Ozkan Sezer  <sezeroz@gmail.com>

	* choose-temp.c: Include unistd.h for mingw targets.

2009-09-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* hashtab.c [HAVE_INTTYPES_H]: Include <inttypes.h>.

2009-09-15  Tristan Gingold  <gingold@adacore.com>

	* config.h-vms (intptr_t): Define to compile hashtab.c

2009-09-04  Ozkan Sezer  <sezeroz@gmail.com>

	PR target/39065
	* configure.ac: Replace AC_CHECK_TYPE() for intptr_t and uintptr_t
	with AC_TYPE_INTPTR_T and AC_TYPE_UINTPTR_T.
	* config.in: Regenerated.
	* configure: Regenerated.

2009-09-03  Ozkan Sezer  <sezeroz@gmail.com>

	PR target/39065
	* configure.ac: Also check for intptr_t.
	* config.h.in: Regenerated.
	* configure: Regenerated.
	* hashtab.c (hash_pointer): Cast the pointer argument to intptr_t
	instead of of long.

2009-09-02  Tristan Gingold  <gingold@adacore.com>

	* vmsbuild.com: Removed as unused and superceeded by makefile.vms.
	* makefile.vms: Ported to Itanium VMS.  Remove useless targets and
	dependencies.  Remove unused FORMAT variable.
	* configure.com: New file to create build.com DCL script for
	Itanium VMS or Alpha VMS.

2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure.ac (AC_PREREQ): Bump to 2.64.

2009-08-23  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/10536
	* Makefile.in (install-html-recursive): Removed.

2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* config.in: Regenerate.
	* configure: Regenerate.

2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.in (AUTOCONF, configure_deps): New variables.
	($(srcdir)/configure): New rule, active only in maintainer mode.

2009-07-29  Douglas B Rupp  <rupp@gnat.com>

	* make-temp-file.c (choose_tmpdir): Try standard temp logical on VMS.

2009-07-27  Douglas B Rupp  <rupp@gnat.com>

	* pex-unix.c (vfork): Remove VMS specific definition (get from header
	file instead).
	(to_ptr32): New function.
	(pex_unix_exec_child): Use it.

2009-07-24  Ian Lance Taylor  <iant@google.com>

	PR bootstrap/40854
	* crc32.c (xcrc32): Rename from crc32.

2009-07-24  Ian Lance Taylor  <iant@google.com>

	* crc32.c: New file.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add crc32.c.
	(REQUIRED_OFILES): Add ./crc32.o.
	* functions.texi: Rebuild.

2009-07-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* cp-demangle.c (d_print_comp <DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS>)
	(d_print_comp <DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS): New.
	(d_make_comp <DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS>)
	(d_make_comp <DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS): New.
	(d_demangle_callback): The variable type is now declared as enum.
	Replace parser of _GLOBAL_ symbols by a d_make_comp call.

2009-06-21  Jakub Jelinek  <jakub@redhat.com>

	* hashtab.c (htab_traverse): Don't call htab_expand for
	nearly empty hashtabs with sizes 7, 13 or 31.

2009-06-16  Nick Clifton  <nickc@redhat.com>

	PR 10197
	* testsuite/test-demangle.c: Rename getline to get_line to avoid
	conflicts with system function of the same name.

2009-05-30  Eli Zaretskii  <eliz@gnu.org>

	* snprintf.c: Doc fix.

	* vsnprintf.c: Doc fix.

2009-05-29  Kai Tietz  <kai.tietz@onevision.com>

	* pex-win32.c (pex_win32_fdopenr): Set INHERIT to false.

2009-05-29  Michael Matz  <matz@suse.de>

	* fibheap.c (fibheap_replace_key_data): Make sure we don't early
	out when forcing the minimum.
	(fibheap_delete_node): Assert that we managed to force the minimum.

2009-05-25  Tristan Gingold  <gingold@adacore.com>

	* config.h-vms: Rewritten.  Define configure macros.
	Use DEC-C builtin alloca.

	* makefile.vms (OBJS): Update list.
	(OPT): New variable.
	(CFLAGS): Update compilation flags.
	(libiberty.olb): Do not depend on alloca-conf.h anymore.

2009-05-19  Ian Lance Taylor  <iant@google.com>
	    Ben Elliston  <bje@au.ibm.com>

	* cp-demangle.c (cplus_demangle_fill_ctor): Fix logic bug.
	(cplus_demangle_fill_dtor): Likewise.

2009-05-17  Julian Brown  <julian@codesourcery.com>

	* pex-win32.c (pex_win32_exec_child): Fix logic to avoid closing
	standard handles (stdin, stdout, stderr) in parent.

2009-04-29  Julian Brown  <julian@codesourcery.com>

	* pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT.
	(pex_win32_exec_child): Ensure each process has only one handle open
	on pipe endpoints. Close standard input after creating child for
	symmetry with standard output/standard error.

2009-04-25  Eli Zaretskii  <eliz@gnu.org>

	* Makefile.in (needed-list): Target removed (not used in GCC
	3.0 and later).  All references deleted.
	(mostlyclean): Remove references to needed.awk and needed2.awk.

2009-04-14  Eli Zaretskii  <eliz@gnu.org>

	* configure.ac  (setobjs, msdosdjgpp): Move a-priori setting of
	existing and required library functions to with_target_subdir
	section, so that the native build does detect them at configure
	time.
	* configure: Regenerated.

2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>

	PR target/39397
	* pex-common.h (struct pex_obj): Store pid values as pid_t,
	not as long (members *children and (*wait))
	* pex-common.c (pex_run_in_environment): Likewise.
	* pex-win32.c (pex_win32_wait): Return pid_t and properly check
	returned pid value.
	* pex-djgpp.c (pex_djgpp_wait): Return pid_t.
	* pex-msdos.c (pex_msdos_wait): Likewise.

2009-04-07  Arnaud Patard <apatard@mandriva.com>

	* configure.ac: Fix Linux/MIPS matching rule.
	* configure: Regenerate.

2009-03-27  Ian Lance Taylor  <iant@google.com>

	* memmem.c: New file, from gnulib.
	* configure.ac: Add memmem to list of functions provided if they
	are not available on the host.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add memmem.c.
	(CONFIGURED_OFILES): Add memmem.o.
	* configure, config.in, functions.texi: Rebuild.

2009-03-23  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_expression): Handle pack expansion.
	(d_find_pack): Handle DEMANGLE_COMPONENT_FUNCTION_PARAM.
	(d_print_subexpr): Don't wrap function parms in ().
	(d_print_comp) [DEMANGLE_COMPONENT_PACK_EXPANSION]: Handle
	not finding a pack.

2009-03-17  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_make_function_param): new fn.
	(cplus_demangle_mangled_name): Work around abi v2 bug.
	(d_expr_primary): Likewise.
	(cplus_demangle_operators): Add alignof ops.
	(d_expression): Handle function parameters and conversions
	with other than 1 operand.
	(d_print_comp): Handle function parameters.  Fix bug with
	function used in type of function.
	* testsuite/demangle-expected: Update tests.

2009-02-21  Mark Mitchell  <mark@codesourcery.com>

	* make-temp-file.c (<windows.h>): Include on Windows.
	(choose_tmpdir): On Windows, use GetTempPath.

2009-01-18  Dave Korn  <dave.korn.cygwin@gmail.com>

	* configure.ac (funcs, vars, checkfuncs):  Don't munge on Cygwin,
	as it no longer shares libiberty object files.
	* configure:  Regenerated.

2009-01-07  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_expression): Remove mangling for zero-op casts.

2009-01-06  Ben Elliston  <bje@au.ibm.com>

	* cp-demangle.c (cplus_demangle_type): Return NULL if the
	character following a 'D' cannot be recognised.

2008-12-18  Jason Merrill  <jason@redhat.com>

	PR c++/38561
	* cp-demangle.c (d_expression, d_print_comp): Revert
	cast changes.

2008-12-17  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_expression): Handle rvalue stubs too.
	[DEMANGLE_COMPONENT_CAST]: Update mangling.
	(d_print_comp): Avoid extra ", " with empty template argument packs.
	Remove handling for obsolete T() mangling.

2008-12-10  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (cplus_demangle_type): Support fixed-point types.
	(d_print_comp, d_dump): Likewise.

2008-10-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (CPPFLAGS): Define.
	(FLAGS_TO_PASS, COMPILE.c): Add CPPFLAGS.

2008-10-15  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/37137
	* Makefile.in (LIBCFLAGS): Remove.
	(FLAGS_TO_PASS): Don't mention it.
	(COMPILE.c, MULTIOSDIR): Replace it with CFLAGS.

2008-10-08  David Edelsohn  <edelsohn@gnu.org>

	* xstrdup.c: Include <sys/types.h> after "config.h"

2008-10-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* configure.ac: Call AC_SYS_LARGEFILE.
	* config.in: Regenerated.
	* configure: Likewise.

2008-10-06  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (struct d_print_info): Add pack_index.
	(d_dump): Add DEMANGLE_COMPONENT_PACK_EXPANSION.
	(d_make_comp): Likewise.  DEMANGLE_COMPONENT_ARGLIST and
	DEMANGLE_COMPONENT_TEMPLATE_ARGLIST can have two null args.
	(cplus_demangle_builtin_types): Add char16/32_t.
	(cplus_demangle_type): Recognize them.
	(d_template_args): Handle empty argument packs.
	(d_template_arg): Handle argument packs.
	(d_expression): Handle dependent name.
	(d_index_template_argument): New fn.
	(d_lookup_template_argument): New fn.
	(d_find_pack, d_pack_length): New fn.
	(d_print_subexpr): Split out...
	(d_print_comp): ...from here.  Use d_*_template_argument.
	Handle empty arg lists.  Support pack expansions.
	* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Increase to 32.

2008-09-09  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_DECLTYPE.
	(d_make_comp): Likewise.
	(cplus_demangle_type): Handle decltype and DFP types.
	(cplus_demangle_operators): Call operator takes 2 args.
	(cplus_demangle_builtin_types): Add DFP types.
	(d_exprlist): New fn.
	(d_expression): Handle parm placeholders, T() and calls.
	(d_print_comp): Handle decltype, T() and calls.
	* testsuite/demangle-expected: Test the above.

2008-08-07  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>

	* pex-win32.c (argv_to_argc): New function.
	(spawn_script): Duplicate argv before calling win32_spawn.

2008-07-31  Jakub Jelinek  <jakub@redhat.com>

	* mkstemps.c (mkstemps): Keep looping even for EISDIR.

2008-07-31  Denys Vlasenko  <dvlasenk@redhat.com>

	* mkstemps.c (mkstemps): If open failed with errno other than
	EEXIST, return immediately.
	* make-temp-file.c: Include errno.h.
	(make_temp_file): If mkstemps failed, print an error message
	before aborting.

2008-07-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* maint-tool (deps): Output config.h instead of stamp-h.
	* Makefile.in: Rebuild deps.
	(maintainer-clean-subdir): Depend on stamp-h rather than config.h.
	Reverts 2007-07-11 change.

2008-06-19  Eric Blake  <ebb9@byu.net>

	Adjust strsignal to POSIX 200x prototype.
	* strsignal.c (strsignal): Remove const.

2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure: Regenerate.

2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* libiberty.texi: Expand TABs, drop indentation outside examples.
	* obstacks.texi: Likewise.

2008-04-21  Aurelien Jarno  <aurelien@aurel32.net>

	* configure.ac: use -fPIC on Linux/MIPS hosts.
	* configure: Regenerate.

2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>

	* testsuite/demangle-expected: Added tests for char16_t and char32_t.

2008-04-18  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/35457
	* aclocal.m4: Add override.m4.
	* configure: Regenerate.

2008-03-31  Ian Lance Taylor  <iant@google.com>

	* cp-demangle.c (d_substitution): Correct overflow check to avoid
	-fstrict-overflow optimizations.

2008-03-27  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac (frags): Don't set, use frag instead.
	(PICFLAG): Set here and substitute.
	* Makefile.in (PICFLAG): Substitute from autoconf.
	* configure: Regenerate.

2008-03-24  Ian Lance Taylor  <iant@google.com>

	* sha1.c: New file, from gnulib.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add sha1.c.
	(REQUIRED_OFILES): Add sha1.o.

2008-03-24  Doug Evans  <dje@google.com>

	* make-relative-prefix.c (make_relative_prefix_1): Handle NULL
	return from strdup.

2008-03-12  Seongbae Park <seongbae.park@gmail.com>

	* cplus-dem.c (malloc, realloc): Use void * instead of char *
	as return type.

2008-03-11  Nick Clifton  <nickc@redhat.com>

	* md5.c (md5_process_bytes): Do not assume that memcpy will
	provide a return value.

2008-02-19  Ben Elliston  <bje@au.ibm.com>

	PR other/12618
	* testsuite/Makefile.in (mostlyclean): Remove any core file.

2008-01-26  David Daney  <ddaney@avtrex.com>

	* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_JAVA_RESOURCE,
	DEMANGLE_COMPONENT_COMPOUND_NAME, and
	DEMANGLE_COMPONENT_CHARACTER cases.
	(d_make_comp): Handle DEMANGLE_COMPONENT_COMPOUND_NAME and
	DEMANGLE_COMPONENT_JAVA_RESOURCE cases.
	(d_make_character): New function.
	(d_java_resource): Same.
	(d_special_name): Handle "Gr" case.
	(d_print_comp): Handle DEMANGLE_COMPONENT_JAVA_RESOURCE,
	DEMANGLE_COMPONENT_COMPOUND_NAME, and
	DEMANGLE_COMPONENT_CHARACTER cases.
	* testsuite/demangle-expected: Add test for java resource name
	mangling.

2008-01-23  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* cplus-dem.c (demangle_function_name): Changed to return value
	indicating if a name was correctly demangled.
	(iterate_demangle_function): Use demangle_function_name return
	value.

2008-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR other/33768
	* splay-tree.c (rotate_left): Fix minor typo in comment.
	(rotate_right): Likewise.

2007-11-12  Joseph Myers  <joseph@codesourcery.com>

	* floatformat.c (floatformat_ibm_long_double_is_valid): Fix
	compiler warnings.
	(floatformat_ibm_long_double): Use
	floatformat_ibm_long_double_is_valid.

2007-11-07  Joseph Myers  <joseph@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* floatformat.c (mant_bits_set): New.
	(floatformat_to_double): Use it.  Note no special handling of
	split formats.
	(floatformat_from_double): Note no special handing of split
	formats.
	(floatformat_ibm_long_double_is_valid,
	floatformat_ibm_long_double): New.
	(floatformat_ieee_single_big, floatformat_ieee_single_little,
	floatformat_ieee_double_big, floatformat_ieee_double_little,
	floatformat_ieee_double_littlebyte_bigword, floatformat_vax_f,
	floatformat_vax_d, floatformat_vax_g, floatformat_i387_ext,
	floatformat_m68881_ext, floatformat_i960_ext,
	floatformat_m88110_ext, floatformat_m88110_harris_ext,
	floatformat_arm_ext_big, floatformat_arm_ext_littlebyte_bigword,
	floatformat_ia64_spill_big, floatformat_ia64_spill_little,
	floatformat_ia64_quad_big, floatformat_ia64_quad_little): Update
	for addition of split_half field.

2007-09-06  Tom Tromey  <tromey@redhat.com>

	* pexecute.txh (pex_free): Document process killing.

2007-08-31  Douglas Gregor  <doug.gregor@gmail.com>

	* cp-demangle.c (d_dump): Handle
	DEMANGLE_COMPONENT_RVALUE_REFERENCE.
	(d_make_comp): Ditto.
	(cplus_demangle_type): Ditto.
	(d_print_comp): Ditto.
	(d_print_mod): Ditto.
	(d_print_function_type): Ditto.

2007-08-24  Kai Tietz  <kai.tietz@onevision.com>

	* pex-common.h: (pex_funcs): Retyped wait and exec_child to pid_t.
	* pex-djgpp.c: Likewise.
	* pex-msdos.c: Likewise.
	* pex-unix.c: Likewise.
	* pex-win32.c: Likewise.

2007-08-17  Michael Snyder  <msnyder@access-company.com>

	* make-relative-prefix.c (make_relative_prefix_1): Resource leaks.

2007-08-03  Michael Snyder  <msnyder@access-company.com>

	* make-relative-prefix.c (make_relative_prefix_1): Fix resource
	leak.

2007-07-31  Michael Snyder  <msnyder@access-company.com>

	* cp-demangle.c (d_print_comp): Guard against null.

2007-07-25  Ben Elliston  <bje@au.ibm.com>

	* Makefile.in (CFILES): Remove ternary.c.
	(REQUIRED_OFILES): Remove ./ternary.o.
	(INSTALLED_HEADERS): Remove ternary.h.
	(ternary.o): Remove.
	* ternary.c: Remove.

2007-07-23  DJ Delorie  <dj@redhat.com>

	* argv.c (writeargv): Fix typo in inline documentation.
	* functions.texi: Regenerate.

2007-07-17  DJ Delorie  <dj@redhat.com>

	* configure.ac (target_header_dir, msdosdjgpp): Remove duplicate
	gettimeofday entry.
	* configure: Likewise.

2007-07-11  Alexandre Oliva  <aoliva@redhat.com>

	* maint-tool (deps): Output stamp-h instead of config.h.
	* Makefile.in: Rebuild deps.
	(maintainer-clean-subdir): Depend on stamp-h rather than config.h.

2007-07-02  Simon Baldwin <simonb@google.com>

	* argv.c (writeargv): Removed declaration of unused variable.

2007-06-14  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac: Use ACX_PROG_CC_ALMOST_PEDANTIC too.
	* configure: Regenerate.

2007-06-14  Paolo Bonzini  <bonzini@gnu.org>

	* aclocal.m4: Include config/warnings.m4.
	* configure.ac: Use ACX_PROG_CC_WARNING_OPTS.
	* configure: Regenerate.

2007-06-07  Geoffrey Keating  <geoffk@apple.com>

	* configure.ac: Non-default multilibs can be cross compilations.
	* configure: Regenerate

2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>

	* argv.c (writeargv): New function.

2007-05-05  Geoffrey Keating  <geoffk@apple.com>

	* cp-demangle.c (d_name): Detect local-source-name.
	(d_prefix): Likewise.
	(d_unqualified_name): Implement local-source-name.

2007-05-03  Joel Brobecker  <brobecker@adacore.com>

	* filename_cmp.c: Replace include of ctype.h by include of
	safe-ctype.h.
	(filename_cmp): Use TOLOWER instead of tolower for conversions
	that are locale-independent.
	* Makefile.in (filename_cmp.o): Add dependency on safe-ctype.h.

2007-04-11  Thomas Neumann  <tneumann@users.sourceforge.net>

	* argv.c: Use ANSI C declarations.
	* make-relative-prefix.c: Likewise.

2007-04-06  Joel Brobecker  <brobecker@adacore.com>

	* filename_cmp.c (filename_cmp): Improve documentation.

2007-04-02  Andreas Schwab  <schwab@suse.de>

	* filename_cmp.c: Include "config.h".

2007-03-29  Joel Brobecker  <brobecker@adacore.com>

	* filename_cmp.c: New file.
	* Makefile.in (CFILES): Add filename_cmp.c.
	(REQUIRED_OFILES): Add filename_cmp.o
	(filename_cmp.o): New rule.
	* functions.texi: Regenerate.

2007-03-15  Geoffrey Keating  <geoffk@apple.com>

	* cp-demangle.c (d_encoding): Exit early on error.
	(d_pointer_to_member_type): Exit early if cplus_demangle_type
	returns NULL.
	(cplus_demangle_type): Likewise.
	* testsuite/demangle-expected: New testcase.

2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>

	* Makefile.in: Add install-pdf target as copied from
	automake v1.10 rules.
	* testsuite/Makefile.in: Add dummy install-pdf target.

2007-03-01  Peter Breitenlohner  <peb@mppmu.mpg.de>
	    Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR other/16513
	* Makefile.in: Install library under $(MULTIOSDIR), not $(MULTISUBDIR).
	Install headers in multilib independent location.

2007-02-26  DJ Delorie  <dj@redhat.com>

	* configure.ac: add djgpp-specific results, so we don't have to
	link during a cross compilation.
	* configure: Regenerated.

2007-01-31  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* hex.c: Fix typo.
	* choose-temp.c: Likewise.
	* functions.texi: Regenerate.

2007-01-31  Vladimir Prus  <vladimir@codesourcery.com>

	* pex-common.h (struct pex_obj): New fields
	stderr_pipe and read_err.
	* pex-common.c (pex_init_common): Initialize
	stderr_pipe.
	(pex_run_in_environment): Add error checking
	for PEX_STDERR_TO_PIPE.  Create a pipe
	for stderr if necessary.
	(pex_read_err): New.
	(pex_free): Close read_err.
	* pexecute.txh: Document changes.
	* functions.texi: Regenerated.

2007-01-31  Ben Elliston  <bje@au.ibm.com>

	* strsignal.c (psignal): Change type of signo to int.
	* functions.texi: Regenerate.

2007-01-29  Simon Baldwin <simonb@google.com>

	* cp-demangle.h (cplus_demangle_operators): External definition
	suppressed if not building for libstdc++.
	* cp-demangle.c (__gcclibcxx_demangle_callback): Augmented interface
	to demangling, provides a malloc-less version of __cxa_demangle.
	(cplus_demangle_print_callback): Public callback version of
	cplus_demangle_print.
	(struct d_growable_string): New growable string structure.
	(d_growable_string_init): New function, provides support for
	growable strings separate from print info.
	(d_growable_string_resize): Likewise.
	(d_growable_string_append_buffer): Likewise.
	(d_growable_string_callback_adapter):): Likewise.
	(d_print_init): New print info initialization function.
	(d_print_error): Macro replace by inline function.
	(d_print_saw_error): Likewise.
	(d_append_char): Likewise.
	(d_append_buffer): Likewise.
	(d_append_string): New inline function, replaces the
	d_append_string_constant macro.
	(d_flush_buffer): New function, flushes buffer to callback.
	(d_demangle_callback, is_ctor_or_dtor): Malloc-based fallback
	for unsupported dynamic arrays replaced by alloca().
	(d_demangle): Return string length estimating removed.
	(d_dump): Moved error case handling from call site into function.
	(d_print_resize): Function removed.
	(d_print_append_char): Likewise.
	(d_print_append_buffer): Likewise.
	(d_print_error): Likewise.
	(d_print_comp): Added special case handling for Java arrays.
	(java_demangle_v3): Removed string post-processing for Java arrays,
	now replaced by special case handling in d_print_comp.
	(cplus_demangle_v3_callback): Augmented interface to demangling,
	provides a malloc-less version of cplus_demangle_v3.
	(java_demangle_v3_callback): Augmented interface to demangling,
	provides a malloc-less version of java_demangle_v3.

2007-01-12  Ben Elliston  <bje@au.ibm.com>

	* pex-unix.c (writeerr): Cast write result to void.

	* choose-temp.c (choose_temp_base): Check the result of the call
	to mktemp rather than testing the length of the modified string.

2006-12-20  Geoffrey Keating  <geoffk@apple.com>

	* cp-demangle.h: Add comment explaining what to do to avoid
	overrunning string.
	(d_check_char): New.
	(d_next_char): Don't advance past trailing '\0'.
	* cp-demangle.c (cplus_demangle_mangled_name): Use d_check_char.
	(d_nested_name): Likewise.
	(d_special_name): Likewise.
	(d_call_offset): Likewise.
	(d_function_type): Likewise.
	(d_array_type): Likewise.
	(d_pointer_to_member_type): Likewise.
	(d_template_param): Likewise.
	(d_template_args): Likewise.
	(d_template_arg): Likewise.
	(d_expr_primary): Likewise.
	(d_local_name): Likewise.
	(d_substitution): Likewise.
	(d_ctor_dtor_name): Use d_advance rather than d_next_char.
	* testsuite/test-demangle.c: Include sys/mman.h.
	(MAP_ANONYMOUS): Define.
	(protect_end): New.
	(main): Use protect_end.
	* testsuite/demangle-expected: Add testcases for overrunning
	the end of the string.

2006-11-30  Andrew Stubbs  <andrew.stubbs@st.com>
	    J"orn Rennecke <joern.rennecke@st.com>

	PR driver/29931
	* make-relative-prefix.c (make_relative_prefix_1): New function,
	broken out of make_relative_prefix.  Make link resolution dependent
	on new parameter.
	(make_relative_prefix): Use make_relative_prefix_1.
	(make_relative_prefix_ignore_links): New function.

2006-11-08  Vladimir Prus  <vladimir@codesourcery.com>

	* pex-win32.c (no_suffixes): Remove.
	(std_suffixes): Add "" as first element.
	(find_executable): Remove detection of already-present
	extension. Try all suffixes in std_suffixes.

2006-11-07  Julian Brown  <julian@codesourcery.com>

	* floatformat.c (get_field): Fix segfault with little-endian word
	order on 64-bit hosts.
	(put_field): Likewise.
	(min): Move definition.

2006-10-26  Danny Smith  <dannysmith@users.sourceforge.net>

	pex-win32.c (argv_to_cmdline): Replace xmalloc with XNEWVEC.
	(find_executable): Likewise.
	(win32_spawn): Cast alloca return to (char**).
	Replace malloc with XNEWVEC.
	bcopy.c (bcopy): Add explict casts in assignments.

2006-10-25  Ben Elliston  <bje@au.ibm.com>

	* pexecute.txh: Wrap pexecute's "flag" argument with @var {..}.

2006-10-10  Brooks Moses  <bmoses@stanford.edu>

	* Makefile.in: Added "pdf", "libiberty.pdf" target support.
	* testsuite/Makefile.in: Added empty "pdf" target.

2006-09-22  Ian Lance Taylor  <ian@airs.com>

	PR other/29176
	* cp-demangle.c (d_substitution): Check for overflow when
	computing substitution index.

2006-08-30  Corinna Vinschen  <corinna@vinschen.de>

	* configure.ac: Add case for Mingw as host.
	* configure: Regenerate.

2006-08-27  Ian Lance Taylor  <ian@airs.com>

	PR driver/27622
	* pex-common.h (struct pex_funcs): Add toclose parameter to
	exec_child field.
	* pex-common.c (pex_run_in_environment): Pass toclose to
	exec_child.
	* pex-djgpp.c (pex_djgpp_exec_child): Add toclose parameter.
	* pex-unix.c (pex_unix_exec_child): Likewise.
	* pex-msdos.c (pex_msdos_exec_child): Likewise.
	* pex-win32.c (pex_win32_exec_child): Likewise.

	PR other/28797
	* cp-demangle.c (d_pointer_to_member_type): Do add a substitution
	for a qualified member which is not a function.
	* testsuite/demangle-expected: Add test case.

2006-07-27  Jan Hubicka  <jh@suse.cz>

	PR rtl-optimization/28071
	* hashtab.c (htab_empty): Clear out n_deleted/n_elements;
	downsize the hashtable.

2006-07-04  Peter O'Gorman  <peter@pogma.com>

	* Makefile.in: chmod 644 before ranlib during install.

2006-06-02  Mark Shinwell  <shinwell@codesourcery.com>

	* pex-unix.c (pex_unix_exec_child): Insert cast when assigning
	to environ.

2006-06-01  Mark Shinwell  <shinwell@codesourcery.com>

	* pex-common.c: New function pex_run_in_environment.
	* pex-common.h: Add environment parameter to exec_child.
	* pex-msdos.c: Add environment parameter to pex_msdos_exec_child.
	* pex-djgpp.c: Add environment parameter to pex_djgpp_exec_child.
	(pex_djgpp_exec_child): Pass environment to child process.
	* pex-unix.c: Add environment parameter to pex_unix_exec_child.
	(pex_unix_exec_child): Pass environment to child process.
	* pex-win32.c: Add environment parameter to pex_win32_exec_child.
	New function env_compare for comparing VAR=VALUE pairs.
	(win32_spawn): Assemble environment block and pass to CreateProcess.
	(spawn_script): Pass environment through to win32_spawn.
	(pex_win32_exec_child): Pass environment through to spawn_script and
	win32_spawn.
	* functions.texi: Regenerate.
	* pexecute.txh: Document pex_run_in_environment.

2006-05-28  Mark Shinwell  <shinwell@codesourcery.com>

	* mkstemps.c: Open temporary files in binary mode.

2006-05-12  Anton Blanchard  <anton@samba.org>

	* cplus-dem.c (demangle_fund_type): Ensure buf is large enough to
	hold "int%u_t".

2006-04-24  Julian Brown  <julian@codesourcery.com>

	* floatformat.c (floatformat_to_double): Fix (biased) exponent=0 case.

2006-03-29  Jim Blandy  <jimb@codesourcery.com>

	* pex-common.c (pex_input_file, pex_input_pipe): New functions.
	(pex_init_common): Initialize obj->input_file.
	(pex_run): Close any file opened by pex_input_file.
	* pexecute.txh (pex_input_file, pex_input_pipe): New docs.
	* pex-common.h (struct pex_obj): New field input_file.
	(struct pex_funcs): New function ptr fdopenw.
	* pex-unix.c (pex_unix_fdopenw): New function.
	(funcs): List it as our fdopenw function.
	* pex-win32.c (pex_win32_fdopenw): New function.
	(funcs): List it as our fdopenw function.
	* pex-djgpp.c (funcs): Leave fdopenw null.
	* pex-msdos (funcs): Same.
	* functions.texi: Regenerated.

2006-04-10  Jim Blandy  <jimb@codesourcery.com>

	* pex-common.c (temp_file): New function, containing guts of
	pex-style temporary file name generation.
	(pex_run): Use it.

2006-04-06  Carlos O'Donell  <carlos@codesourcery.com>

	* Makefile.in: Add install-html, install-html-am, and
	install-html-recursive targets. Define mkdir_p and
	NORMAL_INSTALL.
	* configure.ac: AC_SUBST datarootdir, docdir, htmldir.
	* configure: Regenerate.
	* testsuite/Makefile.in: Add install-html and html targets.

2006-03-31  Mark Mitchell  <mark@codesourcery.com>

	* pex-win32.c (<errno.h>): Include.
	(fix_argv): Remove.
	(argv_to_cmdline): New function.
	(std_suffixes): New variable.
	(no_suffixes): Likewise.
	(find_executable): New function.
	(win32_spawn): Likewise.
	(spawn_script): Use win32_spawn instead of _spawnv[p].
	(pex_win32_exec_child): Replace MSVCRT calls with Win32 API calls.
	(pex_win32_wait): Likewise.

2006-03-24  Jim Blandy  <jimb@codesourcery.com>

	* pex-common.c (pex_run): Simplify output name handling.

2006-03-12  Jim Blandy  <jimb@red-bean.com>

	* pex-common.h (struct pex_obj): Doc fixes.

2006-03-11  Jim Blandy  <jimb@red-bean.com>

	* functions.texi: Regenerate.

2006-02-21  Ben Elliston  <bje@au.ibm.com>

	* pexecute.c (pwait): Syntax fix for previous change.

2006-02-17  Uttam Pawar  <uttamp@us.ibm.com>

	* pexecute.c (pwait): Free vector pointer.
	* partition.c (partition_print): Free class_elements pointer.

2006-02-11  Roger Sayle  <roger@eyesopen.com>
	    R. Scott Bailey  <scott.bailey@eds.com>
	    Bill Northcott  <w.northcott@unsw.edu.au>

	PR bootstrap/16787
	* floatformat.c: Include <float.h> where available.
	(NAN): Use value of DBL_QNAN if defined, and NAN isn't.

2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* configure.ac: Add -Wc++-compat to ac_libibety_warn_cflags where
	supported.
	* configure: Regenerated.

2006-01-20  Carlos O'Donell  <carlos@codesourcery.com>

	* testsuite/Makefile.in: Add test-expandargv test.
	* testsuite/test-expandargv.c: New test.
	* argv.c (expandargv): Check for errors with ferror,
	rather than just by looking at return value from fread.

2005-12-17  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* floatformat.c (floatformat_i387_ext_is_valid): Use explicit cast
	to convert from "from".
	(floatformat_to_double): Likewise.
	(floatformat_from_double): Use explicit cast to convert from "to".

2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>

	PR java/9861
	* cp-demangle.c (d_bare_function_type): Recognize new 'J' qualifer
	and include return type when found.
	(d_print_comp)[DEMANGLE_COMPONENT_FUNCTION_TYPE]: Add
	conditional logic to change printing order of return type.when
	the DMGL_RET_POSTFIX option is present.
	(java_demangle_v3): Add DMGL_RET_POSTFIX option to d_demangle
	call.
	* testsuite/test-demangle.c (main): Recognize option --ret-postfix
	* testsuite/demangle-expected: Test cases to verify extended encoding.
	Updated comment to document --ret-postfix option.

2005-11-06  Richard Guenther  <rguenther@suse.de>

	* splay-tree.c (rotate_left): New function.
	(rotate_right): Likewise.
	(splay_tree_splay_helper): Remove.
	(splay_tree_splay): Re-implement.

2005-10-31  Mark Kettenis  <kettenis@gnu.org>

	* floatformat.c (floatformat_vax_aingle, floatformat_vax_double):
	New variables.

2005-10-07  Mark Mitchell  <mark@codesourcery.com>

	* at-file.texi: Fix typo.

2005-10-03  Mark Mitchell  <mark@codesourcery.com>

	* at-file.texi: New file.

2005-09-27  Mark Mitchell  <mark@codesourcery.com>

	* argv.c (expandargv): Do not use xmalloc_failed.

2005-09-26  Mark Mitchell  <mark@codesourcery.com>

	* argv.c (safe-ctype.h): Include it.
	(ISBLANK): Remove.
	(stdio.h): Include.
	(buildargv): Use ISSPACE instead of ISBLANK.
	(expandargv): New function.
	* Makefile.in: Regenerated.

2005-09-14  Christopher Faylor  <cgf@timesys.com>

	* pex-win32.c: Include "windows.h".
	(backslashify): New function.
	(fix_argv): Use backslashify to convert path to windows format.
	Allocate one more place in new argv for potential executable from '#!'
	parsing.
	(tack_on_executable): New function.  Conditional on USE_MINGW_MSYS
	(openkey): Ditto.
	(mingw_rootify): Ditto.
	(msys_rootify): Ditto.
	(spawn_script): New function.
	(pex_win32_exec_child): Save translated argv in newargv.  Pass to
	spawn_script if spawnv* fails.
	(main): New function.  Conditional on MAIN.  Useful for testing.

2005-08-17  Mark Kettenis  <kettenis@gnu.org>

	* floatformat.c (floatformat_always_valid): Change type of last
	argument to `void *'.
	(floatformat_i387_ext_is_valid): Likewise.
	(floatformat_to_double): Change type of second argument to `const
	void *'.
	(floatformat_from_double): Change type of last argument to `void
	*'.
	(floatformat_is_valid): Change type of last argument to `const
	void *'.
	(ieee_test): Remove redundant casts.

2005-08-17  Kelley Cook  <kcook@gcc.gnu.org>

	* strverscmp.c: Update FSF address.
	* testsuite/Makefile.in: Likewise.
	* testsuite/test-demangle.c: Likewise.
	* testsuite/test-pexecute.c: Likewise.

2005-07-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* getopt.c: Include ansidecl.h before system headers.

2005-07-22  Ben Elliston  <bje@gnu.org>

	* getopt.c: Include "ansidecl.h".
	(_getopt_initialize): Mark argc and argv parameters as unused.

2005-07-22  Ben Elliston  <bje@gnu.org>

	* regex.c (regcomp): Change type of `i' from unsigned to int.

2005-07-22  Ben Elliston  <bje@gnu.org>

	Recover patch lost in the sourceware repository:
	2005-07-09  Ben Elliston  <bje@au.ibm.com>
	* memcpy.c: Remove ANSI_PROTOTYPES conditional code.
	* memmove.c: Likewise.
	* objalloc.c: Likewise.

2005-07-22  Ben Elliston  <bje@gnu.org>

	* configure.ac: Check for a getopt(3) declaration.
	* configure, config.in: Regenerate.

2005-07-15  Ben Elliston  <bje@au.ibm.com>

	* regex.c (TRANSLATE): Cast rhs of ternary expression to char.

2005-07-12  Ben Elliston  <bje@au.ibm.com>

	* floatformat.c (floatformat_to_double): Add a comment about a
	potential source of warnings when compiling this file.

2005-07-12  Ben Elliston  <bje@au.ibm.com>

	* pexecute.c (pexecute): Cast string litrals to char *.
	* regex.c (re_comp): Cast a call to gettext() to char *.

2005-07-07  Kelley Cook  <kcook@gcc.gnu.org>

	* config.table: Delete file.  Move former contents into ...
	* configure.ac: ... here and escape any brackets for m4.
	* Makefile.in (config.status): Remove dependency on config.table.
	* configure: Regenerate.

2005-07-07  Kelley Cook  <kcook@gcc.gnu.org>

	* config.in: Regenerate for 6/20 change.

2005-07-03  Steve Ellcey  <sje@cup.hp.com>

	PR other/13906
	* md5.c (md5_process_bytes): Check alignment.

2005-07-01  Ian Lance Taylor  <ian@airs.com>

	PR other/22268
	* cp-demangle.c (d_expr_primary): Don't run off the end of the
	string while looking for the end of a literal value.
	* testsuite/demangle-expected: Add test case.

2005-06-30  Daniel Berlin  <dberlin@dberlin.org>

	* hashtab.c (EMPTY_ENTRY): Moved and renamed.
	(DELETED_ENTRY): Ditto.

2005-06-20  Geoffrey Keating  <geoffk@apple.com>

	* strverscmp.c: New.
	* Makefile.in (CFILES): Add strverscmp.c.
	(CONFIGURED_OFILES): Add strverscmp.o.
	(strverscmp.o): New rule.
	(stamp-functions): Add $(srcdir) to files in source directory.
	* configure.ac (funcs): Add strverscmp.
	(AC_CHECK_FUNCS): Add strverscmp.
	* configure: Regenerate.
	* functions.texi: Regenerate.

2005-05-28  Eli Zaretskii  <eliz@gnu.org>

	* configure.ac: Add snprintf and vsnprintf to AC_CHEK_DECLS.
	* config.in, configure: Regenerate.

2005-05-25  Richard Henderson  <rth@redhat.com>

	* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_HIDDEN_ALIAS.
	(d_make_comp, d_print_comp): Likewise.
	(d_special_name): Generate one.
	* testsuite/demangle-expected: Add a hidden alias test.

2005-05-24  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* configure.ac: Check declarations for calloc(), getenv(),
	malloc(), realloc() and sbrk().
	* config.in: Regenerate.
	* configure: Likewise.

	* alloca.c (C_alloca): Change "new" to "new_storage".  Use XNEWVEC
	instead of xmalloc.
	* choose-temp.c (choose_temp_base): Use XNEWVEC instea od xmalloc.
	* concat.c (liiberty_concat_ptr): Surround definition with an
	extern "C" block, if __cplusplus.
	(concat): Use XNEWVEC instead of xmalloc.
	(reconcat): Likewise.
	* cp-demangle.c (struct d_print_template): Rename member
	"template" to "template_decl".  Adjust use throughout the file.
	(d_print_resize): Properly cast return value of realloc().
	(cplus_demangle_print): Same for malloc().
	(d_demangle): Likewise.
	* cp-demint.c (cplus_demangle_fill_builtin_type): Rename parameter
	"typename" to "type_name".
	* cplus-dem.c (grow_vect): Use XRESIZEVEC instead of xrealloc().
	(work_stuff_copy_to_from): Use XNEWVEC insteand of xmalloc().
	(demangle_template_value_parm): Likewise.
	(demangle_template): Likewise.
	(recursively_demangle): Likewise.
	(do_hpacc_template_literal): Likewise.
	(do_arg): Likewise.
	(remember_type): Likewise.
	(remember_Ktype): Likewise.
	(register_Btype): Likewise.
	(string_need): Use XRESIZEVEC instead of xrealloc().
	* dyn-string.c (dyn_string_init): Use XNEWVEC.
	(dyn_string_new): Use XNEW.
	(dyn_string_resize): Use XRESIZEVEC.
	* fnmatch.c (fnmatch): Rename local variable "not" to "negate".
	* getopt.c (getenv): Declare only if !__cplusplus and !getenv.
	Otherwise include <stdlib.h>.
	(exchange): Cast return value of malloc().
	* hashtab.c (htab_size): Define as both macro and non-inline
	function.
	(htab_elements): Likewise.
	* getpwd.c (getpwd): Use XNEWVEC.
	(htab_create_alloc_ex): Use C90 prototype-style.
	* lrealpath.c (lrealpath): Appropriately cast return value of
	malloc().
	* make-relative-prefix.c (save_string): Likewise.
	* make-temp-file.c (try_dir): Rename from "try".  Adjust use in
	the file.
	(choose_tmpdir): Use XNEWVEC.
	* mkstemps.c (mkstemps): Rename parameter "template" to "pattern".
	* pex-common.c (pex_init_common): Use XNEW.
	(pex_add_remove): Use XRESIZEVEC.
	(pex_run): Likewise.
	(pex_get_status_and_time): Likewise.
	* pex-djgpp.c (pex_djgpp_exec_child): Likewise.
	* pex-msdos.c (pex_init): Use XNEW.
	(pex_msdos_exec_child): Likewise.
	(pex_msdos_exec_child): Use XRESIZEVEC.
	* pex-unix.c (pex_wait): Use XNEW.
	* pex-win32.c (fix_argv): Use XNEWVEC.
	* pexecute.c (pwait): Likewise.
	* setenv.c (setenv): Properly cast return value of malloc().
	* sigsetmask.c (sigsetmask): Rename local variables "old" and
	"new" to "old_sig" and "new_sig".
	* sort.c (main): Use XNEWVEC.
	* spaces.c (spaces): Cast return value of malloc().
	* strndup.c (strndup): Likewise.
	* ternary.c (ternary_insert): Use XNEW.
	* xmalloc.c (malloc, realloc, calloc, sbrk): Surround declaration
	with an extern "C" block if __cplusplus.
	* xstrdup.c (xstrdup): Cast return value of memcpy().
	* xstrerror.c (strerror): Enclose declaration in an extern "C"
	block if __cplusplus.
	* xstrndup.c (xstrndup): Use XNEW. Cast return value of memcpy().

2005-05-16  Andreas Jaeger  <aj@suse.de>

	* getpwd.c: Remove unneeded prototype getcwd and move getwd so
	that it's only declared if needed.

	* getopt1.c: Change order of includes so that __GNU_LIBRARY__ is
	defined.

2005-05-15  Andreas Jaeger  <aj@suse.de>

	* functions.texi: Regenerated.

2005-05-15  Eli Zaretskii  <eliz@gnu.org>

	* pexecute.txh: Enclose multi-word data types in @deftypefn in
	braces.  Minor wording fixes.  Use --- for em-dash.  Use
	@enumerate in enumerated lists.

	* fopen_unlocked.c: Enclose multi-word data types in @deftypefn in
	braces.

2005-05-11  Eli Zaretskii  <eliz@gnu.org>

	* pex-djgpp.c: Include string.h, fcntl.h, unistd.h, and
	sys/stat.h.
	(pex_init): Fix last argument to pex_init_common.
	(pex_djgpp_exec_child): Remove leading underscore from _open,
	_dup, _dup2, _close, and _spawnv/_spawnvp.  Replace `program',
	which is undeclared, with `executable', which was unused.  Remove
	unused variable `e'.  Fix casting of last arg to spawnv/spawnvp.
	(pex_djgpp_wait): Declare arguments with ATTRIBUTE_UNUSED.

2005-05-11  Paul Brook  <paul@codesourcery.com>

	* Makefile.in: Regenerate dependencies.

2005-05-10  Nick Clifton  <nickc@redhat.com>

	* Update the address and phone number of the FSF organization in
	the GPL notices in the following files:
	COPYING.LIB, Makefile.in, _doprnt.c, argv.c, asprintf.c,
	choose-temp.c, clock.c, concat.c, copying-lib.texi, cp-demangle.c,
	cp-demangle.h, cp-demint.c, cplus-dem.c, dyn-string.c, fdmatch.c,
	fibheap.c, floatformat.c, fnmatch.c, fopen_unlocked.c,
	gather-docs, getopt.c, getopt1.c, getruntime.c, hashtab.c, hex.c,
	lbasename.c, lrealpath.c, maint-tool, make-relative-prefix.c,
	make-temp-file.c, md5.c, mempcpy.c, mkstemps.c, objalloc.c,
	obstack.c, partition.c, pex-common.c, pex-common.h, pex-djgpp.c,
	pex-msdos.c, pex-one.c, pex-unix.c, pex-win32.c, pexecute.c,
	physmem.c, putenv.c, regex.c, safe-ctype.c, setenv.c, snprintf.c,
	sort.c, spaces.c, splay-tree.c, stpcpy.c, stpncpy.c, strndup.c,
	strtod.c, ternary.c, unlink-if-ordinary.c, vasprintf.c,
	vsnprintf.c, vsprintf.c, xexit.c, xmalloc.c, xstrndup.c

2005-05-06  Kelley Cook  <kcook@gcc.gnu.org>

	* aclocal.m4 (AC_DEFINE_NOAUTOHEADER): Remove.
	* configure.ac: Replace any AC_DEFINE_NOAUTOHEADER with AC_DEFINE.
	* configure: Regenerate.

2005-05-06  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS.
	Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF.
	* aclocal.m4: Don't include accross.m4.
	* configure, config.in: Regenerate.

2005-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fopen_unlocked.c (unlock_std_streams): New.

	* functions.texi: Regenerate.

2005-04-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fopen_unlocked.c (unlock_stream): New.
	Consolidate unlocking code into a helper function.

	* functions.texi: Regenerate.

2005-04-13  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* asprintf.c: Include config.h.
	* basename.c: Likewise.
	* fdmatch.c: Likewise.
	* hex.c: Likewise.
	* lbasename.c: Likewise.
	* spaces.c: Likewise.
	* xatexit.c:Likewise.
	* configure.ac:  Do check declarations for basename, ffs, asprintf
	and vasprintf for real.
	* configure: Regenerate.

2005-04-13  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* argv.c (dupargv): Allocate space of argv[argc], not
	sizeof(char *) of that amount.  Cast result to char *.

2005-04-12  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* regex.c (wcs_re_match_2_internal, byte_re_match_2_internal):
	Replace not with negate.

2005-04-12  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* configure.ac: Check declarations for basename, ffs, asprintf,
	vasprintf.
	* configure: Regenerate.
	* config.in: Likewise.

2005-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (CFILES): Add fopen_unlocked.c.
	(REQUIRED_OFILES): Add ./fopen_unlocked.o.
	Regenerate dependencies.

	* configure.ac: Check for stdio_ext.h and __fsetlocking.

	* fopen_unlocked.c: New file.

	* functions.texi, configure, config.in: Regenerate.

2005-04-04  Ian Lance Taylor  <ian@airs.com>

	* testsuite/test-pexecute.c (TEST_PEX_RUN): Move variable
	declaration before statement.

2005-04-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* bcmp.c: Fix warnings and implement using memcmp.
	* bcopy.c: Fix warnings.
	* bzero.c: Fix warnings and implement using memset.

	* configure.ac (ac_libiberty_warn_cflags): Add -Wwrite-strings
	-Wstrict-prototypes.
	* configure, config.in: Regenerate.

	* bsearch.c, index.c, rindex.c, strstr.c, strtol.c, waitpid.c: Fix
	warnings and reconcile interfaces with relevant standards.

2005-04-02  Ian Lance Taylor  <ian@airs.com>

	* cp-demangle.c: Update copyright.

2005-03-31  Joseph S. Myers  <joseph@codesourcery.com>

	* gettimeofday.c: Add "Supplemental" to @deftypefn.
	* functions.texi: Regenerate.

2005-03-28  Ian Lance Taylor  <ian@airs.com>

	* pex-common.c: New file.
	* pex-one.c: New file.
	* pexecute.c: New file.
	* pex-common.h: Include <stdio.h>.
	(struct pex_obj): Define.
	(struct pex_funcs): Define.
	(pex_init_common): Declare.
	* pex-unix.c: Rewrite.
	* pex-win32.c: Rewrite.
	* pex-djgpp.c: Rewrite.
	* pex-msdos.c: Rewrite.
	* testsuite/text-pexecute.c: New file.
	* pexecute.txh: Rewrite.
	* configure.ac: Check for wait3 and wait4.  Set CHECK to
	really-check rather than check-cplus-dem.
	* functions.texi: Rebuild.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add pexecute.c, pex-common.c, pex-one.c.
	(REQUIRED_OFILES): Add pexecute.o, pex-common.o, pex-one.o.
	* testsuite/Makefile.in (really-check): New target.
	(check-pexecute, test-pexecute): New targets.
	* configure: Rebuild.

2005-03-28  Mark Kettenis  <kettenis@gnu.org>

	* unlink-if-ordinary.c: Include <sys/types.h>.

2005-03-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to use ISO C prototype style 7/n.
	* regex.c (PARAMS): Remove definition.
	(PREFIX): Unconditionaly define using ISO C ## operator.
	(init_syntax_once, extract_number, extract_number_and_incr,
	print_fastmap, print_partial_compiled_pattern,
	print_compiled_pattern, print_double_string, printchar,
	convert_mbs_to_wcs, re_set_syntax, regex_grow_registers,
	regex_compile, store_op1, store_op2, insert_op1, insert_op2,
	at_begline_loc_p, at_endline_p, group_in_compile_stack,
	insert_space, wcs_compile_range, byte_compile_range,
	truncate_wchar, re_compile_fastmap, re_compile_fastmap,
	re_set_registers, re_search, re_search_2, re_search_3, re_match,
	re_match_2, count_mbs_length, wcs_re_match_2_internal,
	byte_re_match_2_internal, group_match_null_string_p,
	alt_match_null_string_p, common_op_match_null_string_p,
	bcmp_translate, re_compile_pattern, re_comp, re_exec, regcomp,
	regexec, regerror, regfree): Use ISO C prototype style.
	* partition.c: (elem_compare): Likewise.
	* cp-demangle.c (print_usage): Likewise.

2005-03-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to use ISO C prototype style 5/n.
	* random.c (srandom, initstate, setstate, random): Use ISO C
	prototypes.
	* putenv.c (putenv): Likewise.
	* physmem.c (physmem_available, physmem_total, main): Likewise.
	* pex-win32.c (fix_argv, pexecute, pwait): Likewise.
	* pex-unix.c (pexecute, pwait): Likewise.
	* pex-msdos.c (pexecute, pwait): Likewise.
	* pex-djgpp.c (pexecute, pwait): Likewise.
	* partition.c (partition_new, partition_delete, partition_union)
	(elem_compare, partition_print): Likewise.
	* obstack.c (_obstack_begin, _obstack_begin_1, _obstack_newchunk,
	_obstack_allocated_p, _obstack_free, obstack_free,
	_obstack_memory_used, print_and_abort, obstack_next_free,
	obstack_object_size, obstack_base): Likewise.  Remove codes
	predicated on !defined(__STDC__).
	* objalloc.c (objalloc_create, _objalloc_alloc, objalloc_free,
	objalloc_free_block): Use ISO C prototypes.
	* mkstemps.c (mkstemps): Likewise.
	* memset.c (memset): Likewise.
	* mempcpy.c (mempcpy): Likewise.
	* rename.c (rename): Likewise.
	* rindex.c (rindex): Likewise.
	* setenv.c (setenv, unsetenv): Likewise.
	* sigsetmask.c (sigsetmask): Likewise.
	* snprintf.c (snprintf): Likewise.
	* sort.c (sort_pointers, xmalloc): Likewise.
	* spaces.c (spaces): Likewise.
	* splay-tree.c (splay_tree_delete_helper,
	splay_tree_splay_helper, splay_tree_splay,
	splay_tree_foreach_helper, splay_tree_xmalloc_allocate,
	splay_tree_new, splay_tree_xmalloc_allocate,
	splay_tree_new_with_allocator, splay_tree_delete,
	splay_tree_insert, splay_tree_remove, splay_tree_lookup,
	splay_tree_max, splay_tree_min, splay_tree_predecessor,
	splay_tree_successor, splay_tree_foreach,
	splay_tree_compare_ints, splay_tree_compare_pointers): Likewise.
	* stpcpy.c (stpcpy): Likewise.
	* stpncpy.c (stpncpy): Likewise.
	* strcasecmp.c (strcasecmp): Likewise.
	* strchr.c (strchr): Likewise.
	* strdup.c (strdup): Likewise.

2005-03-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to use ISO C prototype style 6/n.
	* strerror.c (init_error_tables, errno_max, strerror, strerrno,
	strtoerrno, main): Use ISO C prototype style.
	* strncasecmp.c (strncasecmp): Likewise.
	* strncmp.c (strncmp): Likewise.
	* strndup.c (strndup): Likewise.
	* strrchr.c (strrchr): Likewise.
	* strsignal.c (init_signal_tables, signo_max, strsignal,
	strsigno, strtosigno, psignal, main): Likewise.
	* strstr.c (strstr): Likewise.
	* strtod.c (strtod, atof): Likewise.
	* strtol.c (strtol): Likewise.
	* strtoul.c (strtoul): Likewise.
	* ternary.c (ternary_insert, ternary_cleanup, ternary_search,
	ternary_recursivesearch): Likewise.
	* tmpnam.c (tmpnam): Likewise.
	* unlink-if-ordinary.c (unlink_if_ordinary): Likewise.
	* vasprintf.c (int_vasprintf, vasprintf, checkit, main): Likewise.
	* vfork.c (vfork): Likewise.
	* vfprintf.c (vfprintf): Likewise.
	* vprintf.c (vprintf): Likewise.
	* vsnprintf.c (vsnprintf, checkit, main): Likewise.
	* vsprintf.c (vsprintf): Likewise.
	* waitpid.c (waitpid): Likewise.
	* xatexit.c (xatexit, xatexit_cleanup): Likewise.
	* xexit.c (xexit): Likewise.
	* xmalloc.c (xmalloc_set_program_name, xmalloc_failed, xmalloc,
	xcalloc, xrealloc): Likewise.
	* xmemdup.c (xmemdup): Likewise.
	* xstrdup.c (xstrdup): Likewise.
	* xstrerror.c (xstrerror): Likewise.
	* xstrndup.c (xstrndup): Likewise.

2005-03-27  Andreas Jaeger  <aj@suse.de>

	* configure.ac (ac_c_preproc_warn_flag): Remove -Wtraditional
	flags.
	* configure: Regenerated.

2005-03-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* getopt1.c (getopt_long_only): Fix thinko.

2005-03-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to use ISO C prototype style 4/n.
	* hashtab.c (higher_prime_index, hash_pointer, eq_pointer,
	htab_size, htab_elements, htab_mod_1, htab_mod, htab_mod_m2,
	htab_create_alloc, htab_set_functions_ex, htab_create,
	htab_try_create, htab_delete, htab_empty,
	find_empty_slot_for_expand, htab_expand, htab_find_with_hash,
	htab_find, htab_find_slot_with_hash, htab_find_slot,
	htab_remove_elt, htab_remove_elt_with_hash, htab_clear_slot,
	htab_traverse_noresize, htab_traverse, htab_collisions,
	htab_hash_string, iterative_hash): Use ISO C prototype.
	* hex.c (hex_init): Likewise.
	* index.c (index): Likewise.
	* insque.c (insque, remque): Likewise.
	* lbasename.c (lbasename): Likewise.
	* lrealpath.c (lrealpath): Likewise.
	* make-relative-prefix.c (save_string, split_directories,
	free_split_directories, make_relative_prefix): Likewise.
	* make-temp-file.c (try, choose_tmpdir, make_temp_file): Likewise.
	* md5.c (md5_init_ctx, md5_read_ctx, md5_finish_ctx, md5_stream,
	md5_buffer, md5_process_bytes, md5_process_block): Likewise.
	* memchr.c (memchr): Likewise.
	* memcpy.c (memcpy): Likewise.
	* memmove.c (memmove): Likewise.
	* gettimeofday.c (gettimeofday): Likewise.
	* getruntime.c (get_run_time): Likewise.
	* getpwd.c (getpwd, getpwd): Likewise.
	* getpagesize.c (getpagesize): Likewise.
	* getopt1.c (getopt_long, getopt_long_only, main): Likewise.
	* getopt.c (my_index, exchange, _getopt_initialize,
	_getopt_internal, getopt, main): Likewise.
	* getcwd.c (getcwd): Likewise.
	* fnmatch.c (fnmatch): Likewise.
	* floatformat.c (floatformat_always_valid,
	floatformat_i387_ext_is_valid, get_field, floatformat_to_double,
	put_field, floatformat_from_double, floatformat_is_valid,
	ieee_test, main): Likewise.
	* fibheap.c (fibheap_new, fibnode_new, fibheap_compare,
	fibheap_comp_data, fibheap_insert, fibheap_min, fibheap_min_key,
	fibheap_union, fibheap_extract_min, fibheap_replace_key_data,
	fibheap_replace_key, fibheap_replace_data, fibheap_delete_node,
	fibheap_delete, fibheap_empty, fibheap_extr_min_node,
	fibheap_ins_root, fibheap_rem_root, fibheap_consolidate,
	fibheap_link, fibheap_cut, fibheap_cascading_cut,
	fibnode_insert_after, fibnode_remove): Likewise.
	* ffs.c (ffs): Likewise.
	* fdmatch.c (fdmatch): Likewise.
	* dyn-string.c (dyn_string_init, dyn_string_new,
	dyn_string_delete, dyn_string_release, dyn_string_resize,
	dyn_string_clear, dyn_string_copy, dyn_string_copy_cstr,
	dyn_string_prepend, dyn_string_prepend_cstr, dyn_string_insert,
	dyn_string_insert_cstr, dyn_string_insert_char,
	dyn_string_append, dyn_string_append_cstr,
	dyn_string_append_char, dyn_string_substring, dyn_string_eq):
	Likewise.

2005-03-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to use ISO C prototype style 3/n.
	* cplus-dem.c (set_cplus_marker_for_demangling, consume_count,
	consume_count_with_underscores, code_for_qualifier,
	qualifier_string, demangle_qualifier, cplus_demangle_opname,
	cplus_mangle_opname, cplus_demangle_set_style,
	cplus_demangle_name_to_style, cplus_demangle, grow_vect,
	ada_demangle, internal_cplus_demangle, squangle_mop_up,
	work_stuff_copy_to_from, delete_non_B_K_work_stuff,
	delete_work_stuff, mop_up, demangle_signature,
	demangle_method_args, demangle_template_template_parm,
	demangle_expression, demangle_integral_value,
	demangle_real_value, demangle_template_value_parm,
	demangle_template, arm_pt, demangle_arm_hp_template,
	demangle_class_name, demangle_class, iterate_demangle_function,
	demangle_prefix, gnu_special, recursively_demangle, arm_special,
	demangle_qualified, get_count, do_type, demangle_fund_type,
	do_hpacc_template_const_value, do_hpacc_template_literal,
	snarf_numeric_literal, do_arg, remember_type, remember_Ktype,
	register_Btype, remember_Btype, forget_B_and_K_types,
	forget_types, demangle_args, demangle_nested_args,
	demangle_function_name, string_need, string_delete, string_init,
	string_clear, string_empty, string_append, string_appends,
	string_appendn, string_prepend, string_prepends, string_prependn,
	string_append_template_idx): Use ISO C prootype style.
	* cp-demint.c (cplus_demangle_fill_component,
	cplus_demangle_fill_builtin_type, cplus_demangle_fill_operator,
	cplus_demangle_v3_components): Likewise.

2005-03-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to use ISO C prototype style 2/n.
	* cp-demangle.h: Remove uses of PARAMS.
	* cp-demangle.c: Likewise.
	(d_dump, cplus_demangle_fill_name,
	cplus_demangle_fill_extended_operator, cplus_demangle_fill_ctor,
	cplus_demangle_fill_dtor, d_make_empty, d_make_comp, d_make_name,
	d_make_builtin_type, d_make_operator, d_make_extended_operator,
	d_make_ctor, d_make_dtor, d_make_template_param, d_make_sub,
	cplus_demangle_mangled_name, has_return_type,
	is_ctor_dtor_or_conversion, d_encoding, d_name, d_nested_name,
	d_prefix, d_unqualified_name, d_source_name, d_number,
	d_identifier, d_operator_name, d_special_name, d_call_offset,
	d_ctor_dtor_name, cplus_demangle_type, d_cv_qualifiers,
	d_function_type, d_bare_function_type, d_class_enum_type,
	d_array_type, d_pointer_to_member_type, d_template_param,
	d_template_args, d_template_arg, d_expression, d_expr_primary,
	d_local_name, d_discriminator, d_add_substitution,
	d_substitution, d_print_resize, d_print_append_char,
	d_print_append_buffer, d_print_error, cplus_demangle_print,
	d_print_comp, d_print_java_identifier, d_print_mod_list,
	d_print_mod, d_print_function_type, d_print_array_type,
	d_print_expr_op, d_print_cast, cplus_demangle_init_info,
	d_demangle, __cxa_demangle, cplus_demangle_v3, java_demangle_v3,
	is_ctor_or_dtor, is_gnu_v3_mangled_ctor, is_gnu_v3_mangled_dtor,
	print_usage, main):

2005-03-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert libiberty to ISO C prototype style 1/n.
	* _doprnt.c: Remove conditional #include <varargs.h> on
	ANSI_PROTOTYPES as the latter is always assumed.
	(_doprnt, checkit, main): Use ISO C prototype.
	* alloca.c (find_stack_direction, C_alloca): Use ISO C prototype.
	* argv.c: Remove conditional #includes on ANSI_PROTOTYPES.
	(dupargv, freeargv, buildargv, main): Use ISO C prototype.
	* atexit.c (atexit): Likewise
	* asprintf.c: Remove conditional include on ANSI_PROTOTYPES.
	(asprintf): Use ISO C prototype.
	* basename.c (basename): Likewise
	* bcmp.c (bcmp): Likewise.
	* bcopy.c (bcopy): Likewise.
	* bzero.c (bzero): Likewise.
	* bsearch.c (bsearch): Likewise.  Improve const-correctness.
	* choose-temp.c (choose_temp_base): Likewise.
	* calloc.c: Remove conditional #include on ANSI_PROTOTYPES.
	(calloc): Use ISO C prototype.
	* clock.c (clock): Likewise.
	* concat.c: Remove conditional #include on ANSI_PROTOTYPES.
	(vconcat_length, vconcat_copy, concat_length, concat_copy,
	concat_copy2, concat, reconcat, main): Use ISO C prototype.
	* copysign.c (copysign): Likewise.

2005-03-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (CFILES): Add strndup.c and xstrndup.c.
	(REQUIRED_OFILES): Add xstrndup.o.
	(CONFIGURED_OFILES): Add strndup.o.
	Regenerate dependencies.

	* configure.ac (funcs, AC_CHECK_FUNCS): Add strndup.

	* strndup.c, xstrndup.c: New.

	* config.in, configure, functions.texi: Regenerate.

2005-03-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* xmemdup.c, xstrdup.c: Expose the tail call.

2005-03-09  Mark Mitchell  <mark@codesourcery.com>

	* configure.ac (funcs): Add gettimeofday.
	* configure: Regenerated.
	* gettimeofday.c: New file.
	* Makefile.in (CFILES): Add gettimeofday.
	(CONFIGURED_OFILES): Add gettimeofday.o.
	(./gettimeofday.o): New rule.

2005-03-09  Ian Lance Taylor  <ian@airs.com>

	* pex-os2.c: Remove.
	* configure.ac: Remove *-*-os2-emx* case when setting pexecute.
	* Makefile.in (CFILES): Remove pex-os2.c.
	(CONFIGURED_OFILES): Remove pex-os2.o.
	(pex-os2.o): Remove target.
	* configure: Rebuild.

2005-03-07  Ian Lance Taylor  <ian@airs.com>

	* mpw-config.in: Remove.
	* mpw-make.sed: Remove.
	* mpw.c: Remove.
	* Makefile.in (CFILES): Remove pex-mpw.c.
	(CONFIGURED_OFILES): Remove pex-mpw.o.
	(mpw.o, pex-mpw.o): Remove targets.
	* maint-tool (undoc): Remove reference to mpw.c.

2005-03-06  DJ Delorie  <dj@redhat.com>

	* configure.ac (target_header_dir): vfork is a stub under djgpp.
	* configure: Regenerated.

2005-03-01  Jan Beulich  <jbeulich@novell.com>

	* Makefile.in (CFILES): Add unlink-if-ordinary.c
	(REQUIRED_OFILES): Add unlink-if-ordinary.o.
	Add dependencies and rule for unlink-if-ordinary.o.
	* unlink-if-ordinary.c: New.

2005-03-01  Ben Elliston  <bje@au.ibm.com>

	* hashtab.c (htab_find_slot_with_hash): Make function
	documentation clearer.

2005-02-13  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (__cxa_demangle): Change resolution of ambiguous
	arguments.

2005-01-11  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>

	* hex.c (hex_value): Group 'unsigned int' together to get correct
	markup.
	* functions.texi: Regenerated.

2004-12-27  H.J. Lu  <hongjiu.lu@intel.com>

	* Makefile.in: Undo to 2004-12-17.
	* aclocal.m4: Likewise.
	* config.table: Likewise.
	* configure.ac: Likewise.
	* maint-tool: Likewise.
	* configure: Likewise.

2004-12-19  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/19072
	* Makefile.in (enable_shared): New substitute.
	(LTTARGETLIB): New.
	(PREFIXTARGETLIB): New.
	(LTTESTLIB): New.
	(PREFIXTESTLIB): New.
	(CCLD): New.
	(LINK): New.
	($(TARGETLIB)): Use $(LINK) to create libraries and create
	targets by hand.
	($(TESTLIB)): Likewise.
	(mostlyclean): Don't remove .libs. Remove the libtool object
	directory.

	* config.table (enable_shared): Removed.

	* configure.ac (enable_static): Set to yes.
	(AC_PROG_LIBTOOL): Removed.
	(AM_DISABLE_SHARED): Uncommented.
	(AM_PROG_LIBTOOL): Likewise.
	(LIBOBJS): Add `./' to avoid VPATH.
	(LTLIBOBJS): Likewise.
	(enable_shared): Substitute.
	* configure: Regenerated.

2004-12-18  H.J. Lu  <hongjiu.lu@intel.com>

	* Makefile.in (top_builddir): Set to `.'.
	(OUTPUT_OPTION): Removed.
	(LIBTOOL): New.
	(LTLIBOBJS): New.
	(EXTRA_LTOFILES): New.
	(FLAGS_TO_PASS): Add EXTRA_LTOFILES.
	(all): Remove stamp-picdir.
	(LTCOMPILE): New.
	(.c.lo): New rule.
	(REQUIRED_LTOFILES): New.
	(CONFIGURED_LTOFILES): New.
	($(TARGETLIB)): Check .libs for PIC object files. Depend on
	$(REQUIRED_LTOFILES) $(EXTRA_LTOFILES) $(LTLIBOBJS).
	(stamp-picdir): Completely removed.
	(maint-missing): Pass $(REQUIRED_LTOFILES)
	$(CONFIGURED_LTOFILES) instead of (REQUIRED_OFILES)
	$(CONFIGURED_OFILES)
	(maint-buildall): Depend on $(REQUIRED_LTOFILES)
	$(CONFIGURED_LTOFILES).
	(mostlyclean): Also remove *.lo .libs.
	Run "make maint-deps".

	* aclocal.m4: Include ../libtool.m4.

	* config.table: Don't check --enable-shared.

	* configure.ac (AC_PROG_LIBTOOL): Add.
	(AC_PROG_CC_C_O): Removed.
	(OUTPUT_OPTION): Removed.
	(NO_MINUS_C_MINUS_O): Removed.
	(ltpexecute): New substitute.
	(LIBOBJS): Cleanup.
	* configure: Regenerated.

	* maint-tool: Updated for .lo/libtool.

2004-12-11  Ben Elliston  <bje@au.ibm.com>

	* configure.ac: Invoke AC_CHECK_SIZEOF for sizeof (int).
	* configure: Regenerate.
	* config.in: Likewise.

2004-12-07  DJ Delorie  <dj@redhat.com>

	* splay-tree.c (splay_tree_delete_helper): Redesign the logic so
	that recursion (and thus large stack space) is not needed.

2004-11-29  Matt Kraai  <kraai@alumni.cmu.edu>

	* pex-unix.c: Fix the spelling of longjmp.

2004-11-23  Ian Lance Taylor  <ian@wasabisystems.com>

	PR other/18623
	* cp-demangle.c (d_call_offset): Remove useless local variables
	offset and virtual_offset.
	* cplus-dem.c (ada_demangle): Remove useless local variable
	at_start_name.
	(demangle_template): Remove useless local variable start.

2004-11-19  Roger Sayle  <roger@eyesopen.com>

	* objalloc.c, strsignal.c, xstrerror.c: Include "config.h" before
	"ansidecl.h" to avoid redeclaration errors with native compilers.
	* regex.c: Protect config.h from multiple inclusion.

2004-11-12  Mike Stump  <mrs@apple.com>

	* Makefile.in (libiberty.html): Fix html generation.

2004-09-08  Adam Nemet  <anemet@lnxw.com>

	* vasprintf.c: Accept __va_copy in addition to va_copy.

2004-09-03  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

2004-09-02  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac: Do not enable multilibs for build-side libiberty.

2004-06-29  Danny Smith  <dannysmith@users.sourceforge.net>

	* lrealpath.c (lrealpath): Add _WIN32 support.

2004-06-28  Zack Weinberg  <zack@codesourcery.com>

	* cp-demangle.h: Declare cplus_demangle_operators,
	cplus_demangle_builtin_types, cplus_demangle_mangled_name, and
	cplus_demangle_type as static if IN_GLIBCPP_V3.

2004-06-28  Ian Lance Taylor  <ian@wasabisystems.com>

	PR other/16240
	* cp-demangle.c (d_expr_primary): Check for a failure return from
	cplus_demangle_type.
	* testsuite/demangle-expected: Add test case.

2004-05-31  Danny Smith  <dannysmith@users.sourceforge.net>

	* pex-win32.c (fix_argv): Expand comment.

2004-05-25  Daniel Jacobowitz  <drow@false.org>

	* Makefile.in: Add .NOEXPORT.

2004-04-29  Douglas B Rupp  <rupp@gnat.com>

	* mkstemps.c (mkstemps) [VMS]: Remove special open option. Update
	copyright.

2004-04-26  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* configure.ac (UNSIGNED_64BIT_TYPE): Unquote the definition.
	* configure: Regenerate.

2004-04-22  Richard Henderson  <rth@redhat.com>

	* hashtab.c: Include limits.h, stdint.h, ansidecl.h.
	(CHAR_BIT): Provide default.
	(struct prime_ent, prime_tab): New.
	(higher_prime_index): Rename from higher_prime_number, return index.
	(htab_mod_1): New.
	(htab_mod, htab_mod_m2): Use it.
	(htab_create_alloc, htab_create_alloc_ex): Store prime index.
	(htab_expand): Likewise.
	* configure.ac: Check for stdint.h.
	(UNSIGNED_64BIT_TYPE): New define and checks to fill it in.
	* config.in, configure: Rebuild.

2004-04-13  Ian Lance Taylor  <ian@wasabisystems.com>

	* strerror.c: Include config.h, and redefine sys_nerr and
	sys_errlist, before including ansidecl.h and libiberty.h.

2004-04-13  Jeff Law  <law@redhat.com>

	* hashtab.c (htab_remove_elt_with_hash): New function.
	(htab_remove_elt): Implement in terms of htab_remove_elt_with_hash.

2004-03-31  Richard Henderson  <rth@redhat.com>

	* hashtab.c (htab_size): Move to top of file; mark inline.
	(htab_elements): Likewise.
	(htab_mod, htab_mod_m2): New.
	(htab_delete): Refactor htab->size and htab->entries.
	(htab_empty): Likewise.
	(find_empty_slot_for_expand): Use htab_size, htab_mod, htab_mod_m2.
	(htab_find_with_hash, htab_find_slot_with_hash): Likewise.
	(htab_clear_slot): Use htab_size, htab_elements.
	(htab_traverse_noresize, htab_traverse): Likewise.

2004-03-17  Ian Lance Taylor  <ian@wasabisystems.com>

	* pex-unix.c (pexecute): Use vfork instead of fork, with
	appropriate changes to make this safe.
	* pex-common.h (STDERR_FILE_NO): Define.

	* Makefile.in: Clean up REQUIRED_OFILES and CONFIGURED_OFILES for
	an 80 column screen.  Run maint-deps.

2004-03-09  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.ac: Bump version to 2.59.  Apply suggested autoupdates.
	* acconfig.h: Delete redundant file.
	* config.in: Regenerate.
	* configure: Regenerate.

2004-03-09  Hans-Peter Nilsson  <hp@axis.com>

	* configure: Regenerate for config/accross.m4 correction.

2004-03-07  Andreas Jaeger  <aj@suse.de>

	* testsuite/test-demangle.c: Include <string.h> and <stdlib.h> for
	prototypes.
	(main): Initialize style.

2004-02-24  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.h (enum d_builtin_type_print): Add D_PRINT_UNSIGNED,
	D_PRINT_UNSIGNED_LONG, D_PRINT_LONG_LONG,
	D_PRINT_UNSIGNED_LONG_LONG, D_PRINT_FLOAT.
	* cp-demangle.c (cplus_demangle_builtin_types): Change char and
	short types to D_PRINT_DEFAULT.  Change other integer types to use
	new D_PRINT_* values where appropriate.  Change float types to
	D_PRINT_FLOAT.
	(d_print_comp) [LITERAL, LITERAL_NEG]: Handle new D_PRINT_*
	values.
	* testsuite/demangle-expected: Adjust two test cases.

	* cp-demangle.c (d_print_function_type): Print a space before the
	parenthesis around the function type in more cases.
	* testsuite/demangle-expected: Adjust one test case.

	* cp-demangle.c (d_print_comp) [UNARY]: Don't emit extra
	parentheses around a cast.
	* testsuite/demangle-expected: Adjust two test cases to match new
	output.

	* cp-demangle.c (__cxa_demangle): Pass DMGL_PARAMS to d_demangle.

	* cp-demangle.c (d_print_comp) [RESTRICT, VOLATILE, CONST]: Don't
	push more than one of the same CV-qualifier on the top of the
	stack.
	(d_print_comp) [ARRAY_TYPE]: If the array itself is CV-qualified,
	move the CV-qualifiers to apply to the element type instead.
	(d_print_array_type): When checking the modifiers, keep looking
	past ones which have been printed already.
	* testsuite/demangle-expected: Add three test cases.

2004-02-23  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (__cxa_demangle): Adjust last patch to handle
	empty string correctly.

	* cp-demangle.c (__cxa_demangle): It is not an error if status is
	not NULL.  It is an error if the mangled name is the same as a
	built-in type name.
	(main): If IN_GLIBCPP_V3 is defined, test __cxa_demangle rather
	than cplus_demangle_v3.

	* dyn-string.c: Remove test of IN_LIBGCC2 and IN_GLIBCPP_V3 and
	the associated #define of RETURN_ON_ALLOCATION_FAILURE.

2004-02-16  Matt Kraai  <kraai@alumni.cmu.edu>

	* regex.c: Include <ansidecl.h>.
	(regcomp): Cast i to int.
	(regerror): Add ATTRIBUTE_UNUSED to parameter preg.

2004-01-25  Ian Lance Taylor  <ian@wasabisystems.com>

	* configure.ac: Add m4_pattern_allow(LIBOBJS).
	* configure: Regenerate.

2004-01-22  DJ Delorie  <dj@redhat.com>

	* Makefile.in: Convert to ./ throughout.  Rebuild dependencies
	with explicit build rules.
	(VPATH): Remove.
	(.c.o): Poison.
	* configure.ac (pexecute, LIBOBJS): Add ./ .
	* maint-tool: Build dependencies with explicit rules.

2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>

	* strdup.c (strdup): Constify the argument.

2004-01-14  Loren J. Rittle  <ljrittle@acm.org>

	* Makefile.in (distclean): Remove config.cache.

2004-01-13  Daniel Jacobowitz  <drow@mvista.com>

	* cp-demangle.c (d_make_comp): DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE
	takes two parameters.
	* cp-demint.c (cplus_demangle_fill_component): Likewise.

2004-01-12  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c: Include "cp-demangle.h".  If IN_GLIBCPP_V3 is
	defined, rename some functions which are to become static via
	#define.
	(CP_STATIC_IF_GLIBCPP_V3): Define.
	(struct d_operator_info): Move definition to cp-demangle.h, and
	rename to demangle_operator_info.  Change all uses.
	(enum d_builtin_type_print): Move definition to cp-demangle.h.
	(struct d_builtin_type_info): Move definition to cp-demangle.h,
	and rename to demangle_builtin_type_info.  Change all uses.
	(enum d_comp_type): Move definition to include/demangle.h, and
	rename to demangle_component_type, and change all enums to start
	with DEMANGLE_COMPONENT_ instead of D_.  Change all uses.
	(struct d_comp): Move definition to include/demangle.h, and rename
	to demangle_component.  Change all uses.
	(struct d_info): Move definition to cp-demangle.h.
	(cplus_demangle_fill_name): New function.
	(cplus_demangle_fill_extended_operator): New function.
	(cplus_demangle_fill_ctor): New function.
	(cplus_demangle_fill_dtor): New function.
	(d_make_empty): Remove type parameter.  Change all callers.
	(d_make_name): Use cplus_demangle_fill_name.
	(d_make_extended_operator): Use
	cplus_demangle_fill_extended_operator.
	(d_make_ctor): Use cplus_demangle_fill_ctor.
	(d_make_dtor): Use cplus_demangle_fill_dtor.
	(cplus_demangle_mangled_name): Rename from d_mangled_name.  Make
	non-static by default.  Change all callers.
	(cplus_demangle_operators): Rename from d_operators.  Change all
	uses.  Make non-static by default.  Add sentinel at end of array.
	(d_operator_name): Adjust initialization of high for new sentinel
	in cplus_demangle_operators.
	(cplus_demangle_builtin_types): Rename from d_builtin_types.
	Change all uses.  Make non-static by default.  Change initializer
	to use D_BUILTIN_TYPE_COUNT instead of magic number 26.
	(cplus_demangle_type): Rename from d_type.  Make non-static by
	default.  Change all callers.
	(cplus_demangle_init_info): Rename from d_init_info.  Make
	non-static by default.  Change all callers.
	* cp-demangle.h: New file.
	* cp-demint.c: New file.
	* Makefile.in: Rebuild dependencies.
	(CFILES): Add cp-demint.c.
	(REQUIRED_OFILES): Add cp-demint.o.

2004-01-09  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.in:  Rename file to ...
	* configure.ac:  ... this.
	* Makefile.in: Update a comment for above change.
	* README: Likewise.
	* config.in: Regenerate.

2004-01-02  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (d_encoding): When DMGL_PARAMS is not set, strip
	CV-qualifiers from D_COMP_LOCAL_NAME right subtree.
	* cplus-dem.c (demangle_arm_hp_template): Set DMGL_PARAMS when
	demangling template parameters.
	* testsuite/test-demangle.c (fail): New static function.
	(main): Support new options in input file: --no-params,
	--is-v3-ctor, and --is-v3-dtor.
	* testsuite/demangle-expected: Add --no-params to most tests, and
	add the correct result when parameters are not demangled.  Add
	some simple tests for V3 constructor/destructor recognition.

2003-12-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cp-demangle.c (is_ctor_or_dtor): Fix error in last change.

2003-12-22  Daniel Jacobowitz  <drow@mvista.com>

	PR debug/13272
	* Makefile.in (lbasename.o): Depend on filenames.h.
	* lbasename.c: Include "filenames.h" instead of defining
	its macros locally.

2003-12-22  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (CP_DYNAMIC_ARRAYS): Define if compiler supports
	dynamic arrays.
	(struct d_operator_info): Add len field.
	(struct d_builtin_type_info): Add len and java_len fields.
	(struct d_standard_sub_info): Add simple_len, full_len, and
	set_last_name_len fields.
	(struct d_comp): Add len field to s_string.
	(struct d_info): Add send, did_subs, and expansion fields.
	(d_append_string_constant): Define.
	(d_append_string): Remove.  Change all users to use
	d_append_string_constant or d_append_buffer instead.
	(d_make_sub): Add len parameter.  Change all callers.
	(d_name): Increase expansion when substituting std::.
	(d_unqualified_name): Increase expansion for an operator.
	(d_number): Don't use multiplication for negative numbers.
	(d_identifier): Make sure there are enough characters in the
	string for the specified length.  Adjust expansion for an
	anonymous namespace.
	(d_operators): Initialize len field.
	(d_special_name, d_ctor_dtor_name): Increase expansion.
	(d_builtin_types): Initialize len and java_len fields.
	(d_type): Increase expansion for a builtin type.
	(d_cv_qualifiers): Increase expansion for each qualifier.
	(d_bare_function_type): Decrease expansion when removing single
	void parameter.
	(d_template_param): Increment did_subs.
	(d_expression): Increase expansion for an operator.
	(d_expr_primary): Decrease expansion for a type we will print
	specially.
	(standard_subs): Initialize new fields.
	(d_substitution): Increment did_subs when doing a normal
	substitution.  Increase expansion for a special substitution.
	(d_print): Add estimate parameter.  Change all callers.
	(d_print_comp) [D_COMP_NAME]: Handle C++ case inline.
	(d_print_comp) [D_COMP_BINARY]: Use length to avoid strcmp call.
	(d_print_java_identifier): Rename from d_print_identifier.  Handle
	only Java case.  Change caller.
	(d_init_info): Change return type to void.  Change all callers.
	Initialize send, did_subs, and expansion fields.  Do not
	initialize comps and subs fields.
	(d_demangle): Ifdef CP_DYNAMIC_ARRAYS, allocate comps and subs
	arrays on stack.  Make an estimate of the length of the demangled
	name.  Ifdef CP_DEMANGLE_DEBUG, print estimation failures.
	(is_ctor_or_dtor): Ifdef CP_DYNAMIC_ARRAYS, allocate comps and
	subs arrays on stack.

2003-12-20  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (d_identifier): In Java mode, skip an optional '$'
	after the identifier.
	* testsuite/demangle-expected: Add test case.

2003-12-19  Ian Lance Taylor  <ian@wasabisystems.com>

	Fix for PR c++/13447:
	* cp-demangle.c (enum d_comp_type): Add D_COMP_LOCAL_NAME.
	(d_dump, d_make_comp): Handle D_COMP_LOCAL_NAME.
	(is_ctor_dtor_or_conversion): Handle D_COMP_LOCAL_NAME like
	D_COMP_QUAL_NAME.
	(is_ctor_or_dtor): Likewise.
	(d_local_name): Use D_COMP_LOCAL_NAME rather than
	D_COMP_QUAL_NAME.
	(d_print_comp) [D_COMP_LOCAL_NAME]: New.
	(d_prinT_comp) [D_COMP_TYPED_NAME]: If the left tree is
	D_COMP_LOCAL_NAME, pull any qualifiers off its right subtree.
	(d_print_mod_list): Handle D_COMP_LOCAL_NAME.
	* testsuite/demangle-expected: Add two test cases.

	* cp-demangle.c (d_print_function_type): Clear the global modifier
	list when printing the modifiers, not just when printing the
	function parameters.
	* testsuite/demangle-expected: Add two test cases.

2003-12-15  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (d_print_function_type): Print the function
	parameters with no modifiers.
	* testsuite/demangle-expected: Add test case.

	* cp-demangle.c (d_demangle): If DMGL_PARAMS is not set, don't
	expect that we've read the entire string.
	(is_ctor_or_dtor): Don't expect that we've read the entire
	string--reverse patch of 2003-11-29.

2003-12-15  Brendan Kehoe  <brendan@zen.org>

	* Makefile.in (floatformat.o): Add dependency on
	config.h to accompany change of 2003-12-03.

2003-12-15  Ian Lance Taylor  <ian@wasabisystems.com>

	Fix handling of constructor/destructor of standard substitution:
	* cp-demangle.c (struct d_standard_sub_info): Define.
	(d_substitution): Add prefix argument.  Change all callers.
	Rework handling of standard substitutions to print full name when
	qualifying a constructor/destructor, or when DMGL_VERBOSE is set.
	* testsuite/demangle-expected: Add test case.

	Fix handling of negative literal constants:
	* cp-demangle.c (enum d_comp_type): Add D_COMP_LITERAL_NEG.
	(d_dump, d_make_comp): Handle D_COMP_LITERAL_NEG.
	(d_expr_primary): Use D_COMP_LITERAL_NEG for a negative number.
	(d_print_comp): Handle D_COMP_LITERAL_NEG.
	* testsuite/demangle-expected: Add test case.

2003-12-04  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (IS_UPPER, IS_LOWER): Define.
	(d_last_char): Define new macro.
	(d_make_name): Reject an empty name.
	(d_prefix, d_unqualified_name, d_type): Use new IS_* macros.
	(d_substitution, d_print_identifier): Likewise.
	(d_print_comp) [D_COMP_OPERATOR]: Likewise.
	(d_print_comp) [D_COMP_TEMPLATE]: Use new d_last_char macro.
	(d_print_mod) Use new d_last_char macro.
	(d_print_cast): Use new d_last_char macro.
	(is_ctor_or_dtor): Don't leak memory.

	Fix handling of member function modifiers:
	* cp-demangle.c (enum d_comp_type): Add D_COMP_RESTRICT_THIS,
	D_COMP_VOLATILE_THIS, and D_COMP_CONST_THIS.
	(d_dump): Dump new d_comp_type values.
	(d_make_comp): Accept new d_comp_type values.
	(has_return_type): Only accept _THIS variants of qualifiers.
	(d_encoding): Without DMGL_PARAMS, only remove _THIS variants of
	qualifiers.
	(d_cv_qualifiers): Add member_fn parameter.  Change all callers.
	(d_print_comp) [D_COMP_TYPED_NAME]: Rather than removing
	qualifiers and printing them at the end, add _THIS qualifiers to
	the modifier list.
	(d_print_comp) [D_COMP_*_THIS]: New cases.
	(d_print_comp) [D_COMP_PTRMEM_TYPE]: Remove special handling of
	qualifiers.
	(d_print_mod_list): Add suffix parameter.  Change all callers.
	Keep walking the list even if the current modifier has been
	printed.
	(d_print_mod): Handle new _THIS qualifiers.
	(d_print_function_type): Handle new _THIS qualifiers when deciding
	whether to print a parenthesis.  Put a space before the
	parenthesis in some cases.  Call d_print_mod_list again at the
	end, passing suffix as 1.
	(is_ctor_or_dtor): Look for new _THIS qualifiers.
	* testsuite/demangle-expected: Add test case.

	Fix for PR gcc/13304:
	* cp-demangle.c (d_print_comp) [D_COMP_TEMPLATE]: If the character
	before the '<' is itself a '<', insert a space.
	(d_print_cast): Likewise.
	* testsuite/demangle-expected: Add test case.

	Fix for PR gcc/13244:
	* cp-demangle.c (d_print_comp) [D_COMP_BINARY]: Wrap an expression
	which uses the '>' operator in an extra layer of parens.
	* testsuite/demangle-expected: Add test case.

2003-12-03  Ian Lance Taylor  <ian@wasabisystems.com>

	* floatformat.c: Include "config.h" and <string.h> if available.
	(INFINITY, NAN): Define if not defined by <math.h>.
	(floatformat_to_double): Handle NaN, infinity, and denormalized
	numbers.
	(floatformat_from_double): Likewise.
	(ieee_test): In debugging code, use little endian rather than big
	endian.  Correct tests to handle NaN and to check correct sign of
	zero.  Omit m68k extended test.
	(main): Add more debugging cases.

2003-11-29  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (d_demangle): Only return success if we consumed
	the entire demangled string.
	(is_ctor_or_dtor): Likewise.

	* testsuite/demangle-expected: Revert one part of 2003-06-26 patch
	to restore expected result of EDG test case to original expected
	result.

2003-11-26  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (struct d_print_mod): Add templates field.
	(d_make_builtin_type): Check for NULL type.
	(d_make_extended_operator): Check for NULL name.
	(d_make_ctor, d_make_dtor): Likewise.
	(d_mangled_name): Add top_level parameter.  Change all callers.
	(d_encoding): If DMGL_PARAMS is not set, strip off initial
	CV-qualifiers.
	(d_type): Check some return values we rely on.
	(d_bare_function_type, d_array_type): Likewise.
	(d_pointer_to_member_type, d_template_args): Likewise.
	(d_add_substitution): Fail if argument is NULL.
	(d_print_resize): Check whether buf is NULL.
	(d_print_comp): Save current templates list with each modifier.
	Don't pass the modifier list down when printing a template.
	(d_print_cast): Don't pass the modifier list down when printing a
	template.
	(d_print_mod_list): Temporarily set templates list while printing
	a modifier.
	(d_print_mod): Check that buf is not NULL before using it.
	(d_print_function_type): Print parens if there is no modifier.
	(d_init_info): Permit as many substitutions as there are
	characters in the mangled name.
	* testsuite/demangle-expected: Add two new test cases.

2003-11-25  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (java_demangle_v3): Pass DMGL_PARAMS to
	d_demangle.

2003-11-22  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (d_encoding): Add top_level parameter.  Change all
	callers.
	(print_usage): Display new -p option.
	(long_options): Add --no-params.
	(main): Accept and handle -p.

2003-11-21  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (has_return_type): Skip qualifiers when checking
	whether we have a template.
	* testsuite/demangle-expected: Add four new tests.

2003-11-20  Ian Lance Taylor  <ian@wasabisystems.com>

	* testsuite/demangle-expected: Minor changes to match output of
	new demangler: adjust whitespace in four tests, and change order
	of qualifiers in one test.

	* cp-demangle.c: Complete rewrite.

2003-11-19  Mark Mitchell  <mark@codesourcery.com>

	* cp-demangle.c (demangle_type): Correct thinko in substitution
	processing.

2003-11-18  Ian Lance Taylor  <ian@wasabisystems.com>

	* cp-demangle.c (demangle_operator_name): Remove space before
	"sizeof".
	(demangle_type_ptr): Put qualifiers in the right place.  Handle
	qualifiers in pointer to member specially.
	(demangle_type): Handle qualifiers for pointer or reference
	specially.  Handle function type.
	(demangle_local_name): Save and restore caret around demangling of
	initial encoding.

	* testsuite/test-demangle.c (main): Don't pass DMGL_VERBOSE to
	cplus_demangle.

	* testsuite/Makefile.in (test-demangle): Depend upon libiberty.a.

2003-10-31  Andreas Jaeger  <aj@suse.de>

	* floatformat.c (floatformat_always_valid): Add unused attribute.

2003-10-30  Josef Zlomek  <zlomekj@suse.cz>

	Jan Hubicka <jh@suse.cz>
	* vasprintf.c (int_vasprintf): Pass va_list by value.
	Use va_copy for copying va_list.
	(vasprintf): Pass va_list by value.

2003-10-30  Josef Zlomek  <zlomekj@suse.cz>

	* hashtab.c (htab_find_slot_with_hash): Decrease n_deleted
	instead of increasing n_elements when inserting to deleted slot.

2003-10-20  J. Brobecker  <brobecker@gnat.com>

	* cplus-dem.c (demangle_template): Register a new Btype only
	when needed.
	* testsuite/demangle-expected: Add a new test.

2003-10-16  H.J. Lu  <hongjiu.lu@intel.com>

	* testsuite/demangle-expected: Update the expected output of
	_GLOBAL__I__Z2fnv.

2003-10-02  Daniel Jacobowitz  <drow@mvista.com>

	* strerror.c: Revert last change.  Declare static sys_nerr
	and sys_errlist using different names.

2003-10-01  Daniel Jacobowitz  <drow@mvista.com>

	* strerror.c: Don't provide or reference sys_errlist if
	strerror is available.

2003-10-01  H.J. Lu  <hongjiu.lu@intel.com>

	* configure.in: Check if $MAKEINFO is missing.
	* configure: Regenerated.

2003-09-24  Daniel Jacobowitz  <drow@mvista.com>

	* configure.in: Use AC_PROG_CPP_WERROR.
	* configure: Regenerated.

2003-09-22  Andrew Cagney  <cagney@redhat.com>

	* floatformat.c (floatformat_i387_ext_is_valid): New function.
	(floatformat_always_valid): New function.
	(floatformat_i387_ext): Initialize new "is_valid" field to
	"floatformat_i387_ext_is_valid".
	(floatformat_ieee_single_little): Initialize "is_valid" field to
	floatformat_always_valid.
	(floatformat_ieee_double_big): Ditto.
	(floatformat_ieee_double_little): Ditto.
	(floatformat_ieee_double_little): Ditto.
	(floatformat_ieee_double_littlebyte_bigword): Ditto.
	(floatformat_i960_ext): Ditto.
	(floatformat_m88110_ext): Ditto.
	(floatformat_m88110_harris_ext): Ditto.
	(floatformat_arm_ext_big): Ditto.
	(floatformat_arm_ext_littlebyte_bigword): Ditto.
	(floatformat_ia64_spill_big): Ditto.
	(floatformat_ia64_spill_little): Ditto.
	(floatformat_ia64_quad_big): Ditto.
	(floatformat_ia64_quad_little): Ditto.
	(floatformat_ia64_quad_little): Ditto.
	(floatformat_is_valid): Call "is_valid".

2003-09-15  Andrew Cagney  <cagney@redhat.com>

	* floatformat.c (get_field): Make "data" constant.
	(floatformat_is_valid, floatformat_to_double): Make "from"
	constant, fix casts.
	(floatformat_from_double): Make "from" constant.

2003-09-15  Daniel Jacobowitz  <drow@mvista.com>

	* floatformat.c (floatformat_is_valid): New function.
	(get_field, put_field): Correct comments.

2003-09-06  Josef Zlomek  <zlomekj@suse.cz>

	* fibheap.c (fibheap_replace_key_data): Change type of OKEY to
	FIBHEAPKEY_T.

2003-09-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR bootstrap/12100
	* aclocal.m4 (AC_LANG_FUNC_LINK_TRY): Define.
	* configure: Rebuilt.

2003-08-27  Daniel Jacobowitz  <drow@mvista.com>

	* aclocal.m4: Include acx.m4 and no-executables.m4.
	(libiberty_AC_FUNC_STRNCMP): Use AC_LIBOBJ.
	(LIB_AC_PROG_CC): Remove.
	* configure.in: Update AC_PREREQ to 2.57.  Use GCC_NO_EXECUTABLES.
	Use AC_PROG_CC and set ac_libiberty_warn_cflags instead of using
	LIB_AC_PROG_CC.  Use AC_LIBOBJ.  Call AC_ISC_POSIX later, only if
	performing link tests.
	* configure: Regenerated.

2003-08-12  Nathanael Nerode  <neroden@gcc.gnu.org>

	* cp-demangle.c: Clarify what package(s) this is part of.

2003-07-05  Danny Smith  <dannysmith@users.sourceforge.net>

	* pex-win32.c (pexecute): Mark parameters this_pname and
	temp_base as unused. Remove unused variables retries,
	sleep_interval. Initialize org_stdin, org_stdout.
	(pwait): Mark parameter flags as unused.

2003-07-02  Danny Smith  <dannysmith@users.sourceforge.net>

	* pex-win32.c (fix_argv): Ensure that the executable pathname
	uses Win32 backslashes.
	(pexecute): Cast away constness when assigning *errmsg_arg.

2003-06-26  H.J. Lu <hongjiu.lu@intel.com>

	* testsuite/demangle-expected: Add more GNU V3 testcases.

2003-06-22  Zack Weinberg  <zack@codesourcery.com>

	* safe-ctype.c: Use HOST_CHARSET_ASCII and HOST_CHARSET_EBCDIC,
	not HC_ASCII and HC_EBCDIC.
	Add documentation in form expected by gather-docs.
	* hex.c: Use HOST_CHARSET, not hand-coded check of character set.
	* Makefile.in, functions.texi: Regenerate.

2003-06-21  Zack Weinberg  <zack@codesourcery.com>

	* safe-ctype.c: Separate out EOF==-1 check.  Use HOST_CHARSET
	for charset determination.

2003-06-19  Dara Hazeghi  <dhazeghi@yahoo.com>

	* configure.in: Add check for malloc.h needed by
	m68k for function free().
	* configure: Regenerated.
	* config.in: Add HAVE_MALLOC_H.
	* hashtab.c: include malloc.h were available for
	free().

2003-06-09  Albert Chin-A-Young  <china@thewrittenword.com>

	PR bootstrap/10974
	* physmem.c: Update comment.
	* configure.in: Modify test for _system_configuration for older
	AIX systems.

	* config.in, configure: Regenerated.

2003-06-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR other/10810
	* test-demangle.c (getline): Fix fence-post error.

2003-06-03  Nick Clifton  <nickc@redhat.com>

	* asprintf.c: Change comment to note that -1 is returned upon
	error.
	* vasprintf.c: Likewise.
	(vasprintf): Return -1 upon error.
	* functions.texi: Document changes to asprintf and vasprintf.

2003-05-19  Kelley Cook  <kelleycook@wideopenwest.com>

	* config.table: Accept i[345867]86 variant.

2003-05-15  Jim Blandy  <jimb@redhat.com>

	* hex.c (_hex_value): Make this unsigned.
	(hex_value): Update documentation for new return type.  hex_value
	now expands to an unsigned int expression, to avoid unexpected
	sign extension when we store it in a bfd_vma, which is larger than
	int on some platforms.
	* functions.texi: Regenerated.

2003-05-07  Josef Zlomek  <zlomekj@suse.cz>

	* splay-tree.c (splay_tree_predecessor): Fix comment.
	(splay_tree_successor): Fix comment.

2003-05-07  Jason Merrill  <jason@redhat.com>

	* hashtab.c (iterative_hash): New fn.
	* configure.in: Add AC_C_BIGENDIAN_CROSS.
	* aclocal.m4: Include accross.m4.
	* configure, config.in: Regenerate.

2003-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (AC_CHECK_FUNCS): Don't make multiple calls.
	* configure: Regenerate.

2003-05-03  Carlo Wood  <carlo@alinoe.com>

	* cp-demangle.c: Fix typo in "char_traints" string-literal.

2003-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* vsnprintf.c (vsnprintf): Don't pad string with extra nulls.
	(main): Test that we don't write too much data.

2003-04-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (funcs, AC_CHECK_FUNCS): Add snprintf and
	vsnprintf.
	* snprintf.c, vsnprintf.c: New files.
	* Makefile.in (CFILES): Add snprintf.c and vsnprintf.c.
	(CONFIGURED_OFILES): Add snprintf.o and vsnprintf.o.
	Regenerate dependencies.

	* functions.texi, configure, config.in: Regenerated.

2003-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mempcpy.c, stpcpy.c, stpncpy.c: New files.
	* configure.in (funcs, AC_CHECK_FUNCS): Add mempcpy, stpcpy
	and stpncpy.
	* Makefile.in (CFILES): Add mempcpy.c, stpcpy.c and stpncpy.c.
	(CONFIGURED_OFILES): Add mempcpy.o, stpcpy.o and stpncpy.o.
	Regenerate dependencies.

	* functions.texi, configure, config.in: Regenerated.

2003-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* argv.c: Fix comments.
	* calloc.c: Don't unnecessarily include "libiberty.h".
	(bzero): Add prototype.
	* floatformat.c: Include "ansidecl.h", rely on ANSI_PROTOTYPES.
	* getcwd.c (getcwd): Use standard definition to avoid conflicts
	with system headers.
	* hashtab.c (htab_traverse): Delete unused variables.
	* rename.c: Include "ansidecl.h".
	(rename): Use standard definition to avoid conflicts with system
	headers.
	* strsignal.c: Rely on ANSI_PROTOTYPES.
	* strstr.c: Check GNUC >= 2, not GNUC == 2.
	* vfprintf.c: Include "ansidecl.h", rely on ANSI_PROTOTYPES.
	* vprintf.c: Include "ansidecl.h" earlier, rely on
	ANSI_PROTOTYPES.
	* vsprintf.c: Include "ansidecl.h" earlier, rely on
	ANSI_PROTOTYPES and possibly include <stdarg.h>.

	* Makefile.in: Regenerate dependencies.

2003-04-15  DJ Delorie  <dj@redhat.com>

	* maint-tool (deps): Scan for headers in $srcdir also.

2003-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR target/10338
	PR bootstrap/10198
	PR bootstrap/10140
	* getopt.c (exchange, _getopt_initialize): Use mempcpy not
	__mempcpy.
	* regex.c (regerror): Likewise.

2003-04-14  Roger Sayle  <roger@eyesopen.com>

	* argv.c: Use ANSI_PROTOTYPES instead of __STDC__.
	* memchr.c: Likewise.
	* strcasecmp.c: Likewise.
	* strncasecmp.c: Likewise.
	* strncmp.c: Likewise.
	* xatexit.c: Likewise.
	* xmalloc.c: Likewise.

	* copysign.c: Use traditional function declaration instead of DEFUN.
	* sigsetmask.c: Likewise.

	* memcmp.c: Both of the above, ANSI_PROTOTYPES and DEFUN.
	* memset.c: Likewise.

	* memcpy.c: ANSI_PROTOTYPES, DEFUN and prototype bcopy.
	* memmove.c: Likewise.

2003-04-14  Roger Sayle  <roger@eyesopen.com>

	* strdup.c (strdup): Tweak implementation to use memcpy.

2003-04-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (HAVE_UINTPTR_T): Always define.
	* configure: Regenerated.

2003-03-23  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (MULTIOSDIR): New macro.  Use $(CC) $(LIBCFLAGS)
	instead of $$CC alone.
	(install_to_tooldir): Use it.

2003-17-03  Jan Hubicka  <jh@suse.cz>

	* hashtab.c (htab_traverse_noresize): Break out from ...
	* hashtab.c (htab_traverse): ... here.

2003-12-03  Jan Hubicka  <jh@suse.cz>

	* hashtab.c (htab_expand): Fix warning.

	* hashtab.c (htab_expand): Compute the size of hashtable based
	on the number of elements actually used.
	(htab_traverse):  Call htab_expand when table is too empty.

2003-03-11  Carlo Wood  <carlo@gnu.org>

	* cplus-dem.c (demangle_integral_value): Correction to reflect
	patch of 2002-01-10 in order to also make negative multi-digits
	without leading underscore work.

2003-03-03  Mark Mitchell  <mark@codesourcery.com>

	* cplus-dem.c: Add license exception to copyright notice.

2003-02-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* physmem.c: Formatting changes from upstream.

2003-02-24  Danny Smith  <dannysmith@users.source.forge.net>

	* physmem.c (physmem_total): Add _WIN32 support.
	(physmem_available): Likewise.

2003-02-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* physmem.c (physmem_total) [HAVE_GETSYSINFO]: Test for
	GSI_PHYSMEM.
	(physmem_available) [HAVE_TABLE]: Test for TBL_VMSTATS.

2003-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Check for sys/systemcfg.h and
	_system_configuration.
	* physmem.c: Add support for AIX.  Tweek formatting as per
	upstream coreutils beta.

2003-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
	    Richard Earnshaw  <rearnsha@arm.com>
	    Geoffrey Keating  <geoffk@apple.com>

	* configure.in: Check for sys/sysctl.h and sysctl.
	* physmem.c: Add support for *bsd and darwin.
	* Makefile.in: Generate depedency for physmem.o.

2003-02-21  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* physmem.c (physmem_total) [HAVE_GETSYSINFO]: Use getsysinfo on
	Tru64 UNIX.
	(physmem_available) [HAVE_TABLE && HAVE_SYS_TABLE_H]: Use table on
	Tru64 UNIX.

	* configure.in (AC_CHECK_HEADERS): Check for sys/sysinfo.h,
	machine/hal_sysinfo.h, sys/table.h.
	(checkfuncs, AC_CHECKFUNCS): Check for getsysinfo, table.
	* configure, config.in: Regenerate.

2003-02-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Check for sys/sysmp.h and sysmp.
	* physmem.c: Pull upstream copy, add support for irix6.

	* config.in, configure: Regenerated.

2003-02-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* physmem.c (physmem_total, physmem_available): De-ANSI-fy.
	* configure.in (AC_CHECK_FUNCS): Add pstat_getstatic and
	pstat_getdynamic.

2003-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (CFILES): Add physmem.c.
	(REQUIRED_OFILES): Add physmem.o.
	* configure.in: Check for sys/pstat.h.
	(checkfuncs): Add pstat_getstatic and pstat_getdynamic.
	* physmem.c: New file, copied from textutils.

	* config.in, configure: Regenerated.

2003-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (CFILES): Add lrealpath.c.
	(REQUIRED_OFILES): Add lrealpath.o.
	(lrealpath.o): Add rule.
	* aclocal.m4 (libiberty_NEED_DECLARATION): Add.
	* configure.in: Add realpath and canonicalize_file_name to
	checkfuncs and AC_CHECK_FUNCS.  Use libiberty_NEED_DECLARATION
	for canonicalize_file_name.
	* lrealpath.c: New file.
	* make-relative-prefix.c: Update documentation.
	(make_relative_prefix): Simplify.  Use lbasename and lrealpath.
	* config.in: Regenerated.
	* configure: Regenerated.
	* functions.texi: Regenerated.

2003-02-20  jmc  <jmc@prioris.mini.pw.edu.pl>

	* cplus_dem.c: Fix typo: intializes -> initializes.

2003-02-20  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to
	config.status.
	* configure: Rebuilt.

2003-02-13  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR c++/7612.
	* cplus-dem.c (demangle_signature): Call string_delete.
	Remove extra string_init.
	(demangle_arm_hp_template): Call string_delete instead of
	string_clear.  Add missing string_delete call.
	(demangle_qualified): Add missing string_delete call.
	(do_type): Remove unused variable btype.  Add missing string_delete
	call.  Call string_delete instead of string_clear.
	(demangle_fund_type): Move variable btype inside of the switch
	statement.  Add missing string_delete call.
	(do_arg): Call string_delete instead of string_clear.  Remove extra
	string_init.
	(demangle_nested_args): Free work->previous_argument.

2003-02-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* acconfig.h: New file.  Add uintptr_t.
	* config.in: Regenerated.

2003-02-04  Joseph S. Myers  <jsm@polyomino.org.uk>

	* libiberty.texi: Update to GFDL 1.2.

2003-01-30  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* Makefile.in (libiberty_topdir): New subst.
	(mkinstalldirs): Redefine in terms of the above.
	* configure.in: AC_SUBST it.
	* configure: Regenerate.

2003-01-28  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* Makefile.in (all-subdir, check-subdir, installcheck-subdir)
	(info-subdir, install-info-subdir, clean-info-subdir)
	(dvi-subdir, install-subdir, etags-subdir, mostlyclean-subdir)
	(clean-subdir, distclean-subdir, maintainer-clean-subdir):
	Pass $(FLAGS_TO_PASS).

2003-01-27  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (install_to_tooldir): Instead of $(MULTISUBDIR), use
	/`$$CC -print-multi-os-directory`.

2003-01-26  Daniel Jacobowitz  <drow@mvista.com>

	* hashtab.c (htab_create_alloc_ex): New function.
	(hatab_set_functions_ex): New function.
	(htab_delete, htab_expand): Support alternate allocation functions.

2003-01-24  Christopher Faylor  <cgf@redhat.com>

	* configure.in: Remove special pex-cygwin consideration.
	* configure: Regenerate.
	* pex-cygwin.c: Remove.
	* Makefile.in: Remove pex-cygwin.[co] lines.

2003-01-24  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (CFILES): Add pex-*.c.
	(REQUIRED_OFILES): Change pexecute.o to @pexecute@
	(CONFIGURED_OFILES): Add pex-*.o.
	(TEXIFILES): Add pexecute.txh.
	(pexecute.o): Delete rule.
	(pex-cygwin.o, pex-djgpp.o, pex-mpw.o, pex-msdos.o, pex-os2.o,
	pex-unix.o, pex-win32.o): New rules.
	* configure.in: Change AC_INIT argument to xmalloc.c.
	Compute appropriate pexecute implementation and substitute it
	as @pexecute@.

	* pexecute.c: Split up into...
	* pex-cygwin.c, pex-djgpp.c, pex-mpw.c, pex-msdos.c, pex-os2.c,
	pex-unix.c, pex-win32.c, pex-common.h, pexecute.txh: ... these
	new files.

	* functions.texi: Regenerate.
	* configure: Regenerate.

2003-01-20  Josef Zlomek  <zlomekj@suse.cz>

	* hashtab.c (htab_expand): Fix allocation of new entries.

2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* Makefile.in (FLAGS_TO_PASS): Also pass DESTDIR.

	* Makefile.in (install_to_libdir, install_to_tooldir): Add a
	mkinstalldirs command.

2002-12-04  Danny Smith  <dannysmith@users.sourceforge.net>

	* make-relative-prefix.c (HAVE_HOST_EXECUTABLE_SUFFIX):
	Define for hosts with HOST_EXECUTABLE_SUFFIX.

2002-11-24  Nick Clifton  <nickc@redhat.com>

	* make-relative-prefix.c (make_relative_prefix): Ensure return
	string is empty before using strcat to construct it.

2002-11-22  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in: Add make-relative-prefix.c.
	* make-relative-prefix.c: New file.
	* functions.texi: Rebuilt.

2002-11-16  Jakub Jelinek  <jakub@redhat.com>

	* md5.c (md5_process_block): Avoid `function-like macro "F{G,H,I}" must be
	used with arguments in traditional C' warnings.

2002-10-16  Jakub Jelinek  <jakub@redhat.com>

	* config.table: Use mh-s390pic for s390x too.

2002-10-06  Andreas Jaeger  <aj@suse.de>

	* cplus-dem.c (ada_demangle): Get rid of unneeded
	variable and of strict-aliasing warning.
	(grow_vect): Use char as first parameter.

2002-09-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (all): Fix multilib parallel build.

2002-09-19  John David Anglin  <dave@hiuly1.hia.nrc.ca>

	* cp-demangle.c (demangling_new): Cast 0 to enum.
	(demangle_char): Cast return of strdup to char *.
	(is_gnu_v3_mangled_ctor): Cast 0 to enum.
	(is_gnu_v3_mangled_dtor): Likewise.
	* cplus-dem.c (grow_vect): Cast return of xrealloc to void *.
	(work_stuff_copy_to_from): Cast return of xmalloc to char **.
	* fibheap.c (fibnode_new): Cast return of xcalloc to fibnode_t.
	* md5.c (md5_process_bytes): Cast results back to const void *.
	(md5_process_block): Add cast to const md5_uint32 *.
	* regex.c (re_compile_fastmap): Cast enum to UCHAR_T.
	* safe-ctype.c (L, XL, U, XU, D, P, _, C, Z, M, V, T, S): Add cast to
	unsigned short.
	* splay-tree.c (splay_tree_xmalloc_allocate): Cast return of xmalloc
	to void *.
	* vasprintf.c (int_vasprintf): Cast return of malloc to char *.

2002-09-19  Nick Clifton  <nickc@redhat.com>

	* README: Update email addresses for bugs and patches.

2002-09-10  Mike Stump  <mrs@apple.com>

	* splay-tree.c (splay_tree_successor): Fix comments.

2002-09-11  Zack Weinberg  <zack@codesourcery.com>

	* cplus-dem.c: Code under #ifdef MAIN moved to gcc/cp/cxxfilt.c.
	* testsuite/Makefile.in: Adjust for test-demangle.
	* testsuite/regress-demangle: Deleted.
	* testsuite/test-demangle.c: New file.
	* testsuite/demangle-expected: Change \$ to $ throughout, now that
	this file is not being read by a shell script.

2002-09-05  Roger Sayle  <roger@eyesopen.com>

	* regex.c: Only use "#pragma alloca" on AIX when not using gcc.

2002-08-07  DJ Delorie  <dj@redhat.com>

	* regex.c (re_error_msgid): Just use a simple array of strings.
	(re_compile_pattern): Compensate.
	(re_comp): Likewise.
	(re_comp): Likewise.
	(regerror): Likewise.

2002-07-29  Neil Booth  <neil@daikokuya.co.uk>

	* cplus-dem.c (PREPEND_BLANK): Remove.

2002-07-10  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (demangle_identifier): Support extended Unicode
	characters.

2002-07-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cp-demangle.c (demangle_v3_with_details): Wrap in
	!defined IN_GLIBCPP_V3.

2002-07-01  Mark Mitchell  <mark@codesourcery.com>

	* cp-demangle.c (demangle_operator_name): Add type_arg parameter.
	Set it for the "st" operator.
	(demangle_expression): Handle expressions with types as arguments.

2002-06-30  Douglas Rupp  <rupp@gnat.com>

	* configure.in (OUTPUT_OPTION,NO_MINUS_C_MINUS_O): Configure.
	* Makefile.in (OUTPUT_OPTION): Use.

2002-06-22  Peter Breitenlohner <peb@mppmu.mpg.de>

	* Makefile.in (install_to_libdir): Add $(DESTDIR).
	(install_to_tooldir): Likewise.

2002-06-17  Douglas Rupp  <rupp@gnat.com>

	* lbasename.c: Add 2002 to copyright.
	(IS_DIR_SEPARATOR): Remove VMS junk.

2002-06-05  Geoffrey Keating  <geoffk@redhat.com>

	* hashtab.c (htab_create): New stub function for backward
	compatibility.
	(htab_try_create): Likewise.

2002-06-03  Geoffrey Keating  <geoffk@redhat.com>

	* hashtab.c (htab_create): Delete.
	(htab_try_create): Delete.
	(htab_create_alloc): New.
	(htab_delete): Support user-specified memory allocation.
	(htab_expand): Likewise.

2002-05-22  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* configure.in: Fix typo in the code checking for sys_errlist.
	* configure: Regenerated.

2002-05-13  Andreas Schwab  <schwab@suse.de>

	* config.table: Use mh-x86pic also for x86-64.

2002-05-08  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at
	script entry, and set LD to it when configuring multilibs.
	* configure: Rebuilt.

2002-05-07  Mark Mitchell  <mark@codesourcery.com>

	* configure.in (AC_TYPE_PID_T): Use it.
	* configure: Regenerated.
	* getruntime.c: Include <sys/types.h>.
	* waitpid.c: Likewise.  Use pid_t, not int, as the type of "pid".

2002-04-09  Richard Henderson  <rth@redhat.com>

	* hashtab.c (higher_prime_number): Use 7 as minimum.
	(find_empty_slot_for_expand): Don't compute hash2 unless needed.
	(htab_find_slot_with_hash): Likewise.

2002-04-01  Phil Edwards  <pme@gcc.gnu.org>

	* cp-demangle.c (__cxa_demangle):  Also protect with IN_GLIBCPP_V3.
	(is_gnu_v3_mangled_ctor, is_gnu_v3_mangled_ctor):  Conditionally
	not compile if IN_GLIBCPP_V3 defined.
	* dyn-string.c:  Also allow IN_GLIBCPP_V3 to change allocation scheme.

2002-03-30  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* cp-demangle.c (java_demangle_v3): Don't try to release "demangled"
	if it is NULL.

2002-03-27  DJ Delorie  <dj@redhat.com>

	* hex.c: Add documentation.
	(_hex_value): Provide non-ASCII empty table.
	(hex_init): Initialize the non-ASCII table.
	* functions.texi: Regenerate.

2002-03-27  Mark Mitchell  <mark@codesourcery.com>

	* dyn-string.c: Add libgcc exception to copyright notice.

2002-03-26  H.J. Lu  (hjl@gnu.org)

	* config.table: Support --with-build-subdir.
	* configure.in: Likewise.
	* configure: Rebuild.

2002-03-18  Stuart Griffith  <Stuart_Griffith@credence.com>

	* strtod.c (strtod): Increment 8 chars, not 7, when `infinity'
	seen.

2002-03-12  Mark Mitchell  <mark@codesourcery.com>

	* cp-demangle.c: Add libgcc exception to cp-demangle.c copyright
	notice.

2002-03-11  Douglas B Rupp  <rupp@gnat.com>

	* xatexit.c [VMS]: Include stdlib.h and unixlib.h.

2002-03-06  Jim Blandy  <jimb@redhat.com>

	* splay-tree.c (splay_tree_xmalloc_allocate,
	splay_tree_xmalloc_deallocate): Use K&R-style definitions, not
	prototyped definitions.  Mark `data' arguments as unused.

2002-03-06  Andrew Cagney  <ac131313@redhat.com>

	* floatformat.c (floatformat_arm_ext_big): Delete definition.

2002-03-04  Phil Edwards  <pme@gcc.gnu.org>

	* configure.in:  Add --enable-install-libiberty option.
	* Makefile.in (INSTALLED_HEADERS):  New variable.
	(install_to_libdir):  Possibly also copy headers.
	* configure:  Regenerated.

2002-03-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* xmalloc.c (xmalloc_fail): Clarify error message further.

2002-03-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* xmalloc.c (xmalloc_fail): Clarify error message.

2002-02-22  Jim Blandy  <jimb@redhat.com>

	* splay-tree.c (splay_tree_xmalloc_allocate,
	splay_tree_xmalloc_deallocate): New functions.
	(splay_tree_new): Call splay_tree_new_with_allocator, passing the
	above functions and a dummy data pointer.
	(splay_tree_new_with_allocator): New function.
	(splay_tree_delete_helper, splay_tree_delete, splay_tree_insert,
	splay_tree_remove): Use the splay tree's allocation and
	deallocation functions.

2002-02-19  Scott Snyder  <snyder@fnal.gov>

	* testsuite/demangle-expected: Add test case for infinite loop in
	demangler.
	* cplus-dem.c (demangle_arm_hp_template): Stop trying to demangle
	if do_type() doesn't make any progress --- prevents an infinite
	loop.

2002-02-18  Carlo Wood  <carlo@gnu.org>

	PR c++/5390
	* cplus-dem.c (demangle_integral_value): Accept multi-digit
	numbers that do not start with an underscore; This is needed
	for integer template parameters. This doesn't break anything
	because multi-digit numbers are never followed by a digit.
	* testsuite/demangle-expected: Corrected all mangled test
	cases with multi-digit template parameters: g++ 2.95.x does
	not generate underscores around these parameters.

2002-02-05  Jason Merrill  <jason@redhat.com>

	* cplus-dem.c (flags): Add DMGL_VERBOSE
	(cplus_demangle_v3_p): Remove.
	(demangle_it): Add DMGL_TYPES to passed flags.
	* cp-demangle.c (cplus_demangle_v3_all): Remove.
	(cplus_demangle_v3_type): Remove.
	(cplus_demangle_v3): Add options parm.

2002-02-02  H.J. Lu  (hjl@gnu.org)

	* cp-demangle.c (cp_demangle_type): Do not protect with
	IN_LIBGCC2.
	(cplus_demangle_v3_all): New.
	(cplus_demangle_v3): Call cplus_demangle_v3_all.
	(cplus_demangle_v3_type): Call cplus_demangle_v3_all.

	* cplus-dem.c (cplus_demangle_v3_p): New function pointer.
	Initialized to cplus_demangle_v3.
	(cplus_demangle_with_style): Call cplus_demangle_v3_p instead
	of cplus_demangle_v3.
	(main): Set cplus_demangle_v3_p to cplus_demangle_v3_type for
	command line symbol.

	* testsuite/regress-demangle: Pass the mangled name at the
	command line.

2002-02-01  H.J. Lu  <hjl@gnu.org>

	* cp-demangle.c (cp_demangle_type): Call demangling_new with
	DMGL_GNU_V3.

2002-01-31  Phil Edwards  <pme@gcc.gnu.org>

	* cp-demangle.c:  Revert yesterday's change.

2002-01-31  Adam Megacz  <adam@xwt.org>

	* configure.in: Treat mingw the same as cywin
	wrt HAVE_SYS_ERRLIST.

2002-01-30  Phil Edwards  <pme@gcc.gnu.org>

	* cp-demangle.c (cp_demangle_type):  Do not protect with IN_LIBGCC2.
	(cplus_demangle_v3):  Mimic __cxa_demangle and fall back on
	cp_demangle_type.
	* testsuite/demangle-expected:  New gnu-v3 test.

2002-01-22  Momchil Velikov  <velco@fadata.bg>

	* configure.in (variable detection): Use arrays of unspecified
	size instead of plain integers.

2002-01-18  DJ Delorie  <dj@redhat.com>

	* Makefile.in (TESTLIB): New.  This library is for future
	testsuites.
	(CFILES, REQUIRED_OFILES, CONFIGURED_OFILES): Re-alphabetize,
	break down by letter.
	(REQUIRED_OFILES): List long-to-compile files first.
	(maint-deps): New, target for updating dependencies.
	(dependencies): Update.
	* maint-tool: Add dependency-generating option.
	* configure.in: Check for _doprnt even if we're not providing it.
	* configure: Regenerate.

	* _doprnt.c: Modifications to allow compiling on any platform.
	* copysign.c: Likewise.
	* putenv.c: Likewise.
	* setenv.c: Likewise.
	* vsprintf.c: Likewise.

2002-01-15  Douglas B Rupp  <rupp@gnat.com>

	* mkstemps.c (mkstemps): On VMS, open temp file with option
	that causes it to be deleted when closed.

2002-01-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cp-demangle.c (long_options): Const-ify.
	* cplus-dem.c (long_options): Likewise.

	* cplus-dem.c (mystrstr): Delete.  All callers changed to use
	strstr instead.

2001-12-31  Ira Ruben	<ira@apple.com>

	* aclocal.m4 (libiberty_AC_FUNC_STRNCMP): Use anon mmap as 2nd try.
	* configure: Regenerated.

2001-12-24  Douglas B. Rupp  <rupp@gnat.com>

	* configure.in (uintptr_t): Use AC_CHECK_TYPE.
	* configure: Regenerated.

2001-12-12  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR other/2719
	* cplus-dem.c (consume_count): Treat negative count as an error.
	* testsuite/demangle-expected: Added testcase.

Tue Dec 11 07:08:57 2001  Douglas B. Rupp  <rupp@gnat.com>

	* configure.in: Hardcode that vfork works on VMS host.
	* configure: Regenerated.

2001-12-06  Richard Henderson  <rth@redhat.com>

	* cplus-dem.c (libiberty_demanglers): Add no_demangling case.
	(cplus_demangle): Support no_demangling.

2001-11-27  Zack Weinberg  <zack@codesourcery.com>

	* _doprnt.c: Moved here from gcc/doprint.c.  Adjust to build
	in libiberty context.  Fix typo in leading comment.
	* configure.in: Fix various AC_DEFINEs so autoheader works.
	If any of vprintf, vsprintf, vfprintf is missing from libc,
	then AC_REPLACE_FUNCS(_doprnt).

2001-11-26  DJ Delorie  <dj@redhat.com>
	    Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (stamp-h): Depend on Makefile for proper
	serialization.
	(*-subdir): Depend on config.h for proper serialization.

2001-11-26  DJ Delorie  <dj@redhat.com>

	* configure.in: Check for alloca.h (for regex.c and putenv.c).
	* configure: Regenerate.
	* config.h: Add HAVE_ALLOCA_H.

2001-11-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* regex.c: Check defined(__STDC__) || defined(ALMOST_STDC) ||
	defined(HAVE_STRINGIZE) to determine whether ISO CPP token pasting
	is available.

Thu Nov 15 11:06:25 2001  Jeffrey A Law  (law@cygnus.com)

	* config.in (HAVE_UINTPTR_T): Provide autoconf stub.
	* configure.in (HAVE_UINTPTR_T): Test for system defining
	uintptr_t and define HAVE_UINTPTR_T appropriately.
	* regex.c (uintptr_t): Do not provide a definition if the
	system provided one.

	* regex.c (PREFIX): Provide an alternate definition for
	non-ANSI/ISO compilers.
	(ARG_PREFIX): Likewise.

2001-11-12  Jim Meyering  <meyering@lucent.com>

	* obstack.c (_): Honor the setting of ENABLE_NLS.  Otherwise,
	this code would end up calling gettext even in packages built
	with --disable-nls.
	* getopt.c (_): Likewise.
	* regex.c (_): Likewise.

2001-11-03  Alan Modra  <amodra@bigpond.net.au>

	* configure.in: Cope with missing makeinfo.
	* configure: Regenerate.

2001-10-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* hex.c (hex_init): Provide empty stub.

	* hex.c (hex_init): Delete.
	(_hex_value): Const-ify and initialize at compile-time.

2001-10-19  H.J. Lu <hjl@gnu.org>

	* Makefile.in ($(TARGETLIB)): Also generate pic/$(TARGETLIB) if
	necessary.

2001-10-17  DJ Delorie  <dj@redhat.com>

	* argv.c, asprintf.c, choose-temp.c, concat.c, cplus-dem.c,
	ffs.c, fnmatch.txh, getruntime.c, make-temp-file.c,
	mkstemps.c, pexecute.c, random.c, strsignal.c, vasprintf.c:
	Improve manual formatting.
	* functions.texi: Regenerate.

2001-10-15  DJ Delorie  <dj@redhat.com>

	* Makefile.in (TEXIFILES): Add fnmatch.txh.
	(maint-undoc): New.
	maint-tool: Add "undoc" tool.
	* alloca.c, argv.c, asprintf.c, choose-temp.c, concat.c,
	fdmatch.c, ffs.c, getruntime.c, insque.c, lbasename.c,
	make-temp-file.c, mkstemps.c, pexecute.c, random.c, spaces.c,
	strerror.s, strsignal.c, strtol.c, vasprintf.c: Add or update
	documentation.
	* fnmatch.txh: New.
	* functions.texi: Regenerate.

2001-10-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* bcmp.c, setenv.c: Use "nonzero" instead of "non-zero".
	* strtod.c: Use "ISO C" instead of "ANSI C".
	* functions.texi: Regenerate.

2001-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>

	* alloca.c, clock.c, getcwd.c, getpagesize.c, getpwd.c, index.c,
	libiberty.texi, memchr.c, putenv.c, rindex.c, strchr.c, strdup.c,
	strerror.c, strrchr.c, strstr.c, strtod.c, tmpnam.c, vfork.c,
	xatexit.c, xmalloc.c, xstrerror.c: Improve manual formatting.  Fix
	spelling.  Give names to function arguments in documentation.  Use
	(void) prototypes in documentation.
	* functions.texi: Regenerate.

2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* argv.c (buildargv, tests, main): Const-ify.
	* cp-demangle.c (operator_code): Likewise.
	* cplus-dem.c (optable, libiberty_demanglers,
	cplus_demangle_set_style, cplus_demangle_name_to_style,
	print_demangler_list): Likewise.
	* hashtab.c (higher_prime_number): Likewise.
	* strcasecmp.c (charmap): Likewise.
	* strerror.c (error_info, strerror, main): Likewise.
	* strncasecmp.c (charmap): Likewise.
	* strsignal.c (signal_info): Likewise.

2001-09-29  DJ Delorie  <dj@redhat.com>

	* configure: Regenerate.

2001-09-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* concat.c: Include stdlib.h.

2001-09-27  Eli Zaretskii  <eliz@is.elta.co.il>

	* libiberty.texi: (Top level): Add syncodeindex pg.  Add
	@dircategory and @direntry directives.  Add @finalout.
	(many nodes): Lose the next,prev,up pointers on the @nide line.
	(Using, Supplemental Functions, Replacement Functions): Fix
	markup.
	(Functions): Move around, to allow makeinfo to build the manual
	without next,prev,up pointers in thye node lines.
	(Licenses): Fix typos.

	* index.c, rindex.c, strchr.c, strerror.c, strrchr.c, strstr.c,
	strtol.c, xatexit.c, xexit.c, xmalloc.c: Fix spelling and markup.
	* functions.texi: Regenerate.

	* copying-lib.texi: Lose the next,prev,up pointers on the @node
	line.

2001-09-27  DJ Delorie  <dj@redhat.com>

	* configure.in: Don't use in-tree texinfo, because libiberty must
	be built before it.  Check for makeinfo version 4 or higher.
	* functions.texi: Regenerate.

2001-09-20  DJ Delorie  <dj@redhat.com>
	    Phil Edwards  <pedwards@disaster.jaj.com>

	* configure.in (MAKEINFO, PERL): Detect these.
	(--enable-maintainer-mode): Add.
	* configure: Regenerate.
	* Makefile.in (MAKEINFO, PERL): Define.
	(libiberty.info, libiberty.dvi, libiberty.html): New.
	(CFILES): Add bsearch.c.
	(CONFIGURED_OFILES): New, list of objects configure might add.
	(maint-missing, maint-buildall): New, for maintainers only.
	(clean, mostlyclean): Add info/dvi/html files.
	* libiberty.texi, copying-lib.texi, obstacks.texi, functions.texi: New.
	* gather-docs: New, for maintainers.
	* maint-tool: New, for maintainers.
	* alloca.c, atexit.c, basename.c, bcmp.c, bcopy.c, bsearch.c,
	bzero.c, calloc.c, clock.c, configure.in, configure, getcwd.c,
	getpagesize.c, getpwd.c, index.c, memchr.c, memcmp.c, memcpy.c,
	memmove.c, memset.c, putenv.c, rename.c, rindex.c, setenv.c,
	sigsetmask.c, strcasecmp.c, strchr.c, strdup.c, strerror.c,
	strncasecmp.c, strncmp.c, strrchr.c, strstr.c, strtod.c, strtol.c,
	tmpnam.c, vfork.c, vprintf.c, waitpid.c, xatexit.c, xexit.c,
	xmalloc.c, xmemdup.c, xstrdup.c, xstrerror.c: Add or update
	documentation.

2001-09-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* concat.c (reconcat): Fix for traditional C.

2001-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* concat.c (reconcat): New function.

2001-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* concat.c (vconcat_length, vconcat_copy, concat_length,
	concat_copy, concat_copy2): New functions.
	(concat): Use vconcat_length/vconcat_copy.

	* alloca.c (libiberty_optr, libiberty_nptr, libiberty_len):
	Define.

2001-09-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* asprintf.c: Don't define USE_STDARG.  Use VPARAMS, VA_OPEN,
	VA_FIXEDARG & VA_CLOSE.

	* vasprintf.c: Check HAVE_STRING_H when including string.h.
	(checkit): Delete redundant prototype.  Add ATTRIBUTE_PRINTF_1.
	Use VA_OPEN, VA_FIXEDARG & VA_CLOSE.  Free allocated string.

2001-08-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* concat.c (concat): Use VPARAMS, VA_OPEN, VA_FIXEDARG & VA_CLOSE.

2001-08-23  Ulrich Drepper  <drepper@redhat.com>

	* regex.c (truncate_wchar): Use wcrtomb not wctomb.

2001-08-23  Ulrich Drepper  <drepper@redhat.com>

	* posix/regex.c [_LIBC] (convert_mbs_to_wcs): Use __mbrtowc
	instead of mbrtowc.
	[_LIBC]: Use __iswctype instead of iswctype, __wcslen instead of
	wcslen, and __wcscoll instead of wcscoll.

2001-08-22  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* fibheap.c (fibheap_init, fibnode_init): Remove.
	(fibheap_new, fibnode_new): Use xcalloc to allocate and
	initialize memory.
	(fibheap_insert): Remove check for node allocation failure.

2001-08-21  Richard Henderson  <rth@redhat.com>

	* Makefile.in (fibheap.o): Depend on config.h.
	* fibheap.c: Tidy formatting.  Use config.h.` Rearrange some
	functions for inlining.

Tue Aug 21 12:35:04 2001  Christopher Faylor <cgf@cygnus.com>

	* configure.in: Need to set HAVE_SYS_ERRLIST and HAVE_SYS_NERR whenever
	hosting on cygwin.
	* configure: Regenerate.

2001-08-20  Andrew Cagney  <ac131313@redhat.com>

	* floatformat.c (floatformat_m88110_ext): Remove #ifdef
	HARRIS_FLOAT_FORMAT.
	(floatformat_ia64_spill_little, floatformat_ia64_quad_little)
	(floatformat_ia64_spill_big, floatformat_ia64_quad_big)
	(floatformat_arm_ext_big, floatformat_arm_ext_littlebyte_bigword)
	(floatformat_m88110_harris_ext): New float formats.

2001-08-20  Daniel Berlin  <dan@cgsoftware.com>

	* fibheap.c: New file. Fibonacci heap.

	* Makefile.in (CFILES): Add fibheap.c.
	(REQUIRED_OFILES): Add fibheap.o.
	(fibheap.o): Add dependencies for fibheap.o.

2001-08-17  Christopher Faylor <cgf@cygnus.com>

	* configure.in: Always set HAVE_SYS_ERRLIST when targetting cygwin.
	* configure: Regenerate.

2001-08-16  Richard Henderson  <rth@redhat.com>

	* hashtab.c (htab_hash_string): New.

2001-08-13  Andrew Cagney  <ac131313@redhat.com>

	* floatformat.c (floatformat_ieee_double_littlebyte_bigword): Fix
	name.

2001-08-12  Isamu Hasegawa  <isamu@yamato.ibm.com>

	* regex.c (wcs_regex_compile): Use appropriate string
	to compare with collating element.
	Fix the padding for the alignment.

2001-08-10  Andrew Cagney  <ac131313@redhat.com>

	* lbasename.c (lbasename): Change function definition to return a
	const char pointer.

2001-08-07  Jason Merrill  <jason_merrill@redhat.com>

	* cp-demangle.c (demangle_special_name): "GR" -> "reference temporary
	for".

2001-08-03  Richard Henderson  <rth@redhat.com>

	* Makefile.in (concat.o): Depend on config.h.

2001-07-30  Andreas Jaeger  <aj@suse.de>

	* concat.c: Include "config.h".

2001-07-30  Andreas Jaeger  <aj@suse.de>

	* regex.c: Declare wcs functions only if compiling with
	MBS_SUPPORT.
	Don't use #elif for traditional C.

2001-07-23  Ulrich Drepper  <drepper@redhat.com>

	* regex.c: Revamp memory allocation for WCHAR functions to
	not use too much stack.

2001-07-30  Andreas Jaeger  <aj@suse.de>

	* regex.c: Declare wcs functions only if compiling with
	MBS_SUPPORT.
	Don't use #elif for traditional C.

2001-07-25  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (regex.o): Add dependency on config.h.

2001-07-18  Andreas Schwab  <schwab@suse.de>

	* regex.c (WORDCHAR_P) [WCHAR]: Also return true for the
	underscore character.

2001-07-18  Ulrich Drepper  <drepper@redhat.com>

	* regex.c: Limit string length printed in debug messages to 100
	chars.

2001-07-18  Andreas Jaeger  <aj@suse.de>

	* regex.c: Place under LGPL version 2.1.

2001-07-10  Jeff Johnston  <jjohnstn@redhat.com>

	* Makefile.in: Add support for regex code.
	* regex.c: New file.

2001-07-05  Mark Klein  <mklein@dis.com>

	* Makefile.in: Add ffs.c dependency.
	* configure.in: Add ffs.c.
	* ffs.c: New file.

2001-06-18  Richard Henderson  <rth@redhat.com>

	* concat.c: Include <sys/types.h>.

2001-06-11  Loren J. Rittle  <ljrittle@acm.org>

	bootstrap/3106
	* strerror.c (sys_nerr): Hide the OS header version.
	* strsignal.c (sys_nsig): Likewise.

2001-06-10  Richard Henderson  <rth@redhat.com>

	* concat.c: Include string.h.  Fix int vs size_t usage.
	Simplify the iteration loops.  Use memcpy.

2001-05-16  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* partition.c: Fix misspelling of `implementation'.

2001-05-09  Thiemo Seufer  <seufer@csv.ica.uni-stuttgart.de>

	* md5.c (md5_init_ctx): Declare constants as unsigned.
	(md5_process_block): Likewise.

2001-05-07  Zack Weinberg  <zackw@stanford.edu>

	* cp-demangle.c (demangle_v3_with_details,
	is_gnu_v3_mangled_ctor, is_gnu_v3_mangled_dtor): Use K+R style
	function definition.
	* ternary.c: Use K+R style function definitions.  Use PTR, not
	void *.  Make arguments constant where possible.

2001-05-07  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.h (splay_tree_max): New function.
	(splay_tree_min): Likewise.

2001-04-15  Daniel Berlin  <dan@cgsoftware.com>

	* ternary.c: New file - Ternary search tree implementation.

	* Makefile.in: Add ternary.o, and ternary.c dependencies.

2001-04-03  Zack Weinberg  <zackw@stanford.edu>

	* make-temp-file.c (try): Inline.

2001-02-28  Richard Henderson  <rth@redhat.com>

	* Makefile.in (make-temp-file.o): Depend on config.h.

2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* memchr.c (memchr): Adjust condition to avoid infinite loop.

2001-03-23  Jakub Jelinek  <jakub@redhat.com>

	* cp-demangle.c (demangle_discriminator): `_0' is discriminator #1,
	`_' not followed by a digit is invalid.

2001-03-22  Jim Blandy  <jimb@redhat.com>

	* cp-demangle.c (string_list_delete): Use dyn_string_delete
	instead of free, to free the contents as well as the string
	structure.

2001-03-21  Zack Weinberg  <zackw@stanford.edu>

	* make-temp-file.c: Always default DIR_SEPARATOR to '/'.
	Don't default P_tmpdir to anything.  Try /var/tmp before
	/usr/tmp.

2001-03-20  Zack Weinberg  <zackw@stanford.edu>

	* choose-temp.c: Split off make_temp_file, and the code
	duplicated between it and choose_temp_base, into...
	* make-temp-file.c: ... here; new file.

	* Makefile.in (CFILES): Add make-temp-file.c.
	(REQUIRED_OFILES): Add make-temp-file.o.

2001-03-20  Jim Blandy  <jimb@redhat.com>

	* cp-demangle.c (struct demangling_def): New fields:
	is_constructor and is_destructor.
	(demangling_new): Initialize them.
	(demangle_ctor_dtor_name): Set them, if we detect a constructor
	or destructor.
	(demangle_v3_with_details, is_gnu_v3_mangled_ctor,
	is_gnu_v3_mangled_dtor): New functions.

2001-03-20  Jason Merrill  <jason@redhat.com>

	* cplus-dem.c (main): Skip initial $.

2001-03-15  Michael Meissner  <meissner@redhat.com>

	* hashtab.c (higher_prime_number): Silence warning that 4294967291
	might be a signed integer under pre-ISO C systems.

2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
	    John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* lbasename.c: New file.
	* Makefile.in: Update for lbasename.

2001-03-06  Zack Weinberg  <zackw@stanford.edu>

	* aclocal.m4 (libiberty_AC_FUNC_C_ALLOCA): New.
	* configure.in: Replace all alloca logic with a simple use of
	the above new macro.
	* config.table: Kill *-*-beos* entry.
	* config/mh-beos: Delete.
	* configure, config.in: Regenerate.

	* Makefile.in (ALLOCA, HFILES): Kill.
	(REQUIRED_OFILES): Add alloca.o.
	(alloca.o): Depend on libiberty.h.
	(argv.o): Don't depend on alloca-conf.h.
	* alloca-conf.h: Delete.
	* alloca.c: Include libiberty.h.  Kill all #ifdef emacs
	blocks.  Provide the C alloca unconditionally.  Use PTR where
	appropriate.  Make i00afunc static.
	* argv.c: Don't include alloca-conf.h.

2001-03-04  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* cplus-dem.c (main): Cast enum style to int.

2001-02-16  Loren J. Rittle  <ljrittle@acm.org>

	* cplus-dem.c (main): Initialize style.

2001-02-02  Phil Edwards  <pme@sources.redhat.com>

	* COPYING.LIB:  Update to LGPL 2.1 from the FSF.

2001-01-31  Bryce McKinlay  <bryce@albatross.co.nz>

	Add support for Java demangling under the v3 ABI:
	* cp-demangle.c (NAMESPACE_SEPARATOR): New define.
	(struct demangling_def): Add `style' field.
	(demangling_new): New parameter `style'. Set it in demangling_t.
	(demangle_prefix): Use NAMESPACE_SEPARATOR.
	(demangle_type_ptr): Don't emit pointer symbol if doing Java output.
	(cp_demangle): New parameter `style'. Pass it to demangling_new().
	(main): Call cp_demangle with extra parameter.
	(java_demangle_v3): New function.
	(java_builtin_type_names): New. Table of primitive type names used
	for Java demangling.
	(demangle_builtin_type): Look up in java_builtin_type_names if doing
	Java output.
	* cplus-dem.c (cplus_demangle): Use java_demangle_v3 to do Java
	demangling.
	(long_options): Remove obsolete `java' option.
	(main): Remove explicit handling of `java' option. Instead, pass style
	parameter in cplus_demangle flags as gdb does.
	* testsuite/demangle.expected: Add some Java test cases.

2000-12-29  DJ Delorie  <dj@redhat.com>

	* fnmatch.c: Make the note about the origins of this file more
	accurate, at least until we can sync with glibc.
	* getopt.c: Ditto.
	* getopt1.c: Ditto.
	* md5.c: Ditto.
	* obstack.c: Ditto.

2000-12-26  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* bsearch.c: New file.
	* configure.in (funcs): Add bsearch.
	(AC_CHECK_FUNCS): Likewise.
	* configure, config.in: Regenerate.

2000-12-13  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* safe-ctype.c: #include "ansidecl.h".
	* strtod.c: Likewise.

2000-12-13  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* strtoul.c: Include safe-ctype.h, not ctype.h.

2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>

	* safe-ctype.c: New file.
	* Makefile.in (CFILES): Add safe-ctype.c.
	(REQUIRED_OFILES): Add safe-ctype.o.

	* argv.c: Define ISBLANK and use it, not isspace.
	* basename.c, cplus-dem.c, fnmatch.c, pexecute.c, strtod.c,
	strtol.c, strtoul.c: Include safe-ctype.h, not ctype.h.  Use
	uppercase ctype macros.  Don't test ISUPPER(c)/ISLOWER(c)
	before calling TOLOWER(c)/TOUPPER(c).

2000-12-07  Mike Stump  <mrs@wrs.com>

	* Makefile.in (distclean): When cleaning, remove testsuite.

2000-12-05  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c (cplus_demangle_v3): Check that it's a v3 mangled
	name before allocating the dyn_string.

2000-12-04  Jason Merrill  <jason@redhat.com>

	* cp-demangle.c: s/new_abi/v3/.
	* cplus-dem.c: Likewise.
	(current_demangling_style): Now auto_demangling.
	(cplus_demangle): Try v3 demangling if AUTO_DEMANGLING.
	(main): Use standard symbol chars for auto_demangling.

2000-11-26  Mark Mitchell  <mark@codesourcery.com>

	* hashtab.c (higher_prime_number): Use a table, rather than a
	seive, to find the next prime.

2000-11-22  H.J. Lu  <hjl@gnu.org>

	* cplus-dem.c (main): Handle gnat_demangling.

2000-11-22  Zack Weinberg  <zack@wolery.stanford.edu>

	* aclocal.m4 (LIB_AC_PROG_CC): Moved here from configure.in.
	(AC_DEFINE_NOAUTOHEADER): New - work around bug in autoheader.
	* configure.in: Call AC_C_INLINE and AC_C_CONST.  Use three
	argument form of AC_DEFINE in dummy definitions block.  Use
	AC_DEFINE_NOAUTOHEADER for real definitions of things defined
	in dummy block.  Preload cache variables instead of bypassing
	tests, where possible.
	* acconfig.h: Removed.

	* xmalloc.c (xmalloc_failed): New function, does error
	reporting on failed allocation.
	(xmalloc, xcalloc, xrealloc): Use it.

2000-11-21  Hans-Peter Nilsson  <hp@bitrange.com>

	* cplus-dem.c (cplus_demangle): Fix formatting.
	(grow_vect): Ditto.
	(ada_demangle): Ditto.
	(internal_cplus_demangle): Ditto.
	(mop_up): Ditto.

2000-11-21  H.J. Lu  <hjl@gnu.org>

	* cplus-dem.c (main): Handle java_demangling.

2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (grow_vect): Prototype.
	(ada_demangle): Cast the arg of ctype macros to unsigned char.

2000-11-15  Hans-Peter Nilsson  <hp@bitrange.com>

	* cplus-dem.c (ada_demangle): Add back ATTRIBUTE_UNUSED for
	parameter `option'.

2000-11-15  Kenneth Block  <kenneth.block@compaq.com>

	* cplus-dem.c: Eliminate use of DEFUN, it is obsolete and cannot
	be used in GCC.

2000-11-15  Kenneth Block  <kenneth.block@compaq.com>

	* cplus-dem.c: Add gnat demangler.  Add java to demangle style
	list.

2000-11-04  Hans-Peter Nilsson  <hp@bitrange.com>

	* hashtab.c (htab_expand): Change to return int.  Use calloc or
	xcalloc depending on htab->return_allocation_failure.  Return zero
	if calloc fails.
	(htab_create): Update comment to cover memory allocation.
	(htab_try_create): New.
	(htab_find_slot_with_hash): Return NULL if htab_expand fails.
	Update comment to cover this.

2000-11-03  Hans-Peter Nilsson  <hp@bitrange.com>

	* hashtab.c: Change void * to PTR where necessary.
	(htab_create, htab_expand): Correct formatting of comment before
	function.

2000-10-22  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (string_list_def): Add caret_position and comments.
	(result_caret_pos): New macro.
	(result_append_string): Rename to...
	(result_add_string): ... this, and insert at caret position.
	Rename throughout.
	(result_append): Rename to...
	(result_add): ... this, and insert at caret position.  Rename
	throughout.
	(result_append_char): Rename to...
	(result_add_char): ... this, and insert at caret position.  Rename
	throughout.
	(result_append_space): Remove.
	(string_list_new): Initialize caret position.
	(result_add_separated_char): Use caret position.
	(result_get_caret): New funtion.
	(result_set_caret): Likewise.
	(result_shift_caret): Likewise.
	(result_previous_char_is_space): Likewise.
	(substitution_start): Use caret position.
	(substitution_add): Likewise.
	(demangling_new): Initialize caret position.
	(demangle_encoding): Use caret position.
	(demanglin_nested_name): Put CV qualifiers after name.
	(demangle_type_ptr): Use switch statement.  Handle pointers to
	arrays.  Don't use result_append_space.  Use caret position.
	(demangle_type): Emit CV qualifiers after underlying type.  Adjust
	call to demangle_array_type.
	(demangle_array_type): Add parameter to handle pointers to arrays.

2000-10-01  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.c (splay_tree_insert): Fix formatting.

2000-09-16  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.c (splay_tree_predecessor): Fix typo in comment.

2000-09-14  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* splay-tree.c: #include <stdio.h>.

2000-09-14  Hans-Peter Nilsson  <hp@axis.com>

	* testsuite/demangle-expected: Add two tests for anonymous
	namespaces.
	* cplus-dem.c (gnu_special): Handle anonymous namespaces.

2000-09-10  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.c (splay_tree_predecessor): New function.
	(splay_tree_successor): Likewise.

2000-09-10  Hans-Peter Nilsson  <hp@axis.com>

	* testsuite/demangle-expected: Add four tests for type_info
	mangling.
	* cplus-dem.c (gnu_special): Use do_type, not demangle_fund_type,
	for a non-template non-qualified type_info function or node.

2000-09-08  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c: Fix copyright banner.

2000-09-07  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* md5.c: #include "ansidecl.h".

2000-09-06  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (status_allocation_failed): Rearrange whitespace.
	(demangle_type): Handle substitution candidates correctly in the
	face of special substitutions.

2000-09-05  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_encoding): Rename variable.
	(demangle_name): Rename parameter.  Handle return type
	suppression.
	(demangle_nested_name): Rename parameter.
	(demangle_prefix): Likewise.  Change return type suppression.
	(demangle_unqualified_name): Add parameter.  Flag constructors and
	conversion operators.
	(demangle_special_name): Fix comment.
	(demangle_type): Rename variable.
	(demangle_bare_function_type): Check for missing return type and
	parameter.
	(demangle_class_enum_type): Rename parameter.
	(demangle_discriminator): Fix misspelling in comment.

2000-08-31  DJ Delorie  <dj@redhat.com>

	* configure.in (Cygwin): special case cygwin only when we're
	building cygwin, not when we're hosting cygwin.

2000-09-04  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_template_arg): Eat an `E' after an
	<expression>.

2000-09-04  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_type_ptr): Increment position past
	pointer and reference characters.

2000-09-04  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_nv_offset): New function.
	(demangle_v_offset): Likewise.
	(demangle_call_offset): Likewise.
	(demangle_special_name): Update thunk demangling to comply with
	ABI changes.

2000-09-03  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (ANONYMOUS_NAMESPACE_PREFIX): New macro.
	(substitution_def): Remove template_parm_number.
	(NOT_TEMPLATE_PARM): Remove.
	(result_insert_string): New macro.
	(result_insert): Likewise.
	(result_insert_char): Likewise.
	(substitution_add): Remove last parameter.  Don't store template
	parm number.
	(BFT_NO_RETURN_TYPE): Define as NULL.
	(demangle_encoding): Adjust call to demangle_bare_function_type.
	(demangle_name): Adjust substitution.  Adjust call to
	substitution_add.
	(demangle_prefix): Adjust call to substitution_add.
	(demangle_identifier): Handle anonymous namespaces.
	(demangle_operator_name): Change demangling of vendor-extended
	operator to match ABI changes.
	(demangle_type_ptr): Change parameters.  Make recursive.  Handle
	substitutions here.
	(demangle_type): Adjust calls to demangle_template_param,
	substitution_add, and demangle_type_ptr.  Fix substitution of
	templated types.
	(demangle_function_type): Change parameter to a pointer.
	(demangle_bare_function_type): Likewise.  Adjust insertion point.
	(demangle_template_param): Remove last parameter.
	(demangle_expr_primary): Remove unused variable.  Adjust call to
	demangle_template_param.
	(is_mangled_char): Accept `$' and `.'.
	* cplus-dem.c (gnu_new_abi_symbol_characters): Add '$' and '.'.
	* dyn-string.c (dyn_string_insert_char): New function.

2000-08-31  Hans-Peter Nilsson  <hp@axis.com>

	* testsuite/demangle-expected: Add nine tests for
	underscore-after-number followed by five tests for name-signature
	delimiter.

2000-08-28  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (md5.o): Depend on config.h.

2000-08-28  Jason Merrill  <jason@redhat.com>

	* Makefile.in (REQUIRED_OFILES): Add md5.o.
	(CFILES): Add md5.c.
	* md5.c: New file.

2000-08-27  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_name): Initialize template_p in local
	name case.  Don't re-add substitutions as candidates.
	(demangle_nested_name): Use <unqualified-name>.
	(demangle_prefix): Likewise.  Don't add template names as
	substitution candidates twice, or re-add a substitution or the
	last prefix component.
	(demangle_local_name): Adjust output format.

2000-08-25  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (result_add_separated_char): Change parameter to
	int.
	(substitution_add): Don't check for duplicates.  Check if
	previously allocated size is zero.
	(demangle_name): Remove duplicate check for std substitution.
	Clear template flag appropriately.
	(demangle_prefix): Remove argument to demangle_substitution.
	Don't check that template flag is already set.
	(demangle_operator_name): Add pt operator.
	(demangle_type): Don't treat r as built-in type.  Remove argument
	to demangle_substitution.  Fix substitution candidate mechanics.
	Handle <template-template-parm>s.  Improve comments.
	(demangle_template_param): Don't handle template arg lists here.
	(demangle_substitution): Remove parameter.
	(print_usage): Remove extra fprintf option.

2000-08-24  Greg McGary  <greg@mcgary.org>

	* random.c (end_ptr): Revert previous change.

2000-08-24  Greg McGary  <greg@mcgary.org>

	* cplus-dem.c (cplus_demangle_opname, cplus_mangle_opname,
	demangle_expression, demangle_function_name): Use ARRAY_SIZE.
	* random.c (end_ptr): Likewise.

2000-08-23  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (result_close_template_list): Remove function.
	(result_add_separated_char): New function.
	(result_open_template_list): New macro.
	(result_close_template_list): Likewise.
	(demangle_prefix): Don't set template_p if the
	prefix ends with a ctor name.
	(demangle_type_ptr): Remove duplicate RETURN_IF_ERROR.
	(demangle_type): Check for template args after substitution.
	(demangle_template_args): Use result_open_template_list.

2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>

	* pexecute.c:  Don't use vfork.  Initialize 'pid' before retry loop.

2000-07-26  Dave Pitts  <dpitts@cozx.com>

	* config/mh-openedition.h: Added -DLE370 definition.

2000-07-26 Mark Elbrecht <snowball3@bigfoot.com>

	* pexecute.c (pexecute) [__MSDOS__]: Change __GO32__ to
	__DJGPP__. Use P_WAIT instead of constant in the spawnv* call.
	Cast program to 'char *' in errmsg_arg assignment.
	(PWAIT_ERROR): Define.
	(pwait): Use PWAIT_ERROR.  Adjust DJGPP's status code to conform
	to DJGPP's WIF* macros.

2000-07-27  RodneyBrown  <RodneyBrown@pmsc.com>
	    Jeff Law <law@cygnus.com>

	* getcwd.c: Include string.h, stdlib.h for prototypes

	* Makefile.in (rename.o, waitpid.o): Depend on config.h
	* rename.c: Include config.h, unistd.h
	* waitpid.c: Include config.h, sys/wait.h

2000-07-24  Hans-Peter Nilsson  <hp@axis.com>

	* cplus-dem.c (work_stuff_copy_to_from): New.
	(delete_non_B_K_work_stuff): New.
	(delete_work_stuff): New.
	(mop_up): Break out work_stuff partly destruction to
	delete_non_B_K_work_stuff.
	(iterate_demangle_function): New.
	(demangle_prefix): Call iterate_demangle_function instead of
	demangle_function_name.  Leave handling of name-signature
	__-delimiters to iterate_demangle_function.
	(demangle_integral_value): Strip an optional
	following underscore cautiously.  Handle negative numbers.

2000-07-24  Daniel Berlin <dberlin@redhat.com>

	* cplus-dem.c (demangle_signature): Change if (GNU_DEMANGLING) to
	if (AUTO_DEMANGLING || GNU_DEMANGLING)

2000-07-21  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_ctor_dtor_name): Remove not-in-charge
	allocating ctor mangling.
	(demangle_array_type): Handle empty and non-constant array length.

2000-07-23  Michael Sokolov  <msokolov@ivan.Harhan.ORG>
	    Jeff Law <law@cygnus.com>

	* configure.in (AC_CHECK_HEADERS): Add time.h.
	(AC_HEADER_TIME): Add check.
	* configure, config.in: Regenerate.
	* getruntime.c: Portably #include <sys/time.h> and/or <time.h>.

	* configure.in (AC_CHECK_HEADERS): Add limits.h.
	* configure, config.in: Regenerate.
	* sort.c: Portably #include <limits.h> and/or <sys/param.h>.
	* strtol.c, strtoul.c: #include "config.h". Portably #include
	<limits.h> and/or <sys/param.h>.
	* Makefile.in (strtol.o, strtoul.o): Update dependencies.

	* aclocal.m4 (libiberty_AC_DECLARE_ERRNO): New macro.
	* configure.in (libiberty_AC_DECLARE_ERRNO): Add check.
	* configure, config.in: Regenerate.
	* pexecute.c, strtol.c, strtoul.c: Declare errno if necessary.

	* cp-demangle.c, mkstemps.c: #include <sys/types.h>.

2000-07-21  Mike Stump  <mrs@wrs.com>

	* Makefile.in (xexit.o): Add dependency for config.h in xexit.c.
	* (vasprintf.o): Add dependency for config.h in vasprintf.c.

2000-07-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cp-demangle.c (cp_demangle_type): Wrap in IN_LIBGCC2.

	* setenv.c (setenv): Initialize variable `ep'.

	* sigsetmask.c (abort): Prototype.

	* vasprintf.c: Include config.h.  Check ANSI_PROTOTYPES, not
	__STDC__ for stdarg.h include.
	(int_vasprintf): Prototype.
	(checkit): Prototype.  Use VPARAMS/ANSI_PROTOTYPES/VA_START in
	definition.  Cast `global_total_width' in comparison.
	(main): Prototype.  Return a value.

	* vfork.c (fork): Prototype.

	* xexit.c: Include config.h.

2000-07-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* cplus-dem.c (demangle_fund_type): Make 'dec' an unsigned int,
	and print it with %u.

2000-07-17  Hans-Peter Nilsson  <hp@axis.com>

	* testsuite/regress-demangle (failed test): Show result and
	expected output.

2000-07-07  Andrew Haley  <aph@cygnus.com>

	* cplus-dem.c (main): fflush() after emitting last char before
	waiting for input.

2000-06-28  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_encoding): Accept no substitutions.
	(demangle_name): Handle <substitution> followed by
	<unqualified-template-name>.
	(demangle_type): Follow special substitutions with
	<class-enum-type>
	(demangle_subtitution): Set template_p for special substitutions.
	(main): Fix typos.

2000-06-27  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_special_name): Swap base and derived
	class when demangling construction vtables.

2000-06-21  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c: Don't include ctype.h.
	(IS_DIGIT): New macro.
	(IS_ALPHA): Likewise.  Use IS_DIGIT and IS_ALPHA throughout
	instead of isdigit and isalpanum.
	(demangling_def): Make name and next const pointers.
	(STATUS_ALLOCATION_FAILED): New status code.
	(dyn_string_append_space): Handle failure in
	dyn_string_append_char.
	(int_to_dyn_string): Likewise.  Change return value to status_t.
	(string_list_new): Handle failure of dyn_string_init.
	(result_close_template_list): Change return type to status_t.
	Handle failure in dyn_string_append.
	(result_push): Change return value to status_t.  Handle failure in
	string_list_new.  Handle failure of result_push throughout.
	(substitution_add): Change return value to status_t.  Handle
	dyn_string failures.  Handle failure of substitution_add
	throughout.
	(template_arg_list_new): Return NULL on allocation failure.
	(result_append_string): Return STATUS_ALLOCATION_FAILED on error.
	Handle error result throughout.
	(result_append): Likewise.
	(result_append_char): Likewise.
	(result_append_space): Likewise.
	(demangling_new): Make argument a const pointer.  Handle
	allocation failures.
	(demangle_template_args): Handle failure in template_arg_list_new
	and result_close_template_list.
	(demangle_discriminator): Return if int_to_dyn_string fails.
	(cp_demangle): Likewise.
	(cp_demangle_type): New function.
	(cplus_demangle_new_abi): Don't call dyn_string_delete.  Abort on
	memory allocation failure.
	(main): Likewise.
	* dyn-string.c (RETURN_ON_ALLOCATION_FAILURE): Define if
	IN_LIBGCC2.
	(dyn_string_init): Change return value to int.  Handle
	RETURN_ON_ALLOCATION_FAILURE case.
	(dyn_string_new): Handle RETURN_ON_ALLOCATION_FAILURE case.
	(dyn_string_release): Delete the dyn_string.
	(dyn_string_resize): Handle RETURN_ON_ALLOCATION_FAILURE case.
	(dyn_string_copy): Change return type to int.
	(dyn_string_copy_cstr): Likewise.
	(dyn_string_prepend): Likewise.
	(dyn_string_prepend_cstr): Likewise.
	(dyn_string_insert): Likewise.
	(dyn_string_insert_cstr): Likewise.
	(dyn_string_append): Likewise.
	(dyn_string_append_cstr): Likewise.
	(dyn_string_append_char): Likewise.
	(dyn_string_substring): Likewise.

2000-06-09  Zack Weinberg  <zack@wolery.cumb.org>

	* cp-demangle.c (demangle_operator_name): Add spaces before
	names beginning with a letter: delete, delete[], new, new[],
	sizeof.
	(demangle_special_name): Handle TF <type> and TJ <type>.

Thu Jun  8 18:52:24 2000  Philippe De Muyter  <phdm@macqel.be>

	* cp-demangle.c (template_arg_list_new): Revert previous PARAMS patch.

Thu Jun  8 09:25:54 2000  Philippe De Muyter  <phdm@macqel.be>

	* cp-demangle.c (stdio.h): File included unconditionaly.
	(template_arg_list_new): Parameter list is PARAMS ((void)), not ().
	* dyn-string.c (stdio.h): File included.
	* partition.c (partition_print): No `&' needed to take the address of
	a function.

2000-06-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (ac_libiberty_warn_cflags): Add -pedantic.

	* choose-temp.c (try, choose_temp_base, make_temp_file): Constify.

	* cp-demangle.c (demangle_char): Change parameter from char to int.
	(demangle_expression, demangle_expr_primary): Remove extra
	semi-colon in prototype.

	* dyn-string.c (dyn_string_append_char): Change parameter from
	char to int.

	* memcmp.c (memcmp): Constify.

	* mkstemps.c (gcc_uint64_t): Mark GNUC `long long' case with
	__extension__.

	* partition.c (elem_compare): Prototype.  Don't cast away
	const-ness.

	* setenv.c (setenv): Use braces to avoid ambiguous `else'.

2000-06-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (cp-demangle.o): Depend on $(INCDIR)/demangle.h.

	* cp-demangle.c: Include demangle.h.
	(template_arg_list_new): DeANSIfy.
	(cp_demangle): Make static and add prototype.
	(operator_code, operators): Constify.
	(demangle_operator_name): Likewise for variables `p1', `p2' and `p'.

2000-06-05  Alex Samuel  <samuel@codesourcery.com>

	* cp-demangle.c (demangle_prefix): Cast argument to isdigit to
	unsigned char.
	(demangle_unqualified_name): Likewise.
	(demangle_number_literally): Likewise.
	(demangle_type): Likewise.
	(demangle_substitution): Likewise.
	(is_mangled_char): Likewise, for isalnum.

2000-06-04  Alex Samuel  <samuel@codesourcery.com>

	* Makefile.in (CFILES): Add cp-demangle.c and dyn-string.c.
	(REQUIRED_OFILES): Add cp-demangle.o and dyn-string.o.
	(cp-demangle.o): New dependency.
	(dyn-string.o): Likewise.

	* dyn-string.c: Move here from gcc/dyn-string.c.  Add new functions.

	* cplus-dem.c (libiberty_demanglers): Add initializer for new-ABI
	demangler.
	(cplus_demangle): Call cplus_demangle_new_abi if in new-ABI
	demangling mode.
	(gnu_new_abi_symbol_characters): New function.
	(main): Use gnu_new_abi_symbol_characters.  * cp-demangle.c: New
	file.
	* cp-demangle.c: New file.

Tue May 30 16:45:25 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* floatformat.c: Add name to each floatformat field.

Tue May 30 15:07:52 2000  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (objalloc.o): Depend on config.h

2000-05-29  Zack Weinberg  <zack@wolery.cumb.org>

	* hashtab.c, partition.c, sort.c, xmemdup.c: Include string.h
	if HAVE_STRING_H.
	* pexecute.c, xexit.c: Include stdlib.h if HAVE_STDLIB_H.
	* objalloc.c: Include config.h.  Include stdlib.h and don't
	declare malloc or free if HAVE_STDLIB_H.
	* strerror.c, strsignal.c: Include stdlib.h if HAVE_STDLIB_H,
	else declare malloc without prototype.  Include string.h if
	HAVE_STRING_H, else declare memset without prototype.  Don't
	include stddef.h.

2000-05-23  Mike Stump  <mrs@wrs.com>

	* Makefile.in (xmalloc.o): Add dependency for config.h, fixes make
	-j3.

2000-05-18  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* xmalloc.c: Include config.h for HAVE_SBRK definition.

2000-05-16  Horst von Brand <vonbrand@sleipnir.valparaiso.cl>

	* hashtab.c (hash_pointer): Delete low-order bits which are
	probably zero, also eliminate a warning on alpha.

2000-05-15  David Edelsohn  <edelsohn@gnu.org>

	* Makefile.in: Change "pic" to depend on $(PICFLAG), not
	on $(enable_shared).

2000-05-10  Jakub Jelinek  <jakub@redhat.com>

	* config.table: Use mh-sparcpic for sparc*-*-*.

2000-05-08  Nick Clifton  <nickc@cygnus.com>

	* Makefile.in (CFILES): Add strncmp.c.
	(NEEDED): Add strncmp.

2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (cplus_demangle_opname, demangle_function_name):
	Cast the arguments to `islower' to `unsigned char'.
	(print_demangler_list): Prototype.

Thu May  4 17:14:41 2000  Philippe De Muyter  <phdm@macqel.be>

	* sort.c (UCHAR_MAX): Provide fallback definition.

2000-04-29  Alexandre Oliva  <aoliva@cygnus.com>

	* Makefile.in (maintainer-clean-subdir): Fix handling of empty
	SUBDIRS.

2000-04-28  Kenneth Block  <block@zk3.dec.com>
	    Jason Merrill  <jason@casey.cygnus.com>

	* cplus-dem.c (libiberty_demanglers): New table for demangle styles.
	(cplus_demangle_set_style): New function for setting style.
	(cplus_demangle_name_to_style): New function to translate name.

2000-04-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* aclocal.m4: New file with new test libiberty_AC_FUNC_STRNCMP.

	* configure.in (AC_CHECK_HEADERS): Add sys/mman.h fcntl.h.
	(libiberty_AC_FUNC_STRNCMP): Invoke.

	* strncmp.c: New file.

Thu Apr 27 16:58:43 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* hashtab.c (htab_expand): Add prototype.
	(find_empty_slot_for_expand): Likewise.

2000-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* hashtab.c (hash_pointer, eq_pointer): Make definition static to
	match prototype.
	(htab_expand): Cast the return value of xcalloc.

2000-04-24  Mark Mitchell  <mark@codesourcery.com>

	* hashtab.c (hash_pointer): New function.
	(eq_pointer): Likewise.
	(htab_hash_pointer): New variable.
	(htab_eq_pointer): Likewise.

2000-04-23  Mark Mitchell  <mark@codesourcery.com>

	* sort.c (sort_pointers): Fix endianness bugs.

	* sort.c: New file.
	* Makefile.in (CFILES): Add sort.c
	(REQUIRED_OFILES): Add sort.o.
	(sort.o): New target.

2000-04-21  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* Makefile.in (*-subdir): Revamp slightly to avoid losing on
	4.3BSD systems.

Tue Apr 18 16:23:31 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* hashtab.c: Various minor cleanups.
	(htab_find_slot_with_hash): INSERT is now enum insert_option.
	(htab_find_slot): Likewise.

2000-04-16  Dave Pitts  <dpitts@cozx.com>

	* cplus-dem.c (cplus_demangle_opname): Changed to use islower.

2000-04-05  Richard Henderson  <rth@cygnus.com>

	* splay-tree.c (splay_tree_remove): New.

2000-03-30  Mark Mitchell  <mark@codesourcery.com>

	* hashtab.c (find_empty_slot_for_expand): Use hashval_t for hash
	codes.
	(htab_find_with_hash): Likewise.
	(htab_find_slot_with_hash): Likewise.

2000-03-29  Zack Weinberg  <zack@wolery.cumb.org>

	* hashtab.c (htab_find_with_hash): Avoid calculating hash2
	unless it will be used.  Rearrange loop for better
	optimization.
	(higher_prime_number): Add static prototype.

Thu Mar 16 01:33:58 2000  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (partition.o): Depend on config.h

2000-03-14  Bernd Schmidt  <bernds@cygnus.co.uk>

	* hashtab.c (find_empty_slot_for_expand): New function.
	(htab_expand): Use it instead of htab_find_slot.
	(htab_find_with_hash): Renamed from htab_find; now accepts extra
	argument HASH.
	(htab_find_slot_with_hash): Likewise for htab_find_slot.
	(htab_find): New wrapper function.
	(htab_find_slot): Likewise.
	(htab_traverse): Pass slot, not entry, to called function.

2000-03-09  Alex Samuel  <samuel@codesourcery.com>

	* Makefile.in (CFILES): Add partition.c.
	(REQUIRED_OFILES): Add partition.o.
	(partition.o): New rule.
	* partition.c: New file.

2000-03-09  Zack Weinberg  <zack@wolery.cumb.org>

	* hashtab.c (htab_create): Set del_f.
	(htab_delete, htab_empty, htab_remove_elt, htab_clear_slot):
	Use it.

2000-03-08  Zack Weinberg  <zack@wolery.cumb.org>

	* hashtab.c: Remove debugging variables (all_searches,
	all_collisions, all_expansions). Delete
	all_hash_table_collisions.
	(create_hash_table, delete_hash_table, empty_hash_table,
	find_hash_table_entry, remove_element_from_hash_table_entry,
	clear_hash_table_slot, traverse_hash_table, hash_table_size,
	hash_table_elements_number, hash_table_collisions): Rename to:
	htab_create, htab_delete, htab_empty, htab_find_slot,
	htab_remove_elt, htab_clear_slot, htab_traverse, htab_size,
	htab_elements, htab_collisions.
	(htab_find): New function, handles common case where you don't
	plan to add or delete an entry.
	(htab_expand): Don't create a whole new table, just a new
	entry vector.
	(htab_find_slot): Simplify logic.

1999-08-03  Ian Lance Taylor  <ian@zembu.com>

	* floatformat.c: Add casts to avoid signed/unsigned warnings.
	* pexecute.c: Add ATTRIBUTE_UNUSED as needed on Unix.

	* Makefile.in (install_to_libdir): Change $(TARGETLIB).n to
	$(TARGETLIB)n so it works on MSDOS.
	(install_to_tooldir): Likewise.

1999-07-21  Ian Lance Taylor  <ian@zembu.com>

	From Mark Elbrecht:
	* makefile.dos: Remove; obsolete.
	* configure.bat: Remove; obsolete.

1999-07-11  Ian Lance Taylor  <ian@zembu.com>

	* splay-tree.c (splay_tree_insert): Add initialization to avoid
	warning.

2000-01-04  Mumit Khan  <khan@xraylith.wisc.edu>

	* pexecute.c: Conditionally include string.h.
	(fix_argv): Handle embedded whitespace in args for Mingw32.

2000-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (ac_libiberty_warn_cflags): Turn on warnings if
	we're using gcc.

	* Makefile.in (COMPILE.c): Add @ac_libiberty_warn_cflags@

1999-12-27  Geoff Keating  <geoffk@cygnus.com>

	* vasprintf.c (int_vasprintf): Don't re-read the format character
	as this mishandles strings like '%%s'.

1999-12-05  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.c (splay_tree_new): Use struct splay_tree_node_s
	rather than struct splay_tree_node.
	(splay_tree_insert): Use struct splay_tree_s rather than struct
	splay_tree.

Sun Nov 28 00:59:39 1999  Philippe De Muyter  <phdm@macqel.be>

	* hashtab.c (sys/types.h): File included.

1999-11-22  Jason Merrill  <jason@casey.cygnus.com>

	* strtoul.c, strtol.c, random.c: Remove advertising clause from
	BSD license, pursuant with

	ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change

Wed Nov 10 09:42:39 1999  Jeffrey A Law  (law@cygnus.com)

	* hashtab.c: Include stdio.h.

Mon Nov  8 09:23:41 1999  Jeffrey A Law  (law@cygnus.com)

	* hashtab.c (traverse_hash_table): Protect prototype with PARAMS.

Tue Nov  2 03:23:13 1999  Philippe De Muyter  <phdm@macqel.be>

	* xstrdup (sys/types.h): Include this file.

1999-10-28  Nathan Sidwell  <nathan@acm.org>

	* Makefile.in (SUBDIRS): New macro.
	(mostlyclean, clean, distclean, maintainer-clean): Adjust to
	avoid multiple subdirectory cleaning.
	(*-subdir): Use SUBDIRS.

1999-10-25  Jim Kingdon  <http://developer.redhat.com/>

	* cplus-dem.c: Move declarations of standard_symbol_characters and
	hp_symbol_characters inside #ifdef MAIN to avoid compiler
	warnings.

1999-10-23 08:51 -0700  Zack Weinberg  <zack@bitmover.com>

	* hashtab.c (find_hash_table_entry): When returning a
	DELETED_ENTRY slot, change it to EMPTY_ENTRY first.
	(clear_hash_table_slot): New function which deletes an entry
	by its position in the table, not its value.
	(traverse_hash_table): New function which calls a hook
	function for every live entry in the table.

1999-10-19  Mark Mitchell  <mark@codesourcery.com>

	* cplus-dem.c (INTBUF_SIZE): New macro.
	(string_append_template_idx): New function.
	(demangle_expression): Likewise.
	(demangle_integral_value): Use it.
	(demangle_real_value): New function, split out from ...
	(demangle_template_value_parm): ... here.  Use
	string_append_template_idx.  Use demangle_real_value.
	(demangle_template): Use string_append_template_idx.
	(demangle_qualified): Use consume_count_with_underscores.
	(get_count): Tweak formatting.
	(do_type): Use string_append_template_idx.

1999-10-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* calloc.c: Add a public domain notice.

Mon Oct 18 02:30:47 1999  Philippe De Muyter  <phdm@macqel.be>

	* setenv.c (sys/types.h, stdio.h): Include those files unconditionaly.

Fri Oct 15 01:47:51 1999  Vladimir Makarov  <vmakarov@loony.cygnus.com>

	* Makefile.in (CFILES): Add hashtab.c
	(REQUIRED_OFILES): Add hashtab.o
	(hashtab.o): Add dependencies.
	* hashtab.c: New file

Wed Oct 13 01:16:47 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* basename.c (DIR_SEPARATOR): New macro.
	(DIR_SEPARATOR_2): Likewise.
	(HAVE_DOS_BASED_FILESYSTEM): Likewise.
	(IS_DIR_SEPARATOR): Likewise.
	(main): Handle MSDOS style pathname.

1999-10-11  Mark Mitchell  <mark@codesourcery.com>

	* cplus-dem.c (do_type): Handle pointer to member types whose
	enclosing classes have namespace scope.

Sun Oct 10 01:23:50 1999  Marc Espie <espie@cvs.openbsd.org>

	* config.table:  Provide a backup shell for executing move-if-change.

1999-10-02  Mark Mitchell  <mark@codesourcery.com>

	* xmalloc.c (xmalloc): Fix spelling error.
	(xcalloc, xrealloc): Likewise.

1999-10-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (fancy_abort, demangle_integral_value,
	demangle_arm_hp_template, recursively_demangle,
	standard_symbol_characters, hp_symbol_characters, main): Add prototype.
	(program_name, program_version, fatal): Constify a char*.
	(usage, fatal): Mark with ATTRIBUTE_NORETURN.
	(main): Call return, not exit.

1999-09-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* choose-temp.c: Remove obsolete comment about gcc.
	(make_temp_file): Constify a char*.

Wed Sep  8 20:03:28 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* xmemdup.c: Include sys/types.h.

1999-09-07  Jeff Garzik  <jgarzik@pobox.com>

	* xmemdup.c: New xmemdup function.
	* Makefile.in, makefile.vms, vmsbuild.com:  Use xmemdup.[co].

Tue Sep  7 23:32:18 1999  Linas Vepstas  <linas@linas.org>

	* config.table: Add openedition target.
	* config/mh-openedition: New file.

Thu Sep  2 01:36:12 1999  Marc Espie <espie@cvs.openbsd.org>

	* pexecute.c (pexecute):  Fill in temp_base when needed.

1999-08-31  Richard Henderson  <rth@cygnus.com>

	* getpwd.c: Check HAVE_GETCWD before defining it away.

1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (CFILES): Add calloc.c and getpwd.c.
	(REQUIRED_OFILES): Add getpwd.o.
	(getpwd.o): Add target.

	* configure.in (AC_PREREQ): Bump to 2.13.
	(AC_CHECK_HEADERS): Add check for <sys/stat.h>.

	* getpwd.c: New file, moved here from gcc.

1999-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (gnu_special): Cast a `size_t' to `long' when
	comparing against a signed quantity.
	(arm_special): Likewise.
	(demangle_fund_type): Likewise.
	(do_hpacc_template_const_value): Mark parameter `work' with
	ATTRIBUTE_UNUSED.
	(main): Constify variable `valid_symbols'.

Tue Aug 24 02:50:45 1999  Philippe De Muyter  <phdm@macqel.be>

	* strtoul.c (strtoul): Add parentheses around && within ||.

Fri Aug  6 23:32:29 1999  Daniel Jacobowitz <drow@drow.them.org>

	* Makefile.in (FLAGS_TO_PASS): Include prefix, exec_prefix,
	libdir, libsubdir and tooldir.

1999-08-01  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.c (splay_tree_insert): Return the new node.

1999-07-14  Richard Henderson  <rth@cygnus.com>

	* argv.c: Include stdlib.h and string.h instead of
	prototyping directly.
	* choose-temp.c: Conditionally include string.h.

1999-07-12  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (NEEDED): Add bcmp, bcopy, bzero.

1999-07-11  Ian Lance Taylor  <ian@zembu.com>

	* splay-tree.c (splay_tree_insert): Add initialization to avoid
	warning.

1999-07-07  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (needed-list): Only include stuff we actually need
	for libstdc++.

1999-06-21  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* configure.in (checkfuncs): Add gettimeofday.
	* config.in, configure: Regenerated.

Mon Jun 21 05:56:01 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* configure.in (*-*-uwin*): UWIN has sys_{errlist,nerr} even if
	the test fails.
	* configure: Regenerate.

1999-06-10  Mike Stump  <mrs@wrs.com>

	* Makefile.in (setenv.o): Add config.h dep for setenv.o to fix
	parallel builds.

1999-05-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* putenv.c: Include ansidecl.h to define `const'.
	* setenv.c: Likewise.

Wed May 26 03:58:20 1999  "Melissa O'Neill" <oneill@cs.sfu.ca>

	* Makefile.in (CFILES): Add putenv.c and setenv.c.
	* configure.in (funcs): Add putenv and setenv.
	(AC_CHECK_FUNCS): Check for putenv and setenv.
	* configure: Rebuilt.
	* putenv.c setenv.c: New files.

	* getcwd.c (getcwd): If pathname is NULL, then obtain SIZE
	bytes of space using malloc.

Mon May 17 01:42:34 1999  Stu Grossman  <grossman@babylon-5.cygnus.com>

	* cplus-dem.c (demangle_fund_type (near 'I' case)): Don't advance
	the *mangled pointer beyond the end of the string.  Clean up code to
	match prevailing coding style.

1999-05-13  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* tmpnam.c (L_tmpnam): Fix typo.

Thu May 13 01:14:46 1999 Marc Espie <espie@cvs.openbsd.org>

	* cplus-dem.c (standard_symbol_characters): Renamed from
	standard_symbol_alphabet.  No longer modify TABLE.
	(hp_symbol_characters): Renamed from hp_symbol_alphabet.  No longer
	modify TABLE.
	(main): Corresponding changes.  Use strchr to determine if a
	character is valid.

1999-05-11  Jim Blandy  <jimb@zwingli.cygnus.com>

	* cplus-dem.c (main): Use table lookup to distinguish identifier
	characters from non-identifier characters.
	(standard_symbol_alphabet, hp_symbol_alphabet): New functions.

Thu May  6 20:34:42 1999  Fred Fish  <fnf@be.com>

	* configure.in (sys/resource.h): Add to AC_CHECK_HEADERS list.
	* getruntime.c: Only attempt to include sys/resource.h and
	use getrusage if both HAVE_GETRUSAGE and HAVE_SYS_RESOURCE_H
	are defined.

Mon Apr 26 01:36:06 1999  Donn Terry (donn@interix.com)

	* configure.in (alloca detection): Handle alloca directly for interix.
	* configure: Rebuilt.

Sun Apr 25 01:18:21 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* choose-temp.c (DIR_SEPARATOR): Use '\\' only for native windows32.

1999-04-20  Jim Blandy  <jimb@zwingli.cygnus.com>

	Fix from Dale Hawkins:
	* cplus-dem.c (mop_up): Set typevec_size to zero, so it'll be
	reallocated properly if we use it again.

	* cplus-dem.c (demangle_fund_type): Check for buffer overrun.  Be
	stricter about syntax.  Always null-terminate string.

Thu Apr 15 23:00:55 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* configure.in (checkfuncs): Check for sbrk.
	* config.in: Rebuilt.
	* configure: Likewise.
	* xmalloc.c: Use HAVE_SBRK instead of the host specific definitions.

1999-04-12  Jim Blandy  <jimb@zwingli.cygnus.com>

	Fix from Marcus Daniels:
	* cplus-dem.c (demangle_fund_type): Don't run off the end of the
	identifier looking for another underscore.

Sun Apr 11 23:20:59 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* pexecute.c: Change all references to __UWIN__ to _UWIN.
	* xmalloc.c: Likewise.
	(xcalloc): UWIN has sbrk.
	(xrealloc): Fix guard macro.

1999-04-11  Richard Henderson  <rth@cygnus.com>

	* alloca-conf.h (alloca) [C_ALLOCA]: Don't use Gcc builtin
	or <alloca.h>.
	* clock.c (GNU_HZ): New definition.
	(clock): Use it.
	* getruntime.c: Likewise.

	* config.table: Use mh-beos.
	* config/mh-beos: New file.

1999-04-11  Mark Mitchell  <mark@codesourcery.com>

	* cplus-dem.c (demangle_template_value_parm): Handle
	pointers-to-members.
	(do_type): Handle template parameters as qualifiers.

1999-04-01  Jim Blandy  <jimb@zwingli.cygnus.com>

	* cplus-dem.c: Attempt to handle overflows in counts with some
	semblance of grace.
	(consume_count): Detect overflows.  Return -1 to indicate errors,
	instead of zero.
	(demangle_template_value_parm, demangle_template): Handle change
	to consume_count's return convention.

1999-04-05  Tom Tromey  <tromey@cygnus.com>

	* testsuite/regress-demangle: New file.
	* testsuite/demangle-expected: New file.

	* Makefile.in (all, check, installcheck, info, install-info,
	clean-info, dvi, install, etags, tags, mostlyclean, clean,
	distclean, maintainer-clean, realclean): Depend on corresponding
	`-subdir' target.
	(all-subdir check-subdir installcheck-subdir info-subdir
	install-info-subdir clean-info-subdir dvi-subdir
	install-info-subdir etags-subdir mostlyclean-subdir clean-subdir
	distclean-subdir maintainer-clean-subdir): New target.
	* testsuite/Makefile.in: New file.
	* configure: Rebuilt.
	* configure.in: Create testsuite/Makefile.

1999-04-02  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.h (splay_tree_compare_pointers): Define.

1999-03-30  Mark Mitchell  <mark@codesourcery.com>

	* splay-tree.c (splay_tree_compare_ints): Define.

1999-03-30  Tom Tromey  <tromey@cygnus.com>

	* cplus-dem.c (consume_count): If `count' wraps, return 0 and
	don't advance input pointer.
	(demangle_class_name): If consume_count didn't find a count, do
	nothing.  Don't bother with `strlen' sanity check; consume_count
	does it for us.

1999-03-16  Stan Shebs  <shebs@andros.cygnus.com>

	From Art Haas  <ahaas@neosoft.com>:
	* cplus-dem.c (demangle_prefix): Don't grab all the '__' strings
	when doing arm or hp style.
	(demangle_nested_args): Decr forgetting_types field when done.

Thu Mar 11 01:22:58 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* pexecute.c (__CYGWIN32__): Rename to
	(__CYGWIN__): this.
	* xmalloc.c: Likewise.

	Changes to support i386-pc-uwin.
	* configure.in (*-*-uwin*): Workaround for vfork bug.
	* configure: Regenerate.
	* pexecute.c (pexecute): Be like standard Unix.
	(pwait): Likewise.
	* xmalloc.c (first_break): Define.
	(xmalloc_set_program_name): Use.
	(xmalloc): Use.

Thu Mar 11 01:07:55 1999  Franz Sirl <Franz.Sirl-kernel@lauterbach.com>

	* config.table: Cleanup and add mh-*pic handling for alpha, arm, powerpc

Sun Feb 28 22:30:44 1999  Geoffrey Noer  <noer@cygnus.com>

	* config.table: Check cygwin*, not cygwin32*.

Tue Feb  9 16:39:01 1999  Dave Brolley  <brolley@cygnus.com>

	* Makefile.in: Change mkstemp -> mkstemps.

Tue Feb  9 01:12:27 1999  Marc Espie <Marc.Espie@liafa.jussieu.fr>

	* Makefile.in (REQUIRED_OFILES): remove mkstemp.o
	* configure.in (funcs): Check for and conditionally add mkstemps to
	the list of functions libiberty will provide.
	* configure: Rebuilt.

Wed Feb  3 00:01:15 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* clock.c (HZ): Define in terms of (ISO C) CLOCKS_PER_SEC on
	platforms that don't have HZ.
	* getruntime.c (HZ): Likewise.

Sat Jan 30 13:28:04 1999  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (xstrdup.o): Depend on config.h.

Wed Jan 13 07:26:44 1999  H.J. Lu  (hjl@gnu.org)

	* cplus-dem.c (mop_up): Set work->previous_argument to NULL after
	freeing it.

Wed Jan 13 14:16:36 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* xstrdup.c (xstrdup): Switch from strcpy to memcpy for speed.

Tue Jan  5 15:58:29 1999  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* Makefile.in (CFILES): fix typo, splay-tree.c instead of
	splay-tree.o.

1999-01-04  Jason Molenda  (jsm@bugshack.cygnus.com)

	* configure.in: Require autoconf 2.12.1 or higher.

1998-12-30  Michael Meissner  <meissner@cygnus.com>

	* random.c (NULL): Don't redefine NULL if it is already defined.

Tue Dec 22 09:43:35 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* argv.c (buildargv): Cast the result of alloca in assignment.

	* choose-temp.c: Include stdlib.h.

	* cplus-dem.c (demangle_arm_pt): Remove unused prototype.
	(snarf_numeric_literal): Constify first parameter.
	(code_for_qualifier): Avoid a gcc extension, make the parameter an
	int, not a char.
	(demangle_qualifier): Likewise.
	(demangle_signature): Cast the argument of a ctype function to
	unsigned char.
	(arm_pt): Add parens around assignment used as truth value.
	(demangle_arm_hp_template): Constify variable `args'.
	(do_hpacc_template_const_value): Cast the argument of a ctype
	function to unsigned char.
	(do_hpacc_template_literal): Remove unused variable `i'.
	(snarf_numeric_literal): Constify parameter `args'.
	Cast the argument of a ctype function to unsigned char.

	* floatformat.c (floatformat_to_double): Add explicit braces to
	avoid ambiguous `else'.

	* fnmatch.c (fnmatch): Change type of variables `c', `c1',
	`cstart' and `cend' to unsigned char.  Cast the argument of macro
	`FOLD', which uses ctype functions, to unsigned char.

	* objalloc.c (free): Add prototype.

Sun Dec 20 16:03:46 1998  Hans-Peter Nilsson  <hp@axis.se>

	* Makefile.in (CFILES): Fix typo: splay-tree.c, not splay-tree.o

Fri Dec 18 17:50:18 1998  David Taylor  <taylor@texas.cygnus.com>

	* cplus-dem.c (demangle_arm_pt): remove declaration -- function
	doesn't exist.
	(do_hpacc_template_literal): remove unused variable `i'.

Fri Dec 18 16:11:43 EST 1998  Andrew MacLeod  <amacleod@cygnus.com>

	* cplus-dem.c (demangle_fund_type): Process CV and u codes before
	bumping the pointer we read from. Also prepend these codes,
	as we do in other places.

1998-12-18  Nick Clifton  <nickc@cygnus.com>

	* cplus-dem.c (demangle_arm_hp_template): Make variable 'args' be
	'const char *' in order to match its usage when calling siblings.
	(snarf_numeric_literal): Make first arg 'const char **' in order
	to match usage.

Mon Dec 14 09:55:50 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* choose-temp.c: Don't check IN_GCC anymore.

	* floatformat.c (floatformat_from_double): Use `const', not `CONST'.
	* memchr.c (memchr): Likewise.
	* memcpy.c (memcpy): Likewise.
	* memmove.c (memmove): Likewise.

	* mkstemp.c: Don't check IN_GCC anymore.
	* pexecute.c: Likewise.
	* splay-tree.c: Likewise.

	* strchr.c (strchr): Use `const', not `CONST'.
	* strrchr.c (strrchr): Likewise.
	* strtol.c (strtol): Likewise.
	* strtoul.c (strtoul): Likewise.

Fri Dec  4 13:51:04 1998  David Taylor   <taylor@texas.cygnus.com>
			  Elena Zannoni  <ezannoni@cygnus.com>
			  Stan Shebs     <shebs@cygnus.com>
			  Edith Epstein  <eepstein@cygnus.com>
			  Andres MacLeod <amacleod@cygnus.com>
			  Satish Pai	 <pai@apollo.hp.com>

	* HP aCC demangling support.
	* cplus-dem.c
	(main): Remove default to HP style demangling, set to EDG
	demangling correctly when -edg specified; set the demangling style
	when user specifies 'edg'. Set strip_underscore to
	prepends_underscore, if not HPUXHPPA.  Set
	current_demangling_style to hp_demangling if HPUXHPPA.  Set
	current demangling style correctly if the switch is hp.  Read
	label correctly also in the HP style case.
	(work_stuff): add temp_start field; add field for volatile member
	function.
	(arm_pt): handle ARM_DEMANGLING and EDG_DEMANGLING styles; HP
	style for this case is the same as ARM.
	(demangle_args): handle EDG_DEMANGLING style; support HP style.
	(demangle_arm_hp_template): new function. (It was
	demangle_arm_pt.); check and set value of temp_start field in
	multiple places. Also, when ceching for end of template args,
	check to see if at end of static member of template class.
	(demangle_class): new local variable : save_class_name_end Don't
	include template args in string defining class.
	(demangle_class_name): use demangel_arm_hp_template.
	(demangle_function_name): handle case where demangling style is
	HP_DEMANGLING and currently point at an 'X' in the mangled name.
	Handle EDG_DEMANGLING style.  Handle constructor and destructor
	ops for HP style.
	(demangle_prefix): handle EDG_DEMANGLING and ARM_DEMANGLING
	styles.  global destructor and constructor for HP style are same
	as for ARM style. Same for local variables.
	(demangle_qualified): handle EDG_DEMANGLING style.
	(demangle_signature): add case for volatile member function.  For
	cases '1' - '9' : initialize the temp_start field to -1 and handle
	the EDG_DEMANGLING style.  for case 'F' : handle EDG_DEMANGLING
	and AUTO_DEMANGLING styles.  If expecting a function and managed
	to demangle the funct args, then handle the LUCID_DEMANGLING,
	ARM_DEMANGLING, and EDG_DEMANGLING styles.  Add case for local
	class name after "Lnnn_ in HP style case. HP style too needs to
	forget types.  _nnn is OK for HP style, so don't report failure.
	(do_hpacc_template_const_value): new function. Handle template's
	value param for HP/aCC.
	(do_hpacc_template_literal): new function.  Handle a template's
	literal parameter for HP aCC.
	(recursively_demangle): new function
	(snarf_numeric_literal): new function.
	(usage): add 'edg' to the list of demangling styles; add hp switch
	to message.

Sat Nov 28 17:25:22 1998  Christopher Faylor <cgf@cygnus.com>

	* pexecute.c: Remove obsolete ifdefed cygwin code.

Fri Nov 27 13:26:06 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* choose-temp.c: Always include libiberty.h.  Avoid redundancies.
	* cplus-dem.c: Likewise.  Conform to libiberty.h.
	* pexecute.c: Likewise.
	* splay-tree.c: Likewise.

1998-11-25  Mike Stump  <mrs@wrs.com>

	* Makefile.in (splay-tree.o): Add config.h dependency.

Mon Nov 23 16:59:49 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	*  configure.in: Use AC_PREREQ(2.12.1).

1998-11-16  Benjamin Kosnik  <bkoz@haight.constant.com>

	* cplus-dem.c (demangle_fund_type): Add demangling for C9x types.

Thu Nov 19 22:15:50 1998  Jeffrey A Law  (law@cygnus.com)

	* mpw.c (mpw_access): Add missing parens.

Thu Nov 19 12:59:21 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Call AC_HEADER_SYS_WAIT.

	* pexecute.c: Include sys/wait.h when !IN_GCC.

Thu Nov 19 14:38:20 1998  Geoffrey Noer  <noer@cygnus.com>

	* pexecute.c: revert back to checking old Cygwin
	preprocessor symbol until some time has passed.

Wed Nov 18 08:52:26 1998  Christopher Faylor <cgf@cygnus.com>

	* pexecute.c: Reorganize WIN32 case to accomodate Cygwin
	since it will now support similar constructs.

Fri Nov 13 19:18:05 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Check for calloc.

	* calloc.c: New	file.

	* xmalloc.c (xcalloc): New function.

Fri Nov 13 08:51:46 EST 1998  Andrew MacLeod  <amacleod@cygnus.com>

	*cplus-dem.c (demangle_prefix): Use the last "__"
	in the mangled name when looking for the signature. This allows
	template names to begin with "__".

1998-11-08  Mark Mitchell  <mark@markmitchell.com>

	* cplus-dem.c (type_kind_t): Add tk_reference.
	(demangle_template_value_parm): Handle it.
	(do_type): Use it for references, instead of tk_pointer.

	* cplus-dem.c (demangle_template_value_parm): Use cplus_demangle,
	not internal_cplus_demangle.

Sat Nov  7 16:02:10 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* choose-temp.c: Don't include gansidecl.h.
	* mkstemp.c: Likewise.
	* pexecute.c: Likewise.

Mon Nov  2 15:05:33 1998  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: detect cygwin* instead of cygwin32*
	* configure: regenerate

Mon Nov  2 10:22:01 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* pexecute.c: Check HAVE_CONFIG_H, not IN_GCC, when determining
	whether to include config.h.  Possibly include unistd.h in the
	!IN_GCC case.  Define VFORK_STRING as a printable function call
	for error messages (either "vfork" or "fork".)  If HAVE_VFORK_H is
	defined, include vfork.h.  If VMS is defined, define vfork()
	appropriately.  Remove vfork check on USG, we're using autoconf.
	(pexecute): Set `errmsg_fmt' to VFORK_STRING instead of checking
	locally what string to use.

1998-10-26  Mark Mitchell  <mark@markmitchell.com>

	* splay-tree.c: Tweak include directives to make sure declarations of
	xmalloc and free are available.

1998-10-25  Mark Mitchell  <mark@markmitchell.com>

	* cplus-dem.c (gnu_special): Fix handling of virtual tables in
	anonymous namespaces.

1998-10-23  Mark Mitchell  <mark@markmitchell.com>

	* cplus-dem.c (work_stuff): Replace const_type and volatile_type
	with type_quals.
	(TYPE_UNQUALIFIED): New macro.
	(TYPE_QUAL_CONST): Likewise.
	(TYPE_QUAL_VOLATILE): Likewise.
	(TYPE_QUAL_RESTRICT): Likewise.
	(code_for_qualifier): New function.
	(qualifier_string): Likewise.
	(demangle_qualifier): Likewise.
	(internal_cplus_demangle): Use them.
	(demangle_signature): Likewise.
	(demangle_template_value_parm): Likewise.
	(do_type): Likewise.
	(demangle_fund_type)): Likewise.

Thu Oct 22 19:58:43 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* splay-tree.c (splay_tree_foreach_helper): Make definition static
	to match prototype.

1998-10-21  Mark Mitchell  <mark@markmitchell.com>

	* splay-tree.c: New file.
	* Makefile.in (CFILES): Add it.
	(REQUIRED_OFILES): Likewise.
	(splay-tree.o): Add dependencies.

Tue Oct 20 12:29:02 1998  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* cplus-dem.c (demangle_qualified): Fix off-by-one when checking
	range of 'K' index.

Thu Oct 15 18:51:12 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* choose-temp.c: Prototype mkstemps() when IN_GCC.

	* cplus-dem.c (consume_count): Cast argument of ctype macro to
	`unsigned char'.
	(cplus_demangle_opname): Cast the result of `strlen' to (int) when
	comparing against one.
	(cplus_mangle_opname): Likewise.
	(demangle_integral_value): Cast argument of ctype macro to
	`unsigned char'.
	(demangle_template_value_parm): Likewise.
	(demangle_template): Initialize variable `bindex'.  Cast the
	result of `strlen' to (int) when comparing against one.  Remove
	unused variable `start_of_value_parm'.
	(demangle_class_name): Cast the result of `strlen' to (int) when
	comparing against one.
	(demangle_prefix): Cast argument of ctype macro to `unsigned char'.
	(gnu_special): Likewise.  Cast the result of `strlen' to (int)
	when comparing against one.
	(demangle_qualified): Cast argument of ctype macro to `unsigned char'.
	(get_count): Likewise.
	(do_type): Likewise.  Cast the result of `strlen' to (int) when
	comparing against one.
	(demangle_fund_type): Cast argument of ctype macro to `unsigned char'.
	(demangle_function_name): Cast the result of `strlen' to (int)
	when comparing against one.

	* mkstemp.c (mkstemps): Cast variable `len' to (int) when
	comparing against one.

Tue Oct 13 23:51:51 1998  Jeffrey A Law  (law@cygnus.com)

	* mkstemp.c: Check HAVE_SYS_TIME_H before including sys/time.h
	* configure.in (AC_CHECK_HEADERS): Check for sys/time.h too.
	* config.in, configure: Rebuilt.

	* getopt.c: Check HAVE_STRINGS_H before including strings.h.
	* configure.in (AC_CHECK_HEADERS): Check for strings.h too.
	* config.in, configure: Rebuilt.

Mon Oct 12 19:15:59 1998  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: in comment, call AC_EXEEXT instead of AM_EXEEXT

Sun Oct 11 17:36:06 1998  Michael Tiemann  <tiemann@holodeck.cygnus.com>

	* Makefile.in (cplus-dem.o, obstack.o): Depend upon config.h.

Thu Oct  8 23:42:08 1998  Jeffrey A Law  (law@cygnus.com)

	* Merge egcs & devo libiberty.

1998-09-08  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* cplus-dem.c (demangle_arm_pt): Demangle anonymous namespaces.

Mon Sep  7 23:29:01 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mkstemp.c: Include config.h even when not IN_GCC.  Wrap header
	inclusions inside HAVE_*_H macros.  Include ansidecl.h when not
	IN_GCC.

	* vasprintf.c: Include stdarg.h/varargs.h first.

	* vprintf.c: Likewise.

Sat Sep  5 03:24:49 1998  Jeffrey A Law  (law@cygnus.com)

	* pexecute.c: Updates from gcc.  Copy in gcc has been removed.  This
	is the canonical copy.  Define ISSPACE if !IN_GCC.
	* alloca.c, vfprintf.c, choose-temp.c, mkstemp.c, getopt.c: Similarly.
	* getopt1.c, obstack.c: Similarly.
	* Makefile.in: Build mkstemp.o

Tue Sep  1 23:12:47 1998  Christopher Faylor <cgf@cygnus.com>

	* configure.in: Include asprintf in list of functions known not
	to be in newlib.
	* configure: Rebuild.

Wed Aug 19 14:05:01 1998  Mumit Khan  <khan@xraylith.wisc.edu>

	* cplus-dem.c (work_stuff): Add dllimported.
	(demangled_prefix): Mark symbols imported from PE DLL.
	(internal_cplus_demangled): Handle.

1998-08-17  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (do_type): Fix simple array handling.  If we fail,
	stay failed.

Mon Aug 17 10:40:34 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c: Include config.h if it exists.  Also, only
	prototype malloc/realloc if we can't get stdlib.h.

Sat Aug 15 16:15:01 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Switch back to checking --with-target-subdir when
	deciding whether to check for newlib, undoing part of July 15
	change.
	* configure: Rebuild.

Thu Aug 13 16:47:38 1998  Mark Mitchell  <mark@markmitchell.com>

	* cplus-dem.c (type_kind_t): New type.
	(demangle_template_value_parm): Add type_kind_t parameter.  Rely
	on this paramter, rather than demangling the type again.
	(demangle_integral_value): Pass tk_integral.
	(demangle_template_: Pass the value returned from do_type.
	(do_type): Return a type_kind_t.  Pass tk_integral to
	demangle_template_value_parm for array bounds.
	(demangle_fund_type): Likewise.

	Also incorporate from GCC version:

	Tue Jul 21 13:28:19 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (do_type): Use demangle_template_value_parm for arrays.

Thu Aug 13 16:47:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (demangle_nested_args): Make function definition
	static to match the prototype.

Tue Jul 28 11:33:09 1998  Mark Mitchell  <mark@markmitchell.com>

	* cplus-dem.c (type_kind_t): New type.
	(demangle_template_value_parm): Add type_kind_t parameter.  Rely
	on this paramter, rather than demangling the type again.
	(demangle_integral_value): Pass tk_integral.
	(demangle_template_: Pass the value returned from do_type.
	(do_type): Return a type_kind_t.  Pass tk_integral to
	demangle_template_value_parm for array bounds.
	(demangle_fund_type): Likewise.

	Also incorporate from GCC version:

	Tue Jul 21 13:28:19 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (do_type): Use demangle_template_value_parm for arrays.

Mon Jul 27 12:16:08 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (ALLOCA): New variable.
	($(TARGETLIB)): Add $(ALLOCA) to library.
	(needed-list): Add $(ALLOCA).
	($(ALLOCA)): Depend upon stamp-picdir.

Sun Jul 19 08:23:17 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (demangle_nested_args): Make function definition
	static to match the prototype.

Wed Jul 15 00:12:58 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Check --with-cross-host rather than
	--with-target-subdir when deciding whether build uses a cross
	compiler, and when deciding where to install the library.
	* configure: Rebuild.

Sun Jul 12 01:27:05 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (demangle_nested_args): Return a value.

Sat Jul 11 16:19:48 1998  Mark Mitchell  <mark@markmitchell.com>

	* cplus-dem.c (string): Move definition before work_stuff.
	(work_stuff): Add volatile_type, forgetting_types,
	previous_argument, and nrepeats fields.
	(SCOPE_STRING): New macro.
	(demangle_template): Add `remember' parameter.  Add comment.
	Register the `B' code type here, if remembering.  Tidy.  Fix crash
	on NULL tmpl_argvec.  Be consistent with use of tname/trawname.
	(demangle_nested_args): New function.
	(internal_cplus_demangle): Handle volatile-qualified member
	functions.
	(mop_up): Delete the previous_argument string if present.
	(demangle_signature): Tidy.  Handle volatile-qualified member
	functions.  Handle back-references using the `B' code.  Use extra
	parameter to demangle_template and SCOPE_STRING where appropriate.
	(demangle_template_value_parm): Fix thinko; 'B' is not an integral
	code.
	(demangle_class): Use SCOPE_STRING.
	(gnu_special): Pass additional argument to demangle_template.
	Use SCOPE_STRING.
	(demangle_qualified): Save qualified types for later
	back-references.  Handle constructors and destructors for template
	types correctly.
	(do_type): Tidy.  Use SCOPE_STRING.  Pass extra argument to
	demangle_template.  Use demangled_nested_args.  Don't remember
	qualified types here; that's now done in demangle_qualified.
	Similarly for templates.
	(do_arg): Improve commment.  Handle 'n' repeat code.
	(remember_type): Check forgetting_types.
	(demangle_args): Deal with 'n' repeat codes.  Tidy.

Thu Jul  2 16:26:24 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config.table: Only use mh-fbsd21 on *-*-freebsd2.2.[012], not on
	*-*-freebsd2.2.*.  From Dmitrij Tejblum <tejblum@arc.hq.cti.ru>.

Mon Jun 15 16:29:01 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in (setobjs): Correct quoting error in cygwin32 case.
	From Chris Faylor <cgf@cygnus.com>.

Mon Jun  1 13:47:55 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* obstack.c: Update to latest FSF version.

Mon Jun  1 14:17:36 1998  Mike Stump  <mrs@wrs.com>

	* Makefile.in: Add a dependency on stamp-picdir for the
	objects, so that we can do a parallel build.

Sat May 30 22:17:13 1998  Mumit Khan  <khan@xraylith.wisc.edu>

	* configure.in (checkfuncs): Add missing "'".

Fri May 29 12:40:41 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* obstack.c (_obstack_memory_used):  Elide this function if we're
	on a system with GNU libc.

Tue May 26 18:28:43 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (distclean): Remove config.log.

Tue May 26 15:01:52 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile.in (distclean): Don't remove alloca-conf.h.

Fri May 22 01:38:07 1998  Hans-Peter Nilsson  <hp@axis.se>

	* cplus-dem.c (MBUF_SIZE): Bumped from 512 to 32767.

1998-05-21  Mark Mitchell  <mmitchell@usa.net>

	* cplus-dem.c (do_type): Handle volatile qualification.

1998-05-21  Manfred Hollstein  <manfred@s-direktnet.de>

	* configure.in: Check for unistd.h as well.
	* configure: Rebuild.
	* config.in: Rebuild.
	* getpagesize.c (GNU_OUR_PAGESIZE): Use sysconf only if _SC_PAGESIZE
	is defined in unistd.h. Reformat conditional block for easier reading.

	* config.table (shared): Default to no if ${enable_shared}
	is unset or empty; this logic is used by the toplevel
	configure scripts, too.

Sat May 16 14:01:26 1998  Jeffrey A Law  (law@cygnus.com)

	* config.table: Add line to set enable_shared in the Makefile
	as needed.

Wed May 13 14:24:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cplus-dem.c (squangle_mop_up): Change return type to void.
	(internal_cplus_demangle): Remove unused parameter `options'.
	All callers changed.
	(cplus_demangle_opname): Remove function wide variable `int i' and
	replace with `size_t i' at each location where it is used.
	(cplus_mangle_opname): change type of `i' from int to size_t.

Wed May 13 13:39:38 1998  Ian Lance Taylor  <ian@cygnus.com>

	* alloca-conf.h: Include config.h.  Check HAVE_ALLOCA_H rather
	than sparc or sun.
	* Makefile.in (argv.o): Depend upon config.h and alloca-conf.h.

Fri May  8 00:23:51 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Set libiberty_topdir correctly when srcdir is
	"." and with_target_subdir is not set.
	* configure: Rebuild.

Thu May  7 13:01:44 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Add *-*-mingw32* case.
	* configure: Rebuild.

Wed May  6 11:33:51 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config.table: Never use a PIC file for *-*-cygwin32*.

	* Makefile.in (config.status): Depend upon config.table.

	* configure.in: On a cygwin32 host, always compile random, and
	don't test for sys_siglist, strsignal, or psignal.
	* configure: Rebuild.

	* clock.c: Check HAVE_SYS_PARAM_H rather than NO_SYS_PARAM_H.
	* getcwd.c: Likewise.
	* getpagesize.c: Likewise.
	* getruntime.c: Likewise.

Tue May  5 18:08:32 1998  Ian Lance Taylor  <ian@cygnus.com>

	Use autoconf tests rather than the old dummy.c test:
	* configure.in: Add AC_ARG_WITH calls for --with-target-subdir and
	--with-newlib.  Add AC_CONFIG_HEADER.  Use AC_REPLACE_FUNCS for
	most functions.  Add special cases to handle newlib and VxWorks.
	Remove target_makefile_frag.  Create stamp-h in AC_OUTPUT if
	CONFIG_HEADERS is set.  Only call config-ml.in in AC_OUTPUT if
	CONFIG_FILES is set; set ac_file before calling it.
	* config.table (arm-*-riscix*, *-*-cygwin32): Remove.
	(*-*-hpux*, *-*-hiux*, *-*-irix4*, *-*-solaris2*): Remove.
	(*-*-sysv4*, *-*-go32, *-*-vxworks5*, *-*-vxworks): Remove
	(i[3456]-*-mingw32*): Remove.
	* Makefile.in (ERRORS_CC, CONFIG_H, NEEDED_LIST): Remove.
	(LIBOBJS): New variable.
	(HOST_OFILES, DO_ALSO, STAGESTUFF): Remove.
	(all): Depend upon needed-list.  Don't check RULE1.
	(@target_makefile_frag@): Remove.
	(COMPILE.c): Include @DEFS@.
	(HFILES): Add alloca-conf.h.
	(REQUIRED_OFILES): Remove basename.o.
	($(TARGETLIB)): New target.
	(stamp-needed, lneeded-list, needed.awk, stamp-config): Remove.
	(lconfig.h, needed2.awk, dummy.o, errors): Remove.
	(needed-list, config.h): Rewrite.
	(RULE1, $(RULE1), RULE2, $(RULE2)): Remove.
	(.always.): Remove.
	(Makefile): Set CONFIG_FILES and CONFIG_HEADERS.
	(stamp-h): New target.
	(atexit.o, clock.o, getcwd.o, getpagesize.o): New targets.
	(basename.o): Don't depend upon config.h.
	(getruntime.o): Depend upon config.h.
	* atexit.c: Include config.h.  Check HAVE_ON_EXIT rather than
	NEED_on_exit.
	* basename.c: Don't include config.h.  Don't check NEED_basename.
	* clock.c: Include config.h.
	* getcwd.c: Likewise.
	* getpagesize.c: Likewise.
	* getruntime.c: Likewise.  Fix checks which set HAVE_GETRUSAGE and
	HAVE_TIMES.
	* strerror.c: Change uses of NEED_sys_errlist to
	HAVE_SYS_ERRLIST.  Likewise for NEED_strerror and HAVE_STRERROR.
	* strsignal.c: Likewise for NEED_sys_siglist and HAVE_SYS_SIGLIST,
	and for NEED_strsignal and HAVE_STRSIGNAL and for NEED_psignal and
	HAVE_PSIGNAL.
	* acconfig.h: New file.
	* dummy.c: Remove.
	* functions.def: Remove.
	* config/mh-cxux7 (HDEFINES): Remove -DHAVE_SYSCONF.
	* config/mh-windows (HDEFINES): Remove.
	* config/mh-cygwin32: Remove.
	* config/mh-go32: Remove.
	* config/mh-irix4: Remove.
	* config/mh-riscix: Remove.
	* config/mh-sysv4: Remove.
	* config/mt-mingw32: Remove.
	* config/mt-vxworks5: Remove.
	* config.in: New file, generated using autoheader.
	* configure: Rebuild.

Mon May  4 13:00:28 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Rewrite to use autoconf.
	* configure: Generate using autoconf.
	* config/mh-a68bsd: Remove.
	* config/mh-apollo68: Remove.
	* config/mh-hpbsd: Remove.
	* config/mh-ncr3000: Remove.
	* config/mh-sysv: Remove.
	* config/mh-aix (RANLIB, INSTALL): Don't define.
	* config/mh-cxux7 (RANLIB, INSTALL): Don't define.
	* config/mh-irix4 (CC, RANLIB, INSTALL): Don't define.
	* config/mh-sysv4 (RANLIB, INSTALL): Don't define.
	* config.table: Change config_shell to CONFIG_SHELL, and use
	libiberty_topdir to find move-if-change.
	(m68k-apollo-bsd*, m68k-apollo-sysv*): Remove.
	(i[3456]86-ncr-sysv4*, *-*-dgux*, hppa*-hp-bsd*): Remove.
	(*-*-irix*, *-*-m88kbcs*, *-*-sysv*): Remove.
	* Makefile.in (srcdir): Set to @srcdir@.
	(VPATH): Likewise.
	(prefix, exec_prefix, bindir, libdir): Set to autoconf variables.
	(SHELL, INSTALL, INSTALL_PROGRAM, INSTALL_DATA): Likewise.
	(CC, CFLAGS, RANLIB)): Likewise.
	(datadir, man*dir, infodir, includedir, MAKEINFO): Remove.
	(target_makefile_frag, host_makefile_frag): Add substitutions.
	(INSTALL_DEST): Set to @INSTALL_DEST@.
	(Makefile): Depend upon config.status.  Don't depend upon
	$(host_makefile_frag) or $(target_makefile_frag).
	(config.status): New target.

Sun May  3 17:58:49 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/mt-sunos4: Remove.  Should be handled by --with-headers
	and --with-libraries options at top level.
	* config.table: Never use mt-sunos4.

	* alloca-conf.h: New file, combining alloca-norm.h and
	alloca-botch.h.
	* alloca-norm.h: Remove.
	* alloca-botch.h: Remove.
	* configure.in: Set shell variables files and links to empty.
	* config.table: Don't set shell variable files.
	* configure.bat: Don't create alloca-conf.h.
	* makefile.vms: Likewise.
	* mpw-config.in: Likewise.
	* vmsbuild.com: Likewise.

Fri May  1 11:41:42 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in ($(HOST_OFILES) $(REQUIRED_OFILES)): Remove old
	target depending upon config.h.
	(alloca.o): Add target depending upon config.h
	(basename.o, choose-temp.o, fnmatch.o): Likewise.
	(getopt.o, getopt1.o, pexecute.o, strerror.o): Likewise.
	(strsignal.o, xstrerror.o): Likewise.

Fri May  1 04:26:25 1998  Peter Schauer <pes@regent.e-technik.tu-muenchen.de>

	* cplus-dem.c (cplus_demangle_opname):  Initialize work.

Mon Apr 27 15:53:30 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>

	* cplus-dem.c (demangle_qualified): Replace missing else.

Sun Apr 26 15:38:50 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* cplus-dem.c (gnu_special): Fix off-by-one bug when checking the
	length in the name of a virtual table.

Wed Apr 22 10:53:49 EDT 1998 Andrew MacLeod  <amacleod@cygnus.com>

	* cplus-dem.c (struct work stuff): Add field for B and K mangle codes.
	(cplus_demangle_opname): Call mop_up_squangle.
	(cplus_demangle): Initialize squangle info, then call
	internal_cplus_demangle. (Most code moved there as well)
	(internal_cplus_demangle): New function, performs most of what use
	to be done in cplus_demangle, but is only called with this file.
	(squangle_mop_up): New function to clean up B and K code data.
	(mop_up): set pointers to NULL after freeing.
	(demangle_signature, demangle_template, demangle_class): Add
	switch elements to handle K and B codes.
	(demangle_prefix, gnu_special, demangle_qualified): Add
	code to handle K and B codes.
	(do_type, demangle_fund_type): Handle B and K codes.
	(remember_Ktype): New function to store K info.
	(register_Btype, remember_Btype): New functions for B codes.
	(forget_B_and_K_types): New function to destroy B and K info.

Fri Apr 10 01:49:10 1998  Jeffrey A Law  (law@cygnus.com)

	* COPYING.LIB, choose-temp.c, cplus-dem.c: Sync with egcs & gcc.

Thu Mar  5 09:23:28 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* config.table: Make locating frag files failsafe even for the
	special case if configuring and building in srcdir.

Mon Feb 23 14:33:15 1998  Ian Lance Taylor  <ian@cygnus.com>

	* choose-temp.c: Fix handling of sys/file.h to work in libiberty.

Sun Feb 22 18:03:23 1998  Jeffrey A Law  (law@cygnus.com)

	* choose-temp.c: Sync with copy in gcc.

Thu Feb 12 16:29:49 1998  Ian Lance Taylor  <ian@cygnus.com>

	* getopt.c: Update to latest FSF version.
	* getopt1.c: Likewise.

Tue Feb 10 16:58:33 1998  Stan Shebs  <shebs@andros.cygnus.com>

	* cplus-dem.c (gnu_special): Don't get confused by .<digits>
	strings that are not actually lengths.

Fri Feb  6 01:35:17 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* Makefile.in (FLAGS_TO_PASS): Don't pass PICFLAG.
	(.c.o): Check value of enable_shared, not PICFLAG.
	(stamp-picdir): Dito.

Thu Feb  5 18:48:56 1998  Geoffrey Noer  <noer@cygnus.com>

	* config/mh-cygwin32: remove vasprintf.o from EXTRA_OFILES
	since it gets built automatically

Sun Feb  1 02:52:32 1998  Mike Stump  <mrs@wrs.com>

	* config.table (vxworks configs): Default to VxWorks 5.x, as that is
	the currently shipping OS.

Tue Jan 27 16:08:20 1998  Pat Rankin  <rankin@eql.caltech.edu>

	* vmsbuild.com [REQUIRE_OFILES]: Synchronized with Makefile.in:
	Add fnmatch.o and objalloc.o; remove vasprintf.o.
	[config.h]: Define NEED_strsignal.

Mon Jan 19 12:20:01 1998  Ian Lance Taylor  <ian@cygnus.com>

	* functions.def: Correct argument types for strerror and
	strsignal.  Reported by Alex Gutman <agutman@emc.com>.

Sun Jan 18 15:57:28 1998  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* vasprintf.c (int_vasprintf): Increase buffer size for float/double
	values.

Sat Jan 17 22:28:38 1998  Mumit Khan  <khan@xraylith.wisc.edu>
			  J.J. VanderHeijden <J.J.vanderHeijden@student.utwente.nl>

	Add mingw32 support.
	* pexecute.c (pexecute): New function for mingw32. Supports pipes.
	(pwait): New function for mingw32.

	* config.table (i[3456]86-*-mingw32*): Support for i386-mingw32.
	* config/mt-mingw32: New file.
	* xmalloc.c (first_break): Not used for mingw32.
	(xmalloc_set_program_name): Don't use sbrk on mingw32.
	(xmalloc): Likewise.
	(xrealloc): Likewise.

Sat Jan 17 22:28:05 1998  Jeffrey A Law  (law@cygnus.com)

	* choose-temp.c: Sync with gcc version.

Tue Jan 13 18:34:39 1998  Jim Wilson  <wilson@cygnus.com>

	* Makefile.in (install_to_libdir, install_to_tooldir): Add MULTISUBDIR
	to all filenames in libdir and tooldir.
	(distclean): Do MULTICLEAN before deleting Makefile.
	(stamp-needed, stamp-config): Add MULTISRCTOP to
	pathname for move-if-change.

Thu Dec  4 17:25:19 1997  Jeffrey A Law  (law@cygnus.com)

	* strsignal.c (sys_nsig): Try NSIG and _NSIG.

Wed Nov 19 13:37:06 1997  Michael Meissner  <meissner@cygnus.com>

	* alloca-norm.h (alloca, GCC case): Don't redefine alloca if it
	was already defined previously.

Mon Nov 10 12:48:03 1997  Philippe De Muyter  <phdm@macqel.be>

	* Makefile.in (INSTALL): Use ../install-sh, not install.

Tue Oct 28 23:41:15 1997  Judy Goldberg  <jodyg@idt.net>

	* Makefile.in (CFILES): Add pexecute.c.

Wed Oct 15 19:13:48 1997  Ian Lance Taylor  <ian@cygnus.com>

	* asprintf.c: Consistently use either stdarg or varargs.

Tue Oct 14 12:01:00 1997  Mark Mitchell  <mmitchell@usa.net>

	* cplus-dem.c (demangle_signature): Don't look for return types on
	constructors.  Handle member template constructors.

Fri Oct  3 17:53:30 1997  Ian Lance Taylor  <ian@cygnus.com>

	* README: Fix configuration instructions.

Mon Sep 29 12:28:41 1997  Ian Lance Taylor  <ian@cygnus.com>

	* pexecute.c: Update to current version from /gd/gnu/lib:

	Mon Sep 29 12:27:59 1997  Ian Lance Taylor  <ian@cygnus.com>

	* pexecute.c: Use spawn if __CYGWIN32__.

	1997-08-08  Paul Eggert  <eggert@twinsun.com>

	* pexecute.c: Include "config.h" first, as per autoconf manual.

	Fri Jun 27 15:20:29 1997  Scott Christley <scottc@net-community.com>

	* pexecute.c (fix_argv): New function.
	(pexecute): Win32 but not Cygwin32 needs its arguments fixed.
	Add underscore to cwait function call.

Sun Sep 28 12:00:52 1997  Mark Mitchell  <mmitchell@usa.net>

	* cplus-dem.c (demangle_template): Add new parameter.  Handle new
	template-function mangling.
	(consume_count_with_underscores): New function.
	(demangle_signature): Handle new name-mangling scheme.

Wed Sep 24 00:31:59 1997  Felix Lee  <flee@yin.cygnus.com>

	* asprintf.c: stdarg.h when ALMOST_STDC
	* config/mh-windows (EXTRA_OFILES): add asprintf.o and
	strncasecmp.o.

Thu Aug 28 14:27:15 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* vasprintf.c (vasprintf): Allow for _BSD_VA_LIST_.

	* config.table: Add case for FreeBSD 2.1 and 2.2, needs mh-fbsd21.

	* config/mh-fbsd21 (EXTRA_OFILES): Force vasprintf.o

Wed Sep 10 12:43:10 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (demangle_fund_type): Change "complex" to "__complex".

Fri Sep  5 16:34:42 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* asprintf.c (asprintf): New file.
	* Makefile.in (CFILES): Add asprintf.c
	* functions.def: Ditto.

Thu Aug 28 18:53:34 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* argv.c (dupargv): New function, duplicate an argument vector.

Tue Aug 19 20:28:45 1997  Geoffrey Noer  <noer@cygnus.com>

	* config/mh-cygwin32: also build random.o

Tue Aug 19 17:10:56 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c: Add 'extern' to prepends_underscore.

Wed Jul 30 11:42:19 1997  Per Bothner  <bothner@cygnus.com>

	* cplus-dem.c: Various changes to produce Java output when passed
	DMGL_JAVA.  Thus "::" becomes "." and "JArray<Foo>" becomes "Foo[]".
	(main): Support --java and -j flags to set DMGL_JAVA.

Tue Jul 22 19:05:23 1997  Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>

	* config/mh-go32 (CC, AR, RANLIB): Don't define.

Tue Jul 22 17:49:54 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (REQUIRED_OFILES): Add pexecute.o.
	(pexecute.o): New target.

	* Makefile.in (stamp-needed): New target, replacing needed-list.
	(needed-list): Just depend upon stamp-needed.
	(stamp-config): New target, replacing config.h.
	(config.h): Just depend upon stamp-config.
	(mostlyclean): Remove stamp-*.

Thu Jun 12 11:00:18 1997  Angela Marie Thomas (angela@cygnus.com)

	* Makefile.in (FLAGS_TO_PASS): pass INSTALL, INSTALL_PROGRAM and
	INSTALL_DATA for multilibbed installs

Tue Jun  3 13:21:05 1997  Doug Evans  <dje@canuck.cygnus.com>

	Tue Dec 10 09:44:57 1996  Paul Eggert  <eggert@twinsun.com>

	* choose-temp.c (choose_temp_base): Don't dump core if TMPDIR is empty.

	* choose-temp.c (try): Insist that temp dir be searchable.

	Wed Oct 23 17:36:39 1996  Doug Rupp  (rupp@gnat.com)

	* choose-temp.c (choose_temp_base): On VMS, use proper syntax
	for current directory.

	Sat Feb 15 19:03:48 1997  Geoffrey Noer  (noer@cygnus.com)

	* pexecute.c: Remove special cases for cygwin32.
	(pwait): Remove local definition of `pid'.

	Tue Nov 12 18:26:15 1996  Doug Rupp  (rupp@gnat.com)

	* pexecute.c (vfork): Supply new definition for VMS.
	(pwait): Use waitpid instead of wait for VMS.

Tue May 20 14:02:20 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cplus-dem.c (do_type): Handle `J'.
	(demangle_fund_type): Print "complex" for it.

Wed Apr 30 12:15:45 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* configure.in: Don't turn on multilib here.

Mon Apr 28 19:04:31 1997  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* obstack.c: move _obstack_memory_used outside of ifdef.  Cannot be
	elided; needed by gdb and not present in libc.

Thu Apr 24 19:33:47 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (clean): Remove tmpmulti.out.

Tue Apr 22 10:25:15 1997  Fred Fish  <fnf@cygnus.com>

	* floatformat.c (floatformat_ieee_double_littlebyte_bigword):
	Add new floatformat, mainly for ARM doubles.

Mon Apr 14 12:11:16 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config.table: Use ${config_shell} with ${moveifchange}.  From
	Thomas Graichen <graichen@rzpd.de>.

Fri Apr  4 03:09:24 1997  Ulrich Drepper  <drepper@cygnus.com>

	* configure.in: Enable multilibing by default.
	Update multilib template to read config-ml.in.

Tue Apr  1 16:26:39 1997  Klaus Kaempf  <kkaempf@progis.de>

	* makefile.vms: Add objalloc.

Mon Mar 31 23:57:51 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* cplus-dem.c (demangle_it): Add prototype declaration.
	(usage, fatal): Likewise.

	* xexit.c (_xexit_cleanup): Add prototype.

	* strerror.c (init_error_tables): Declare.

Fri Mar 28 11:43:20 1997  H.J. Lu  <hjl@lucon.org>

	* functions.def: Add DEF of vasprintf, and DEFFUNC of strsignal.
	* strsignal.c: Only define strsignal if NEED_strsignal.
	* Makefile.in (REQUIRED_OFILES): Remove vasprintf.o.
	* configure.in: Add NEED_strsignal to xconfig.h.  Add vasprintf.o
	to xneeded-list.
	* config/mh-cygwin32 (HDEFINES): Add -DNEED_strsignal.
	(EXTRA_OFILES): Define to vasprintf.o.
	* config/mh-windows (HDEFINES): Add -DNEED_strsignal.
	(EXTRA_OFILES): Add vasprintf.o.
	* config/mt-vxworks5 (vxconfig.h): Define NEED_strsignal.
	(vxneeded-list): Add vasprintf.o.

Thu Mar 20 17:02:09 1997  Ian Lance Taylor  <ian@cygnus.com>

	* objalloc.c: Include <stdio.h>.

Mon Mar 17 19:23:11 1997  Ian Lance Taylor  <ian@cygnus.com>

	* objalloc.c: New file.
	* Makefile.in (CFILES): Add objalloc.c
	(REQUIRED_OFILES): Add objalloc.o.
	(objalloc.o): New target.

Sat Mar 15 18:49:41 1997  Ian Lance Taylor  <ian@cygnus.com>

	* obstack.c: Update to current FSF version.

Fri Mar 14 14:18:47 1997  Ian Lance Taylor  <ian@cygnus.com>

	* cplus-dem.c: Add prototypes for all static functions.
	(mystrstr): Make static.  Make arguments and result const.
	(cplus_match): Remove; not used.

Tue Mar 11 14:20:31 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cplus-dem.c (gnu_special): Call demangled_fund_type for other
	__t* symbols.

Tue Mar 11 15:41:21 1997  H.J. Lu  <hjl@lucon.org>

	* spaces.c: Declare malloc and free properly.
	* strsignal.c (init_signal_tables): Add prototype.
	* xatexit.c (_xexit_cleanup): Add parameter declarations.

Wed Feb 19 15:43:24 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* Makefile.in (lneeded-list): If alloca.o is needed, xexit.o is
	also required because of xmalloc.o.

Fri Feb 14 13:43:38 1997  Ian Lance Taylor  <ian@cygnus.com>

	* strsignal.c: Unconditionally redefine sys_siglist around the
	inclusion of the system header files.

Thu Feb 13 22:01:04 1997  Klaus Kaempf  <kkaempf@progis.de>

	* makefile.vms: Remove 8 bit characters.  Update to latest
	gcc release.

Tue Feb  4 11:52:19 1997  Ian Lance Taylor  <ian@cygnus.com>

	* strsignal.c: Use NEED_sys_siglist instead of
	LOSING_SYS_SIGLIST.
	* config.table: Don't use mh-lynxos.
	* config/mh-lynxos: Remove.

Thu Jan 16 14:51:03 1997  Bob Manson  <manson@charmed.cygnus.com>

	* cplus-dem.c: Fix indenting; make identical to the copy
	in GCC.
	(do_type, case 'M'): Check for a template as well as a class.

Thu Dec 19 13:51:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* config/mt-vxworks5 (vxneeded-list): Remove sigsetmask.o, since
	vxworks 5.[0-3] all have sigsetmask in them; the one provided by
	libiberty is incorrect, as well.

Mon Dec  2 15:03:42 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* alloca.c (alloca): When compiled with an ANSI/ISO compiler,
	alloca takes a size_t argument, not just unsigned.

Mon Nov 18 15:42:08 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c: Note that this file also lives in GCC.

Mon Nov 18 15:19:00 1996  Dawn Perchik  <dawn@critters.cygnus.com>

	* alloca.c: Remove include of libiberty.h for hpux.
	* argv.c:  Replace defs from libiberty.h.
	* spaces.c: Put back externs from removed from libiberty.h.
	* vasprintf.c: Remove include of libiberty.h for hpux.

Mon Nov 18 14:08:00 1996  Dawn Perchik  <dawn@critters.cygnus.com>

	* cplus-dem.c: Checking in again; last checkin filed due to sticky tag.

Wed Nov 13 08:22:00 1996  Dawn Perchik  <dawn@critters.cygnus.com>

	* cplus-dem.c: Revert last two commits due to conflicts with
	hpux system headers.

Wed Nov 13 08:22:00 1996  Dawn Perchik  <dawn@critters.cygnus.com>

	* alloca.c, argv.c, spaces.c, strcasecmp.c, vasprintf.c, vprintf.c:
	Revert last commit due to conflicts with hpux system headers.

Wed Nov 13 10:36:50 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* cplus-dem.c (x{m,re}alloc): Make declarations compatibile with
	libiberty.h when compiled with a standard compiler.

Tue Nov 12 16:31:00 1996  Dawn Perchik  <dawn@critters.cygnus.com>

	* alloca.c: Include libiberty.h for definition of xmalloc.
	Don't redefine NULL.
	* argv.c: Move prototypes to libiberty.h.
	* cplus-dem.c: Include libiberty.h for definition of xmalloc.
	Don't redefine NULL.
	Use casts to eliminate compiler warnings.
	* spaces.c: Remove prototypes for malloc and free which are
	already in libibrty.h.
	* strcasecmp.c: Use casts to eliminate compiler warnings.
	* vasprintf.c: Include libiberty.h for definition of malloc.
	Don't redefine NULL.
	* vprintf.c: Include stdarg.h if __STDC__.

Fri Oct 11 15:42:12 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* config/mh-windows:  Add strcasecmp.o to EXTRA_OFILES.

Fri Oct 11 11:16:31 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw.c (mpwify_filename): Rewrite to simplify, and to handle
	upward components correctly.

Tue Oct  8 08:55:34 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* config.table, config/mh-windows:  Add support for building under
	MSVC (the Microsoft build environment).

Mon Oct  7 10:50:27 1996  Ian Lance Taylor  <ian@cygnus.com>

	* fnmatch.c: Undef const if not __STDC__.

Thu Oct  3 13:46:39 1996  Ian Lance Taylor  <ian@cygnus.com>

	* fnmatch.c: New file.
	* Makefile.in (CFILES): Add fnmatch.c.
	(REQUIRED_OFILES): Add fnmatch.o.
	(fnmatch.o): New target.

Wed Sep 18 14:49:13 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (demangle_template): Fix handling of address args.
	(gnu_special): Handle type_info stuff.

Fri Sep 13 17:52:55 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw.c (DebugPI): Make settable from the env var DEBUG_PATHNAMES.
	(mpwify_filename): Handle "::/" case.

Thu Sep 12 13:30:40 1996  Geoffrey Noer  <noer@cygnus.com>

	* config/mh-cygwin32: new file (need -DNEED_basename and
		-DNEED_sys_siglist for native NT rebuilding)
	* config.table (*-*-cygwin32): new entry
	* choose-temp.c: bring in sync with gcc (revert Aug 17 change)

Thu Aug 29 16:48:45 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config.table (i[345]86-*-*): Recognize i686 for pentium pro.

Tue Aug 27 13:47:58 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* pexecute.c (pexecute) [MPW]: Remove old bogus code that
	messed with arguments that included a '/', add escape chars
	to double quotes, remove const decl from arg that Mac
	compilers don't seem to like.

Sat Aug 17 04:44:27 1996  Geoffrey Noer  <noer@cygnus.com>

	* pexecute.c: Update test for win32 (&& ! cygwin32).
	* choose-temp.c: fix WIN32 preprocessor defines

Thu Aug 15 12:26:48 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Add @DASH_C_FLAG@ and @SEGMENT_FLAG({Default})@
	to editing of default makefile rule.

Sun Aug 11 21:03:27 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* alloca-norm.h:  Include <malloc.h> if _WIN32.
	* argv.c:  Include non-prototyped decls for malloc and string
	functions if ! _WIN32 or if __GNUC__.

Thu Aug  8 12:42:40 1996  Klaus Kaempf  <kkaempf@progis.de>

	* config.h-vms: New file.
	* makefile.vms: Use it.

Wed Aug  7 17:16:12 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* getopt.c (_getopt_internal):  If argc is 0, just return (before
	we reference *argv and segfault).

Mon Aug  5 01:29:08 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (distclean): Add multilib.out.

Thu Jul 18 17:40:55 1996  Ian Lance Taylor  <ian@cygnus.com>

	* alloca-norm.h: Change #ifdef sparc to #if defined (sparc) &&
	defined (sun).  From Andrew Gierth <ANDREWG@microlise.co.uk>.

Mon Jul  1 13:40:44 1996  Ken Raeburn  <raeburn@cygnus.com>

	Tue May 28 15:29:03 1996  Pat Rankin  <rankin@eql.caltech.edu>

	* vmsbuild.com (REQUIRD_OFILES): Add choose-temp.o and xstrdup.o.

	Thu Jan 25 18:20:04 1996  Pat Rankin  <rankin@eql.caltech.edu>

	* vmsbuild.com: Changes to handle DEFFUNC(on_exit).
	(do_ofiles): Allow nonexistent source file in pass 3.
	(chk_deffunc): New routine.

Tue Jun 25 19:24:43 1996  Doug Evans  <dje@canuck.cygnus.com>

	* pexecute.c (PEXECUTE_VERBOSE): Define.
	(MPW pexecute): Check flags & PEXECUTE_VERBOSE instead of verbose_flag.

Tue Jun 25 23:11:48 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (docdir): Removed.

Tue Jun 25 23:01:07 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (oldincludedir): Removed.

Tue Jun 25 22:50:07 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (datadir): Set to $(prefix)/share.

Thu Jun 20 21:17:52 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cplus-dem.c (demangle_arm_pt): Reindent.  Avoid endless loop by
	checking for errors from do_type.

Tue Jun 18 14:36:19 1996  Klaus Kaempf  <kkaempf@progis.de>

	* makefile.vms: New file.
	* xmalloc.c: If VMS, include <stdlib.h> and <unixlib.h> rather
	than declaring malloc, realloc, and sbrk.

Mon Jun 10 13:17:17 1996  Doug Evans  <dje@canuck.cygnus.com>

	* pexecute.c: New file.

Wed Jun  5 16:57:45 1996  Richard Henderson  <rth@tamu.edu>

	* xmalloc.c: Declare sbrk.

Sat May  4 05:08:45 1996  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* alloca-norm.h:  Add SPARCworks cc compatible __builtin_alloca
	declaration.

Mon Apr 22 18:41:49 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xstrerror.c: Include <stdio.h>.

Sun Apr 21 11:55:12 1996  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (CFILES): Add atexit.c.

Sun Apr 21 09:50:09 1996  Stephen L Moshier  (moshier@world.std.com)

	* choose-temp.c: Include sys/types.h before sys/file.h for sco3.2v5.

Wed Apr 17 11:17:55 1996  Doug Evans  <dje@canuck.cygnus.com>

	* choose-temp.c: Don't #include sys/file.h ifdef NO_SYS_FILE_H.
	#include <stdio.h>
	* config/mt-vxworks5 (HDEFINES): Define NO_SYS_FILE_H.

Tue Apr 16 11:27:16 1996  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (lneeded-list): If alloca.o is needed, so is xmalloc.o.
	Reverts Feb 8, 1995 change.

Mon Apr 15 12:53:26 1996  Doug Evans  <dje@canuck.cygnus.com>

	* choose-temp.c: New file.
	* Makefile.in (CFILES): Add choose-temp.c.
	(REQUIRED_OFILES): Add choose-temp.o.

Sat Apr 13 14:19:30 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* floatformat.c (floatformat_to_double):  Don't bias exponent when
	handling zero's, denorms or NaNs.

Thu Apr 11 13:36:56 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* floatformat.c (floatformat_to_double):  Fix bugs with handling
	numbers with fractions < 32 bits.

Mon Apr  8 14:48:34 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config.table: Permit --enable-shared to specify a list of
	directories.

Tue Mar 19 22:02:07 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (demangle_template): Fix for non-mangled pointer
	arguments.

Fri Mar  8 17:24:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: If srcdir is `.' and with_target_subdir is not
	`.', then set MULTISRCTOP before calling config-ml.in.

Thu Mar  7 13:37:10 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw.c (mpw_open): Add debugging output option.

Wed Mar  6 17:36:03 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* cplus-dem.c (demangle_template): Fix for address-of-extern arguments.

Tue Feb 27 12:00:50 1996  Raymond Jou  <rjou@mexican.cygnus.com>

	* mpw.c (mpwify_filename): Change 6 to 5 in
	strncmp (unixname, "/tmp/", 5).

Tue Feb 20 10:55:53 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cplus-dem.c (demangle_template): Initialize is_bool.  Correctly
	handle 0 as a pointer value parameter.

Mon Feb  5 16:41:44 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (all): Depend upon required-list.
	(required-list): New target.
	(clean): Remove required-list.

Wed Jan 31 10:19:41 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	* win32.c: Deleted.
	* config.table (i386-*-win32): Deleted.
	* config/mh-i386win32: Deleted.

Thu Jan 18 11:34:17 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cplus-dem.c (cplus_demangle_opname): Change opname parameter to
	const char *.
	(cplus_mangle_opname): Change return type and opname parameter to
	const char *.  Don't cast return value.

Tue Jan 16 12:13:11 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw.c: Include Timer.h, in order to get m68k Microseconds trap
	definition.

Wed Jan  3 13:15:04 1996  Fred Fish  <fnf@cygnus.com>

	* obstack.c: Update copyright to 1996.
	(_obstack_memory_used): Define new function.  Called via
	obstack_memory_used macro.

Thu Dec 28 11:39:40 1995  Ian Lance Taylor  <ian@cygnus.com>

	* xstrdup.c: New file.
	* Makefile.in (CFILES): Add xstrdup.c.
	(REQUIRED_OFILES): Add xstrdup.o.
	(xstrdup.o): New target.

Mon Dec 11 18:18:52 1995  Mike Stump  <mrs@cygnus.com>

	* atexit.c: New stub to provide atexit on systems that have
	on_exit, like SunOS 4.1.x systems.
	* functions.def (on_exit, atexit): Ditto.

Mon Dec 11 15:42:14 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw.c (mpw_abort): Remove decl.
	(mpw_access): Move debugging printf.

Sat Dec  2 01:25:23 1995  Ian Lance Taylor  <ian@cygnus.com>

	* config.table: Consistently use ${host} rather than ${xhost} or
	${target}.
	* configure.in: Don't bother to set ${xhost} before calling
	config.table.

Tue Nov 28 14:16:57 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* Makefile.in (.c.o): Use test instead of the left bracket, to
	avoid problems with some versions of make.

Tue Nov 28 11:45:17 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Fix INCDIR edit to work with Nov 14 change.

Tue Nov 21 11:26:34 1995  Fred Fish  <fnf@rtl.cygnus.com>

	* config/mh-hpux: Remove.  It was only used to define EXTRA_OFILES,
	which was set to just alloca.o, which is now automatically marked
	as needed by the autoconfiguration process.

Tue Nov 21 14:15:06 1995  Ian Lance Taylor  <ian@cygnus.com>

	* config.table: Check ${with_cross_host} rather than comparing
	${host} and ${target}.

Thu Nov 16 14:34:42 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: If with_target_subdir is empty, set xhost to
	${host} rather than ${target} before calling config.table.

Tue Nov 14 01:38:30 1995  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (MULTITOP): Deleted.
	(MULTISRCTOP, MULTIBUILDTOP): New.
	(FLAGS_TO_PASS): Delete INCDIR.
	(INCDIR): Add $(MULTISRCTOP).
	(install_to_libdir): Add $(MULTISUBDIR).  Call $(MULTIDO).
	* configure.in: Delete call to cfg-ml-com.in.  Call config-ml.in
	instead of cfg-ml-pos.in.
	(cross-compile check): Change to test for with_target_subdir.
	(EXTRA_LINKS): Delete.

Sun Nov 12 12:13:04 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Add getpagesize.c.o to needed-list.
	* mpw.c [USE_MW_HEADERS]: Conditionalize compiling of
	functions that are supplied by Metrowerks libraries.
	(fstat): Clean up descriptor->pointer conversion code.
	(InstallConsole, etc): Empty definitions, for when linking
	with SIOUX.

Sun Nov  5 19:25:27 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* Makefile.in (FLAGS_TO_PASS):  Also pass PICFLAGS.
	(.c.o):  Stylistic change.

Thu Nov  2 12:06:29 1995  Ian Lance Taylor  <ian@cygnus.com>

	* strtol.c, strtoul.c: Don't include <stdlib.h>.  From
	phdm@info.ucl.ac.be (Philippe De Muyter).

Wed Nov  1 11:59:36 1995  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Correct sed call.

Mon Oct 30 13:03:45 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* configure.in:  Clean up / simplify for native.

	* configure.in:  Merge in stuff from ../xiberty/configure.in.
	* Makefile.in (CC):  Add definition (so it can be overrridden
	by ../configure).

Tue Oct 24 17:57:27 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Leave strerror.c.o in standard list of functions.
	* mpw.c (R_OK, ENOENT, EACCESS, ENOSYS): Remove.
	(link): Remove useless definition with error return.
	(last_microseconds, warn_if_spin_delay, record_for_spin_delay):
	Use UnsignedWide type for microsecond counts.

Thu Oct 19 10:52:07 1995  Michael Meissner  <meissner@wogglebug.tiac.net>

	* memcmp.c (memcmp): Argument types are const void *, not void
	*const.

	* strncasecmp.c (strncasecmp): Include ansidecl.h/stdarg.h, not
	sys/types.h.
	* strcasecmp.c (strcasecmp): Ditto.

Tue Oct 10 11:03:24 1995  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (BISON):  Remove macro.

Tue Sep 26 15:06:46 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* Makefile.in (HFILES): Add default empty definition.
	* mpw-config.in (config.h): Only update if changed.
	* mpw-make.in: Remove.
	* mpw-make.sed: New file, edits Makefile.in into MPW makefile.
	* mpw.c: Remove semi-clone of strerror code.
	(sys_nerr, sys_errlist): Define here.
	(Microseconds): Only define as A-line trap if m68k Mac.

Wed Sep 20 12:53:32 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (maintainer-clean): New synonym for distclean.

Mon Aug 28 19:47:52 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* config.table:  For host, generalize rs6000-ibm-aix*
	to *-ibm-aix* so we also include powerpc.

Tue Aug 22 03:18:05 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>

	Fri Jun 16 18:35:40 1995  Pat Rankin  (rankin@eql.caltech.edu)

	* xstrerror.c: New file.
	* Makefile.in, vmsbuild.com: Compile it.

Mon Jul 31 12:16:32 1995  steve chamberlain  <sac@slash.cygnus.com>

	* config.table (i386-*-win32): New.

Fri Jul 21 11:35:52 1995  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (MULTITOP): New variable.
	(MULTIDIRS, MULTISUBDIR, MULTIDO, MULTICLEAN): Likewise.
	(all): Add multilib support.
	(install_to_tooldir, *clean): Likewise.

Mon Jul 10 11:47:27 1995  Ken Raeburn  <raeburn@cygnus.com>

	* makefile.dos (OBJS): Add hex.o.  From DJ Delorie.

Fri Jun 30 17:28:59 1995  Pat Rankin  (rankin@eql.caltech.edu)

	* vmsbuild.com:  create "new-lib.olb", build libiberty under that
	name, and then make it become "liberty.olb" when done, so that an
	incomplete build attempt never leaves behind something which looks
	like a complete library.

Thu Jun 29 00:22:02 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* config/mh-i386pe: New file for PE hosts.
	* config.table: Understand PE hosts.

Wed Jun 28 19:13:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* cplus-dem.c: Update from gcc.

	* argv.c, dummy.c: If __STDC__, #include "alloca-conf.h" after
	<stddef.h>.
	* alloca-norm.h: If __STDC__, declare alloca with its parameter.

Thu Jun 22 18:57:47 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.in (ALL_CFLAGS): Define NEED_basename.
	* mpw.c: Only test DebugPI once whenever printing debug info.
	(mpwify_filename): If filename is /tmp/foo, change it into :_foo,
	also fix to not write on input filename buffer.
	(mpw_access): Use stat() instead of open(), works for directories
	as well as files.

Mon Jun 19 00:33:22 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* Makefile.in: Massage broken shells that require 'else true'.

Sat Jun 17 23:21:58 1995  Fred Fish  <fnf@cygnus.com>

	* alloca-norm.h: Declare alloca as type "PTR" to match functions.def.
	Declare __builtin_alloca in the sparc case, as argv.c did.
	* argv.c: Replace inline version of alloca-norm.h at start of file with
	a #include of alloca-conf.h.  Precede it with an include of ansidecl.h
	because alloca-norm.h needs to declare alloca as "PTR".

Mon Jun 12 14:24:26 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* win32.c: New file.

Fri Jun  9 15:16:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* dummy.c: #include "alloca-conf.h".

Wed Jun  7 11:46:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* Makefile.in (mostlyclean): Remove stamp-picdir.
	(clean): Don't.

Mon Jun  5 18:46:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* config.table (frags): Use toplevel pic frags.

	* Makefile.in (PICFLAG): New macro.
	(all): Depend on stamp-picdir.
	(needed-list): Ditto.
	(.c.o): Also build pic object.
	(stamp-picdir): New rule.
	(mostlyclean): Remove pic.
	(clean): Remove stamp-picdir.

Fri Mar 24 16:55:48 1995  Pat Rankin  (rankin@eql.caltech.edu)

	* vmsbuild.com (config.h): Add `#define NEED_basename'.

Tue May 23 10:12:46 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* clock.c, getopt.c, strtod.c, vsprintf.c:  Change from using LGPL
	to libio-style copyright.
	* getpagesize.c:  Remove FSF copyright.

Sat May 20 12:30:23 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>

	Added improved VMS support from Pat Rankin:

	Fri Mar 17 18:40:36 1995  Pat Rankin  (rankin@eql.caltech.edu)

	* vmsbuild.com:  new file.

	* getpagesize.c (getpagesize):  implement for VMS;
	* strerror.c (strerror, strerrno, strtoerrno):  add rudimentary
	support for EVMSERR.

Thu May 18 17:01:42 1995  Ken Raeburn  <raeburn@kr-laptop.cygnus.com>

	Wed May 10 14:28:16 1995 Richard Earnshaw (rearnsha@armltd.co.uk)

	* floatformat.c (floatformat_arm_ext): Define.

Tue May 16 13:30:59 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* basename.c, bcmp.c, getcwd.c, insque.c, rename.c, sigsetmask.c,
	strerror.c, strsignal.c:  Remove FSF copyright.
	* sigsetmask.c: #include <sys/types.h> - seems to be needed by ISC.

Mon May 15 19:53:17 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* bcopy.c, bzero.c, memcmp.c, memcpy.c, memset.c, strchr.c,
	strrchr.c, strstr.c, vfork.c:  Remove FSF Copyright, because this
	might contaminate libstdc++ with the LGPL.  (OK'd by RMS 11 Oct 94.)
	* strchr.c, strrchr.c:  Add cast to suppress const warning.

Thu May  4 14:36:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* cplus-dem.c: Use const instead of CONST.  Don't include
	ansidecl.h directly.

Wed Apr 19 01:30:27 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* cplus-dem.c: Don't include libiberty.h.  Do declare xmalloc and
	xrealloc.
	(-DMAIN): Don't rely on an externally-defined version number;
	instead, require the version number to be defined as a
	preprocessor macro.  Handle the RS/6000 leading dot.  Define
	xmalloc, xrealloc and fatal.  Don't strip a leading underscore
	if we couldn't demangle the word.

Tue Apr  4 13:03:51 1995  Stan Shebs  <shebs@andros.cygnus.com>

	(Old mpw.c change descriptions retained for informational value.)
	* mpw.c (warning_threshold): Default to .4 sec.
	(overflow_count, current_progress): New globals.
	(warn_if_spin_delay): Include current progress type,
	such as program name, in message.
	(mpw_start_progress): Set current_progress variable from arg.
	(mpw_end_progress): Report spin delays by power-of-two-size
	buckets instead of constant-size buckets.

	* mpw.c: Clean up formatting, types, returns, etc.
	(ENOSYS): Define.
	(mpw_fread, mpw_fwrite): Define.
	(sleep): Define correctly.

	* mpw.c: New code to implement cursor spinning support.
	(umask): New function.
	(mpw_fopen, mpw_fseek, stat, fstat): Call PROGRESS.

	* mpw.c (mpw_basename, mpw_mixed_basename): New functions, find
	basenames for MPW and MPW/Unix filenames.
	(mpw_special_init): New function, calls Macsbug if desired.

	* mpw.c: Add GPL notice.
	(mpwify_filename): Add more transformations.
	(mpw_fopen): Call mpwify_filename on file names.
	(rename): Remove.
	(chdir, getcwd): Add simple definitions.

	* mpw.c: Random cleanups, remove unused code bits.
	Added copy of strerror.c for gcc's use.
	(stat, fstat, _stat): New versions based on Guido van Rossum code.

	* mpw.c (mpw_fseek): Make it work correctly when doing SEEK_CUR.

	* mpw.c (stat): Remove hack definition, get from sys/stat.h.
	(fork, vfork, etc): Print error messages if called.
	(getrusage, sbrk, environ, isatty, link, utime, mkdir, rmdir,
	rename, chown): Define.

	* mpw-config.in: New file, MPW version of configure.in.
	* mpw-make.in: New file, MPW version of Makefile.in.
	* mpw.c: New file, MPW compatibility routines.

Fri Mar 24 14:10:30 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* basename.c: Include config.h before checking for NEED_basename.

Thu Mar 23 19:09:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* functions.def: Add DEFFUNC for basename.

	* basename.c: Only define basename if NEED_basename.

Thu Mar 16 13:36:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* config.table: Fix --enable-shared logic for native builds.

Mon Mar 13 11:05:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* cplus-dem.c (demangle_template): Demangle bool literals properly.

Mon Mar  6 23:57:28 1995  Stu Grossman  (grossman@cygnus.com)

	* strtol.c strtoul.c:  Replace these with less buggy versions from
	NetBSD.  (strtoul in particular couldn't handle base 16.)

Wed Mar  1 15:59:01 1995  Ian Lance Taylor  <ian@cygnus.com>

	* config/mt-vxworks5 (HDEFINES): Define NO_SYS_PARAM_H.

	* clock.c: If NO_SYS_PARAM_H is defined, don't include
	<sys/param.h>.
	* getcwd.c, getpagesize.c, getruntime.c: Likewise.

Fri Feb 17 15:40:55 1995  Ian Lance Taylor  <ian@cygnus.com>

	* getruntime.c (get_run_time): Don't assume that CLOCKS_PER_SEC is
	a number; ANSI appears to permit any expression, including a
	function call.

	* config.table (*-*-vxworks5*): Use mt-vxworks5 when configuring
	xiberty.
	* config/mt-vxworks5: New file.

Thu Feb  9 14:19:45 1995  Ian Lance Taylor  <ian@cygnus.com>

	* basename.c (basename): Change argument to be const.

Wed Feb  8 18:06:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* Makefile.in (lneeded-list): Don't worry about xmalloc.

Sun Jan 15 00:40:36 1995  Jeff Law  (law@snake.cs.utah.edu)

	* Makefile.in (distclean): Delete xhost-mkfrag.

Thu Jan 12 16:54:18 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* Makefile.in (lneeded-list): If alloca.o is needed, so is xmalloc.o.

Wed Jan 11 22:39:56 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* hex.c: New file.
	* Makefile.in (REQUIRED_OFILES, CFILES): List it.
	(hex.o): Add dependencies.

	* cplus-dem.c (demangle_prefix): For GNU style constructor and
	destructor names, try demangling the remainder of the string.

Wed Dec 28 00:49:15 1994  Ian Lance Taylor  <ian@tweedledumb.cygnus.com>

	* vasprintf.c (int_vasprintf): New static function.
	(vasprintf): Use int_vasprintf.  Removes assumption that va_list
	is assignment compatible.

Sat Nov  5 19:29:12 1994  Jason Merrill  (jason@phydeaux.cygnus.com)

	* Makefile.in (LIBCFLAGS): New variable.
	(FLAGS_TO_PASS): Pass it.
	(.c.o): Use it.

Thu Nov  3 19:09:47 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* getopt.c, getopt1.c: Do compile these functions under Linux,
	since many native versions are based on glibc but are buggy.

Mon Oct 24 15:16:46 1994  Per Bothner  <bothner@kalessin.cygnus.com>

	* vasprintf.c:  Make 'format' arg be const, to avoid a mismatch
	with prototype in GNU libc.  Support stdarg.h as well as varargs.h.

Tue Oct 11 17:48:27 1994  Jason Merrill  (jason@phydeaux.cygnus.com)

	* Makefile.in (REQUIRED_OFILES): Add vasprintf.o.
	* functions.def: Remove vasprintf.

Wed Sep 14 17:04:55 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* xmalloc.c (first_break): New static variable.
	(xmalloc_set_program_name): Record sbrk (0) in first_break.
	(xmalloc): If memory allocation fails, try to report how much
	memory was allocated by the program up to this point.
	(xrealloc): Likewise.

Sun Sep 04 17:58:10 1994  Richard Earnshaw (rwe@pegasus.esprit.ec.org)

	* Makefile.in (ERRORS_CC): New variable, defaulted to $(CC).  Use it
	when linking dummy.
	* config.table: Add host RISCiX Makefile frag.
	* config/mh-riscix: New file.

Thu Aug 25 17:29:44 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* Makefile.in (FLAGS_TO_PASS): Define.
	($(RULE1)): Use $(FLAGS_TO_PASS).

Wed Aug 24 17:08:47 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* vasprintf.c: Include <string.h>.
	(vasprintf): Add casts to void for va_arg to avoid gcc warnings.
	* xatexit.c: Declare malloc.

Fri Aug 19 15:29:12 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle_args): Fix a bug in previous patch (the
	one below).

Thu Aug 18 14:37:14 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle args): Handle ARM repeat encoding where
	the type index is greater than 9.

Wed Aug 17 16:13:49 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle_qualified): accept optional '_' between
	qualified name. This is baecause the template name may end with
	numeric and can mixed up with the length of next qualified name.

Wed Aug  3 05:52:14 1994  D. V. Henkel-Wallace  (gumby@cygnus.com)

	* config/mt-sunos4: Use our standard location for cross-includes
	and cross-libs when the target is also a "host" environment (ie no
	newlib; includes and such don't belong to us).  This is specific
	to the Cygnus Support environment.

Tue Aug  2 15:25:12 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle_template): demangle as xxx<'Q'> not
	xxx<ch=81>.

Mon Aug  1 17:02:48 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (main): flush stdout to make pipe work.

Sat Jul 16 12:56:32 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* config.table (*-*-cxux7*):  Recognize.
	* floatformat.c (floatformat_m88110_ext) [HARRIS_FLOAT_FORMAT]:
	Harris-specific float format.
	* config/mh-cxux7: New file.

Wed Jun 29 00:26:17 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* cplus-dem.c (demangle_template):  Make sure that the result of
	consume_count doesn't index beyond the end of the string.

Mon Jun 20 23:54:37 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* cplus-dem.c (gnu_special):  Handle vtable mangling of gcc-2.4.5 and
	earlier. Improve test for new vtable mangling. Change output back
	to `virtual table'.

Mon Jun 20 11:37:30 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* obstack.c: Always compile this code, even if using the GNU
	library.  Avoids problems with relatively recent binary
	incompatibility.

Thu Jun 16 17:54:01 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* cplus-dem.c: Include libiberty.h.
	(xmalloc, xrealloc, free): Don't declare.
	(strstr): Don't declare parameters.
	(xmalloc, xrealloc): Don't define.
	(long_options): Add no-strip-underscores.
	(main): Call xmalloc_set_program_name.  Pass n in short options to
	getopt_long.  Handle option 'n' to not strip underscores.
	(usage): Mention -n and --no-strip-underscores.

Sun Jun 12 01:37:09 1994  Jason Merrill  (jason@deneb.cygnus.com)

	* cplus-dem.c (demangle_template): Separate consecutive >'s with a
	space.
	(gnu_special): Demangle template and qualified names in a vtable name.

Fri May 27 12:27:52 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	From gas-2.3 and binutils-2.4 net releases:

	Wed May 11 22:32:00 1994  DJ Delorie (dj@ctron.com)

	* makefile.dos: [new] Makefile for dos/go32
	* configure.bat: update for latest files
	* msdos.c: remove some functions now in libc.a

Fri May 20 18:53:32 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* cplus-dem.c (gnu_special):  Recognize thunks, as well as
	the new naming style for vtables (when -fvtable-thunks).

Wed May 18 13:34:06 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* Makefile.in (XTRAFLAGS): Don't define.
	(.c.o, dummy.o): Don't use XTRAFLAGS.
	($(RULE1)): Don't pass XTRAFLAGS down in recursive call.

Fri May 13 16:02:12 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* vasprintf.c: New file.
	* Makefile.in, functions.def: Add it.

Fri May 13 16:20:28 1994  Jason Merrill  (jason@deneb.cygnus.com)

	* cplus-dem.c (demangle_fund_type): Grok bool.

Fri May  6 14:44:21 1994  Steve Chamberlain  (sac@cygnus.com)

	* config.table: Add go32
	* config/mh-go32: New template.

Fri May  6 11:01:59 1994  D. V. Henkel-Wallace  (gumby@rtl.cygnus.com)

	* config.table, config/mt-sunos4: config for when sun4 is cross target.

Mon Apr 11 00:54:33 1994  Richard Stallman  (rms@mole.gnu.ai.mit.edu)

	* getopt.c [not __GNU_LIBRARY__] [__GCC__] [not __STDC__]:
	Declare strlen to return int.  Don't include stddef.h.

Fri Apr  1 00:38:17 1994  Jim Wilson  (wilson@mole.gnu.ai.mit.edu)

	* getopt.c: Delete use of IN_GCC to control whether
	stddef.h or gstddef.h is included.

Thu Apr 14 14:00:56 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle_signature): Fix a bug in template function
	type numbering.

Wed Apr 13 17:23:03 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle_signature): Fix template function with arm
	style argument type number, Tn.

Wed Apr 13 17:11:15 1994  Jason Merrill  (jason@deneb.cygnus.com)

	* cplus-dem.c (optable): Add new[] and delete[].

Fri Apr  8 11:21:42 1994  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* argv.c (buildargv): Don't produce empty argument just because
	there is trailing whitespace.

Wed Apr  6 11:42:14 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* cplus-dem.c (demangle_template): fix 'Q' qualified name bug.
	Handle 'p' same as 'P'.
	* cplus-dem.c (do_type): Handle 'p' same as 'P'.

Sat Mar 26 12:00:13 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* floatformat.c (get_field, put_field):  Fix off by one error in
	little endian case.

Thu Mar 24 10:40:19 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* floatformat.c (floatformat_from_double): Pass unsigned char *,
	not char *, to put_field.

Fri Mar 18 12:34:33 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* memmove.c:  Re-wrote;  placed in public domain.

Wed Mar 16 10:33:07 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* cplus-dem.c (demangle_prefix): If ARM demangling, don't treat
	__Q* as a constructor.

Mon Mar 14 12:26:02 1994  Ian Lance Taylor  (ian@cygnus.com)

	* ieee-float.c: Removed; no longer used.
	* Makefile.in: Changed accordingly.

Mon Mar  7 12:28:17 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* floatformat.c (get_field): Removed unused local variable i.
	(put_field): Removed unused local variable i.

Sun Feb 27 21:50:11 1994  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* floatformat.c: New file, intended to replace ieee-float.c.
	* Makefile.in: Change accordingly.

Thu Feb 24 11:51:12 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* getopt.c: Remove #ifdef GETOPT_COMPAT and #if 0 code.
	(_getopt_initialize): New function, broken out of _getopt_internal.
	(_getopt_internal):
	If long_only and the ARGV-element has the form "-f", where f is
	a valid short option, don't consider it an abbreviated form of
	a long option that starts with f.  Otherwise there would be no
	way to give the -f short option.

Thu Feb 10 14:44:16 1994  Richard Stallman  (rms@mole.gnu.ai.mit.edu)

	* getopt.c [not __GNU_LIBRARY__] [__GNUC__] [not IN_GCC]:
	Test just __STDC__, not emacs.

Wed Feb  9 00:14:00 1994  Richard Stallman  (rms@mole.gnu.ai.mit.edu)

	* getopt.c [not __GNU_LIBRARY__] [__GNUC__] [not IN_GCC]
	[emacs] [not __STDC__]: Don't include stddef.h.  Don't declare strlen.

Fri Dec 24 19:43:00 1993  Noah Friedman  (friedman@nutrimat.gnu.ai.mit.edu)

	* getopt.c (_NO_PROTO): Define before config.h is included.

Mon Sep 20 15:59:03 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* getopt.c, getopt1.c [emacs || CONFIG_BROKETS]: Include
	<config.h> only under these, else "config.h".

Thu Aug 12 18:16:49 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* getopt.c, getopt1.c [HAVE_CONFIG_H]: Include
	<config.h> instead of "config.h".

Sun Feb 20 17:17:01 1994  Ian Lance Taylor  (ian@lisa.cygnus.com)

	* concat.c: Check ANSI_PROTOTYPES rather than __STDC__ to decide
	whether to use prototypes or not.
	* strerror.c (const): Never undefine; let ansidecl.h handle it.
	* strsignal.c (const): Likewise.

Thu Feb 17 13:27:35 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* xatexit.c (_xexit_cleanup): Declare as extern; don't initialize.
	Merging common and initialized variables need not be supported by
	ANSI C compilers.
	(xatexit): Initialize _xexit_cleanup if not already set.
	* xexit.c: Comment fix.

Wed Feb 16 01:15:36 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* xmalloc.c: Don't declare xexit; it's declared in libiberty.h.
	(xrealloc): If oldmem is NULL, allocate with malloc, rather than
	assuming that realloc works correctly.

Tue Feb 15 09:26:16 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* concat.c, ieee-float.c:  Replace inclusion of <string.h>
	with explicit function declarations, as recommended by Ian Taylor.

Sat Feb 12 10:31:11 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* xmalloc.c (xmalloc, xrealloc): Use PTR and size_t throughout.
	(malloc, realloc): Declare.

Thu Feb 10 17:08:19 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* argv.c, basename.c: Include ansidecl.h and libiberty.h.
	* concat.c, fdmatch.c, getruntime.c, spaces.c: Likewise.
	* strerror.c, strsignal.c, xatexit.c, xexit.c: Likewise.
	* xmalloc.c: Likewise.
	* concat.c: Don't declare xmalloc.  If __STDC__, use <stdarg.h>
	macros, not <varargs.h> macros.
	* spaces.c (spaces): Make return type const.  Don't crash if
	malloc returns NULL.
	* strerror.c (struct error_info): Make name and msg fields const.
	(error_names): Make const.
	(strerrno): Make const.
	(strtoerrno): Make argument const.
	* strsignal.c (struct signal_info): Make name and msg fields
	const.
	(signal_names, sys_siglist): Make const.
	(strsignal, strsigno): Make const.
	(strtosigno): Make argument const.
	* xatexit.c: Declare parameter types.
	* xmalloc.c (name): Make const.
	(xmalloc_set_program_name): Make argument const.
	* Makefile.in (INCDIR): Define.
	(.c.o): Use $(INCDIR).
	(dummy.o): Likewise.
	(argv.o, basename.o): New targets; depend on libiberty.h.
	(concat.o, fdmatch.o, getruntime.o, spaces.o): Likewise.
	(strerror.o, strsignal.o, xatexit.o, xexit.o): Likewise.
	(xmalloc.o): Likewise.
	(cplus-dem.o): New target; depend on demangle.h.
	(getopt.o, getopt1.o): New targets; depend on getopt.h.
	(ieee-float.o): New target; depend on ieee-float.h.
	(obstack.o): New target; depend on obstack.h.

Tue Feb  8 05:29:08 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	Handle obstack_chunk_alloc returning NULL.  This allows
	obstacks to be used by libraries, without forcing them
	to call exit or longjmp.
	* obstack.c (_obstack_begin, _obstack_begin_1, _obstack_newchunk):
	If CALL_CHUNKFUN returns NULL, set alloc_failed, else clear it.
	(_obstack_begin, _obstack_begin_1): Return 1 if successful, 0 if not.

Tue Feb  8 00:32:28 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* concat.c, ieee-float.c:  Include <string.h>.

Sun Feb  6 21:28:46 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* xmalloc.c (xmalloc_set_program_name): New function.
	(xmalloc, xrealloc): Include the name in the error message, if set.

	* Replace atexit.c with xatexit.c.
	* Makefile.in (CFILES), functions.def: Change references.

Sat Feb  5 14:02:32 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* getruntime.c (get_run_time): Use getrusage or times if
	HAVE_GETRUSAGE or HAVE_TIMES are defined.

Fri Feb  4 15:49:38 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* atexit.c: New file.
	* Makefile.in (CFILES), functions.def: Add it.
	* xexit.c: New file.
	* Makefile.in (CFILES, REQUIRED_OFILES): Add it.
	* xmalloc.c (xmalloc, xrealloc): Call xexit instead of exit.
	Change request for 0 bytes into request for 1 byte.

Wed Feb  2 11:36:49 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* xmalloc.c (xmalloc, xrealloc): Print size using %lu, and cast to
	unsigned long, to avoid warnings.

Fri Jan 28 17:49:06 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* dummy.c: Don't include time.h ever; always define clock_t as
	"unsigned long".  Until gcc/fixincludes ensures that clock_t
	exists, __STDC__ isn't a sufficient test.  And if clock() doesn't
	exist, clock_t probably doesn't either.

Mon Jan 24 11:52:31 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* clock.c, getruntime.c: New files.
	* Makefile.in: Add to file lists.
	* functions.def (clock): Add to list.
	* dummy.c (time.h): Add if __STDC__.
	(clock_t): #define as "unsigned long" if not __STDC__.

Tue Jan 11 11:27:44 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* strtod.c: Declare atof.  From edler@jan.ultra.nyu.edu (Jan
	Edler).

Tue Dec 28 14:17:30 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* Makefile.in (errors): Use CFLAGS as well as LDFLAGS when
	linking.

Fri Dec 17 12:26:07 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c (demangle_arm_pt): New function.  Common code
	for ARM template demangling.
	* cplus-dem.c (demangle_class_name): Use demangle_arm_pt.
	* cplus-dem.c (demangle_prefix): Likewise.

Tue Nov 30 15:47:48 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* cplus-dem.c (cplus_demangle_opname): Add CONST to please gcc.

Sat Nov 27 11:05:50 1993  Fred Fish  (fnf@cygnus.com)

	Merge changes from tom@basil.icce.rug.nl (Tom R.Hageman)
	* strerror.c, strsignal.c:  As a small space optimization, don't
	include messages when they aren't actually used.

	Merge changes from takefive.co.at!joe (Josef Leherbauer)
	* cplus-dem.c (demangle_prefix, demangle_function_name,
	cplus_demangle_opname):  Fixes for systems where cplus_marker
	is something other than '$'.

Fri Nov 26 13:51:11 1993  Per Bothner  (bothner@kalessin.cygnus.com)

	* waitpid.c:  Simple-minded approcimation to waitpid
	using vanilla wait.
	* functions.def, Makefile.in:  Update accordingly,

Thu Nov 18 18:01:15 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c(demangle_template): fix bug template instantiation
	with value of user defined type.

Wed Nov 17 18:30:21 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c(cplus_demangle_opname): add the subject new function
	to support unified search of operator in class.

Wed Nov 10 09:47:22 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	gcc -Wall lint:
	* strtoul.c (strtoul): use "(digit = *s) != '\0'" not just
	"digit = *s" as condition in while loop.

Tue Nov  9 15:52:22 1993  Mark Eichin  (eichin@cygnus.com)

	* Makefile.in: pass SHELL to recursive make

Thu Nov  4 12:09:26 1993  Per Bothner  (bothner@kalessin.cygnus.com)

	* vfprintf.c, vprintf.c, vsprintf.c:  Make format arg
	be (const char*), for ANSI (and gcc w/fixproto) consistency.

Thu Nov  4 08:29:04 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.table: Make *-*-hiux* use mh-hpux.

Fri Oct 22 07:53:15 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config.table: Add * to end of all OS names.

Tue Oct 19 17:12:01 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* Makefile.in (lneeded-list): ensure that object file names are
	not duplicated, as multiple instances of the same object file in
	a library causes problems on some machines

Mon Oct 18 21:59:28 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* strcasecmp.c, strncasecmp.c: Change u_char to unsigned char.

Fri Oct 15 22:17:11 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* strncasecmp.c: new file, implements strncasecmp
	* strcasecmp.c: new file, implement strcasecmp

	* Makefile.in (CFILES): list these two new source files

	* functions.def: add strcasecmp and strncasecmp entries

Fri Oct 15 14:53:05 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* strtoul.c (strtoul), strtol.c (strtol): Handle overflow
	according to ANSI C.

Thu Oct 14 16:34:19 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c: add support of ARM global constructor/destructor,
	and 'G' for passing record or union in parameter.

Wed Oct 13 13:36:19 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in: Fix comment to clarify that stuff in REQUIRED_OFILES
	should not be in functions.def.

Wed Oct 13 13:13:38 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* functions.def: Removed xmalloc.  Stuff in REQUIRED_OFILES should
	not be in functions.def.

Mon Oct  4 18:26:39 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c: change globl constructor/destructor to proper name

Tue Sep 28 18:11:07 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c: fix bug in constructor/destructor

Tue Sep 28 16:20:49 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c: support both old and new _vt$... vtbl mangled names

Fri Sep 24 19:07:16 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* cplus-dem.c: Fix demangle_template prototype

Fri Sep 24 17:32:55 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* cplus-dem.c: fix template demangling
	* cplus-dem.c: fix const type demangling
	* cplus-dem.c: fix constructor/destructor, virtual table,
	qualifier, global constructor/destructor demangling

Wed Sep  1 23:13:11 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* strsignal.c, strerror.c: Use fully-bracketed initializer to
	keep gcc -Wall happy.

Fri Aug 27 10:30:09 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* cplus-dem.c (do_type): Add CONSTS to make gcc happy with last
	patch.

Fri Aug 27 11:24:54 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	Patch from Paul Flinders:
	* cplus-dem.c (do_type): Deal with arrays.

Tue Aug 24 14:23:50 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* cplus-dem.c (demangle_qualified: Deal with GNU format for more
	than 9 classes.

Wed Aug 18 19:50:29 1993  Jason Merrill  (jason@deneb.cygnus.com)

	* Makefile.in (dummy.o): Redirect to /dev/null to avoid "variable
	not initialized" warnings under HP/UX

Sun Aug 15 20:42:40 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* strerror.c: Move include of stdio.h after sys_errlist #define.
	Also remove NULL definition (stdio.h always defines NULL, so it
	never did anything but clutter up the code).

Sat Aug 14 14:21:49 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* Makefile.in, functions.def: handle xmalloc.c

	* xmalloc.c: provide xmalloc and xrealloc functions

Thu Aug 12 17:38:57 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* cplus-dem.c: Fix a comment.

Sat Aug  7 13:56:35 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* getopt1.c: Declare const the way getopt.c does.

Fri Aug  6 17:03:13 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* obstack.c, alloca.c: Update from FSF.
	* getopt.c, getopt1.c: Update to current FSF version, which
	doesn't use alloca.

Tue Jul 27 14:03:57 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (demangle): Add the target with a message saying
	where demangle went.

Mon Jul 26 15:49:54 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in: Remove obsolete `demangle' target.

Thu Jul 22 08:31:01 1993  Fred Fish  (fnf@deneb.cygnus.com)

	* cplus-dem.c (arm_special):  Apply patch from arg@lucid.com to
	avoid infinite loop on vtbl symbols with disambiguating "junk"
	tacked on the end.

Mon Jul 19 14:10:37 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* strsignal.c: work around some systems losing definitions of
	sys_siglist

	* config/mh-lynxos: this system has a losing definition of
	sys_siglist

	* config.table: use mh-lynxos for *-*-lynxos

Mon Jul 19 17:08:52 1993  Ken Raeburn  (raeburn@rtl.cygnus.com)

	* config.table: Add support for HPPA BSD hosts.

	* config/mh-hpbsd: New file.

Mon Jul 12 18:00:40 1993  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in (TAGS): make work when srcdir != objdir.

Sun Jun 27 15:35:31 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* cplus-dem.c (main): Add long options, including --help and
	--version.
	(usage): New function from code in main.

Tue Jun 22 11:37:38 1993  Per Bothner  (bothner@deneb.cygnus.com)

	* config.table:  New shell scipt, sourced by both ./configure,in
	and ../xiberty/configure.in, to avoid maintainance lossages.
	* configure.in and ../xiberty/configure.in:  Use config.table.

	* configure.in: Don't use mh-aix for AIX 3.2, only for 3.1.
	* configure.in: Map *-*-irix* (except irix4) to mh-sysv.
	* ../xiberty/configure.in:  Update from ./configure.in.

Tue Jun 15 17:05:31 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: remove parentdir support

Wed May 26 12:59:09 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* cplus-dem.c (xrealloc):  Match definition with prototype.

Tue May 25 14:27:51 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* cplus-dem.c (demangle_prefix):  Demangle cfront
	local variables as an extension to ARM demangling.

Fri May 21 09:53:57 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* ieee-float.c: Don't require pointers to double to be aligned.

Tue May 18 17:12:10 1993  Fred Fish  (fnf@cygnus.com)

	(merge changes from dlong@cse.ucsc.edu)
	* cplus-dem.c (consume_count):  Simplify.
	* cplus-dem.c (arm_pt, demangle_class_name):  New functions.
	* cplus-dem.c (various):  Calls to arm_pt, demangle_class_name.

	* cplus-dem.c (xmalloc, xrealloc, strstr):  Make extern decls into
	full prototypes.
	* cplus-dem.c (free):  Add prototype.
	* cplus-dem.c (optable):  Fully bracketize initializer.

Fri May 14 17:13:05 1993  Per Bothner  (bothner@cygnus.com)

	* cplus-dem.c:  Whether initial underscores are stripped
	depends on the external variable prepends_underscore
	(which is generated by the binutils Makefile).

Fri May 14 07:32:20 1993  Ken Raeburn  (raeburn@deneb.cygnus.com)

	* cplus-dem.c (mop_up, arm_special): Remove some unused variables.

Tue May  4 20:31:59 1993  Fred Fish  (fnf@cygnus.com)

	* cplus-dem.c (consume_count):  Return zero if arg does not
	start with digit, and don't consume any input.

Tue May  4 08:10:28 1993  Jim Kingdon  (kingdon@cygnus.com)

	* Makefile.in (demangle): Use ${srcdir} not $^.

	* strtod.c: New file, needed at least for BSD 4.3.

Sun May  2 11:30:42 1993  Fred Fish  (fnf@cygnus.com)

	* strsignal.c (sys_siglist):  For ANSI compilations, type is
	"const char *const".  Also remove conditionalization on __STDC__
	since const is defined away for non-ANSI.

Wed Apr 28 19:29:55 1993  Ken Raeburn  (raeburn@deneb.cygnus.com)

	* configure.in: Recognize *-*-hpux.
	* config/mh-hpux: New file.

Tue Apr 27 15:22:19 1993  Per Bothner  (bothner@cygnus.com)

	* tmpnam.c:  Added ANSI tmpnam() function.
	* functions.def, Makefile.in:  Update accordingly.

Tue Apr 27 13:38:38 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* cplus-dem.c (demangle_function_name): Get the demangling of
	stop__1A right.

Fri Apr 16 23:48:24 1993  Jim Kingdon  (kingdon at calvin)

	* cplus-dem.c: Declare strstr return type.

Fri Mar 26 12:01:26 1993  Jim Kingdon  (kingdon@cygnus.com)

	* strsignal.c: Add some AIX signals.

Thu Mar 25 15:17:23 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (MAKEOVERRIDES): Define to be empty.

Wed Mar 24 01:59:25 1993  david d `zoo' zuhn  (zoo at poseidon.cygnus.com)

	* Makefile.in: add installcheck & dvi targets

Thu Mar 18 14:05:44 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* ieee-float.c:  New file, moved from ../gdb (since it is
	needed by ../opcode/m68k-dis.c).

Tue Mar  2 17:47:31 1993  Fred Fish  (fnf@cygnus.com)

	* cplus-dem.c:  Replace all references to cfront with ARM.

Fri Feb 26 00:17:07 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* cplus-dem.c:  Fix main program (when compiled with -DMAIN)
	to be more useful as a filter.

Sat Feb 20 21:41:39 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* Makefile.in (install_to_libdir, install_to_tooldir): Go into the
	destination directory before running $(RANLIB), in case that
	program tries to create a file in the current directory as part of
	its work.

Thu Feb 18 23:00:19 1993  John Gilmore  (gnu@cygnus.com)

	* strsignal.c (sys_siglist):  Remove yet another *%^&%&$# "const"
	because BSD 4.4 lacks one.  Isn't this fun?

Thu Feb 18 11:24:25 1993  Fred Fish  (fnf@cygnus.com)

	* cplus-dem.c (demangle_signature):  Set func_done after
	demangling a template.
	* cplus-dem.c (demangle_template):  Fix several small bugs
	in demangling GNU style templates.
	* cplus-dem.c (demangle_prefix):  Fix for templates in GNU
	style constructors.
	* cplus-dem.c (gnu_special):  Fix for templates in GNU style
	static data members.

Tue Feb 16 17:28:35 1993  Fred Fish  (fnf@cygnus.com)

	* cplus-dem.c (demangle_signature):  Modify to include type
	modifiers like static and const in remembered types.

Thu Feb 11 22:20:47 1993  Fred Fish  (fnf@cygnus.com)

	* cplus-dem.c (demangled_qualified):  Add new parameter that tells
	whether to prepend or append the qualifiers.
	* cplus-dem.c (string_prepends):  Used now, remove #if 0.
	* cplus-dem.c (demangle_signature):  Call demangle_qualified
	with prepending.
	* cplus-dem.c (gnu_special):  Recognize static data members that
	use qualified names.
	* cplus-dem.c (demangle_qualified):  Accumulate qualifiers in a
	temporary buffer and the prepend or append them to the result,
	as specified by the new "append" flag.
	* cplus-dem.c (do_type):  Call demangled_qualified with
	appending.

Mon Dec 28 10:47:19 1992  Ken Raeburn  (raeburn@cygnus.com)

	* strsignal.c (signal_table): Now const.
	(init_signal_tables): Variable eip now points to const.

	* strerror.c (error_table): Now const.
	(init_error_tables): Variable eip now points to const.

Tue Dec 15 15:36:50 1992  Per Bothner  (bothner@cygnus.com)

	* memchr.c (memchr):  New (ANSI standard) function.
	* Makefile.in, functions.def:  Added memchr.
	* Makefile.in (AR_FLAGS): Use rc instad of non-standard cq.

Wed Dec  2 22:49:10 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* getopt.c: remove use of USG around <alloca.h>, which never meant
	anything anyway

	* config/mh-{aix,apollo68,ncr3000,sysv,sysv4}: removed definitions
	of USG and USGr4

Thu Nov 19 03:09:33 1992  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* cplus-dem.c (demangle_fund_type): Recognize `w', a wide character;
	it's now a type according to the ANSI X3J16 working paper; output
	"wchar_t" for it.
	(demangle_template): Accept `w' as an integral type.
	(xmalloc, xrealloc): Use `char *', not `PTR'.  Cast calls to their
	counterparts malloc and realloc to `char *'.
	(main): Exit with a 0 status.
	* Makefile.in (demangle): Don't expect the user to define
	DEMANGLE, instead force to be cplus-dem.c.  Look in $(srcdir)/../include
	for demangle.h.  Pass it any HDEFINES or XTRAFLAGS.

Wed Nov 18 18:56:20 1992  John Gilmore  (gnu@cygnus.com)

	* Makefile.in (AR_FLAGS):  Avoid verbosity.
	* config/mh-sysv4:  Remove AR_FLAGS override, use INSTALL=cp,
	replace USGr4 with HAVE_SYSCONF.
	* config/mh-solaris:  Remove; mh-sysv4 works now.
	* getpagesize.c:  Replace USGr4 with HAVE_SYSCONF.
	* configure.in:  Simplify host matching table, remove separate
	solaris config file.

Sun Nov 15 09:35:16 1992  Fred Fish  (fnf@cygnus.com)

	* configure.in (i[34]86-*-solaris2*):  Add, use mh-sysv4.

Tue Nov  3 21:27:03 1992  Brendan Kehoe  (brendan@cygnus.com)

	* cplus-dem.c (xmalloc, xrealloc): Add decls.
	(remember_type): Don't cast xmalloc.
	(string_need): Likewise; don't cast xrealloc either.

Fri Oct 23 08:52:01 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in, functions.defs, rename.c: added simple
	implementation of rename, since some binutils programs use it.

Thu Oct 15 15:18:22 1992  Per Bothner  (bothner@cygnus.com)

	* strsignal.c:  Add appropriate 'const' to sys_siglist
	extern declaration (if __STDC__).  (Needed for Linux.)
	* strsignal.c (strsignal): Add cast to remove const-ness.

Fri Oct  9 03:22:55 1992  John Gilmore  (gnu@cygnus.com)

	* Makefile.in (needed.awk, needed2.awk):  Remove erroneous \'s
	before "'s, diagnosed by BSD 4.4 awk.

Thu Oct  8 15:25:12 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: create config.h and needed-list through $(CONFIG_H)
	and $(NEEDED_LIST), to give some hooks for xiberty.

Thu Oct  1 23:31:42 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: use cpu-vendor-triple instead of nested cases

Wed Sep 30 11:26:59 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in, argv.c, basename.c, bcmp.c, bcopy.c, bzero.c,
	concat.c, cplus-dem.c, fdmatch.c, getcwd.c, getopt.c, getopt1.c,
	getpagesize.c, insque.c, memcmp.c, memcpy.c, memmove.c, memset.c,
	obstack.c, sigsetmask.c, spaces.c, strchr.c, strerror.c,
	strrchr.c, strsignal.c, strstr.c, vfork.c, vsprintf.c:
	Convert from using GPL to LGPL.

Sat Sep 26 04:01:30 1992  John Gilmore  (gnu@cygnus.com)

	* Makefile.in (errors):  Leave dummy.o and dummy around so that
	we can see how the needed list was generated (it's sometimes wrong).
	(mostlyclean):  Remove them.

Mon Sep 21 14:50:42 1992  Ian Lance Taylor  (ian@cygnus.com)

	* getcwd.c: supply a default if MAXPATHLEN is not defined.

	* config/mh-irix4: set EXTRA_OFILES to alloca.o, from WRS.

Wed Sep  9 12:41:48 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: Use XTRAFLAGS when compiling, so that xiberty works
	when cross-compiling.

Thu Sep  3 13:29:39 1992  K. Richard Pixley  (rich@sendai.cygnus.com)

	* cplus-dem.c: (demangle_prefix): reduction in strength of strstr
	as a time optimization.

	* cplus-dem.c (cplus_demangle): remove strpbrk test.  Appears to
	be more expensive than simply demangling.

	* cplus-dem.c (cplus_match): new function.

Tue Sep  1 15:24:04 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* cplus-dem.c:  #include <stdio.h>, to define NULL.
	Define current_demangling_style.

Sun Aug 30 17:58:19 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* cplus-dem.c:  New file, moved from ../gdb.
	* cplus-dem.c (set_cplus_marker_for_demangling):  New exported
	function, to avoid compiling in target-dependency for CPLUS_MARKER.
	* cplus-dem.c (cplus_demangle):  Allow demangling style option
	to be passed as a parameter, but using the global variable
	current_demangling_style as a default.
	* Makefile.in:  Update for cplus-dem.c

Sat Aug 29 10:44:09 1992  Fred Fish  (fnf@cygnus.com)

	* obstack.c:  Merge in comment changes from FSF version.  Now
	matches the FSF version exactly.

Fri Aug 28 18:39:08 1992  John Gilmore  (gnu@cygnus.com)

	* obstack.c (CALL_FREEFUN):  Can't use ?: with void values (at
	least on losing DECstations!); use if-then-else instead.

Wed Aug 19 14:40:34 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: always create installation directories.

Mon Aug 10 17:33:40 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: clean up definition of CFILES, more comments

Sat Aug  8 23:10:59 1992  Fred Fish  (fnf@cygnus.com)

	* getopt.c (my_index):  Make first arg const to match strchr,
	which it sometimes is remapped to.

Sat Aug  1 13:48:50 1992  Fred Fish  (fnf@cygnus.com)

	* obstack.c (DEFAULT_ALIGNMENT):  Update to match FSF version.
	* obstack.c (_obstack_begin):  Initialize use_extra_arg.
	* obstack.c (_obstack_begin_1):  New, from FSF version.

Mon Jul 20 21:07:58 1992  Fred Fish  (fnf@cygnus.com)

	* obstack.c (CALL_CHECKFUN, CALL_FREEFUN):  Use use_extra_arg and
	extra_arg.
	* obstack.c (_obstack_begin):  Remove area_id and flags arguments
	(previously added for mmalloc support, interface has changed).
	Also convert flags usage to use use_extra_arg and maybe_empty_object.

Fri Jul 10 00:41:53 1992  Fred Fish  (fnf@cygnus.com)

	* argv.c:  Move expandargv inline and eliminate static variables.
	Rewrite to always allocate in powers of two.  Fix to return an
	argv with a single null string arg if passed a null string.

Fri Jul  3 20:27:29 1992  Fred Fish  (fnf@cygnus.com)

	* random.c, sigsetmask.c, strerror.c, strsignal.c:  Remove
	"(void)" casts from function calls where the return value is
	ignored, in accordance with GNU coding standards.

Mon Jun 29 10:54:19 1992  Fred Fish  (fnf at cygnus.com)

	* bcopy.c, strerror.c, strsignal.c:  Lint.

Thu Jun 25 09:18:41 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* getopt.c: merge changes from make.

Thu Jun 25 04:43:22 1992  John Gilmore  (gnu at cygnus.com)

	* alloca.c:  Incorporate fixes from gdb/alloca.c.
	FIXME:  Eventually move gdb's alloca configuration files here,
	and remove gdb/alloca.c and its Makefile.in support.

Tue Jun 23 21:56:30 1992  Fred Fish  (fnf@cygnus.com)

	* dummy.c:  Define NOTHING to /*nothing*/, change return type
	of main to int and return zero.
	* functions.def:  Supply NOTHING as the fourth arg to macros
	that don't have an explicit arg, to satisfy picky preprocessors.

Wed Jun 17 18:13:58 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in:  Clean up *clean rules, as per standards.texi.

Tue Jun 16 16:11:59 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* getopt.c, getopt1.c: merged largely gratuitous, mostly
	whitespace diffs from other prep distributions.

Mon Jun 15 12:25:46 1992  Fred Fish  (fnf@cygnus.com)

	* config/mh-ncr3000 (INSTALL):  Don't use /usr/ucb/install,
	it is broken on ncr 3000's.

Mon Jun 15 01:03:26 1992  John Gilmore  (gnu at cygnus.com)

	* sigsetmask.c:  Rewrite.  Old one was very confused about its
	arguments and result.  New one can't do much, but at least knows
	what it can't do, and it's good enough for GDB's use.

Sun Jun 14 15:17:40 1992  Stu Grossman  (grossman at cygnus.com)

	* functions.def:  Use proper prototype for strtoul.

Fri Jun 12 19:22:40 1992  John Gilmore  (gnu at cygnus.com)

	* Makefile.in:  Add random.c.
	* config/mh-*:  Use "true" rather than "echo >/dev/null" for ranlib.
	* configure.in:  update solaris2 config.

Wed Jun 10 16:31:29 1992  Fred Fish  (fnf@cygnus.com)

	* random.c:  Add for random() and srandom().
	* functions.def:  Add random

Tue Jun  9 17:27:18 1992  Fred Fish  (fnf@cygnus.com)

	* config/{mh-ncr3000, mh-sysv4}:  Add definition for INSTALL
	using /usr/ucb/install.

Mon Jun  1 13:20:17 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* strerror.c:  Kludge to guard against a conflict with
	possible declaration of sys_errlist in errno.h.

Sun May 31 15:07:47 1992  Mark Eichin  (eichin at cygnus.com)

	* configure.in, config/mh-solaris: add solaris2 config support.

Fri May 29 17:23:23 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* sigsetmask.c:  #ifdef out sigsetmask if SIG_SETMASK
	is not defined (should be defined in signal.h, says Posix.).

Mon May 18 17:35:04 1992  K. Richard Pixley  (rich@cygnus.com)

	* getopt.c: merged changes from make-3.62.11.

Fri May  8 14:53:07 1992  K. Richard Pixley  (rich@cygnus.com)

	* getopt.c: merged changes from bison-1.18.

Tue May  5 11:51:40 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in:  Don't have $(EXTRA_OFILES) depend on config.h,
	since that introduces a circular dependency.
	($(EXTRA_OFILES) are used to build config.h.)

	* strtoul.c:  Fixes to handle non-decimal bases better.

Wed Apr 22 09:27:51 1992  Fred Fish  (fnf@cygnus.com)

	* config/mh-ncr3000:  Replace MINUS_G with CFLAGS.
	* Makefile.dos:  Finish MINUS_G eradication.
	* Makefile.in (CFILES):  Add strsignal.c.
	* Makefile.in (REQUIRED_OFILES):  Add strerror.o strsignal.o
	* Makefile.in (needed-list):  Split creation of errors file to
	separate make target.
	* Makefile.in (config.h, needed2.awk, errors):  New targets.
	* Makefile.in (clean):  Split to multiple lines, add needed2.awk
	and config.h.
	* dummy.c (DEFFUNC, DEFVAR):  Add defines and undefs.
	* functions.def (strerror):  Remove from optional list.
	* functions.def (sys_nerr, sys_errlist, sys_siglist):  DEFVAR's
	* functions.def (strerror, psignal):  DEFFUNC's
	* strerror.c:  Rewrite from scratch to use sys_errlist only if
	available, add errno_max(), add strerrno(), add strtoerrno(),
	add test driver.
	* strsignal.c:  New file, signal equivalent to strerror.c.
	Uses sys_siglist if available, defines signo_max(), strsignal(),
	strsigno(), strtosigno(), psignal(), and test driver.

Mon Apr 20 20:49:32 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: do not print recursion line.

	* Makefile.in: allow CFLAGS to be passed in from command line.
	Removed MINUS_G.  Default CFLAGS to -g.

Mon Apr 20 12:57:46 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* config/mh-aix:  New.  EXTRA_OFILES lists copysign.o,
	so libg++ users don't have to be inconvenienced by a
	libc.a bug (libc.a needs copysign, but doesn't define it!).
	* configure.in:  Use config/mh-aix.
	* strtoul.c:  Handle '-' as required by ANSI.
	Clean up radix handling.
	* strstr.c:  Fix buggy algorithm.
	* Makefile.in:  Change so that ${EXTRA_OFILES} is
	appended to needed-list (which is used by libg++).

Fri Apr 10 22:51:41 1992  Fred Fish  (fnf@cygnus.com)

	* configure.in:  Recognize new ncr3000 config.
	* config/mh-ncr3000:  New config file.

Wed Apr  1 23:31:43 1992  John Gilmore  (gnu at cygnus.com)

	* argv.c, dummy.c:  Lint.

Tue Mar 31 18:46:44 1992  Fred Fish  (fnf@cygnus.com)

	* config/mh-sysv4:  New config file.
	* configure.in (host_makefile_frag):  Set to config/mh-sysv4 for
	host_os == sysv4.
	* getpagesize.c:  For SVR4, use sysconf(_SC_PAGESIZE) to get
	pagesize.

Sun Mar 29 12:26:42 1992  John Gilmore  (gnu at cygnus.com)

	* getopt.c:  Lint.

Fri Mar 27 08:32:55 1992  Fred Fish  (fnf@cygnus.com)

	* functions.def (alloca):  Fix return type and args to avoid
	type clash with gcc's builtin alloca.

Tue Mar 24 23:33:42 1992  K. Richard Pixley  (rich@cygnus.com)

	* configure.in, config/mh-irix4: irix4 support.

	* Makefile.in, functions.def, alloca.c: added alloca.

Tue Mar 24 17:34:46 1992  Stu Grossman  (grossman at cygnus.com)

	* obstack.c (CALL_FREEFUN):  Make it compile on DECstations.

Thu Mar 19 13:57:42 1992  Fred Fish  (fnf@cygnus.com)

	* argv.c:  Fix various external function definitions to be
	correct in an ANSI compilation environment.

Sat Mar 14 17:28:17 1992  Fred Fish  (fnf@cygnus.com)

	* obstack.c:  Changes to support calling mmalloc functions,
	which take an additional argument over malloc functions.

Fri Mar  6 22:01:10 1992  K. Richard Pixley  (rich@cygnus.com)

	* added check target.

Thu Feb 27 22:19:39 1992  Per Bothner  (bothner@cygnus.com)

	* argv.c:  #include alloca-conf.h (needed by AIX).

Wed Feb 26 18:04:40 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in, configure.in: removed traces of namesubdir,
	-subdirs, $(subdir), $(unsubdir), some rcs triggers.  Forced
	copyrights to '92, changed some from Cygnus to FSF.

Sat Feb 22 01:09:21 1992  Stu Grossman  (grossman at cygnus.com)

	* argv.c:  Check in Fred's version which fixes problems with
	alloca().

Fri Feb  7 21:46:08 1992  Stu Grossman  (grossman at cygnus.com)

	* makefile.dos:  Remove NUL to keep patch from failing.

Thu Jan 30 22:48:41 1992  Stu Grossman  (grossman at cygnus.com)

	* getopt.c (_getopt_internal):  Fix usage of enum has_arg.

Mon Jan 20 18:53:23 1992  Stu Grossman  (grossman at cygnus.com)

	* getopt.c, getopt1.c, ../include/getopt.h:  Get latest versions.

Sat Jan 18 16:53:01 1992  Fred Fish  (fnf at cygnus.com)

	* argv.c:  New file to build and destroy standard argument
	vectors from a command string.

	* Makefile.in:  Add argv.c and argv.o to appropriate macros.

Fri Dec 20 12:12:57 1991  Fred Fish  (fnf at cygnus.com)

	* configure.in:  Change svr4 references to sysv4.

	* rindex.c:  Declare return type of externally used function
	strrchr().

Thu Dec 19 18:35:03 1991  John Gilmore  (gnu at cygnus.com)

	* Makefile.in:  Remove "***" in normal output, since Make produces
	this on errors, and it's convenient to search for.

Tue Dec 17 23:21:30 1991  Per Bothner  (bothner at cygnus.com)

	* memcmp.c, memcpy.c, memmove.c, memset.c, strchr.c, strrchr.c:
	New ANSI functions.  The old non-ANSI functions (such as bcopy)
	should be avoided.
	* bcopy.c:  Fix to correctly handle overlapping regions.
	* index.c, rindex.c:  Re-write in terms of strchr() and strrchr().
	* functions.def:  Add the new functions.
	* functions.def:  Add 4th parameter to DEF macro,
	an ansidecl.h-style prototype.
	* dummy.c:  Use expanded DEF macro to create a dummy function
	call, with correct parameter types.  (This avoids some
	complaints from gcc about predefined builtins.)

	Move the functionality of config/mh-default into Makefile.in.
	This avoid duplication, and simplifies things slightly.
	* Makefile.in:  Tweak so we don't need config/mh-default.
	* README:  Update.
	* configure.in:  No longer need config/mh-default.
	* config/mh-default:  Deleted.
	* config/mh-sysv:  Remove lines copied from old mh-default.

Tue Dec 17 05:46:46 1991  John Gilmore  (gnu at cygnus.com)

	* fdmatch.c (fdmatch):  Don't compare st_rdev, which is for
	'mknod' device numbers.

Mon Dec 16 12:25:34 1991  Fred Fish  (fnf at cygnus.com)

	* fdmatch.c, Makefile.in:  Add new function that takes two
	open file descriptors and returns nonzero if they refer to
	the same file, zero otherwise.  (used in gdb)

Wed Dec 11 17:40:39 1991  Steve Chamberlain  (sac at rtl.cygnus.com)
	From DJ:
	* msdos.c: stub functions for dos.
	* makefile.dos, configdj.bat: new.
	* getopt.c: Don't include alloca-conf.h in a GO32 world.


Tue Dec 10 04:14:49 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: infodir belongs in datadir.

Fri Dec  6 23:26:45 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: remove spaces following hyphens because bsd make
	can't cope.  added standards.text support.  install using
	INSTALL_DATA.

	* configure.in: remove commontargets as it is no longer a
	recognized hook.

Thu Dec  5 22:46:46 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: idestdir and ddestdir go away.  Added copyrights
	and shift gpl to v2.  Added ChangeLog if it didn't exist. docdir
	and mandir now keyed off datadir by default.

Fri Nov 22 19:15:29 1991  John Gilmore  (gnu at cygnus.com)

	* Makefile.in:  find-needed.awk does not fit in 14 chars.

	* Makefile.in:  Suppress error checking when compiling the test
	program, because Ultrix make/sh aborts there due to a bug.

Fri Nov 22 12:23:17 1991  Per Bothner  (bothner at cygnus.com)

	* Makefile.in:  Re-did how EXTRA_OFILES is used to be more useful.
	* README:  Explained how the auto-configuration works,
	and how to add new files and/or configurations.

Fri Nov 22 09:45:23 1991  John Gilmore  (gnu at cygnus.com)

	* strtoul.c:  Avoid defining ULONG_MAX if already defined;
	cast a const char * to char * for pedants.

	* getopt.c:  Only define "const" after local include files get to,
	and only if they haven't defined it.

Thu Nov 21 16:58:53 1991  John Gilmore  (gnu at cygnus.com)

	* getcwd.c (remove getwd.c): GNU code should call getcwd().  We
	emulate it with getwd() if available.  This avoids callers having
	to find a MAXPATHLEN or PATH_MAX value from somewhere.
	* Makefile.in, functions.def:  getwd->getcwd.
	* configure.in:  Use generic case for every system.
	* config/mh-{delta88,mach,rs6000,svr4}:  Remove.
	* config/mh-sysv:  Use default handling, just add -DUSG.

Thu Nov 14 10:58:05 1991  Per Bothner  (bothner at cygnus.com)

	* Makefile.in, config/mh-default: Re-do make magic
	so that for the default ("automatic") mode we only
	compile the files we actually need.  Do this using
	a recursive make:  The top-level generates the list
	of needed files (loosely, the ones missing in libc),
	and then passes that list to the recursive make.
	* config/mh-mach:  Remove obsolete STRERROR-{C,O} macros.

Tue Nov 12 19:10:57 1991  John Gilmore  (gnu at cygnus.com)

	RS/6000 host support (grumble).

	* configure.in:  Build alloca-conf.h file from alloca-norm.h
	(everything else) or alloca-botch.h (rs/6000).
	* Makefile.in:  Include . on the include path.
	* getopt.c:  Use alloca-conf.h.
	* alloca-norm.h:  How to declare alloca on reasonable machines.
	* alloca-botch.h: How to declare alloca on braindead machines.

Tue Nov 12 09:21:48 1991  Fred Fish  (fnf at cygnus.com)

	* concat.c :  New file, like concat() in gdb but can take a
	variable number of arguments rather than fixed at 3 args.  For
	now, client applications must supply an xmalloc(), which is a
	front end function to malloc() that deals with out-of-memory
	conditions.

	* Makefile.in:  Add concat.c and concat.o to appropriate macros.

Sat Nov  9 13:29:59 1991  Fred Fish  (fnf at cygnus.com)

	* config/mh-svr4:  Add sigsetmask to list of required functions.

Sun Nov  3 11:57:56 1991  Per Bothner  (bothner at cygnus.com)

	* vsprintf.c:  New file.
	* functions.def, Makefile.in:  Add vsprintf.

Sun Oct 27 16:31:22 1991  John Gilmore  (gnu at cygnus.com)

	* configure.in, config/mh-rs6000:  Add rs/6000 host support.
	* Makefile.in:  Compile with debug info.

Fri Oct 25 17:01:12 1991  Per Bothner  (bothner at cygnus.com)

	* Makefile.in, configure.in, and new files: dummy.c, functions.def,
	config/mf-default:  Added a default configuration mode,
	which includes into libiberty.a functions that are "missing" in libc.
	* strdup.c, vprintf.c, vfprintf.c: New files.

Thu Oct 24 02:29:26 1991  Fred Fish  (fnf at cygnus.com)

	* config/hmake-svr4: New file.

	* config/hmake-sysv: Add HOST_CFILES and HOST_OFILES.

	* basename.c, bcmp.c, bcopy.c, bzero.c, getpagesize.c getwd.c,
	index.c, insque.c, rindex.c, spaces.c, strstr.c, vfork.c: New
	files containing either portable C versions or emulations using
	native library calls.

	* strerror.c:  Add copyright, internal documentation, etc.

	* strtol.c:  Replace hardwired hex constants with some more
	portable macros.  Remove illegal (according to gcc) cast.

	* strtoul.c: Replace hardwired hex constant with more portable
	macro.

	* Makefile.in: Move TARGETLIB and CFLAGS where makefile fragments
	can override them.  Add new source and object file names to CFILES
	and OFILES respectively.

	* configure.in: Add support for SVR4 makefile fragments.

Tue Oct 22 19:00:23 1991  Steve Chamberlain  (steve at cygnus.com)

	* Makefile.in: Move RANLIB, AR and AR_FLAGS to where they can be
	over-ridden by config/hmake-*
	* configure.in: added m88kcvs to sysv list

Fri Oct  4 01:29:08 1991  John Gilmore  (gnu at cygnus.com)

	* Makefile.in:  Most hosts need strerror, but one or two don't,
	and they override these definitions in the host-dependent makefile
	fragment.
	* config/hmake-mach:  The odd man out on strerror -- it's supplied.
	* strerror.c:  New file.

	* strtol.c, strtoul.c:  Add strtol to libiberty, since Mach lacks
	it and bfd uses it.
	* configure.in, Makefile.in, config/hmake-mach:  Only configure
	strtol & strotoul in on Mach.

Tue Sep  3 06:36:23 1991  John Gilmore  (gnu at cygint.cygnus.com)

	* obstack.c:  Merge with latest FSF version.


Local Variables:
version-control: never
End:
