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

	* arch-utils.c (default_frame_address): New function.  Default
	implementation of frame_args_address and frame_locals_address.
	* arch-utils.h (default_frame_address): Export.
	* d10v-tdep.c (d10v_gdbarch_init): Use default_frame_address.
	(d10v_frame_args_address, d10v_frame_locals_address): Delete.
	* sh-tdep.c (sh_gdbarch_init): Use default_frame_address.
	(sh_frame_args_address, sh_frame_locals_address): Delete.
	* sparc-tdep.c (sparc_gdbarch_init): Use default_frame_address.
	(sparc_frame_address): Delete.

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

	Fix debugging programs statically linked against the thread library.
	* thread-db.c: Various comment fixes and additions.
	Include "bfd.h", "symfile.h" and "objfiles.h".
	(keep_thread_db): New variable.
	(find_new_threads_callback): Remove prototype.
	(thread_db_find_new_threads): New prototype.
	(thread_db_push_target, thread_db_unpush_target): Remove
	functions.
	(deactivate_target): New function.
	(thread_db_new_objfile): If OBJFILE == NULL, force deactivation of
	target vector.  Activate target vector directly instead of calling
	thread_db_push_target.  Set keep_thread_db if thread library is
	detected in the main symbol file.  Only enable thread event
	reporting if there actually is a child process.  Likewise for
	detecting new threads, done by calling thread_db_find_new_threads
	instead of iterating over the threads ourselves.
	(thread_db_detach): Call deactivate_target instead of
	thread_db_unpush_target.
	(thread_db_wait): Bail out early if we're not debugging the
	multi-threaded child process yet.
	(thread_db_post_startup_inferior): New function.
	(thread_db_mourn_inferior): Call deactivate_target instead of
	thread_db_unpush_target.
	(init_thread_db_ops): Add thread_db_post_startup_inferior to
	thread_db_ops.

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

	* solib.c (solib_open): If path is relative, look for it
	literally.  This matches the behaviour of the GNU dynamic linker
	more closely.

2000-12-22  Fernando Nasser  <fnasser@redhat.com>

	* README: Suggest building in an empty directory.

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

	* i386-tdep.c: Add missing ')' in comment.
	(i386_extract_return_value): Return directly after issuing the
	warning and filling *VALBUF with zeroes if we cannot get at the
	floating-point registers.
	(i386_store_return_value): New function.
	* config/i386/tm-i386.h (STORE_RETURN_VALUE): Simply call
	i386_store_return_value.
	Add prototype for i386_store_return_value.

	* i386-linux-nat.c (store_fpxregs): Add code to detect support for
	the PTRACE_GETFPXREGS request, and return zero if it's not.

2000-12-21  Fernando Nasser  <fnasser@redhat.com>

	* TODO: Add pre-uiout code removal to 5.2 cleanups.

2000-12-20  Fernando Nasser  <fnasser@redhat.com>

	* configure.in: Rename CONFIG_LOBS to CONFIG_LIB_OBS.
	* Makefile.in: Ditto.
	* configure: Regenerate.

2000-12-20  Fernando Nasser  <fnasser@redhat.com>

	* command.h: Register date when it was deprecated.
	* call-cmds.h: Ditto.

2000-12-20  Fernando Nasser  <fnasser@redhat.com>

	* Makefile.in (UIOUT_CFLAGS): New macro. CFLAGS needed for uiout code
	to be compiled.  Defines UI_OUT.
	(SUBDIR_MI_CFLAGS): Defines MI_OUT, not UI_OUT.
	(INTERNAL_WARN_CFLAGS): Also include UIOUT_CFLAGS.
	* configure.in (UIOUT_CFLAGS): New configuration variable.
	(--with-uiout): New configuration option.  Causes uiout code to
	be compiled, instead of the old *printf one.
	* configure: Regenerate.
	* top.c (print_gdb_version): Test for and print MI_OUT, not UI_OUT.

2000-12-20  Fernando Nasser  <fnasser@redhat.com>

	* complaints.c (complain): Call warning_hook if defined, instead of
	writting to gdb_stderr.
	(clear_complaints): Do not write anything to gdb_stderr if warning_hook
	is defined.

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

	* sh-tdep.c (sh_print_register): Don't leave regnum 0 out of the
        non-pseudo-regs group.

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

	* sh-tdep.c (sh_gdbarch_init): Move setting of breakpoint_from_pc
	to before switch statement.
	
2000-12-17  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

        * sh-tdep.c (sh_gdbarch_init): Initialize do_registers_info.

	* config/sh/tm-sh.h: Don't remove SR_REGNUM from enum.
	(DO_REGISTERS_INFO): Remove macro. Use multiarch version instead.

Fri Dec 15 23:12:15 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* i386gnu-nat.c: Include "gdb_assert.h" instead of <assert.h>.
 	(gnu_store_registers): Replace assert with gdb_assert.
	
2000-12-15  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* sh-tdep.c (sh_generic_show_regs, sh3_show_regs, sh3e_show_regs,
 	sh3_dsp_show_regs, sh4_show_regs, sh_dsp_show_regs): SR_REGNUM is
 	now part of gdbarch_tdep structure.
	(sh_gdbarch_init): Initialize SR_REGNUM.

	* config/sh/tm-sh.h (struct gdbarch_tdep): Add field SR_REGNUM.

	* sh-tdep.c (sh_do_pseudo_register): Indent properly. Call
 	do_dr_register_info() only for DR registers.
	(sh_sh4_register_name): Add comments with numbers.
	(_initialize_sh_tdep): Move assignment to disassemble printing
 	function from here...
	(sh_gdbarch_init):...to here. Move some more general settings to
 	before the architecture is recognized.

Fri Dec 15 23:27:56 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote.c (remote_fetch_registers): Replace #ifdef
 	REGISTER_BYTES_OK with REGISTER_BYTES_OK_P.

	* gdbarch.sh (REGISTER_BYTES_OK): Multi-arch.
	* gdbarch.h, gdbarch.c: Re-generate.

Fri Dec 15 22:58:59 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* serial.c (serial_printf): Call xvasprintf instead of vasprintf.

2000-12-14  Matthew Green  <mrg@eterna.com.au>

	* solib-svr4.c (solib_break_names): Add NetBSD's `_rtld_debug_state'.

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

	* defs.h, utils.c (xfree): New function.
	* alpha-tdep.c, altos-xdep.c, arch-utils.c, arm-xdep.c,
	ax-general.c, bcache.c, blockframe.c, breakpoint.c,
	buildsym.c, c-typeprint.c, coffread.c, completer.c,
	convex-tdep.c, convex-xdep.c, corefile.c, corelow.c,
	cp-valprint.c, cxux-nat.c, d10v-tdep.c, d30v-tdep.c,
	dbxread.c, dcache.c, defs.h, demangle.c, dstread.c,
	dve3900-rom.c, dwarf2read.c, dwarfread.c, elfread.c,
	environ.c, event-loop.c, event-top.c, exec.c, f-lang.c,
	gdb-events.c, gdbarch.c, gdbtypes.c, gnu-nat.c, h8500-tdep.c,
	hp-psymtab-read.c, hppah-nat.c, infcmd.c, inflow.c, infrun.c,
	infttrace.c, irix5-nat.c, jv-typeprint.c, kod-cisco.c, kod.c,
	language.c, lin-lwp.c, lin-thread.c, linespec.c,
	linux-thread.c, main.c, maint.c, mdebugread.c, minsyms.c,
	mips-tdep.c, monitor.c, nlmread.c, objfiles.c, osfsolib.c,
	p-valprint.c, pa64solib.c, parse.c, printcmd.c,
	proc-service.c, procfs.c, pyr-xdep.c, remote-adapt.c,
	remote-bug.c, remote-eb.c, remote-es.c, remote-mips.c,
	remote-mm.c, remote-nindy.c, remote-rdi.c, remote-rdp.c,
	remote-udi.c, remote-vx.c, remote.c, rs6000-nat.c, ser-pipe.c,
	serial.c, solib-svr4.c, solib.c, somread.c, somsolib.c,
	source.c, sparcl-tdep.c, stabsread.c, stack.c, sun386-nat.c,
	symfile.c, symmisc.c, symtab.c, target.c, thread-db.c,
	thread.c, top.c, tracepoint.c, ui-file.c, ui-out.c,
	umax-xdep.c, utils.c, valops.c, valprint.c, values.c,
	varobj.c, win32-nat.c, wince.c, xcoffread.c, cli/cli-cmds.c,
	cli/cli-decode.c, cli/cli-script.c, cli/cli-setshow.c:
	Replace occurrences of free() with xfree().

2000-12-14  J.T. Conklin  <jtc@redback.com>

	* configure.tgt (hppa*-*-bsd*, hppa*-*-osf*, m68*-*-sunos4*,
 	rs6000-*-lynxos*, sparc-*-sunos4*): Add gdbserver to configdirs.

2000-12-13  Michael Chastain  <chastain@redhat.com>

	* MAINTAINERS: Add Michael Chastain to Write After Approval list.

2000-12-11  Fernando Nasser  <fnasser@redhat.com>

        * Makefile.in (CONFIG_LOBS): New macro.  Configured to the files
	that must be added to the gdblib itself.
	(DEPFILES): Use CONFIG_LOBS, not CONFIG_OBS.
	(INIT_FILES): Include CONFIG_OBS.
	(gdb$(EXEEXT)): Depend on CONFIG_OBS and link with it.
	(kdb): Ditto.
	* configure.in (CONFIG_LOBS): New variable. Object files that must
	be added to gdblib for the specific configuration.
	* configure: Regenerate.

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

	* sh-tdep.c (sh_extract_struct_value_address): Protoize.

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

	* blockframe.c (get_prev_frame): Add missing paren omitted in 
	last check-in.

2000-12-11  Fernando Nasser  <fnasser@redhat.com>

        * Makefile.in (SUBDIR_GDBTK_OBS, SUBDIR_GDBTK_SRCS,
	SUBDIR_GDBTK_DEPS, SUBDIR_GDBTK_INITS, SUBDIR_GDBTK_LDFLAGS,
	SUBDIR_GDBTK_CFLAGS): New macros.  For gdbtk subdir.
	* configure.in: Fix typo.  It is CONFIG_OBS not CONFIG_OJS.
	Use the SUBDIR_GDBTK_* macros instead of hard coded file names.
	* configure: Regenerate.

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

	* blockframe.c (get_prev_frame): Zero all fields of prev by
	default using memset (instead of one at a time).

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

	* sh-tdep.c (sh_extract_struct_value_address): For consistancy,
	change decl from "CORE_ADDR static" to "static CORE_ADDR".

2000-12-11  Fernando Nasser  <fnasser@redhat.com>

	* configure.in: Fix typos.  It is CONFIG_SRCS not CONFIG_SRS.
	* configure: Regenerate.

2000-12-11  Fernando Nasser  <fnasser@redhat.com>

	* configure.in: Fix a couple of typos in the handling of the
	enable_gdbcli option.  Make it check enableval for the result
	of AC_ARG_ENABLE.
	* configure: Regenerate.

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

	* dwarf2read.c (DWARF2_REG_TO_REGNUM): New macro.  Provide default
	definition.  Will be used to translate between the compiler's
	register numbering and GDB's (for register variables etc).
	(new_symbol): Use DWARF2_REG_TO_REGNUM to translate register ids.
	* alpha-tdep.c: Fix typo in comment.
	* dbxread.c: Fix typo in comment.
	* fr30-tdep.c: Fix typo: newline missing after comment.
	* mcore-tdep.c: Fix typo in comment.	

2000-12-07  J.T. Conklin  <jtc@redback.com>

	* gdbserver/low-hppabsd.c (buf2, environ, quit, quit_flag):
 	Removed unused variables and declarations.
	* gdbserver/low-linux.c (buf2, environ, query, quit, quit_flag):
	Likewise.
	* gdbserver/low-nbsd.c (buf2, environ, quit, quit_flag):
	Likewise.
	* gdbserver/low-sparc.c (buf2, environ, query, quit, quit_flag):
	Likewise.
	* gdbserver/low-sun.c (buf2, environ, query, quit, quit_flag):
	Likewise.

	* gdbserver/low-hppabsd.c, gdbserver/low-linux.c,
 	gdbserver/low-nbsd.c, gdbserver/low-sparc.c, gdbserver/low-sun3.c
 	(create_inferior): Update comment.

	* gdbserver/low-nbsd.c (initialize_arch, fetch_inferior_registers,
	store_inferior_registers): Provide implementations for the m68k 
	and ns32k.
	* config/m68k/nbsd.mt (GDBSERVER_DEPFILES): Add low-nbsd.o
	* config/ns32k/nbsd.mt (GDBSERVER_DEPFILES): Likewise.
	* configure.tgt (m68*-*-netbsd*, ns32k-*-netbsd*): Add gdbserver
 	to configdirs.

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

	* config/sh/tm-sh.h (struct gdbarch_tdep): Rename fields
 	{FP15,DR14,FV12}_REGNUM to {FP,DR,FV}_LAST_REGNUM.
	* sh-tdep.c (sh_sh3e_register_virtual_type,
 	sh_sh4_register_virtual_type, sh_do_registers_info,
 	sh_gdbarch_init, sh_sh4_register_byte, sh_sh4_register_raw_size,
 	sh_sh4_register_convertible, sh_sh4_register_convert_to_virtual,
 	sh_sh4_register_convert_to_raw, sh_fetch_pseudo_register,
 	sh_store_pseudo_register, sh_do_pseudo_register): Ditto.

	* sh-tdep.c (sh_gdbarch_init): Use a function pointer to set the
 	disassembly print function.
	(_initialize_sh_tdep): Initialize tm_print_insn using the function
 	pointer.

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

	From Richard Henderson <rth@twiddle.net>:
	* alpha-nat.c (supply_gregset, fill_gregset): Use gdb_gregset_t.
	(supply_fpregset, fill_fpregset): Use gdb_fpregset_t.

2000-12-06  Fernando Nasser  <fnasser@redhat.com>

	* cli/cli-decode.c (add_abbrev_cmd): Reinstate. Add comment saying
	that is not currently used.

2000-12-06  Fernando Nasser  <fnasser@redhat.com>

	* cli/cli-decode.c (lookup_cmd): Change disabled code into comment.

2000-12-06  Fernando Nasser  <fnasser@redhat.com>

	* cli/cli-decode.c (lookup_cmd): Remove old stale copy of this routine
	which was not being used for quite some time.

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

	* gdb-stabs.h (SECT_OFF_MAX): Increase to 64.
	* symfile.h (MAX_SECTIONS): Increase to 64.

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

	* config/sh/tm-sh.h (struct gdbarch_tdep): Get rid of
 	DR{2,4,6,8,10,12}_REGNUM, FV{4,8}_REGNUM, they are not used
 	anywhere.
	* sh-tdep.c (sh_gdbarch_init): Don't initialize
 	DR{2,4,6,8,10,12}_REGNUM, FV{4,8}_REGNUM.

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

	* utils.c (internal_verror): Fix typo in error msg.

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

	* Makefile.in (symfile.o): Add gdb-stabs.h to dependencies list.

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

	* elfread.c (record_minimal_symbol_and_info): Don't guess
	at the section index; instead just always use the bfd index.
	(elf_symtab_read): Handle weak symbols appearing in data
	sections.

Mon Dec  4 14:36:39 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh (STAB_REG_TO_REGNUM, ECOFF_REG_TO_REGNUM,
 	DWARF_REG_TO_REGNUM, SDB_REG_TO_REGNUM, DWARF2_REG_TO_REGNUM):
 	Add.
	* gdbarch.h, gdbarch.c: Regenerate.
	* arch-utils.c (no_op_reg_to_regnum): New function.
	* arch-utils.h (no_op_reg_to_regnum): Declare.

	* dwarfread.c (DWARF_REG_TO_REGNUM), coffread.c
 	(SDB_REG_TO_REGNUM), stabsread.h (STAB_REG_TO_REGNUM),
 	mdebugread.c (ECOFF_REG_TO_REGNUM): Delete macro.

	* config/mips/tm-mips.h (ECOFF_REG_TO_REGNUM, STAB_REG_TO_REGNUM):
 	Delete.  Moved to mips-tdep.c.
	* mips-tdep.c (mips_ecoff_reg_to_regnum, mips_stab_reg_to_regnum):
 	New functions.
	(mips_gdbarch_init): Add ``mips_ecoff_reg_to_regnum'' and
 	``mips_stab_reg_to_regnum'' to multi-arch vector.

2000-12-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (m68hc11_gdbarch_init): Remove elf_flags, cleanup.
	(gdbarch_tdep): Likewise.

2000-12-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (SOFT_D1_REGNUM): Soft registers start at 14.
	(m68hc11_register_names): Add null for register 13.

2000-12-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (m68hc11_frame_args_address): Fix args address
	computation.
	(m68hc11_frame_init_saved_regs): Frame pointer is saved only if
	the symbol exist.
	(m68hc11_analyze_instruction): New function.
	(m6811_prologue, m6812_prologue): New prologue description tables.
	(m68hc11_guess_from_prologue): Use the above.
	(m68hc11_gdbarch_init): Setup gdbarch_tdep for the prologue
	descriptions.

Sun Dec  3 02:28:26 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* ser-pipe.c (pipe_open): Only use vfork when available.
	* fork-child.c (fork_inferior): Fix #ifdef HAVE_VFORK test.
	(clone_and_follow_inferior): Ditto.

	* configure.in (AC_CHECK_FUNCS): Check for vfork.
	* configure, config.in: Regenerate.

Sun Dec  3 01:54:49 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* ser-unix.c (wait_for): Initialize the FD_SET before every select
 	call.
	(ser_unix_wait_for): Ditto.

Sun Dec  3 01:01:02 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (varobj.o): Delete special .c.o rule supressing
 	-Werror flag.

Sun Dec  3 00:29:31 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* m32r-rom.c (m32r_load_section): Update to match
 	bfd_map_over_sections's ``func'' arg.

Thu Nov 30 01:24:37 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c (struct upk_mips16): Delete fields ``inst'' and
 	``fmt''.  Make ``offset'' a CORE_ADDR.
	(print_unpack): Delete.
	(extended_offset): Construct and return a CORE_ADDR.
	(fetch_mips_16): Return an int.  Don't assume short is 16 bits.
	(unpack_mips16): Rewrite.  Add ``extension'' parameter instead of
 	incorrectly guessing if the instruction had an extension.
	(map16): Delete array.
	(mips16_op): Delete macro.
	(extended_mips16_next_pc): Rewrite of old mips16_next_pc function.
  	When an extended instruction do a recursive call.
	(mips16_next_pc): Call extended_mips16_next_pc.
	(mips_next_pc): Cleanup.
	
Sat Dec  2 10:40:16 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* ser-e7kpc.c (e7000pc_setstopbits): New function.
	(e7000pc_ops): Add e7000pc_setstopbits.

	* remote-e7000.c (e7000_detach, e7000_resume,
 	e7000_xfer_inferior_memory, e7000_files_info, e7000_files_info,
 	e7000_insert_breakpoint, e7000_remove_breakpoint, e7000_kill):
 	Update function signature to match target vector.

	* h8300-tdep.c (h8300_command, h8300h_command, h8300s_command):
 	h8500-tdep.c (small_command, big_command, medium_command,
 	compact_command): Update function signature to match add_cmd.

2000-12-01  Fernando Nasser  <fnasser@redhat.com>

	* p-exp.y: Define strncasecmp as strnicmp for MSVC.
	(yylex): Use strncasecmp, not strnicmp.

2000-12-01  Fernando Nasser  <fnasser@redhat.com>

	* cli/cli-decode.c: New file. Handle lists of commands, their decoding
	and documentation.
	(add_cmd, deprecate_cmd, add_abbrev_cmd, add_alias_cmd, add_prefix_cmd,
	add_abbrev_prefix_cmd, not_just_help_class_command, empty_sfunc,
	add_set_cmd, add_set_enum_cmd, add_set_auto_boolean_cmd,
	add_show_from_set, delete_cmd, apropos_cmd, help_cmd, help_list,
	help_all, print_doc_line, help_cmd_list, find_cmd, lookup_cmd_1,
	undef_cmd_error, lookup_cmd, deprecated_cmd_warning,
	lookup_cmd_composition, complete_on_cmdlist, complete_on_enum):
	Moved here from command.c.
	(add_info, add_info_alias, add_com, add_com_alias): Moved here from
	top.c.
	* cli/cli-decode.h: Definitions/declarations for the above.
	* cli/cli-cmds.c: New file.  GDB CLI commands.
	(error_no_arg, info_command, show_command, help_command, show_version, 
	quit_command, pwd_command, cd_command, echo_command, shell_escape,
	make_command, show_user, set_debug, show_debug, init_cmd_lists):
	Moved here from top.c.
	(apropos_command): Moved here from command.c.
	(complete_command, source_command): Moved here (part) from top.c.
	(is_complete_command): New function. Checks if a command is the
	"complete" command.
	(init_cli_cmds): New function. Add commands to the CLI (from code
	previously in top.c.
	* cli/cli-cmds.h: Definitions/declarations for the above.
	* cli/cli-script.c: New file. GDB CLI command scripting.
	(build_command_line, get_command_line, print_command_lines,
	print_command_line, execute_user_command, execute_control_command,
	while_command, if_command, arg_cleanup, setup_user_args, locate_arg,
	insert_args, realloc_body_list, read_next_line,
	recurse_read_control_structure, read_command_lines, free_command_lines,
	do_free_command_lines_cleanup, make_cleanup_free_command_lines,
	validate_comname, user_defined_command, define_command,
	document_command, source_cleanup_lines, do_fclose_cleanup,
	show_user_1): Moved here from top.c.
	(script_from_file): New function. Implements execution of a script
	contained in a file (part of code for the source_command() that used
	to exist in top.c).
	* cli/cli-script.h: Definitions/declarations for the above.
	* cli/cli-setshow.c: New file. Handle set and show GDB CLI commands.
	(parse_auto_binary_operation, parse_binary_operation,
	do_setshow_command, cmd_show_list): Moved here from command.c.
	* cli/cli-setshow.h: Definitions/declarations for the above.
	* top.c: Remove all CLI code, except the command loop.
	(gdb_init): Call init_cli_cmds().
	* command.c: Remove obsolete file.
	* command.h: Mark as DEPRECATED.
	* gdbcmd.h: Ditto.
	* call-cmds.h: Ditto.
	* Makefile.in (SFILES): Remove command.c.
	(COMMON_OBS): Remove command.o.
	(command.o): Remove obsolete target.
	(cli_decode_h, cli_cmds_h, cli_script_h, cli_setshow_h): New macros.
	Refer to CLI header files.
	(cli-decode.o, cli-cmds.o, cli-setshow.o, cli-script.o): New targets.
	(SUBDIR_CLI_OBS, SUBDIR_CLI_SRCS, SUBDIR_CLI_DEPS, SUBDIR_CLI_INITS,
	SUBDIR_CLI_LDFLAGS, SUBDIR_CLI_CFLAGS, SUBDIR_CLI_ALL, SUBDIR_CLI_CLEAN,
	SUBDIR_CLI_INSTALL, SUBDIR_CLI_UNINSTALL): New macros for new cli
	subdirectory.
	* configure.in (enable_gdbcli): New option. Include the CLI in the
	executable (cannot be disabled yet).
	(CONFIG_OBS, CONFIG_DEPS, CONFIG_SRCS, CONFIG_INITS, ENABLE_CFLAGS,
	CONFIG_ALL, CONFIG_CLEAN, CONFIG_INSTALL, CONFIG_UNINSTALL): Add
	the corresponding SUBDIR_CLI_* macros if CLI requested.
	* configure: Regenerate.

2000-10-27  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y (yylex): avoid problem with symbol name 
	starting as a operator name.

2000-11-30  Fernando Nasser  <fnasser@redhat.com>

	* linespec.h: New file. Declarations for linespec.c.
	* linespec.c, alpha-tdep.c, breakpoint.c, parse.c, source.c,
	symtab.c, tracepoint.c: Include the above.
	* completer.c: New file. Line completion stuff for GDB.
	(get_gdb_completer_word_break_characters,
	get_gdb_completer_quote_characters): New functions. Accessors for
	useful completer internal data.
	(filename_completer, line_completion_function, skip_quoted): Moved
	here from top.c.
	* completer.h: New file. Declarations for the above.
	* linespec.c (decode_line_1): Use
	get_gdb_completer_word_break_characters and
        get_gdb_completer_quote_characters.
	* top.c: Include completer.h.
	(filename_completer, line_completion_function, skip_quoted):
	Moved to completer.c.
	* corefile.c, exec.c, source.c, symfile.c, linespec.c: Include
	completer.h.
	* Makefile.in (SFILES): Add completer.c.
	(COMMON_OBS): Add completer.o.
	(completer.o): New target.
	(linespec.o, alpha-tdep.o, breakpoint.o, parse.o, source.o,
        symtab.o, tracepoint.o): Add linespec.h to dependencies list.
	(corefile.o, exec.o, source.o, symfile.o, linespec.o): Add completer.h
	to dependencies list.

Thu Nov 30 13:19:16 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.c: Regenerate.

Thu Nov 30 01:14:21 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* varobj.c (varobj_create): Initialize ``old_fi''.
	(varobj_update): Initialize ``templist''.

	* kod-cisco.c (cisco_kod_request): Simplify allocation of
 	``sync_ids'' eliminating uninitialized variable.

2000-11-28  Mark Salter  <msalter@redhat.com>

	* MAINTAINERS: Add Mark Salter to Write After Approval list.

Tue Nov 28 12:24:43 2000  Christopher Faylor <cgf@cygnus.com>

	* win32-nat.c (dll_code_sections_add): strdup -> xstrdup.

Mon Nov 27 11:45:52 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote.c (remote_write_bytes): Add default case to switch
 	initializing ``todo''. Ditto for ``nr_bytes''.
 	* top.c (catch_errors): Always initialize ``val''.
	* solib.c (info_sharedlibrary_command): Handle bfd_get_arch_size
 	returning an unknown size.
	* gdbtypes.c (count_virtual_fns): Always initialize ``vfuncs''.
	* breakpoint.c (break_at_finish_at_depth_command_1): Initialise
 	extra_args to NULL.
	(break_at_finish_command_1): Ditto.
 
Mon Nov 27 11:27:06 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Add GFDL updates to 5.1 release criteria.

2000-11-26  Nick Clifton  <nickc@redhat.com>

        * configure.tgt (xscale-*): Add.
        * configure.host (xscale-*): Add.

2000-11-24  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c  (gdb_print_insn_m68hc11): New function.
	(_initialize_m68hc11_tdep): Install it. Register bfd_arch_m68hc12.

2000-11-24  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (gdbarch_tdep): Move stack_correction global to here.
	(STACK_CORRECTION): Get stack correction using gdbarch_tdep.
	(m68hc11_saved_pc_after_call): Use STACK_CORRECTION.
	(m68hc11_frame_chain): Likewise.
	(m68hc11_frame_init_saved_regs): Likewise.
	(m68hc11_init_extra_frame_info): Likewise.
	(m68hc11_push_arguments): Likewise.
	(m68hc11_push_arguments): Likewise.
	(m68hc11_store_struct_return): Likewise.
	(m68hc11_push_return_address): Likewise.
	(m68hc11_gdbarch_init): Setup stack_correction according to arch.

Mon Nov 20 13:59:29 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in: Add support for configure option
 	--enable-gdb-build-warnings. Mention need to update doco.
	* configure: Regenerate.

2000-11-21  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* target.h (TARGET_SIGNAL_REALTIME_64):  Added for IRIX 6.
	* target.c (target_signal_from_host, do_target_signal_to_host):
	Handle TARGET_SIGNAL_REALTIME_64.

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

	* solib.c (solib_open): Handle the case where
	solib_absolute_prefix is NULL.

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

	* solist.h: Declare new function solib_open.
	* solib.c (solib_open): New function.  Abstracts some of the
	code from solib_map_sections, for finding the binary solib file.
	(solib_map_sections): Call solib_open.
	* solib-svr4.c (enable_break): Call solib_open.

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

	* gdbserver/low-nbsd.c (fetch_inferior_registers,
 	store_inferior_registers): Support older NetBSD/powerpc systems
 	from before fp reg support was added.  Adapt to register number
 	changes caused when powerpc target was multi-arched.

2000-11-20  H.J. Lu  <hjl@gnu.org>

	* ia64-tdep.c (gdbarch_tdep): Change reference from
	ELFOSABI_MONTEREY to ELFOSABI_AIX.

2000-11-20  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* c-valprint.c (print_function_pointer_address):  New function
	to automatically dereference a function pointer for printing
	if necessary.
	(c_val_print):  Use print_function_pointer_address when printing
	function pointer addresses.

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

	* gdbserver/low-nbsd.c: Fix typos.

2000-11-20  Jeffrey A Law  (law@cygnus.com)

        * pa64solib.c (add_to_solib): Pass TARGET to pa64_solib_load_symbols.

Mon Nov 20 23:21:53 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Peter Schauer and Kevin Buettner maintain AIX.  Jim
 	Blandy, Kevin Buettner and Peter Schauer share shared libs.

	From Nick Duffek:
 	* MAINTAINERS: Share responsibility for
 	Solaris/x86 between co-maintainers.

	* MAINTAINERS: Add linespec as a separate component.
	
Mon Nov 20 14:29:39 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* command.h (error_no_arg): Add noreturn attribute to declaration.

Fri Nov 17 16:07:23 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* utils.c (xvasprintf, xasprintf): New functions.
	* defs.h (xvasprintf, xasprintf): Add declarations.

	* remote.c (add_packet_config_cmd): Use function xasprintf instead
 	of asprintf.
	* utils.c (vfprintf_maybe_filtered, vfprintf_unfiltered): Use
 	function xvasprintf instead of vasprintf.

	* TODO (xasprintf): Update.

Mon Nov 20 12:22:32 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Mention ``extern'' and ``STREQ'' cleanups.

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

	* symtab.c (no_symtab_msg): Remove definition.
	(sources_info): Replace use of no_symtab_msg with the string
 	itself.
	* linespec.c (no_symtab_msg): Remove declaration.
	(decode_line_1): Replace uses of no_symtab_msg with the string
 	itself.

2000-11-17  Kevin Buettner  <kevinb@redhat.com>

	* rs6000-tdep.c (refine_prologue_limit): New function.
	(skip_prologue): When zero, attempt to obtain value for
	lim_pc by calling refine_prologue_limit().  Also, fix
	fencepost error regarding the limit in the loop.

	From Peter Schauer:
	* rs6000-tdep.c (skip_prologue):  Handle optimizer code motions into
	the prologue by continuing the prologue search, if we have no valid
	frame yet or if the return address is not yet saved in the frame.

2000-11-17  Kevin Buettner  <kevinb@redhat.com>

	* wrapper.c (gdb_value_assign, wrap_value_assign): Protoize.

2000-11-16  Christopher Faylor  <cgf@redhat.com>

	* thread.c (thread_apply_all_command): Save the command before
	executing it because it may be modified.  Restore the saved command so
	that the same command is executed on next thread.
	(thread_apply_command): Same correction.

2000-11-16  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* regcache.c (read_register_bytes): Failing to set register_valid
	is not necessarily an error, if the register is a pseudo-register.
	Some pseudo-registers are never marked as valid, so that they will
	be read anew every time.  Determining if a pseudo-register is valid
	(or should be marked invalid) may be difficult, whereas just 
	recomputing it may be cheap.

Thu Nov 16 09:47:57 2000  David Taylor  <taylor@redhat.com>

	* tracepoint.c (trace_find_tracepoint_command): Replace call to
	parse_and_eval_address with a call to parse_and_eval_long as
	we are evaluating an integer, not an address.
	* top.c (show_commands): Ditto.

2000-11-15  Kevin Buettner  <kevinb@redhat.com>

	* xcoffread.c (arrange_linetable, xcoff_initial_scan): Protoize.

Wed Nov 15 09:31:39 2000  David Taylor  <taylor@redhat.com>

	* utils.c (strlen_paddr, paddr, paddr_nz): Use TARGET_ADDR_BIT,
	not TARGET_PTR_BIT, since we are dealing with addresses, not
	pointers.
	
2000-11-14  Daniel Berlin  <dberlin@redhat.com>

	From Kenneth Block <kenneth.block@compaq.com>

        * demangle.c : Use libibery list of demanglers instead of out of
        date local copy.

Wed Nov 15 00:29:46 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Klaus Espenlaub <espenlaub@informatik.uni-ulm.de>
	* remote.c (_initialize_remote): Call
 	show_memory_write_packet_size when ``show remotewritesize''
 	command.

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

	* config/djgpp/config.sed: Fix tweaking "VPATH=.:foo", and handle
        the gettext's posrcprefix correctly with drive letters.

2000-11-10  Jim Blandy  <jimb@redhat.com>

	* stabsread.c (read_range_type): Properly construct complex
	type nodes.

2000-11-10  Fernando Nasser  <fnasser@totem.toronto.redhat.com>

	* symtab.c (decode_line_1, total_number_of_methods, find_methods,
	build_command_line_spec, find_toplevel_char, decode_line_2):
	Move to linespec.c.
	* linespec.c: New file. Routines that handle linespecs, formerly
	in symtab.c.
	* symtab.h: Export find_line_symtab and find_function_start_sal.
	* Makefile.in (SFILES): Add linespec.c.
	(COMMON_OBS): Add linespec.o.
	(linespec.o): New target.

2000-11-10  Christopher Faylor <cgf@cygnus.com>

	* inferior.h (step_over_calls_kind): New enum to clarify values in
	step_over_calls.
	* infcmd.c (step_over_calls): Change definition.
	(step_1): Use new enum values in relation to step_over_calls.
	(step_once): Ditto.
	(until_next_command): Ditto.
	* infrun.c (clear_proceed_status): Ditto.
	(handle_inferior_event): Ditto.

2000-11-10  Stephane Carrez  <Stephane.Carrez@sun.com>

	* inferior.h (step_stop_if_no_debug): New variable.
	* infrun.c (step_stop_if_no_debug): Declare.
	(handle_inferior_event): Stop the step command if we entered a function
	without line info.
	(_initialize_infrun): New command 'set step-mode' to control the step
	command.
	* infcmd.c (step_once): Switch to stepi mode if there is no line info
	(and switching is enabled).

2000-11-10  J.T. Conklin  <jtc@redback.com>

	* target.c (do_xfer_memory): Only perform a single memory transfer
 	instead of iterating to tranfer the entire region.  Higher layers
 	are expected to call this function multiple times for partial
 	transfers.
	(target_xfer_memory_partial): Remove unused local variables.

2000-11-10  Nick Duffek  <nsd@redhat.com>

	* target.c (target_xfer_memory_partial): Return bytes transferred
	instead of 0.

2000-11-09  Kevin Buettner  <kevinb@redhat.com>

	* values.c (value_being_returned, using_struct_return): Protoize.
	* varobj.c (child_exists, cplus_class_num_children): Protoize.

2000-11-09  Kevin Buettner  <kevinb@redhat.com>

	Changes based on a patch from Ulrich Drepper:
	* solib-svr4.c (svr4_relocate_main_executable): New function.
	(svr4_solib_create_inferior_hook):  Call
	svr4_relocate_main_executable.
	
2000-11-09  J.T. Conklin  <jtc@redback.com>

	* config/i386/nbsd.mh: Remove solib.o, solib-svr4.o from NATDEPFILES.
	* config/i386/nbsdelf.mh: Likewise.
	* config/m68k/nbsd.mh: Likewise.
	* config/ns32k/nbsd.mh: Likewise.
	* config/powerpc/nbsd.mh: Likewise.
	* config/sparc/nbsd.mh: Likewise.
	* config/sparc/nbsdelf.mh: Likewise.
	* config/i386/nbsd.mt: Add solib.o, solib-svr4.o to TDEPFILES.
	* config/i386/nbsdelf.mt: Likewise.
	* config/m68k/nbsd.mt: Likewise.
	* config/ns32k/nbsd.mt: Likewise.
	* config/powerpc/nbsd.mt: Likewise.
	* config/sparc/nbsd.mt: Likewise.

2000-11-09  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	Add auto-solib-add support for AIX, remove obsolete and unused
	SOLIB_SYMBOLS_MANUAL code, cleanup of AIX shared library handling code.
	* rs6000-nat.c (vmap_symtab):  Do not try to modify offsets
	if symbols are not yet loaded.
	(vmap_add_symbols):  New function to add symbols for a vmap entry.
	(add_vmap):  Turn errors into warnings, return NULL vmap upon
	failure. Add symbols via vmap_add_symbols only if requested.
	(xcoff_relocate_core):  Allow debugging of core files without an
	executable file. Handle NULL returns from add_vmap gracefully.
	* xcoffsolib.c (solib_add):  Remove, no longer needed.
	(solib_info):  Do not check for new shared libraries if there is no
	inferior process.
	(sharedlibrary_command):  Made static.
	Do not check for new shared libraries if there is no inferior process.
	Add symbols for requested shared libraries via vmap_add_symbols.
	(_initialize_solib):  Add `set auto-solib-add' command.
	* xcoffsolib.h (vmap_add_symbols):  Add prototype declaration.

	* config/rs6000/tm-rs6000.h (PC_LOAD_SEGMENT):  Move from here ...
	* config/rs6000/nm-rs6000.h:  ... to here, this is an AIX native
	feature.
	* config/powerpc/tm-macos.h, config/powerpc/tm-ppc-eabi.h,
	config/powerpc/tm-ppc-nw.h, config/rs6000/tm-rs6000ly.h:
	Remove #undef PC_LOAD_SEGMENT.
	* config/powerpc/aix.mt, config/rs6000/aix4.mt, config/rs6000/rs6000.mt
	(TDEPFILES):  Move xcoffsolib.o from here ...
	* config/powerpc/aix.mh, config/rs6000/aix4.mh, config/rs6000/rs6000.mh
	(NATDEPFILES):  ... to here, xcoffsolib.o contains AIX native code
	only.
	* rs6000-tdep.c:  Remove #include xcoffsolib.h, no longer needed.
	* xcoffsolib.h (xcoff_relocate_symtab_hook):  Remove declaration.
	* rs6000-nat.c (_initialize_core_rs6000):  Remove setting of
	xcoff_relocate_symtab_hook, no longer needed.
	* xcoffsolib.c (solib_info, sharedlibrary_command):  Remove
	xcoff_relocate_symtab_hook indirection, call xcoff_relocate_symtab
	directly, as xcoffsolib.c is now compiled in native AIX configurations
	only.
	* Makefile.in:  Update dependencies for rs6000-tdep.o, rs6000-nat.o
	and xcoffsolib.o.

Thu Nov  9 17:16:29 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Specify the vax-dec-vms5.5 target tupple.
	* vax-tdep.c: Include "gdbcore.h", "frame.h" and "value.h".
	(vax_print_insn): Change ``d'' to a const char pointer.

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

	* gdbarch.sh: Spelling correction: registrary -> registry.
	* gdbarch.c: Ditto.

Wed Nov  8 23:08:48 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* m68k-tdep.c (m68k_get_longjmp_target): Work around targets that
 	don't define JB_PC or JB_ELEMENT_SIZE.

Wed Nov  8 22:46:43 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* m68k-tdep.c (m68k_get_longjmp_target): Rename function
 	get_longjmp_target.  Remove wrapping #ifdef GET_LONGJMP_TARGET.
	* config/m68k/tm-m68k.h (m68k_get_longjmp_target): Add function
 	declaration.

	* config/m68k/tm-vx68.h, config/m68k/tm-sun3.h,
 	config/m68k/tm-m68kv4.h, config/m68k/tm-linux.h,
 	config/m68k/tm-es1800.h, config/m68k/tm-cisco.h: Update definition
 	of GET_LONGJMP_TARGET.  Delete get_longjmp_target function
 	declaratation.

Wed Nov  8 15:32:23 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbserver/configure.in (files): Don't link nm-empty.h when a
 	non-native target.
	* gdbserver/configure: Regenerate.

2000-11-07  Kevin Buettner  <kevinb@redhat.com>

	* valops.c (typecmp): Protoize.
	* valprint.c (strcat_longest): Protoize.

2000-11-07  Kevin Buettner  <kevinb@redhat.com>

	* ia64-tdep.c (native_find_global_pointer):  New global variable.
	(struct gdbarch_tdep): Add member find_global_pointer.
	(ia64_gdbarch_init): Initialize find_global_pointer member.  Also,
	tell the gdbarch machinery that we have floating point registers.
	(FIND_GLOBAL_POINTER): New macro.
	(generic_elf_find_global_pointer):  Renamed from find_global_pointer.
	(find_func_descr, ia64_push_return_address):  Call
	FIND_GLOBAL_POINTER instead of find_global_pointer.
	(process_note_abi_tag_sections):  Enable code previously disabled
	by #if 0.

2000-11-07  Daniel Berlin  <dberlin@redhat.com>

	* dwarf2read.c: Revert June 5th change for caching of types,
	as per Jim Blandy's request.

2000-11-06  Fernando Nasser  <fnasser@totem.toronto.redhat.com>

	* wrapper.c (gdb_value_assign): New function.  Longjump-free
	version of value_assign.
	(wrap_value_assign): New function. Wrapper for value_assign.
	* wrapper.h: Add declaration for the above.
	* varobj.c (varobj_set_value): Use gdb_value_assign, not
	value_assign which can longjump.  Do not change varobj value if
	assign fails.
	
2000-11-06  Fernando Nasser  <fnasser@cygnus.com>

	From  Steven Johnson  <sbjohnson@ozemail.com.au>:

        This set of changes add "hookpost-" as an expansion on the original
	hooking of commands to GDB. A Hook may now be run "AFTER" execution of
	a command as well as before.

	* command.h (struct cmd_list_element): Changed elements hook and hookee
	to hook_pre and hookee_pre respectively. Added hook_post and hookee_post
	for the post hook command operation. Added hook_in so that an executing
	hook can be flagged to prevent recursion.
	* command.c (add_cmd): Changed initilization of cmd_list_element to
	reflect above changes.
	(delete_cmd): Remove both pre and post hooks.
	(help_cmd): Notify that the command has pre and/or post hooks.
	* infrun.c (normal_stop): Change references to hook_pre from hook.
	* top.c (execute_command): Run both pre and post hooks.
	(define_command): Allow definition of both pre and post hooks.
	The definition of pre-hooks is done as before, with the "hook-"
	prefix for backward compatibility.

2000-11-06  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* stack.c (return_command):  Pop dummy frame if we just returned from
	a stop in a call dummy.

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

	* v850-tdep.c (handle_prepare, handle_pushm): Remove extraneous
	blank line after function declarator.
	* v850ice.c (v850ice_xfer_memory, do_gdb): Protoize.

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

	* utils.c (add_continuation, add_intermediate_continuation,
	printchar): Protoize.

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

	* dwarf2read.c (new_symbol): Relocate address of symbol by the
	base address of the section it is in rather than always using
	the base address of the .text section.

2000-11-01  J.T. Conklin  <jtc@redback.com>

	* TODO: Note abstraction layer violation where "ocd reset" command
	must invalidate the dcache, and how this might be fixed.

	* monitor.c (#include "dcache.h"): Removed.
	(remote_dcache): Removed.
	(monitor_open): Removed code that created local dcache.
	(flush_monitor_dcache): Removed (unused function).
	(monitor_resume): Removed call to dcache_invd().
	(monitor_load): Likewise.
	(monitor_xfer_memory): Changed to call monitor_write_memory(),
	monitor_write_memory_block(), and monitor_read_memory() instead
	of dcache_xfer_memory().
	* monitor.h (flush_monitor_dcache): Removed (unused function).
	* ocd.c (#include "dcache.h"): Removed.
	(ocd_dcache): Removed.
	(ocd_open): Removed code that created local dcache.
	(ocd_resume): Removed call to dcache_invd().
	(ocd_xfer_memory): Changed to call ocd_write_bytes() and 
	ocd_read_bytes() instead of dcache_xfer_memory().
	(bdm_reset_command): Invalidate target dcache.
	* remote-bug.c (bug_load): Remove call to dcache_invd().
	(bug_resume): Likewise.
	(bug_settings): Remove dcache, readfunc, and writefunc fields
	from initializer.
	(bug_xfer_memory): Changed to call bug_read_memory() and 
	bug_write_memory() instead of dcache_xfer_memory().
	* remote-nindy.c (#include "dcache.h"): Removed.
	(nindy_dcache): Removed.
	(nindy_open): Removed code that created local dcache.
	(nindy_resume): Removed call to dcache_invd().
	(nindy_load): Likewise.
	(nindy_xfer_inferior_memory): Changed to call ninMemPut() and 
	ninMemGet() instead of dcache_xfer_memory().
	* remote-sds.c (#include "dcache.h"): Removed.
	(sds_dcache): Removed.
	(sds_open): Removed code that created local dcache.
	(sds_resume): Removed call to dcache_invd().
	(sds_xfer_memory): Changed to call sds_write_bytes() and 
	sds_read_bytes() instead of dcache_xfer_memory().
	* remote-utils.c (gr_open): Removed code that created local dcache.
	* remote-utils.h (#include "dcache.h"): Removed.
	(struct gr_settings): Removed dcache, readfunc, and writefunc fields.
	(gr_get_dcache, gr_set_dcache): Removed macro definitions.
	* remote.c (#include "dcache.h"): Removed.
	(remote_dcache): Removed.
	(remote_open_1): Removed code that created local dcache.
	(remote_async_open_1): Likewise.
	(remote_resume): Removed call to dcache_invd().
	(remote_async_resume): Likewise.
	(remote_xfer_memory): Changed to call remote_write_bytes() and
	remote_read_bytes() instead of dcache_xfer_memory().
	* wince.c (#include "dcache.h"): Removed.
	(remote_dcache): Removed.
	(child_create_inferior): Removed code that created local dcache.
	(child_xfer_memory): Changed to call remote_write_bytes() and
	remote_read_bytes() instead of dcache_xfer_memory().
	(child_resume): Removed call to dcache_invd().
	
	* target.c (target_dcache): Added.
	(target_load): Invalidate target_dcache.
	(do_xfer_memory): New function.
	(target_xfer_memory): Reimplement in terms of dcache_xfer_memory().
	(target_xfer_memory_partial): Likewise.
	(initialize_targets): Create target_dcache.
	* target.h (#include "dcache.h"): Added.
	(target_open): Invalidate target_dcache.
	(target_resume): Likewise.
	(do_xfer_memory): New declaration.
	
	* dcache.c (dcache_init): Removed reading and writing arguments.
	(dcache_struct): Removed read_memory and write_memory fields.
	(dcache_write_line): Call do_xfer_memory.
	(dcache_read_line): Likewise.
	(dcache_xfer_memory): Likewise.
	(dcache_invalidate): Renamed from dcache_invd.
	(dcache_init): Updated.
	(dcache_xfer_memory): Updated.
	* dcache.h (memxferfunc): Removed definition.
	(dcache_init): Removed reading and writing arguments.
	
2000-11-03  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* objfiles.c (objfile_relocate):  Relocate ei.entry_point with
	its section offset, use SECT_OFF_TEXT only as a fallback.

2000-11-01  Kevin Buettner  <kevinb@redhat.com>

	* symm-nat.c (print_1167_regs): Remove extraneous blank line
	after function declarator.
	* symtab.c (search_symbols): Likewise.
	* ultra3-nat.c (fetch_core_registers): Protoize.

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

	* config/sh/tm-linux.h: New file.  Include generic tm-linux.h, 
	plus tm-sh.h, then define SVR4_FETCH_LINK_MAP_OFFSETS to use
	the sh target function instead of the default link map offsets.
	* config/sh/sh.mt: Add solib.o and solib-svr4.o to TDEPFILES.
	Use sh/tm-linux.h instead of sh/tm-sh.h.
	* sh-tdep.c (sh_linux_svr4_fetch_link_map_offsets): 
	New function.  Construct target-specific link map offsets.
	* i386-linux-tdep.c (i386_linux_svr4_fetch_link_map_offsets:
	New function.  Construct target-specific link map offsets.
	* config/i386/tm-linux.h: Use above function instead of default.

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

	* config/i386/tm-linux.h: Remove definition of SVR4_SHARED_LIBS,
	and inclusion of solib.h.  Move up into ../tm-linux.h.
	config/tm-linux.h: Define SVR4_SHARED_LIBS, include solib.h.

2000-10-30  Kevin Buettner  <kevinb@redhat.com>

	* top.c (simplified_command_loop, add_info, add_com,
	help_command): Protoize.
	* ui-out.c (gdb_query): Protoize.

2000-10-30  Kevin Buettner  <kevinb@redhat.com>

	Changes based on analysis from Peter Schauer:
	* solist.h (struct so_list): Remove field lmend.
	(struct target_so_ops): Remove field lm_addr.  Add field
	relocate_section_addresses.  Add comments for all fields
	in this structure
	(TARGET_SO_LM_ADDR): Remove.
	(TARGET_SO_RELOCATE_SECTION_ADDRESSES): New macro.
	* solib-svr4.c (svr4_relocate_section_addresses): New function.
	(_initialize_svr4_solib): Remove lm_addr initialization.  Add
	initialization for relocate_section_addresses.
	* solib.c (solib_map_sections): Invoke 
	TARGET_SO_RELOCATE_SECTION_ADDRESSES instead of using now
	defunct TARGET_SO_LM_ADDR to relocate the section addresses.
	Also, eliminate assignment to the lmend field since this
	field no longer exists.
	(symbol_add_stub): Remove machinery for determining the lowest
	section.
	(info_sharedlibrary_command): Print the text section starting
	and ending addresses.
	(solib_address): Don't use TARGET_SO_LM_ADDR, nor so->lmend to
	determine if an address is in a shared object.  Instead, scan
	the section table and test against the starting and ending
	addresses for each section.

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

	* config/m68k/linux.mh: Remove solib.c, solib-svr4.c from NATDEPFILES.
	* config/powerpc/linux.mh: ditto.
	* config/ia64/linux.mh: ditto.
	* config/i386/linux.mh: ditto.
	* config/alpha/alpha-linux.mh: ditto.
	* config/arm/linux.mh: ditto.
	* config/m68k/linux.mt: Add solib.c, solib-svr4.c to TDEPFILES.
	* config/powerpc/linux.mt: ditto.
	* config/ia64/linux.mt: ditto.
	* config/i386/linux.mt: ditto.
	* config/alpha/alpha-linux.mt: ditto.
	* config/arm/linux.mt: ditto.

2000-10-30  J.T. Conklin  <jtc@redback.com>

	* gdbarch.sh, hp-psymtab-read.c, hpread.c, m3-nat.c, mcore-tdep.c, 
	mips-tdep.c, monitor.c, regcache.c, remote-es.c, ser-unix.c, 
	somread.c, tracepoint.c: Fix spelling errors in comments.
	* gdbarch.c: Regenerate.

	* gnu-nat.c (S_exception_raise_request): Fix typos and spelling 
	errors in strings.
	* m3-nat.c (intercept_exec_calls, mach_thread_parse_id): Likewise.
	* mcore-tdep.c (mcore_analyze_prologue): Likewise.
	* mips-tdep.c (mips16_next_pc, _initialize_mips_tdep): Likewise.
	* remote-e7000.c (e7000_start_remote): Likewise.
	* remote-rdp.c (handle_swi): Likewise.
	* remote-vx.c (vx_load_command): Likewise.
	* sh-tdep.c (sh_do_pseudo_register): Likewise.
	* sol-thread.c (td_err_string): Likewise.
	* symtab.c (decode_line_2): Likewise.
	
Mon Oct 30 10:19:01 2000  David Taylor  <taylor@redhat.com>

	* eval.c (parse_and_eval_long): New function.
	* value.h: Declare it.
	
	* breakpoint.c (breakpoints_info, maintenance_info_breakpoints):
	Call parse_and_eval_long, not parse_and_eval_address.
	* command.c (do_setshow_command): Ditto.
	* infcmd.c (step_1, signal_command, continue_command): Ditto.
	* infrun.c (signals_info): Ditto.
	* stack.c (set_backtrace_limit_command, backtrace_command_1,
	up_silently_base, down_silently_base): Ditto.
	* tracepoints.c (tracepoints_info, trace_find_command,
 	trace_find_tracepoint_command): Ditto.
	* valprint.c (set_radix): Ditto.
	* values.c (show_values): Ditto.

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

	* symtab.c (decode_line_2, file_matches, search_symbols): Protoize.
	* thread.c (iterate_over_threads): Protoize.

2000-10-27  J.T. Conklin  <jtc@redback.com>

	* arch-utils.c (set_architecture, set_architecture_from_arch_mach,
 	set_gdbarch_from_file): Fix spelling error in string.
	* v850-tdep.c (v850_target_architecture_hook): Likewise.
	* gdbarch.sh: Fix spelling errors in comments.
	* gdbarch.c, gdbarch.h: Regenerate.

	* ppcnbsd-nat.c (fetch_core_registers, fetch_inferior_registers,
 	store_inferior_registers): Support older NetBSD/powerpc systems
 	from before fp reg support was added.  Adapt to register number
	changes caused when powerpc target was multi-arched.

2000-10-26  David B. Anderson <davea@sgi.com>

	* breakpoint.c breakpoint.h hppab-nat.c infrun.c
	language.h mcore-tdep.c mips-tdep.c symfile.c symtab.c
	symtab.h target.c tm-mips.h xm-sun4sol2.h: Corrected
	spelling errors in comments.
	* gdbarch.c gdbarch.sh: Removed word from comment.

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

	* sun3-nat.c (fetch_core_registers): Protoize.
	* symm-nat.c (print_1167_regs, child_xfer_memory): Protoize.

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

	* stabsread.c (define_symbol): Update comment.

2000-10-26 Pierre Muller <muller@ics.u-strasbg.fr>

     	* stabsread.c (define_symbol): Set the type_name of the type
	of the new symbol to the symbol name for type symbol, if the
	language is Pascal.
	
2000-10-26  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* arch-utils.c, arch-utils.h (default_convert_from_func_ptr_addr):
	New function.
	* gdbarch.sh (CONVERT_FROM_FUNC_PTR_ADDR):  Add.
	* gdbarch.c, gdbarch.h:  Regenerate.
	* valops.c (find_function_addr):  Use CONVERT_FROM_FUNC_PTR_ADDR
	unconditionally.

	* config/rs6000/tm-rs6000.h (CONVERT_FROM_FUNC_PTR_ADDR):  Delete
	definition.
	* config/powerpc/tm-linux.h (CONVERT_FROM_FUNC_PTR_ADDR):  Remove
	undef.
	* rs6000-tdep.c (rs6000_convert_from_func_ptr_addr):  Fix comment.
	(rs6000_gdbarch_init):  Register rs6000_convert_from_func_ptr_addr
	if not ELFOSABI_LINUX.

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

	* config/rs6000/rs6000lynx.mt (TDEPFILES): Revert 2000-10-24
	change in which solib-svr4.o was inadvertently added to this
	list.

2000-10-25  Fred Fish  <fnf@cygnus.com>

	* mips-tdep.c (MIPS_DEFAULT_MASK_ADDRESS_P): Define using either
	the current arch or use zero.

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

	* ser-unix.c (do_unix_readchar): Coding style improvement only.

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

        * target.c (generic_mourn_inferior): Notify GUI that inferior is gone
        by calling detach_hook, if defined.

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

	* coffread.c (coff_end_symtab): When calling end_symtab(),
	use SECT_OFF_TEXT() instead of 0 to represent the .text
	section.
	* hp-symtab-read.c (hpread_expand_symtab): Likewise.
	* hpread.c (hpread_expand_symtab, hpread_process_one_debug_symbol):
	Likewise.

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

	* solib-svr4.c: New file created out of much of solib.c...
	* solib.c (_SYSCALL32, BKPT_AT_SYMBOL): Move these defines to
	solib-svr4.c.
	(sys/types.h, signal.h, sys/param.h, fcntl.h, a.out.h,
	elf/external.h, link.h): Move these includes to solib-svr4.c.
	(bkpt_names, debug_base_symbols, main_name_list,
	solib_extract_address, SOLIB_EXTRACT_ADDRESS, dynamic_copy,
	ld_2_copy, debug_addr, flag_addr, LM_ADDR, LM_NEXT, LM_NAME,
	IGNORE_FIRST_LINK_MAP_ENTRY, breakpoint_addr,
	allocate_rt_common_objfile, solib_add_common_symbols,
	bfd_lookup_symbol, look_for_base, elf_locate_base, locate_base,
	first_link_map_member, open_symbol_file_object, match_main,
	current_sos, interp_text_sect_low, interp_text_sect_high,
	interp_plt_sect_low, interp_plt_sect_high,
	in_svr4_dynsym_resolve_code, disable_break, enable_break,
	special_symbol_handling): Moved to solib-svr4.c.
	(debug32_copy, shadow_contents, fdmatch)
	Removed entirely.
	(struct so_list): Moved to solist.h
	(MAX_PATH_SIZE): Moved to solist.h and renamed to
	SO_NAME_MAX_PATH_SIZE.

	* solist.h: New file created from struct so_list in solib.c.
	(struct lm_info): Add forward declaration.
	(struct so_list): Remove fields lm, lm32, lmaddr.  Replace with a
	single field, lm_info, which will be a pointer to target specific
	data.
	(struct target_so_ops): New struct.
	(free_so): Add extern declaration.
	(current_target_so_ops): Declare new global variable.
	(solib_map_sections): 
	(TARGET_SO_LM_ADDR, TARGET_SO_FREE_SO, TARGET_SO_CLEAR_SOLIB,
	TARGET_SO_SOLIB_CREATE_INFERIOR_HOOK,
	TARGET_SO_SPECIAL_SYMBOL_HANDLING, TARGET_SO_CURRENT_SOS,
	TARGET_SO_OPEN_SYMBOL_FILE_OBJECT):  New macros.
	* solib.c (solib_map_sections, free_so, symbol_add_stub,
	update_solib_list, solib_add, info_shared_library_command,
	solib_address, clear_solib, solib_create_inferior_hook):  Use
	new TARGET_SO_* macros to call function on target specific
	side indirectly.
	(current_target_so_ops): Define new global variable.
	(_initialize_solib): Eliminate HAVE_LINK_H ifdef.
	* solib-svr4.h: New file; defines struct link_map_offsets and
	SVR4_FETCH_LINK_MAP_OFFSETS.
	* solib-svr4.c (_initialize_svr4_solib, svr4_clear_solib,
	svr4_free_so): New functions.
	(special_symbol_handling, solib_create_inferior_function_hook,
	current_sos): Rename by adding a svr4_ prefix.
	(default_svr4_fetch_link_map_offsets): New function.
	(LM_ADDR, LM_NEXT, LM_NAME, IGNORE_FIRST_LINK_MAP_ENTRY,
	first_link_map_member, open_symbol_file_object, svr4_current_sos):
	Remove dependence on existence of link.h by calling
	SVR4_FETCH_LINK_MAP_OFFSETS to obtain the offsets of shared library
	data.  As a result, SVR4 and non-SVR4 versions of many of these
	functions coalesce into a single function and HAVE_STRUCT_LINK_MAP32
	ugliness is moved into default_svr4_fetch_link_map_offsets where it
	is relatively contained.
	(SOLIB_EXTRACT_ADDRESS): Revert 2000-08-29 change in which
	solib_extract_address() is called instead of extract_address().
	(solib_extract_address): Removed.

	* Makefile.in (solib.o): Add solist.h as a dependency.
	(solib-svr4.o): Add dependencies.
	* config/alpha/alpha-linux.mh, config/alpha/fbsd.mh,
	config/arm/linux.mh, config/i386/fbsd.mh,
	config/i386/i386dgux.mh, config/i386/i386gnu.mh,
	config/i386/i386sco5.mh, config/i386/i386sol2.mt,
	config/i386/i386v4.mh, config/i386/i386v42mp.mh,
	config/i386/linux.mh, config/i386/nbsd.mh,
	config/i386/nbsdelf.mh, config/i386/ncr3000.mt,
	config/i386/ptx4.mh, config/i386/sun386.mt,
	config/ia64/linux.mh, config/m68k/linux.mh,
	config/m68k/m68kv4.mh, config/m68k/nbsd.mh,
	config/m68k/sun2os4.mt, config/m68k/sun3os4.mt,
	config/m88k/delta88v4.mh, config/mips/mipsv4.mh,
	config/ns32k/nbsd.mh, config/powerpc/linux.mh,
	config/powerpc/nbsd.mh, config/powerpc/solaris.mh,
	config/rs6000/rs6000lynx.mt, config/sparc/linux.mt,
	config/sparc/nbsd.mh, config/sparc/nbsdelf.mh,
	config/sparc/sun4os4.mt, config/sparc/sun4sol2.mh
	(NATDEPFILES):  Add solib-svr4.o to list.

	* sparc-tdep.c (gregset.h): Don't include unless USE_PROC_FS is
	defined.

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

	* stabsread.c (dbx_lookup_type, dbx_alloc_type,
	read_sun_builtin_type, read_sun_floating_type,
	read_range_type): Protoize.

Wed Oct 25 01:19:26 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* solib.c (open_symbol_file_object): Update function signature to
 	match catch_errors function argument.

Wed Oct 25 00:08:01 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-09-06 Angela Marie Thomas <angela@cygnus.com>:
	* infttrace.c (get_dictionary_entry_of_page): Function
	require_memory_page_dictionary takes no args.

Tue Oct 24 16:12:00 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdba.el: Delete file.
	* NEWS: Mention.

2000-10-23 David B Anderson <davea@sgi.com>

	* TODO: Correct spelling errors
	* command.c (_initialize_command) corelow.c (core_open)
	main.c (captured_command_loop) mips-tdep.c (mips32_next_pc)
	remote.c serial.h top.c utils.c config/nm-lynx.h:
	Correct spelling errors in comments

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

	* sparc-nat.c (fetch_core_registers): Protoize.
	* sparcl-tdep.c (download): Protoize.

Fri Oct 20 19:08:47 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Add Fred Fish to Blanket Write Privs list.

2000-10-19  Josef Ezra <jezra@emc.com>

	* ax-gdb.c (gen_struct_ref): while generating data code, cases of
 	"collect p1->p2->data" where not covered if p2 is a 'typedefed'
 	type. this simple fix should forward the type pointer to the real
 	type.
	
2000-10-19  Kevin Buettner  <kevinb@redhat.com>

	* solib.c (LM_ADDR, LM_NEXT, LM_NAME, IGNORE_FIRST_LINK_MAP_ENTRY,
	open_symbol_file_object): Protoize.

2000-10-17  Kevin Buettner  <kevinb@redhat.com>

	* remote-vx29k.c (vx29k_frame_chain_valid): Protoize.
	* remote.c (remote_xfer_memory, remote_search): Protoize.
	* sol-thread.c (sol_thread_xfer_memory): Protoize.

2000-10-16  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* sparc-tdep.c (sparc_fix_call_dummy):  Improve comments.
	Adjust call_dummy_breakpoint_offset, so that `finish' after a stop
	in a call dummy works.
	(sparc_gdbarch_init):  Fix setting of pc_in_call_dummy, it depends
	on SPARC32/64_CALL_DUMMY_ON_STACK, not DO_CALL_DUMMY_ON_STACK.

2000-10-15  Kevin Buettner  <kevinb@redhat.com>

	* remote-st.c (st2000_xfer_inferior_memory): Protoize.
	* remote-utils.c (gr_multi_scan): Protoize.
	* remote-vx.c (vx_xfer_memory, net_get_symbols): Protoize.

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

	* remote.c (putpkt_binary): Call read_frame, not getpkt. Log message.
	(read_frame): Do not call error() on communication error when
	reading checksum, but return failure instead and log message.

2000-10-13  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* varobj.c (type_changeable): Arrays are not changeable.
	Trying to check for updates was causing an error if the array lived
	in a register as gdb value_equal() cannot handle that case yet.

2000-10-13  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* varobj.c (varobj_update): Prevent uninitialized error code to be
	returned on type_changed.  Also, prevent value_equal() to be called
	for the types we do not want to test for updates.

2000-10-11  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	From Grant Edwards <grante@visi.com>
	This keeps the GUI alive while running an RDI target and lets the
	STOP button be used to stop the target.
	* remote-rdi.c (arm_rdi_stop): New function.  Implements target_stop.
	(init_rdi_ops): Set to_stop target vector entry to the above.
	* rdi-share/ardi.c (stop_request): New variable.  Tells when a stop
	has been requested.
	(angel_RDI_stop_request): New function. Registers that a stop has
	been requested.
	(angel_RDI_ExecuteOrStep): Add call to ui_loop_hook() in loop that
	waits while target is executing.  Initialize and reset stop_request.
	* rdi-share/ardi.h: Add declaration of angel_RDI_stop_request().

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

	* remote-rdp.c (remote_rdp_xfer_inferior_memory): Protoize.
	* remote-sds.c (sds_xfer_memory): Protoize.
	* remote-sim.c (gdbsim_xfer_inferior_memory): Protoize.

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

	From Daniel Berlin <dberlin@redhat.com> :

	* symtab.h (SYMBOL_INIT_DEMANGLED_NAME): Initialize the symbol
 	language to auto instead of unknown, so it will try to demangle
 	the symbol.
	* symtab.h (OPNAME_PREFIX_P): Change operator prefix to correct value.
	* symtab.c (gdb_mangle_name): Properly handle C++ operators.
	
2000-10-12  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	From Daniel Berlin <dberlin@redhat.com> :

	* symtab.c (lookup_symbol_aux): New function. Renamed from
 	lookup_symbol. Move code to do demangling/case sensitivity to
 	lookup_symbol().
  	(lookup_symbol): Now wrapper for lookup_symbol_aux, so we can
 	perform case sensitivity/demangling without leaking memory.  Move
 	code to do demangling/case sensitivity from old_lookup_symbol to
 	here.
	(lookup_partial_symbol): Use SYMBOL_SOURCE_NAME instead of
 	SYMBOL_NAME.
	(lookup_block_symbol): Use SYMBOL_SOURCE_NAME instead of
 	SYMBOL_NAME. Don't do linear search in case of C++.

  	* symfile.c (compare_symbols): Use SYMBOL_SOURCE_NAME instead of
 	SYMBOL_NAME.
  	(compare_psymbols): Same here.

2000-10-09  Kevin Buettner  <kevinb@redhat.com>

	* remote-nindy.c (non_dle, nindy_xfer_inferior_memory): Protoize.
	* remote-os9k.c (rombug_xfer_inferior_memory): Protoize.
	* remote-rdi.c (arm_rdi_xfer_memory): Protoize.

2000-10-09  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* config/i386/i386sol2.mh:  Add XM_CLIBS definition to resolve
	reference to gethostbyname.

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

	* remote-eb.c (eb_xfer_inferior_memory): Protoize.
	* remote-es.c (es1800_xfer_inferior_memory, es1800_files_info):
	Protoize.
	* remote-mm.c (expect_msg): Protoize.

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

	* rs6000-tdep.c (skip_prologue): Add new parameter lim_pc.
	Update all callers.

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

	* remote-bug.c (bug_xfer_memory, bug_insert_breakpoint,
	bug_remove_breakpoint): Protoize.
	* remote-e7000.c (fetch_regs_from_dump, e7000_xfer_inferior_memory):
	Protoize.

2000-10-01  Kevin Buettner  <kevinb@redhat.com>

	* remote-adapt.c (adapt_insert_breakpoint, adapt_remove_breakpoint):
	Protoize.
	* remote-array.c (write_monitor, array_xfer_memory): Protoize.

2000-09-29  Kevin Buettner  <kevinb@redhat.com>

	* ppc-linux-nat.c (supply_gregset, fill_gregset): Change type
	of first argument from gregset_t to gdb_gregset_t in order
	to match declarations in gregset.h.
	(supply_fpregset, fill_fpregset): Change type of first argument
	from fpregset_t to gdb_fpregset_t in order to match declarations
	in gregset.h.

2000-09-29  Kevin Buettner  <kevinb@redhat.com>

	* procfs.c (proc_iterate_over_mappings, proc_iterate_over_threads,
	procfs_xfer_memory): Protoize.
	* ptx4-nat.c (proc_iterate_over_mappings): Protoize.

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

	* sol-thread.c (ps_pdmodel):  Return PR_MODEL_UNKNOWN instead of
	PS_ERR if exec_bfd is not yet open.

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

	* target.c (target_signal_from_host, do_target_signal_to_host):
	Add support for Solaris realtime signals.

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

	* os9kread.c (os9k_symfile_read, os9k_end_psymtab): Protoize.
	* osfsolib.c (find_solib): Protoize.

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

	* ns32knbsd-nat.c (fetch_core_registers): Protoize.
	* ocd.c (ocd_xfer_memory): Protoize.

2000-09-25  Andrew Cagney  <ac131313@cygnus.com>

	* MAINTAINERS: Add Mark Kettenis to ``Blanket Write Privs'' list.

2000-09-24  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* rs6000-tdep.c (rs6000_pop_frame):  Use PC_IN_CALL_DUMMY to test
	for call dummy instead of accessing stop_stack_dummy, which does
	not work if we `return' from a stop in a call dummy.
	(rs6000_gdbarch_init):  Use generic_save_dummy_frame_tos for
	dummy_frame_tos function to make PC_IN_CALL_DUMMY work.

2000-09-23  Kevin Buettner  <kevinb@redhat.com>

	* mdebugread.c (mdebug_next_symbol_text): Protoize.
	* monitor.c (monitor_xfer_memory): Protoize.

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

	* i386-linux-nat.c (OLD_CANNOT_FETCH_REGISTER,
	OLD_CANNOT_FETCH_REGISTER):  New definitions for accessible registers
	when accessing the registers via the U area.
	(fetch_register, store_register):  Use them.
	(cannot_fetch_register, cannot_store_register):  New functions,
	all registers should be accessible if we have GETREGS support.
	* config/i386/nm-linux.h:  Use cannot_fetch/store_register for
	CANNOT_FETCH/STORE_REGISTER definitions.

2000-09-06  Fred Fish  <fnf@cygnus.com>

	* infttrace.c (update_thread_state_after_attach): Pass address
	of ttstate_t object, not the object itself.

2000-09-18  Mark Kettenis  <kettenis@gnu.org>

	* lin-lwp.c (stop_wait_callback): Remove bogus assertions in the
	code that deals with exiting/signalled threads.  Replace with
	code similar to what's done in lin_lwp_wait.

2000-09-17  Kevin Buettner  <kevinb@redhat.com>

	* ppc-linux-nat.c (fill_gregset, fill_fpregset): New functions.
	* config/powerpc/linux.mh (NATDEPFILES): Remove linux-thread.o.
	Add proc-service.o, thread-db.o, and lin-lwp.o.
	(LOADLIBES): Define.
	* config/powerpc/nm-linux.h (ATTACH_DETACH, SVR4_SHARED_LIBS):
	Remove defines which are already present in ../nm-linux.h.
	(solib.h): Don't include this file; it's already included by
	../nm-linux.h.
	(PREPARE_TO_PROCEED, GET_THREAD_SIGNALS, ATTACH_LWP): Define
	to use the following lin-lwp.c functions...
	(lin_lwp_prepare_to_proceed, lin_thread_get_thread_signals,
	lin_lwp_attach_lwp): Declare.

2000-09-17  Kevin Buettner  <kevinb@redhat.com>

	* m88k-nat.c (fetch_inferior_registers): Protoize.
	* m88k-tdep.c (m88k_skip_prologue): Protoize.

2000-09-15  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* varobj.c (varobj_set_value): Call wrapped version of
	parse_exp_1() to avoid longjumps.

2000-09-15  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* remote.c (putpkt_binary): Call read_frame, not getpkt. Log message.
	(read_frame): Do not call error() on communication error when
	reading checksum, but return failure instead and log message.

2000-09-15  Fernando Nasser  <fnasser@cygnus.com>

	* ser-unix.c (do_unix_readchar): Prevent infinite read wait to be
	interrupted after 32K seconds.

2000-09-15  Kevin Buettner  <kevinb@redhat.com>

	* language.c (show_case_command, set_case_command): Protoize.
	* m3-nat.c (m3_xfer_memory, fetch_thread_info): Protoize.

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

	* lin-thread.c (threadlist_iter, get_lwp_from_thread_id,
	thread_db_xfer_memory): Protoize.
	* linux-thread.c (iterate_active_threads): Protoize.

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

	* objfiles.c (objfile_relocate): Don't assume that offsets
	associated with one of SECT_OFF_TEXT, SECT_OFF_DATA, or
	SECT_OFF_BSS will be adequate for relocating all of the
	sections in an objfile.

2000-09-12  Fernando Nasser  <fnasser@cygnus.com>

	* remote-rdi.c (arm_rdi_open): Fix typo in error message.

Wed Sep 13 03:08:32 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote-mips.c (mips_expect, mips_getstring, mips_send_packet,
 	mips_send_packet, pmon_insert_breakpoint, send_srec,
 	pmon_check_ack, pmon_check_entry_address,
 	_initialize_remote_mips): Replace the magic two seconds with
 	``remote_timeout''.
	(pmon_check_entry_address, pmon_check_total): New functions.  Use
 	``remote_timeout'' instead of magic two seconds.
	(pmon_end_download): Rewrite.  Use pmon_check_entry_address and
 	pmon_check_total.

2000-09-12  Alexandre Oliva  <aoliva@redhat.com>

	* MAINTAINERS: Added myself.

2000-09-11  Alexandre Oliva  <aoliva@redhat.com>

	* acinclude.m4 (CY_GNU_GETTEXT): Add dummy definition, so that the
	one brought in by ../bfd/acinclude.m4 prevails.
	* aclocal.m4, configure: Rebuilt.

2000-09-11  Kevin Buettner  <kevinb@redhat.com>

	* configure.in (HAVE_STRUCT_LINK_MAP32): Change test to use
	AC_TRY_COMPILE instead of AC_TRY_RUN.
	* configure: Regenerate.

2000-09-11  Kevin Buettner  <kevinb@redhat.com>

	* irix4-nat.c (fetch_core_registers): Protoize.
	* irix5-nat.c (fetch_core_registers, find_solib): Protoize.

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

	* lin-lwp.c (normal_mask, blocked_mask): New variables.
	(lin_lwp_wait): Block SIGCHLD here if it isn't already blocked.
	(lin_lwp_mourn_inferior): Restore the origional signal mask, and
	reset the mask of blocked signals.
	(_initialize_lin_lwp): Don't block SIGCHLD here, but do initialize
	suspend_mask and blocked_mask.  This makes us pass
	gdb.base/sigall.exp for Linux/x86 now.
	(lin_thread_get_thread_signals): Treat the LinuxThreads "cancel"
	signal similarly to SIGCHLD in the generic code.  Avoids GDB being
	terminated by a Real-time signal.

2000-09-08  Kevin Buettner  <kevinb@redhat.com>

	* infptrace.c, infttrace.c (child_xfer_memory): Protoize.

2000-09-07  J.T. Conklin  <jtc@redback.com>

	* config/i386/nbsd.mt (TDEPFILES): Add i386nbsd-tdep.o.
	* i386nbsd-nat.c (i386nbsd_use_struct_convention): Moved from here.
	* i386nbsd-tdep.c (i386nbsd_use_struct_convention): To here.
	* i386nbsd-tdep.c: New file.

2000-09-07  Kevin Buettner  <kevinb@redhat.com>

	* i386mach-nat.c (fetch_inferior_registers, fetch_core_registers):
	Protoize.
	* i960-tdep.c (i960_skip_prologue, leafproc_return, mem): Protoize.

Thu Sep  7 21:59:23 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* aclocal.m4: Regenerate.
	* config.in, configure: Regenerate.

Wed Sep  6 23:15:43 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote-rdi.c (voiddummy): Update function signature to match
 	struct Dbg_HostosInterface's reset method.
	* remote-rdp.c (rdp_step): Fix handle parameter to
 	remote_rdp_insert_breakpoint and remote_rdp_remove_breakpoint.

	* arm-tdep.c (SIGCONTEXT_REGISTER_ADDRESS_P): Provide default
 	definition.
	(arm_init_extra_frame_info): Use.

2000-09-06  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (m68hc11_store_return_value): Store the value
	in D and X if it's larger than 16-bits.
	(m68hc11_extract_return_value): Fix extractions for 1 and 3 bytes
	return.
	(m68hc11_push_return_address): Use CALL_DUMMY_ADDRESS for the
	return address.
	(m68hc11_use_struct_convention): Check for struct and union.
	(m68hc11_return_value_on_stack): Use the struct convention.
	(m68hc11_call_dummy_address): Use the entry point address.
	(m68hc11_push_arguments): Fix alignment and padding.
	(m68hc11_stack_align): New function.
	(m68hc11_gdbarch_init): Register it.

2000-09-06  Scott Bambrough <scottb@netwinder.org>

	* arm-linux-tdep.c (arm_linux_skip_solib_resolver):
	Removed debug print statement.  Removed arm_pc_is_thumb prototype.
	* config/arm/tm-arm.h (arm_pc_is_thumb, arm_pc_is_thumb_dummy):
	Move prototypes here from tm-embed.h.
	* config/arm/tm-embed.h (arm_pc_is_thumb, arm_pc_is_thumb_dummy):
	Remove prototypes.  Moved to tm-arm.h.

2000-09-06  H.J. Lu  <hjl@gnu.org>

	* TODO: Add hardware watchpoint problems on x86 OSes for 5.1.

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

	* ia64-tdep.c (examine_prologue): Add rotating register rename
	support for the general registers.
	(ia64_get_saved_register): Add rotating register rename support
	for the predicate registers and the floating-point registers.

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

	* config/arm/tm-linux.h (arm_linux_sigcontext_register_address,
	arm_linux_in_sigtramp): Declare.
	(IN_SIGTRAMP, SIGCONTEXT_REGISTER_ADDRESS): Define.
	* arm-tdep.c (SIGCONTEXT_REGISTER_ADDRESS): Define to be 0
	if not already defined by tm.h.
	(arm_scan_prologue): Don't assume that the prologue instructions
	will be in a contiguous clump.
	(arm_init_extra_frame_info): Add support for sigtramp frames.
	(arm_pc_is_thumb, arm_pc_is_thumb_dummy): Change type of
	`memaddr' from bfd_vma to CORE_ADDR.
	* arm-linux-tdep.c (gdbcore.h, frame.h): Include.
	(arm_pc_is_thumb): Declare.
	(arm_linux_skip_solib_resolver): Fix printf() statement.  [Which
	shouldn't be there anyway.]
	(ARM_LINUX_SIGRETURN_INSTR, ARM_LINUX_RT_SIGRETURN_INSTR): New
	defines.
	(arm_linux_in_sigtramp, arm_linux_sigcontext_register_address):
	New functions.

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

	* i386aix-nat.c (fetch_core_registers): Protoize.
	* hpux-thread.c (hpux_thread_xfer_memory): Protoize.

2000-09-06  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (m68hc11_frame_chain): Check for pc in call dummy.
	(m68hc11_guess_from_prologue): 'des' instruction to allocate 1 byte
	on the stack can appear in the prologue.
	
2000-09-05  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* sol-thread.c (ps_pdmodel): Protect with an ifdef.

Mon Sep  4 16:21:31 2000  Andrew Cagney  <cagney@amy.cygnus.com>

	* gdbarch.sh: Use printf instead of echo.
 	(do_read): During read, pad ``::'' with spaces and then strip out
 	those spaces.  Avoid problems with IFS=:.

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

	* config/i386/nm-linux.h: Include <signal.h>.

2000-09-04 Pierre Muller <muller@ics.u-strasbg.fr>

	* c-typeprint.c (c_typedef_print): remove (replaced by 
	typedef_print in typeprint.c).
	* typeprint.c (typedef_print): new function. (old c_typedef_print
	function with pascal language support added).
	* value.h (c_printdef_print): removed.
	(typedef_print): declare.
	* symtab.c (print_symbol_info): call to c_typedef_print replaced
	by call to typedef_print.

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

	* config/i386/nm-linux.h (PREPARE_TO_PROCEED, ATTCH_LWP,
	GET_THREAD_SIGNALS): New defines.
	* config/i386/linux.mh (NATDEPFILES): Remove lin-thread.o and
	linux-threads.o.  Add proc-service.o, thread-db.o and lin-lwp.o.
	* proc-service.c: New file.
	* thread-db.c: New file.
	* lin-lwp.c: New file.

	* gdb_assert.h: New file.

	* gdb_thread_db.h [HAVE_THREAD_DB_H]: Include <thread_db.h>.
	[!HAVE_THREAD_DB_H]: Update from current glibc thread_db.h.  Deal
	with absence of <stdint.h> here.

	* gdb_proc_service.h: Add copyright notice.
	Protect against multiple inclusion.
	Add fix for broken prfpregset_t here.
	(struct ps_prochandle): Declare here.
	[HAVE_PROC_SERVICE_H]: Include <proc_service.h>.
	[!HAVE_PROC_SERVICE_H]: Include "gregset.h", define prgregset_t
	and prfpregset_t in terms of gdb_gregset_t and gdb_fpregset_t if
	necessary.
	* lin-thread.c: Unconditionally include "gdb_proc_service.h".
	Remove fix for broken prfpregset_t here.
	(struct ps_prochandle): Don't declare here.

	* MAINTAINERS: Add myself as threads co-maintainer.

2000-09-01  David Anderson  <davea@sgi.com>

	* arch-utils.c arch-utils.h blockframe.c fork-child.c:
	Corrected comment spelling dependant->dependent.
	* corelow.c (default_core_sniffer): Corrected comment 
	spelling.
	* cp-valprint.c (cp_print_value_fields): Corrected 
	comment spelling.
	* d10v-tdep.c dbxread.c: Corrected comment spelling 
	dependan->dependen.
	* defs.h: Corrected spelling, meant 64, not 32, in comment.
	* dst.h eval.c event-loop.c: Corrected comment spelling.
	* event-top.c gdb-events.sh: Corrected comment spelling.
	* gdbarch.c: Corrected comment spelling.
	* gdbarch.h gdbarch.sh: Corrected comment spelling,
	dependant->dependent.
	* gdbtypes.c gdbtypes.h: Corrected comment spelling.
	* infcmd.c infrun.c: Corrected comment spelling.
	* symfile.c symfile.h target.h: Corrected comment spelling,
	dependant->dependent.
	* tracepoint.h: Corrected comment spelling.

2000-09-01  Kevin Buettner  <kevinb@redhat.com>

	* hppa-tdep.c (record_text_segment_lowaddr): Protoize.
	* hppah-nat.c (child_xfer_memory): Protoize.

2000-09-01  Kevin Buettner  <kevinb@redhat.com>

	* symtab.c (decode_line_1):  Make sure leading character is
	actually a colon before skipping over leading colons in global
	namespace specification.

2000-09-01  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* regcache.c (reg_flush_command): New function.  Maintainer-mode
	command, flushes GDB's register cache, for testing purposes.

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

	* dcache.c (dcache_info): Output a cache line's state vector so it
 	lines up under the data vector.

	* dcache.c (dcache_read_line): New function.
	(dcache_peek_byte): Use it.
	(dcache_alloc): Return NULL if write of reclaimed cache line fails.
	(dcache_peek_byte, dcache_poke_byte): Return failure if
 	dcache_alloc() returns a NULL data block pointer.  
	(dcache_xfer_memory): Don't force writeback unless we were writing.

	* monitor.c (monitor_expect): Change places where immediate_quit
 	is set to 1 or 0 to increments and decrements respectively.  This
	allows such changes to nest properly.
	* ocd.c (ocd_start_remote): Likewise.
	* remote-adapt.c (expect): Likewise.
	* remote-array.c (expect): Likewise.
	* remote-eb.c (expect): Likewise.
	* remote-e7000.c (e7000_start_remote): Likewise.
	* remote-mips.c (mips_expect_timeout, mips_getstring): Likewise.
	* remote-nrom.c (expect): Likewise.
	* remote-os9k.c (expect): Likewise.
	* remote-sds.c (sds_start_remote): Likewise.
	* remote-st.c (expect): Likewise.
	* remote-utils.c (sr_expect): Likewise.
	* remote.c (remote_start_remote): Likewise.
	* tracepoint.c (read_actions): Likewise.

	* remote-mips.c (mips_getstring): Balance changes to immediate_quit.

2000-08-31  David Anderson  <davea@sgi.com>

	* MAINTAINERS: Add myself to write-after-approval list.

2000-08-30  Kevin Buettner  <kevinb@redhat.com>

	* gnu-nat.c (gnu_xfer_memory): Protoize.
	* hp-psymtab-read.c (scan_procs, hp_quick_traverse): Protoize.

2000-08-30  Kevin Buettner  <kevinb@redhat.com>

	* solib.c (solib_extract_address, LM_ADDR, LM_NEXT, LM_NAME,
	LM_ADDR, IGNORE_FIRST_LINK_MAP_ENTRY, first_link_map_member,
	open_symbol_file_object, current_sos): Rename
	bfd_elf_get_arch_size to bfd_get_arch_size().
	* sol-thread.c (rw_common, ps_pdmodel): Likewise.

2000-08-30  David Edelsohn  <dje@watson.ibm.com>

	Patch applied by Kevin Buettner <kevinb@redhat.com>:

	* rs6000-nat.c (xcoff_relocate_symtab): Pass correct size
	to xrealloc().

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

	* valops.c (value_cast): Indentation fix-up.
	* acconfig.h (HAVE_PRGREGSET32_T, HAVE_PRFPREGSET32_T, 
	HAVE_STRUCT_LINK_MAP32): New configure macros.
	* config.in: Ditto.
	* configure.in: Test for the above new macros.
	* breakpoint.c: Update copyright date.
	* core-sol2.c: Include v9/sys/privregs.h directly to 
	work around a bug in Sun's Solaris 8 header files.
	(fetch_core_registers): Use the above new configure macros to
	handle cross-debugging of 32-bit core files on a 64-bit host.
	* sol-thread.c (ps_pdmodel) New function.
	(rw_common): For debugging of 32-bit apps on a 64-bit host, 
	truncate addresses to 32 bits.
	* solib.c (solib_extract_address): Functionize.  Make 32/64 aware.
	(LM_ADDR, LM_NEXT, LM_NAME): Ditto.
	(IGNORE_FIRST_LINK_MAP): Ditto.
	(first_link_map_member): Make 32/64 aware.
	(open_symbol_file_object): Ditto.
	(current_sos): Ditto.

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

	* i386-linux-nat.c (i386_linux_skip_solib_resolver, 
	skip_hurd_resolver, find_minsym_and_objfile): Move these
	solib functions into i386-linux-tdep.c for cross debugging.
	* i386-linux-tdep.c: Receive the above functions.

2000-08-29  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (stack_correction): New variable for stack offset
	correction (1 for 68hc11, 0 for 68hc12).
	(m68hc11_saved_pc_after_call): Use it.
	(m68hc11_frame_chain): Likewise.
	(m68hc11_frame_init_saved_regs): Likewise.
	(m68hc11_init_extra_frame_info): Likewise.
	(m68hc11_push_return_address): Likewise.
	(m68hc11_push_arguments): Struct address must be corrected by
	applying the stack_correction offset.
	(m68hc11_store_struct_return): Likewise.

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

	* gdbserver/utils.c (error, fatal): Protoize.

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

	* i386-linux-nat.c (fetch_inferior_registers): Move call to
	dummy_sse_values ...
	(supply_fpregset): ... here.

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

	* pa64solib.c (pa64_solib_load_symbols): Don't use ANOFFSET as an
 	lvalue.
	* xcoffread.c (xcoff_symfile_offsets): Ditto
	* somsolib.c (som_solib_section_offsets): Ditto.
	* somread.c (som_symfile_offsets): Ditto.
	* rs6000-nat.c (vmap_symtab): Ditto.
	* remote-vx.c (vx_add_symbols): Ditto.
	* remote-os9k.c (rombug_wait): Ditto.

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

	* gregset.h: Protect against multiple inclusion.  Remove some
	redundant spaces.

Sun Aug 27 00:00:04 2000  Christopher Faylor <cgf@cygnus.com>

	* win32-nat.c (dll_symbol_command): Tack a .dll on the end of a
	supplied argument if it is missing an extension.

2000-08-24  Egor Duda <deo@logos-m.ru>

	* corelow.c: Define O_BINARY if it isn't defined.
	(core_open): Open core file in binary mode.
	* config/i386/tm-cygwin.h (child_clear_solibs): Rename from
	child_clear_solib.
	* config/i386/cygwin.mh: Add dependency from corelow.o.
	* win32-nat.c (register_loaded_dll): New function.  Add dll to the list
	of currently loaded dlls.
	(handle_load_dll): Use register_loaded_dll.
	(child_solib_add): Distinguish between active process and core targets.
	(solib_symbols_add): Load symbols from loaded dll.
	(core_dll_symbols_add): New function.  Load symbols from dll referenced
	in core.
	(core_section_load_dll_symbols): New function.
	(dll_code_sections_add): New function.
	(map_single_dll_code_section): New function.
	(fetch_elf_core_registers): New function.
	(_initialize_core_win32): New function.

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

	* gdbserver/gdbreplay.c (main): Protoize.
	* gdbserver/server.c (start_inferior, main): Protoize.

2000-08-26  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (m68hc11_register_names): Update name of registers.
	(m68hc11_get_register_info): New function.
	(m68hc11_initialize_register_info): New function to get addresses
	of soft registers.
	(m68hc11_which_soft_register): New function.
	(m68hc11_fetch_pseudo_register, m68hc11_store_pseudo_register):
	New functions to translate read/write of soft registers into a
	memory read/write.
	(m68hc11_guess_from_prologue): Initialize soft register addresses.
	Use the soft register addresses to guess the prologue.
	(m68hc11_gdbarch_init): Install the pseudo registers.

	* m68hc11-tdep.c (m68hc11_register_name, m68hc11_breakpoint_from_pc,
	m68hc11_saved_pc_after_call, m68hc11_frame_saved_pc,
	m68hc11_frame_args_address, m68hc11_frame_locals_address,
	m68hc11_guess_from_prologue, m68hc11_push_arguments,
	m68hc11_call_dummy_address, m68hc11_call_dymmy_address,
	m68hc11_register_virtual_type, m68hc11_store_struct_return,
	m68hc11_store_return_value, m68hc11_extract_return_value,
	m68hc11_use_struct_convention, m68hc11_return_value_on_stack,
	m68hc11_extract_struct_value_address, m68hc11_push_return_address,
	m68hc11_register_byte, m68hc11_register_raw_size,
	m68hc11_gdbarch_init): New functions for multi-arch support.
	(m68hc11_not_yet): Remove.

Fri Aug 25 16:57:05 2000  David Taylor  <taylor@texas.cygnus.com>

	* regcache.c (register_changed): New function.
	* value.h: Declare it.
	
Fri Aug 25 12:11:21 2000  David Taylor  <taylor@texas.cygnus.com>

	* symtab.c (search_symbols): Fix off by one error in index for
 	initializing variables ourtype, ourtype2, ourtype3, and ourtype4.
	(symtab_symbol_info): fix similar off by one error.
	
Fri Aug 25 12:03:15 2000  David Taylor  <taylor@texas.cygnus.com>

	* gdbarch.sh (TARGET_ADDR_BIT): New macro for the number
	of bits in gdb's representation of a target address.
	* gdbarch.c, gdbarch.h: Regenerated.
	* gdbtypes.c (build_gdbtypes): Use TARGET_ADDR_BIT instead of
 	TARGET_PTR_BIT when initializing builtin_type_CORE_ADDR.
	* printcmd.c (print_address_numeric): Use TARGET_ADDR_BIT instead
 	of TARGET_PTR_BIT, because we're printing an address, not a pointer.

2000-08-25  Pierre Muller  <muller@ics.u-strasbg.fr>

       * Makefile.in: add rules to compile and link pascal specific files.
       * config/djgpp/fnchange.lst: add substitution for p-exp.tab.c.

2000-08-20  Michael Chastain  <chastain@redhat.com>

        * remote.c (read_frame): Handle SERIAL_TIMEOUT while reading
 	checksum.

2000-08-23  Kevin Buettner  <kevinb@redhat.com>

	* dstread.c (dst_symfile_offsets): Protoize.
	* fork-child.c (fork_inferior): Protoize.

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

	* dbxread (dbx_symfile_read, process_later): Protoize.
	* dsrec.c (load_srec): Protoize.

2000-08-18  Andrew Cagney  <cagney@ops1.cygnus.com>

	* mips-tdep.c (mips_gdbarch_init): Check arches->gdbarch and not
	current_gdbarch for a match.

2000-08-18  J.T. Conklin  <jtc@redback.com>

	* MAINTAINERS: Add myself as dcache.c maintainer.

	* remote-nindy.c (nindy_load): Invalidate dcache.

	* dcache.c (dcache_invd): Renamed from dcache_flush.  The term
 	flush with respect to caches usually implies that data will be 
	written to memory.
	(dcache_init, dcache_xfer_memory): Updated.
	* monitor.c (flush_monitor_dcache, monitor_resume, monitor_load): 
	Updated.
	* ocd.c (ocd_open, ocd_resume, bdm_reset_command): Updated.
	* remote-bug.c (bug_load, bug_resume): Updated.
	* remote-nindy.c (nindy_open, nindy_resume): Updated.
	* remote-sds.c (sds_open, sds_resume): Updated.
	* remote-utils.c (gr_open): Updated.
	* remote.c (remote_open_1, remote_resume, remote_async_resume,
	remote_cisco_open): Updated.
	* wince.c (child_create_inferior, child_resume): Updated.

	* monitor.c (monitor_open): Free dcache before creating a new one.
	* dcache.c (dcache_free): New function.
	* dcache.h (dcache_free): New prototype.

2000-08-18  Andrew Cagney  <cagney@ops1.cygnus.com>

	* remote-array.c (array_fetch_register): Pass dummy parameter to
	array_fetch_registers.
	(array_store_register): Ditto.

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

	* value.h (struct value) <lazy>: Add a comment about its use for
        watchpoints.

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

	* cxux-nat.c (fetch_inferior_registers): Protoize.
	* d10v-tdep.c (d10v_frame_chain_valid, d10v_extract_return_value):
	Protoize.
	* d30v-tdep.c (d30v_frame_chain_valid, d30v_extract_return_value):
	Protoize.

Fri Aug 11 19:00:51 2000  Andrew Cagney  <cagney@makita.cygnus.com>

	* config/mn10300/tm-mn10300.h (REGISTER_SIZE,
 	MAX_REGISTER_RAW_SIZE, REGISTER_VIRTUAL_TYPE, REGISTER_BYTE,
 	REGISTER_VIRTUAL_SIZE, REGISTER_RAW_SIZE): Disable.
	* mn10300-tdep.c (mn10300_do_registers_info,
 	mn10300_print_register): New functions.  Pretty print registers.
	(mn10300_register_virtual_type, mn10300_register_byte,
	mn10300_register_virtual_size, mn10300_register_raw_size): New
 	functions.
 	(mn10300_gdbarch_init): Update.

	* mn10300-tdep.c (mn10300_gdbarch_init): Check for mn10300 variant
	and not mips variant in the info struct.

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

	* i386-linux-nat.c [! HAVE_PTRACE_GETFPXREGS] (fetch_fpxregs,
	store_fpxregs): Return 0.

2000-08-11  Andrew Cagney  <cagney@lulu.cygnus.com>

	* regcache.c (GET_SAVED_REGISTER): Restore definition.  Was lost
	as part of 2000-08-10 Andrew Cagney <cagney@ops1.cygnus.com>.

2000-08-11  J.T. Conklin  <jtc@redback.com>

	* dcache.c (dcache_info): Don't print cache state if last_cache 
	is NULL.

2000-08-10  Andrew Cagney  <cagney@ops1.cygnus.com>

	* config/mn10300/tm-mn10300.h, mn10300-tdep.c
 	(mn10300_push_arguments): Fix function signature to match gdbarch
 	vector.
	* config/mn10300/tm-mn10300.h (REGISTER_NAME): Delete.
	* mn10300-tdep.c (struct gdbarch_tdep): Define.
	(mn10300_generic_register_names, am33_register_names): Convert to
	functions.
	(set_machine_hook): Delete.
	(register_name): New function.
	(mn10300_register_name): Delete.
	(mn10300_dump_tdep, mn10300_gdbarch_init): New functions.
	(_initialize_mn10300_tdep): Call register_gdbarch_init instead of
	specify_exec_file_hook.
	(AM33_MODE): Define.
	(set_movm_offsets): Update.
	
2000-08-10  Mark Kettenis  <kettenis@gnu.org>

	Adapt support for SSE registers in Linux/x86 for Linux 2.4.
	* i386-linux-nat.c: Various doc fixes.  Include "i387-nat.h".
	(GETFPXREGS_SUPPLIES): Renamed from GETXFPREGS_SUPPLIES.
	(have_ptrace_getfpxregs): Renamed from have_ptrace_getxfpregs.
	(convert_to_gregset): Removed.  Moved logic to ...
	(fill_gregset): ... here.  Simplified function.
	(fetch_regs): Use perror_with_name for error reporting.
	(store_regs): Add `regno' parameter.  Use perror_with_name for
	error reporting.  Call fill_gregset instead of convert_to_gregset.
	(FPREG_ADDR): Remove.
	(supply_fpregset): Implement by calling i387_supply_fsave.
	(convert_to_fpregset): Remove.
	(fill_fpregset): Implement by calling i387_fill_fsave.
	(fetch_fpregs): Use perror_with_name fro error reporting.
	(store_fpregs) Add `regno' parameter.  Use perror_with_name fro
	error reporting.  Call fill_fpregset instead of
	convert_to_fpregset.
	(supply_xfpregset, convert_to_xfpregset): Removed.
	(supply_fpxregset, fill_fpxregset): New functions.
	(fetch_fpxregs): Renamed from fetch_xfpregs.  Use perror_with_name
	for error reporting.  Call supply_fpxregset instead of
	supply_xfpregset.
	(store_xfpregs): Removed.
	(store_fpxregs): New function.
	(fetch_inferior_registers): Adjust for xfp -> fpx change.  Tweak
	message in call to internal_error.
	(store_inferior_registers): Adjust for xfp ->fpx change.  Pass
	REGNO to store_regs, store_fpregs and store_fpxregs.
	(fetch_core_registers): Adjust for xfp -> fpx change.
	* acconfig.h (HAVE_PTRACE_GETFPXREGS): Renamed from
	HAVE_PTRACE_GETXFPREGS.
	* config.in: Regenerated.
	* configure.in: Replace check for PTRACE_GETXFPREGS with check for
	PTRACE_GETFPXREGS.  Remove comment about Cygnus SSE extensions.
	* configure: Regenerated.
	* config/i386/linux.mh (NATDEPFILES): Add i387-nat.o.
	* config/i386/tm-linux.h: Base definition of HAVE_SSE_REGS on
	HAVE_PTRACE_GETFPXREGS instead of HAVE_PTRACE_GETXFPREGS.

2000-08-10  Andrew Cagney  <cagney@ops1.cygnus.com>

	* regcache.c (TARGET_WRITE_PC, TARGET_READ_PC, TARGET_READ_FP,
	TARGET_WRITE_FP, TARGET_READ_SP, TARGET_WRITE_SP): Move
	initialization from here.
	* gdbarch.sh: To here.
	* gdbarch.h, gdbarch.c: Regenerate.

Thu Aug 10 18:58:04 2000  Andrew Cagney  <cagney@makita.cygnus.com>

	* defs.h (TARGET_BFD_VMA_BIT, TARGET_SHORT_BIT, TARGET_INT_BIT,
 	TARGET_LONG_BIT, TARGET_LONG_LONG_BIT, TARGET_FLOAT_BIT,
 	TARGET_DOUBLE_BIT, TARGET_LONG_DOUBLE_BIT, TARGET_PTR_BIT): Move
 	non- multi-arch handling from here.
	* gdbarch.sh: To here. Update printf gdbarch_update_p.  Make more
 	portable.
	* gdbarch.h, gdbarch.c: Regenerate.
	
2000-08-10  Andrew Cagney  <cagney@ops1.cygnus.com>

	* partial-stab.h (DBX_READ): Eliminate redundant check for null
	``pst''.  Also fixes GCC warning.

2000-08-10  Andrew Cagney  <cagney@ops1.cygnus.com>

	* rs6000-nat.c (set_host_arch): Check value returned by
	gdbarch_update_p.
	* gdbarch.sh (gdbarch_update_p): Rename gdbarch_update.
	* gdbarch.h, gdbarch.c: Regenerate
	* arch-utils.c (set_gdbarch_from_file,
 	initialize_current_architecture, set_endian): Update.

2000-08-10  Jimmy Guo  <guo@cup.hp.com>

	* c-lang.c: Set case sensitivity on for c_language_defn,
	cplus_language_defn, and asm_language_defn.
	* ch-lang.c: Set case sensitivity on for chill_language_defn.
	* f-lang.c: Set case sensivitity off for f_language_defn.
	* jv-lang.c: Set case sensitivity on for java_language_defn.
	* language.h: Add enum case_mode, case_sensitivity.
	* language.c: Define case_mode, case_sensitivity.  Set case
	sensitivity on for unknown_language_defn, auto_language_defn,
	and local_language_defn.
	(show_case_command,set_case_command,set_case_str): New static func.
	(set_type_range_case): New static func, replaces set_type_range ().
	(set_language_command,set_type_command,set_range_command,set_language):
	Call set_type_range_case ().
	(language_info): Print case sensitivity setting.
	(_initialize_language): Add set/show commands for 'case-sensitive'.
	Set default case mode 'auto'.  Set default language 'auto'.
	* m2-lang.c: Set case sensitivity on for m2_language_defn.
	* p-lang.c: Set case sensitivity on for pascal_language_defn.
	* scm-lang.c: Set case sensitivity off for scm_language_defn.
	* symtab.c (lookup_symbol): Downcase symbol name if case sensivitity
	is off.

2000-08-10  Jimmy Guo  <guo@cup.hp.com>

	* MAINTAINERS: Change my contact email for hp tests maintainership.

Thu Aug 10 15:28:17 2000  Andrew Cagney  <cagney@ryobi.cygnus.com>

	* sparc-tdep.c (sparc_init_extra_frame_info): Fix number of
 	arguments to fetch_instruction.

2000-08-10  Kazu Hirata  <kazu@hxi.com>

	* hppa_tdep.c: Fix a comment typo.
	* gdba.el: Likewise.

2000-08-10  Tom Tromey  <tromey@cygnus.com>

	* MAINTAINERS: Added myself with write-after-approval access.

2000-08-10  J.T. Conklin  <jtc@redback.com>

	* monitor.c (monitor_open): If a dcache has already been created,
	invalidate it rather than creating another.
	* ocd.c (ocd_open): Likewise.
	* remote-nindy.c (nindy_open): Likewise.
	* remote-sds.c (sds_open): Likewise.
	* remote-utils.c (gr_open): Likewise.
	* remote.c (remote_open_1, remote_cisco_open): Likewise.

	* dcache.c (dcache_alloc): Changed to take address of line as an
 	argument, and to invalidate cache line before returning.
	(dcache_peek_byte): Updated.
	(dcache_poke_byte): Updated.

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

	From Greg McGary <greg@mcgary.org>:
	* partial-stab.h: Don't crash if pst is null. 

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

	* i387-nat.h (i387_supply_fsave, i387_fill_fsave): Make extern.
	(i387_supply_fxsave, i387_fill_fxsave): New prototypes.
	* i387-nat.c (i387_supply_fsave): Declare `val' as `unsigned int'.
	(fxsave_offset): New variable.
	(FXSAVE_ADDR): New macro.
	(i387_supply_fxsave, i387_fill_fxsave, i387_tag): New functions.

2000-08-08  Tom Tromey  <tromey@cygnus.com>

	* jv-valprint.c (java_value_print): Only print non-null Strings.

2000-08-09  Kevin Buettner  <kevinb@redhat.com>

	* core-sol2.c (fetch_core_registers): Protoize; add prefatory
	comment.
	* corefile.c (specify_exec_file_hook, generic_search): Protoize.

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

	* blockframe.c (sigtramp_saved_pc): Use dynamic allocation, 
	since TARGET_PTR_BIT is no longer a constant (MULTI_ARCH).
	* irix4-nat.c (get_longjmp_target): Ditto.
	* irix5-nat.c (get_longjmp_target): Ditto.
	* jv-valprint.c (java_value_print): Ditto.
	* m3-nat.c (get_cprocs):            Ditto.
	* m68k-tdep.c (get_longjmp_target): Ditto.
	* mips-nat.c  (get_longjmp_target): Ditto.
	* mipsv4-nat.c(get_longjmp_target): Ditto.
	* pa64solib.c (read_dynamic_info):  Ditto.
	* solib.c (elf_locate_base):        Ditto.

Mon Aug  7 23:21:22 2000  David Taylor  <taylor@texas.cygnus.com>

	* TODO: remove build_parse entry.

2000-08-07  Kevin Buettner  <kevinb@redhat.com>

	* command.c (add_cmd, add_abbrev_cmd, add_prefix_cmd, 
	add_abbrev_prefix_cmd): Protoize.

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

	* objfiles.h (SECT_OFF_BSS): Don't detect invalid sect_index_bss
 	here, let the users of the macro do it.
	* symtab.h (ANOFFSET): Detect here if the section index is not
 	initialized.
	* xcoffread.c (find_targ_sec): Don't treat .bss as special,
 	because some objfiles may not have that section at all.
	* coffread.c (cs_to_section): Ditto.
	* elfread.c (elf_symtab_read): Detect an uninitialized index
 	value.
	(elfstab_offset_sections): The macro ANOFFSET cannot be used as an
 	lvalue anymore.
	* remote.c (get_offsets, remote_cisco_objfile_relocate): Don't use
 	ANOFFSET as an lvalue.
	* objfiles.c (objfile_relocate, objfile_relocate): Don't use
 	ANOFFSET as an lvalue.
	* symfile.c (default_symfile_offsets): Don't use ANOFFSET as an
 	lvalue.

Mon Aug  7 10:24:30 2000  David Taylor  <taylor@texas.cygnus.com>

	* parse.c (build_parse): don't write off the end of the std_regs
 	array.

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

	* solib.c (bfd_lookup_symbol): Fall back on the dynamic symbol
	table if the symbol couldn't be found in the normal symbol table
	(i.e. if the shared object in question was stripped).

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

	* ch-exp.c (parse_opt_name_string): Protoize.  [Thanks to Eli
	Zaretskii for the prefatory comment.]
	* core-regset.c (fetch_core_registers): Protoize; revise
	comment.

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

	* win32-nat.c: Perform various gcc warning cleanups.
	(safe_symbol_file_add_cleanup): Reset stdout to saved stdout, not
	stderr.
	(dll_symbol_command): Pass OBJF_USERLOADED to safe_symbol_file_add.
	(get_child_debug_event): Always reset last_sig.  Always reset inferior
	pid appropriately.
	(do_initial_child_stuff): New function.  Called when attaching or
	starting a new inferior process.
	(child_attach): Use do_initial_child_stuff.
	(child_create_inferior): Ditto.
	* config/i386/cygwin.mh (NAT_FILE): Set to modern location.
	* config/i386/tm-cygwin.h: Define ATTACH_NO_WAIT.

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

	* go32-nat.c: (go32_wait): If child_cwd[] is empty, initialize
	it to GDB's current directory.
	(go32_create_inferior, init_go32_ops): Initialize child_cwd[] to
	an empty string, to signal an uninitialized value.
	From Robert Hoehne <robert.hoehne@gmx.net>.

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

	* symtab.h (fixup_psymbol_section): Declare.
	* symtab.c (fixup_psymbol_section): Make extern.
	(fixup_section): Fix up section as well as bfd_section.
	* objfiles.c (objfile_relocate): Call fixup_symbol_section
	or fixup_psymbol_section before attempting to access
	the SYMBOL_SECTION component of a symbol or partial symbol.

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

	* minsyms.c (build_minimal_symbol_hash_tables): New function.
	(compact_minimal_symbols): Don't construct hash tables here.
	(install_minimal_symbols): Instead, construct them here.
	(msymbols_sort): And rebuild them here too.

	* dwarf2read.c (struct comp_unit_head): Add fields offset_size
	and initial_length_size.  Change type of ``length'' field to long.
	(read_initial_length, read_offset): New functions.
	(dwarf2_build_psymtabs_easy): Call read_initial_length() instead
	of just reading 4 bytes.
	(read_comp_unit_head): Likewise; also, call read_offset() to
	fetch the offset instead of just reading 4 bytes.
	(dwarf_decode_lines): Likewise.
	(read_comp_unit_head): Fix internal error message so it
	accurately reflects the function in which the error occurred.
	(dwarf2_build_psymtabs_hard): Properly account for size of the
	initial length field in the section.
	(read_attribute, dwarf2_get_ref_die_offset): Add a case for
	DW_ORM_ref8.
	(dwarf2_build_psymtabs_hard, psymtabs_to_symtab_1): Don't
	assume that the .text section will have index 0 in the
	section_offsets table.

Fri Aug  4 18:00:41 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote.c (enum Z_packet_type): Define.
	(remote_protocol_Z): Change to an array of size NR_Z_PACKET_TYPES.
	(remote_insert_watchpoint): Check watchpoint type.
	(watchpoint_to_Z_packet): New function.
	(enum packet_result): Define.
	(packet_ok): New function. Return enum packet_result.
	(init_all_packet_configs): New function.
	(remote_open_1, remote_async_open_1, remote_cisco_open): Use
 	init_all_packet_configs instead of initializing remote_protocol_P,
 	remote_protocol_Z, remote_protocol_binary_download separatly.
	(remote_remove_hw_breakpoint, remote_insert_hw_breakpoint,
 	remote_remove_watchpoint, remote_insert_watchpoint): Use
 	watchpoint_to_Z_packet and packet_ok.  Remove #ifdef
 	TARGET_HAS_HARDWARE_WATCHPOINTS.
	(set_remote_protocol_Z_software_bp_packet_cmd,
 	show_remote_protocol_Z_software_bp_packet_cmd,
 	set_remote_protocol_Z_hardware_bp_packet_cmd,
 	show_remote_protocol_Z_hardware_bp_packet_cmd,
 	set_remote_protocol_Z_write_wp_packet_cmd,
 	show_remote_protocol_Z_write_wp_packet_cmd,
 	set_remote_protocol_Z_read_wp_packet_cmd,
 	show_remote_protocol_Z_read_wp_packet_cmd,
 	set_remote_protocol_Z_access_wp_packet_cmd,
 	show_remote_protocol_Z_access_wp_packet_cmd): New functions.
	(remote_Z_packet_packet_detect): New variable.
	(show_remote_protocol_Z_packet_cmd,
 	set_remote_protocol_Z_packet_cmd): Iterate over all ``Z'' packet
 	variants.
	(add_packet_config_cmd): Add argument legacy.  Change syntax to
 	``set/show remote FULL_NAME-packet ...'' command.  Add ``set/show
 	remote XXX-packet ...'' command using add_alias_cmd when legacy.
	(set_packet_config_cmd): Delete.
	(show_remote_cmd): New function.
  	
	* TODO: Update.

Fri Aug  4 14:05:57 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (infodir, SER_HARDWIRE): Fix merge problems from
 	2000-07-07 Michael Snyder <msnyder@cleaver.cygnus.com>.
	
Wed Aug  2 21:15:26 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh (EXTRA_STACK_ALIGNMENT_NEEDED): Add.
	* gdbarch.h, gdbarch.c: Regenerate.
	* valops.c (hand_function_call): Replace #ifndef
 	NO_EXTRA_ALIGNMENT_NEEDED with if EXTRA_STACK_ALIGNMENT_NEEDED.

	* d10v-tdep.c (d10v_gdbarch_init): Set
 	extra_stack_alignment_needed to 0.
	* config/d10v/tm-d10v.h (NO_EXTRA_ALIGNMENT_NEEDED): Delete.
	* config/pa/tm-hppa.h (EXTRA_STACK_ALIGNMENT_NEEDED): Replace
 	NO_EXTRA_ALIGNMENT_NEEDED.

2000-08-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* MAINTAINERS (m68hc11): Stephane Carrez is maintainer.

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

	* breakpoint.c (bpstat_alloc, map_catch_names,
	map_breakpoint_numbers): Protoize.

Thu Aug  3 15:02:23 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote-mips.c (mips_expect, mips_expect_timeout, common_open,
 	fputs_readable): Make string pointer arguments constant.

Thu Aug  3 18:39:10 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS, TODO: Tweeks.

Thu Aug  3 15:46:43 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO (5.1): Update.

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

 	* alpha-tdep.c (alpha_extract_return_value): Protoize.

2000-08-02  Jimmy Guo  <guo@hpcleara.cup.hp.com>

	* gdbarch.sh: Add print_p field for CALL_DUMMY_BREAKPINT_OFFSET
        to be printed only if CALL_DUMMY_BREAKPOINT_OFFSET_P.

	* gdbarch.c: Regenerated.

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

	* remote-vx.c (vx_add_symbols): Fix typos.

Wed Aug  2 19:15:34 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* arch-utils.h, gdbarch.c (default_register_sim_regno): New
 	function.
	* gdbarch.sh (REGISTER_SIM_REGNO): Add.
	* gdbarch.h, gdbarch.c: Regenerate.
	* remote-sim.c (REGISTER_SIM_REGNO): Delete definition.

	* config/d10v/tm-d10v.h (REGISTER_SIM_REGNO): Delete.
	* d10v-tdep.c (d10v_gdbarch_init): Update.
	(struct gdbarch_tdep): Delete member register_sim_regno.
	(d10v_register_sim_regno): Delete function.

Wed Aug  2 14:46:18 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote.c (enum packet_detect, packet_support_enums,
 	packet_support_auto, packet_enable, packet_disable): Delete.
	(show_packet_config_cmd, set_packet_config_cmd,
 	init_packet_config): Use add_set_auto_boolean_cmd.
	* TODO: Update.
	
Wed Aug  2 13:06:25 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote-udi.c (udi_xfer_inferior_memory, udi_files_info,
 	udi_kill): Update function signatures so that match target vector.
	* MAINTAINERS: Update.

Wed Aug  2 11:04:15 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Updates.

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

        * gdbarch.sh: Multiarch DO_REGISTERS_INFO macro.
        * gdbarch.h, gdbarch.c: Regenerate.
        * infcmd.c (do_registers_info): Make not static and
        unconditionalize.
        * inferior.h (do_registers_info): Export.

2000-08-01  Kazu Hirata  <kazu@hxi.com>

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

Tue Aug  1 21:02:42 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Update list of target maintainers.  List all
 	targets explicitly.
	(sh): Elena Zannoni is maintainer.
	(powerpc): Nick Duffek is a maintainer.
	
Tue Aug  1 17:45:12 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh: Parse and save comments in the function_list.  Print
 	them out as part of the header.  Convert all function definitions
 	to ISO-C form.
	* gdbarch.h, gdbarch.c: Regenerate.
	
Tue Aug  1 14:50:55 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* top.c (get_prompt_1), tracepoint.c (replace_comma): Update
 	function signatures so that they match catch_errors and
 	make_cleanup callbacks.

	* tracepoint.c (encode_actions): Fix arguments passed to
 	stringify_collection_list.

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

	* ppc-tdep.h: New file.
	* Makefile.in (ppc-linux-tdep.o, rs6000-tdep.o): Add ppc-tdep.h
	as a dependency.
	* ppc-linux-tdep.c, rs6000-tdep.c (ppc-tdep.h): Include.

	* ppc-linux-tdep.c (ppc_linux_at_sigtramp_return_path): Made static.

	* rs6000-tdep.c (elf-bfd.h): Include.
	(gdbarch_tdep): Add field osabi to this struct.
	(rs6000_init_extra_frame_info, rs6000_frame_init_saved_regs,
	rs6000_frameless_function_invocation, rs6000_frame_saved_pc,
	rs6000_frame_chain): No longer static.
	(process_note_abi_tag_sections, get_elfosabi): New static
	functions.
	(rs6000_gdbarch_init): Revised to accomodate ELF executables;
	also use Linux specific methods when the target is Linux.

	* config/powerpc/aix.mt, config/powerpc/cygwin.mt,
	config/powerpc/macos.mt, config/powerpc/nbsd.mt,
	config/powerpc/ppc-eabi.mt, config/powerpc/ppc-nw.mt,
	config/powerpc/ppc-sim.mt, config/powerpc/ppcle-eabi.mt,
	config/powerpc/ppcle-sim.mt, config/powerpc/solaris.mt,
	config/powerpc/vxworks.mt, config/rs6000/aix4.mt,
	config/rs6000/rs6000.mt, config/rs6000/rs6000lynx.mt
	(TDEPFILES): Add ppc-linux-tdep.o.

	* config/tm-linux.h (SIGCONTEXT_PC_OFFSET, FRAME_SAVED_PC,
	INIT_EXTRA_FRAME_INFO, FRAMELESS_FUNCTION_INVOCATION,
	FRAME_INIT_SAVED_REGS, FRAME_CHAIN, PUSH_ARGUMENTS,
	MEMORY_REMOVE_BREAKPOINT: Removed defines.
	(ppc_linux_frame_saved_pc, ppc_linux_init_extra_frame_info,
	ppc_linux_frameless_function_invocation,
	ppc_linux_frame_init_saved_regs, ppc_linux_frame_chain,
	ppc_sysv_abi_push_arguments, ppc_linux_memory_remove_breakpoint):
	Removed declarations.
	(CANNOT_FETCH_REGISTER, CANNOT_STORE_REGISTER): Disabled.

	* dink32-rom.c (dink32_regnames): Make array size implicit.

	* ppc-bdm.h (ppc-tdep.h): Include.

	* rs6000-tdep.c, ppc-linux-tdep.c, ppc-bdm.h, ppc-tdep.h
	(GP0_REGNUM, TOC_REGNUM, PS_REGNUM, CR_REGNUM, LR_REGNUM,
	CTR_REGNUM, XER_REGNUM, MQ_REGNUM): Add PPC_ prefix.

	From Nick Duffek:
	* ppc-tdep.h (ppc_linux_frame_saved_pc, rs6000_frame_saved_pc):
	Change return type to CORE_ADDR.
	* ppc-linux-tdep.c (ppc_linux_frame_saved_pc): Likewise.

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

        * sh-tdep.c (sh_push_arguments): Make header match prototype.

	* remote-e7000.c (e7000_start_remote): Use void *, not char * as
 	parameter to avoid compiler warning.
	(fetch_regs_from_dump): Call get_hex() with the correct number of
 	parameters.

2000-07-31  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/fnchange.lst: Add file mappings as per last weekly
	snapshot.

2000-07-29  Kevin Buettner  <kevinb@redhat.com>

	* a29k-tdep.c, a68v-nat.c, abug-rom.c, alpha-nat.c,
	alpha-tdep.c, annotate.c, arc-tdep.c, arch-utils.c, ax-gdb.c,
	ax-general.c, blockframe.c, breakpoint.c, buildsym.c,
	c-lang.c, c-typeprint.c, c-valprint.c, ch-exp.c, ch-lang.c,
	ch-typeprint.c, ch-valprint.c, cli-out.c, coff-solib.c,
	coffread.c, command.c, complaints.c, copying.c, core-aout.c,
	core-regset.c, core-sol2.c, corefile.c, corelow.c,
	cp-valprint.c, cpu32bug-rom.c, cxux-nat.c, d10v-tdep.c,
	d30v-tdep.c, dbug-rom.c, dbxread.c, dcache.c, delta68-nat.c,
	demangle.c, dink32-rom.c, dpx2-nat.c, dsrec.c, dstread.c,
	dve3900-rom.c, dwarf2read.c, dwarfread.c, elfread.c,
	environ.c, eval.c, event-top.c, exec.c, expprint.c, f-lang.c,
	f-typeprint.c, f-valprint.c, findvar.c, fork-child.c,
	fr30-tdep.c, gdbarch.c, gdbserver/gdbreplay.c,
	gdbserver/low-hppabsd.c, gdbserver/low-linux.c,
	gdbserver/low-lynx.c, gdbserver/low-nbsd.c,
	gdbserver/low-sim.c, gdbserver/low-sparc.c,
	gdbserver/low-sun3.c, gdbserver/remote-utils.c,
	gdbserver/utils.c, gdbtypes.c, gnu-nat.c, h8300-tdep.c,
	h8500-tdep.c, hp-psymtab-read.c, hp-symtab-read.c,
	hp300ux-nat.c, hppa-tdep.c, hppab-nat.c, hppah-nat.c,
	hppam3-nat.c, hpread.c, hpux-thread.c, i386-linux-nat.c,
	i386-stub.c, i386-tdep.c, i386aix-nat.c, i386b-nat.c,
	i386ly-tdep.c, i386m3-nat.c, i386mach-nat.c, i386nbsd-nat.c,
	i386v-nat.c, i386v4-nat.c, i387-tdep.c, i960-tdep.c,
	ia64-linux-nat.c, ia64-tdep.c, infcmd.c, inflow.c,
	infptrace.c, infrun.c, inftarg.c, infttrace.c, irix4-nat.c,
	irix5-nat.c, jv-lang.c, jv-typeprint.c, jv-valprint.c,
	kdb-start.c, kod-cisco.c, kod.c, language.c, lin-thread.c,
	linux-thread.c, lynx-nat.c, m2-lang.c, m2-typeprint.c,
	m2-valprint.c, m3-nat.c, m32r-rom.c, m32r-stub.c, m32r-tdep.c,
	m68hc11-tdep.c, m68k-stub.c, m68k-tdep.c, m68klinux-nat.c,
	m68knbsd-nat.c, m88k-nat.c, m88k-tdep.c, mac-nat.c,
	mac-xdep.c, maint.c, mcore-rom.c, mcore-tdep.c, mdebugread.c,
	mem-break.c, mi/mi-cmds.c, mi/mi-main.c, mi/mi-out.c,
	mi/mi-parse.c, minsyms.c, mips-nat.c, mips-tdep.c,
	mipsm3-nat.c, mipsread.c, mipsv4-nat.c, mn10200-tdep.c,
	mn10300-tdep.c, mon960-rom.c, monitor.c, news-xdep.c,
	nindy-tdep.c, nlm/gdbserve.c, nlm/i386.c, nlm/ppc.c,
	nlmread.c, ns32k-tdep.c, ns32km3-nat.c, ns32knbsd-nat.c,
	objfiles.c, ocd.c, op50-rom.c, os9kread.c, osfsolib.c,
	p-lang.c, p-typeprint.c, p-valprint.c, pa64solib.c, parse.c,
	ppc-bdm.c, ppc-linux-nat.c, ppc-linux-tdep.c, ppcbug-rom.c,
	ppcnbsd-nat.c, printcmd.c, proc-api.c, proc-events.c,
	proc-flags.c, proc-why.c, procfs.c, ptx4-nat.c,
	remote-adapt.c, remote-array.c, remote-bug.c, remote-e7000.c,
	remote-eb.c, remote-es.c, remote-est.c, remote-hms.c,
	remote-mips.c, remote-mm.c, remote-nindy.c, remote-nrom.c,
	remote-os9k.c, remote-rdi.c, remote-rdp.c, remote-sds.c,
	remote-sim.c, remote-st.c, remote-udi.c, remote-utils.c,
	remote-vx.c, remote-vx29k.c, remote-vx68.c, remote-vx960.c,
	remote-vxmips.c, remote-vxsparc.c, remote.c, rom68k-rom.c,
	rs6000-tdep.c, scm-exp.c, scm-lang.c, scm-valprint.c,
	ser-e7kpc.c, ser-go32.c, ser-mac.c, ser-ocd.c, ser-unix.c,
	sh-stub.c, sh-tdep.c, sh3-rom.c, sol-thread.c, solib.c,
	somread.c, somsolib.c, source.c, sparc-nat.c, sparc-stub.c,
	sparc-tdep.c, sparcl-stub.c, sparcl-tdep.c, sparclet-rom.c,
	sparclet-stub.c, stabsread.c, stack.c, standalone.c,
	stop-gdb.c, stuff.c, sun3-nat.c, sun386-nat.c, symfile.c,
	symm-nat.c, symm-tdep.c, symmisc.c, symtab.c, target.c,
	thread.c, tic80-tdep.c, top.c, tracepoint.c, tui/tui-file.c,
	tui/tui.c, tui/tuiLayout.c, tui/tuiRegs.c, tui/tuiStack.c,
	tui/tuiWin.c, typeprint.c, ui-file.c, ui-out.c, ultra3-nat.c,
	ultra3-xdep.c, umax-xdep.c, utils.c, v850-tdep.c, v850ice.c,
	valarith.c, valops.c, valprint.c, values.c, varobj.c,
	vax-tdep.c, w65-tdep.c, w89k-rom.c, win32-nat.c, wince.c,
	wrapper.c, xcoffread.c, xcoffsolib.c, xmodem.c, z8k-tdep.c: 
	Convert old-style, pre-ISO function definitions to prototyped
	form.

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

	* sh-tdep.c (sh_gdbarch_init): For sh4 initialize
 	register_convert_to_raw, register_convert_to_virtual,
 	register_convertible.
	(sh_sh4_register_convertible): New function.
	(sh_sh4_register_convert_to_virtual): New function.
	(sh_sh4_register_convert_to_raw): New function.
	Include floatformat.h.

Thu Jul 27 14:06:27 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-06-25 Stephane Carrez <Stephane.Carrez@worldnet.fr>:
	* configure.tgt: Recognize the 68hc11.
	* m68hc11-tdep.c: New file for 68hc11 target.
	* config/m68hc11/m68hc11.mt: New file for 68hc11 port.
	
	* configure.tgt: When 68hc11, set gdb_multi_arch.

Wed Jul 26 17:22:53 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (GDB_MULTI_ARCH): Define from configure.tgt
 	or makefile fragment.
	* acconfig.h (GDB_MULTI_ARCH): Add.
	* config.in, configure: Regenerate.
	
	* gdbarch.sh (GDB_MULTI_ARCH): Delete definition, moved to
 	configure.in and defs.h.  Use GDB_MULTI_ARCH_TM,
 	GDB_MULTI_ARCH_PARTIAL and GDB_MULTI_ARCH_PURE in tests.
	* gdbarch.h, gdbarch.c: Regenerate.

	* defs.h (GDB_MULTI_ARCH_PARTIAL, GDB_MULTI_ARCH_TM, ,
 	GDB_MULTI_ARCH_PURE): Define.  Only include "tm.h" when the target
 	is less than pure multi-arch.

2000-07-26  Jimmy Guo       <guo@cup.hp.com>

	* config/convex/tm-convex.h: Remove stray control characters.
	* config/m68k/tm-altos.h: Ditto.
	* config/tahoe/tm-tahoe.h: Ditto.

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

	* sh-tdep.c (sh_sh4_register_name, sh_sh4_register_byte,
 	sh_sh4_register_raw_size, sh_sh4_register_virtual_type,
 	sh_fetch_pseudo_register, sh_store_pseudo_register,
 	sh_do_pseudo_register, sh_gdbarch_init): Fix names for pseudoregs,
 	they should be numbered as drx fvy where x and y are multiples of
 	2 and 4 respectively.
	
	* config/sh/tm-sh.h: Fix names of pseudo regs.

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

	* config/sh/tm-sh.h (struct gdbarch_tdep): Add sh4 specific
 	pseudo registers.
	(DO_REGISTERS_INFO): Define.

	* sh-tdep.c (sh_sh4_register_name): New function.
	(sh_generic_show_regs, sh3_show_regs, sh3e_show_regs,
 	sh3_dsp_show_regs, sh4_show_regs, sh_dsp_show_regs): Update
 	signature.
	(sh_show_regs_command): New function. Actual function called by
 	the 'regs' command.
	(sh_register_byte): Rename to...
	(sh_default_register_byte): ...New function.
	(sh_sh4_register_byte): New function.
	(sh_register_raw_size): Rename to...
	(sh_default_register_raw_size): ...New function.
	(sh_sh4_register_raw_size): New function.
	(sh_sh4_register_virtual_type): New function.
	(sh_sh4_build_float_register_type): New function.
	(sh_fetch_pseudo_register, sh_store_pseudo_register): New
 	functions.
	(fv_reg_base_num, dr_reg_base_num): New functions.
	(do_fv_register_info, do_dr_register_info, sh_do_pseudo_register,
 	sh_do_fp_register, sh_do_register, sh_print_register,
 	sh_do_registers_info): New functions.
	(sh_gdbarch_init): Initialize sh4 pseudo registers to -1. Update
 	architecture specific parts.
	(_initialize_sh_tdep): Use sh_show_regs_command for 'regs' command.

2000-07-24  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c (read_structure_scope): Correct overzealous
	addition of cu_header argument.

Mon Jul 24 07:47:46 2000  Anthony Green  <green@redhat.com>

	* TODO: Update.  Two of my java patches are in. 

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

         * gdbarch.sh: Add FETCH_PSEUDO_REGISTER and STORE_PSEUDO_REGISTER
         to the gdbarch structure.
         * gdbarch.c: Regenerate.
         * gdbarch.h: Regenerate.
         * inferior.h (FETCH_PSEUDO_REGISTER, STORE_PSEUDO_REGISTER):
         Delete macros.
         * regcache.c (write_register, read_register, write_register_bytes,
         write_register_gen, read_register_bytes, read_register_gen):
         Rename ARCH_FECTH_PSEUDO_REGISTERS to FETCH_PSEUDO_REGISTERS and
         ARCH_STORE_PSEUDO_REGISTER to STORE_PSEUDO_REGISTER.

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

	* gdbarch.sh: Add NUM_PSEUDO_REGS to the gdbarch structure.
	* gdbarch.c: Regenerate. 
	* gdbarch.h: Regenerate.
	* inferior.h (NUM_PSEUDO_REGS): Delete macro.

Sun Jul 23 21:40:55 2000  Anthony Green  <green@redhat.com>

	* language.c: Include jv-lang.h.
	(lang_bool_type): Add case for java booleans.

Mon Jul 24 11:23:14 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* dwarf2read.c (address_size): Delete file wide global.
	(struct comp_unit_head): Add signed_addr_p;
	(read_comp_unit_head): New function.
	(psymtab_to_symtab_1, dwarf2_build_psymtabs_hard): Use
 	read_comp_unit_head to parse the debug_info header.
	(read_address): Add parameters cu_header and bytes_read.  When
 	specified, sign extend the address.
	
	* dwarf2read.c (add_partial_symbol, decode_locdesc,
 	die_containing_type, die_type, dwarf_decode_lines,
 	dwarf2_add_field, dwarf2_add_member_fn,
 	dwarf2_build_psymtabs_hard, dwarf2_const_value, new_symbol,
 	process_die, psymtab_to_symtab_1, read_array_type,
 	read_enumeration, read_attribute, read_common_block,
 	read_comp_unit, read_file_scope, read_full_die, read_func_scope,
 	read_lexical_block_scope, read_partial_die, scan_partial_symbols,
 	read_structure_scope, read_subroutine_type, read_tag_const_type,
 	read_tag_pointer_type, read_tag_ptr_to_member_type,
 	read_tag_reference_type, read_type_die, read_typedef,
 	tag_type_to_type): Pass cu_header parameter.

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

        * regcache.c (read_register, read_register_bytes): Fix typos.

2000-07-21  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* thread.c (thread_apply_all_command): Update thread list first.
	* printcmd.c (printf_command): Guard against 0-length string.
	* config/i386/tm-i386.h: treat PC and FP as unsigned.
	(SAVED_PC_AFTER_CALL): Use read_memory_unsigned_integer.
	(FRAME_SAVED_PC): Ditto.
	(FRAME_CHAIN): Ditto.

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

	* valarith.c (value_sub): Call check_typedef.

2000-07-19  Nicholas Duffek  <nsd@redhat.com>

	* thread.c (free_thread): New function.
	(init_thread_list): Always zero highest_thread_num.  Call
	free_thread() instead of free().
	(delete_thread): Move thread cleanup code to free_thread().

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

        Multiarch the sh target.
	* sh-tdep.c:
	(sh_generic_reg_names, sh_reg_names,sh3_reg_names, sh3e_reg_names,
 	sh_dsp_reg_names, sh3_dsp_reg_names, sh_processor_type_table):
 	Remove.
	(XMALLOC): Define.
	(struct frame_extra_info): Define.
	(sh_register_raw_size, sh_register_virtual_size,
 	sh_register_virtual_type, sh_register_byte, sh_breakpoint_from_pc,
 	sh_frame_saved_pc, sh_skip_prologue,
 	sh_nofp_frame_init_saved_regs, sh_fp_frame_init_saved_regs,
 	sh_extract_struct_value_address, sh_use_struct_convention,
 	sh_store_struct_return, sh_push_arguments, sh_push_return_address,
 	sh_saved_pc_after_call, sh_generic_register_name,
 	sh_sh_register_name, sh_sh3_register_name, sh_sh3e_register_name,
 	sh_sh_dsp_register_name, sh_sh3_dsp_register_name,
 	sh_frame_args_address, sh_frame_locals_address,
 	sh_coerce_float_to_double, sh_default_store_return_value,
 	sh3e_sh4_store_return_value, sh_generic_show_regs,
 	sh3_show_regs,sh3e_show_regs, sh3_dsp_show_regs, sh4_show_regs,
 	sh_dsp_show_regs, sh_register_byte, sh_register_raw_size,
 	sh_register_virtual_size, sh_sh3e_register_virtual_type,
 	sh_default_register_virtual_type, sh_gdbarch_init): New functions.
	(sh_target_architecture_hook, sh_frame_find_saved_regs,
 	sh_show_regs): Delete functions.
	(sh_frame_chain, sh_find_callers_reg, sh_init_extra_frame_info,
 	sh_pop_frame, sh_extract_return_value): Update

	* config/sh/tm-sh.h (GDB_MULTI_ARCH): Define to 1.
	(struct gdbarch_tdep): Define.
	Remove all unnecessary defines. 	

	* remote-e7000.c ({PR,GBR,SR,MACL,VBR,MACH}_REGNUM): Define to -1,
 	for h8300 case.
	(want_sh,want_nopc_sh,want_nopc_sh3): Make nomenclature
 	consistent.
	(e7000_fetch_registers): Remove ifdef GDB_TARGET_IS_SH, use
 	runtime check instead.
	(e7000_wait): Ditto.

	* sh3-rom.c (sh3_supply_register): Use gdbarch_tdep to get the SSR
 	and SPC register numbers.
	(sh3_regnames, sh3e_regnames): Don't specify a size.

	* config/h8300/tm-h8300.h: Add comment.

Wed Jul 19 12:50:16 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* solib.c (elf_locate_base, info_sharedlibrary_command): Rename
 	bfd_elf_get_arch_size to bfd_get_arch_size.

Tue Jul 18 17:13:01 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Richard Henderson <rth@cygnus.com>:
	* dwarf2read.c (dwarf2_empty_hash_tables): Renamed from
	dwarf2_empty_die_ref_table; zero dwarf2_cached_types as well.
	Update all callers.

2000-07-17  Daniel Berlin  <dberlin@redhat.com>

	* valops.c (value_struct_elt): Change error message

2000-07-17  matthew green  <mrg@redhat.com>

	* config/sparc/nm-nbsd.h (GDB_GREGSET_T, GDB_FPREGSET_T): Define.

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

	* values.c (value_as_pointer): When VAL is an integer, explictly
 	cast to a pointer before converting to a CORE_ADDR.
	* gdbtypes.c (build_gdbtypes): For builtin_type_ptr, construct a
 	real void pointer instead of an integer.

2000-07-15  Daniel Berlin  <dberlin@redhat.com>

	* valops.c (typecmp):  Seperate loop into two, add support for
	references. This way, we can  say a reference to a pointer to a
	char is	compatible with a pointer to a char. Before, this would
	not be true.

2000-07-14  Nicholas Duffek  <nsd@redhat.com>

	* ppcbug-rom.c (ppcbug_regnames[]): Make array size implicit.
	* rs6000-tdep.c (DEFAULT_LR_SAVE): Move to config/*/tm-*.h.
	(rs6000_gdbarch_init): Use generic_pc_in_call_dummy instead of
	rs6000_pc_in_call_dummy.
	* config/rs6000/tm-rs6000.h (DEFAULT_LR_SAVE): Move here from
	rs6000-tdep.c.
	* config/powerpc/tm-ppc-eabi.h: Remove various definitions
	handled by multi-arched rs6000-tdep.c.

2000-07-14  Nick Clifton  <nickc@cygnus.com>

	* config/mcore/tm-mcore.h (SKIP_PROLOGUE): Fix defintion to avoid
	assignment.

2000-07-13  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* parse.c: Include inferior.h.

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

	* regcache.c (registers_changed, registers_fetched): Use 
	ARCH_NUM_REGS directly, eliminating an unnecessary variable.

	This change adds pseudo-register capability to GDB.
	Pseudo-registers are handled like registers, but they
	don't come from or live on the target.  They may be 
	aliases for an existing register, or they may be computed.
	* inferior.h (NUM_PSEUDO_REGISTERS): Define default of zero.
	(ARCH_FETCH_PSEUDO_REGISTERS): Define default of no-op.
	(ARCH_STORE_PSEUDO_REGISTERS): Define default of no-op.
	# regcache.c (registers_changed): Mark pseudo-registers 
	invalid, as well as real registers.
	(registers_fetched): Do not mark pseudo-registers as fetched
	at the same time as other (real) registers.
	(read_register_bytes): Fetch pseudo-registers (if any) from
	the target architecture module instead of from the target.
	(read_register_gen): Ditto.
	(read_register): Ditto.
	(write_register_bytes): Store pseudo-registers (if any) to
	the target architecture module instead of to the target.
	(write_register_gen): Ditto.
	(write_register): Ditto.
	(build_regcache): Allocate enough register_valid space for
	pseudo-registers as well as normal (real) ones.
	* parse.c (target_map_name_to_register): Include pseudo-regs.
	
Tue Jul 11 19:45:42 2000  Andrew Cagney  <cagney@b1.cygnus.com>

 	* valops.c (value_cast): Allow cast from INT, ENUM or RANGE to
 	POINTER.

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

	* command.c (do_setshow_command): Fix typo in var_auto_boolean
	case.

Tue Jul 11 20:38:36 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c: General cleanup.  Delete all #if 0 code.  Convert
 	all old style K&R function definitions to ISO-C.
	(struct gdbarch_tdep): Add mips_abi_string.
	(mips_gdbarch_init): Initialize.
 	(mips_dump_tdep): Print mips_abi_string and other values.
	(mips_push_arguments): Add more detailed tracing.

Tue Jul 11 20:16:09 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c (mips32_next_pc, mips16_next_pc,
 	read_next_frame_reg, mips_push_dummy_frame, mips_skip_stub,
 	mips_saved_pc_after_call): Use read_signed_register when
 	extracting register value.  Ensures all addresses are sign
 	extended.
	(mips_read_pc): New function.  Return sign extended address.
	(mips_gdbarch_init): Set gdbarch_read_pc.

Tue Jul 11 19:06:29 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote-mips.c (mips_request): Change all arguments to ULONGEST.
	(mips_exit_debug, mips_resume, mips_initialize, mips_wait,
 	mips_fetch_registers, mips_store_registers, mips_fetch_word):
 	Update.
	(mips_xfer_memory): When mask_address_p, mask MEMADDR down to just
 	32 bits.
	(_initialize_remote_mips): Add ``set mask-address'' command.

	* mips-tdep.c (_initialize_mips_tdep): Replace "set mask-address"
 	with "set mips mask-address".  Implement using
 	add_set_auto_boolean_cmd.
	(struct gdbarch_tdep): Add default_mask_address_p.
	(mips_mask_address_p, show_mask_address): New functions.
	(mips_addr_bits_remove): Use mips_mask_address_p() to determine if
 	masking is needed.
	(mips_gdbarch_init): Set default_mask_address_p to zero.
	(mips_dump_tdep): Print value of mask_address_p.

Tue Jul 11 18:32:40 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* printcmd.c (print_scalar_formatted): Move masking of 'a' address
 	from here.
	(print_address_numeric): To here.
	* TODO: Update.

Tue Jul 11 17:50:31 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* symtab.c: Use paddr_nz() to print addresses.

Tue Jul 11 12:52:31 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* value.h (read_register, read_signed_register): Change return
 	type to ULONGEST.
	(read_signed_register, read_signed_register_pid): Declare.

	* regcache.c (read_register, read_register_pid): Update.
	(read_signed_register_pid, read_signed_register): New functions.
	
Mon Jul 10 18:06:18 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c (mips_push_arguments): Always align struct_addr on a
 	16 byte boundary. Align allocated argument space using
 	MIPS_STACK_ARGSIZE.  Reserve space on stack for the struct return
 	and floating-point registers.  Use fp_register_arg_p to determine
 	if float_argreg should be aligned.

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

	* config/sh/tm-sh.h (STORE_RETURN_VALUE): Redefine as
 	sh_store_return_value().
	* sh-tdep.c (sh_store_return_value): New function. Store the
 	value returned by a function into the appropriate register.

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

        * sh-tdep.c (sh_skip_prologue): Before looking at the actual
 	instructions, try to see if the symbol table can be of help, by
 	calling after_prologue(). If this doesn't work, call
 	skip_prologue_hard_way().
	(skip_prologue_hard_way): Renamed from sh_skip_prologue. Add some
 	more instruction pattern matching for pushing of arguments, and
 	manipulation of r14.
	(after_prologue): New function. Use symbol table info to determine
 	the end of the prologue, if possible.

2000-07-07  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* findvar.c (_initialize_findvar, build_findvar, write_fp, read_fp,
	generic_target_write_fp, generic_target_read_fp, write_sp, read_sp,
	generic_target_write_sp, generic_target_read_sp, write_pc, read_pc,
	generic_target_write_pc, generic_target_read_pc, write_pc_pid, 
	read_pc_pid, supply_register, write_register_pid, write_register,
	read_register_pid, read_register, write_register_bytes, 
	read_register_bytes, write_register_gen, read_register_gen, 
	registers_fetched, registers_changed, find_saved_register, 
	read_relative_register_raw_bytes, default_get_saved_register, 
	read_relative_register_raw_bytes_for_frame, get_saved_register):
	Move from this file into new file regcache.c.
	(register_valid, registers_pid, registers): Ditto.
	* regcache.c: New file to hold the register cache.
	(register_cached): New function to read register_valid array.
	* value.h (register_cached): Declare.
	* defs.h (default_get_saved_register): Delete decl of static function.
	* Makefile.in: Add regcache module.
	
Mon Jul 10 15:02:35 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-07-05 Pierre Muller <muller@ics.u-strasbg.fr>:
	* p-typeprint.c (pascal_type_print_method_args): Add braces around
 	isdigit after while keyword.

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

        * TODO: Remove readline 4.1 import item.

2000-07-09  Nick Duffek  <nsd@redhat.com>

	* gdbtypes.c (is_ancestor): Infer type equivalence from name
	equivalence.
	(rank_one_type): Use strcmp instead of == to compare type names.
	Don't swap parm with arg when checking TYPE_CODE_REF types.
	* valops.c (find_overload_match): Fix indentation.  Compare
	parameter rankings to 0..9, 10..99, and 100+ instead of 0, 10,
	and 100.

2000-07-07  David Edelsohn  <edelsohn@gnu.org>

	* xcoffread.c (read_symbol_nvalue): Return CORE_ADDR.
	* rs6000-tdep.c (rs6000_pop_frame): Make addr CORE_ADDR type.

Fri Jul  7 18:29:51 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* config/mips/tm-mips.h (IEEE_FLOAT, SKIP_PROLOGUE,
 	SAVED_PC_AFTER_CALL, DECR_PC_AFTER_BREAK, BREAKPOINT_FROM_PC,
 	INNER_THAN): Macros.

	* mips-tdep.c (mips_in_lenient_prologue): Delete function.
	(mips32_skip_prologue, mips16_skip_prologue, mips_skip_prologue):
 	Remove ``lenient'' argument.
	(mips_saved_pc_after_call): New function.
 	(mips_gdbarch_init): Initialize gdbarch members inner_than,
 	breakpoint_from_pc, decr_pc_after_break, ieee_float,
 	skip_prologue, saved_pc_after_call.

2000-07-07  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-linux.h: Add longjmp support.
	(JB_ELEMENT_SIZE, JB_PC): New defines.
	(GET_LONGJMP_TARGET): Define.
	(get_longjmp_target): Add prototype.

	* breakpoint.c (bpstat_what): Keep returning
	BPSTAT_WHAT_SET_LONGJMP_RESUME when hitting multiple longjmp()
	breakpoints instead of signalling an error by returning
	BPSTAT_WHAT_STOP_NOISY.

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

	* mips-tdep.c: Replace '16' with bfd_mach_mips16 where appropriate.

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

	* infcmd.c (attach_command): Move "stop_soon_quietly" setting
	inside ATTACH_NO_WAIT conditional since we are not about to
	stop soon if we're not calling wait_for_inferior.

Wed Jul  5 21:06:39 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* config/i386/fbsd.mh (NATDEPFILES): Keep NATDEPFILES to a single
 	line.  configure.in assumes this.

Wed Jul  5 20:48:22 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (SER_HARDWIRE): When go32 or DJGPP, set to
 	ser-go32.c.
	* configure: Re-generate.
	
Wed Jul  5 20:28:32 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* top.h (command_loop_marker), top.c (command_loop_marker):
 	Delete.
	* event-top.c (command_handler), top.c (simplified_command_loop,
 	command_loop): Use null_cleanup instead of command_loop_marker.

Wed Jul  5 20:09:41 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* event-loop.c: Include either <poll.h> or <sys/poll.h>.

	* configure.in (targ_archs): Check for <poll.h> and <sys/poll.h>.
	* configure, config.in: Re-generate.
	
Wed Jul  5 18:10:44 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-06-12 Bill Nottingham <notting@redhat.com>:
	* Makefile.in: add $(infodir) to FLAGS_TO_PASS
	
Wed Jul  5 18:03:55 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* TODO: Updates.

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

	* TODO: Update.

2000-07-03  Chris Faylor  <cfg@cygnus.com>

        Committed by Elena Zannoni <ezannoni@cygnus.com>
	* sh-tdep.c (sh_skip_prologue): Change prologue matching for modern
	compilers.
	(sh_frame_find_saved_regs): Ditto.
	(sh_find_callers_reg): Stop if pc is zero.

Sat Jul  1 17:47:08 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* ser-unix.c (do_unix_readchar): Revert Tue Mar 28 18:19:50 2000
 	Andrew Cagney <cagney@b1.cygnus.com>.  Locks up when no data is
 	pending.

Sat Jul  1 15:40:14 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (SER_HARDWIRE): Restore code to set it by configure.

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

	* copying.awk: Eliminate use of PARAMS from this file.

Fri Jun 23 20:47:03 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c (mips_push_arguments): Use the variable stack_used_p
 	to determine if any arguments were written to the stack.  Do not
 	rely on NUMARG>=8.

Mon Jun 19 11:29:35 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* command.h (add_set_auto_boolean_cmd): Add declaration.
	(enum var_types): Add var_auto_boolean.

	* command.c (add_set_auto_boolean_cmd): New function.
	(do_setshow_command): Recognize auto_boolean.
	(parse_binary_operation): Recognize enable and disable.
	(parse_auto_binary_operation): Parse auto binary variables.

	* TODO: Update

Fri Jun 23 16:20:21 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c (fp_register_arg_p): New function.
	(mips_push_arguments): Use.  Do not pass floating point arguments
 	on in an integer register.

2000-06-21  Pierre Muller  <muller@ics.u-strasbg.fr>

	* symfile.c (init_filename_language_table): add ".pas", ".p" and ".pp"
	as pascal source file extensions.

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

	* remote-nindy.c (nindy_fetch_word, nindy_store_word): Removed
	(nindy_xfer_inferior_memory): Use dcache_xfer_memory() instead of
 	breaking transfer into chunks and using nindy_fetch_word() and
	nindy_store_word().

	* remote-bug.c (bug_xfer_memory): Use dcache_xfer_memory() instead
 	of breaking transfer into chunks and using gr_fetch_word() and
 	gr_store_word().

	* remote.c (remote_fetch_word, remote_store_word): Removed.

	* remote-utils.h (gr_fetch_word, gr_store_word): Removed.
	* remote-utils.c (gr_fetch_word, gr_store_word): Removed.

	* dcache.h (dcache_fetch, dcache_poke, dcache_poke_block): Removed.
	* dcache.c (dcache_fetch, dcache_poke): Removed.

2000-06-16  Pierre Muller  <muller@ics.u-strasbg.fr>

	* defs.h: define language_pascal in language enumeration.
	* language.h: define _LANG_pascal macro.
	* language.c: add language_pascal support in all language dependant
   functions.

Sun Jun 18 01:01:09 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c (mips_debug): New variable.
 	(_initialize_mips_tdep): Add command "set debug mips".
	(mips_push_arguments): Add code to dump the argument list as it is
 	created.

Sun Jun 18 00:27:15 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c (mips_push_arguments): For MIPS_EABI, squeeze a
 	strut containing a floating-point into an FP register.

Sat Jun 17 16:00:56 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote-mips.c: Include <ctype.h>
 	(mips_receive_header): Write printable characters to gdb_stdtarg
 	instead of gdb_stdlog.  Only count non-printables as invalid.
	(mips_syn_garbage): Reduce to 10.

Sat Jun 17 15:39:28 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c (mips_gdbarch_init): When the object file header
 	specifies EABI64, select EABI64 and not EABI32.

2000-06-16  Nicholas Duffek  <nsd@redhat.com>

	* rs6000-tdep.c: Changes throughout for multi-arch 64-bit
	support.  Incorporate most of tm-rs6000.h.
	(find_toc_address_hook): Rename to rs6000_find_toc_address_hook.
	(rs6000_set_host_arch_hook): Declare.
	(read_memory_addr): Define.
	(pop_frame): Rename to rs6000_pop_frame.
	(rs6000_pop_frame, rs6000_fix_call_dummy, rs6000_push_arguments,
	rs6000_frame_saved_pc, rs6000_frame_chain): Remove non-generic
	dummy frame handling.
	(branch_dest, rs6000_pop_frame, rs6000_skip_trampoline_code,
	rs6000_frame_saved_pc, frame_get_saved_regs,
	frame_initial_stack_address, rs6000_frame_chain,
	rs6000_convert_from_func_ptr_addr): Call read_memory_addr instead
	of read_memory_integer.
	(branch_dest, rs6000_pop_frame, rs6000_push_arguments,
	rs6000_skip_trampoline_code, rs6000_frame_saved_pc,
	frame_get_saved_regs, frame_initial_stack_address,
	rs6000_frame_chain): Replace 4 with TDEP->wordsize.
	(skip_prologue): Recognize some 64-bit stack adjustments.
	(push_dummy_frame, pop_dummy_frame, set_processor,
	show_processor): Delete.
	(frame_get_saved_regs): Manipulate saved register addresses using
	CORE_ADDR instead of int.
	(rs6000_create_inferior): New function.
	(register_names_*[]): Change to struct reg registers_*[].
	(variants[]): Assimilate into multi-arch approach.
	(register_names_*[], variants[]): Refer to pre-PowerPC
	architectures as POWER instead of RS6000.
	* rs6000-nat.c: Ubiquitous changes for 64-bit support.
	(vmap_secs, xcoff_relocate_symtab): Cast addresses
	to unsigned long to avoid sign-extension errors.
	(set_host_arch): New function.
	(xcoff_relocate_symtab): Try disabling usleep(36000) workaround.
	(rs6000_core_fns): Use new bfd_target_xcoff_flavour.
	(_initialize_core_rs6000): Initialize rs6000_set_host_arch_hook.
	* symfile.c (find_sym_fns): Remove special xcoff kludge.
	* xcoffread.c (secnum_to_bfd_section): Initialize args.objfile.
	(process_linenos): Query line struct size from coff
	backend instead of using compile-time constant.
	(enter_line_range): Likewise.
	(read_xcoff_symtab): Pass "XCOFF64" instead of "XCOFF" to
	record_debugformat() if appropriate.
	(process_xcoff_symbol): Access symbol addresses using
	SYMBOL_VALUE_ADDRESS instead of SYMBOL_VALUE.
	(read_symbol_lineno): Retrieve XCOFF64 symbol names from strtbl.
	(scan_xcoff_symtab): Likewise.  Query syment struct size from
	coff backend instead of using compile-time constant.
	(xcoff_sym_fns): Set flavour to bfd_target_xcoff_flavour.
	* Makefile.in (INTERNAL_LDFLAGS): Add $(MH_LDFLAGS) to list of flags
	that this Makefile variable get set to.  (From Kevin Buettner.)
	* config/powerpc/aix.mh (MH_LDFLAGS): Add linker flags so that
	the TOC doesn't overflow.  (From Kevin Buettner.)
	* config/powerpc/tm-ppc-aix.h: Move config decisions to
	multi-arched rs6000-tdep.c.
	* config/rs6000/tm-rs6000.h: Likewise.
	(GDB_MULTI_ARCH): Define.
	(skip_trampoline_code): Rename to rs6000_skip_trampoline_code.
	(is_magic_function_pointer): Replace with
	rs6000_convert_from_func_ptr_addr.
	(TARGET_CREATE_INFERIOR_HOOK): Define.
	(find_toc_address_hook): Rename to rs6000_find_toc_address_hook.
	(rs6000_set_host_arch_hook): Declare.
	* config/rs6000/nm-rs6000.h (CHILD_XFER_MEMORY): Define.

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

	* v850ice.c: Eliminate use of PARAMS from this file.

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

	* valops.c (value_cast): Break up long lines.
	* utils.c: Fix comment typo.

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

	* dwarf2read.c (dump_die): Use the proper printf format for
 	printing DW_UNSND values; they're longs now.

	* dwarf2read.c (dump_die): We can read DW_FORM_data8 now, on
	at least some platforms, so print it out too.

2000-06-14  James E. Wilson  <wilson@bletchleypark.cygnus.com>

	* dwarf2read.c (struct attribute): Change unsnd and snd field types
	to long.
	(read_8_bytes): Change return type to long.
	(read_unsigned_leb128): Change return type to long.  Change type of
	local result to long.  Cast argument of left shift to long.
	(read_signed_leb128): Likewise.

2000-06-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	Add support for Pascal language. Part 1: new files.
	* p-exp.y, p-lang.c, p-lang.h, p-typeprint.c, p-valprint.c: New files.

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

	* ser-ocd.c, symtab.c: Eliminate use of PARAMS from these files.

Tue Jun 13 09:21:23 2000  Jeffrey A Law  (law@cygnus.com)

	* configure.host (hppa*64*): Renamed from hppa2.0w per
	gcc/binutils changes.
	* configure.tgt: Similarly.

2000-06-12  Bill Nottingham <notting@redhat.com>

	Patch applied by Kevin Buettner <kevinb@redhat.com>:

	* ia64-linux-nat.c, gdbserver/low-linux.c (u_offsets):  PT_CR_IFS
	is deprecated.  Use PT_CFM instead.

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

	* breakpoint.c (breakpoint_thread_match): Fix comment.

2000-06-12  Fernando Nasser  <fnasser@cygnus.com>

	* valops.c (value_assign): Adjust the length to take into
	consideration that we are not starting from the beginning.

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

	* symfile.c (add_symbol_file_command): Properly reformat "else if"
 	code.
	* coffread.c (coff_symtab_read): Ditto.
	
Mon Jun 12 15:24:04 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (SER_HARDWIRE): Set using autoconf.
	* configure.in (SER_HARDWIRE): Define, add ser-tcp.o.
	* configure: Re-generate.

	* config/i386/go32.mh (SER_HARDWIRE): Delete.  Handled by
 	configure.in.
	* config/sparc/sun4sol2.mh, config/sparc/sun4os4.mh,
 	config/sparc/sparclynx.mh, config/sparc/nbsdelf.mh,
 	config/sparc/nbsd.mh, config/sparc/linux.mh,
 	config/rs6000/rs6000lynx.mh, config/powerpc/solaris.mh,
 	config/powerpc/nbsd.mh, config/powerpc/linux.mh,
 	config/powerpc/cygwin.mh, config/pa/hpux11w.mh,
 	config/pa/hpux11.mh, config/pa/hpux1020.mh, config/pa/hppaosf.mh,
 	config/pa/hppahpux.mh, config/pa/hppabsd.mh, config/ns32k/nbsd.mh,
 	config/mips/irix5.mh, config/mips/irix4.mh, config/m68k/nbsd.mh,
 	config/m68k/m68klynx.mh, config/m68k/linux.mh,
 	config/i386/nbsdelf.mh, config/i386/nbsd.mh, config/i386/linux.mh,
 	config/i386/i386sco5.mh, config/i386/i386lynx.mh,
 	config/i386/i386dgux.mh, config/i386/fbsd.mh,
 	config/i386/cygwin.mh, config/arm/linux.mh, config/alpha/fbsd.mh,
 	config/alpha/alpha-osf3.mh, config/alpha/alpha-linux.mh: Remove
 	ser-tcp.o from XDEPFILES.
	* config/ia64/linux.mh: Ditto.

	* TODO: Update.

Mon Jun 12 14:26:02 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mips-tdep.c (GDB_TARGET_IS_MIPS64): Define.
	(struct gdbarch_tdep): Add gdb_target_is_mips64.
	(mips_addr_bits_remove): Update.
	(mips_gdbarch_init): Initialize.

	* config/mips/tm-mips64.h (GDB_TARGET_IS_MIPS64,
 	GDB_TARGET_IS_MIPS64): Delete.

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

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

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

	* config/i386/tm-i386.h: Add forward declaration of `struct value'.
	(FIX_CALL_DUMMY): Redefined to call i386_fix_call_dummy.
	(i386_fix_call_dummy): Add prototype.
	* i386-tdep.c (i386_fix_call_dummy): New function based on the
	code from the old FIX_CALL_DUMMY macro.

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

	* procfs.c, remote.c: Eliminate use of PARAMS from these files.

Mon Jun 12 10:21:24 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbarch.sh (gdbarch_dump): When non multi-arch skip macros that
 	return void.

Sun Jun 11 12:06:21 2000  Christopher Faylor <cgf@cygnus.com>

	* exec.c (exec_file_attach): Add .exe extension when __CYGWIN__.

Sat Jun 10 22:31:46 2000  Christopher Faylor <cgf@cygnus.com>

	* win32-nat.c (safe_symbol_file_add_args): Store old gdb_stderr and
	gdb_stdout here.
	(safe_symbol_file_add_stub): Redirect gdb_stdout as well as stderr.
	(safe_symbol_file_add_cleanup): Restore gdb_stdout.
	(info_dll_command): Use the pager for displaying DLLs since there are
	often quite a few.

Sun Jun 11 11:34:05 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Sat Jun 10 17:54:04 2000 Hans-Peter Nilsson <hp@axis.com>:
	* configure.in (targ_archs): Clear out secondary components.
	* configure: Regenerate.

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

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

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

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

	* command.h, monitor.h: Eliminate use of PARAMS from these
	files.

2000-06-08  Fernando Nasser  <fnasser@cygnus.com>

	* config/i386/tm-embed.h: New file.  Specific for embedded targets
	like i386-elf, i386-coff and i386-aout.
	* config/i386/embed.mt (): Specify tm-embed.h instead of the System V
	header file.

2000-06-08  Fernando Nasser  <fnasser@cygnus.com>

	* MAINTAINERS: Add myself to gdbtk list.

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

	* config/ia64/nm-linux.h (U_REGS_OFFSET): Define.

2000-06-08  Fernando Nasser  <fnasser@cygnus.com>

	* configure.in: Replace misplaced CONFIG_ADD by the correct
	CONFIG_CLEAN.
	* configure, config.in: Regenerate.

2000-06-08  Fernando Nasser  <fnasser@cygnus.com>

	* values.c (value_primitive_field): Copy VALUE_REGNO as well.
	With typed registers we may have the location information in this field,
	in addition to VALUE_ADDRESS (which was already being copied).

Thu Jun  8 15:26:44 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* config/mips/tm-mips.h (GDB_MULTI_ARCH): Define as 1.
	(CALL_DUMMY, TARGET_BYTE_ORDER_SELECTABLE_P,
 	COERCE_FLOAT_TO_DOUBLE): Delete.
	* config/mips/tm-vr5000el.h, config/mips/tm-vr5000.h,
 	config/mips/tm-vr4xxxel.h, config/mips/tm-vr4xxx.h,
 	config/mips/tm-vr4100.h, config/mips/tm-tx39l.h
 	config/mips/tm-tx39.h, config/mips/tm-irix5.h: Delete
 	GDB_MULTI_ARCH.

	* config/mips/tm-mips64.h (TARGET_LONG_BIT, TARGET_LONG_LONG_BIT,
 	TARGET_PTR_BIT): Delete definitions.
	* config/mips/tm-vr5000el.h, config/mips/tm-vr5000.h,
 	config/mips/tm-tx39l.h, config/mips/tm-vr4100.h,
 	config/mips/tm-tx39.h: Delete definition of MIPS_EABI.
	* mips-tdep.c (mips_gdbarch_init): Use the ISA to determine the
 	ABI.  If all else fails, assume O32.

	* TODO, NEWS: Update.  Mention MIPS is multi-arch.

Thu Jun  8 14:23:12 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* config/mips/tm-vr4xxxel.h, config/mips/tm-vr4xxx.h,
 	config/mips/tm-vr4100.h, config/mips/tm-tx39l.h,
 	config/mips/tm-tx39.h: Delete definition of
 	MIPS_DEFAULT_FPU_TYPE. Enable multi-arch.
	* mips-tdep.c: (mips_gdbarch_init): The bfd_mach_mips3900 has no
 	FPU.  bfd_mach_mips4650 FPU is single precision.

	* config/mips/tm-mips.h (MIPS_FPU_SINGLE_REGSIZE): 
	(MIPS_FPU_DOUBLE_REGSIZE): Move from here.
	* mips-tdep.c: To here.  Change to an enum.

Wed Jun  7 18:27:51 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (DEFAULT_BFD_ARCH, DEFAULT_BFD_VEC): Use config.bfd
 	to determine the default architecture / target.
	* acconfig (DEFAULT_BFD_ARCH, DEFAULT_BFD_VEC): Add.
	* configure, config.in: Regenerate.
	
	* arch-utils.c (set_endian): Better separate multi-arch and non-
 	multi-arch cases.
	(set_endian_from_file): Call internal_error when multi-arch.
	(initialize_current_architecture): Rewrite logic selecting a byte
 	order.  Use DEFAULT_BFD_ARCH DEFAULT_BFD_VEC.
	(version.h): Include.

	* config/mips/tm-mips.h, config/mips/tm-bigmips64.h,
 	config/mips/tm-bigmips.h: Delete definition of
 	TARGET_BYTE_ORDER_DEFAULT.

Thu Jun  8 11:41:41 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* infrun.c (follow_inferior_fork): Bad merge from below.  Compare
 	strings using follow_fork_mode_ask and not "ask".

Wed Jun  7 15:13:04 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* command.h (add_set_enum_cmd): Make ``enumlist'' and ``var''
 	constant char pointers.
	(complete_on_enum): Change ``enumlist'' to a constant char
 	pointer.
	(struct cmd_list_element): Ditto for member ``enums''.
	* command.c (complete_on_enum, add_set_enum_cmd,
 	do_setshow_command): Update.

	* infrun.c (follow_fork_mode_ask, follow_fork_mode_parent,
 	follow_fork_mode_both, follow_fork_mode_child): New.  Use to
 	construct the follow_fork_mode_kind_names.
	(set_follow_fork_mode_command): Delete function.
	(_initialize_infrun): Update.
	(follow_inferior_fork): Do not strdup follow_fork_mode_string.
  	Use follow_fork_mode_* variables directly instead.  Call
 	internal_error instead of error when unimplemented "ask" mode.

	* infrun.c (scheduler_enums, scheduler_mode, schedlock_off,
 	schedlock_on, schedlock_step): Update.
	* serial.c (serial_logbase, logbase_hex, logbase_octal,
 	logbase_ascii, logbase_enums): Update.
	* remote.c (packet_support_enums, packet_support_auto,
 	packet_enable, packet_disable, struct packet_config): Update.
	* arch-utils.c (initialize_current_architecture,
 	set_architecture_string): Update.
	(endian_big, endian_little, endian_auto, endian_enum,
 	set_endian_string): Update.
	* i386-tdep.c (valid_flavors, att_flavor, intel_flavor,
 	disassembly_flavor): Update.
	* mips-tdep.c (size_enums, size_64, size_32, size_auto,
 	mips_stack_argsize_string, mips_saved_regsize_string): Update.
	* arm-tdep.c (disassembly_flavor, valid_flavors): Update.
	(_initialize_arm_tdep): Ditto.

	* TODO: Update.

Mon Jun  5 18:44:14 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* thread.c (make_cleanup_restore_current_thread,
 	do_restore_current_thread_cleanup): New functions.
	(thread_apply_all_command, thread_apply_command): Use. Call
 	do_cleanups when finished.

	* defs.h (make_cleanup_func): Delete typedef.
	* TODO: Update.

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

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

	* TODO: Update.

	* v850-tdep.c, sh3-rom.c, sh-tdep.c, i386-tdep.c: Include
 	"arch-utils.h".
	* Makefile.in (v850-tdep.o): Specify dependencies.
	(i386-tdep.o, sh3-rom.o, sh-tdep.o): Add arch-utils.h to
 	dependency list.

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

	* configure.in: Enable autoconf to find curses.h on Solaris 2.8.
	* configure: Regenerate.

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

	* command.c (do_setshow_command): Accept an enum option immediatly
 	when it is an exact match.

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

	* config/mips/tm-vr5000el.h, config/mips/tm-vr5000.h,
 	config/mips/tm-vr4xxxel.h, config/mips/tm-vr4xxx.h,
 	config/mips/tm-vr4300el.h, config/mips/tm-vr4100.h,
 	config/mips/tm-vr4300.h, config/mips/tm-tx39l.h,
 	config/mips/tm-tx39.h, config/mips/tm-embedl64.h,
 	config/mips/tm-embedl.h, config/mips/tm-embed64.h,
 	config/mips/tm-embed.h: Delete TARGET_BYTE_ORDER_SELECTABLE_P.

	* tm-mips.h (TARGET_BYTE_ORDER_SELECTABLE_P): Define as 1.
	
Tue Jun  6 16:21:14 2000  Andrew Cagney  <cagney@b1.cygnus.com>

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

Tue Jun  6 15:07:08 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote-mips.c (mips_open): Select the default monitor prompt
 	based on the target ISA.

	* config/mips/tm-vr4100.h (TARGET_MONITOR_PROMPT),
 	config/mips/tm-vr4300el.h (TARGET_MONITOR_PROMPT),
 	config/mips/tm-vr4300.h (TARGET_MONITOR_PROMPT),
 	config/mips/tm-vr4xxx.h (TARGET_MONITOR_PROMPT),
 	config/mips/tm-vr4xxxel.h (TARGET_MONITOR_PROMPT),
 	config/mips/tm-vr5000el.h (TARGET_MONITOR_PROMPT),
 	config/mips/tm-vr5000.h (TARGET_MONITOR_PROMPT),
	config/mips/tm-mips.h (TARGET_MONITOR_PROMPT): Delete macro.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2000-06-01  Michael Snyder  <msnyder@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-06-01  Klee Dienes  <kdienes@apple.com>

	* MAINTAINERS: Add Klee Dienes and Jim Ingham as maintainers for
	Mac OS X and Objective C components (to be contributed).

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

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

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.

	* 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-1999

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
