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:
