2017-10-10  Release Manager

	* GCC 5.5.0 released.

2017-05-30  Jakub Jelinek  <jakub@redhat.com>

	Backported from mainline
	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-06-03  Release Manager

	* GCC 5.4.0 released.

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

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

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

	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-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.

	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-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.
	* testsuite/demangle-expected: Add new testcases.

2015-12-04  Release Manager

	* GCC 5.3.0 released.

2015-07-16  Release Manager

	* GCC 5.2.0 released.

2015-04-22  Release Manager

	* GCC 5.1.0 released.

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
	* libiberty/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.
	* libiberty/configure: Regenerate.
	* libiberty/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>

	libiberty/
	* 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>

	* libiberty/configure.ac: Fix Linux/MIPS matching rule.
	* libiberty/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>

	* libiberty/configure.ac: use -fPIC on Linux/MIPS hosts.
	* libiberty/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>

	* libiberty/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>

	* libiberty/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>

	* gcc/libiberty/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>

	* libiberty/lbasename.c: New file.
	* libiberty/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>

	* libiberty/random.c (end_ptr): Revert previous change.

2000-08-24  Greg McGary  <greg@mcgary.org>

	* libiberty/cplus-dem.c (cplus_demangle_opname, cplus_mangle_opname,
	demangle_expression, demangle_function_name): Use ARRAY_SIZE.
	* libiberty/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:
