Mon Jun 12 12:17:20 2000  Andrew Cagney  <cagney@b1.cygnus.com>

 	* mips-tdep.c: Include "symcat.h".
 	(mips_dump_tdep): Print all known but not yet multi-arched values.

Fri Jun  9 15:06:37 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh (struct gdbarch): Add member dump_tdep.
	(struct gdbarch_registration): Ditto.
	(gdbarch_dump): Add ui_file and gdbarch arguments.  Add support
 	for external dump functions.  Dump the macro value.  Call target
 	dump routine.
	(gdbarch_register): New function.
	(gdbarch_registrary): Replace gdbarch_init_registrary.
	* gdbarch.h, gdbarch.c: Re-generate.
	* arch-utils.c (set_arch): Update.
	
	* mips-tdep.c (mips_dump_tdep): New function. Move dump code here.
	(mips_gdbarch_init): From here.

	* maint.c (maintenance_print_architecture): New function.
	(_initialize_maint_cmds): Add command ``maintenance print
 	architecture''.

Wed Jun  7 11:34:54 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* arch-utils.c (target_byte_order, target_byte_order_auto,
 	show_endian, set_endian, set_endian_big, set_endian_little,
 	set_endian_auto, set_endian_from_file, enum set_arch,
 	target_architecture_auto, set_architecture_string,
 	target_architecture_hook, target_architecture, arch_ok, set_arch,
 	set_architecture_from_arch_mach, set_architecture_from_file,
 	show_architecture, set_architecture, info_architecture,
 	set_gdbarch_from_file, initialize_current_architecture): Copy from
 	gdbarch.c.  Rewrite ``set architecture'' and ``set endian''
 	commands to use enums.
	(_initialize_gdbarch_utils): Fix name.
	* arch-utils.h (set_architecture_from_arch_mach,
 	target_architecture_hook): Copy from gdbarch.h.
	* gdbarch.sh: Update.
	* gdbarch.h, gdbarch.c: Re-generate.

Tue Jun  6 16:21:14 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh (generic_register_convertible_not,
 	frame_num_args_unknown): Move from here.
	* arch-utils.c (generic_register_convertible_not,
 	frame_num_args_unknown): To here.
	* arch-utils.h (frame_num_args_unknown): Add declaration.
	* gdbarch.h, gdbarch.c: Re-generate.

2000-06-05  Daniel Berlin  <dan@cgsoftware.com>

	* c-exp.y (yylex): template handling fixes.

2000-06-03  Daniel Berlin  <dan@cgsoftware.com>

	* symtab.h (VTBL_PREFIX_P): Add newer g++ vtbl prefix to prefix list.

	* symtab.c (lookup_partial_symbol): Change to stop forcing linear searches
	on C++ when we fail the binary search, by doing the binary search right.

2000-05-30  Daniel Berlin  <dan@cgsoftware.com>

	* buildsym.c (hashname): Change to use hash function from bcache.c/.h

	* bcache.c (hash): Change to newer hash function.

	* bcache.h (hash): Prototype for hash function

	* dwarf2read.c (TYPE_HASH_SIZE): New define for controlling size
	of type hash.
	(dwarf2_cached_types): New variable that is the cached types.
	(tag_type_to_type): Do the actual caching of types here.

2000-06-05  Mark Kettenis  <kettenis@gnu.org>

	* acconfig.h, configure.in, i386bsd.c (HAVE_STRUCT_REG_R_FS):
	Renamed from HAVE_R_FS.
	(HAVE_STRUCT_REG_GS): Renamed from HAVE_R_GS.
	* configure, config.in: Regenerated.

Sun Jun  4 14:00:01 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Update.  Mention GNU/Linux/SPARC problems.

Wed May 31 21:41:37 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Change buf
 	to a void pointer.  Update initial values.
	* gdbarch.h, gdbarch.c: Re-generate.
	
	* findvar.c (address_to_signed_pointer,
 	signed_pointer_to_address): New functions.
	* inferior.h (signed_pointer_to_address,
 	signed_address_to_pointer): Declare.

	* inferior.h, findvar.c (unsigned_pointer_to_address,
 	address_to_unsigned_pointer): Rename generic_address_to_pointer
 	and generic_pointer_to_address.  Update signatures to match
 	gdbarch changes.

	* config/mips/tm-mips.h (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER):
 	Define. MIPS has signed pointers.

	* defs.h, utils.c (host_pointer_to_address,
 	address_to_host_pointer): New functions.
	* irix5-nat.c (next_link_map_member, first_link_map_member),
 	procfs.c (proc_set_watchpoint, proc_iterate_over_mappings): Use.

	* irix5-nat.c (solib_map_sections, symbol_add_stub): Change
 	function signature to match catch_errors_ftype.

	* TODO: Update. GDB builds using the IRIX native compiler.
	
Sat Jun  3 20:43:59 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* defs.h (strsignal, safe_strsignal): Delete declarations.
	* utils.c (safe_strsignal): Delete.
	* corelow.c (core_open): Replace save_strsignal with
 	target_signal_to_string + target_signal_from_host.
	* TODO: Document problems with target_signal_from_host.

2000-06-03  Kevin Buettner  <kevinb@redhat.com>

	* annotate.c, annotate.h, breakpoint.c, command.c, command.h,
	config/rs6000/tm-rs6000.h, corefile.c, d10v-tdep.c,
	d30v-tdep.c, dbxread.c, dcache.c, dcache.h, dsrec.c,
	dve3900-rom.c, exec.c, fork-child.c, gdbcore.h, hpux-thread.c,
	language.h, linux-thread.c, mdebugread.c, monitor.h, ocd.c,
	procfs.c, ptx4-nat.c, remote-sim.c, remote-utils.h, remote.c,
	rs6000-tdep.c, ser-ocd.c, sol-thread.c, sparcl-tdep.c,
	stabsread.h, stack.c, symfile.c, symfile.h, symtab.h,
	target.c, target.h, top.c, tracepoint.c, tracepoint.h,
	tui/tui.h, tui/tuiIO.c, utils.c, v850ice.c, varobj.c,
	win32-nat.c, wince.c, xcoffsolib.c, xcoffsolib.h: Eliminate
	PARAMS from function pointer declarations. 

2000-06-03  Christopher Faylor  <cgf@cygnus.com>

	* win32-nat.c (safe_symbol_file_add_cleanup): Ensure that gdb_stderr is
	flushed before deleting and restoring it.
	(safe_symbol_file_add): Ensure that gdb_stderr is flushed before
	reassigning it.
	(handle_load_dll): Split into two functions so that WFI can handle
	shared library events.
	(child_solib_loaded_library_pathname): New function.
	(child_clear_solibs): New function.  Clears shared library list.
	(child_solib_add): New function.  Adds shared library symbols.
	(dll_symbol_command): New function.  Handles "dll-symbol" command.
	(info_dll_command): New function.  Handles info
	"sharedlibrary" command.
	(handle_exceptions): Eliminate 'ignore_trap' argument.
	(get_child_debug_event): Eliminate two arguments.  Return "pid" when
	appropriate.  Break out on most events to allow WFI to handle stuff.
	(child_wait): Accomodate get_child_debug_event changes.
	(child_attach): Clear thread list and list of loaded dlls.
	(child_create_inferior): Clear list of loaded dlls.  Use
	wait_for_inferior in a loop to look for first "trap".
	(child_resume): Avoid accessing a possibly-freed thread pointer.
	(_initialize_inftarg): Add "dll-symbols", "sharedlibrary", and "info
	sharedlibrary" commands.
	* config/i386/tm-cygwin.h: Add some shared library (aka DLL) hooks.

2000-06-02  Christopher Faylor  <cgf@cygnus.com>

	* win32-nat.c: Fix up gcc warnings throughout.
	(handle_load_dll): Change DLL name to lower case.
	(handle_exception): Add a second argument indicating whether a
	breakpoint should be ignored.  Return a 0 if the breakpoint was
	ignored.
	(get_child_debug_event): Pass argument to handle_exception to control
	whether a breakpoint should be ignored.
	(child_create_inferior): Use modern cygwin API.  Explicitly clear
	last_sig.  Pass FIRST_EXCEPTION to get_child_debug_event for detection
	of first breakpoint.

2000-06-02  Christopher Faylor  <cgf@cygnus.com>

	* configure.in: Detect correct versions of dlltool and windres when
	cross-compiling.
	* configure: Regenerate.

2000-06-02  J.T. Conklin  <jtc@redback.com>

	* configure.tgt: Add pattern for i[3456]86-*-netbsdelf*.
	* config/i386/nbsdelf.mt: New file.
	* config/i386/tm-nbsdelf.h: New file.
	
	* config/i386/tm-nbsd.h: change include of tm-nbsd.h to 
	the more explicit config/tm-nbsd.h.

2000-06-02  Mark Kettenis  <kettenis@gnu.org>

	* alphabsd-nat.c (supply_fpregset): Substract FP0_REGNUM from
	register number when used as index into fpr_regs array.

Tue May 30 13:31:57 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* defs.h (TARGET_FLOAT_FORMAT, TARGET_DOUBLE_FORMAT,
 	TARGET_LONG_DOUBLE_FORMAT): Delete.

	* gdbarch.sh: Add support for parameterized expressions.
 	(TARGET_FLOAT_FORMAT, TARGET_DOUBLE_FORMAT,
 	TARGET_LONG_DOUBLE_FORMAT): Add.  Include "floatformat.h".
	* gdbarch.h, gdbarch.c: Regenerate.
	
	* arch-utils.c (default_single_format, default_double_format,
 	default_long_double_format): New functions. Include
 	"floatformat.h"
	* arch-utils.h: Declare.
	
	* d10v-tdep.c (d10v_gdbarch_init): Set floating point format.
  	Note that long double is 64 bit, the rest are 32 bit.  Include
 	"floatformat.h".

2000-06-02  Mark Kettenis  <kettenis@gnu.org>

	* config/alpha/nm-fbsd.h (CANNOT_STEP_BREAKPOINT): Define.

2000-06-01  Michael Snyder  <msnyder@seadog.cygnus.com>

	* sol-thread.c (rw_common): Circumstances (eg. a bug in Sun's 
	thread_db library) may cause this function to be called with an
	illegal address, in which case procfs_to_xfer_memory will 
	return zero.  Return an error code instead of looping forever.

Thu Jun  1 20:05:26 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: More suggestions added.

2000-05-31  J.T. Conklin  <jtc@redback.com>

	* configure.host: Add patterns for i[3456]86-*-netbsdaout*
	and i[3456]86-*-netbsdelf*.
	* config/i386/nm-nbsdelf.h: New file.
	* config/i386/nbsdelf.mh: New file.

	* config/i386/nm-nbsd.h: change include of nm-nbsd.h to 
	the more explicit config/nm-nbsd.h.
	* config/i386/tm-nbsd.h: change include of tm-i386bsd.h to
 	tm-i386.h.
	(SIGTRAMP_START, SIGTRAMP_END, SIGCONTEXT_PC_OFFSET): Define.

2000-06-01  Mark Kettenis  <kettenis@gnu.org>

	* NEWS: Mention FreeBSD/Alpha and FreeBSD/i386 3.x and up as new
	native configurations.

	* i386bsd-nat.c: Include "gregset.h".
	(CANNOT_STORE_REGISTER): Define to cannot_fetch_register instead
	of CANNOT_FETCH_REGISTER, if not already defined.
	(supply_gregset): Call supply_register with NULL as its second
	argument instead of supplying our own zeroed out buffer.
	(fill_gregset): Copy contents of correct registers instead of the
	contents of register REGNO.

2000-05-31  Kevin Buettner  <kevinb@redhat.com>

	* gnu-regex.c (re_match_2_internal): Revert 2000-05-27
	patch which removed use of PARAMS from declaration.  This
	file should not have been touched as it is supposed to track
	the version in glibc.

2000-05-31  Mark Kettenis  <kettenis@gnu.org>

	Add support for FreeBSD/Alpha.
	* configure.host, configure.tgt (alpha*-*-freebsd*): New entry.
	* alphabsd-nat.c, config/alpha/fbsd.mh, config/alpha/fbsd.mt,
	config/alpha/nm-fbsd.h, config/alpha/tm-fbsd.h,
	config/alpha/xm-fbsd.h: New files.

2000-05-31  Pierre Muller  <muller@sourceware.cygnus.com>

	* MAINTAINERS: Add myself to "Write After Approval" list.

Tue May 30 18:48:33 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Re-organize.

Tue May 30 11:22:28 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh: Add field ``postdefault''.  Rename fields
 	``startup'' and ``default'' to ``staticdefault'' and
 	``predefault''.  Fix initialization of valid_p.  Create/compare
 	gdbarch.log.

Mon May 29 22:47:16 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* config/sparc/nm-sun4sol2.h (GDB_GREGSET_T, GDB_FPREGSET_T):
 	Define.
	* config/sparc/xm-sun4sol2.h: (GDB_GREGSET_TYPE,
 	GDB_FPREGSET_TYPE): Delete.

Mon May 29 15:41:10 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* symtab.h (make_cleanup_free_search_symbols): Add declaration.
	* symtab.c (make_cleanup_free_search_symbols,
 	do_free_search_symbols_cleanup): New functions.
	(search_symbols, symtab_symbol_info, rbreak_command): Update.
	(search_symbols): Pass ``sr'', and not its address, to
 	make_cleanup_free_search_symbols.

2000-05-28  Kevin Buettner  <kevinb@redhat.com>

	* config/nm-linux.h (GDB_GREGSET_T, GDB_FPREGSET_T): Fix typos.

2000-05-27  Kevin Buettner  <kevinb@redhat.com>

	* abug-rom.c, alpha-nat.c, alpha-tdep.c, annotate.c,
	annotate.h, arc-tdep.c, ax-gdb.c, ax-gdb.h, ax-general.c,
	ax.h, breakpoint.c, breakpoint.h, c-exp.y, c-lang.c, c-lang.h,
	call-cmds.h, ch-exp.c, ch-lang.c, ch-lang.h, cli-out.c,
	coff-solib.h, coffread.c, command.c, command.h, complaints.c,
	complaints.h, config/a29k/tm-a29k.h, config/a29k/tm-vx29k.h,
	config/alpha/nm-linux.h, config/alpha/nm-osf.h,
	config/alpha/nm-osf2.h, config/alpha/tm-alpha.h,
	config/alpha/tm-alphalinux.h, config/arc/tm-arc.h,
	config/arm/tm-embed.h, config/d30v/tm-d30v.h,
	config/fr30/tm-fr30.h, config/h8300/tm-h8300.h,
	config/h8500/tm-h8500.h, config/i386/nm-i386bsd.h,
	config/i386/nm-i386sco.h, config/i386/nm-i386sol2.h,
	config/i386/nm-i386v.h, config/i386/nm-linux.h,
	config/i386/nm-nbsd.h, config/i386/nm-ptx4.h,
	config/i386/nm-symmetry.h, config/i386/tm-cygwin.h,
	config/i386/tm-i386.h, config/i386/tm-i386nw.h,
	config/i386/tm-i386sol2.h, config/i386/tm-i386v.h,
	config/i386/tm-i386v4.h, config/i386/tm-nbsd.h,
	config/i386/tm-ptx.h, config/i386/tm-sun386.h,
	config/i960/tm-mon960.h, config/i960/tm-nindy960.h,
	config/m32r/tm-m32r.h, config/m68k/nm-dpx2.h,
	config/m68k/nm-linux.h, config/m68k/tm-cisco.h,
	config/m68k/tm-delta68.h, config/m68k/tm-es1800.h,
	config/m68k/tm-isi.h, config/m68k/tm-linux.h,
	config/m68k/tm-m68k.h, config/m68k/tm-m68kv4.h,
	config/m68k/tm-news.h, config/m68k/tm-sun3.h,
	config/m68k/tm-vx68.h, config/m68k/xm-hp300bsd.h,
	config/m88k/tm-m88k.h, config/mcore/tm-mcore.h,
	config/mips/nm-irix3.h, config/mips/nm-irix4.h,
	config/mips/nm-irix5.h, config/mips/nm-mips.h,
	config/mips/tm-embed.h, config/mips/tm-mips.h,
	config/mn10200/tm-mn10200.h, config/mn10300/tm-mn10300.h,
	config/nm-linux.h, config/nm-lynx.h, config/ns32k/nm-nbsd.h,
	config/ns32k/tm-merlin.h, config/ns32k/tm-umax.h,
	config/pa/nm-hppah.h, config/pa/tm-hppa.h,
	config/pa/tm-hppa64.h, config/pa/xm-hppah.h,
	config/powerpc/nm-linux.h, config/powerpc/tm-linux.h,
	config/powerpc/tm-ppc-eabi.h, config/powerpc/tm-solaris.h,
	config/powerpc/xm-aix.h, config/rs6000/nm-rs6000.h,
	config/rs6000/tm-rs6000.h, config/rs6000/xm-rs6000.h,
	config/sh/tm-sh.h, config/sparc/nm-linux.h,
	config/sparc/nm-sun4os4.h, config/sparc/nm-sun4sol2.h,
	config/sparc/tm-sp64.h, config/sparc/tm-sp64sim.h,
	config/sparc/tm-sparc.h, config/sparc/tm-sparclet.h,
	config/sparc/tm-spc-em.h, config/sparc/tm-sun4os4.h,
	config/sparc/tm-sun4sol2.h, config/tic80/tm-tic80.h,
	config/tm-sysv4.h, config/v850/tm-v850.h, config/vax/tm-vax.h,
	config/w65/tm-w65.h, config/xm-aix4.h, config/z8k/tm-z8k.h,
	copying.c, core-aout.c, core-regset.c, core-sol2.c,
	corefile.c, corelow.c, cp-valprint.c, cpu32bug-rom.c,
	d10v-tdep.c, d30v-tdep.c, dbug-rom.c, dbxread.c, dcache.c,
	dcache.h, demangle.c, dink32-rom.c, dsrec.c, dstread.c,
	dve3900-rom.c, dwarf2read.c, dwarfread.c, elfread.c,
	environ.h, eval.c, exec.c, expprint.c, expression.h, f-exp.y,
	f-lang.c, f-lang.h, f-valprint.c, findvar.c, fr30-tdep.c,
	frame.h, gdb_string.h, gdbcmd.h, gdbcore.h,
	gdbserver/server.h, gdbtypes.c, gdbtypes.h, gnu-regex.c,
	h8300-tdep.c, hp-psymtab-read.c, hp-symtab-read.c,
	hp300ux-nat.c, hppa-tdep.c, hppah-nat.c, hpread.c, hpread.h,
	hpux-thread.c, i386-tdep.c, i386aix-nat.c, i386mach-nat.c,
	i386v-nat.c, i386v4-nat.c, i387-tdep.c, i960-tdep.c, infcmd.c,
	inferior.h, inflow.c, infptrace.c, inftarg.c, irix4-nat.c,
	irix5-nat.c, jv-exp.y, jv-lang.c, jv-lang.h, language.c,
	language.h, lynx-nat.c, m2-exp.y, m2-lang.c, m2-lang.h,
	m32r-rom.c, mac-nat.c, main.c, maint.c, mdebugread.c,
	mi/mi-out.c, minsyms.c, mips-nat.c, mips-tdep.c, mipsread.c,
	mn10300-tdep.c, mon960-rom.c, monitor.c, monitor.h, nlmread.c,
	objfiles.c, objfiles.h, ocd.c, ocd.h, op50-rom.c, os9kread.c,
	osfsolib.c, pa64solib.c, pa64solib.h, parse.c, parser-defs.h,
	ppc-bdm.c, printcmd.c, procfs.c, remote-array.c, remote-bug.c,
	remote-e7000.c, remote-es.c, remote-est.c, remote-hms.c,
	remote-mips.c, remote-nindy.c, remote-nrom.c, remote-rdi.c,
	remote-rdp.c, remote-sds.c, remote-sim.c, remote-udi.c,
	remote-utils.c, remote-utils.h, remote-vx.c, remote.c,
	rom68k-rom.c, rs6000-nat.c, rs6000-tdep.c, scm-exp.c,
	scm-lang.c, scm-lang.h, ser-e7kpc.c, ser-mac.c, sh3-rom.c,
	sol-thread.c, solib.c, solib.h, somread.c, somsolib.c,
	somsolib.h, source.c, sparc-nat.c, sparcl-tdep.c,
	sparclet-rom.c, srec.h, stabsread.c, stabsread.h, stack.c,
	sun3-nat.c, symfile.c, symfile.h, symmisc.c, symtab.c,
	symtab.h, target.c, target.h, terminal.h, thread.c, top.c,
	top.h, tracepoint.c, tracepoint.h, tui/tui-file.c, tui/tui.c,
	tui/tui.h, tui/tuiCommand.h, tui/tuiData.c, tui/tuiData.h,
	tui/tuiDataWin.h, tui/tuiDisassem.c, tui/tuiDisassem.h,
	tui/tuiGeneralWin.c, tui/tuiGeneralWin.h, tui/tuiIO.c,
	tui/tuiIO.h, tui/tuiLayout.c, tui/tuiLayout.h, tui/tuiRegs.c,
	tui/tuiRegs.h, tui/tuiSource.c, tui/tuiSource.h,
	tui/tuiSourceWin.h, tui/tuiStack.c, tui/tuiStack.h,
	tui/tuiWin.c, tui/tuiWin.h, typeprint.c, ui-file.c, ui-out.h,
	ultra3-nat.c, utils.c, v850-tdep.c, v850ice.c, valarith.c,
	valops.c, valprint.c, value.h, values.c, varobj.c, w89k-rom.c,
	win32-nat.c, wince.c, wrapper.c, wrapper.h, xcoffread.c,
	xcoffsolib.c, xmodem.h, z8k-tdep.c: Remove PARAMS from function
	declarations.

2000-05-26  Michael Snyder  <msnyder@seadog.cygnus.com>

	* gregset.h: New file.  Typedefs for gdb_gregset_t and 
	gdb_fpregset_t, prototypes for supply_gregset and friends.
	* procfs.c: Include gregset.h.  Delete local prototypes for
	supply_gregset etc., and local typedef gdb_gregset_t etc.
	* sol-thread.c: Include gregset.h, delete local prototypes, 
	add appropriate casts to gdb_gregset_t.
	* uw-thread.c, lin-thread.c, core-sol2.c, core-regset.c, 
	sparc-tdep.c, ptx4-nat.c, ppc-linux-nat.c, mipsv4-nat.c, 
	m88k-nat.c, m68klinux-nat.c, m68k-tdep.c, irix5-nat.c, 
	irix4-nat.c, ia64-linux-nat.c, i386v4-nat.c, cxux-nat.c,
	arm-linux-nat.c, alpha-nat.c: Include gregset.h.
	* config/nm-linux.h: Define GDB_GREGSET_T, GDB_FPREGET_T.
	* config/sparc/nm-sun4sol2.h: Ditto.
	* config/sparc/xm-sun4sol2.h: (GDB_GREGSET_TYPE,
 	GDB_FPREGSET_TYPE): Delete (replaced by GDB_GREGSET_T etc.)

Thu May 25 16:56:05 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (AC_CHECK_HEADERS): Check for ncurses.h.
	* config.in, configure: Re-generate.
	
2000-05-25  Scott Bambrough <scottb@netwinder.org>

	* arm-linux-tdep.c (find_minsym_and_objfile): New.
	(skip_hurd_resolver): New.
	(arm_linux_skip_solib_resolver): New.
	(arm_skip_solib_resolver): Removed.

	* config/arm/tm-linux.h (SKIP_SOLIB_RESOLVER): Changed to use 
	arm_linux_skip_solib_resolver.

2000-05-25  Mark Kettenis  <kettenis@gnu.org>

	* acconfig.h (HAVE_R_FS, HAVE_R_GS): Add.
	* configure.in: Add checks for r_fs and r_gs members of
	`struct reg'.
	* config.in, configure: Regenerated.

2000-05-25  Eli Zaretskii  <eliz@is.elta.co.il>

	* ser-go32.c: Remove PARAMS.

Thu May 25 15:22:12 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (AC_CHECK_HEADERS): Check for <dirent.h>,
 	<sys/ndir.h>, <sys/dir.h> and <ndir.h>.
	* config.in, configure: Re-generate.	
	* gdb_dirent.h: New file

	* infptrace.c: Include "gdb_dirent.h" instead of <sys/dir.h>.
	* core-aout.c: Ditto.
	* procfs.c: Include "gdb_dirent.h" instead of <dirent.h>.

Thu May 25 14:43:30 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* config.in: Regenerate.

Thu May 25 13:49:17 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Fri 19 May 2000 Eli Zaretskii <eliz@is.elta.co.il>: *
 	config/djgpp/fnchange.lst: Fix bfd/coff-tic54x.c, bfd/coff-tc54x.c
 	and gdb/testsuite/gdb.mi/mi-var-cmd.exp.

Thu May 25 11:09:50 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (AC_OUTPUT): Do not generate tui/Makefile.
	(enable-tui): Convert Makefile configury to use the same mechanism
 	as MI.

	* Makefile.in (BUILD_TUI, TUI_LIBRARY, TUI_DIR, TUI_SRC,
 	TUI_CFLAGS): Delete
	(all-tui): Delete target.
	(tuiWin.o, tuiStack.o, tuiSourceWin.o, tuiSource.o, tuiRegs.o,
 	tuiLayout.o, tuiIO.o, tuiGeneralWin.o, tuiDisassem.o,
 	tuiDataWin.o, tuiData.o, tuiCommand.o, tui.o): New targets.
	(SUBDIR_TUI_OBS, SUBDIR_TUI_SRCS, SUBDIR_TUI_DEPS,
 	SUBDIR_TUI_INITS, SUBDIR_TUI_LDFLAGS, SUBDIR_TUI_CFLAGS,
 	SUBDIR_TUI_ALL, SUBDIR_TUI_CLEAN, SUBDIR_TUI_INSTALL,
 	SUBDIR_TUI_UNINSTALL): Define.

	* TODO: Update.

Thu May 25 11:02:24 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Update.  Mark Kettenis fixed FreeBSD >2.2 support.
	* MAINTAINERS: Update Jim Ingham's address.

2000-05-25  Mark Kettenis  <kettenis@gnu.org>

	Add support for FreeBSD/i386 ELF.
	* i386bsd-nat.c: New file.
	* config/i386/tm-fbsd.h (HAVE_I387_REGS): Define.
	Include "i386/tm-i386.h" instead of "i386/tm-i386b.h".
	(NUM_REGS): Remove redefinition.
	(USE_STRUCT_CONVENTION): Define.
	(i386_float_info): Remove prototype.
	(FLOAT_INFO): Remove define.
	(JB_ELEMENT_SIZE): Define to 4.
	(JB_PC): Define to 0.
	(GET_LONGJMP_TARGET): Define.
	(SIGTRAMP_START, SIGTRAMP_END): Define.
	(SIGCONTEXT_PC_OFFSET): Define.
	(IN_SOLIB_CALL_TRAMPOLINE): Only define if !SVR4_SHARED_LIBS
	* config/i386/nm-fbsd.h (PTRACE_ARG3_TYPE): Define to caddr_t.
	(FETCH_INFERIOR_REGISTERS): Define.
	(ATTACH_DETACH): Define.
	(kernel_u_size): Remove PARAMS.
	(register_u_addr): Use CORE_ADDR in prototype where appropriate.
	Remove PARAMS.
	(SVR4_SHARED_LIBS) [FREEBSD_ELF || __ELF__ && !FREEBSD_AOUT]:
	Define.
	[SVR4_SHARED_LIBS]: Include "elf/common.h".
	Only define aliases for struct members from <link.h> if
	!SVR4_SHARED_LIBS.
	* config/i386/xm-fbsd.h: New file.
	* config/i386/fbsd.mt (TDEPFILES): Remove solib.o.
	* config/i386/fbsd.mh (NATDEPFILES): Remove i386b-nat.o.  Add
	core-regset.o i387-nat.o i386bsd-nat.o.

2000-05-24  Michael Snyder  <msnyder@seadog.cygnus.com>

	* findvar.c (value_from_register): Factor code, simplify logic.

2000-05-23  J.T. Conklin  <jtc@redback.com>

	* config/i386/nbsd.mt (TDEPFILES): Move solib.o from here...
	* config/i386/nbsd.mh (NATDEPFILES): ...to here.
	* config/m68k/nbsd.mt (TDEPFILES): Move solib.o from here...
	* config/m68k/nbsd.mh (NATDEPFILES): ...to here.
	* config/ns32k/nbsd.mt (TDEPFILES): Move solib.o from here...
	* config/ns32k/nbsd.mh (NATDEPFILES): ...to here.

	* config/powerpc/nbsd.mt (GDBSERVER_DEPFILES): Add low-nbsd.o.
	* configure.tgt (powerpc-*-netbsd*): add gdbserver to configdirs.
	* gdbserver/low-nbsd.c (initialize_arch): Define for PPC.
	(fetch_inferior_registers): Likewise.
	(store_inferior_registers): Likewise.

	* gdbserver/low-nbsd.c (fetch_inferior_registers): Handle X86 
	floating point registers.
	(store_inferior_registers): Likewise.

2000-05-24  Mark Kettenis  <kettenis@gnu.org>

	* i387-nat.h, i387-nat.c: New files.

Tue May 23 17:21:24 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* config/sparc/nm-linux.h: Include config/nm-linux.h.
	* config/powerpc/nm-linux.h: Likewise.

Tue May 23 13:20:00 1999  Gregory Lielens  <info@fft.be>

	* f-valprint.c : Corrected f_val_print function for TYPE_CODE
	(type) = TYPE_CODE_COMPLEX

Wed May 24 00:38:09 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* utils.c (make_cleanup_close, do_close_cleanup): New functions.
	* defs.h (make_cleanup_close): Add declaration.

Tue May 23 20:47:50 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (build_warnings): Add -Wuninitialized.
	* configure: Regenerate.

Tue May 23 17:44:18 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Mon May 8 14:49:51 2000 Andrew Cagney <cagney@b1.cygnus.com>
 	(gdb 5.0): From Michael Paddon <mmpp@esec.com.au>:
	* configure.in (AC_CHECK_HEADERS): Check for <sys/user.h>.

	* configure: Re-generate.
	* proc-api.c: Only include <sys/user.h> when available.
	(ioctl_table): Check that PIOCGETPR and PIOCGETU are defined.

	* TODO: Update.

2000-05-17  Michael Snyder  <msnyder@seadog.cygnus.com>

	* config/sparc/tm-sun4sol2.h: Turn on multi-arch.
	* sparc-tdep.c (gdb_print_insn_sparc): Remove temp. multi-arch hack.

2000-05-17  Andrew Cagney  <cagney@sourceware.cygnus.com>

	* GDB 5.0 released.
	* Makefile.in (VERSION): Set to 5.0.

Mon May 22 16:20:31 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* inferior.h (make_cleanup_restore_inferior_status): 
	* infrun.c (make_cleanup_restore_inferior_status,
 	do_restore_inferior_status_cleanup): New functions.
	* valops.c (hand_function_call): Use.
	* infcmd.c (disable_longjmp_breakpoint_cleanup): New function.
	(step_1): Use.
	* symfile.c (clear_symtab_users_cleanup): New function.
	(syms_from_objfile, reread_symbols): Use.
	* objfiles.c (make_cleanup_free_objfile, do_free_objfile_cleanup):
 	New functions.
	* objfiles.h (make_cleanup_free_objfile): Add declaration.
	* symfile.c (syms_from_objfile, reread_symbols), hpread.c
 	(hpread_build_psymtabs), hp-psymtab-read.c
 	(hpread_build_psymtabs): Use.
	* dwarf2read.c (make_cleanup_free_die_list,
 	do_free_die_list_cleanup): New functions.
	(psymtab_to_symtab_1): Use.
	* tracepoint.c (make_cleanup_free_actions,
 	do_free_actions_cleanup): New functions.
	(read_actions): Use.
	* corelow.c (core_close_cleanup): New function.
 	(core_open): Use.
	* dbxread.c (make_cleanup_free_bincl_list,
 	do_free_bincl_list_cleanup): New function.
	(read_dbx_symtab): Use.
	* coffread.c (free_linetab_cleanup, free_stringtab_cleanup): New
 	functions.
	(coff_symfile_read): Use.
	* varobj.c (make_cleanup_free_variable, do_free_variable_cleanup):
 	New function.
	(varobj_create): Use.
	* sparcl-tdep.c (close_tty), infrun.c (resume_cleanups), parse.c
 	(free_funcalls): Change signature to match make_cleanup_ftype.
	* infrun.c (resume), tracepoint.c (encode_actions), remote-udi.c
 	(download), solib.c (open_symbol_file_object), sparcl-tdep.c
 	(sparclite_open), parse.c (parse_exp_1): Remove cast using
 	make_cleanup_func.

Mon May 22 15:49:13 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* procfs.c (info_proc_cmd): Use make_cleanup_freeargv.
	(proc_iterate_over_mappings): Use make_cleanup_close.
	(proc_get_LDT_entry): Ditto.
	(do_closedir_cleanup): New function.
	(proc_update_threads): Use.
	(do_destroy_procinfo_cleanup): New function.
	(info_proc_cmd): Use.

Mon May 22 15:21:38 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* top.h (command_loop_marker): Change signature to match
 	make_cleanup_ftype.
	* top.c (command_loop_marker): Update.
	(command_loop, simplified_command_loop), event-top.c
 	(command_handler): Remove cast using make_cleanup_func.
	* event-top.c (command_handler): Ditto.

	* top.c (do_chdir_cleanup): New function.
	(gdb_init): Use.  Use xstrdup instead of strsave.
	* top.c (do_fclose_cleanup): New function.
	(source_command): Use.
	* top.c (do_restore_instream_cleanup): Rename
 	source_cleanup. Change signature to match make_cleanup.
	(read_command_filem execute_user_command): Update. Remove cast
 	using make_cleanup_func.
	* top.c (do_free_command_lines_cleanup,
 	make_cleanup_free_command_lines): New funtions.
	(get_command_line, read_command_lines): Use.
	* top.c (arg_cleanup): Change signature to match make_cleanup.
	(setup_user_args): Remove cast using make_cleanup_func.

Mon May 22 12:05:13 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* defs.h (t_reg): Delete typedef.
	(preg, preg_nz): Delete function. Replaced by phex and phex_nz.
	* utils.c (phex, phex_nz): New functions.
	(paddr, paddr_nz): Use.

	* monitor.c (monitor_store_register): Replace preg with phex.

Mon May 22 11:46:01 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Add note on typecast using catch_errors_ftype.

2000-05-21  Mark Kettenis  <kettenis@gnu.org>

	* i387-tdep.c (print_i387_value): Cast &value to (char *) in
	pointer arithmetic.  Fixes a bug which manifested itself on
	FreeBSD.

2000-05-20  J.T. Conklin  <jtc@redback.com>

	* target.h (target_memory_bfd_section): Removed declaration.
	* target.c (target_memory_bfd_section): Removed.
	* exec.c (xfer_memory): Removed #if'ed-out code which referenced
 	target_memory_bfd_section.
	
	* target.h (target_read_memory_section): Removed declaration.
	* target.c (target_read_memory_section): Removed.
	(target_xfer_memory): Update, removed bfd_section argument.
	(target_read_string, target_read_memory, target_write_memory):
	Update for above change.

	* gdbcore.h (read_memory_section): Removed declaration.
	* corefile.c (read_memory_section): Removed.
	* jv-lang.c (get_java_utf8_name): Changed calls to
 	read_memory_section to read_memory.
	* printcmd.c (printf_command): Likewise.
	* valops.c (value_at, value_fetch_lazy): Likewise.
	
2000-05-18  J.T. Conklin  <jtc@redback.com>

	* configure.host, configure.tgt (powerpc-*-netbsd*): New entry.
	* config/powerpc/nbsd.mh, config/powerpc/nbsd.mt,
 	config/powerpc/tm-nbsd.h, config/powerpc/nm-nbsd.h,
 	config/powerpc/xm-nbsd.h: New files.

2000-05-17  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb/config/djgpp/README: Fine-tune installation instructions
        based on user reports.

Wed May 17 18:27:45 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (build_warnings): List possible warnings.
	* configure: Regenerate.
	* TODO: More updates.
	* MAINTAINERS: Add Gary Thomas and Joern Renneck to Write After
 	Approval.

Wed May 17 16:48:36 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-04-14 Gary Thomas <gthomas@redhat.com>:
	* config/v850/tm-v850.h: Change breakpoint sequence to be
	'br *' since there is no 16bit "illegal" instruction on this
	processor.

Tue May 16 18:57:14 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Review.  Delete anything that is no longer applicable.

Tue May 16 14:17:20 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* utils.c (free_current_contents): Make more robust.

Tue May 16 13:30:08 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* symtab.h (make_cleanup_discard_minimal_symbols): Replace
 	discard_minimal_symbols.
	* minsyms.c (make_cleanup_discard_minimal_symbols):
	(do_discard_minimal_symbols_cleanup): New functions.

	* xcoffread.c (xcoff_initial_scan), somread.c (som_symfile_read),
 	solib.c (solib_add_common_symbols), os9kread.c
 	(os9k_symfile_read), nlmread.c (nlm_symfile_read), mipsread.c
 	(mipscoff_symfile_read), elfread.c (elf_symfile_read), dstread.c
 	(dst_symfile_read), dbxread.c (dbx_symfile_read), coffread.c
 	(coff_symfile_read): Replace make_cleanup.

Mon May 15 09:32:31 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* command.h (add_set_cmd): Change VAR parameter to void pointer.
	(add_set_enum_cmd): Change VAR parameter to char pointer pointer.
	(struct command): Change member VAR to void pointer.
	* command.c (add_set_cmd, add_set_enum_cmd): Update.
	
	* remote.c (add_packet_config_cmd), mips-tdep.c
 	(_initialize_mips_tdep), infrun.c (_initialize_infrun),
 	i386-tdep.c (_initialize_i386_tdep), arm-tdep.c
 	(_initialize_arm_tdep): Update VAR parameter to add_set_enum_cmd.

Tue May 16 12:46:04 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* wrapper.h (wrap_value_subscript): Delete declaration.

Tue May 16 10:54:55 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* defs.h (make_cleanup_bfd_close): Add declaration.
	* utils.c (do_bfd_close_cleanup, make_cleanup_bfd_close): New
 	functions.

	* symfile.c (generic_load), sparcl-tdep.c (download), remote-udi.c
 	(download), remote-e7000.c (e7000_load), corelow.c (core_open,
 	core_file_to_sym_file): Replace calls to make_cleanup.

Mon May 15 16:50:45 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Add notes on register cache.

Mon May 15 21:27:27 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh-tdep.c (sh_dsp_reg_names, sh3_dsp_reg_names): New arrays.
	(sh_processor_type_table): Add entries for bfd_mach_sh_dsp and
	 bfd_mach_sh3_dsp.
	(sh_show_regs): Floating point registers are called fr0-fr15.
	For sh4, display fpul, fpscr and fr0-fr15 / dr0-dr14 as appropriate.
	Handle sh-dsp and sh3-dsp.
	config/sh/tm-sh.h (REGISTER_VIRTUAL_TYPE): sh-dsp / sh3-dsp
	don't have floating point registers.
	(DSR_REGNUM, A0G_REGNUM, A0_REGNUM, A1G_REGNUM, A1_REGNUM): Define.
	(M0_REGNUM, M1_REGNUM, X0_REGNUM, X1_REGNUM, Y0_REGNUM): Likewise.
	(Y1_REGNUM, MOD_REGNUM, RS_REGNUM, RE_REGNUM, R0B_REGNUM): Likewise.

2000-05-15  Eli Zaretskii  <eliz@is.elta.co.il>

	* Makefile.in (gdbtypes.o, varobj.o): Depend on wrapper.h.

	* wrapper.h (gdb_value_subscript, wrap_value_subscript): Add
	prototypes.

Mon May 15 15:31:30 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* valops.c (hand_function_call): Replace #ifdef
 	SAVE_DUMMY_FRAME_TOS with if SAVE_DUMMY_FRAME_TOS_P.

	* gdbarch.sh (SAVE_DUMMY_FRAME_TOS): Add.
	* gdbarch.h, gdbarch.c: Regenerate.

Mon May 15 16:05:46 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* ax.h (make_cleanup_free_agent_expr): Add declaration.
	* ax-general.c (do_free_agent_expr_cleanup): 
	(make_cleanup_free_agent_expr): New functions.

	* tracepoint.c (validate_actionline, encode_actions), ax-gdb.c
 	(expr_to_agent, gen_trace_for_expr, agent_command): Replace calls
 	to make_cleanup.

Mon May 15 14:06:23 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* breakpoint.h (make_cleanup_delete_breakpoint,
 	make_exec_cleanup_delete_breakpoint): Declare.
	* breakpoint.c (make_cleanup_delete_breakpoint,
 	make_exec_cleanup_delete_breakpoint,
 	do_delete_breakpoint_cleanup): New fuctions.
	
	* infcmd.c (finish_command), hppa-tdep.c (hppa_pop_frame),
 	breakpoint.c (until_break_command, until_break_command): Replace
 	call to make_cleanup / make_exec_cleanup.

Mon May 15 13:25:57 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* defs.h (core_addr_greaterthan, core_addr_lessthan), utils.c
 	(core_addr_greaterthan, core_addr_lessthan): Move from here.
	* arch-utils.h (core_addr_greaterthan, core_addr_lessthan),
 	arch-utils.c (core_addr_greaterthan, core_addr_lessthan): To here.

Mon May 15 12:07:55 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* printcmd.c (print_frame_args), stack.c (print_frame), command.c
 	(do_setshow_command), breakpoint.c (print_it_typical, mention):
 	Use make_cleanup_ui_out_stream_delete.

Mon May 15 11:23:23 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* proc-events.c (init_syscall_table): Delete stray ``;''.
	* ui-out.c (ui_out_set_flags, ui_out_clear_flags): Return old
 	value.
	* mdebugread.c (START_PSYMTAB): Add paren to avoid x=x=x.

2000-05-12  Michael Snyder  <msnyder@.cygnus.com>

	* config/i386/tm-i386sol2.h (COERCE_FLOAT_TO_DOUBLE): Define.
	
2000-05-12  Kevin Buettner  <kevinb@redhat.com>

	* dwarf2read.c (dwarf2_const_value_data): Fix typo in sign
	extension code.

Fri May 12 20:38:55 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Mention weak symbol problem.  Mention UnixWare thread
 	problem.

Fri May 12 14:12:17 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* README: Update section on kernel debugging.

Fri May 12 19:13:15 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c (mips_get_saved_register): New function.  Handle
 	case of 32 ABI saving 32 bit registers on stack when target has 64
 	bit ISA.
	(mips_gdbarch_init): Update.

Fri May 12 14:46:52 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c (MIPS_EABI): Fix typo.  Test for MIPS_ABI_EABI64.

Thu May 11 21:52:55 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (WERROR_CFLAGS): Check that GCC accepts a -W
 	options before using them. Report result.
	* configure: Regenerate.
	
2000-05-11  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* coffread.c (coff_symtab_read): In the case of C_THUMBEXT |
 	C_THUMBEXTFUNC | C_EXT, sec will never ever be the index for
 	.rodata, because cs_to_section doesn't deal with .rodata. Fix test
 	accordingly.

Thu May 11 21:33:59 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh (gdbarch_dump): Print the value of GDB_MULTI_ARCH.
  	Always check that a macro is defined before printing it.
	* gdbarch.c: Re-generate.

Thu May 11 17:22:36 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* README: Update for GDB 5.0.

Thu May 11 13:24:52 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c (MIPS_DEFAULT_STACK_ARGSIZE): Fix typo.

	* config/mips/tm-irix5.h (GDB_MULTI_ARCH): Add
 	definition. Disable.  Document known problems.
	(MIPS_DEFAULT_ABI): Define.

	* mips-tdep.c (enum mips_abi): Define.
	(struct gdbarch_tdep): Replace mips_eabi with mips_abi.
	(MIPS_EABI): Update.
	(mips_gdbarch_init): Add preliminary support for IRIX N32 ABI.
  	Determine ABI from either ELF_FLAGS or MIPS_DEFAULT_ABI. When
 	looking for a matching architecture require a matching MIPS_ABI.
	(mips_gdbarch_init): Cleanup arch_debug information.

2000-05-10  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

        * solib.c (symbol_add_stub): Remember the index and the name of
        the section with the lowest address. Use this data (instead of
        data from .text) to pass info into symbol_file_add.

        * elfread.c (record_minimal_symbol_and_info): Use the section 
	where the symbol lives to get the index, instead of guessing.

2000-05-10  Michael Snyder  <msnyder@.cygnus.com>

	Make Sparc a Multi-Arch target.  Discard PARAMS macro (require ANSI).
	* sparc-tdep.c: include arch-utils.h.
	(SPARC_HAS_FPU, FP_REGISTER_BYTES, FP_MAX_REG NUM, SPARC_INTREG_SIZE,
	DUMMY_REG_SAVE_OFFSET): provide multi-arch-compatible definitions.
	(GDB_TARGET_IS_SPARC64): make into a runtime test.
	(struct frame_extra_info): Define, use instead of the macro.
	(Many places): Use alloca instead of statically allocated buffers
	that depend on a multi-arch variable such as MAX_REGISTER_RAW_SIZE.
	(sparc_extract_struct_value_address): Accept a pointer arg instead
	of an array sized by REGISTER_BYTES.
	(examine_prologue): Accept a pointer to an array of CORE_ADDR, 
	instead of the defunct struct frame_saved_regs.  Recognize new
	Sparc64 store instructions as part of the prologue.  Ignore the
	destination of a frame store when parsing the prologue (so long
	as it's on the stack).
	(sparc_push_dummy_frame): Fix incorrect buffer offset for PSTATE.
	(sparc_frame_find_saved_regs): Accept a ptr to an array of CORE_ADDR
	instead of the defunct struct frame_saved_regs.
	(supply_gregset): Discard unnecessary 'zerobuf': just send NULL to
	supply_register.  Provide 4-byte offset to compensate for diff
	between size of the prgreg_t elements on a 64-bit host and size
	of the registers for a 32-bit target.  Fill all inaccessible regs
	with zero so they won't keep being requested again and again.
	(fill_gregset): Handle 32/64 size difference between registers
	and prgreg_t.  Handle as many new 64-bit regs as possible.
	(supply_fpregset, fill_fpregset): Attempt to handle 64-bit world.
	(sparc_push_arguments): Rename to sparc32_push_arguments.
	Copy arguments into registers as well as onto stack, so that the
	CALL_DUMMY (code pushed onto the target stack) is not required.
	(sparc_extract_return_value): Rename to sparc32_extract_return_value.
	(sparc_store_return_value): Use memset instead of bzero.
	Use write_register_gen instead of write_register_bytes.
	(sparclet_store_return_value): New function.
	(_initialize_sparc_tdep): Call register_gdbarch_init to activate
	the gdbarch multi-architecture system.
	(sp64_push_arguments): Rename to sparc64_push_arguments.
	Extend to store arguments in general registers as well as on stack.
	(sparc64_extract_return_value): Rename to sp64_extract_return_value.
	Use as a private function, to be called by the new external function
	sparc64_extract_return_value.
	(sparclet_extract_return_value): New function.
	(sparc32_stack_align, sparc64_stack_align, sparc32_register_name,
	sparc64_register_name, sparc_print_extra_frame_info,
	sparclite_register_name, sparclet_register_name, 
	sparc_push_return_address, sparc64_use_struct_convention, 
	sparc32_store_struct_return, sparc64_store_struct_return, 
	sparc32_register_virtual_type, sparc64_register_virtual_type, 
	sparc32_register_size, sparc64_register_size, 
	sparc32_register_byte, sparc64_register_byte, 
	sparc_gdbarch_skip_prologue, sparc_convert_to_virtual, 
	sparc_convert_to_raw, sparc_frame_init_saved_regs, 
	sparc_frame_address, sparc_gdbarch_fix_call_dummy, 
	sparc_coerce_float_to_double, sparc_call_dummy_address, 
	sparc_y_regnum, sparc_reg_struct_has_addr, sparc_intreg_size,
	sparc_return_value_on_stack): New functions supporting multi-arch.
	(sparc_gdbarch_init): New function; initialize multi-arch.
	(struct gdbarch_tdep): Define, use for private multi-arch data.
	* config/sparc/tm-sparc.h: Move definitions around, enclose with
	#ifdef GDB_MULTI_ARCH tests, provide some multi-arch alternate
	definitions.  Add enums for register names, to help debugging gdb.
	This header file must work for non-multi-arch and for multi-arch.
	* config/sparc/tm-sp64.h: Add GDB_MULTI_ARCH configuration.  Also add
	AT_ENTRY_POINT definitions for CALL_DUMMY, for non-multi-arch case.
	Define GDB_MULTI_ARCH.
	* config/sparc/tm-sparclet.h: Add GDB_MULTI_ARCH configuration.
	Do not define GDB_MULTI_ARCH (bfd does not correctly identify target).
	* config/sparc/tm-sparclite.h: Ditto.
	* config/sparc/tm-sun4sol2.h: Define GDB_MULTI_ARCH.
	* sparclet-rom.c (sparclet_regnames): Initialize explicitly, to
	avoid using deprecated REGISTER_NAMES macro.
	* Makefile.in: Let sparc-tdep.c depend on arch-utils.h.

2000-05-08  Michael Snyder  <msnyder@.cygnus.com>

	* gdbarch.sh: Add FP0_REGNUM to list of multi-arched register numbers.
	* gdbarch.c, gdbarch.h: Regenerate.
	* core-regset.c: Change FP0_REGNUM to a runtime test.
	* procfs.c: Ditto.
	* sun3-nat.c: Ditto.
	* sparc-tdep.c: Ditto.
	
	* i386mach-nat.c: Remove unnecessary ifdef for FP0_REGNUM.
	* ptx4-nat.c: Ditto.

	* sol-thread.c (sol_thread_create_inferior): only add the thread
	to the thread list if it is not already in there.
	(prototypes for thread_db func ptrs): pretty up formatting.

2000-05-08  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/djconfig.sh: Use more warning switches.

	* config/djgpp/fnchange.lst: Replace the leading gdb-0222 with the
        @V@ placebo.  djunpack.bat changed accordingly.

Mon May  8 11:19:47 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c (size_auto, size_32, size_64, size_enums): Rename
 	saved_gpreg_size_auto, saved_gpreg_size_32, saved_gpreg_size_64
 	and saved_gpreg_size_enums.
	(mips_stack_argsize): Update. Cleanup.

	* mips-tdep.c (STACK_ARGSIZE): Delete macro.  Replaced by
 	MIPS_STACK_ARGSIZE.
	(MIPS_NABI32): Delete macro. Replaced by
 	MIPS_REGS_HAVE_STACK_HOME_P.
	(mips_push_arguments): Update.
	(mips_push_arguments): Replace check for MIPS_EABI or MIPS_NABI32
 	with test for MIPS_REGS_HAVE_STACK_HOME_P.
	(MIPS_REGS_HAVE_STACK_HOME_P): Define.  Provide non- multi-arch
 	default.
	(struct gdbarch_tdep): Add mips_regs_have_stack_home_p and
 	mips_default_stack_argsize.
	(MIPS_STACK_ARGSIZE): Define as mips_stack_argsize.
	(mips_stack_argsize_string): New static variable.
	(mips_stack_argsize): New function, handle default case.
	(__initialize_mips_tdep): Add command ``set mips stack-arg-size''
 	implemented as an enum using size_auto et.al.
	(mips_gdbarch_init): Initialize mips_default_stack_argsize and
 	mips_regs_have_stack_home_p.

	* config/mips/tm-irix5.h (MIPS_DEFAULT_SAVED_REGSIZE): Define as 8
 	for n32.
	(MIPS_REGS_HAVE_STACK_HOME_P): Define as 0 for n32.

Mon May  8 00:49:32 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* procfs.c (PROCFS_TRACE): Delete definition.
	* proc-utils.h (PROCFS_NOTE, PROC_PRETTYFPRINT_STATUS): Always
 	define.

2000-05-05  Michael Snyder  <msnyder@.cygnus.com>

	* procfs.c: Cleanup of procfs tracing.  Move defines and 
	prototypes to proc-utils.h
	* proc-utils.h: Define tracing macros.  Declare trace functions.
	* proc-api.c: Make procfs tracing a runtime option.
	(prepare_to_trace): New function, abstracted out of several
	places.  Open a trace file if one is required.
	(ioctl_with_trace, write_with_trace, open_with_trace, 
	close_with_trace, wait_with_trace, lseek_with_trace):
	Report errno if an error occurs in a system call.
	(write_with_trace): Make 2nd arg void *, to agree with write.

2000-05-05  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

        * elfread.c (elf_symtab_read): The calculation of 'offset' 
        must be done for each symbol, not just once. The index 
        used must be the index of the section where 'sym' resides,
        not .text.

2000-05-05  Michael Snyder  <msnyder@.cygnus.com>

	* procfs.c (many functions): change int cmd; to long cmd;
	Solaris /proc API calls this parameter a long, and requires it
	for 64-bit hosts (where sizeof(long) != sizeof(int)).  UnixWare
	calls it an int, but on existing UnixWare hosts, int and long
	are the same size.  So long it must be.  If a future UnixWare
	version has problems with this, we'll have to use autoconf.
	* proc-api.c (write_with_trace): use long instead of int.

2000-05-04  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-nat.c: Define PT_READ_U and PT_WRITE_U if they're not
	already defined.

2000-05-01  Mark Kettenis  <kettenis@gnu.org>

	* infrun.c (handle_inferior_event): Add missing call to keep_going
	and missing return when handling an ordinary signal from the
	inferior.

2000-05-04  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

        * objfiles.h (SECT_OFF_DATA, SECT_OFF_TEXT, SECT_OFF_BSS,
        SECT_OFF_RODATA): Define as functions of OBJFILE.  Add
        sect_index_text, sect_index_data, sect_index_rodata,
        sect_index_bss to objfile structure.
        * gdb-stabs.h (SECT_OFF_DATA, SECT_OFF_TEXT, SECT_OFF_BSS,
        SECT_OFF_RODATA): Remove.
        * objfiles.c (allocate_objfile): Initialize
        sect_index_{text,data,bss,rodata} to -1, for error detection.

        * symfile.c (default_symfile_offsets): Initialize
        sect_index_{text,data,bss,rodata} from bfd information.
        * xcoffread.c (xcoff_symfile_offsets): Ditto.
        * somread.c (som_symfile_offsets): Initialize
        sect_index_{text,data,bss,rodata}.

        * coffread.c, dbxread.c, elfread.c, hp-psymtab-read.c,
        hp-symtab-read.c, hpread.c, mdebugread.c, minsyms.c,
        mipsread.c, objfiles.c, os9kread.c, pa64solib.c, partial-stab.h,
        remote-os9k.c, remote-vx.c, remote.c, rs6000-nat.c, somsolib.c,
        stabsread.c, symfile.c, xcoffread.c:
        Update use of SECT_OFF_{TEXT,DATA,BSS,RODATA} to depend on the
        current objfile.

        * xcoffread.c: Add new field objfile to find_targ_sec_arg.

Thu May  4 20:54:00 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* config/mips/tm-mipsv4.h (Dest_Reg), config/mips/tm-irix5.h
 	(MIPS_NUM_ARG_REGS, Dest_Reg), config/mips/tm-mips.h
 	(MIPS_NUM_ARG_REGS), config/mips/tm-mips.h (MIPS_NUM_FP_ARG_REGS):
 	Delete unused macros.

2000-05-03  Michael Snyder  <msnyder@.cygnus.com>

	* solib.c (elf_locate_base, info_sharedlibrary_command):
	Look at the bfd to determine if it is elf32 or elf64, rather
	than using an ifdef.  This makes it runtime teststable and
	multi-arch.

2000-05-01  Mark Kettenis  <kettenis@gnu.org>

	* infrun.c (handle_inferior_event): When doing a "next", and
	stepping out of a signal handler into its calling trampoline
	ignore the value of step_frame_address.
	(step_over_function): Only modify step_resume_breakpoint->frame if
	the value of step_frame_address is non-zero.

2000-05-03  Michael Snyder  <msnyder@cygnus.com>

	* monitor.c (monitor_fetch_register): MAX_REGISTER_RAW_SIZE
	is not static in the MULTI_ARCH world, so don't use it in a
	static array declaration.

2000-05-03  Elena Zannoni  <ezannoni@makita.cygnus.com>

	* symtab.c (in_prologue): From Jim Blandy. Rewrite, more
	intelligently, making sure we use the information from the 
        symbol tables fully.

2000-05-02  H.J. Lu  <hjl@gnu.org>

	* ia64-tdep.c (ia64_gdbarch_init): Reference to ELFOSABI_NONE
	instead of ELFOSABI_SYSV.

Tue May  2 19:07:20 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh (NPC_REGNUM, NNPC_REGNUM): Add.
	* gdbarch.h, gdbarch.c: Re-generate.

	* gdbserver/remote-utils.c (prepare_resume_reply): Change #ifdef
 	NPC_REGNUM to run-time test.
	* findvar.c (generic_target_write_pc): Change #ifdef NPC_REGNUM
 	and NNPC_REGNUM to run-time test.
	* procfs.c (procfs_fetch_registers): Change #ifdef NPC_REGNUM to
 	run-time test.
	(procfs_store_registers): Ditto.

Tue May  2 18:48:57 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh: Provide non- multi-arch defaults by direct
 	definition in "gdbarch.h" instead of going through "gdbarch.c".
	* gdbarch.h, gdbarch.c: Re-generate.
	* defs.h: When non- multi-arch, include "arch-utils.h" so that
 	legacy definitions are globally visible.
	
Tue May  2 16:32:06 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Add Syd Polk to gdbtk maintainers.
	(symtabs): Add Elena to symtabs maintainers list.
	(Blanket Write Privs): Add Jim Blandy.

2000-05-01  Stan Shebs  <shebs@apple.com>

	Remove obsolete Gould configuration:
	* configure.host, configure.tgt: Remove Gould configs.
	* Makefile.in: Remove Gould-related actions.
	* gould-xdep.c, gould-tdep.c, config/gould/*: Remove files.
	* NEWS: Mention removal.
	
Mon May  1 15:37:58 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-04-28 Andreas Jaeger <aj@suse.de>:
	* defs.h: Properly check for GCC version number.

2000-04-30  Mark Kettenis  <kettenis@gnu.org>

	Fix single-stepping out of signal trampolines.
	* config/i386/nm-linux.h (CHILD_RESUME): Define.
	* i386-linux-nat.c (child_resume): New function.

Fri Apr 28 16:22:34 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* blockframe.c (frameless_look_for_prologue): Use
 	PROLOG_FRAMELESS_P instead of SKIP_PROLOGUE_FRAMELESS_P.
	* gdbarch.sh (PROLOG_FRAMELESS_P): Define.
	* gdbarch.h, gdbarch.c: Re-generate.
	* arch-utils.h, arch-utils.c (generic_prologue_frameless_p): New
 	function.
	
Fri Apr 28 15:31:10 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From "Serge Nikulin" <nikulin@actsw.amat.com>:
	* m68k-tdep.c (delta68_in_sigtramp): Return 0 when the function
 	name is unknow.

2000-04-27  Michael Snyder  <msnyder@cygnus.com>

	* gdbarch.sh (d10v_daddr_p, d10v_iaddr_p, d10v_convert_daddr_to_raw,
	d10v_convert_iaddr_to_raw): make these multi-arch functions optional.
	* gdbarch.c, gdbarch.h: regenerate
	
Fri Apr 28 12:21:28 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Tim Mooney <mooney@dogbert.cc.ndsu.nodak.edu>:
	* target.c (do_monitor_command): Cast tcomplain to correct
 	function type in comparison.

Fri Apr 28 11:43:05 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-04-25 Guy Harris <guy@netapp.com>:
	* config/alpha/alpha-osf3.mh (XDEPFILES): Add ser-tcp.o and
 	ser-pipe.o

2000-04-27  Michael Snyder  <msnyder@cygnus.com>

	* jv-valprint.c (java_val_print): Add arg declaration, 
	fix compiler warning.
	* corelow.c (core_open): Call set_gdbarch_from_file so that 
	gdbarch becomes aware of the architecture encoded in the 
	corefile.
	* findvar.c (write_register_gen): Export this useful interface.
	* value.h (write_register_gen): Declare.

2000-04-27  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* cxux-nat.c (add_shared_symbol_files): Don't treat .text section
 	as special in the section_addr_info structure.
	* pa64solib.c (pa64_solib_add_solib_objfile): Ditto.
	* osfsolib.c (symbol_add_stub): Ditto.
	* irix5-nat.c (symbol_add_stub): Ditto.

Thu Apr 27 14:07:16 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c, d10v-tdep.c: Include "arch-utils.h".

Thu Apr 27 10:06:42 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Document IRIX X ARM cross compile problems.

2000-04-26  Michael Snyder  <msnyder@cygnus.com>

	* utils.c (internal_verror): Call target_terminal_ours.
	* wrapper.h: Fix minor comment typo.
	* proc-api.c (write_with_trace): Change 'arg' from long to int.
	Treat 'off_t' and 'size_t' as unsigned long in printfs.
	(lseek_with_trace): Treat 'off_t' as unsigned long in printf.
	* procfs.c (comments): Eliminate "???" in comments, which GCC
	wants to interpret as a trigraph.  (fill_gregset, supply_gregset,
	fill_fpregset, supply_fpregset): Declare.
	(procfs_wait): Sysargs is a long, change printf format to match.
	(test-mapping, mapping_test, test_mapping_cmd) Remove (test only).

2000-04-26  Kevin Buettner  <kevinb@redhat.com>

	* config/djgpp/fnchange.lst (ia64-linux-nat.c): Map to
	ia64linux-nat.c.

Wed Apr 26 13:50:35 2000  Philippe De Muyter  <phdm@macqel.be>

	* ax-gdb.c (agent_command): Remove now useless cast of
	`free_current_contents' when passed to `make_cleanup'.
	* coffread.c (coff_symfile_read): Ditto.
	* dwarf2read.c (dwarf2_add_member_fn, read_array_type): Ditto.
	(dwarf_decode_lines): Ditto.
	* eval.c (parse_and_eval_address, parse_and_eval_address_1): Ditto.
	(parse_and_eval, parse_to_comma_and_eval): Ditto.
	* parse.c (parse_exp_1): Ditto.
	* printcmd.c (print_command_1, output_command, set_command): Ditto.
	(x_command, print_frame_args, printf_command): Ditto.
	* top.c (execute_control_command): Ditto.
	* tracepoint.c (validate_actionline): Ditto.
	* typeprint.c (whatis_exp, ptype_command): Ditto.
	(maintenance_print_type): Ditto.

2000-04-26  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (ALLDEPFILES): Add ia64-linux-tdep.c.
	(ia64-linux-tdep.o): Add dependencies.
	(ia64-tdep.o): Add dependency for arch-utils.h.
	* ia64-linux-tdep.c, ia64-tdep.c (arch-utils.h): Include.

2000-04-25  Michael Snyder  <msnyder@cygnus.com>

	* blockframe.c: Fix a minor typo in a comment.

2000-04-25  Kevin Buettner  <kevinb@redhat.com>

	* ia64-tdep.c (examine_prologue): Recognize store instructions;
	those whose source operands are input registers which haven't
	been seen before are considered to be part of the prologue.

Tue Apr 25 13:51:58 2000  glen mccready  <gkm@pobox.com>

	* rs6000-nat.c (xcoff_relocate_symtam): Recover from the wrong
	patch being applied `Fri Apr  7 13:44:38 2000'.

2000-04-24  Kevin Buettner  <kevinb@redhat.com>

	* ia64-linux-tdep.c: New file.
	* ia64-tdep.c (elf-bfd.h): Include.
	(ia64_linux_sigcontext_register_address): New extern declaration.
	(struct gdbarch_tdep): New struct.
	(SIGCONTEXT_REGISTER_ADDRESS): New define.
	(read_sigcontext_register): New static function.
	(extract_bit_field, replace_bit_field, slotN_contents,
	replace_slotN_contents): Made static.
	(ia64_frame_chain, ia64_frame_saved_pc, ia64_init_extra_frame_info):
	Added new code for signal handler frames and call dummy frames.
	(ia64_frame_init_saved_regs): Handle signal handler frames.
	(ia64_find_saved_register): Removed.
	(ia64_get_saved_register): Handle call dummy frames; reorganized
	to call generic_get_saved_register() to find registers saved
	in previous frames.
	(process_note_abi_tag_sections): New static function.
	(ia64_gdbarch_init): Attempt to determine the ABI/OS of the
	executable.  Based upon this information, set target dependent
	field sigcontext_register_address appropriately.  Also set
	FRAME_CHAIN_VALID to be generic_func_frame_chain_valid.
	* config/ia64/linux.mt (TDEPFILES): Add ia64-linux-tdep.o.
	* config/ia64/tm-linux.h (IN_SIGTRAMP): Define.
	(ia64_linux_in_sigtramp): New declaration.

2000-04-23  Eli Zaretskii  <eliz@is.elta.co.il>

	* TODO, NEWS: Update due to inclusion of gdbmi.texinfo in the GDB
	manual.

2000-04-23  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/README: Explain how to unpack using djunpack.bat.

Fri Apr 21 15:23:13 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* stabsread.c (REG_STRUCT_HAS_ADDR): Delete default.
	(define_symbol): Check REG_STRUCT_HAS_ADDR_P before using
 	REG_STRUCT_HAS_ADDR.
	(define_symbol): Ditto.

	* valops.c (hand_function_call): Replace #ifdef
 	REG_STRUCT_HAS_ADDR with if REG_STRUCT_HAS_ADDR_P.  Re-indent
 	affected code.

	* gdbarch.sh (REG_STRUCT_HAS_ADDR): Add along with the predicate
 	function REG_STRUCT_HAS_ADDR_P.
	* gdbarch.h, gdbarch.c: Re-generate.
	
2000-04-21  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb-stabs.h (SECT_OFF_MAX): Increase to 40.

2000-04-21  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* win32-nat.c  (handle_load_dll): Don't treat .text as a special
 	section anymore.
	* somread.c (som_symfile_offsets): Ditto.
	* somsolib.c (som_solib_add_solib_objfile): Ditto.

Fri Apr 21 16:14:38 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Make Jimmy Guo TUI maintainer.

Fri Apr 21 14:37:40 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* command.h (help_all): Delete declaration.
	* command.c (help_all): Add declaration.  Convert function
 	argument list to ISO-C.

Thu Apr 20 18:15:08 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* d10v-tdep.c (d10v_gdbarch_init): Initialize stack_align.
	(d10v_stack_align): Make static.
	* config/d10v/tm-d10v.h (STACK_ALIGN): Delete.

Thu Apr 20 14:35:46 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* valops.c (hand_function_call): Replace #ifdef STACK_ALIGN with
 	run-time test for STACK_ALIGN_P.
	* gdbarch.sh: Add support for function and variable predicates.
	(STACK_ALIGN): Add.  Implement with predicate - STACK_ALIGN_P.
	* gdbarch.h, gdbarch.c: Re-generate.

Thu Apr 20 17:39:11 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* defs.h, utils.c (free_current_contents): Change parameter to
 	void*.

	From Philippe De Muyter  <phdm@macqel.be>:
	* printcmd.c (print_address_symbolic): Call `make_cleanup' with
	`(free_current_contents, &x)', not `(free, x)'.
	* utils.c (free_current_contents): Do not `free (NULL)'.

	* printcmd.c (print_address_symbolic): Cleanup after a failed
	call to build_address_symbolic.

2000-04-20  Christopher Faylor  <cgf@cygnus.com>

	* wince-stub.c (FREE): New macro.
	(mempool): Just free any buffer prior to reuse.  Don't bother with
	realloc.
	(flag_single_step): New function.
	(skip_message): Detect "helpful" Windows CE messages and skip sending
	them to the host.
	(wait_for_debug_event): Use skip_message to avoid sending debug
	messages to the host.
	(dispatch): Prelimary implementation of single step detection.
	* wince.c: Rework SH single stepping code to be more consistent with
	other wince targets.
	(handle_output_debug_string): Allow first chance exceptions to come
	through since they seem to be all that we get on some versions of
	Windows CE.
	(check_for_step): New function, conditionally compiled based on target.
	(regptr): Delete obsolete function.
	(handle_exception): Detect illegal instructions.
	(get_child_debug_event): Return success only if event code matches
	target.
	(child_create_inferior): Reflect change to get_child_debug_event
	arguments.

2000-04-20  Christopher Faylor  <cgf@cygnus.com>

	* win32-nat.c (thread_rec): Be more defensive about suspending already
	suspended threads.
	(safe_symbol_file_add_stub): New function.
	(safe_symbole_file_add_cleanup): New function.
	(safe_symbol_file_add): New function.
	(handle_load_dll): Use wrapper to add DLL symbol information to avoid
	bogus errors from non-stabs DLLs.
	(handle_exception): Add work around for detection of first exception
	breakpoint which does not seem to occur on W2K.  Detect more "signals"
	that can be effectively passed to the debuggee.  Reorganize to eliminate
	continue_status global.
	(child_continue): Reorganize to eliminate continue_status global.
	(child_wait): Ditto.
	(child_resume): Ditto.
	(get_child_debug_event): Ditto.  Recognize when an a breakpoint
	exception should be ignored.  Change method for signalling when an
	important event has occured to the caller.
	(child_create_inferior): Use new method for noticing when
	get_child_debug_event has found something interesting.

Fri Apr  7 13:44:38 2000  glen mccready  <gkm@pobox.com>

        * rs6000-nat.c (xcoff_relocate_symtab): Grow buffer if ptrace()
          fails due to lack of space.

Fri Mar 24 12:10:38 2000  glen mccready  <gkm@pobox.com>

        * command.c, command.h (help_all): Add functionality to display
        a complete listing of available commands.

2000-04-20  Scott Bambrough <scottb@netwinder.org>

	* arm-linux-nat.c (PIDGET, TIDGET): New.
	(get_thread_id, GET_THREAD_ID): New.
	(fetch_nwfpe_register, store_nwfpe_register): New.
	(fetch_register, store_register): New.
	(fetch_fpregister, store_fpregister): New.
	(fill_gregset, supply_gregset): New.
	(fill_fpregset, supply_fpregset): New.
	(fetch_fpregs): Modified to use thread id's.
	(store_fpregs): Modified to use thread id's and
	fetch_nwfpe_register.
	(fetch_regs): Modified to use thread id's.
	(store_regs): Modified to use thread id's.
	(fetch_inferior_registers): Modified to handle single register
	fetches.
	(store_inferior_registers): Modified to handle single register
	stores.
	(arm_linux_register_u_addr): Removed.

	* configure.tgt: Added gdbserver to configdirs for arm*-*-linux*.

	* config/arm/linux.mh
	(NATDEPFILES): Removed core-aout.o.  Added core-regset.o.
	(LOADLIBES): Define.

	* config/arm/nm-linux.h: Include config/nm-linux.h.
	(ATTACH_DETACH): Removed.  Defined in config/nm-linux.h.
	(REGISTER_U_ADDR): Removed.
	(SVR4_SHARED_LIBS): Removed.  Defined in config/nm-linux.h.
	(#include "solib.h"): Removed.  Included via config/nm-linux.h.

Thu Apr 20 18:54:15 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Daniel Berlin <dan@cgsoftware.com> and Tim Mooney
 	<mooney@dogbert.cc.ndsu.nodak.edu>:
	* infrun.c (follow_fork_mode_kind_names): NULL terminate
 	array. Re-indent.
	(scheduler_enums): Ditto.

Mon Apr 17 13:37:10 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh: Make multi-arch variable defaults, defaults for non-
 	multi-arch targets.
	(TARGET_BFD_VMA_BIT, IEEE_FLOAT, CALL_DUMMY_WORDS,
 	SIZEOF_CALL_DUMMY_WORDS): Update.

	* inferior.h (CALL_DUMMY_WORDS, SIZEOF_CALL_DUMMY_WORDS): Default
 	provided by gdbarch.
	(CALL_DUMMY_P): Add FIXME. gdbarch should provide default.

	* valprint.c (IEEE_FLOAT): Default provided by gdbarch.

2000-04-19  Jim Blandy  <jimb@redhat.com>

	Bring RETURN_VALUE_ON_STACK under gdbarch's control.
	* gdbarch.sh (RETURN_VALUE_ON_STACK): New entry.
	* gdbarch.c, gdbarch.h: Regenerated.
	* arch-utils.c (default_return_value_on_stack): New function.
	* arch-utils.h (default_return_value_on_stack): New declaration.
	* values.c (RETURN_VALUE_ON_STACK): Delete default definition.

	* i386v-nat.c (i386_insert_nonaligned_watchpoint): Use a
	two-dimensional array, instead of faking it with explicit index
	arithmetic.

	* minsyms.c (prim_record_minimal_symbol_and_info): Doc fix.
	(Thanks to Guy Harris.)

2000-04-19  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

        * xcoffsolib.c (solib_add): Fix call to vmap_symtab().

2000-04-19  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* TODO:  Update.

Wed Apr 19 19:10:07 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Document -Wreturn-type problem.

2000-03-27  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>
 
         * maint.c (_initialize_maint_cmds):  Add `mt i' alias for `mt info'.
 
2000-03-27  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

        * infcmd.c (_initialize_infcmd):  Add `info r' alias for
        `info registers'.

Wed Apr 19 17:03:07 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Philippe De Muyter <phdm@macqel.be>:
	* bcache.c (free_bcache): Do not free NULL.

Wed Apr 19 16:37:47 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Cleanup.
	* NEWS: Update GDB version.  Duplicate paragraph explaining
 	obsolete.

Wed Apr 19 13:06:55 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (distclean): Delete tui/Makefile.
	* TODO: Add deletion of tui/Makefile.in to list.
	
2000-04-17  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* symfile.h (struct section_addr_info ): Remove fields for special
 	treatment of .text, .data and .bss sections.

	* solib.c (symbol_add_stub): The special field text_addr is not
 	available anymore. Search for the .text field the hard way.

	* symfile.c (build_section_addr_info_from_section_table): Don't
 	fill in {text, data, bss}_addr any more.
	(default_symfile_offsets): Don't use {text, data, bss}_addr fields
 	to fill in section_offsets for objfile.
	(syms_from_objfile): Don't deal with {text, data, bss}_addr as a
 	special case anymore.
        (add_symbol_file_command): Ditto.

2000-04-17  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	symfile.c: (symbol_file_command): Remove support for rombug, to
 	simplify code.

2000-04-17  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* symfile.c (add_symbol_file_command): Rewrite the arguments
 	processing part. Simplify syntax of command. Remove support for
 	rombug.
	(_initialize_symfile): Update help message for add-symbol-file
 	command.

Mon Apr 17 15:53:38 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh (IEEE_FLOAT): Only dump when defined.
	* gdbarch.h, gdbarch.c: Re-generate.

Mon Apr 17 11:26:01 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote.c (REMOTE_TRANSLATE_XFER_ADDRESS), mem-break.c
 	(MEMORY_INSERT_BREAKPOINT, MEMORY_REMOVE_BREAKPOINT), target.h
 	(BREAKPOINT_FROM_PC), valops.c (COERCE_FLOAT_TO_DOUBLE),
 	gdbarch.sh (D10V_MAKE_DADDR, D10V_MAKE_IADDR,
 	FRAMELESS_FUNCTION_INVOCATION, REGISTER_CONVERTIBLE,
 	REGISTER_CONVERT_TO_VIRTUAL, REGISTER_CONVERT_TO_RAW,
 	REGISTER_NAME), findvar.c (POINTER_TO_ADDRESS,
 	ADDRESS_TO_POINTER): Delete default definition.  Handled by
 	gdbarch.

	* gdbarch.sh: Make multi-arch defaults, defaults for non-
 	multi-arch targets.
	(REGISTER_NAME, COERCE_FLOAT_TO_DOUBLE, REGISTER_CONVERTIBLE,
 	REGISTER_CONVERT_TO_VIRTUAL, REGISTER_CONVERT_TO_RAW,
 	D10V_MAKE_DADDR, D10V_MAKE_IADDR, BREAKPOINT_FROM_PC,
 	MEMORY_INSERT_BREAKPOINT, MEMORY_REMOVE_BREAKPOINT,
 	REMOTE_TRANSLATE_XFER_ADDRESS, FRAMELESS_FUNCTION_INVOCATION):
 	Provide default/legacy implementation.
	(REGISTER_NAMES, CALL_DUMMY): Allow legacy definition.
	* gdbarch.h, gdbarch.c: Re-generate.

2000-04-16  Jim Blandy  <jimb@redhat.com>

	* findvar.c (store_typed_address, extract_typed_address): Fix
	function names in error messages.

2000-04-16  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/config.sed: Fix the lines which edit clean: and
        uninstall-info: targets.

2000-04-14  Jim Blandy  <jimb@redhat.com>

	Bring IEEE_FLOAT under gdbarch's control.
	* gdbarch.sh (IEEE_FLOAT): New entry.
	* gdbarch.c, gdbarch.h: Regenerated.
	* valprint.c (IEEE_FLOAT): Provide a default #definition for this.
	(print_floating): Use IEEE_FLOAT as if it were an expression; use
 	the code specific to IEEE-format numbers whenever the value of
 	IEEE_FLOAT is non-zero.
	* config/a29k/tm-a29k.h, config/alpha/tm-alpha.h,
 	config/arc/tm-arc.h, config/arm/tm-arm.h, config/fr30/tm-fr30.h,
 	config/h8300/tm-h8300.h, config/i386/tm-i386.h,
 	config/i960/tm-i960.h, config/m88k/tm-m88k.h,
 	config/mips/tm-mips.h, config/pa/tm-hppa.h,
 	config/sparc/tm-sparc.h, config/delta/tm-delta.h,
 	config/frv/tm-frv.h (IEEE_FLOAT): For all ports that #define
	IEEE_FLOAT, make sure they give it the value (1).

	Provide the hooks needed to support architectures on which
	pointers are not always simple byte addresses.

	* gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Two new
	functions which architectures can redefine, defaulting to
	generic_pointer_to_address and generic_address_to_pointer.
	* findvar.c (extract_typed_address, store_typed_address,
	generic_pointer_to_address, generic_address_to_pointer): New
	functions.
	(POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Provide default
	definitions.
	(extract_address, store_address): Doc fixes.
	* values.c (value_as_pointer): Doc fix.
	(value_from_pointer): New function.
	* defs.h (extract_typed_address, store_typed_address): New
	declarations.
	* inferior.h (generic_address_to_pointer,
	generic_pointer_to_address): New declarations.
	* value.h (value_from_pointer): New declaration.
	
	The following changes are all of the general form "Use these
	functions instead of these other functions."  In each case, the
	change is because the new calls provide enough information to do
	the appropriate address / pointer conversions, where the old calls
	did not, or because the new functions are more appropriately named
	for the operation being performed.
	
	* ax-gdb.c (const_var_ref): Use value_from_pointer, not
	value_from_longest.
	* blockframe.c (generic_push_dummy_frame): Use read_pc and
	read_sp, not read_register.
	* c-valprint.c (c_val_print): Use extract_typed_address instead of
	extract_address to extract vtable entries and references.
	* cp-valprint.c (cp_print_value_fields): Use value_from_pointer
	instead of value_from_longest to extract the vtable's address.
	* eval.c (evaluate_subexp_standard): Use value_from_pointer
	instead of value_from_longest to compute `this', and for doing
	pointer-to-member dereferencing.
	* findvar.c (read_register): Use extract_unsigned_integer, not
	extract_address.
	(read_var_value): Use store_typed_address instead of store_address
	for building label values.
	(locate_var_value): Use value_from_pointer instead of
	value_from_longest.
	* hppa-tdep.c (find_stub_with_shl_get): Use value_from_pointer,
	instead of value_from_longest, to build arguments to __d_shl_get.
	* printcmd.c (set_next_address): Use value_from_pointer, not
	value_from_longest.
	(x_command): Use value_from_pointer, not value_from_longest.
	* tracepoint.c (set_traceframe_context): Use value_from_pointer,
	not value_from_longest.
	* valarith.c (value_add, value_sub): Use value_from_pointer, not
	value_from_longest.
	* valops.c (find_function_in_inferior, value_coerce_array,
	value_coerce_function, value_addr, hand_function_call): Same.
	* value.h (COERCE_REF): Use unpack_pointer, not unpack_long. 
	* values.c (unpack_long): Use extract_typed_address to produce
	addresses from pointers and references, not extract_address.
	(value_from_longest): Use store_typed_address instead of
	store_address to produce pointer and reference values.

2000-04-13  Mark Kettenis  <kettenis@gnu.org>

	* acconfig.h (HAVE_PRGREGSET_T, HAVE_PRFPREGSET_T, HAVE_LWPID_T,
	HAVE_PSADDR_T): Add them here instead of in config.in.

	* acconfig.h (PRFPREGSET_T_BROKEN): New define.
	* configure.in: Add check for broken prfpregset_t type.
	* lin-thread.c (gdb_prfpregset): New typedef, depends on
	definition of PRFPREGSET_T_BROKEN.
	(ps_lgetfpregs, ps_lsetfpregs, p_td_thr_getfpregs,
	p_td_thr_setfpregs, thread_db_fetch_registers,
	thread_db_store_registers): Use gdb_prfpregset_t instead of
	prfpregset_t.
	* config.in: Regenerated.
	* configure: Regenerated.

2000-04-13  DJ Delorie  <dj@cygnus.com>

	* mips-tdep.c (do_fp_register_row): copy the number of bytes
	allocated, not the size of the pointer.

2000-04-13  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* config/i386/nm-i386sol2.h (CANNOT_STEP_HW_WATCHPOINTS):  Define.
	* config/i386/tm-i386sol2.h (HAVE_I387_REGS):  Define.
	* i386v4-nat.c (supply_fpregset, fill_fpregset):  Add code
	to handle floating point registers if NUM_FREGS is not zero.

2000-04-13  Nick Duffek  <nsd@cygnus.com>

	* sol-thread.c (init_sol_core_ops): Initialize to_thread_alive
	and document to_find_new_threads bug.

2000-04-13  Eli Zaretskii  <eliz@is.elta.co.il>

	* infrun.c (proceed, normal_stop): Change the error message about
	failure to insert breakpoints/watchpoints so that it makes sense
	even if ptrace is not used or no other processes can be active.

Thu Apr 13 13:24:27 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in: Add --enable-maintainer-mode.
	* aclocal.m4, configure: Re-generate.

	* Makefile.in ($(srcdir)/copying.c): Enable dependencies only when
 	on maintainer-mode.  Update copying.c in source directory.
	(copying.txt): Delete rule.
	(copying.o): Add explict paths to $(srcdir) and explicit make
 	rule.

2000-04-12  Kevin Buettner  <kevinb@redhat.com>

	* ia64-linux-nat.c (IA64_PSR_DB, IA64_PSR_DD): Define.
	(fetch_debug_register, fetch_debug_register_pair,
	store_debug_register, store_debug_register_pair, is_power_of_2,
	enable_watchpoints_in_psr, ia64_linux_insert_watchpoint,
	ia64_linux_remove_watchpoint, ia64_linux_stopped_by_watchpoint):
	New functions.
	* config/ia64/nm-linux.h (TARGET_HAS_HARDWARE_WATCHPOINTS,
	TARGET_CAN_USE_HARDWARE_WATCHPOINT, HAVE_STEPPABLE_WATCHPOINT,
	STOPPED_BY_WATCHPOINT, target_insert_watchpoint,
	target_remove_watchpoint): Define.
	(ia64_linux_stopped_by_watchpoint, ia64_linux_insert_watchpoint,
	ia64_linux_remove_watchpoint): Declare.

2000-04-12  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (go32_insert_hw_breakpoint): When there are no more
	hardware breakpoint resources, return EBUSY.
	(go32_handle_nonaligned_watchpoint): If the argument WHAT is not
	one of the enumerated values, return EINVAL.

2000-04-12  Eli Zaretskii  <eliz@is.elta.co.il>

	* README: Mention special build instructions for DJGPP.
	* NEWS: Update with FP features on x87 platforms, and
	DJGPP-related changes.

2000-04-12  Eli Zaretskii  <eliz@is.elta.co.il>

	* top.c (gdb_completer_file_name_break_characters): New variable.
	(line_completion_function): When completing on file names, use
	gdb_completer_file_name_break_characters as word break
	characters for the readline library.

2000-04-12  Mark Kettenis  <kettenis@gnu.org>

	* i387-tdep.c (print_i387_value): Avoid call to
	floatformat_to_doublest if long double type is the same on host
	and target.

2000-04-11  Fernando Nasser  <fnasser@cygnus.com>

	* wrapper.h: Remove definitions of internal functions.
	* wrapper.c: Remove definitions of exported functions (which are
	already in wrapper.h) and make static all internal wrap_* functions.

Mon Apr 10 21:58:36 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* acconfig.h (USE_INCLUDED_REGEX): Add.
	* Makefile.in (REGEX_CFLAGS): Delete
	* configure.in (REGEX_CFLAGS): Delete. Use AC_DEFINE instead.
	* configure, config.in: Re-generate.

2000-04-10  Philip Blundell <philb@gnu.org>

	* arm-linux-nat.c (arm_skip_solib_resolver): Remove and move to
	arm-linux-tdep.c.
	* arm-linux-tdep.c (arm_skip_solib_resolver): New.

2000-04-10  Fernando Nasser  <fnasser@cygnus.com>

	From 2000-04-10 Rodney Brown <rdb@redhat.com>:
	* command.h (enum command_class): Remove trailing "," to placate
	AIX xlc.

Mon Apr 10 20:17:32 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO, NEWS: Update.  Mention MI.

Mon Apr 10 00:21:09 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch-utils.h, gdbarch-utils.c: Delete.
	* arch-utils.h, arch-utils.c: New files.  Avoid 14 character file
 	name problems.
	* Makefile.in: Update.
	* gdbarch.c: Update.

Sun Apr  9 23:42:16 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-04-07 Jonathan Larmour <jlarmour@redhat.co.uk>:
	* mips-tdep.c (saved_gpreg_size_enums): Define enum command for
	new "set mips saved-gpreg-size" command
	(MIPS_SAVED_REGSIZE): Now a function mips_saved_regsize()
	(MIPS_DEFAULT_SAVED_REGSIZE): Define for default MIPS_SAVED_REGSIZE,
	either from target, or gdb multi-arch
	(show_mips_command): New. For "show mips" prefix command
	(set_mips_command): New. For "show mips" prefix command
	(_initialize_mips_tdep): Add top-level mips prefix command
	Add "set mips saved-gpreg-size" command

	* mips-tdep.c (struct gdbarch_tdep): Rename mips_saved_regsize to
 	mips_default_saved_regsize.
	(mips_gdbarch_init): Update.
	(MIPS_DEFAULT_SAVED_REGSIZE): Update.
	(mips_gdbarch_init): Use MIPS_REGSIZE as the default value for
 	mips_default_saved_regsize.

Sun Apr  9 23:27:00 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-04-07 J.T. Conklin <jtc@redback.com>:
	* lynx-nat.c (fetch_inferior_registers, store_inferior_registers):
	replace calls to target_xfer_memory() with target_read_memory()
	and target_write_memory().

Sun Apr  9 22:54:29 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* valops.c (value_rtti_type): Compare VALUE_ADDRESS with ``0'' not
 	NULL. Macro returns a CORE_ADDR.

2000-04-08  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c: Revert Andrew Cagney's change of Dec 15, 1997.
	Don't include "bfd-elf.h".
	(address_significant_size): Delete variable.
	(dwarf2_build_psymtabs_hard): Don't set it, or check for
	consistency between it and the Dwarf 2 compilation unit header
	address size.
	(read_address): Don't mask off bits above
	address_significant_size.
	* Makefile.in (dwarf2read.o): Don't depend on $(elf_bfd_h).
	(elf_bfd_h): Remove variable; it's no longer used.

2000-04-08  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* configure.in (NEW_PROC_API):  Escape square brackets when testing
	for solaris2.[678].
	* configure:  Regenerate.

2000-04-07  Scott Bambrough <scottb@netwinder.org>

	* ChangeLog: Correct date on last entry.
	* arm-linux-tdep.c (arm_linux_push_arguments): New function.
	* config/arm/tm-linux: Redefined PUSH_ARGUMENTS for Linux.  
	* config/arm/tm-embed: Fix build warning from redefinition of
	LOWEST_PC.
	* config/arm/tm-arm.h: Remove TARGET_BYTE_ORDER_SELECTABLE.
	* config/arm/tm-wince.h: Remove TARGET_BYTE_ORDER_SELECTABLE and 
	TARGET_BYTE_ORDER.  Add TARGET_BYTE_ORDER_SELECTABLE_P to 
	override default in tm-arm.h.  Use default target byte order
	from tm-arm.h.

2000-04-07  Scott Bambrough <scottb@netwinder.org>

	* Makefile.in: Add dependency information for arm-linux-tdep.c.
	* config/djgpp/fnchange.lst: Add arm-linux-tdep.c, arm-linux-nat.c.

2000-04-07  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* sol-thread.c (gdb_ps_addr_t):  New typedef, depends on definition
	of PROC_SERVICE_IS_OLD.
	(ps_pglobal_lookup, ps_pdread, ps_pdwrite, ps_ptread, ps_ptwrite,
	rw_common):  Change argument type from psaddr_t to gdb_ps_addr_t.

Fri Apr  7 17:18:42 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (CFLAGS): Set using configure.

	* configure.in (WARN_CFLAGS): Enable by default when GCC.
	* configure: Re-generate.

Fri Apr  7 13:33:43 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-03-27 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>:
        * procfs.c (init_procfs_ops):  Set procfs_ops.to_has_memory and
        procfs_ops.to_has_all_memory to 1.

	* TODO: Update

2000-04-06  Nick Duffek  <nsd@cygnus.com>

	* configure.in (_MSE_INT_H): Define on Solaris 7.
	(NEW_PROC_API): Define on Solaris 7 and 8 as well as 6.
	* acconfig.h (_MSE_INT_H): Define on Solaris 7.
	* configure: Regenerate.
	* config.in: Regenerate.

2000-04-06  Michael Snyder  <msnyder@cygnus.com>

	* sol-thread.c (GET_LWP, GET_THREAD, BUILD_LWP, BUILD_THREAD):
	Change to rely on PIDGET etc.
	* config/i386/nm-i386sol2.h (TARGET_HAS_WATCHPOINTS, 
	TARGET_CAN_USE_HARDWARE_WATCHPOINT, HAVE_CONTINUABLE_WATCHPOINT,
	STOPPED_BY_WATCHPOINT, target_[insert/remove]_watchpoint):
	define.  Allow target to use procfs hardware watchpoints.
	* config/sparc/nm-sun4sol2.h: ditto.
	* config/i386/tm-i386sol2.h (PIDGET, TIDGET, MERGEPID): modify
	definitions to use 16 bits for the pid, 15 bits for the tid, and
	1 bit for the flag.
	* config/sparc/tm-sun4sol2.h: ditto.
	(SOFTWARE_SINGLE_STEP, SOFTWARE_SINGLE_STEP_P): undefine.
	* testsuite/gdb.threads/pthreads.exp (all_threads_running): Allow
	for more than 15 thread increments.

2000-04-06  Eli Zaretskii  <eliz@is.elta.co.il>

	* top.c (filename_completer): Set subsequent_name to 1 early on,
	to prevent an infinite loop if the first file in the directory is
	a backup file (whose name ends in a `~').

2000-04-05  Jim Blandy  <jimb@redhat.com>

	* solib.c (update_solib_list): New function.
	(solib_add): Call update_solib_list, and then read symbols.
	(info_sharedlibrary_command): Call update_solib_list, not
	solib_add.

2000-04-05  Scott Bambrough <scottb@netwinder.org>

	* arm-linux-tdep.c: Resolve implicit function declarations by 
	including target.h and value.h.  Inclusion of symtab.h is
	no longer needed.

2000-04-05  Scott Bambrough <scottb@netwinder.org>

	* arm-linux-tdep.c: New file.
	* arm-linux-nat.c (fetch_fpregs): Remove unused code.
	(arm_get_longjmp_target): Moved it and all defines 
	it uses to arm-linux-tdep.c.
	(arm_linux_extract_return_value): Moved to
	arm-linux-tdep.c.
	* config/arm/linux.mt: Add arm-linux-tdep.c to TDEPFILES.

2000-04-04  Nick Duffek  <nsd@cygnus.com>

	* infrun.c (handle_inferior_event): Call target_mourn_inferior
	instead of kill_target.

2000-04-04  Daniel Berlin  <dan@cgsoftware.com>

	* TODO: Make note of various C++ things i have planned for 5.1.

Tue Apr  4 12:13:19 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* printcmd.c (print_scalar_formatted): Use local variable ptr_bit
 	in shift.  Stop GCC thinking it has a shift overflow.

2000-04-03  H.J. Lu  <hjl@gnu.org>

	* TODO: Remove the regex entry.

2000-04-03  H.J. Lu  <hjl@gnu.org>

	* gdb_regex.h: New. Include "regex.h" if USE_INCLUDED_REGEX
	is defined and <regex.h> otherwise.

        * irix5-nat.c: Include "gdb_regex.h" instead of "gnu-regex.h".
	* monitor.c: Likewise.
	* osfsolib.c: Likewise.
	* solib.c: Likewise.
	* source.c: Likewise.
	* symtab.c: Likewise.

	* Makefile.in (REGEX): Changed to @REGEX@.
	(REGEX_CFLAGS): New.
	(REGEX1): Removed.
	(ADD_DEPS): Use $(REGEX) instead of $(REGEX1).
	(INTERNAL_WARN_CFLAGS): Add $(REGEX_CFLAGS).

	* configure.in (--with-included-regex): New switch.
	(REGEX): New. Subsstitue @REGEX@ in Makefile.in.
	(REGEX_CFLAGS): New. Subsstitue @REGEX_CFLAGS@ in Makefile.in.
	* configure: Regenerated.

2000-04-03  Kevin Buettner  <kevinb@redhat.com>

	* NEWS (powerpc-*-linux*): Mention.

2000-04-03  J.T. Conklin  <jtc@redback.com>

	* config/i386/xm-nbsd.h (HOST_LONG_DOUBLE_FORMAT): Define.

2000-04-03  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (ALLDEPFILES): Add ia64-linux-nat.c and ia64-tdep.c.
	(ia64-linux-nat.o, ia64-tdep.o): Add dependencies.

	* ia64-linux-nat.c (fill_gregset): Implement.
	(supply_fpregset, fill_fpregset): New functions.

	* ia64-tdep.c (ia64_init_extra_frame_info): Revise manner in
	which the CFM is fetched for certain frames.
	(find_global_pointer, find_extant_func_descr): Don't use
	partial symtabs for locating sections.

	* config/ia64/linux.mh (LOADLIBES): Define.
	(NATDEPFILES): Add linux-thread.o and lin-thread.o.
	* config/ia64/nm-linux.h (nm-linux.h): Include this upper-level
	file containing generic linux declarations/definitions.
	(SVR4_SHARED_LIBS, ATTACH_DETACH): Remove defines; already
	defined in generic nm-linux.h.
	(solib.h): Remove include; already included in generic nm-linux.h.

2000-04-03  Jim Blandy  <jimb@redhat.com>

	* solib.c (solib_add): Move all the code for loading symbol tables
	below the code to sort out additions and removals.  That way, we
	always catch all loaded shared libraries whose symbols we haven't
	grabbed yet.

	* solib.c (solib_add): Don't try to free a shared object's objfile
	if it doesn't have one.  Duh.

	* solib.c (solib_add): If a pattern was given, but it doesn't
	match any currently loaded shared libraries, print a message;
	don't just be silent.

2000-04-03  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (go32_handle_nonaligned_watchpoint): Use a
	two-dimensional array instead of faking it with index
	arithmetics.

2000-04-03  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/i386/xm-go32.h (HOST_LONG_DOUBLE_FORMAT): Define.

	* config/i386/tm-go32.h (TARGET_LONG_DOUBLE_BIT): Remove
	definition (and use the common one in tm-i386.h).
	(REGISTER_CONVERT_TO_VIRTUAL, REGISTER_CONVERT_TO_RAW): Likewise.
	(I386_DJGPP_TARGET): Don't define, it's no longer required.
	(LOW_RETURN_REGNUM, HIGH_RETURN_REGNUM): Remove definition,
	i386-tdep.c defines it for all x86 targets.
	(LD_I387, HEX_LONG_DOUBLE_INPUT): Remove.

	* config/djgpp/fnchange.lst: Add i386-linux-tdep.c.

	* config/djgpp/djcheck.sh: Edit the copyright year out of the test
	results.  Fix editing of `main' arguments for non-GNU Sed.

2000-04-03  Eli Zaretskii  <eliz@is.elta.co.il>

	* symfile.c (map_overlay_command, unmap_overlay_command): Fix
	error message: there's no "overlay on" command.

2000-04-03  Eli Zaretskii  <eliz@is.elta.co.il>

	* Makefile.in (copying.c): Depend on copying.txt, not COPYING.
	(copying.txt): New target, a link to COPYING.

Mon Apr  3 18:20:03 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Update.
	
Mon Apr  3 14:56:11 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* top.c: Re-indent.
	(set_hook, error_hook): Remove PARAMS.

Mon Apr  3 14:45:25 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* symtab.h (add_minsym_to_demangled_hash_table): Revert 2000-03-29
 	Daniel Berlin <dan@cgsoftware.com>.  Function was static.
	* minsyms.c (add_minsym_to_demangled_hash_table): Add prototype.

Mon Apr  3 14:10:37 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb-events.h, gdb-events.c, gdb-events.sh: Re-indent.

2000-04-02  Nick Duffek  <nsd@cygnus.com>

	* gdbtypes.c (safe_parse_type): New wrapper function to ignore
	error() during parse_and_eval_type().
	(check_stub_method): Call safe_parse_type instead of
	parse_and_eval_type().
	* wrapper.c (gdb_parse_and_eval_type): New wrapper function.
	(wrap_parse_and_eval_type): New support function.
	* wrapper.h (gdb_parse_and_eval_type): Prototype.
	(wrap_parse_and_eval_type): Prototype.

Sun Apr  2 10:32:54 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Eli Zaretskii is a doco maintainer.

Fri Mar 31 08:59:58 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch-utils.h, gdbarch-utils.c: New files.
	* Makefile.in (SFILES, COMMON_OBS): Update.
	(gdbarch_utils_h) Define.
	(gdbarch-utils.o): Add dependencies.
	
	* gdbarch.c, gdbarch.sh: Include "gdbarch-utils.h". Fix code
 	handling default method values.
	(startup_gdbarch): Rename default_gdbarch, name misleading.
	(breakpoint_from_pc): Default to legacy_breakpoint_from_pc.
	(register_name): Default to legacy_register_name.
	(call_dummy_words): Default to legacy_call_dummy_words.
	(sizeof_call_dummy_words): Default to
 	legacy_sizeof_call_dummy_words.
	(register_convertible): Default to
 	generic_register_convertible_not.
	(breakpoint_from_pc): Default to legacy_breakpoint_from_pc.
	(remote_translate_xfer_address): Default to
 	generic_remote_translate_xfer_address.
	(frameless_function_invocation): Default to
 	generic_frameless_function_invocation_not.

2000-04-02  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-nat.c: Add copyright notice.

	* config/i386/xm-linux.h (HOST_LONG_DOUBLE_FORMAT): Define as
	&floatformat_i387_ext.
	* config/i386/xm-i386gnu.h (HOST_LONG_DOUBLE_FORMAT): Likewise.

2000-03-29  Mark Kettenis  <kettenis@gnu.org>

	* findvar.c (extract_floating): Remove reference to
	TARGET_EXTRACT_FLOATING.
	(store_floating): Remove reference to TARGET_STORE_FLOATING.

2000-03-30  Fernando Nasser  <fnasser@cygnus.com>

	* wrapper.c (gdb_value_subscript, wrap_value_subscript): New functions.
	Safe version of value_subscript.
	* varobj.c (): Use gdb_value_subscript() to get an array element value.

2000-03-30  Michael Snyder  <msnyder@cygnus.com>

	* ui-file.c: Include "gdb_string.h"
	* cli-out.c: Include gdb_string.h to avoid compiler warnings.
	* wrapper.[ch] (struct gdb_wrapper_arguments): Change fields into 
	unions, since they are all used to hold both pointers and ints
	at various times.  Casting pointer to int and vice versa gives
	warnings (and is not safe) if they are not the same size.
	
2000-03-30  Michael Snyder  <msnyder@cygnus.com>

	* defs.h (struct continuation_arg): Make 'data' a union, to avoid
	casting problems when int and pointer are not the  same size.
	* event-top.c (command_handler): Use data as a union.
	(command_line_handler_continuation): Ditto.
	* infcmd.c (step_1_continuation): Use data as a union.  Re-indent.
	(step_once): ditto.  (finish_command_continuation): Ditto.
	(finish_command): Ditto.  
	* breakpoint.c (until_break_command): Use data as a union.
	(until_break_command_continuation): Ditto.
	* utils.c (add_intermediate_continuation): Fix typo in comment.

Thu Mar 30 12:09:50 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.h, gdbarch.c: Re-indent.  Remove FIXMEs.
	* gdbarch.sh: Re-sync with gdbarch.[hc].

2000-03-29  Daniel Berlin  <dan@cgsoftware.com>

	* minsyms.c (add_minsym_to_demangled_hash_table): New function.
	(install_minimal_symbols): Fix demangled symbol problems caused by
	using add_minsym_to_hash_table for the demangled names, which is
	wrong. Now we use add_minsym_to_demangled_hash_table.
	(lookup_minimal_symbol): Fix problems with demangled symbol lookup
	caused by weird control flow.
	* symtab.h: Add add_minsym_to_demangled_hash_table prototype here.

2000-03-29  Jason Merrill  <jason@casey.cygnus.com>

	* configure.in: -linux-gnu*, not -linux-gnu.

Tue Mar 28 18:28:40 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote.c (remote_threads_extra_info): Replace qfThreadExtraInfo
 	with qThreadExtraInfo.

2000-03-29  J.T. Conklin  <jtc@redback.com> 
 
	* i386nbsd-nat.c (fetch_core_registers): Make static. 
 
	* m68knbsd-nat.c (fetch_core_registers): Make static. 
	(m68knbsd_core_fns, _initialize_m68knbsd_nat): Added. 
 
Wed Mar 29 13:40:40 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Update GDB 5 status.

Wed Mar 29 10:16:35 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* breakpoint.h (remove_hw_watchpoints): Add declaration.
	* breakpoints.c (remove_hw_watchpoints): Update.
	* maint.c (maintenance_do_deprecate): Avoid assignment within IF
 	condition.

2000-03-28  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	breakpoint.c, breakpoint.h (remove_hw_watchpoints):  New function.
	infrun.c (resume):  Remove hardware watchpoints before stepping
	when CANNOT_STEP_HW_WATCHPOINTS is nonzero.

2000-03-28  Michael Snyder  <msnyder@cygnus.com>

	* Makefile.in: Anchor tui-file.h dependency to $srcdir.

2000-03-28  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* procfs.c (proc_set_watchpoint):  Declare addr parameter as
	CORE_ADDR, to match call from procfs_set_watchpoint.

	* breakpoint.c (insert_breakpoints, do_enable_breakpoint):  
	Reselect the saved frame silently after frame selection for 
	watchpoint evaluation.
	(insert_breakpoints):  Add missing space in `Hardware watchpoint
	deleted' message.  Do not reinsert hardware watchpoint if it is
	already marked for deletion at next stop.

2000-03-28  Christopher Faylor  <cgf@cygnus.com>

        * partial-stab.h: Add one more check against corrupted or irregular
        stabs entry.

Tue Mar 28 12:23:37 2000  Philippe De Muyter  <phdm@macqel.be>

	* gnu-regex.c (regerror): Function renamed from `__regerror'.
	(Change also approved in the mainline glibc sources)

Tue Mar 28 18:19:50 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-03-20 Jonathan Larmour <jlarmour@redhat.co.uk>:
        * ser-unix.c (do_unix_readchar): Reorganise to be more robust,
        particularly ensuring it can't return SERIAL_TIMEOUT when told
        not to time out.

2000-03-24  Daniel Berlin  <dan@cgsoftware.com>

	* gdbtypes.c (_initialize_gdbtypes): Add "set debug overload",
	which never existed before, and thus, has no deprecated old command.

	* gdbarch.c (_initialize_gdbarch): Add "set debug arch", deprecate
	"set archdebug" (same goes for the show commands).
	* gdb-events.c (_initialize_gdb_events): Add "set debug event",
	deprecate "set eventdebug" (same goes for the show commands).
	* gdbcmd.h: Add the setdebuglist and showdebuglist externs.
	* top.c (init_main): Deprecate remotedebug, use "set/show debug remote"
	instead.
	x(init_main): Add the "set debug" and "show debug" commands.
	Add setdebuglist and showdebuglist.

Fri Mar 24 13:00:10 2000  Daniel Berlin <dan@cgsoftware.com>

	* maint.c (maintenance_do_deprecate): Fix crash if you call with no arguments, and fixed the warning.
	  Added prototype for the deprecate command so it doesn't complain.

Tue Mar 28 11:52:45 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* top.c (print_gdb_version): Bump copyright year to 2000.

Tue Mar 28 10:13:11 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Add Glen McCready to write after approval list.

Tue Mar 28 09:59:00 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* acconfig.h: Fix typo in comment describing HAVE_PTRACE_GETREGS.
	* config.h: Regenerate.
	
Mon Mar 27 19:53:29 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Update.  Add criteria for next release of GDB.

Mon Mar 27 17:20:25 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* acconfig.h: Provide default for HAVE_PTRACE_GETREGS.
	* config.h: Regenerate.

Mon Mar 27 16:43:35 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (install-only): Create $(bindir) and $(man1dir)
 	before installing GDB.

Mon Mar 27 16:26:11 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (all-gdbtk): Check for an existing link/directory.
  	Re-format warning message.  Document that post 5.0 this can be
 	deleted.

Mon Mar 27 14:46:37 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* ChangeLog: Revert whitespace changes.

Mon Mar 27 10:20:34 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Update folks who need accounts.

Mon Mar 27 09:29:14 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: J.T. Conklin is NetBSD maintainer.

2000-03-27  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h: Fix typo.  It is TARGET_LONG_DOUBLE_BIT
	instead of TARGET_LONG_DOUBLE_BITS.
	* config/i386/tm-i386mk.h: Likewise.

2000-03-26  Mark Kettenis  <kettenis@gnu.org>

	Provide `long double' support for most i386 targets.
	* config/i386/tm-i386.h (TARGET_LONG_DOUBLE_FORMAT): Define as
	&floatformat_i387_ext.
	(TARGET_LONG_DOUBLE_BITS): Define as 96.
	(REGISTER_VIRTUAL_TYPE): Change type for FPU registers to
	`builtin_type_long_double'.
	(REGISTER_CONVERT_TO_VIRTUAL): Call
	i386_register_convert_to_virtual.
	(REGISTER_CONVERT_TO_RAW): Call i386_register_convert_to_raw.
	(i387_to_double, double_to_i387): Remove prototypes.
	(i386_extract_return_value): Change prototype to match definition
	in i386-tdep.c.
	* config/i386/tm-i386mk.h (TARGET_LONG_DOUBLE_FORMAT): #undef.
	(TARGET_LONG_DOUBLE_BITS): #undef.
	* config/i386/tm-linux.h (TARGET_LONG_DOUBLE_BIT): Remove.
	[HAVE_LONG_DOUBLE && HOST_I386] (LD_I387): Remove.
	(i387_extract_floating, i387_store_floating): Remove prototypes.
	(TARGET_EXTRACT_FLOATING, TARGET_STORE_FLOATING): Remove.
	(REGISTER_CONVERT_TO_VIRTUAL, REGOISTER_CONVERT_TO_RAW): Remove.
	(REGISTER_VIRTUAL_TYPE): Remove.
	* i386-tdep.c (i386_register_convert_to_virtual): New function.
	(i386_register_convert_to_raw): New function.
	* i387-tdep.c [LD_I387] (i387_extract_floating): Remove.
	(i387_store_floating): Remove.

Sat Mar 25 18:55:57 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* maint.c: Re-indent.

Sat Mar 25 18:51:50 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* maint.c (_initialize_maint_cmds): Remove quoted trailing space.

2000-03-24  Christopher Faylor  <cgf@cygnus.com>

	* config/mips/tm-wince.h: Fix typo which caused include of tm-mips.h to
	be inoperative.

2000-03-24  Christopher Faylor  <cgf@cygnus.com>

	* win32-nat.c: Back out special frame walking code.  It was broken.
	(handle_exception): Correctly identify an illegal instruction.
	* config/tm-cygwin.h: Eliminate special frame handling.  Just use
	normal i386 handling.

2000-03-24  J.T. Conklin  <jtc@redback.com> 
 
	* i386/tm-nbsd.h (USE_STRUCT_CONVENTION): Define. 
	* i386nbsd-nat.c (i386nbsd_use_struct_convention): New function. 
	(fetch_core_registers): Read fp registers. 
	(i386nbsd_core_fns, _initialize_i386nbsd_nat): Added. 
 
2000-03-24  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* arm-tdep.c (thumb_skip_prologue): Take function end addr argument
	so that we can stop searching for the prologue past the function end
	(arm_skip_prologue): Call thumb_skip_prologue with function end addr

2000-03-24  Kevin Buettner  <kevinb@redhat.com>

	* linux-thread.c, lin-thread.c (save_inferior_pid,
	restore_inferior_pid): Don't do compile time comparison
	of TARGET_PTR_BIT and TARGET_INT_BIT.

Thu Mar 23 13:18:26 2000  Philippe De Muyter  <phdm@macqel.be>

	* m68k-tdep.c (P_LINKL_FP, P_LINKW_FP): Macros renamed from P_LINK_L
	and P_LINK_W.
	(P_PEA_FP, P_MOVL_SP_FP): New macros.
	(P_MOVL, P_LEAL, P_MOVML): Macros renamed from P_MOV_L, P_LEA_L and
	P_MOVM_L.
	(altos_skip_prologue, isi_skip_prologue): Use P_* macros, not octal
 	constants.
	(delta68_in_sigtramp): New function.
	(delta68_frame_args_address, delta68_frame_saved_pc): Ditto.
	(m68k_skip_prologue): Use P_* macros, not hex constants.
	(m68k_find_saved_regs): Do not expect a fixed sequence of register save
	instructions, but accept them in any order; use P_* macros, not octal
	or hex constants; recognize also `fmovemx to (fp + displacement)' and
 	`moveml to (fp + displacement)'.
	* m68/tm-delta68.h (IN_SIGTRAMP): New macro.
	(FRAME_SAVED_PC, FRAME_ARGS_ADDRESS): Ditto.
	
Fri Mar 24 13:44:57 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Add Fernando Nasser to testsuite maintainers. 
	
2000-03-23  Michael Snyder  <msnyder@cygnus.com>

	* solib.c (open_symbol_file_object): To sneak an int argument
	past catch_errors, instead of casting it to a pointer, simply
	pass it by address.

2000-03-23  Jimmy Guo	<guo@cup.hp.com>

 	* gdbtypes.c (rank_function): Rank all N parameters and use correct
 	index into the prams[] and args[] arrays.

2000-03-23  Fernando Nasser  <fnasser@cygnus.com>

	From David Whedon <dwhedon@gordian.com>

	* top.c (execute_command): Checks all commands beore executing
	to see if the user needs to be warned that the command is
	deprecated, warns user if appropriate.
	(add_info), (add_info_alias), (add_com) , (add_com_alias): Changed
	return values from void to struct cmd_list_element *.
	* command.c (lookup_cmd_1): Check aliases before following link 
	in case user needs to be warned about a deprecated alias.
	(deprecate_cmd): new exported function for command deprecation,
	sets flags and posibly a replacement string.
	(deprecated_cmd_warning): New exported funciton to warn user about
	a deprecated command. 
	(lookup_cmd_composition): New exported function that determines
	alias, prefix_command, and cmd based on a string.  This is useful
	is we want to full name of a command.
	* command.h : Added prototypes for deprecate_cmd,
	deprecated_warn_user and lookup_cmd_composition, added flags to
	the cmd_list_element structure, changed return values for
	add_com_* and add_info_* from void to cmd_list_element.
	* maint.c : (maintenance_deprecate): New function to deprecate a
	command.  This exists only so that the testsuite can deprecate
	commands at runtime and check the warning behavior.
	(maintenance_undeprecate) : New function, drops deprecated flags.
	(maintenance_do_deprecate): Actually does the (un)deprecation.
	(initialize_maint_cmds): Added the above new deprecate commands.

2000-03-22  Daniel Berlin  <dan@cgsoftware.com>
	* command.c (apropos_cmd_helper): New function, meat of the
	apropos command.
	(apropos_command): New apropos command to search command
	names/documentation for regular expressions.
	(_initialize_command): Add the apropos command.

2000-03-23  Michael Snyder  <msnyder@cygnus.com>

	* sol-thread.c (ps_pglobal_lookup): Change argument type from
	paddr_t to psaddr_t.  This mistake appears to date from an
	erroneous man page in Solaris 2.5 -- the correct type from the
	system headers has always been psaddr_t.
	(ps_pdread, ps_pdwrite, ps_ptread, ps_ptwrite): Ditto.
	(rw_common): Ditto.

2000-03-22  Kevin Buettner  <kevinb@redhat.com>

	* ia64-linux-nat.c: Fix copyright.
	(fill_gregset): Minor formatting fix.
	* ia64-tdep.c (template_encoding_table, fetch_instruction,
	examine_prologue): Clean up some compiler warnings.
	(is_float_or_hfa_type_recurse, is_float_or_hfa_type, find_func_descr,
	find_global_pointer, find_extant_func_descr): New functions.
	(ia64_use_struct_convention, ia64_extract_return_value,
	ia64_push_arguments): Handle HFAs.
	(ia64_push_arguments): Find (or build) a function descriptor
	when given a function address.
	(ia64_push_return_address): Moved code for finding the
	global pointer into its own function, find_global_pointer ().

2000-03-22  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* event-loop.c (handle_file_event): Run through indent.

2000-03-22  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

        From  Philippe De Muyter  <phdm@macqel.be>

	* event-loop.c (sys/types.h): File now included unconditionally.
	(use_poll): New variable..
	(gdb_notifier): poll- and select-versions merged.
	(add_file_handler): If HAVE_POLL, check whether poll is usable,
	and reset `use_poll' if not.
	(create_file_handler): Select poll- or select-version according to
	`use_poll'.
	(delete_file_handler, handle_file_event): Likewise.
	(gdb_wait_for_event, poll_timers): Likewise.

2000-03-22  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* printcmd.c (print_scalar_formatted):  Truncate addresses to the
	size of a target pointer before passing them to print_address.

2000-03-22  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386aix.h (I386_AIX_TARGET): Remove.
	* config/i386/tm-linux.h (LOW_RETURN_REGNUM, HIGH_RETURN_REGNUM):
	Remove
	* i386-tdep.c (LOW_RETURN_REGNUM, HIGH_RETURN_REGNUM): New defines.
	(i386_extract_return_value): Rewritten.  Correctly support all
	floating-point types and large integer types on targets that use
	the standard i386 GDB register layout and return floating-point
	values in the FPU.

Wed Mar 22 15:09:34 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (CONFIG_INITS): Do not append remote-nrom.c

2000-03-21  J.T. Conklin  <jtc@redback.com> 
 
        * i386/nbsd.mh (NATDEPFILES): Change i386b-nat.o to i386nbsd-nat.o. 
        * i386nbsd-nat.c: New file. 
 
        * i386/tm-nbsd.h (NUM_REGS): Removed. 
        (HAVE_I387_REGS): Defined. 
        * i386/nm-nbsd.h (FLOAT_INFO): Removed. 
 
        * tm-nbsd.h (IN_SOLIB_CALL_TRAMPOLINE): Define if not 
        SVR4_SHARED_LIBS. 

Wed Mar 22 11:18:59 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Add Jim Blandy to breakpoint maintainers.  David
 	taylor is the Solaris/SPARC maintainer.  Add Jonathan Larmour to
 	the write after approval list.

2000-03-21  Kevin Buettner  <kevinb@redhat.com>

	* symtab.h (MAX_SECTIONS, struct section_addr_info,
	symbol_file_add):  Move declarations from here...
	* symfile.h: ...to here.

	* solib.c (symbol_add_stub): Make symbol_file_add () aware of
	all section addresses, not just .text.
	* symfile.h, symfile.c (free_section_addr_info,
	build_section_addr_info_from_section_table): New functions.

	* symfile.h (MAX_SECTIONS): Increase value to 40.
	* symfile.c (syms_from_objfile): Add bounds check prior to
	accessing ``other'' array in a section_addr_info_struct.
	Remove unused variable section_offsets.
	(add_symbol_file_command): Remove unused variable text_addr.

2000-03-21  Eli Zaretskii  <eliz@is.elta.co.il>

	* breakpoint.c (bpstat_stop_status): Don't stop if a read
	watchpoint appears to break, but the watched value changed.

2000-03-21  Jim Blandy  <jimb@redhat.com>

	* gdbarch.sh: Emit a definition and declaration for gdbarch_free,
 	a companion to gdbarch_alloc, which allows a gdbarch init function
 	to free partially-built gdbarch structures.
	* gdbarch.c, gdbarch.h: Regenerated.

2000-03-20  Kevin Buettner  <kevinb@redhat.com>

	* configure.host, configure.tgt (ia64-*-linux*): New entry.

	* gdbserver/low-linux.c (u_offsets, ia64_register_u_addr,
	initialize_arch): Define for IA-64.
	(initialize_arch): Add declaration.

2000-03-20  Eli Zaretskii  <eliz@is.elta.co.il>

	* breakpoint.c (insert_breakpoints, remove_breakpoint)
	(bpstat_stop_status, can_use_hardware_watchpoint): Don't insert,
	remove, or check status of hardware watchpoints for entire structs
	and arrays unless the user explicitly asked to watch that struct
	or array.  
	(insert_breakpoints): Try to insert watchpoints for all the values
	on the value chain, even if some of them fail to insert.

	* values.c (value_primitive_field): Set the offset in struct value
	we return when the field is a packed bitfield.

2000-03-20  Michael Snyder  <msnyder@cygnus.com>

	* remote.c (remote_threads_extra_info): New function.
	Implement the extra thread info query for "info threads".
	(remote_threads_info): Clean up a bit.
	(use_threadinfo_query, use_threadextra_query): New variables.
	Control whether GDB will use the new or old protocol for 
	thread info queries.
	(remote_open_1): Initialize new variables.
	(remote_async_open_1): Ditto.
	(remote_cisco_open): Ditto.

2000-03-20  Kevin Buettner  <kevinb@redhat.com>

	* ia64-linux-nat.c, ia64-tdep.c, config/ia64/linux.mh,
	config/ia64/linux.mt, config/ia64/nm-linux.h, config/ia64/tm-ia64.h,
	config/ia64/tm-linux.h, config/ia64/xm-linux.h: New files.

2000-03-20  Kevin Buettner  <kevinb@redhat.com>

	* utils.c (floatformat_from_doublest): Don't assume that a long
	will be exactly 32 bits in length.  Also...  make sure space
	that we're writing the float to is completely initialized to
	zeroes, even when the number of bits in the float is not
	evenly divisible by FLOATFORMAT_CHAR_BIT.

2000-03-20  Jim Blandy  <jimb@redhat.com>

	* i386-linux-nat.c: No need to #include "frame.h" any more.
	(LINUX_SIGTRAMP_INSN0, LINUX_SIGTRAMP_OFFSET0,
	LINUX_SIGTRAMP_INSN1, LINUX_SIGTRAMP_OFFSET1,
	LINUX_SIGTRAMP_INSN2, LINUX_SIGTRAMP_OFFSET2, linux_sigtramp_code,
	LINUX_SIGTRAMP_LEN, i386_linux_sigtramp_start,
	LINUX_RT_SIGTRAMP_INSN0, LINUX_RT_SIGTRAMP_OFFSET0,
	LINUX_RT_SIGTRAMP_INSN1, LINUX_RT_SIGTRAMP_OFFSET1,
	linux_rt_sigtramp_code, LINUX_RT_SIGTRAMP_LEN,
	i386_linux_rt_sigtramp_start, i386_linux_in_sigtramp,
	i386_linux_sigcontext_addr, LINUX_SIGCONTEXT_PC_OFFSET,
	i386_linux_sigtramp_saved_pc, LINUX_SIGCONTEXT_SP_OFFSET,
	i386_linux_sigtramp_saved_sp):	Deleted.  Folks rightly pointed
	out that these are target-dependent, and useful in non-native
	configurations.  Moved to...
	* i386-linux-tdep.c: ... Here, a new file.
	* Makefile.in (ALLDEPFILES): Add i386-linux-tdep.c.
	(i386-linux-tdep.o): New rule.
	(i386-linux-nat.o): We no longer depend on frame.h.
	* config/i386/linux.mt (TDEPFILES): Add i386-linux-tdep.o.

2000-03-04  Eli Zaretskii  <eliz@is.elta.co.il>

	* event-loop.c (top-level) [NO_FD_SET]: Deprecate this branch.
	Print an error at compile time if we are to use select, but FD_SET
	is not available.
	(SELECT_MASK, NBBY, FD_SETSIZE, NFDBITS, MASK_SIZE): Define only
	if HAVE_POLL is not defined and NO_FD_SET *is* defined.
	(create_file_handler) [!HAVE_POLL]: Use FD_SET and FD_CLR.
	(delete_file_handler) [!HAVE_POLL]: Use FD_CLR and FD_ISSET.
	(gdb_wait_for_event) [!HAVE_POLL]: Copy fd_set sets directly
	instead of using memcpy and memset.  Use FD_ISSET.

	* config/i386/xm-go32.h (fd_mask): Remove typedef.

Mon Mar 20 19:58:45 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* command.c (_initialize_command): Document requirements for ``!''
 	command.

Mon Mar 20 18:12:46 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Fri 10 Mar 2000 Robert
 	<robert.melchers@drives.eurotherm.co.uk>:
	* sh-tdep.c (sh_processor_type_table): Add entry for sh2.

Mon Mar 20 17:33:32 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Thu Mar 16 16:49:27 EST 2000 John David Anglin
 	<dave@hiauly1.hia.nrc.ca>:
	* configure.in (CONFIG_INITS): Don't include hpux-thread.c. Stops
 	_initialize_hpux_thread being called twice.
	* configure: Regenerated.

2000-03-19  Eli Zaretskii  <eliz@is.elta.co.il>

	* event-top.c (_initialize_event_loop): If instream is not
	connected to a terminal device, turn editing off.

2000-03-19  Eli Zaretskii  <eliz@is.elta.co.il>

	Support for building GDB with DJGPP, and running the test suite on
	it:
	* config/djgpp/djconfig.sh: New file.
	* config/djgpp/config.sed: New file.
	* config/djgpp/README: New file.
	* config/djgpp/fnchange.lst: New file.
	* config/djgpp/djcheck.sh: New file.

2000-03-19  Eli Zaretskii  <eliz@is.elta.co.il>

	* ser-go32.c (ports): Make the initializers complete, to pacify
	GCC 2.9X.

2000-03-17  Jim Blandy  <jimb@redhat.com>

	* i386v-nat.c (i386_insert_nonaligned_watchpoint): Use a
	two-dimensional array, instead of faking it with explicit index
	arithmetic.

	* linux-thread.c (linuxthreads_attach, linuxthreads_detach,
	linuxthreads_create_inferior): Fix typo in variable name: it's
	linuxthreads_exit_status, not linux_exit_status.

	* gdb_wait.h (WSETSTOP): Pass the appropriate number of arguments
	to W_STOPCODE.

	* solib.c (solib_add): Delete debugging code.

2000-03-17  Mark Kettenis  <kettenis@gnu.org>

	* gdb_wait.h: add definitions of WSETSTOP and WSETEXIT for Linux.
	* linux-thread.c: Use WSETSTOP instead of W_STOPCODE.

Fri Mar 17 11:06:59 2000  Philippe De Muyter  <phdm@macqel.be>

	* language.c (set_lang_str): Do not call `free' for a null pointer.
        (set_type_str, set_range_str): Ditto.

2000-03-16  Jim Blandy  <jimb@redhat.com>

        * i386-linux-nat.c (i386_linux_saved_pc_after_call): Lost in the
	merge; reinstated.

	* solib.c (current_sos): Be more careful about freeing the new
	so_list node if an error occurs.

	* i386-tdep.c (LINUX_SIGTRAMP_INSN0, LINUX_SIGTRAMP_OFFSET0,
	LINUX_SIGTRAMP_INSN1, LINUX_SIGTRAMP_OFFSET1,
	LINUX_SIGTRAMP_INSN2, LINUX_SIGTRAMP_OFFSET2, linux_sigtramp_code,
	LINUX_SIGTRAMP_LEN, i386_linux_sigtramp_start,
	LINUX_RT_SIGTRAMP_INSN0, LINUX_RT_SIGTRAMP_OFFSET0,
	LINUX_RT_SIGTRAMP_INSN1, LINUX_RT_SIGTRAMP_OFFSET1,
	linux_rt_sigtramp_code, LINUX_RT_SIGTRAMP_LEN,
	i386_linux_rt_sigtramp_start, i386_linux_in_sigtramp,
	i386_linux_sigcontext_addr, LINUX_SIGCONTEXT_PC_OFFSET,
	i386_linux_sigtramp_saved_pc, LINUX_SIGCONTEXT_SP_OFFSET,
	i386_linux_sigtramp_saved_sp):	Deleted.  These all implement
	Linux-specific signal trampoline detection, and should be moved
	to...
	* i386-linux-nat.c: ... here.
	* config/i386/tm-linux.h (I386_LINUX_SIGTRAMP): No need to define
	this any more, since we're not enabling OS-specific code in a
	OS-independent file.
	
2000-03-16  Eli Zaretskii  <eliz@is.elta.co.il>

	* Makefile.in (go32-nat.o): Add prerequisites.
	(ALLDEPFILES): Add go32-nat.c.

2000-03-15  Michael Snyder  <msnyder@cygnus.com>

	From "Peter.Schauer" <Peter.Schauer@regent.e-technik.tu-muenchen.de>
	* symfile.c (reread_symbols):  Clear msymbol hash table.

2000-03-15  Jim Blandy  <jimb@redhat.com>

	Deal with the inferior unloading shared objects.
	* solib.c (current_sos): New function, replacing find_solib.
	(find_solib): Deleted.
	(free_so): New function.
	(clear_solib): Call free_so, instead of writing it out.
	(solib_add): Rewritten: compare the inferior's current list of
	shared objects with GDB's list, and do the required loads and
	unloads.
	(info_sharedlibrary_command, solib_address): Don't use find_solib
	to walk the list of shared libraries: call solib_add, and then
	walk the list at so_list_head normally.
	* objfiles.c (free_objfile): Don't call CLEAR_SOLIB, and don't
	detach the core target.  These tasks are taken care of elsewhere.
	* target.c (remove_target_sections): New function.
	* target.h (remove_target_sections): New declaration.

	* solib.c (symbol_add_stub): Check whether we've already created
	an objfile for this shared object first, before doing all that
	work to compute section addresses, etc.

	* objfiles.c (unlink_objfile): Report an internal error if objfile
	doesn't occur in the object_files list.

	* solib.c (special_symbol_handling): Delete argument; it's not
	used.
	
	Changes from Peter Schauer <pes@regent.e-technik.tu-muenchen.de>:

	* solib.c (SOLIB_EXTRACT_ADDRESS):  New macro to extract addresses
	from solib structures. Use it throughout solib.c, get rid of all
	CORE_ADDR casts.
	(struct so_list):  Change type of lmaddr to CORE_ADDR.
	(first_link_map_member):  Change return value type to CORE_ADDR,
	update callers.
	(solib_add_common_symbols):  Change parameter type to CORE_ADDR,
	update callers.
	(open_symbol_file_object, find_solib):  Change type of lm variable
	to CORE_ADDR.

2000-03-15  Eli Zaretskii  <eliz@is.elta.co.il>

	* ser-go32.c (dos_noop, dos_raw, dos_noflush_set_tty_state)
	(dos_print_tty_state, dos_info, _initialize_ser_dos): Convert
	to ISO C.  Use ATTRIBUTE_UNUSED to avoid compiler warnings.
	(dos_info): Avoid compiler warning when printing a ptrdiff_t.

	* ser-go32.c (dos_get_tty_state): Fail if the (fake) handle was
	not opened by dos_open, but let the 3 standard handles go through
	unharmed.

2000-03-14  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* eval.c (evaluate_subexp_with_coercion): Add call to
 	check_typedef, to handle typedeffed vars correctly.

Mon Mar 13 21:21:41 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* defs.h (STREQ, STRCMP, STREQN): Document that these macros are
 	somewhat redundant.
	(QUIT): Note that this can probably be replaced by a function.

2000-03-13  James Ingham  <jingham@leda.cygnus.com>

	Add support for a variable object that tries to evaluate itself in 
	the currently selected frame, rather than in a fixed frame.
	
	* wrapper.c,h (gdb_parse_exp_1): Added a wrapper for
 	gdb_parse_exp_1.
	* varobj.h: Added USE_CURRENT_FRAME to varobj_type & changed def'n 
	of varobj_create.
	* varobj.c (varobj_list): Return type indicates whether the
	variable's type has changed (for current frame variables).
	(varobj_update): Handle the case where the variable's type has
	changed.
	(delete_variable_1): Allow for deletion of variables that have not 
	been installed yet.
	(new_root_variable): Initialize use_selected_frame variable.
	(value_of_root): This is where most of the work to handle "current 
	frame" variables was added.  Most of the complexity involves
	handling the case where the type of the variable has changed.
	(varobj_create): Add a "type" argument, to tell if the
	variable is one of these "current frame" variables.  Also protect
	call to parse_exp_1 from long jumping.
	
2000-03-13  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (struct env387): Remove declaration.
	(print_387_status, i386_go32_float_info): Remove redundant
	functions.
	(regno_mapping, sig_map, excepn_map): Add braces around inner
	initializers.
	(many functions): Use ATTRIBUTE_UNUSED to shut up the compiler;
	fix code which mixed signed with unsigned.
	(go32_resume): Use TARGET_SIGNAL_LAST instead of -1.
	(go32_wait): Initialize INT3_addr.
	(go32_fetch_registers): Extend all FP registers that are shorter
	than 4 bytes to 32 bits.  Support 32 standard FP registers defined
	on config/i386/tm-i386.h.
	(store_register): Support 32 FP registers.
	(go32_create_inferior): Don't crash if handed a NULL pointer
	instead of exec file name.
	(ignore): Remove unused function.
	(go32_insert_hw_breakpoint): Remove unused variables.
	(init_go32_ops): Set value of processing_gcc_compilation to 2.

Mon Mar 13 18:54:42 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-03-10 Daniel Berlin <dan@cgsoftware.com> Fix C++
 	overloading, add support for seeing through references:
	* valops.c (find_overload_match): Handle STABS overloading for
	C++.
	(find_overload_match): Look in right place for function arguments
	in the debug info.
	(find_overload_match): Rather than giving up when we have >1
	perfect match, just choose one, especially since the
	recommendation GDB gives ("disambiguate it by specifying function
	signature"), is basically impossible.
	(check_field_in): STREQ->strcmp_iw
	(search_struct_field): STREQ->strcmp_iw
	(find_method_list): STREQ->strcmp_iw
	* gdbtypes.c (rank_one_type): Add ability to see through
	references.
	(rank_one_type): strcmp->strcmp_iw, because the whitespace could
	be different.
	(rank_function): Rank function properly (was doing it wrong
	before, comparing the wrong parts of the arrays)
	(rank_one_type): Change #if 0 to #ifdef DEBUG_OLOAD.
	* gdbtypes.h: Add REFERENCE_CONVERSION_BADNESS for "badness"
	associated with converting a non-reference to a reference.
    * eval.c (evaluate_subexp_standard): for OP_VAR_VALUE, always
    return full value object; for STRUCTOP_PTR, use pointer to
    rtti type to get member / method if objectprint is set and
    target type of pointer is class.

	* gdbtypes.c (rank_one_type): Add comment on how to eliminate the
 	#ifdef DEBUG_OLOAD.
	
2000-03-11  Mark Kettenis  <kettenis@gnu.org>

	* gnu-nat.c: Fix the formatting where indent misinterpreted `&' as
	a binary operator.
	(gnu_attach): Change error message for missing
	argument to be identical to the corresponding message in
	`inftarg.c'.  This makes the testsuite happy.

2000-03-11  Mark Kettenis  <kettenis@gnu.org>

	* i386gnu-nat.c (gnu_store_registers): Make sure the T bit in the
	%eflags isn't modified.  This fixes a bug where every call to a
	function in the program beyond the first call would fail.

Fri Mar 10 11:44:55 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Devolve responsibility for domain maintenance.

2000-03-06  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* minsyms.c (prim_record_minimal_symbol_and_info): Add comment.

2000-02-25  Scott Bambrough <scottb@netwinder.org>

	* gdb.base/long_long.exp: Correct test suite failure when printing
	a long long value as a double on ARM platforms.

Thu Mar  9 14:21:07 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS (Core): Anthony Green is the Java - including
 	testsuite - maintainer.  Reformat testsuite and language support
 	sections

2000-03-08  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_linux_saved_pc_after_call): New function.
	* config/i386/tm-linux.h (SAVED_PC_AFTER_CALL): Define to call
	i386_linux_saved_pc_after_call.

2000-03-06  Jim Blandy  <jimb@redhat.com>

	From Tom Tromey <tromey@cygnus.com> and Keith Seitz <?>:

	* minsyms.c: #include <ctype.h>, for msymbol_hash_iw.
	(compact_minimal_symbols): Added `objfile' argument.
	Put symbols in the objfile's hash table.
	(install_minimal_symbols): Put symbols in the objfile's demangled
	hash table.
	(lookup_minimal_symbol): Use hash table to find symbol in
	objfile.
	(msymbol_hash_iw, msymbol_hash, add_minsym_to_hash_table): New
	functions.
	(prim_record_minimal_symbol_and_info): Initialize the
	hash link fields of the new minimal symbol.
	* symtab.h (struct minimal_symbol): New fields `hash_next',
	`demangled_hash_next'.
	(msymbol_hash_iw, msymbol_hash, add_minsym_to_hash_table): Declare.
	* objfiles.h (MINIMAL_SYMBOL_HASH_SIZE): New define.
	(struct objfile): New fields `msymbol_hash',
	`msymbol_demangled_hash'.

2000-03-06  Jim Blandy  <jimb@redhat.com>

	* solib.c (first_link_map_member): Doc fix.

2000-03-06  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

        From  Eli Zaretskii  <eliz@is.elta.co.il>:

	* event-loop.c (poll_timers): Don't compare delta.tv_sec with
	zero, since time_t might be unsigned.

2000-03-06  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-nat.c (supply_fpregset): Mask off the reserved bits
	in *FPREGSETP.
	(convert_to_fpregset): Don't touch the reserved bits in *FPREGSETP.

2000-03-05  Mark Kettenis  <kettenis@gnu.org>

	Allow GDB to run on Linux 2.0 again.
	* config.in: Add HAVE_PTRACE_GETREGS.
	* configure.in: Check if <sys/ptrace.h> defines PTRACE_GETREGS.
	* configure: Regenerated.
	* config/i386/nm-linux.h (CANNOT_FETCH_REGISTER,
	CANNOT_STORE_REGISTER): New defines.
	* i386-linux-nat.c (have_ptrace_getregs): New variable.
	(PTRACE_XFER_TYPE, CANNOT_FETCH_REGISTER, fetch_register,
	old_fetch_inferior_registers, CANNOT_STORE_REGISTER,
	store_register, old_store_inferior_registers): Copied over from
	`inptrace.c' as a temporary measure.
	(fetch_regs, store_regs, fetch_fpregs, store_fpregs):
	Conditionalize on HAVE_PTRACE_GETREGS.  Define stubs if
	HAVE_PTRACE_GETREGS isn't defined.
	(fetch_regs): Reset `have_ptrace_getregs' if ptrace call fails
	with EIO.
	(fetch_inferior_registers, store_inferior_registers): Fall back on
	the method use in `infptrace.c' (by calling
	old_fetch_inferior_registers and old_store_inferior_registers) if
	`have_ptrace_getregs' isn't set.

2000-03-05  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-nat.c: Use elf_gregset_t and elf_fpregset_t instead
	of gregset_t and fpregset_t.  Those are the only names that are
	guaranteed to specify the right types for all supported Linux
	systems out there.
	Various doc fixes and gratitious local variable renames, all in an
	attempt to stress similarities between the code and unify the
	terminology used.  Use ISO-C all over.
	(regmap): Remove trailing comma.
	(FPREG_ADDR): Renamed from FPREGSET_T_FPREG_ADDR.
	(convert_to_gregset): Make static.  Remove GDB_REGS argument.  It
	is unnecessary and wasn't used anyway.  All callers changed.
	(convert_to_fpregset, convert_to_xfpregset): Likewise.
	(fetch_regs, store_regs): Remove unused variable `regno'.
	(fill_fpregs): If REGNO is not -1, only update the specified
	register.
	(fetch_core_registers): Renamed from
	i386_linux_fetch_core_registers.  There is no need for a unique
	name since the function is static anyway.
	(linux_elf_core_fns): Renamed from i386_linux_nat_core_functions
	since it is more descriptive.

Sun Mar  5 19:40:27 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS (readline/): Expand to include host maintainers.

2000-03-04  Mark Kettenis  <kettenis@gnu.org>

	Fix support for Linux/i386 signal trampolines.  The old approach
	didn't work for Linux 2.2 and beyond, and didn't work with recent
	versions of the GNU C library.
	* i386-tdep.c (LINUX_RT_SIGTRAMP_INSN0, LINUX_RT_SIGTRAMP_OFFSET0,
	LINUX_RT_SIGTRAMP_INSN1, LINUX_RT_SIGTRAMP_OFFSET1): New defines.
	(linux_rt_sigtramp_code): New variable.
	(LINUX_RT_SIGTRAMP_LEN): New define.
	(i386_linux_rt_sigtramp_start): New function.  Detect start of
	signal trampolines for RT signals.
	(i386_linux_sigtramp): Removed.
	(i386_linux_in_sigtramp): New function.
	(i386_linux_sigcontext_addr): New function.  Recognize the names
	of the signal tranmpolines used by recent versions of the GNU C
	library, and add support for RT signals.
        (LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_SP_OFFSET):  New
	defines.  Moved here from config/i386/tm-linux.h.
	(i386_linux_sigtramp_saved_pc, i386_linux_sigtramp_saved_sp):
	Reimplement in terms of i386_linux_sigcontext_addr.
	* config/i386/tm-linux.h (LINUX_SIGCONTEXT_SIZE): Removed.
        (LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_SP_OFFSET):
        Moved to i386-tdep.c.
	(IN_SIGTRAMP): Redefine to call i386_linux_in_sigtramp.

Sat Mar  4 19:38:11 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	By: Sat Mar 4 04:08:58 2000 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
	* Makefile.in (all-gdbtk): Fix $srcdir to ${srcdir}.

Sat Mar  4 17:23:06 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Frank Ch. Eigler and Andrew Cagney co-ordinate the
 	sim directory.

Sat Mar  4 16:19:31 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Add Michael Snyder and Peter Schauer to list of
 	``Blanket Write Privs'' maintainers.

Sat Mar  4 15:58:40 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Sun 20 Feb 2000 Robert Lipe <robertl@sco.com>:
	* language.c (longest_local_hex_string_custom): Don't compile
 	'long long' section if host doesn't have 'long long'.

Sat Mar  4 15:45:38 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* language.c (longest_raw_hex_string): Comment out.  Appears
 	unused.

Sat Mar  4 13:02:09 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* utils.c (mcalloc), defs.h (mcalloc): Keep consistent with
 	"mmalloc.h" which means using PTRs.
	(init_malloc, msavestring, mstrsave): Convert to PTR free ISO-C.

Sat Mar  4 11:49:21 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* defs.h (store_address, store_unsigned_integer, store_address):
 	Replace PTR with void* in delcaration.
	* findvar.c (extract_signed_integer, extract_unsigned_integer,
 	extract_long_unsigned_integer, extract_address,
 	store_signed_integer, store_unsigned_integer, store_address):
 	Convert definition to ISO-C.  Replace PTR with void*.

Sat Mar  4 10:57:25 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* defs.h (make_cleanup_func): Document as deprecated.
	(make_cleanup_ftype): New typedef.  Make signature consistent with
 	other function typedefs.  Document as not be used out side of
 	make_cleanup code. Use in make_cleanup declarations.
	(null_cleanup): Replace PTR with void*.
	
	* utils.c (make_cleanup, make_final_cleanup, make_run_cleanup,
 	make_exec_cleanup, make_exec_error_cleanup, make_my_cleanup,
 	null_cleanup): Change K&R definition to ISO-C using void* and
 	make_cleanup_fytpe.
	(discard_my_cleanups): Don't cast argument to free.

2000-03-03  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* defs.h (struct continuation_arg): Change type of field 'data'
 	from PTR to void *.

	* event-loop.h: Eliminate uses of PTR, use 'void *' instead.

	* event-top.c: Ditto.

Fri Mar  3 15:39:34 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (CONFIG_CLEAN, CONFIG_ALL, LN_S): Defined by
 	configure.
	(SUBDIR_MI_CLEAN, SUBDIR_GDBTK_CLEAN, SUBDIR_MI_ALL,
 	SUBDIR_GDBTK_ALL): Define.
	(all-gdbtk, clean-gdbtk): New targets.
	(all): Add CONFIG_ALL as dependency.
	(clean): Add CONFIG_CLEAN as dependency.
	
	* configure.in (CONFIG_ALL, CONFIG_CLEAN): Define.
	(LN_S): Define.  Delete GDBtk's link code.

Fri Mar  3 13:12:34 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (ENABLE_GDBTK): Delete variable.
	(enable-gdbtk): Only enable gdbtk when there is a GDBTK directory.
	* Makefile.in: Update.
	* configure: Regenerate

2000-03-02  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* config/alpha/alpha-linux.mh: Remove core-regset.o fron the
 	NATDEPFILES list.

2000-03-02  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386aix.h (NUM_FPREGS, NUM_REGS, REGISTER_BYTES):
	Override definitions to include the normal FPU registers.
	(REGISTER_CONVERTIBLE, REGISTER_CONVERT_TO_VIRTUAL,
	REGISTER_CONVERT_TO_RAW): Removed.  The default definitions are
	fine for AIX/i386.
	(i387_to_double, double_to_i387): Remove prototypes.

2000-03-02  Kevin Buettner  <kevinb@redhat.com>

	* findvar.c (extract_floating, store_floating): Use target
	floating point type sizes rather host sizes to determine
	which conversion needs to be done.

2000-03-02  Nick Duffek  <nsd@cygnus.com>

	* uw-thread.c: Apply GNU conventions to comment formatting.
	(deactivate_uw_thread): Call remove_thread_event_breakpoints().
	(uw_thread_mourn_inferior): Move remove_thread_event_breakpoints()
	call to deactivate_uw_thread().

Thu Mar  2 09:04:46 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Daniel Berlin is C++ maintainer.		

Thu Mar  2 08:55:35 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Mark Kettenis is the x86 architcture maintainer and
 	a joint GNU/Linux/x86 maintainer.  Nick Duffeck and Robert Lipe
 	share SCO/Unixware.  Nick Duffek and Peter Schauer share
 	Solaris/x86.

Wed Mar  1 22:12:35 2000  Andrew Cagney  <cagney@b1.cygnus.com>
	
	From Wed 23 Feb 2000 Fernando Nasser <fnasser@redhat.com>:
	* remote-sim.c (gdbsim_close): Call generic_mourn_inferior.
	* remote-rdi.c (arm_rdi_close): Ditto. 

Wed Mar  1 19:31:32 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* CONTRIBUTE (configure.in): Note that patches to configure are
 	not needed.

2000-03-01  Mark Kettenis  <kettenis@gnu.org>

	* MAINTAINERS: Correct my own mail address.

Wed Mar  1 11:26:07 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Document people with paperwork pending.

Wed Mar  1 00:49:06 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-02-28 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>:
	Make NEW_PROC_ABI interface functional on Solaris x86.
	* sol-thread.c (ps_lgetLDT): Rewrite to use new
 	procfs_find_LDT_entry function from procfs.c, mostly copied from
 	lin-thread.c.
	* inferior.h, procfs.c (procfs_get_pid_fd): Removed, no longer
 	needed.

Wed Mar  1 00:34:55 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-02-26 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>:
	* config/i386/tm-i386sol2.h (MERGEPID): Define.

Wed Mar  1 00:06:19 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 1999-08-13 J.T. Conklin <jtc@redback.com>:
        * config/i386/tm-i386.h (FRAME_INIT_SAVED_REGS): Replace
        FRAME_FIND_SAVED_REGS.
        (i386_frame_init_saved_regs): Replace i386_frame_find_saved_regs.
        * i386-tdep.c (i386_frame_init_saved_regs, i386_pop_frame):
        Update.

Tue Feb 29 23:56:41 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-02-23 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>:
	* objfiles.c (open_mapped_file):  Fix obsolete references to `mapped'
	parameter.

Tue Feb 29 18:47:58 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-02-23 Eli Zaretskii <eliz@is.elta.co.il>:
	* config/i386/nm-go32.h (FLOAT_INFO): Remove macro definition.
	(top level): Add prototypes for go32_* functions.
	* config/i386/tm-go32.h (I386_DJGPP_TARGET): Define.
	(FRAME_CHAIN, FRAMELESS_FUNCTION_INVOCATION, FRAME_SAVED_PC):
	Override definitions from tm-i386.h.
	(REGISTER_VIRTUAL_TYPE): Remove macro definition.
	* i386-tdep.c (i386_extract_return_value)
	[I386_AIX_TARGET || I386_GNULINUX_TARGET]: Add I386_DJGPP_TARGET
	to the list of targets which return FP values in FP registers.

	* i386-tdep.c (i386_extract_return_value): Add FIXME recommending
 	that this function be re-implemented using multi-arch.

Tue Feb 29 18:40:08 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-02-23 Eli Zaretskii <eliz@is.elta.co.il>:
	* utils.c [__GO32__]: Include pc.h, for prototypes of ScreenCols
	and ScreenRows.
	* ser-go32.c: Include string.h, for prototype of strncasecmp.
	(dpmi_regs, dpmi_sregs): Remove unused variables.
	(dos_flush_input): Return a value, to prevent compiler warning.
	* expprint.c (dump_prefix_expression): Use %ld in format and cast
	sizeof(union exp_element) to long, to prevent GCC from complaining
	about format/argument mismatch.
	(dump_postfix_expression): Likewise.

Tue Feb 29 18:09:46 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* arm-tdep.c: Include <ctype.h>.

Tue Feb 29 17:33:49 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Wed, 23 Feb 2000 Fernando Nasser <fnasser@redhat.com>:
	* stack.c (backtrace_command_1), infrun.c (normal_stop): Check
 	that the target's stack was valid.

Tue Feb 29 15:14:56 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-02-22 Stephane Carrez <stcarrez@worldnet.fr>:
        * dwarf2read.c (read_address): Read 16-bits addresses.

2000-02-28  Scott Bambrough <scottb@netwinder.org>

	* arm-linux-nat.c (fetch_nw_fpe_*):
 	Renamed to fetch_nwfpe_* to use the same naming convention
	as in the Linux kernel.  Modified prototype to get rid of
	unused parameters.
	(store_nw_fpe_*): Renamed to store_nwfpe_* to use the same
	naming convention as in the Linux kernel.  Fixed calls to 
	fetch_nwfpe_*.
	(store_fpregs): Fixed calls to store_nwfpe_*.  Removed
	unused variable. 

Mon Feb 28 18:24:32 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Transfer d30v maintainership to David Taylor.

2000-02-28  Christopher Faylor  <cgf@cygnus.com>

	* win32-nat.c: Remove unneeded header.
	* wince.c: Ditto.

Mon Feb 28 13:34:54 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* wince.c: Include "gdb_wait.h" and not "wait.h".

Mon Feb 28 10:58:45 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Mention mmalloc.  Expand Host/Native and
 	Target/Architecture maintainers descriptions.

2000-02-26  Mark Kettenis  <kettenis@gnu.org>

	* gnu-nat.c: Include "gdbthread.h".  Include <hurd.h>.
	Reorder headers a bit.  Overall cleanup and minor reformatting.
	(MIG_SERVER_DIED): Remove define.
	(proc_update_sc): Add braces to silence compiler warning.
	(proc_steal_exc_port): Initialize err to zero.
	(make_proc): Add braces to silence compiler warning.
	(inf_validate_task_sc): Add cast to silence compiler warning.
	(inf_set_traced): Reorganize a bit to silence compiler warning.
	(inf_validate_procs): Use mach_msg_type_number_t for all thread
	numbers and add braces to silence compiler warning.
	(gnu_wait): Add prototypes for server functions and add braces to
	silence compiler warnings.
	(S_exception_raise_request): Pass subcode to inf_debug call.
	(gnu_write_inferior): Remove unused variable `protection_changed'.
	(gnu_xfer_memory): Remove unused variable `result'.
	(set_sig_thread_cmd): Remove unused varible `tid'.
	(set_signals_cmd): Remve unused variable `trace'.
	(add_task_commands): Provide complete prototype.  Reformat help
	strings a bit to make sure the first line is a full sentence.
	Call info_port_rights_cmd instead of info_send_rights_cmd for the
	"info port-rights" command.
	(add_thread_commands): Provide complete prototype.  Make static.
	Reformat help strings a bit to make sure the first line is a full
	sentence.
	(_initialize_gnu_nat): Provide complete prototype.

2000-02-26  Mark Kettenis  <kettenis@gnu.org>

	Make cross-compilation for the Hurd more friendly.
	From Jeff Bailey <jbailey@gnu.org>:
	* configure.in: Use AC_CHECK_TOOL to find MiG.
	* Makefile.in (MIG): New variable.
	* config/i386/i386gnu.mh (MIG): Remove.
	* configure: Regenerated.

2000-02-26  Kevin Buettner  <kevinb@redhat.com>

	* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint): Add
	comment explaining motivation behind this function and why
	the generic facilities won't work for this platform.
	* rs6000-tdep.c (skip_prologue): Always test to make sure
	that an instruction is read successfully from the target's
	memory.  Introduce notion of instructions which may appear in
	the prologue, but may not end the prologue.  Added explicit
	check for nop instruction.  Use memset() to zero the frame
	data instead of assignment from a statically allocated,
	uninitialized structure.

Sat Feb 26 17:15:16 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Chris Faylor is responsible for all MS Windows
 	systems.  Note that Jim Blandy as maintainer for ``tracing
 	bytecode stuff''

2000-02-25  Fernando Nasser  <fnasser@cygnus.com>

	From: Thomas Zenker <thz@Lennartz-electronic.DE>
	* rdi-share/hsys.c: to compile under 4.4BSD derived systems (FreeBSD,
	NetBSD...) sys_errlist should not be declared in hsys.c.
	NEED_SYSERRLIST is set already by configure, so we can use it.
	* rdi-share/unixcomm.c: 4.4BSD derived systems define BSD, but are
	posix compliant and we should not work with the old compatibility
	stuff.  Because of that I undef BSD in case of FBSD etc and include
	sys/ioctl to get the flags.
	* rdi-share/unixcomm.c: If the TIOCEXCL flags exists set serial line
	for exclusive use.

2000-02-24  Kevin Buettner  <kevinb@redhat.com>

	* ppc-linux-tdep.c (ppc_sysv_abi_push_arguments): Put address
	of return structure in r3 if necessary.
	(ppc_linux_memory_remove_breakpoints): New function.
	* rs6000-tdep.c (skip_prologue): Make sure that the cases
	for storing either cr or lr to the stack only handle those
	cases.  (I.e, don't let these cases match 0x00000000 which is
	found found in the shared library trampoline prior to the
	loading of the shared library.)
	* config/powerpc/tm-linux.h (ppc_linux_memory_remove_breakpoint):
	Declare.
	(MEMORY_REMOVE_BREAKPOINT): Define.

Wed Feb 23 23:27:48 2000  Andrew Cagney  <cagney@behemoth.cygnus.com>

	* hppah-nat.c: Include "gdb_wait.h" instead of <wait.h>.

Thu Feb 24 18:42:15 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (CONFIG_INSTALL, CONFIG_UNINSTALL): Set to
 	$(SUBDIR_*_INSTALL) when so configured.
	* configure: Regenerate.
	
	* Makefile.in (CONFIG_INSTALL, CONFIG_UNINSTALL): Define using
 	configure.
	(install-only): Add dependency on $(CONFIG_INSTALL).  Delete code
 	installing GDBtk.
	(uninstall): Add dependency on $(CONFIG_UNINSTALL).
	(SUBDIR_MI_INSTALL, SUBDIR_MI_UNINSTALL, SUBDIR_GDBTK_UNINSTALL,
 	SUBDIR_GDBTK_INSTALL): Define.
	(install-gdbtk): New target.

Thu Feb 24 18:19:52 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (SUBDIR_MI_CFLAGS): Fix typo, wrong brace.
	* configure: Regenerate.
	
2000-02-24  Christopher Faylor  <cgf@cygnus.com>

	* configure.tgt: Add arm, mips, sh wince targets.
	* config/arm/tm-wince.h: New file.
	* config/arm/wince.mt: New file.
	* config/sh/tm-wince.h: New file.
	* config/sh/wince.mt: New file.
	* config/mips/tm-wince.h: New file.
	* config/mips/wince.mt: New file.
	* wince.c: New file.
	* wince-stub.c: New file.
	* wince-stub.h: New file.
	* sh-tdep.c: Use correct register names for Windows CE.

Wed Feb 23 19:01:45 EST 2000  Nicholas Duffek <nsd@cygnus.com>

	* top.c (SIGJMP_BUF, SIGSETJMP, SIGLONGJMP): Update comments.
	(error_return, quit_return): Merge into catch_return pointer.
	(return_to_top_level): Update comment.  Longjmp to *catch_errors,
	and communicate reason to catch_errors via setjmp return value.
	(catch_errors): Always catch both quit and error, and if a catch
	wasn't requested by caller, throw it to the next catch_error.
	Replace dual longjmp buffer memcpy with single pointer change.
	Add FIXME for possibly adding new interface to tell caller what
	event was caught.  Add extensive comments.
	* defs.h (enum return_reason): Reserve 0 for use as initial
	setjmp() return value.
	(RETURN_MASK): New public macro to generate RETURN_MASK_* from
	enum return_reason.
	(RETURN_MASK_QUIT, RETURN_MASK_ERROR): Define using RETURN_MASK.

2000-02-23  Fernando Nasser  <fnasser@cygnus.com>

	* infcmd.c (run_stack_dummy): Do not pop frame on random signal.
	* valops.c (_initialize_valops): Add command "set unwindonsignal".
	(hand_function_call): Test for unwind_on_signal and act accordingly.

Wed Feb 23 12:58:46 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh (dis_asm_read_memory): Change LEN to unsigned long.
  	Match ../include/dis-asm.h change.
	* gdbarch.h: Regenerate.
	* corefile.c (dis_asm_read_memory): Update.

Mon Feb 21 13:57:27 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (CONFIG_INITS): Fix typo, was CONFIG_INIT.
	(ENABLE_CFLAGS): Move initialization to start of file.
	(enable-gdbmi): Add new configure option --enable-gdbmi.  When
 	selected and an ${srcdir}/mi directory is present enable MI
 	interface.

	* configure: Regenerate.
	
	* Makefile.in (SUBDIR_MI_OBS, SUBDIR_MI_SRCS, SUBDIR_MI_DEPS,
 	SUBDIR_MI_INITS, SUBDIR_MI_LDFLAGS, SUBDIR_MI_CFLAGS): New macros.
	(CONFIG_OBS, CONFIG_SRCS, CONFIG_DEPS, CONFIG_INITS,
 	CONFIG_LDFLAGS): New macros.  Initialized by autoconf via
 	@CONFIG...@.
	(INTERNAL_LDFLAGS, CDEPS, LINTFILES, DEPFILES, SOURCES,
 	INIT_FILES): Use $(CONFIG_...) instead of @CONFIG...@.

	* mi: New directory. MI interface to GDB.

	* defs.h (interpreter_p): Declare when UI_OUT.
	* top.c (gdb_init): When interpreter_p, check that the interpreter
 	was recognized by one of the linked in interpreters.
	* main.c (interpreter_p): Define.
	(captured_main): When UI_OUT, check for ``-i <interpreter>'' option.
	* event-top.c (display_gdb_prompt): When interpreter_p, assume
 	interpreter displays prompt.

	* breakpoint.c (print_it_typical, watchpoint_check,
 	print_one_breakpoint, mention): When MI include additional
	target status information.
	* infrun.c (print_stop_reason, normal_stop): Ditto.

2000-02-22  Jim Blandy  <jimb@redhat.com>

	* gdbarch.sh: Make the `default' field really default to zero, as
 	documented.

	Bring COERCE_FLOAT_TO_DOUBLE under gdbarch's control.
	* valops.c (COERCE_FLOAT_TO_DOUBLE): Rework definition to be
	more function-like.
	(default_coerce_float_to_double, standard_coerce_float_to_double):
	New functions.
	(value_arg_coerce): Adjust for new definition.
	* value.h (default_coerce_float_to_double,
	standard_coerce_float_to_double): New declarations for the above.
	* gdbarch.sh (coerce_float_to_double): New entry, replacing macro.
	* gdbarch.c, gdbarch.h: Regenerated.
	* tm-alpha.h, tm-fr30.h, tm-m32r.h, tm-mips.h, tm-hppa.h,
 	tm-rs6000.h, tm-sh.h, tm-sparc.h (COERCE_FLOAT_TO_DOUBLE): Change
 	definitions.
	* mips-tdep.c (mips_coerce_float_to_double): Supply our own custom
	function here.
	(mips_gdbarch_init): Install that as our coerce_float_to_double
	function.

2000-02-22  Kevin Buettner  <kevinb@redhat.com>

	* ppc-linux-nat.c (supply_gregset, supply_fpregset): Add return
	type.
	* ppc-linux-tdep.c (ppc_linux_at_sigtramp_return_path): Add
	forward declaration.

	* ppc-linux-tdep.c (ppc_linux_frame_saved_pc): Handle case
	where the next frame is a signal handler caller.

	* config/powerpc/tm-linux.h (PUSH_ARGUMENTS): Remove extraneous
	undef.
	(tm-linux.h): Include.
	(tm-sysv4.h): Don't include (directly).  config/tm-linux.h will
	include this file for us.
	(REALTIME_LO, REALTIME_HI): Don't define.  These are defined by
	config/tm-linux.h for us.
	(SOFUN_ADDRESS_MAYBE_MISSING): Define.

2000-02-21  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (ppc-linux-nat.c, ppc-linux-tdep.c): New files.
	(ppc-linux-nat.o, ppc-linux-tdep.o): Add dependencies.
	* configure.tgt (powerpc-*-linux*): Separate from powerpc-*-eabi
	and like targets.

	* ppc-linux-nat.c, ppc-linux-tdep.c, config/powerpc/linux.mt,
	config/powerpc/nm-linux.h, config/powerpc/tm-linux.h: New files.
	* config/powerpc/xm-linux.h: Substantially revised for native
	port.
	* config/powerpc/linux.mh (NAT_FILE): Redefine to be nm-linux.h.
	(NATDEPFILES): Update list to reflect the fact that we can
	now debug natively.

	* rs6000-tdep.c, config/rs6000/tm-rs6000.h
	(rs6000_frameless_function_invocation, rs6000_frame_saved_pc):
	Renamed; The former names were lacking the rs6000_ prefix.
	* rs6000-tdep.c (rs6000_frame_saved_pc): Call FRAME_CHAIN
	instead of rs6000_frame_chain.
	(rs6000_frame_chain): Call FRAMELESS_FUNCTION_INVOCATION instead
	of rs6000_frameless_function_invocation.

2000-02-21  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	From Philippe De Muyter  <phdm@macqel.be>

	* event-loop.c (handle_file_event): In case of poll, enable
 	printing of informational message if an error/exception is
 	detected on the file descriptor.

2000-02-21  Jim Kingdon  <kingdon@redhat.com>

	* MAINTAINERS (Misc): Clarify that yes, anyone can edit web pages.

Mon Feb 21 12:50:57 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* buildsym.c: Include "language.h" and "expression.h" for
 	longest_local_hex_string_custom.

Mon Feb 21 11:17:18 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh: Include <gdb_wait.h> instead of <wait.h>.
	* gdbarch.c: Already updated by Wed Feb 9 18:59:16 2000 Andrew
 	Cagney <cagney@b1.cygnus.com>.

Mon Feb 21 11:03:01 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Update: IA-64 - Kevin Buettner; ARM - Fernando
 	nasser, Jim Ingham and Scott Bambrough; GNU/Linux ARM - Scott
 	Bambrough; event loop - Elena Zannoni; SDS and RDI/APD protocol -
 	to Fernando Nasser and Jim Ingham; KOD - Fernando Nasser; MI -
 	Andrew Cagney, Elena Zannoni and Fernando Nasser; Web pages - Jim
 	Kingdon.
	* MAINTAINERS: Add Nick Clifton to write after approval list.
	
Mon Feb 21 10:30:39 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Add note on multiple maintainers.

2000-02-19  Philippe De Muyter  <phdm@macqel.be>

        * cli-out.c (cli_table_header): Type of parameter `alignment' is
        `enum ui_align', not `int'.
        (cli_field_string, cli_field_skip): Likewise.

2000-02-18  Jim Blandy  <jimb@redhat.com>

	From Jimmy Guo <guo@cup.hp.com>:
	* buildsym.h (add_free_pendings): Declare.
	* buildsym.c (add_free_pendings): New function.
	(make_blockvector): 32x64 fix using longest_local_hex_string().
	(start_subfile): initialize variable 'subfile'.

2000-02-18  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* remote.c (remote_async_detach): Use target_mourn_inferior(), to
 	make sure that all is cleaned up after we disconnect from the
 	target.
	(remote_detach): Ditto.

2000-02-17  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	From Rodney Brown  <RodneyBrown@pmsc.com>
	* ui-out.c (ui_out_set_flags): Fix typo, removing warning and
	potentially harming mistake.

2000-02-17  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* arm-tdep.c: Use header file instead of extern declarations for
	the {get,set}_arm_regname* functions.

2000-02-16  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* configure.in: Replaces obsolete gdbtk-variable.c with
	gdbtk-varobj.c.
	* configure: Regenerate.
	* Makefile.in: Remove obsolete/extraneous references to
	gdbtk-var* files.

2000-02-16  Mark Kettenis  <kettenis@gnu.org>

	* target.c (do_target_signal_to_host): Do not use REALTIME_LO in
	the conversion of the signal number.  TARGET_SIGNAL_REALTIME_33 is
	33 by definition, whereas REALTIME_LO might be 32 on systems that
	have SIG32 such as Linux.  Make sure that the signal number
	returned is within the range specified by REALTIME_LO and
	REALTIME_HI.

2000-02-16  Mark Kettenis  <kettenis@gnu.org>

	* configure: Regenerated.

2000-02-16  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* arm-tdep.c (set_disassembly_flavor, arm_othernames,
	_initialize_arm_tdep): Allows the user to choose between any of
	the flavors available for the disassembly to be used in the "info
	reg" command and elsewhere in gdb.  It prevents having to maintain
	this information in two places by using the data kept in the
	opcodes directory.

2000-02-09  Mark Kettenis  <kettenis@gnu.org>

	* configure.in: Check for lwpid_t, psaddr_t, prgregset_t and
	prfpregset_t in <sys/procfs.h>.
	* config.in: Add HAVE_LWPID_T, HAVE_PSADDR_T, HAVE_PRGREGSET_T,
	HAVE_PRFPREGSET_T.
	* gdb_proc_service.h: Only provide typedefs for lwpid_t, psaddr_t,
	prgregset_t and prfpregset_t if they are not already present.

Wed Feb 16 19:00:02 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-01-26 Rodney Brown <RodneyBrown@pmsc.com>:
        * procfs.c: Define MERGEPID if not defined. For osf4.0e.

2000-02-15  Jason Molenda  (jsm@bugshack.cygnus.com)

	* Makefile.in (diststuff): Run 'diststuff' in doc/ subdir, not
	'do-doc'.

2000-02-15  Kevin Buettner  <kevinb@redhat.com>

	Changes for AIX 4.3:
	* rs6000-tdep.c (rs6000_fix_call_dummy): Set TOC register
	to correct value for generic dummy frames.  When using
	generic dummy frames, don't attempt to write TOC value or
	function to call into the call dummy.
        (rs6000_push_arguments): Adapt USE_GENERIC_DUMMY_FRAMES
	code to also handle the PowerOpen ABI.
	(ppc_push_return_address): Enable for all ports.
	* config/powerpc/tm-ppc-aix.h (USE_GENERIC_DUMMY_FRAMES,
	PUSH_DUMMY_FRAME, PUSH_RETURN_ADDRESS, GET_SAVED_REGISTER, 
	CALL_DUMMY_BREAKPOINT_OFFSET, CALL_DUMMY_LOCATION,
	CALL_DUMMY_ADDRESS, CALL_DUMMY_START_OFFSET): Override defaults
	provided by generic RS6000 definitions so that call dummies
	are implemented using generic dummy frames instead.

	* rs6000-nat.c (store_inferior_registers): Call exec_one_dummy_insn()
	prior to changing the stack pointer via ptrace().  Also, ignore
	attempts to store to undefined registers that are less than
	NUM_REGS.

	* rs6000-tdep.c (DUMMY_FRAME_SIZE): Change size of the dummy
	frame from 436 to 448 to account for alignment padding.
	(rs6000_push_arguments): Obtain actual register size instead
	of assuming the register is 4 bytes long.  [There's still
	more work to be done to totally remove the 4 byte assumption,
	however.]  Make sure the stack is 16 byte aligned as required
	by the PowerOpen ABI.  Also, make sure that small structures
	passed in registers are properly aligned within the register.

2000-02-15  Jesper Skov  <jskov@cygnus.co.uk>

	Patch applied by Kevin Buettner <kevinb@redhat.com>
	
	* rs6000-tdep.c (skip_prologue): skip copying of argument
	registers to local variable registers.

2000-02-14  Jim Kingdon  <kingdon@redhat.com>

	* elfread.c (elf_symtab_read): Revert changes by Amit S. Kale.  A
	sym->section->index number is not a SECT_OFF_* code.

Tue Feb 15 12:07:30 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS (write after approval): Add H.J. Lu.

2000-02-14  Nick Clifton  <nickc@cygnus.com>

	* sh-tdep.c: Remove extraneous code.

2000-02-14  Amit S. Kale  <akale@veritas.com>

	* elfread.c (elf_symtab_read): Move the use of sym to after where
	it is set.
	Checked in by Jim Kingdon  <kingdon@redhat.com>

Mon Feb 14 15:39:01 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Make Nick Duffek the UnixWare threads maintainer.

Mon Feb 14 15:20:26 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 1999-11-24 Jason Merrill <jason@casey.cygnus.com>:
	* dwarf2read.c: (die_is_declaration): New fn.
	(read_structure_scope): Use it.

	* dwarf2read.c: (die_is_declaration): Convert to ISO-C.

2000-02-10  J.T. Conklin  <jtc@redback.com>

	* config/i386/nbsd.mt (GDBSERVER_DEPFILES): Add low-nbsd.o
	* configure.tgt (i[3456]86-*-netbsd*): add gdbserver to
 	configdirs.
	* gdbserver/low-nbsd.c: New file.
	
	* gdbserver/Makefile.in: convert to autoconf.
	* gdbserver/configure.in: likewise.
	* gdbserver/configure: generate.

Sun Feb 13 11:21:00 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* CONTRIBUTE: New file.  How to contribute to GDB.

Sun Feb 13 10:34:48 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Add Eli Zaretskii to djgpp maintiners.  Add Kevin
 	Buettner to powerpc maintainers.  Make Kevin Buettner the
 	GNU/LINUX PPC native maintainer.  Add J.T. Conklin, Jim Kingdon
 	and Jason Molenda to write after aproval list.

Sun Feb 13 10:18:44 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Reformat.  Separate into check-in categories.

Sat Feb 12 01:08:21 EST 2000  Nicholas Duffek <nsd@cygnus.com>

	* uw-thread.c: Remove __FUNCTION__ GNUism.

2000-01-17  Amit S. Kale  <akale@veritas.com>

	* elfread.c (elf_symtab_read): Use offset for the section in which a
	symbol resides, instead of .text section for calculating address of a
	symbol.
	Checked in by Jim Kingdon  <kingdon@redhat.com>

2000-02-10  Mark Kettenis  <kettenis@gnu.org>

	* gnu-nat.c: Remove hackery to include <bits/waitflags.h>.  It is
	no longer necessary now we have gdb_wait.h.

2000-02-09  Mark Kettenis  <kettenis@gnu.org>

	* gnu-nat.c (proc_string): Make global.
	(do_mach_notify_dead_name): Suppress dead name notifications if we
	know that the task is dead.

1999-12-13  Mark Kettenis  <kettenis@gnu.org>

	* gnu-nat.c (inf_validate_task_sc): Get task info via proc server
	instead of directly from the kernel.  Add some hackery to make
	sure that the info isn't influenced by suspension of the task in
	the proc server itself.

2000-02-10  Jim Kingdon  <kingdon@redhat.com>

	* defs.h (MERGEPID): Added.  Patch submitted by Andrew Hobson and
	approved by Michael Snyder.

2000-02-09  Mark Kettenis  <kettenis@gnu.org>

        * linux-thread.c: Include defs.h before gdb_wait.h.

Wed Feb  9 18:59:16 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (wait_h): Delete macro.  Update all dependencies
 	specifying gdb_wait.h instead.

	* ser-unix.c, ser-pipe.c, remote.c, remote-udi.c, remote-sds.c,
 	remote-os9k.c, remote-es.c, remote-rdp.c, remote-vx960.c,
 	remote-vx.c, remote-st.c, remote-nindy.c, remote-mm.c,
 	convex-xdep.c, convex-tdep.c, target.c, win32-nat.c, standalone.c,
 	remote-vxmips.c, remote-vxsparc.c, remote-vx68.c, remote-vx29k.c,
 	remote-sim.c, remote-rdi.c, remote-mips.c, remote-eb.c,
 	remote-e7000.c, remote-bug.c, remote-array.c, remote-adapt.c,
 	ppc-bdm.c, ocd.c, monitor.c, m3-nat.c, linux-thread.c,
 	infttrace.c, lin-thread.c, infptrace.c, gnu-nat.c, gdbarch.c,
 	fork-child.c, command.c: Include "gdb_wait.h" instead of <wait.h>
 	or <sys/wait.h>.
	* nindy-share/nindy.c, nindy-share/Onindy.c: Ditto.

	* gdb_wait.h: New file.  Based on ../include/wait.h. Include
 	<sys/wait.h> or <wait.h> and then define any missing WIF macros.

Wed Feb  9 01:14:54 2000  Andrew Cagney  <cagney@amy.cygnus.com>

	* config/d10v/tm-d10v.h (NO_EXTRA_ALIGNMENT_NEEDED): Define.
	* config/d10v/tm-d10v.h (STACK_ALIGN): Define.
	(d10v_stack_align): Declare.
	* d10v-tdep.c (d10v_stack_align): Define.

1999-08-23  J.T. Conklin  <jtc@redback.com>

        * top.c (remote_timeout): Change default to 2.  Add comment
        explaining history of changes to the default value.
        * remote.c (_initialize_remote): Remove code that adds set/
        show remotetimeout, as that's also done in top.c

1999-10-18  J.T. Conklin  <jtc@redback.com>

        * m32r-stub.c, sparcl-stub.c, sparclet-stub.c (handle_exception):
        Return E01 instead of P01 when 'P' command fails.

2000-02-05  J.T. Conklin  <jtc@redback.com>

	* remote.c (putpkt_binary): Handle NAK from target stub.

2000-02-08  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* configure.in: Remove the addition of sol-thread.c to the
	CONFIG_INITS list. This caused problems with init.c, because
	sol-thread.c would be grepped twice for _initialize_* functions.
	* configure: Ditto.
	* Makefile.in: Add FIXME for init.c.

2000-02-07  Jim Kingdon  <kingdon@redhat.com>

	Clean up compiler warnings:
	* bcache.h, bcache.c, c-valprint.c, coffread.c, stabsread.c,
	stack.c, valprint.c: Change variables to unsigned.
	* bcache.c: Rearrange to avoid warnings about variables not being set.
	* c-lang.c, ch-lang.c, f-lang.c, m2-lang.c: Include valprint.h
	rather than declaring print_max and repeat_count_threashold
	ourselves (incorrectly).
	* valprint.h: Do declare repeat_count_threashold.
	* ch-exp.c: Use default case for internal error.
	* findvar.c: Don't omit argument type.
	* symtab.c: Remove unused variable.

2000-02-04  Jim Blandy  <jimb@redhat.com>

	* c-typeprint.c (remove_qualifiers): New function.
	(c_type_print_base): Use it to remove qualifiers from C++
	qualified names, not strrchr.

	* c-typeprint.c (c_type_print_base): Recognize type conversion
	operators by calling is_type_conversion_operator.
	(is_type_conversion_operator): New function.

2000-02-04  Nick Clifton  <nickc@cygnus.com>

	* config/arm/tm-arm.h (LOWEST_PC): Define.

2000-02-04  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* infrun.c (resume): Make just one call to target_resume(), instead
 	of four: set up correct parameters in all the cases ahead of time,
 	and do call at the end.

2000-02-04  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* config/powerpc/tm-ppc-eabi.h: Define
 	SOFUN_ADDRESS_MAYBE_MISSING.

2000-02-04  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* arm-tdep.c (arm_pc_is_thumb_dummy): Account for large dummy
	frames (revisited).

Fri Feb  4 22:42:36 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (INIT_FILES): Append CONFIG_INITS
	* configure.in (CONFIG_INIT): Initialize.
	(links): Link srcdir/gdbtk/library to gdbtcl2.
	* gdbtcl2: Moved to gdbtk/library.
	ChangeLog-gdbtk, gdbtk-cmds.c, gdbtk-hooks.c, gdbtk-variable.c,
 	gdbtk-varobj.c, gdbtk-wrapper.c, gdbtk-wrapper.h, gdbtk.c,
 	gdbtk.h: Moved to gdbtk/generic.

2000-02-03  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* printcmd.c (build_address_symbolic): New function. Returns all
 	the parts that are necessary to print an address in a symbolic
 	form.
	(print_address_symbolic): Split into a printing part and an
 	information building part, build_address_symbolic().

	* defs.h (build_address_symbolic): Export.

2000-02-03  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c (decode_locdesc): Add support for the DW_OP_bregx
	opcode.

2000-02-02  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* arm-tdep.c (arm_push_arguments): Fix passing of floating point
	arguments on dummy frames.

2000-02-02  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* arm-tdep.c (arm_pc_is_thumb_dummy): Account for large dummy frames.
	(arm_pop_frame): Account fr dummy frames (as opposed to real ones).

2000-02-01  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* remote.c (getpkt_sane): New function. It is the old getpkt(),
 	which now returns a timeout indication.
	(getpkt): New function. Wrapper for getpkt_sane(), so that return
 	value can still be ignored.

Tue Feb  1 18:47:31 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* top.c (print_gdb_version): Print ``UI_OUT'' when configured with
 	UI_OUT.

Tue Feb  1 00:17:12 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* ui-file.c, ui-file.h: Rename gdb-file.h, gdb-file.c.  Rename
 	``struct gdb_file'' to ``struct ui_file''.  Delete typedef
 	GDB_FILE.
	
	* Makefile.in: Update.

	* ax-gdb.c, ax-general.c, ax.h, buildsym.c, c-lang.c, c-lang.h,
 	c-typeprint.c, c-valprint.c, ch-lang.c, ch-lang.h, ch-typeprint.c,
 	ch-valprint.c, command.c, command.h, convex-tdep.c, corefile.c,
 	cp-valprint.c, d10v-tdep.c, d30v-tdep.c, defs.h, expprint.c,
 	expression.h, f-lang.c, f-lang.h, f-typeprint.c, f-valprint.c,
 	frame.h, gdb-events.sh, gdb-file.c, gdb-file.h, gdbcmd.h,
 	gdbtypes.h, hppa-tdep.c, jv-lang.c, jv-lang.h, jv-typeprint.c,
 	jv-valprint.c, language.c, language.h, m2-lang.c, m2-lang.h,
 	m2-typeprint.c, m2-valprint.c, m3-nat.c, main.c, monitor.c,
 	printcmd.c, pyr-tdep.c, remote-mips.c, remote-sim.c, remote-udi.c,
 	remote.c, scm-lang.c, scm-lang.h, scm-valprint.c, ser-e7kpc.c,
 	ser-go32.c, ser-mac.c, ser-ocd.c, ser-unix.c, ser-unix.h,
 	serial.c, serial.h, stack.c, symfile.c, symmisc.c, tahoe-tdep.c,
 	target.c, target.h, top.c, top.h, typeprint.c, typeprint.h,
 	utils.c, v850ice.c, valprint.c, valprint.h, value.h,
 	config/pa/tm-hppa.h: Update.
	* cli-out.c, cli-out.h, ui-out.c, ui-out.h, varobj.c: Update.

2000-01-31  Jason Molenda  (jsm@bugshack.cygnus.com)

	* config/alpha/alpha-osf2.mh, config/alpha/alpha-osf3.mh,
	config/i386/i386dgux.mh, config/i386/i386sol2.mh,
	config/i386/i386v4.mh, config/i386/i386v42mp.mh,
	config/i386/ncr3000.mh, config/m68k/m68kv4.mh,
	config/m88k/delta88v4.mh, config/mips/irix4.mh,
	config/mips/irix5.mh, config/mips/mipsv4.mh,
	config/powerpc/solaris.mh (NATDEPFILES): Change references to
	proc_api.o, proc_events.o, proc_flags.o, and proc_why.o to
	proc-api.o, proc-events.o, proc-flags.o, and proc-why.o.

Mon Jan 31 17:14:52 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* top.c (fputs_unfiltered_hook): Moved to tui/tui-file.c.

	* main.c (captured_main): Only use the legacy tui_file code when
 	linking in older code such as the TUI.

	* gdb-file.h, gdb-file.c: New files.
	* utils.c, defs.h (struct gdb_file, gdb_file_new, gdb_file_delete,
 	null_file_isatty, null_file_rewind, null_file_put,
 	null_file_flush, null_file_write, null_file_fputs,
 	null_file_delete, gdb_file_data, gdb_flush, gdb_file_isatty,
 	gdb_file_rewind, gdb_file_put, gdb_file_write, fputs_unfiltered,
 	set_gdb_file_flush, set_gdb_file_isatty, set_gdb_file_rewind,
 	set_gdb_file_put, set_gdb_file_write, set_gdb_file_fputs,
 	set_gdb_file_data, struct accumulated_gdb_file,
 	do_gdb_file_xstrdup, gdb_file_xstrdup, struct mem_file):
 	mem_file_new, mem_file_delete, mem_fileopen, mem_file_rewind,
 	mem_file_put, mem_file_write, struct stdio_file): stdio_file_new,
 	stdio_file_delete, stdio_file_flush, stdio_file_write,
 	stdio_file_fputs, stdio_file_isatty, stdio_fileopen, gdb_fopen):
 	Moved to gdb-file.h and gdb-file.c.
	* utils.c (enum streamtype, struct tui_stream, tui_file_new,
 	tui_file_delete, tui_fileopen, tui_sfileopen, tui_file_isatty,
 	tui_file_rewind, tui_file_put, tui_file_fputs,
 	tui_file_get_strbuf, tui_file_adjust_strbuf, tui_file_flush,
	fputs_unfiltered_hook):
 	Moved to tui/tui-file.c and tui/tui-file.h.
	
	* Makefile.in (COMMON_OBS): Add gdb-file.o, tui-file.o.
	(tui-file.o, gdb-file.o): Add dependencies.
	(corefile.o, main.o, utils.o, simmisc.o): Update dependencies.
	* main.c: #include tui/tui-file.h.

2000-01-28  Fred Fish  <fnf@cygnus.com>

	* findvar.c (value_from_register): Special case handling of D10V
	pointer values fetched from registers.

2000-01-28  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* arm-tdep.c (thumb_skip_prologue, thumb_scan_prologue): Add
	support for new style thumb prologues.

2000-01-28  Nick Clifton  <nickc@redhat.com>

	* arm-tdep.c: Remove extraneous dash at start of strings
	introduced in previous delta.

2000-01-27  Nick Clifton  <nickc@redhat.com>

	* arm-tdep.c: Replace uses of arm_toggle_renames() with
	parse_arm_disassembler_option().

2000-01-27  Jim Blandy  <jimb@cygnus.com>

	* symtab.c (decode_line_1): Don't let commas that are within
 	quotes or parenthesis terminate the line spec.  Don't use pp when
 	removing the final double quote of a double-quoted string.  Don't
 	forget to skip the opening double quote.  I have no clue whether
 	this change is correct; probably we've just moved this function
 	from one buggy place to another buggy place, and never came within
 	an outhouse whiff of correctness.
	(find_toplevel_char): New function.

2000-01-27  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* arm-tdep.c (arm_push_arguments): Set the thumb mode bit when
        passing the pointer to a thumb function as an argument.

2000-01-27  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* remote-rdi.c (arm_rdi_mourn_inferior): Make sure breakpoints
	are reinserted for another run.

2000-01-27  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* cli-out.c (cli_filed_string): Test for NULL string.

2000-01-27  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* infcmd.c (run_stack_dummy): Account for a random signal stopping
	the inferior as well as breakpoints being hit while performing an
	inferior function call.
	* valops.c (hand_function_call): Ditto.

2000-01-27  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	From  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386gnu.h (THREAD_STATE_FLAVOR): Define to
	i386_REGS_SEGS_STATE.
	(HAVE_I387_REGS): Define.
	(FLOAT_INFO): Remove.
	* i386gnu-nat.c: Almost completely rewritten to use new i386
	register layout and `float info' implementation.
	* gnu-nat.c (inf_update_procs, proc_get_state, proc_string):
	Move prototypes from here.
	* gnu-nat.h: To here.

2000-01-24  Kevin Buettner  <kevinb@redhat.com>

	* utils.c (get_field, put_field): Fix buffer underruns and
	overruns.  Also, handle case where total_len is not evenly
	divisible by 8.
	(getfield): Make sure zeroing of unwanted bits occurs even
	when bit field to extract does not straddle two or more
	bytes.

2000-01-23   Christopher Faylor  <cgf@cygnus.com>

	* defs.h: Add gdb_thread_select declaration.

2000-01-23  Kevin Buettner  <kevinb@redhat.com>

	* linux-thread.c (_initialize_linuxthreads): Make sure that
	linuxthreads_block_mask does not block SIGCHLD.

2000-01-20  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* rdi-share/devsw.c (openLogFile): On cygwin, set the log mode to
	text so that new lines work properly.

2000-01-18  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* proc-utils.h: New file. Export functions from proc-*.c.

	* proc_api.c: Rename to:
	* proc-api.c: New file. Add include of proc-utils.h.

	* proc_events.c: Rename to:
	* proc-events.c: New file.

	* proc_flags.c: Rename to:
	* proc-flags.c: New file.

	* proc_why.c: Rename to:
	* proc-why.c: New file. Add include of proc-utils.h.

	* procfs.c: Add includes of gdbthread.h, sys/wait.h, signal.h,
 	ctype.h, proc-utils.h.
	(find_procinfo_or_die): Add braces to avoid ambiguous else clause.
	(open_procinfo_files): Conditionalize local variable tmp, to avoid
 	compiler warnings.
	(proc_iterate_over_mappings): Conditionalize local vars mapfd and
 	pathname.
	(procfs_wait): Adjust format in some printf_filetered calls to
 	avoid compiler warnings.
	(make_signal_thread_runnable): Ifdef 0. The calls to this function
 	are also ifdef'd 0 .
	(procfs_resume): Add parentheses around '&&' operation.
	(procfs_set_exec_trap): Remove unused variable.
	(info_proc_cmd): Add braces to avoid ambiguous else clause.

	* Makefile.in (procfs.o, proc-api.o, proc-events.o, proc-flags.o,
 	proc-why.o): Update dependencies.

	* config/sparc/sun4sol2.mh (NATDEPFILES): Change proc_*.o files to
	proc-*.o.

2000-01-17  Jason Molenda  (jsm@bugshack.cygnus.com)

	* configure.in (NEW_PROC_API): Fix Unixware-matching regexp.
	Fix from Robert Lipe <robertl@sco.com>.
	* configure: Regenerated.

2000-01-17  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* stack.c (print_frame_info_base): Break up into the frame info
 	(location) printing part and the rest (source line printing).
	(print_frame): New function. Take care of printing the location
 	information.
	Update copyright.

	* infrun.c (normal_stop): Use enum values rather than integers for the
	source_flag to be passed to show_and_print_stack_frame().
        Update copyright.
	
	* frame.h (print_what): New enum for 'source' argument to
 	print_frame_info_base(). Use this instead of obscure numbers.
	Update copyright.
	
Sun Jan 16 17:58:00 2000  David Taylor  <taylor@texas.cygnus.com>

	* event-top.c (stdin_event_handler): call quit_command rather than
 	exit -- run cleanups, give target code a chance to say goodbye to
 	the target.  Fixes bug where the inferior processes were left
 	around on Solaris (and probably elsewhere) by the testsuite.

2000-01-14  Mark Salter  <msalter@cygnus.com>

	* v850-tdep.c (v850_target_architecture_hook): Setup correct
 	machine id for disassembly.

2000-01-13  Jim Blandy  <jimb@cygnus.com>

	* i386-linux-nat.c (fill_gregset): Pass the correct arguments to
	convert_to_regset, when regno indicates a specific register.

Thu Jan 13 23:34:17 EST 2000  Nicholas Duffek <nsd@cygnus.com>

	* uw-thread.c: Document libthread.so debugging interface.  Minor
	comment and formatting tweaks.
	(DEBUG): #define as 0 instead of 1.
	(CALL_BASE): Include function name in error msg.
	(libthread_stub): Adjust inferior_pid after thread exit.
	(uw_thread_create_inferior): Deactivate uw_thread_ops before
	asking procfs_ops to create inferior.
	(libthread_init): Don't return nonlocally on error.

2000-01-12  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* rdi-share/ardi.c (negotiate_params): Fix initialization of static
	variable.

2000-01-12  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* remote-rdi.c (arm_rdi_open): Call arm-rdi-close() to make sure
	both sides are on the same state.

2000-01-12  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* rdi-share/serdrv.c (find_baud_rate): Fix entries for 57600 and
	115200 (minor syntax mistake).

2000-01-12  Jim Blandy  <jimb@cygnus.com>

	* config/sparc/tm-sun4sol2.h (MERGEPID): Provide a definition for
	this here, to go along with the definitions of PIDGET and TIDGET.

2000-01-12  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* thread.c (do_captured_thread_select): New function. Switch
 	current thread, safely from within catch_errors().
	(gdb_thread_select): New function. Switch threads safely.
	(thread_command): Use gdb_thread_select().
	Include ui-out.h.
	(do_captured_list_thread_ids): New function.
	(gdb_list_thread_ids): New function.

	* defs.h (gdb_thread_select, gdb_list_thread_ids): Export.

2000-01-11  Christopher Faylor <cgf@cygnus.com>

	* configure.in: Avoid linking -limagehlp unless it's a native build.
	* configure: Regenerate.
	* thread.cc (add_thread): Clear private data pointer here or suffer
	strange behavior when it is checked for NULL later.

2000-01-09  Christopher Faylor  <cgf@cygnus.com>

	* win32nat.c (handle_exceptions): Handle various arithmetic exceptions.
	* configure.in: Add an additional library to cygwin link.
	* configure: Regenerate.

	Patch from Egor Duda <deo@logos-m.ru>:
	* coffread.c (coff_symfile_read): Reinstate ability to recognize "pe"
	type.

2000-01-07  Michael Snyder  <msnyder@cygnus.com>

	* uw-thread.c: New file to support UnixWare user-mode threads:
	contributed by Nickolas Duffek  <nsd@cygnus.com>.
	* target.h (struct target_ops): New vector, to_extra_thread_info,
	allows back-ends to give extra details in info thread display.
	(target_extra_thread_info): define new macro.
	(target_find_new_threads): simplify macro.  Cleanup comments.
	* target.c (to_extra_thread_info): default and inherit new vector.
	(cleanup_target): eliminate PARAMS, break up long lines,
	provide default definition for to_extra_thread_info, and
	to_find_new_threads.  Default to_thread_alive and to_query
	to return_zero, not target_ignore (they each return int not void).
	(debug_to_find_new_threads): new debug entry.
	(setup_target_debug): add debug_to_find_new_threads.
	* gdbthread.h: export struct thread_info, find_thread_pid, and
	iterate_over_threads.  Add comments.  Eliminate PARAMS.  Update
	copyright.  Add new private data pointer for use by target back-ends.
	* thread.c (struct thread_info): move definition to gdbthread.h.
	(find_thread_pid): new exported function for thread lookup.
	(iterate_over_threads): new exported function for applying
	arbitrary operations to threads.  Update copyright to 2000.
	(info_threads_command): use new target_extra_thread_info vector
	to display extra information about each thread (if implemented).
	* config/i386/tm-i386v42mp.h: remove obsolete #defines for procfs.
	Add defines for PIDGET, etc.
	* config/i386/tm-i386sol2.h: ditto.
	* config/sparc/tm-sun4sol2.h: ditto.
	* config/i386/i386v42mp.mh: add uw-thread.o to NATDEPFILES.
	* testsuite/gdb.threads/pthreads.exp: Try to link with -lthread
	if -lpthread and -lpthreads fail.

	* procfs.c: (PIDGET, TIDGET, MERGEPID): change default to no-op.
	(proc_flags): combine flags that UnixWare splits into two locations.
	(proc_modify_flag): add support for PR_KLC (kill on last close).
	(proc_[un]set_kill_on_last_close): new functions.
	
2000-01-07  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* infrun.c (normal_stop): Print out thread id when we stop.

2000-01-06  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* remote.c (remote_open_1): Fix message so it does not imply a
	specific syntax for serial ports, as it is OS dependent.
	(remote_async_open_1): Ibid.
	(init_remote_ops): Ibid.

2000-01-06  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* rdi-share/serdrv.c (SerialOpen): Use speed from "-b" argument or
	"set remotebaud" command (if set) when no speed is specified on
	the "target rdi" command.

2000-01-06  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* rdi-share/serdrv.c (find_baud_rate): Add entries for 57600 and
	115200.
	(baud_options[]): Ibid.

2000-01-06  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* rdi-share/unixcomm.c: Fix SERIAL_PREFIX so it matches the prefix
	used by each operating system.

2000-01-06  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* breakpoint.c (until_break_command): Add an argument for the
 	continuation, the beginning of the cleanups set up by this
 	command.
	(until_break_command_continuation): Do cleanups until the one
 	passed in as argument instead of doing all of them.

	* infcmd.c (finish_command_continuation): Expect a new argument,
 	which indicates up to where to do cleanups. Update calls to
 	do_exec_cleanups to use this marker, instead of ALL_CLEANUPS.
	(finish_command): Add another argument for the continuation: the
	starting cleanup for this command.

2000-01-05  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	From Grant Edwards <grante@visi.com> (original patch from Thomas
	Zenker ):
	* rdi-share/ardi.c: Allow interruption of interruptible
	targets with a <CNTL-C>.

2000-01-04  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* rdi-share/etherdrv.c (fetch_ports): Send extra words on request
	to control port to accommodate some versions of Angel.

2000-01-04  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* rdi-share/devsw.c (dumpPacket): Fix source of channel information.
	Add interpretation for C Support Library packets.

2000-01-04  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* rdi-share/devsw.c (DevSW_Close): Remove const from argument that
	is now being modified.
	* rdi-share/devsw.h: Adjust declaration of the above funtion.

For older changes see ChangeLog-99

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
