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:
