2002-01-02  GDB Administrator  <gdbadmin@sources.redhat.com>

	* version.in: Bump version to 5.1.0.1.

2001-11-18  GDB Administrator  <gdbadmin@sourceware.cygnus.com>

	* version.in: Bump version to 5.1.
	
2001-11-17  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (distclean): Explicitly delete Makefile et.al. in
	gdbserver sub directory.

2001-11-17  Andrew Cagney  <ac131313@redhat.com>

	* README: Mention need for alloca().  Mention problems with
	alpha-dec-osf4.0e.  Clarify that comments refer to GDB 5.1.

2001-11-11  GDB Administrator  <gdbadmin@sourceware.cygnus.com>

	* version.in: Bump to 5.0.93-0000-00-00-cvs.

2001-11-11  Andrew Cagney  <ac131313@redhat.com>

	* README (alpha-dec-osf5.1): Mention -DUSE_LDR_ROUTINES.
	(sparcv9-sun-solars2.8): Mention problem with 64 bit GCC 3.0.x.
	(i586-sco-sysv5uw7.1.1): Mention problem with threads.

2001-11-11  Andrew Cagney  <ac131313@redhat.com>

	From Mark Kettenis  <kettenis@gnu.org>:
	* breakpoint.c (breakpoint_re_set_one): Don't discard SHLIB
	breakpoints when they fail.

2001-11-10  Andrew Cagney  <ac131313@redhat.com>

	* p-exp.y: Strip trailing ^M.

2001-11-06 Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-lang.c (is_pascal_string_type): New function to determine if a 
	type is a string type.
	* p-lang.h: Add prototype for is_pascal_string_type.
	* p-valprint.c (pascal_val_print) : Use is_pascal_string_type function 
	to display strings nicely.

2001-11-06 Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y (yylex): Only change case of expression if symbol is found.
	Also check for GPC standard name form.

2001-11-02  Andrew Cagney  <ac131313@redhat.com>

	* utils.c (internal_verror): Restore calls to abort().
	Fix PR gdb/219.

2001-11-02  Andrew Cagney  <ac131313@redhat.com>

	* README: Mention problem with alpha-dec-osf5.1.

2001-11-02  Michael Chastain  <mec@shout.net>

        * MAINTAINERS: Update my entry.

2001-10-31  Andrew Cagney  <ac131313@redhat.com>

	From DJ Barrow.
	* s390-tdep.c: Include "value.h".
	(s390_gdbarch_init): Don't initialize find_solib_trampoline_target.

2001-10-31  Andrew Cagney  <ac131313@redhat.com>

	* remote-vx.c (net_wait): Fix typo from PIDGET change.

2001-10-31  Daniel Jacobowitz  <drow@mvista.com>

	* arm-linux-nat.c: Include <asm/ptrace.h> explicitly.

2001-10-30  GDB Administrator  <gdbadmin@sourceware.cygnus.com>

	* version.in: Bump version to 5.0.92.

2001-10-30  Andrew Cagney  <ac131313@redhat.com>

	* README, NEWS: Update for 5.1.

2001-10-24  Daniel Jacobowitz  <drow@mvista.com>

	* arm-linux-nat.c (fill_gregset): Do not check register_valid[].
	(fill_fpregset): Likewise.

2001-10-26  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (constraint): Loop through the whole cris_spec_regs
	struct, not just the NUM_SPECREGS first entries.
	(bdap_prefix): Read PC before autoincrement.

2001-10-21  Andrew Cagney  <ac131313@redhat.com>

	* top.c (print_gdb_version): Do not print ``(MI_OUT)''.  MI
	interface is always enabled.

2001-10-21  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/README: Fix a typo and tweak for GDB 5.1.

2001-10-20  Andrew Cagney  <ac131313@redhat.com>

	* alpha-nat.c: Include <alpha/coreregs.h> instead of
	<machine/reg.h>.
	(fetch_osf_core_registers): Define core_reg_mapping in a way that
	works on OSF5 as well as previous OSF versions.

2001-10-20  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (handle_load_dll): Avoid strlwr'ing loaded DLLs or cygwin
	may not be able to read them in certain situations.

2001-10-18  Andrew Cagney  <ac131313@redhat.com>

	* README: Mention problems with HP/UX.

2001-10-16  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (safe_symbol_file_add_stub): Improve logic for avoiding
	load of already loaded DLL.
	(register_loaded_dll): Convert loaded DLL name to "posix" format or it
	will confuse subsequent opening of the filename due to dos paths.
	(dll_symbol_command): Pass from_tty parameter to safe_symbol_file_add.

202001-10-15  Jim Ingham  <jingham@inghji.apple.com>

        * valarith.c (value_sub): Don't pass a raw type to
        value_from_pointer, it has to go through check_typedef first.

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

	* dbxread.c (process_one_symbol): Don't use error result from
	find_stab_function_addr().
	* partial-stab.h (case 'F'): Likewise.

	* partial-stab.h (case 'f'): Make SOFUN_ADDRESS_MAYBE_MISSING
	code match that used for case 'F'.  This fixes the divergence
	that was introduced by my 1999-09-14 changes to partial-stab.h.

2001-10-13  Andrew Cagney  <ac131313@redhat.com>

	S/390 31 & 64 bit target and GNU/Linux native support.
	Contributed by D.J. Barrow <djbarrow@de.ibm.com> of IBM.
	* s390-nat.c, s390-tdep.c: New file.
	* config/s390/nm-linux.h, config/s390/s390.mh: New file.
	* config/s390/s390.mt, config/s390/s390x.mt: New file.
	* config/s390/tm-linux.h, config/s390/tm-s390.h: New file.
	* config/s390/xm-linux.h: New file.
	* NEWS: Update.
	* MAINTAINERS: Update.

2001-10-13  Andrew Cagney  <ac131313@redhat.com>

	From 2001-07-09 D.J. Barrow <djbarrow@de.ibm.com>:
        * gdbarch.sh: Fixed CALL_DUMMY_BREAKPOINT_OFFSET to check
	CALL_DUMMY_BREAKPOINT_OFFSET_P.
	* gdbarch.c: Regenerate.
	
2001-10-12  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (safe_symbol_file_add_stub): Properly initialize linked
	list pointer to beginning rather than one beyond beginning.

2001-10-12  Andrew Cagney  <ac131313@redhat.com>

	* version.in: Bump to 5.0.91.  Add YYYY-MM-DD.

2001-10-12  Pierre Muller  <muller@ics.u-strasbg.fr>

	* config/i386/tm-cygwin.h: Include tm-i386.h instead of tm-i386v.h.
	This fixes errors in "long long" handling for 'finish' and 'return'
	commands.

2001-10-12  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (safe_symbol_file_add_stub): Avoid adding a shared
	library if it has already been loaded.
	(safe_symbol_file_add_cleanup): Don't mess with stderr or we won't see
	any error messages.
	(safe_symbol_file_add): Ditto.
	(solib_symbols_add): Make static.  Accept 'from_tty' parameter.  Pass
	it to safe_symbol_file_add.
	(core_dll_symbols_add): Accomodate extra solib_symbols_add parameter.
	(child_solib_add): Ditto.

	* win32-nat.c (handle_exception): Don't print "first chance"
	exceptions.
	(get_child_debug_event): Continue from exceptions if !handle_exception.

2001-10-10  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (get_child_debug_event): Close file handles created after
	process creation and DLL load.
	(child_create_inferior): Close unneeded process/thread handle after
	thread creation.

2001-10-08  J. Brobecker <brobecker@gnat.com>

	* hpux-thread.c: rewrite find_active_thread() and find_tcb()
	to use ptid_t, instead of overloading the thread and the pid
	into the same 32-bit value. Make associated necessary adaptations.
	Also remove unused variable cached_active_thread.

2001-09-26  Kevin Buettner  <kevinb@redhat.com>

	From Ilya Golubev <gin@mo.msk.ru>:
	* solib.c (clear_solib): Call `remove_target_sections' to fix
	stale pointers in `struct target_ops'.
	* irix5-nat.c (clear_solib): Likewise.
	* osfsolib.c (clear_solib): Likewise.

2001-09-26  Andrew Cagney  <ac131313@redhat.com>

	* CONTRIBUTE: Update.

2001-09-24  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (reg_mode_add_sub_cmp_and_or_move_op): Fetch operand1
	from correct register.

2001-09-18  Keith Seitz  <keiths@redhat.com>

        * printcmd.c (print_insn): Use the given stream for
        output.

2001-09-10  Jason Molenda  (jmolenda@apple.com)

	* NEWS: "ANS/ISO C" -> "ISO C".
	* MAINTAINERS (write-after-approval):  Update my entry.

2001-08-24  Andrew Cagney  <ac131313@redhat.com>

	* regcache.c (read_register_bytes): When REGISTER_NAME indicates
	that a register should be ignored, supply a value for the register
	from the raw registers[] buffer.

2001-08-24  Andrew Cagney  <ac131313@redhat.com>

	* go32-nat.c (go32_create_inferior): Use xfree instead of free.
	* config/djgpp/fnchange.lst: Add entries for i386bsd-tdep.c and
	i386bsd-nat.c.

2001-08-10  Daniel Jacobowitz  <drow@mvista.com>
	    H.J. Lu  (hjl@gnu.org)

	* partial-stab.h: valu should be a CORE_ADDR.

2001-08-08  H.J. Lu  (hjl@gnu.org)

	* dbxread.c (SWAP_SYMBOL): Removed.
	(INTERNALIZE_SYMBOL): Check sign extended vma.

2001-08-13  Christopher Faylor  <cgf@cygnus.com>

	* top.c (SIGSETJMP): Protect env argument with parentheses.
	(SIGLONGJMP): Protect env argument with parentheses.

2001-08-10  Orjan Friberg  <orjanf@axis.com>

	* remote.c (read_frame): Correct off-by-one error in condition.

2001-08-02  Daniel Jacobowitz  <drow@mvista.com>

	* core-regset.c (fetch_core_registers):  Remove HAVE_GREGSET_T
	and HAVE_FPREGSET_T checks.  Use gdb_gregset_t and gdb_fpregset_t.

2001-08-02  Keith Seitz  <keiths@redhat.com>

        * defs.h (SLASH_STRING): If not defined, set
        to "/", regardless of _WIN32, __CYGWIN__, or
        whatnot.

2001-07-27  Daniel Jacobowitz  <drow@mvista.com>

	* configure.in: Only invoke AC_FUNC_SETPGRP if not cross-compiling.
	Check for SETPGRP_VOID separately if cross-compiling and ISO C
	headers are available.
	* configure: Regenerated.

2001-08-02  Mark Kettenis  <kettenis@gnu.org>

	* NEWS: Update.

2001-08-02  Eli Zaretskii  <eliz@is.elta.co.il>

	The following changes avoid polluting global namespace with the
	`enable' and `disable' identifiers, because some platforms define
	in their system headers symbols with global scope that go by those
	names.

	* breakpoint.h (enum enable_state): Rename from `enum enable'.
	Also rename all the enum members to have the "bp_" prefix.
	(struct breakpoint): Rename the `enable' member to `enable_state'.
	(enum bpdisp): Rename all members to have the "disp_" prefix.

	* breakpoint.c: All users of `enum enable' and `enum bpdisp'
	changed.
	(args_for_catchpoint_enable): Rename the `enable' member to
	`enable_p'.  All users changed.

	* tracepoint.h (enum enable): Remove.
	(struct tracepoint): The member `enabled' is now `int enabled_p'.

	* tracepoint.c: All users of the `enabled' member changed.

	* printcmd.c (struct display): The `status' member is now an int.

	* memattr.h (struct mem_region): Rename the `status' member to
	`enabled_p'.
	(enum enable): Remove.

	* memattr.c: Change all users of the `status' member of struct
	mem_region to use `enabled_p' instead.

	* infcmd.c (run_stack_dummy): Use disp_del instead of del.

	* go32-nat.c: Remove the kludgey work-around for conflicts between
	<dos.h> and "breakpoint.h".

2001-07-30  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386sol2.h (STAB_REG_TO_REGNUM): Redefine to call
	i386_dwarf_reg_to_regnum.

	* i386-tdep.c (i386_register_convert_to_virtual): Replace
	assertion with a warning if we're asked to convert towards a
	non-floating-point type.  Zero out the the buffer where the data
	is supposed to be stored in that case.

2001-07-29  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/djconfig.sh: Unset CDPATH.

	* go32-nat.c (get_cr3): Temporary disable support for page tables
	in UMBs, as it is incomplete.

	Support for stepping through longjmp in DJGPP programs:

	* config/i386/tm-go32.h (JB_ELEMENT_SIZE, JB_PC): New macros.
	(GET_LONGJMP_TARGET): Define to call get_longjmp_target.
	(get_longjmp_target): Add prototype.

2001-07-28  Andrew Cagney  <ac131313@redhat.com>

	* version.in: Bump version number to 5.0.90-cvs.

2001-07-28  Andrew Cagney  <ac131313@redhat.com>

	Fix some PID/TPID fallout for HP/UX.
	From 2001-07-22 Rodney Brown <rbrown64@csc.com.au>:
	* infttrace.c (ptrace_wait): Match external declaration,
	and match target_post_wait declaration.

2001-07-28  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add Orjan Friberg as cris target maintainer.
	(cris): Set --enable-gdb-build-warnings flag to -w.

2001-07-28  Andrew Cagney  <ac131313@redhat.com>

	From 2001-07-23 Andreas Schwab <schwab@suse.de>:
	* config/m68k/tm-m68k.h (TARGET_LONG_DOUBLE_FORMAT): Define.
	(TARGET_LONG_DOUBLE_BIT): Define.
	(REGISTER_VIRTUAL_SIZE): Return 12 for floating point registers.
	(MAX_REGISTER_VIRTUAL_SIZE): Increase to 12.
	(REGISTER_VIRTUAL_TYPE): Return builtin_type_long_double for
	floating point registers.
	(REGISTER_CONVERTIBLE, REGISTER_CONVERT_TO_VIRTUAL)
	(REGISTER_CONVERT_TO_RAW): Remove.
	* config/m68k/xm-linux.h (HOST_LONG_DOUBLE_FORMAT): Define.

2001-07-26  Andrew Cagney  <ac131313@redhat.com>

	* thread.c, breakpoint.c: Include "gdb.h".
	* Makefile.in (gdb_h): Define.
	(HFILES_NO_SRCDIR): Add gdb.h.
	(mi-cmd-break.o, mi-main.o, thread.o)
	(breakpoint.o): Add dependency on $(gdb_h).

	* defs.h (enum gdb_rc, gdb_breakpoint_query)
	(gdb_breakpoint, gdb_thread_select)
	(gdb_list_thread_ids): Move declaration from here ...
	* gdb.h: To here.  New file.

2001-07-28  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* Makefile.in (SUBDIR_TUI_OBS): Add tui-out.o, tui-hooks.o.
	(SUBDIR_TUI_SRCS): Add tui-out.c tui-hooks.c
	(SFILES): Likewise.
	(tui-out.o): Define dependencies.
	(tui-hooks.o): Likewise.

2001-07-28  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Update e-mail address of active @cygnus.com
	maintainers to @redhat.com.

2001-07-28  Andrew Cagney  <ac131313@redhat.com>

	* README (Known bugs): Delete section.
	(Kernel debugging): Delete section.
	(Languages other than C): Delete section.
	(Host/target specific installation notes) New section.

2001-07-28  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h (STAB_REG_TO_REGNUM, SDB_REG_TO_REGNUM,
	DWARF_REG_TO_REGNUM, DWARF2_REG_TO_REGNUM): New defines.
	(i386_stab_reg_to_regnum, i386_dwarf_reg_to_regnum): New
	prototypes.
	* config/i386/tm-fbsd.h, config/i386/tm-i386gnu.h,
	config/i386/tm-linux.h (STAB_REG_TO_REGNUM): Redefine to call
	i386_dwarf_reg_to_regnum.
	* i386-tdep.c (i386_stab_reg_to_regnum, i386_dwarf_reg_to_regnum):
	New functions.

	* i386-tdep.c: Include "gdb_assert.h"
	(i386_register_convert_to_virtual): Fix such that it can handle
	conversion to any floating-point type.  Assert that we are dealing
	with a floating-point first.
	(i386_register_convert_to_raw): Assert that TYPE is a
	floating-point type with length 12.

2001-07-27  John R. Moore  <jmoore@redhat.com>

	* configure.in: Added dependency of gdb on tcl/tk libraries.
	* Makefile.in: Likewise.
	* configure: Regenerated with the above using autoconf.

2001-07-26  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_gdbarch_init): Use SH_DEFAULT_NUM_REGS instead of
	NUM_REGS.
	(SH_DEFAULT_NUM_REGS): Define.

2001-07-26  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (read_memory_region): Make sure the segment limit was
	indeed set, to work around a Windows 2000 bug.

2001-07-25  Daniel Jacobowitz  <drow@mvista.com>

	* infptrace.c (child_xfer_memory): Add cast to CORE_ADDR.
	* infttrace.c (child_xfer_memory): Likewise.
	* symm-nat.c (child_xfer_memory): Likewise.
	* gdbserver/low-hppabsd.c (read_inferior_memory): Likewise.
	(write_inferior_memory): Likewise.
	* gdbserver/low-linux.c (read_inferior_memory): Likewise.
	(write_inferior_memory): Likewise.
	* gdbserver/low-lynx.c (read_inferior_memory): Likewise.
	(write_inferior_memory): Likewise.
	* gdbserver/low-nbsd.c (read_inferior_memory): Likewise.
	(write_inferior_memory): Likewise.
	* gdbserver/low-sparc.c (read_inferior_memory): Likewise.
	(write_inferior_memory): Likewise.
	* gdbserver/low-sun3.c (read_inferior_memory): Likewise.
	(write_inferior_memory): Likewise.

2001-07-25  Eli Zaretskii  <eliz@is.elta.co.il>

	* README: Mention how to make gdb.pdf.

	* NEWS: Update.

2001-07-24  Stephen P. Smith <ischis2@home.com>

	* MAINTAINERS (Stephen P. Smith): Added to write after approval 
	list.

2001-07-23  Andrew Cagney  <ac131313@redhat.com>

	* mips-tdep.c (mips_push_arguments): Add comment explaining
	problem with LE o32 GCC.

2001-07-23  Elena Zannoni  <ezannoni@redhat.com>

	* config/powerpc/aix.mh (MH_LDFLAGS): Don't set these, the Gnu linker
	doesn't understand them.

2001-07-23  Elena Zannoni  <ezannoni@redhat.com>

	* memattr.c (mem_info_command): Reformat output to look more like
	'info break' output.
	(_initialize_mem): Improve help.

2001-07-23  Mark Kettenis  <kettenis@gnu.org>

	* configure.in (AC_CHECK_FUNCS): Add setpggrp.
	(AC_FUNC_SETPGRP): Add.
	* aclocal.m4, configure, config.in: Regenerated.
	* inflow.c (gdb_setpgid): Get rid of NEED_POSIX_SETPGID and
	SETPGRP_ARGS.  Always use setpgid if it is available, fall back on
	setpgrp if it isn't.  Use SETPGRP_VOID (defined by autoconf) to
	distinguish between the two setpgrp flavours.
	* config/xm-sysv4.h, config/arm/xm-linux.h,
	config/i386/xm-i386aix.h, config/i386/xm-sco.h,
	config/i386/xm-linux.h, config/i386/xm-ptx.h,
	config/m68k/xm-linux.h, config/powerpc/xm-linux.h,
	config/sparc/xm-linux.h, config/sparc/xm-sun4sol2.h,
	config/ia64/xm-linux.h (NEED_POSIX_SETPGID): Remove.
	* config/rs6000/xm-rs6000.h (SETPGRP_ARGS): Remove.

2001-07-23  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (read_memory_region): Set the granularity bit of the
	allocated segment according to its size, and adjust the limit to
	be page-aligned if the segment is page-granular.

	* (get_cr3, get_pde, get_pte, display_ptable_entry, go32_pde) 
	(display_page_table, go32_pte, go32_pte_for_address): New functions.
	(_initialize_go32_nat): Initialize and document them.

2001-07-22  Mark Kettenis  <kettenis@gnu.org>

	* i386gnu-nat.c: Include "i387-nat.h".
	(struct env387): Removed.
	(reg_offset): Fix comment.
	(fetch_fpregs): Use FCTRL_REGNUM and FOP_REGNUM instead of
	FIRST_FPU_CONTROL_REGNUM and LAST_FPU_CONTROL_REGNUM.  Rewrite to
	use i387_supply_fsave.
	(gnu_fetch_registers): Remove spurious whitespace.
	(convert_to_env387): Remove.
	(store_fpregs): Add argument regno.  Use i387_fill_fsave instead
	of convert_to_env387.
	(gnu_store_registers): Remove spurious whitespace.  Pass REGNO to
	store_fpregs.
	* config/i386/i386gnu.mt (TDEPFILES): Add i387-tdep.o.
	* config/i386/i386gnu.mh (XDEPFILES): Remove i387-tdep.o.
	(NATDEPFILES): Add i387-nat.o.

2001-07-22  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* Makefile.in (ALLDEPFILES): Add m68hc11-tdep.c.
	(m68hc11-tdep.o): Define dependencies.

2001-07-22  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (m68hc11_gdbarch_init): Define int at 16-bits.

2001-07-21  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* utils.c (init_page_info): Use tui_get_command_dimension.
	* printcmd.c (disassemble_command): Simplify tui specific code,
	use tui_is_window_visible, tui_show_assembly.

2001-07-21  Mark Kettenis  <kettenis@gnu.org>

	* i386bsd-nat.c: Do not include <sys/sysctl.h>.
	(_initialize_i386bsd_nat) [KERN_PS_STRINGS]: Move FreeBSD-specific
	code to ...
	* i386fbsd-nat.c: ... here.  New file.
	* config/i386/fbsd.mh (NATDEPFILES): Add i386-fbsd.o.
	* config/i386/nm-fbsd.h (CHILD_RESUME): Define.
	* Makefile.in (ALLDEPFILES): Add i386fbsd-nat.c.
	(i386fbsd-nat.o): Add dependencies.
	
2001-07-19  Daniel Jacobowitz  <drow@mvista.com>

	* signals.c: New file.
	* Makefile.in: Add signals.o.
	* target.c (struct signals, target_signal_to_name)
	(target_signal_from_name, target_signal_from_host)
	(do_target_signal_to_host, target_signal_to_host_p)
	(target_signal_to_host, target_signal_from_command): Move to
	signals.c.
	(initialize_targets): Move check of struct signals to...
	* signals.c (_initialize_signals): Here.

2001-07-19  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add Michael Chastain as C++ testsuite maintainer.

2001-07-19  Andrew Cagney  <ac131313@redhat.com>

	From Stephen Smith:
	* configure.tgt (i*86-*-pe*): New target.

2001-07-19  Andrew Cagney  <ac131313@redhat.com>

	From 2001-07-16 Rodney Brown <rbrown64@csc.com.au>:
	* infttrace.c (child_thread_alive): Fix gdb_tid typo.
	* somsolib.c (no_shared_libraries): Provide stub.
	* xcoffsolib.c (no_shared_libraries): Provide stub.

2001-07-18  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* Makefile.in (COMMON_OBS): Remove tui-file.o.
	(SUBDIR_TUI_OBS): Add it here.
	(SUBDIR_TUI_SRCS): Move tui-file.c and tui-file.h here.
	(main.o): Remove dependency with tui-file.h.

2001-07-17  Elena Zannoni  <ezannoni@redhat.com>

	* Makefile.in (tui-file.o): Update dependencies.

2001-07-17  Elena Zannoni  <ezannoni@redhat.com>

	* top.c (catch_errors): Convert PTR to void * in parameters list.
	(quit_cover): Ditto.

2001-07-17  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* source.c (find_source_lines): Remove tui test, must be replaced
	by appropriate warning hook.
	(print_source_lines): Remove tui hacks, must be replaced by cli.
	(forward_search_command): Remove tui hacks, can be replaced by
	appropriate calls to identify_source_line when tui scrolls.
	(reverse_search_command): Likewise.

2001-07-16  Nick Duffek  <nsd@redhat.com>

	* remote.c (init_remote_ops, init_remote_cisco_ops,
	init_remote_async_ops): Set to_pid_to_str and
	to_extra_thread_info correctly and in the same order as declared
	in target.h.

2001-07-16  Andrew Cagney  <ac131313@redhat.com>

	* remote.c: Revert below.  Included more than intended.

2001-07-16  Nick Duffek  <nsd@redhat.com>

	* remote.c (init_remote_ops, init_remote_cisco_ops,
	init_remote_async_ops): Set to_pid_to_str and
	to_extra_thread_info correctly and in the same order as declared
	in target.h.

2001-07-16  Nick Duffek  <nsd@redhat.com>

	* findvar.c (read_var_value): Apply value_as_pointer() to
	addresses retrieved from the target for LOC_BASEREG and
	LOC_BASEREG_ARG variables.

2001-07-16  Orjan Friberg  <orjanf@axis.com>

	* NEWS: New target CRIS.

2001-07-16  Elena Zannoni  <ezannoni@redhat.com>

        * top.c (show_commands): Remove extern decl of history_get, it's
	already in readline/history.h.
	
2001-07-16  Elena Zannoni  <ezannoni@redhat.com>

        * top.c (is_complete_command, init_cmd_lists, init_cli_cmds,
        execute_user_command, do_setshow_command, get_prompt, init_proc,
        serial_log_command): Remove extern declarations.  Include
        cli/cli-cmds.h, cli/cli-script.h, cli/cli-setshow.h, serial.h.
        * gdbcmd.h (execute_user_command): Remove declaration, it's already
        in cli/cli-script.h.
        * command.h (do_setshow_command): Remove declaration, it's already
        in cli/cli-setshow.h.
        * infrun.c: Include "cli/cli-script.h" for execute_user_command.
        * Makefile.in (infrun.o): Update dependencies.
        (top.o): Ditto.
        * cli/cli-setshow.h: Add comment for do_setshow_command.

2001-07-16  Eli Zaretskii  <eliz@is.elta.co.il>

	* cli/cli-cmds.c (shell_escape) [GLOBAL_CURDIR]: Condition the
	call to chdir on this symbol rather than on __DJGPP__.
	(CANT_FORK) [__MSDOS__]: Move from here...
	* defs.h (CANT_FORK) [__MSDOS__]: ...to here.
	(GLOBAL_CURDIR) [__MSDOS__]: Define.

2001-07-16  Orjan Friberg  <orjanf@axis.com>

	* configure.tgt: Recognise the CRIS architecture.
	* config/cris/cris.mt: New file for CRIS target.
	* cris-tdep.c: New file for CRIS target.
	
2001-07-15  Elena Zannoni  <ezannoni@redhat.com>

	* top.c (quit_cover, float_handler): Move definition up before use.
	(gdb_init): Move to end of file, to avoid calls to not yet defined
	functions.  
	Delete prototypes.
	
2001-07-14  Andrew Cagney  <ac131313@redhat.com>

	* serial.h (SERIAL_ASYNC): Delete.
	(DEPRECATED_SERIAL_FD): Delete.
	(SERIAL_DEBUG): Delete.
	(SERIAL_DEBUG_P): Delete.
	(SERIAL_DRAIN_OUTPUT): Delete.
	(SERIAL_FLUSH_OUTPUT): Delete.
	(SERIAL_FLUSH_INPUT): Delete.
	(SERIAL_SEND_BREAK): Delete.
	(SERIAL_RAW): Delete.
	(SERIAL_GET_TTY_STATE): Delete.
	(SERIAL_SET_TTY_STATE): Delete.
	(SERIAL_PRINT_TTY_STATE): Delete.
	(SERIAL_NOFLUSH_SET_TTY_STATE): Delete.
	(SERIAL_SETBAUDRATE): Delete.
	(SERIAL_SETSTOPBITS): Delete.
	(SERIAL_CAN_ASYNC_P): Delete.
	(SERIAL_IS_ASYNC_P): Delete.
	(SERIAL_UN_FDOPEN): Delete.
	(SERIAL_READCHAR): Delete.
	(SERIAL_CLOSE): Delete.
	(SERIAL_FDOPEN): Delete.
	(SERIAL_OPEN): Delete.
	* ser-unix.c: Update.
	* sparclet-rom.c: Update.
	* remote-bug.c: Update.
	* dsrec.c: Update.
	* xmodem.c: Update.
	* nindy-share/ttyflush.c: Update.
	* nindy-share/Onindy.c: Update.
	* utils.c: Update.
	* serial.c: Update.
	* remote-nindy.c: Update.
	* inflow.c: Update.
	* sparcl-tdep.c: Update.
	* sh3-rom.c: Update.
	* remote.c: Update.
	* remote-utils.c: Update.
	* remote-st.c: Update.
	* remote-sds.c: Update.
	* remote-rdp.c: Update.
	* remote-os9k.c: Update.
	* remote-nrom.c: Update.
	* remote-mips.c: Update.
	* remote-es.c: Update.
	* remote-e7000.c: Update.
	* remote-array.c: Update.
	* ocd.c: Update.
	* nindy-share/nindy.c: Update.
	* monitor.c: Update.
	
2001-07-14  Andrew Cagney  <ac131313@redhat.com>

	* mn10200-tdep.c: Replace value_ptr with ``struct value *''.
	* mcore-tdep.c: Ditto.
	* sparc-tdep.c: Ditto.
	* sh-tdep.c: Ditto.
	* rs6000-tdep.c: Ditto.
	* ppc-linux-tdep.c: Ditto.
	* m68hc11-tdep.c: Ditto.
	* ia64-tdep.c: Ditto.
	* i386-tdep.c: Ditto.
	* arm-linux-tdep.c: Ditto.
	* hppa-tdep.c: Ditto.
	* h8500-tdep.c: Ditto.
	* fr30-tdep.c: Ditto.
	* arm-tdep.c: Ditto.
	* alpha-tdep.c: Ditto.
	* d30v-tdep.c: Ditto.
	* d10v-tdep.c: Ditto.
	* m32r-tdep.c: Ditto.
	* mips-tdep.c: Ditto.
	* v850-tdep.c: Ditto.

2001-07-15  Elena Zannoni  <ezannoni@redhat.com>
 
	* top.c (readline_line_completion_function, noop_completer): Move
 	from here...  
	* completer.c (readline_line_completion_function, noop_completer):
 	...to here.
	* gdbcmd.h (readline_line_completion_function, noop_completer):
 	Move declarations from here...  
	* completer.h (readline_line_completion_function, noop_completer):
 	...to here.
	* corefile.c: Include completer.h.
	* source.c: Ditto.
	* symfile.c: Ditto.
	* Makefile.in: Update dependencies.

2001-07-15  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (go32_create_inferior): Support command lines longer
	than 126 characters.

2001-07-14  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* NEWS: New target 68HC11/68HC12.

2001-07-14  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* utils.c (query): Remove tui hacks; tui must use the query_hook.
	* top.c (command_loop): Remove tui insert_mode hacks; don't call
	tuiCleanUp because this must be made with atexit by tui.
	* symfile.c (symbol_file_command): Remove call to TUIDO
	* stack.c (show_and_print_stack_frame_stub): Remove tui check;
	not necessary when using the selected frame hooks.
	(print_stack_frame_stub): Likewise.
	(print_frame_info_base): Likewise.
	(print_frame_info): Likewise.
	(up_silently_command): Likewise.
	(down_silently_command): Likewise.
	(show_stack_frame): Likewise for TUIDO.
	(select_frame): Likewise.
	(select_and_print_frame): Likewise.
	(stack_publish_stopped_with_no_frame): Remove.
	(select_and_maybe_print_frame): Remove.
	* main.c (captured_main): Remove tui_fileopen and tuiInit; tui
	must use the initialize ui hook.
	* infrun.c (normal_stop): Remove call to TUIDO; tui must use the
	selected frame hooks.
	* event-top.c (command_handler): Remove tui insert_mode hack.
	* defs.h: Remove TUIDO; Only include tui.h.
	* breakpoint.c (mention): Remove calls to TUIDO.
	(delete_breakpoint): Remove tui hacks; tui must install
	the breakpoint hooks.

2001-07-14  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/xm-linux.h (KERNEL_U_ADDR): Move from here...
	* config/i386/nm-linux.h: ...to here.  Change comments about user
	area/struct a bit.

	* config/i386/xm-linux.h (HAVE_TERMIOS): Really remove.

	* Makefile.in (ALLDEPFILES): Add i386bsd-nat.c and i386bsd-tdep.c
	(i386bsd-tdep.o, i386bsd-nat.o): New targets.

2001-07-13  Elena Zannoni  <ezannoni@redhat.com>

	* remote-e7000.c (fetch_regs_from_dump): If register set is null,
	generate an internal error.
	(e7000_fetch_registers): Initialize variable 'wanted'.
	(e7000_wait): Initialize variable 'wanted_nopc'.
	(e7000_store_register): Fix sprintf compiler warnings.
	(sub2_from_pc): Ditto.
	(e7000_open): Close the descriptor, not the name.
	(e7000_load): Fix compiler warnings.
	(sub2_from_pc): Ditto.
	* Makefile.in (remote-e7000.o): Can now compile with -Werror.

2001-07-13  Mark Kettenis  <kettenis@gnu.org>

	* i386bsd-nat.c: Include <signal.h>, <stddef.h> and
	<sys/sysctl.h>.
	(store_inferior_registers): Wrap long line.
	(i386bsd_dr_get_status): Fix typo in comment.
	(_initialize_i386bsd_nat): New function.  * i386bsd-tdep.c: New
	file.  * config/i386/tm-fbsd.h (IN_SIGTRAMP): New define.
	(i386bsd_in_sigtramp): New prototype.
	(SIGTRAMP_START, SIGTRAMP_END): Redefine in terms...
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): ...these new
	(external) variables.
	(SIGCONTEXT_PC_OFFSET): Removed.
	(FRAME_SAVED_PC): New define.
	(i386bsd_frame_saved_pc): New function.  * config/i386/fbsd.mt
	(TDEPFILES): Add i386bsd-tdep.o.

2001-07-12  Daniel Jacobowitz  <drow@mvista.com>

	* mips-linux-tdep.c (_initialize_mips_linux_tdep):  Use ISO C
	definition.

2001-07-13  Mark Kettenis  <kettenis@gnu.org>

	* lin-lwp.c (lin_lwp_wait): Avoid check for resumed LWPs if there
	are no registered LWPs yet.

2001-07-12  Daniel Jacobowitz  <drow@mvista.com>

	* config/i386/nm-linux.h (CANNOT_FETCH_REGISTER): Call the right
	function.
	(CANNOT_STORE_REGISTER): Likewise.

2001-07-12  Keith Seitz  <keiths@redhat.com>

	* remote-rdp.c: Include "serial.h"

2001-07-12  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/remote-utils.c (remote_open):  Set VMIN to 1
	in HAVE_TERMIO/HAVE_TERMIOS cases.

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

	* lin-lwp.c (stop_wait_callback): Add support for flushing
	signals.  Use that in favour of the old code to get rid of
	superfluous SIGINTs.
	(lin_lwp_wait): Use the new support in stop_wait_callback to
	flush all but one SIGINT.

	* i386-tdep.c (i386_extract_return_value): Undo 2001-07-11 changes
	to comment.
	(i386_store_return_value): Improve comments about storing
	floating-point return values.

	* config/arm/xm-linux.h, config/i386/xm-linux.h,
	config/m68k/xm-linux.h, config/powerpc/xm-linux.h,
	config/sparc/xm-linux.h, config/ia64/xm-linux.h (HAVE_TERMIOS):
	Removed.  Taken care of by autoconf and terminal.h.

2001-07-12  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (mips_type_needs_double_align): New function.
	(mips_push_arguments): Align o32 structs to even argument
	registers if necessary.

2001-07-11  Daniel Jacobowitz  <drow@mvista.com>

	* config/djgpp/fnchange.lst: Add entries for
	mips-linux-nat.c and mips-linux-tdep.c.

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

	* config/powerpc/xm-linux.h: Fix corrupted file.

	* configure.in: Add check for sigsetjmp.
	* config/m68k/xm-linux.h (HAVE_SIGSETJMP): Removed.
	* config/xm-sysv4.h (HAVE_SIGSETJMP): Removed.
	* configure, config.in: Regenerated.

2001-07-11  Elena Zannoni  <ezannoni@redhat.com>

	* config/sh/tm-sh.h (struct gdbarch_tdep): Add
	FLOAT_ARGLAST_REGNUM, RETURN_REGNUM, ARG0_REGNUM, ARGLAST_REGNUM,
	PR_REGNUM fields.

	* sh-tdep.c (sh_skip_prologue_hard_way): Rename from
	skip_prologue_hard_way().
	(skip_prologue_hard_way): Make it a function pointer.
        (sh_print_register): Use function pointer do_pseudo_register,
	instead of sh_do_pseudo_register.
        (sh_do_registers_info): Ditto.
        (sh_gdbarch_init): Initialize do_pseudo_register.
	(IS_MOV_TO_R14): Rename from IS_MOV_R14.
	(skip_prologue_hard_way): Update.
	(sh_gdbarch_init): Move setting of frame_chain,
	get_saved_register, init_extra_frame_info, push_arguments,
	extract_return_value, pop_frame, store_struct_return,
	extract_struct_value_address, use_struct_convention,
	init_extra_frame_info to before target specific settings.
	(sh_gdbarch_init): Initialize new tdep fields
	FLOAT_ARGLAST_REGNUM, RETURN_REGNUM, ARG0_REGNUM, ARGLAST_REGNUM,
	PR_REGNUM.
	(sh_push_arguments): Use new gdbarch_tdep fields
	{ARG0,ARGLAST}_REGNUM.
	(sh_saved_pc_after_call, sh_nofp_frame_init_saved_regs,
	sh_init_extra_frame_info, sh_push_return_address,
	sh_generic_show_regs, sh3_show_regs, sh3e_show_regs,
	sh3_dsp_show_regs, sh4_show_regs, sh_dsp_show_regs): Update to use
	gdbarch_tdep->PR_REGNUM.
	(dr_reg_base_num, fv_reg_base_num): Move to earlier in the file.
	
2001-07-11  Daniel Jacobowitz  <drow@mvista.com>

	* config/mips/tm-linux.h: Include "tm-linux.h" instead of copying
	from it.  Move definitions of REALTIME_LO and REALTIME_HI above
	include.

2001-07-11  Daniel Jacobowitz  <drow@mvista.com>

	* MAINTAINERS: List myself for MIPS/Linux
	port.

2001-07-11  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/remote-utils.c (remote_open): Only
	check for F_SETOWN if we had F_SETFL and FASYNC.

2001-07-11  Daniel Jacobowitz  <drow@mvista.com>

	From Michael Fedrowitz  <michael.fedrowitz@informatik.uni-ulm.de>:

	* config/m68k/linux.mh: Remove core-regset.o.
	* m68klinux-nat.c: Fix comment.
	(supply_gregset): Change argument to elf_gregset_t *.
	(supply_fpregset): Change argument to elf_fpregset_t *.
	(fetch_core_registers): New function.
	(linux_elf_core_fns): Define.
	(_initialize_m68k_linux_nat): New function.

2001-07-11  Andrew Cagney  <ac131313@redhat.com>

	* configure.tgt: Mark d10v as pure multi-arch.
	* config/d10v/tm-d10v.h: Delete file.
	* config/d10v/d10v.mt (TM_FILE): Delete.

2001-07-10  Andrew Cagney  <ac131313@redhat.com>

	* serial.h (typedef serial_t): Delete. Replace all references to
	serial_t with `struct serial *'.
	* serial.c: Update.
	* nindy-share/ttyflush.c: Update.
	* nindy-share/ttyflush.c: Update.
	* nindy-share/Onindy.c: Update.
	* nindy-share/nindy.c: Update.
	* remote-rdp.c: Update.
	* remote-sds.c: Update.
	* remote-st.c: Update.
	* remote-nindy.c: Update.
	* remote-mips.c: Update.
	* remote-e7000.c: Update.
	* remote-os9k.c: Update.
	* remote-nrom.c: Update.
	* remote-es.c: Update.
	* remote-array.c: Update.
	* ocd.c: Update.
	* mon960-rom.c: Update.
	* dsrec.c: Update.
	* inflow.c: Update.
	* ser-e7kpc.c: Update.
	* sparclet-rom.c: Update.
	* srec.h: Update.
	* ser-tcp.c: Update.
	* ser-go32.c: Update.
	* sparcl-tdep.c: Update.
	* w89k-rom.c: Update.
	* utils.c: Update.
	* sh3-rom.c: Update.
	* remote.c: Update.
	* ser-pipe.c: Update.
	* ser-unix.c: Update.
	* ser-unix.h: Update.
	* xmodem.c: Update.
	* xmodem.h: Update.

2001-07-11  J.T. Conklin  <jtc@redback.com>

	From Greg McGary <greg@mcgary.org>:
	* gdbserver/remote-utils.c (remote_open): Set gdbserver as "owner"
	of SIGIO.
	(input_interrupt): Don't block on read, in case we got redundant
	SIGIO.  Don't gripe about redundant SIGIO.
	* gdbserver/low-hppabsd.c (mywait): Use waitpid().  Enable SIGIO
	handler while waiting.
	* gdbserver/low-linux.c (mywait): Likewise.
	* gdbserver/low-nbsd.c (mywait): Likewise.
	* gdbserver/low-sparc.c (mywait): Likewise.

2001-07-11  Keith Seitz  <keiths@redhat.com>

	* infrun.c (print_stop_reason): Add missing uiout field
	"reason" for SIGNAL_RECEIVED case.

2001-07-11  Mark Kettenis  <kettenis@gnu.org>

	* config/alpha/nm-linux.h (TARGET_ELF64, PSIGNAL_IN_SIGNAL_H):
	Remove unused macro's.

	* config/powerpc/nm-linux.h (NO_SYS_REG_H): Remove, it's no longer
	used.

2001-07-11  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (info_dos_cmdlist): New variable.
	(go32_info_dos_command): New function.
	(_initialize_go32_nat): Convert all DOS-specific commands into
	subcommands of "info dos".  Suggested by Andrew Cagney
	<ac131313@redhat.com>.

2001-07-11  Mark Kettenis  <kettenis@gnu.org>

	* config/nm-linux.h: Fix comments.

	* thread-db.c (enable_thread_event_reporting): Correct warning
	message about getting thread death breakpoint.
	Reported by John S Kallal <jskallal@home.com>.

	* i386-tdep.c (i386_extract_return_value): "Fix" comment.
	(i386_store_return_value): Frob FPU status and tag word to make
	sure the return value is the only value on the FPU stack.

	* config/tm-linux.h: Do not include <signal.h>.  Instead provide
	reasonable defaults for REALTIME_LO and REALTIME_HI if they're not
	already defined.
	* config/nm-linux.h: Include <signal.h>.
	[__SIGRTMIN] (REALTIME_LO, REALTIME_HI): Define to __SIGRTMIN and
	(__SIGRTMAX + 1) respectively.

2001-07-10  Andrew Cagney  <ac131313@redhat.com>

	* mcore-rom.c: Include "serial.h".
	* Makefile.in (mcore-rom.o): Depends on "serial.h".

2001-07-10  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (remote-bug.o): Depends on serial.h.
	* remote-bug.c: Include "serial.h".
	* MAINTAINERS: Mark m88k target as buildable.
	* TODO: Update.

2001-07-10  Jim Blandy  <jimb@redhat.com>

	Clean up the D10V port so that GDB and the target program no
	longer disagree on how big pointers are.
	* findvar.c (value_from_register): Remove special case code for D10V.
	* printcmd.c (print_frame_args): Same.
	* valops.c (value_at, value_fetch_lazy): Same.
	* values.c (unpack_long): Same.
	* gdbarch.sh: Changes to effect the following:
	* gdbarch.h (GDB_TARGET_IS_D10V, D10V_MAKE_DADDR,
	gdbarch_d10v_make_daddr_ftype, gdbarch_d10v_make_daddr,
	set_gdbarch_d10v_make_daddr, D10V_MAKE_IADDR,
	gdbarch_d10v_make_iaddr_ftype, gdbarch_d10v_make_iaddr,
	set_gdbarch_d10v_make_iaddr, D10V_DADDR_P,
	gdbarch_d10v_daddr_p_ftype, gdbarch_d10v_daddr_p,
	set_gdbarch_d10v_daddr_p, D10V_IADDR_P,
	gdbarch_d10v_iaddr_p_ftype, gdbarch_d10v_iaddr_p,
	set_gdbarch_d10v_iaddr_p, D10V_CONVERT_DADDR_TO_RAW,
	gdbarch_d10v_convert_daddr_to_raw_ftype,
	gdbarch_d10v_convert_daddr_to_raw,
	set_gdbarch_d10v_convert_daddr_to_raw, D10V_CONVERT_IADDR_TO_RAW,
	gdbarch_d10v_convert_iaddr_to_raw_ftype,
	gdbarch_d10v_convert_iaddr_to_raw,
	set_gdbarch_d10v_convert_iaddr_to_raw): Delete declarations.
	* gdbarch.c: Delete the corresponding definitions.
	(struct gdbarch): Delete members d10v_make_daddr,
	d10v_make_iaddr, d10v_daddr_p, d10v_iaddr_p,
	d10v_convert_daddr_to_raw, and d10v_convert_iaddr_to_raw.
	(startup_gdbarch): Remove initializers for the above.
	(verify_gdbarch, gdbarch_dump): Don't verify or dump them any
	more.
	* d10v-tdep.c (d10v_register_virtual_type): Rather that
	claiming the stack pointer and PC are 32 bits long (which they
	aren't), say that the stack pointer is an int16_t, and the
	program counter is a function pointer.  This allows the rest
	of GDB to make the appropriate conversions between the code
	pointer format and real addresses.
	(d10v_register_convertible, d10v_register_convert_to_virtual,
	d10v_register_convert_to_raw): Delete function; no registers
	are convertible now, so we use
	generic_register_convertible_not instead.
	(d10v_address_to_pointer, d10v_pointer_to_address): New gdbarch
	methods.
	(d10v_push_arguments, d10v_extract_return_value): Remove special
	cases for code and data pointers.
	(d10v_gdbarch_init): Set gdbarch_ptr_bit to 16, so that GDB and
	the target agree on how large pointers are.  Say that addresses
	are 32 bits long.  Register the address_to_pointer and
	pointer_to_address conversion functions.  Since no registers are
	convertible now, register generic_register_convertible_not as the
	gdbarch_register_convertible method instead of
	d10v_register_convertible.  Remove registrations for
        d10v_register_convert_to_virtual,
	d10v_register_convert_to_raw, gdbarch_d10v_make_daddr,
	gdbarch_d10v_make_iaddr, gdbarch_d10v_daddr_p,
	gdbarch_d10v_iaddr_p, gdbarch_d10v_convert_daddr_to_raw, and
	gdbarch_d10v_convert_iaddr_to_raw.
	
	* printcmd.c (print_scalar_formatted): If we are printing an
	address, remember that TARGET_ADDR_BIT is not always equal to
	TARGET_PTR_BIT.

	* valops.c (value_cast): When casting a pointer to an integer,
	don't convert it to an address.

2001-07-10  Andrew Cagney  <ac131313@redhat.com>

	* remote-utils.h (struct serial): Declare as opaque.  Remove
	include of "serial.h".
	* Makefile.in (remote_utils_h): Update.

	* monitor.h (struct serial): Declare as opaque.  Remove include of
	"serial.h".
	(struct monitor_ops): Replace serial_t with `struct serial *'.
	* monitor.c (monitor_desc): Ditto.

2001-07-10  Daniel Jacobowitz  <drow@mvista.com>

	* mips-linux-tdep.c: New file.
	* mips-linux-nat.c: New file.
	* config/mips/linux.mh: New file.
	* config/mips/linux.mt: New file.
	* config/mips/xm-linux.h: New file.
	* config/mips/nm-linux.h: New file.
	* config/mips/tm-linux.h: New file.
	* configure.host: Recognize mips*-*-linux*.
	* configure.tgt: Likewise.
	* NEWS: Mention mips*-*-linux* port.

2001-07-09  Andrew Cagney  <ac131313@redhat.com>

	* serial.h (struct serial): Rename `struct _serial_t'.
	* serial.c (XMALLOC): Define.
	(serial_open): Update. Use XMALLOC.
	(serial_fdopen): Ditto.

2001-07-07  Andrew Cagney  <ac131313@redhat.com>

	* gdbtypes.h (builtin_type_void_data_ptr): Rename
	builtin_type_ptr.
	* gdbtypes.c (builtin_type_void_data_ptr): Update.
	(build_gdbtypes): Update.
	(_initialize_gdbtypes): Update.
	* values.c (value_as_pointer): Update.
	* utils.c (host_pointer_to_address): Update.
	(address_to_host_pointer): Update.

2001-07-08  Andrew Cagney  <ac131313@redhat.com>

	* remote-udi.c (udi_wait): Make type, instead of name, of first
	parameter a ptid_t.

2001-07-07  Andrew Cagney  <ac131313@redhat.com>

	* ser-mac.c: Make obsolete.
	* Makefile.in (ser-mac.o): Ditto.

2001-07-08  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (go32_get_windows_version, print_mem, go32_sysinfo)
	(read_memory_region, get_descriptor, display_descriptor)
	(go32_sldt, go32_sgdt, go32_sidt): New functions.
	(top-level): Include ctype.h, utsname.h, dos.h, and go32.h.  Ifdef
	away `disable' from dos.h, since breakpoint.h defines an enum
	member of the same name, and GCC 2.7.2 barfs.
	(_initialize_go32_nat): Provide new commands dos-sysinfo, dos-ldt,
	dos-gdt, and dos-idt, all of them in the "info" class

2001-07-07  Kevin Buettner  <kevinb@redhat.com>

	* procfs.c (create_procinfo): Allocate space for saved_entryset
	and saved_exitset.
	(destroy_one_procinfo): Free space allocated to saved_entryset
	and saved_exitset.

2001-07-07  Andrew Cagney  <ac131313@redhat.com>

	* TODO (5.1): Update.

2001-07-07  Andrew Cagney  <ac131313@redhat.com>

	* symtab.c (main_name): New function.
	(set_main_name): New function.
	* symtab.h: Declare.
	* TODO: Update

	From 2000-03-05 Anthony Green <green@redhat.com>:
	* dbxread.c (process_one_symbol): Handle the N_MAIN stab by
	setting main_name.
	* blockframe.c (inside_main_func): Use main_name instead of
	"main".
	* symtab.c (find_main_psymtab): Ditto.
	* source.c (select_source_symtab): Ditto.
	* nlmread.c (nlm_symfile_read): Ditto.
	* rs6000-tdep.c (skip_prologue): Ditto.

2001-07-07  Andrew Cagney  <ac131313@redhat.com>

	* TODO: Convert most items into PRs.

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

	* lin-lwp.c (status_to_str): New function.
	(lin_lwp_wait): Use it to print debug messages where appropriate.

2001-07-06  Michael Chastain  <chastain@redhat.com>

	* i387-tdep.c (print_i387_value): Fix pointer glitch.

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

	* lin-lwp.c (count_events_callback): Fix formatting.  Turn check
	commented with "paranoia" into gdb_assert.
	(select_event_lwp_callback): Likewise.
	(cancel_breakpoints_callback): Bail out early if LP is the event
	LWP.  Add comment about backup up breakpoints.  Fix formatting and
	debug message.
	(select_event_lwp): Make solely repsonsible for switching event
	LWP.  Fix formatting and remove bogus "ERROR" debug message.
	Don't backup breakpoints from here.
	(lin_lwp_wait): Don't touch LP->status, let select_event_lwp
	handle that.  Only call select_event_lwp if we're not waiting for
	a specific LWP, i.e. when PID == -1.  Backup breakpoints from here.

2001-07-06  Michael Snyder  <msnyder@redhat.com>

	* procfs.c (procfs_resume): Silence noisy warning.

2001-06-12  Michael Snyder  <msnyder@redhat.com>

	* lin-lwp.c: Prevent thread starvation by using a monte carlo 
	method to choose which of several event threads to handle next.

	(stop_wait_callback): Defer pushback of breakpoint events until
	later; add SIGTRAP events to the queue of unhandled events.
	Keep calling waitpid until SIGSTOP retrieved.  If more than one
	non-SIGSTOP event is retrieved, push them back onto the process
	queue using kill.
	(count_events_callback, select_singlestep_lwp_callback, 
	select_event_lwp_callback, cancel_breakpoints_callback, 
	select_event_lwp): New functions.  Implement monte carlo method 
	for selecting which of several SIGTRAP threads to handle next.  
	Push back the breakpoint event for all threads other than the 
	selected one.
	(lin_lwp_wait): Call select_event_lwp to decide which of several
	sigtrapped lwps to handle next.
	(resume_callback): Disable code that attempts to handle
	step_resume breakpoints.  Let core gdb handle this.
	
2001-07-06  Jim Blandy  <jimb@redhat.com>

	* gdbtypes.h (builtin_type_void_func_ptr): New builtin type.
	* gdbtypes.c (builtin_type_void_func_ptr): Define the variable.
	(build_gdbtypes): Initialize it.
	(_initialize_gdbtypes): Swap it.

2001-07-04  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (mips32_op): Correct offset.
	(itype_op): Likewise.
	(itype_rs): Fix formatting.
	(itype_immediate): Fix formatting.
	(jtype_op): Correct offset.
	(jtype_target): Fix formatting.
	(rtype_op): Correct offset.
	(rtype_rs): Fix formatting.
	(rtype_rt): Likewise.
	(rtype_rd): Likewise.
	(rtype_shamt): Likewise.
	(rtype_funct): Likewise.

	(mips32_next_pc):  Fix formatting and comments.  Recognize
	coprocessor 1 branches.  Check the correct field for BLT family
	branches.  Use itype_rt instead of itype_rs for the second register
	of a BNE or BNEL branch.  Move (unreachable) default case.

2001-07-04  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.h (struct ui_out_impl): Add field is_mi_like_p.
	(ui_out_is_mi_like_p): Declare.
	* ui-out.c (ui_out_is_mi_like_p): Define.
	(default_ui_out_impl): Initialize is_mi_like_p to zero.
	* cli-out.c (cli_ui_out_impl): Ditto.
	* breakpoint.c (print_it_typical): Use ui_out_is_mi_like_p.
	(watchpoint_check, print_one_breakpoint, mention): Ditto.
	* infrun.c (print_stop_reason, normal_stop): Ditto.

2001-07-05  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (mips_software_single_step): New function.
	* config/mips/tm-mips.h: Add prototype for
	mips_software_single_step.

2001-07-05  Daniel Jacobowitz  <drow@mvista.com>

	* ppc-linux-nat.c (supply_gregset): Use elf_greg_t instead
	of greg_t.
	(fill_gregset): Likewise.

2001-07-05  Andrew Cagney  <ac131313@redhat.com>

	* objfiles.c (open_mapped_file): Use lbasename instead of
	basename.

2001-07-05  Jim Blandy  <jimb@redhat.com>

	* d10v-tdep.c (d10v_frame_chain, d10v_frame_init_saved_regs,
	show_regs, d10v_read_pc, d10v_write_pc, d10v_read_sp,
	d10v_write_sp, d10v_write_fp, d10v_read_fp,
	d10v_push_return_address): Call the functions d10v_make_daddr,
	d10v_make_iaddr, d10v_convert_iaddr_to_raw, and
	d10v_convert_daddr_to_raw, not the global macros D10V_MAKE_DADDR,
	D10V_MAKE_IADDR, D10V_CONVERT_IADDR_TO_RAW, and
	D10V_CONVERT_DADDR_TO_RAW.

	* dwarf2read (dwarf2_build_psymtabs_hard): Doc fix.

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

	* config/i386/xm-go32.h (HOST_I386): Removed.
	* config/i386/xm-linux.h (HOST_I386): Removed.

2001-07-04  Mark Kettenis  <kettenis@gnu.org>

	* i387-tdep.c (print_i387_value): Add extra space after final full
	stop in comment.

2001-07-04  Andrew Cagney  <ac131313@redhat.com>

	* TODO (5.1): Update.  Doco changes committed.

2001-06-29  Andrew Cagney  <ac131313@redhat.com>

	* config/arm/tm-arm.h: Include "floatformat.h".

2001-06-29  Andrew Cagney  <ac131313@redhat.com>

	* i387-tdep.c: Include "gdb_assert.h".
	(print_i387_value): Use extract_floating to extract the FP value
	from a zero padded local buffer.

2001-06-28  Andrew Cagney  <ac131313@redhat.com>

	* TODO: Delete all thread items.  The thread code was overhauled.

2001-07-04  Elena Zannoni  <ezannoni@redhat.com>

	* memattr.c (create_mem_region): Move n to next memory region,
	to avoid infinite loop.

	* memattr.h: Add copyright statement.
	* memattr.c: Ditto.

2001-07-04  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c (struct partial_die_info): New member: has_pc_info.
	(read_partial_die): Delete fourth argument; we return this info in
	the struct partial_die_info object itself now.
	(dwarf2_build_psymtabs_hard, scan_partial_symbols): Use the
	has_pc_info field of the partial die struct, rather than passing a
	variable by reference to read_partial_die.

	* dwarf2read.c (dwarf2_build_psymtabs_hard): Remove extraneous
	code in loop condition.

2001-07-03  Michael Snyder  <msnyder@redhat.com>

	* thread_db (find_new_threads_callback, thread_db_thread_alive, 
	attach_thread): Update comments.

2001-06-29  Ken Whaley  <ken@believe.com>

	* thread-db.c (attach_thread): Check for TD_THR_ZOMBIE in addition
	to TD_THR_UNKNOWN when looking for defunct zombie threads.
	(thread_db_thread_alive): Ditto.
	(find_new_threads_callback): Ditto.

2001-07-02  Daniel Jacobowitz  <drow@mvista.com>

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

2001-07-02  Daniel Jacobowitz  <drow@mvista.com>

	* solib-svr4.c: Include "elf/mips.h".
	(elf_locate_base): Make DT_MIPS_RLD_MAP block unconditional.

2001-07-02  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c (read_comp_unit, sibling_die, dump_die,
	dump_die_list, store_in_ref_table, follow_die_ref): Make these
	static; they're private functions.

2001-07-01  Mark Elbrecht <snowball@bigfoot.com>

	* coffread.c (coff_symfile_read): Parse DWARF2 info if present.

2001-06-28  Elena Zannoni  <ezannoni@redhat.com>

	* TODO: Add import of readline 4.2 as a gdb 5.2 task.

2001-06-29  Andrew Cagney  <ac131313@redhat.com>

	* config/djgpp/fnchange.lst: Sort.

2001-06-28  Andrew Cagney  <ac131313@redhat.com>

	* config/djgpp/fnchange.lst: Rename mi0-var-block.exp,
	mi0-var-cmd.exp, mi0-var-child.exp and mi0-var-display.exp.

2001-06-29  Andreas Jaeger  <aj@suse.de>

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

2001-06-28  Andrew Cagney  <ac131313@redhat.com>

	* remote-array.c (SWAP_TARGET_AND_HOST): Delete macro.
	(get_hex_word): Don't use HOST_BYTE_ORDER.
	(array_fetch_registers): Add variable ``reg''.  Use
	store_unsigned_integer to byte-swap the register.  Delete unused
	local ``regs''.

2001-06-28  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add Per Bothner to Java maintainers.

2001-06-28  Andrew Cagney  <ac131313@redhat.com>

	* rdi-share/unixcomm.c (SERIAL_PREFIX): Always provide a default.
	* rdi-share/hostchan.h (__unix): Hack, provide a default value.
	* rdi-share/host.h (__unix): Hack, define when __NetBSD__.
	* TODO: Update.
	* MAINTAINERS: Update.  arm-elf builds.

2001-06-28  Jim Blandy  <jimb@redhat.com>

	* d10v-tdep.c (d10v_ts2_dmap_register): Doc fix.

	* d10v-tdep.c (d10v_frame_chain_valid, d10v_use_struct_convention,
	d10v_breakpoint_from_pc, d10v_register_byte,
	d10v_register_raw_size, d10v_register_virtual_size,
	d10v_register_virtual_type, d10v_register_convertible,
	d10v_register_convert_to_virtual, d10v_register_convert_to_raw,
	d10v_make_daddr, d10v_make_iaddr, d10v_daddr_p, d10v_iaddr_p,
	d10v_convert_iaddr_to_raw, d10v_convert_daddr_to_raw,
	d10v_store_struct_return, d10v_store_return_value,
	d10v_extract_struct_value_address, d10v_frame_saved_pc,
	d10v_saved_pc_after_call, d10v_pop_frame, d10v_skip_prologue,
	d10v_frame_chain, d10v_frame_init_saved_regs,
	d10v_init_extra_frame_info, d10v_read_pc, d10v_write_pc,
	d10v_read_sp, d10v_write_sp, d10v_write_fp, d10v_read_fp,
	d10v_push_return_address, d10v_push_arguments,
	d10v_extract_return_value): Make these functions static.

2001-06-28  Andrew Cagney  <ac131313@redhat.com>

	From Fernando Nasser:
	* infrun.c (handle_inferior_event): Handle "nexti" inside function
	prologues.
	
2001-06-28  Michael Snyder  <msnyder@redhat.com>

	* infrun.c (handle_inferior_event): Replace prev_pc test in all
	calls to bpstat_stop_status (removed in 1999-09-24).  This test
	helps distinguish stepping over a breakpoint trap from stepping
	thru a jump to the instruction after a breakpoint trap.
	(handle_inferior_event): Don't bother writing the PC if
	DECR_PC_AFTER_BREAK is zero (optimization).
	* breakpoint.c (bpstat_stop_status): Add comment explaining the
	purpose and usage of the "not_a_breakpoint" argument in computing
	the breakpoint address.

2001-06-28  Andrew Cagney  <ac131313@redhat.com>

	From 2000-12-03 Stephane Carrez <Stephane.Carrez@worldnet.fr>:
	* monitor.c (setmem_resp_delim_pattern): New regexp pattern.
	(setreg_resp_delim_pattern): Likewise.
	(setmem_resp_delim_fastmap): New buffer.
	(setreg_resp_delim_fastmap): Likewise.
	(monitor_open): Initialize above regexp if they are defined.
	(monitor_write_memory): Use regexp to check the result of write.
	(monitor_store_register): Likewise to check result of register set.

2001-06-28  Andrew Cagney  <ac131313@redhat.com>

	From 2000-06-14 John Marshall <john_w_marshall@palm.com>:
	* coff-solib.c: Include symfile.h and objfiles.h to make
	OBJF_SHARED visible.

2001-06-28  Andrew Cagney  <ac131313@redhat.com>

	* configure.in (--enable-gdbmi): Enable by default.
	* configure: Regenerate.
	* TODO: Update.
	* NEWS: Update

2001-06-28  Joel Brobecker  <brobecker@act-europe.fr>

        * solib-osf.c (osf_in_dynsym_resolve_code): Add a comment
        explaining the consequences of always returning zero. No code
        change.

2001-06-28  Andrew Cagney  <ac131313@redhat.com>

	From 2001-06-08 Daniel Jacobowitz <djacobowitz@mvista.com>:
	* defs.h (enum target_signal): Add TARGET_SIGNAL_REALTIME_65
	to TARGET_SIGNAL_REALTIME_127.
	* target.c (struct signals): Add SIG63 to SIG127.
	(target_signal_from_host): Handle up to 127 signals.
	(do_target_signal_to_host): Likewise.
	
2001-06-27  Andrew Cagney  <ac131313@redhat.com>

	* remote-sds.c (sds_start_remote): Change type of ``c'' to int
	from possibly unsigned char.

2001-06-27  Andrew Cagney  <ac131313@redhat.com>

	* ser-ocd.c: Delete file.
	* Makefile.in (ALLDEPFILES): Remove ser-ocd.c
	(ser-ocd.o): Delete target.
	* TODO: Update.
	* NEWS: Update.

2001-06-27  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (Write After Approval): Sort.
	(Past Maintainers): Daniel Berlin stepped down as C++ maintainer.

2001-06-26  Andrew Cagney  <ac131313@redhat.com>

	* breakpoint.c (breakpoint_1): Always output the breakpoint
	headings.  Leave it to ui-out to decide which

2001-06-25  Andrew Cagney  <ac131313@redhat.com>

	* stack.c (print_frame): For ui_out, output a list of arguments.

2001-06-25  Kevin Buettner  <kevinb@redhat.com>

	* MAINTAINERS (paper trail): Update.

2001-06-25  Michael Snyder  <msnyder@redhat.com>

	* infrun.c: Eliminate the "thread_step_needed" state variable, 
	and replace it with a relatively simple test in resume.
	(resume): Replace thread_step_needed logic with a test for
	stepping, breakpoint_here_p and breakpoints_inserted.
	Move CANNOT_STEP_BREAKPOINT logic to after thread_step logic.
	(proceed): Discard thread_step_needed logic.
	(wait_for_inferior, fetch_inferior_event, handle_inferior_event):
	Discard thread_step_needed logic.

2001-06-24  Fernando Nasser  <fnasser@redhat.com>

	* remote-rdi.c (arm_rdi_wait): Fix return type in prototype.
	* rdi-share/host.h: Add missing parenthesis in conditional.

2001-06-22  J.T. Conklin  <jtc@redback.com>

	* configure.in: include nlist.h when checking for member som_addr
	in struct so_map.
	* configure: regenerate.

2001-06-21  Keith Seitz  <keiths@redhat.com>

	* cli-out.c (cli_out_new): Initialize new structure member
	"suppress_output".

2001-06-20  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.h (ui_out_table_header): Add parameter ``col_name''.
	(table_header_ftype): Ditto.
	* cli-out.c (cli_table_header): Update.
	* ui-out.c (ui_out_table_header): Update.
	(uo_table_header): Update.
	(default_table_header): Update.
	(append_header_to_list): Update.
	(struct ui_out_header): Add field ``col_name''.
	(append_header_to_list): Use xstrdup.  Initialize col_name.
	* breakpoint.c (breakpoint_1): Pass COL_NAME to
	ui_out_table_header.

2001-06-19  Andrew Cagney  <ac131313@redhat.com>

	* cli-out.c: Include "gdb_assert.h'.
	(struct ui_out_data): Add field ``suppress_output.
	(cli_table_begin): When NR_ROWS is zero, suppress_output.
	(cli_table_end): Clear suppress_output.
	(cli_table_body): Check suppress_output.
	(cli_table_header, cli_begin): Ditto.
	(cli_end, cli_field_int, cli_field_skip): Ditto.
	(cli_field_string, cli_field_fmt, cli_spaces): Ditto.
	(cli_text, cli_message, cli_wrap_hint): Ditto.
	* breakpoint.c (breakpoint_1): Close the ui_out table before
	printing the breakpoint not found message.

2001-06-18  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.c (ui_out_table_begin): Add parameter ``nr_rows''.
	(default_table_begin): Ditto.
	(uo_table_begin): Ditto.
	* cli-out.c (cli_table_begin): Ditto.
	* ui-out.h (ui_out_table_begin): Update
	(table_begin_ftype): Update.
	* breakpoint.c (breakpoint_1): Pass nr_printable_breakpoints to
	ui_out_table_begin.

2001-06-16  Andrew Cagney  <ac131313@redhat.com>

	* breakpoint.c (breakpoint_1): Restructure.  Compute the
	nr_printable_breakpoints.  Move the header output to before the
	main print breakpoints loop.
	(user_settable_breakpoint): New function.

2001-06-18  Andrew Cagney  <ac131313@redhat.com>

	* infrun.c, breakpoint.c: Use strncmp as the "mi" test.  Allow,
	"mi", "mi0" and "mi1".

2001-06-17  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Generate an error when conflicting macro
	definitions.  Generate an error when both pure multi-arch and
	"tm.h".
	* gdbarch.h, gdbarch.c: Regenerate.
	* defs.h (GDB_MULTI_ARCH_TM): Rewrite definition.
	
2001-06-17  Andrew Cagney  <ac131313@redhat.com>

	* config/sparc/tm-sun4sol2.h (GDB_MULTI_ARCH): Down grade to
	GDB_MULTI_ARCH_PARTIAL from two.

2001-06-17  Fernando Nasser  <fnasser@redhat.com>

	From 2001-06-15  Eirik Fuller  <eirik@hackrat.com>
	* cli/cli-script.c (free_command_lines): Reset list pointer.

2001-06-16  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.c (init_frame_pc_default): New function
	* arch-utils.h (init_frame_pc_default): Declare.
	* gdbarch.sh (INIT_FRAME_PC): Default to init_frame_pc_default and
	not init_frame_pc_noop.
	* gdbarch.h, gdbarch.c: Re-generate.
	* blockframe.c (INIT_FRAME_PC): Delete macro definition.
	* mips-tdep.c (mips_gdbarch_init): Set init_frame_pc to
	init_frame_pc_noop.

2001-06-16  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.c: Regenerate.  Out-of-sync with gdbarch.sh.

2001-06-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (CANNOT_FETCH_REGISTER): Multi-arch.
	(CANNOT_STORE_REGISTER): Ditto.
	* infptrace.c (CANNOT_FETCH_REGISTER): Delete definition.
	(CANNOT_STORE_REGISTER): Ditto.
	* regcache.c (CANNOT_STORE_REGISTER): Ditto.
	* lynx-nat.c (CANNOT_STORE_REGISTER): Ditto.
	* arch-utils.h (cannot_register_not): Define.
	* arch-utils.c (cannot_register_not): Declare.
	
2001-06-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Clarify pre/post default
	(INIT_FRAME_PC_FIRST, INIT_FRAME_PC): Multiarch.
	* blockframe.c (get_prev_frame): Remove #ifdef from around
	INIT_FRAME_PC_FIRST call.
	* arch-utils.c (init_frame_pc_noop): Define.
	* arch-utils.h (init_frame_pc_noop): Declare.
	* config/mips/tm-mips.h (INIT_FRAME_PC_FIRST): Delete.
	(INIT_FRAME_PC, mips_init_frame_pc_first): Ditto.
	* mips-tdep.c (mips_init_frame_pc_first): Make static.
	(mips_gdbarch_init): Initialize init_frame_pc_first.
	(mips_dump_tdep): Update.

2001-06-15  Michael Snyder  <msnyder@redhat.com>

	* infrun.c (context_switch): New function.  Abstract the operation
	of saving and restoring infrun's state when switching threads.
	(handle_inferior_event): Normalize the handling of the 'thread hop'
	event (when the wrong thread hits a thread-specific breakpoint, 
	and we need to solo-step that thread past the breakpoint).
	Call keep_going, instead of target_resume.  Handle the subsequent
	singlestep-trap as a normal event instead of just resuming.

2001-06-15  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.c (core_addr_identity): New function.  Rename
	default_convert_from_func_ptr_addr.
	* gdbarch.sh (CONVERT_FROM_FUNC_PTR_ADDR): Update.
	(ADDR_BITS_REMOVE): Define.  Default to core_addr_identity.
	* defs.h (ADDR_BITS_REMOVE): Delete macro definition.
	* config/mips/tm-mips.h (ADDR_BITS_REMOVE): Delete definition.
	* mips-tdep.c (mips_addr_bits_remove): Make static.
	(mips_gdbarch_init): Initialize addr_bits_remove.

2001-06-15  Andrew Cagney  <ac131313@redhat.com>

	From 2001-02-26  D.J. Barrow <djbarrow@de.ibm.com>:
	* configure.tgt: Add S/390 31 & 64 bit target configuration.
	* configure.host: Ditto for host.

2001-06-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (EXTRACT_STRUCT_VALUE_ADDRESS_P): Delete definition.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Change to a function with
	predicate.
	* gdbarch.h, gdbarch.c: Regenerate.
	* values.c (value_being_returned): Change the reference to
	EXTRACT_STRUCT_VALUE_ADDRESS_P to a function call.

2001-06-15  Joel Brobecker <brobecker@act-europe.fr>

        * MAINTAINERS: Add Paul Hilfinger and Joel Brobecker to the
        Write After Approval list.

2001-06-14  Michael Snyder  <msnyder@redhat.com>

	* remote.c (show_remote_protocol_qSymbol_packet_cmd, 
	set_remote_protocol_qSymbol_packet_cmd): New functions.
	(init_all_packet_configs, show_remote_cmd): Add qSymbol packet.
	(remote_check_symbols): New function.  Implement qSymbol packet, 
	allowing target to request symbol lookup service from gdb.
	(remote_open_1, remote_async_open_1): Call remote_check_symbols,
	allowing symbol lookup from exec_bfd on connection to target.
	(remote_new_objfile): New function.  Catch new objfile notifications
	from shared library module, and call remote_check_symbols.
	(_initialize_remote): Hook remote_new_objfile into the shared
	library notification chain.  Add "set remote symbol-lookup" command.

2001-06-14  Keith Seitz  <keiths@redhat.com>

	* tracepoint.c (trace_command): We now have tracepoint
	events. Get rid of those ugly hooks.
	(tracepoint_operation): Likewise.
	(trace_pass_command): Likewise.

2001-06-13  Michael Snyder  <msnyder@redhat.com>

	* gdbthread.h (struct thread_info): Add new fields: 
	current_line, current_symtab, step_sp, for saved infrun state.
	* thread.c (save_infrun_state, load_infrun_state): Save and
	restore current_line, current_symtab, and step_sp.
	(add_thread): Rather than adding assignments to initialize
	the new fields, just use memset (tp, 0, sizeof (*tp).
	This way future new fields will not be overlooked.
	* infrun.c (handle_inferior_event): Save and restore save_sp,
	current_line, and current_symtab when switching threads.

2001-06-13  Elena Zannoni  <ezannoni@redhat.com>

	* MAINTAINERS: Add Andrew Cagney as co-maintainer of
        testsuite/gdb.mi.

2001-06-11  Andrew Cagney  <ac131313@redhat.com>

	* symtab.c (lookup_symtab_1): Replace basename with lbasename.
	(lookup_partial_symtab, file_matches): Ditto.
	(make_source_files_completion_list): Ditto.
	(make_file_symbol_completion_list): Ditto.  Make local char*
	variable ``tail'' constant.
	(make_source_files_completion_list): Ditto with ``base_name''.
	* source.c (open_source_file): Use lbasename. Make ``p'' const
	char *.

2001-06-13  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/i386/xm-go32.h (SLASH_P, ROOTED_P, SLASH_CHAR)
	(SLASH_STRING): Remove unused definitions.
	* config/i386/xm-cygwin.h: Likewise.

2001-06-12  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.c (ui_out_list_begin): Add parameter ``id''.
	(make_cleanup_ui_out_list_begin_end): Ditto.  Open the list.
	* ui-out.h: Update declarations.

Mon Jun 11 17:26:43 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* source.c (openp): Make parameters ``path'' and ``string''
 	constant.
	(openp): Use alloca to safely duplicate ``string''. Make local
 	variables ``p'' and ``p1'' constant. Delete char* casts.
	* defs.h: Update.

	* symtab.c (lookup_symtab_1): Make parameter ``name'' constant.
	(lookup_symtab, lookup_partial_symtab): Ditto.
	* symtab.h (lookup_symtab, lookup_partial_symtab): Update.

2001-06-11  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.h (ui_out_table_begin): Make char* parameters constant.
	(ui_out_table_header, ui_out_field_int): Ditto.
	(ui_out_field_core_addr, ui_out_field_string): Ditto.
	(ui_out_field_stream, ui_out_field_fmt): Ditto.
	(ui_out_field_skip, ui_out_text, ui_out_message): Ditto.
	* ui-out.c (ui_out_table_begin, ui_out_table_header): Update.
	(ui_out_field_core_addr, ui_out_field_stream): Update.
	(ui_out_field_string, ui_out_field_fmt): Update.
	(ui_out_text, ui_out_message): Update.
	(append_header_to_list): Make char* parameters constant.
	(uo_table_header, uo_table_begin): Ditto.
	(uo_field_int, uo_field_skip): Ditto.
	(uo_field_string, uo_field_fmt): Ditto.
	(uo_text, uo_message): Ditto.

2001-06-11  Eli Zaretskii  <eliz@is.elta.co.il>

	* completer.c (gdb_completer_loc_break_characters): New variable.
	(line_completion_function): If we are completing on locations,
	back up the start of word pointer past all characters which can
	appear in a location spec.
	(location_completer): New function.

	* completer.h: Add prototype for location_completer.

	* symtab.c (make_source_files_completion_list)
	(add_filename_to_list, not_interesting_fname): New functions.
	(filename_seen): New function, body extracted from
	output_source_filename.
	(output_source_filename): Call filename_seen to check if the file
	was already printed.
	(make_symbol_completion_list): If TEXT includes a
	double-quoted string, return an empty list, not NULL.
	(make_file_symbol_completion_list): New function, similar to
	make_symbol_completion_list but with an additional argument
	SRCFILE.

	* symtab.h (make_file_symbol_completion_list)
	(make_source_files_completion_list): Add prototypes.

	* breakpoint.c (_initialize_breakpoint): Make location_completer
	be the completion function for all commands which set breakpoints
	and watchpoints.
	(top-level): #include "completer.h".

	* tracepoint.c (_initialize_tracepoint): Make location_completer
	be the completion function for the "trace" command.
	(top-level): #include "completer.h".

	* printcmd.c (_initialize_printcmd): Make location_completer be
	the completion function for the "print", "inspect", "call", and
	"disassemble" commands.
	(top-level): #include "completer.h".

	* infcmd.c (_initialize_infcmd): Make location_completer be the
	completion function for the "go", "jump", and "until" commands.
	(top-level): #include "completer.h".

2001-06-10 Christopher Faylor <cgf@redhat.com>

	* gnu-regex.c: Eliminate obsolete check for _MSC_VER.
	* utils.c (notice_quit): Remove dummy function only used for _MSC_VER.
	* values.c (unpack_double): Remove obsolete check for _MSC_VER.
	* defs.h: Ditto.
	* m32r-rom.c: Ditto.
	* p-exp.y: Ditto.
	* ser-e7kpc.c: Ditto.  Define WIN32_LEAN_AND_MEAN under _WIN32, for
	faster compilation.
	(get_ds_base): Remove _MSC_VER version of this function.
	* nindy-share/ttyflush.c: Ditto.
	* rdi-share/host.h: Ditto.
	* ser-go32.c (dos_readchar): Remove call to obsolete function.
	* remote-sim.c (gdb_os_poll_quit): Ditto.
	* remote-e7000.c (expect): Remove obsolete #if 0'ed code.

	* main.c (captured_main): Eliminate special Cygwin checks.
	* ser-tcp.c: Remove unneeded __CYGWIN__ guard against system include.

2001-06-09  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (gdbcmd_h): Add ui_out_h.
	(breakpoint.o, infcmd.o, main.o, printcmd.o, stack.o): Ditto.
	(thread.o, top.o): Ditto.

	* ui-out.h (table_begin_ftype): Make string parameters constant.
	(table_header_ftype): Ditto.
	(field_int_ftype): Ditto.
	(field_skip_ftype): Ditto.
	(field_string_ftype): Ditto.
	(field_fmt_ftype): Ditto.
	(text_ftype): Ditto.
	(message_ftype): Ditto.
	* cli-out.c (cli_table_begin): Ditto.
	(cli_table_header): Ditto.
	(cli_field_int): Ditto.
	(cli_field_skip): Ditto.
	(cli_field_string): Ditto.
	(cli_field_fmt): Ditto.
	(cli_text): Ditto.
	(cli_message): Ditto.
	(out_field_fmt): Ditto.
	* ui-out.c (default_table_begin): Ditto.
	(default_table_header): Ditto.
	(default_field_int): Ditto.
	(default_field_skip): Ditto.
	(default_field_string): Ditto.
	(default_field_fmt): Ditto.
	(default_text): Ditto.
	(default_message): Ditto.

2001-06-08  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (delete_breakpoint): Pass mark_inserted to 
	remove_breakpoint, so that the subsequent test for
	bpt->inserted will succeed, and duplicates will be fixed up.

2001-06-08  Per Bothner  <per@bothner.com>

	* dwarf2read.c (set_cu_language):  Handle DW_LANG_Java.

2001-06-07  Keith Seitz  <keiths@redhat.com>

	* tracepoint.c (tracepoint_opertation): Add ui event
	notifications.
	(trace_pass_command): Ditto.
	
2001-06-07  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (Write After Approval): Note the entry criteria.
	(HP/PA): Jeff Law stepped down

2001-06-07  Jim Blandy  <jimb@redhat.com>

	* gdbarch.sh: Make sure that '[' doesn't interpret interesting
	variable values as operators.

2001-06-07  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh: Fix quote escaping which was obsoleted
	by last patch.

2001-06-07  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh: Make if statements and tests
	a little more portable.
	Don't use shell's echo command to put strings containing
	escaped characeters into a file -- different flavors of /bin/sh
	require differnt levels of escaping. Use cat <<EOF instead.
	Our internal field separator is a colon. Change all
	commands which assume it is a space.

2001-06-06  Mark Kettenis  <kettenis@gnu.org>

	* lin-lwp.c (struct lwp_info): Add member `resumed'.
	(iterate_over_lwps): Make sure we can handle CALLBACK deleting the
	LWP it's called for.
	(lin_lwp_attach): Mark LWP as resumed to make sure the fake
	SIGSTOP is reported.
	(resume_clear_callback): New function.
	(resume_set_callback): New function.
	(lin_lwp_resume): Mark all LWP's that we're going to resume as
	resumed, and unmark all others.
	(status_callback): Only report a pending wait status if we pretend
	that LP has been resumed.
	(resumed_callback): New function.
	(lin_lwp_wait): Add assertions to check that LWP's are properly
	marked as resumed.  Partially revert 2001-05-25 patch by Michael
	Snyder: do not resume all threads.  Add comment explaining the
	problems associated with this bit of code.

2001-06-07  Keith Seitz  <keiths@redhat.com>

	* MAINTAINTERS: Syd Polk is stepping down from
	maintaining libgui. I am replacing him.

2001-06-07  Eli Zaretskii  <elis@is.elta.co.il>

	* config/mips/tm-irix6.h: New file.

	* config/mips/irix6.mh: New file.

	* config/mips/irix6.mt: New file.

	* config/mips/xm-irix6.h: New file.

	* config/mips/nm-irix6.h: New file.

	* mips-tdep.c (mips_gdbarch_init) <MIPS_ABI_N32>: Set up the
	disassembler info in tm_print_insn_info as appropriate for the N32
	ABI.  Force N32 ABI to be the default if the CPU is R8000 or
	R10000.

	* configure.tgt (mips*-sgi-irix6*): Map to irix6.

	* configure.host (mips*-sgi-irix6*): Ditto.

2001-06-07  Andrew Cagney  <ac131313@redhat.com>

	* gnu-v3-abi.c: Include "gdb_assert.h".
	(build_gdb_vtable_type): Replace abort() with gdb_assert().

2001-06-06  Jim Blandy  <jimb@redhat.com>

	* cp-abi.h: Rearrange code to put documentation comments above the
	functions we export.  The actual function table itself simply
	refers to those functions.  Minor doc fixes.

	* gdbarch.sh: Changes to effect the following:
	* gdbarch.c (initialize_non_multiarch): New function.
	* gdbarch.h (initialize_non_multiarch): New declaration.
	* arch-utils.c (initialize_current_architecture): For
	non-multiarch configurations, call initialize_non_multiarch.

2001-06-06  Andrew Cagney  <ac131313@redhat.com>

	* symfile.c (compare_psymbols): Replace PTR with void*. Delete
	declaration.
	(compare_symbols): Ditto.

2001-06-06  Jonathan Larmour  <jlarmour@redhat.com>

	* arch-utils.c (generic_prepare_to_proceed): Allow for having
	stopped due to a Ctrl-C as well as breakpoints.

	* hppa-tdep.c (hppa_prepare_to_proceed): Add FIXME as this may not
	support thread switches after Ctrl-C.
	* lin-lwp.c (lin_lwp_prepare_to_proceed): Ditto.
	* linux-thread.c (linuxthreads_prepare_to_proceed): Ditto.
	* m3-nat.c (mach3_prepare_to_proceed): Ditto.

2001-06-06  Jim Blandy  <jimb@redhat.com>

	* gdbarch.sh, gdbarch.c: Revert change of 2001-06-01; all
	per-architecture data should be registered at initialization time,
	before any gdbarch objects get used, so the generality is
	unnecessary.

2001-06-06  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh (function_list): Add tracepoint_create,
	tracepoint_delete, and tracepoint_modify events.
	* gdb-events.c: Regenerated.
	* gdb-events.h: Regenerated.

2001-06-06  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh: Update copyrights.
	Change free to xfree.
	* gdb-events.c: Regenerated.
	* gdb-events.h: Regenerated.

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

	* source.c (mod_path, openp): Use #ifdef HAVE_DOS_BASED_FILE_SYSTEM
	instead of #if HAVE_DOS_BASED_FILE_SYSTEM.
	* completer.c: Ditto.
	* cli/cli-cmds.c (cd_command): Ditto.

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

	* mips-tdep.c (show_mipsfpu_command): Remove unused variable msg.
	(mips_set_processor_type_command): Remove unused variable j.
	(mips_breakpoint_from_pc): Declare breakpoint instruction
	sequences as unsigned char, to avoid compiler warnings.

	* source.c (mod_path, openp): Use HAVE_DOS_BASED_FILE_SYSTEM
	instead of system-specific define's like _WIN32 and __MSDOS__.
	Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH instead of SLASH_P and
	ROOTED_P.
	(top-level): #include "filenames.h".

	* solib.c (solib_open): Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH
	instead of SLASH_CHAR, ROOTED_P and SLASH_P.
	(top-level): #include "filenames.h".

	* defs.h (SLASH_P, SLASH_CHAR, ROOTED_P): Remove definitions.
	(SLASH_STRING): Define only for _WIN32.

	* completer.c: Use HAVE_DOS_BASED_FILE_SYSTEM instead of
	__MSDOS_.

	* cli/cli-cmds.c (cd_command): Use IS_DIR_SEPARATOR and
	IS_ABSOLUTE_PATH instead of SLASH_P and ROOTED_P.  Replace
	system-specific ifdefs with HAVE_DOS_BASED_FILE_SYSTEM.
	(top-level): #include "filenames.h".

	* go32-nat.c (go32_wait): Change the return value to ptid_t.

	* config/djgpp/fnchange.lst: Add two new files in the
	gdb/testsuite/gdb.c++/ directory to the remapped names.

	* config/djgpp/djconfig.sh (lt_cv_sys_max_cmd_len): Set to 12KB.

2001-06-01  Jim Blandy  <jimb@redhat.com>

	Expand the gdbarch per-architecture data vector as needed, rather
	than requiring that all per-architecture data be registered before
	the first gdbarch object is allocated.
	* gdbarch.sh: Changes to effect the following:
	* gdbarch.c (alloc_gdbarch_data, init_gdbarch_data): Delete
	declarations and definitions.
	(check_gdbarch_data): New function, and declaration.
	(gdbarch_alloc): Don't call alloc_gdbarch_data; leaving the fields
	zero is good enough.
	(free_gdbarch_data): Tolerate a null data pointer.  Free only
	those data items gdbarch->data actually has allocated.
	(set_gdbarch_data, gdbarch_data): Call check_gdbarch_data.
	(gdbarch_update_p): No need to call init_gdbarch_data.

2001-06-01  Kevin Buettner  <kevinb@redhat.com>

	* ia64-tdep.c (is_float_or_hfa_type_recurse): Call check_typedef()
	on types that we wish to recurse on.
	(slot_alignment_is_next_even): New function.
	(ia64_push_arguments): Call slot_alignment_is_next_even() to
	examine the type in order to decide if it's necessary to skip
	an odd slot.

2001-06-01  Michael Snyder  <msnyder@redhat.com>

	* thread.c (delete_step_resume_breakpoint): New function.
	Maintain internal consistency of the thread list while deleting
	a step_resume_breakpoint.
	* gdbthread.h (delete_step_resume_breakpoint): Export.
	* breakpoint.c (bpstat_find_step_resume_breakpoint):
	Make thread-aware: don't return a step_resume_breakpoint 
	for the wrong thread.
	* infrun.c (wait_for_inferior): Call delete_step_resume_breakpoint
	instead of delete_breakpoint_current_contents.
	(fetch_inferior_event): Ditto.
	(handle_inferior_event): Call delete_step_resume_breakpoint
	instead of delete_breakpoint.
	* infrun.c (handle_inferior_event): After singlestepping over a
	thread-specific breakpoint, use currently_stepping() to decide
	whether to step or continue.

2001-06-01  Jim Blandy  <jimb@redhat.com>

	* gnu-v3-abi.c (gnu_v3_abi_ops, vtable_type_gdbarch_data): Make
	these static --- there's no reason other files should use these.

	* partial-stab.h (case N_FUN: case 'f':, case N_FUN: case 'F':)
	Fix memory leak.

	* partial-stab.h: New complaint: function_outside_compilation_unit.
	(case N_FUN: case 'f':, case N_FUN: case 'F':): If pst is zero,
	complain, and don't try to set pst's start address.

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

	* ia64-linux-tdep.c (IA64_LINUX_SIGCONTEXT_OFFSET):  Revise to
	match the location at which the kernel is placing the sigcontext
	struct.

	* ia64-tdep.c (max_skip_non_prologue_insns): New static global.
	(refine_prologue_limit): New function.
	(examine_prologue):  Further limit number of instructions
	scanned by calling refine_prologue_limit().  Revise way in
	which the end of prologue address is computed for frameless
	functions.

2001-05-29  Christopher Faylor  <cgf@redhat.com>

	* partial-stab.h: Revert previous patch.

2001-05-29  Christopher Faylor  <cgf@redhat.com>

	* partial-stab.h: Consistently guard against pst being NULL.

2001-05-29  Alexandre Oliva  <aoliva@redhat.com>

	* symfile.c (compare_psymbols, compare_symbols): Declare using
	PTR, as in the definition.
	* minsyms.c (compare_minimal_symbols): Likewise.
	* coffread.c (find_targ_sec): Likewise.
	* elfread.c (free_elfinfo, elf_locate_sections): Likewise.
	* mipsread.c (alphacoff_locate_sections): Likewise.
	* mdebugread.c (compare_blocks): Likewise.

2001-05-25  Nick Duffek  <nsd@redhat.com>

	* solib.c (update_solib_list): Move target_resize_to_sections()
	into solib_map_sections() loop.
	(info_sharedlibrary_command): Try bfd_arch_bits_per_address() if
	bfd_get_arch_size() fails.

2001-05-25  Nick Duffek  <nsd@redhat.com>

	* Makefile.in (osfsolib.c, osfsolib.o): Rename to solib-osf.c and
	solib-osf.o.
	* config/alpha/alpha-osf1.mh (NATDEPFILES): Replace osfsolib.o
	with solib-osf.o and solib.o.
	* config/alpha/alpha-osf2.mh: Likewise.
	* config/alpha/alpha-osf3.mh: Likewise.
	* solib-osf.c: New file, renamed and largely rewritten from
	osfsolib.c.

2001-05-25  Michael Snyder  <msnyder@redhat.com>

	* lin-lwp.c (lin_lwp_attach_lwp): Call stop_wait_callback,
	to consume the SIGSTOP generated by PTRACE_ATTACH.
	(stop_wait_callback): If a SIGTRAP or a SIGINT event is consumed,
	try again to get the SIGSTOP event.
	(lin_lwp_wait): Resume all threads when ignoring a signal.
	This will insure that newly attached threads get resumed.
	* lin-lwp.c (stop_wait_callback): Discard redundant SIGINT events.
	* remote.c (remote_write_bytes): Update 'p' packet pointer.

2001-05-25  Jim Blandy  <jimb@redhat.com>

	* gnu-v2-abi.c (gnuv2_virtual_fn_field): There's no need to clear
	VALUE_POINTED_TO_OFFSET here; if value_cast doesn't return a
	useful value, then we should fix that instead.

2001-05-24  Nick Duffek  <nsd@redhat.com>

	* solist.h (struct so_list): Document the requirement that
	current_sos initialize some fields to 0.

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

	* gnu-nat.c: Include <ctype.h>.
	(gnu_pid_to_exec_file): Add PID parameter.
	(set_sig_thread_cmd): Use PIDGET on return value from
	thread_id_to_pid.
	(proc_string): Use MERGEPID to construct argument to
	pid_to_thread_id.

2001-05-22  Kevin Buettner  <kevinb@redhat.com>

	* breakpoint.c (breakpoint_address_is_meaningful): New function.
	(check_duplicates): Don't compare non-meaningful addresses.

2001-05-22  Michael Snyder  <msnyder@redhat.com>

	* thread-db.c: Allow for defunct zombie threads.	
	(attach_thread): Do not attempt to attach zombie thread.
	(thread_db_thread_alive): Return false for defunct zombie thread.
	(find_new_threads_callback): Don't add defunct zombie thread to list.

2001-05-22  Jim Blandy  <jimb@redhat.com>

	Add support for the GNU V3 C++ ABI.
	(Includes changes by Dan Berlin.)

        * gnu-v3-abi.c: New file.
	* minsyms.c: #include "value.h" and "cp-abi.h".
	(install_minimal_symbols): Check the minimal symbol table for
	symbols that look mangled in the V3 style, and select the V3 ABI
	if we find any.
	* Makefile.in (SFILES): Add gnu-v3-abi.c.
	(COMMON_OBS): Add gnu-v3-abi.o.
	(gnu-v3-abi.o): Add new rule.
	(minsyms.o): Depend on $(cp_abi_h) and $(value_h).

2001-05-21  Jim Blandy  <jimb@redhat.com>

	* values.c (value_primitive_field): If we're extracting a base
	class, then the type of the result should be the base class being
	extracted, not the type of which it is a base class.

	* value.h (struct value): Doc fix, and rearrange members to place
	them near their explanations.

2001-05-21  Michael Snyder  <msnyder@redhat.com>

	* remote.c (remote_async_wait): Added new variable fieldsize.
	Add fieldsize (return value of hex2bin) to string pointer p.

2001-05-20  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (m68hc11_pop_frame): Fix stack pointer computation.
	(m68hc11_analyze_instruction): Update the pc correctly.
	(m68hc11_guess_from_prologue): Take into account the stack correction
	for the saving address.

2001-05-07  Daniel Berlin  <dan@cgsoftware.com>

	Changes by Jim Ingham:
	
	* values.c (value_change_enclosing_type): New function.  If the
	new enclosing type is larger than the old one, we need to allocate
	more space.
	* value.h: Add value_change_enclosing_type prototype.
	* valops.c (value_cast): Use it.
	(value_assign): Use it.
	(value_addr): Use it.
	(value_ind): Use it.
	(value_full_object): Use it.
	
2001-05-07  Daniel Berlin  <dan@cgsoftware.com>

	* values.c (value_static_field): Handle static fields that have a
	constant value.

2001-05-17  Michael Snyder  <msnyder@redhat.com>

	* blockframe.c (create_new_frame): Zero all the fields via memset,
	rather than zeroing them one by one.

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

	* top.c (user_args): Remove unused declaration.

2001-05-16  Michael Snyder  <msnyder@redhat.com>

	* infcmd.c (do_registers_info): Move alloca outside of loop.

2001-05-15  John S Kallal  <jskallal@home.com>

	* remote.c (remote_wait): Added new variable fieldsize.
	Add fieldsize (return value of hex2bin) to string pointer p.

2001-05-15  Mark Kettenis  <kettenis@gnu.org>

	* sparc-tdep.c (sparc_gdbarch_init): Get the architecture from
	info.bfd_arch_info.

2001-05-14  Kevin Buettner  <kevinb@redhat.com>

	* lin-lwp.c (detach_callback, lin_lwp_wait, lin_lwp_pid_to_str):
	Adjust format strings for printing LWPs to account for the fact
	that the type returned by GET_LWP() is now a long instead of an
	int.

2001-05-14  Kevin Buettner  <kevinb@redhat.com>

	* inferior.h (null_ptid, minus_one_ptid): New variable declarations.
	(ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_lwp)
	(ptid_get_tid, ptid_equal): New function declarations.
	* infrun.c (null_ptid, minus_one_ptid): New variables.
	(ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_lwp)
	(ptid_get_tid, ptid_equal): New functions.
	(_initialize_infrun): Initialize null_ptid, minus_one_ptid,
	inferior_ptid, and target_last_wait_ptid.

	* defs.h (ptid_t): Redefine to be a struct rather than an int.
	(pid_to_ptid, null_ptid, ptid_equal): Delete these macros.
	(PIDGET, TIDGET, MERGEPID): Redefine these macros using the
	new ptid accessors and constructor.

	* config/i386/tm-i386v42mp.h (PIDGET, TIDGET, LIDGET, MERGEPID,
	MKLID, MKTID, ISTID): Provide new definitions for these macros.
	The old macros are retained, but disabled via #if 0 in order
	to aid in future restructuring.  See FIXME.

	* arm-linux-nat.c (PIDGET, TIDGET): Delete macro definitions.
	* i386-linux-nat.c (PIDGET, TIDGET): Likewise.
	* infptrace.c (PIDGET, TIDGET): Likewise.
	* lin-lwp.c (PIDGET0, PIDGET, TIDGET, MERGEPID): Likewise.
	* lin-thread.c (PIDGET0, PIDGET, TIDGET, MERGEPID): Likewise.
	* proc-service.c (MERGEPID): Likewise.
	* procfs.c (PIDGET, TIDGET, MERGEPID): Likewise.
	* thread-db.c (PIDGET0, PIDGET, TIDGET, MERGEPID): Likewise.
	* config/nm-linux.h (PIDGET0, PIDGET, TIDGET, MERGEPID): Likewise.
	* config/i386/tm-i386sol2.h (PIDGET0, PIDGET, TIDGET, MERGEPID):
	Likewise.
	* config/sparc/tm-sun4sol2.h (PIDGET0, PIDGET, TIDGET, MERGEPID):
	Likewise.

	* lin-lwp.c (THREAD_FLAG): Delete macro definition.
	(GET_LWP): Redefine in terms of ptid_get_lwp().
	(GET_PID): Redefine in terms of ptid_get_pid().
	(is_lwp): Redefine without the need for THREAD_FLAG.
	(BUILD_LWP): Redefine in terms of ptid_build().
	* lin-thread.c (THREAD_FLAG): Delete macro definition.
	(GET_LWP): Redefine in terms of ptid_get_lwp().
	(GET_PID): Redefine in terms of ptid_get_pid().
	(GET_THREAD): Redefine in terms of ptid_get_tid().
	(BUILD_THREAD, BUILD_LWP): Redefine in terms of ptid_build().
	(is_lwp, is_thread): Redefine.
	(linux_child_wait, check_all_signal_numbers)
	(linuxthreads_discard_global_state, attach_thread): Declare these
	functions to squash warnings about missing declarations.
	* sol-thread.c (THREAD_FLAG): Delete macro definition.
	(GET_PID): Redefine in terms of ptid_get_pid().
	(GET_LWP): Redefine in terms of ptid_get_lwp().
	(GET_THREAD): Redefine in terms of ptid_get_tid().
	(BUILD_THREAD, BUILD_LWP): Redefine in terms of ptid_build().
	(is_lwp, is_thread): Redefine.
	* thread-db.c (THREAD_FLAG): Delete macro definition.
	(GET_PID): Redefine in terms of ptid_get_pid().
	(GET_LWP): Redefine in terms of ptid_get_lwp().
	(GET_THREAD): Redefine in terms of ptid_get_tid().
	(BUILD_THREAD, BUILD_LWP): Redefine in terms of ptid_build().
	(is_lwp, is_thread): Redefine.

	* corelow.c (add_to_thread_list, get_core_register_section):
	Eliminate hacks needed to prevent regressions when inferior_ptid
	wasn't wide enough to hold the core file thread id in the pid
	component of inferior_ptid.

2001-05-14  Michael Snyder  <msnyder@redhat.com>

	* remote.c (hex2bin): 	Make first argument const.
	Require explicit count, don't accept null-terminated str.
	(remote_resume, remote_async_resume): White space fix-up.
	(remote_write_bytes): Set nr_bytes to return value of bin2hex.

2001-05-13  Mark Kettenis  <kettenis@gnu.org>

	* symtab.c (lookup_symtab_1): Use lbasename (NAME) instead of
	basename (NAME).  The FreeBSD basename returns a pointer to a
	static buffer, even if it's simply returning a string identical to
	its argument.
	(lookup_partial_symtab): Likewise.

2001-05-14  Michael Snyder  <msnyder@redhat.com>

	* solib.c, solib.h: Add comment for function no_shared_libraries.
	
2001-05-14  Kevin Buettner  <kevinb@redhat.com>

	* solib.h (no_shared_libraries): Make declaration match definition
	in solib.c.

2001-05-14  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (remote_write_bytes): Set nr_bytes before returning it.
	* solib.h (no_shared_libraries): Declare.

2001-05-12  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (struct gdbarch_info): Delete field bfd_architecture.
	(gdbarch_update_p): Rewrite logic filling in INFO struct.  Use
	user specified values when available.
	* rs6000-tdep.c (rs6000_gdbarch_init): Update.  Get the
	architecture from info.bfd_arch_info.
	* gdbarch.c, gdbarch.h: Regenerate.

2001-05-12  Fernando Nasser  <fnasser@redhat.com>

	* remote-e7000.c (e7000_open): Check for bad baud rate.
	* remote-st.c (st2000_open): Ditto.

2001-05-11  Jim Blandy  <jimb@redhat.com>

	* thread.c (do_captured_list_thread_ids): Use ui_out_tuple_begin
	and ui_out_tuple_end instead of ui_out_list_begin and
	ui_out_list_end.

	* Makefile.in (gnu-v2-abi.o): Add $(demangle_h) to list of
	dependencies.  Reorder dependencies to match #includes in file,
	for easier verification.
	
Fri May 11 13:32:50 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* breakpoint.c: Replace ui_out_list_begin, ui_out_list_end and
 	make_cleanup_ui_out_list_end with ui_out_tuple_begin,
 	ui_out_tuple_end and make_cleanup_ui_out_tuple_begin_end.
	* cli/cli-setshow.c: Ditto.
	* printcmd.c: Ditto.
	* stack.c: Ditto.

	* ui-out.h (enum ui_out_type): Fix tipo - tupple -> tuple.
	* ui-out.c (ui_out_list_begin): Delete ``lstid'' parameter.
	(ui_out_tuple_begin): New function.
	(ui_out_tuple_end): New function.
	(ui_out_tuple_begin_end): New function.
	(make_cleanup_ui_out_list_begin_end): Replace
 	make_cleanup_ui_out_list_end function.
	* ui-out.h (ui_out_list_begin): Update declaration.
	(make_cleanup_ui_out_list_begin_end): Replace
 	make_cleanup_ui_out_list_end declaration.
	(ui_out_tuple_begin, ui_out_tuple_end): Declare.
	(ui_out_tuple_begin_end): Declare.

2001-05-11  Jim Blandy  <jimb@redhat.com>

	* gnu-v2-abi.c: Don't #include "gdb_regex.h".  We don't use it.

2001-05-11  Andrew Cagney  <ac131313@redhat.com>

	From 2001-03-26 Rodney Brown <RodneyBrown@mynd.com>
	* config/pa/tm-hppa.h: Remove trigraph.
	* hp-symtab-read.c (hpread_type_translate): Provide return value.
	(hpread_read_struct_type): Remove trigraph. Add parameter in
	`warning'.
	(hpread_read_array_type): Provide return value.
	(hpread_type_lookup): Avoid ambiguous `else'. Provide return
	value.
	* hppa-tdep.c (initialize_hp_cxx_exception_support): Remove
	trigraph.

2001-05-11  Jim Blandy  <jimb@redhat.com>

	* mips-tdep.c (mips_store_return_value,
	mips_extract_return_value): Pass arguments to
	return_value_location in the proper order.

2001-05-11  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (VERSION): Delete.  Moved to file ``version.in''.
	(version.c): Depends on file ``version.in''.  Extract version
	number from ``version.in'' file.
	(clean mostlyclean): Update.
	* version.in: New file.
	* NEWS: Update.
	
2001-05-11  Kevin Buettner  <kevinb@redhat.com>

	* breakpoint.c (set_raw_breakpoint): Add new parameter
	representing the breakpoint's type.  Adjust all callers.
	(create_longjmp_breakpoint, create_temp_exception_breakpoint)
	(create_thread_event_breakpoint): Don't test for zero return
	value from set_raw_breakpoint().  It can never be zero.
	(create_exception_catchpoint, watch_command_1): Move logic
	which calculates the breakpoint type prior to the call to
	set_raw_breakpoint().

2001-05-11  Fernando Nasser  <fnasser@redhat.com>

	* ser-unix.c (rate_to_code): Issue warning if baud rate is invalid.
	(hardwire_setbaudrate): Set errno to EINVAL and return with error
	if the conversion of the baud rate to code fails.

2001-05-10  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.h (make_cleanup_ui_out_begin_end): Declare.
	* ui-out.c (struct ui_out_end_cleanup_data): Define.
	(do_cleanup_end): New function.  Replace do_list_end.
	(make_cleanup_ui_out_end): New function.
	(make_cleanup_ui_out_begin_end): New function.
	(make_cleanup_ui_out_list_end): Use make_cleanup_ui_out_end.

2001-05-10  Elena Zannoni  <ezannoni@redhat.com>

        * MAINTAINERS: Declare xcoffread.c open to all maintainers,
        and make Kevin Buettner (kevinb@redhat.com) the reference person.

2001-05-10  Elena Zannoni  <ezannoni@redhat.com>

	* proc-api.c (ioctl_with_trace): Fix uninitialized variable.

2001-05-10  Fernando Nasser  <fnasser@redhat.com>

	* MAINTAINERS: Add testsuite subdirectory co-maintainers.

Thu May 10 16:26:47 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (mi-main.o): Compile with -Werror.

2001-05-10  Michael Snyder  <msnyder@redhat.com>

	* remote.c (remote_open_1): Call no_shared_libraries, so that
	symbols for shared libraries can be reloaded per session.
	(remote_async_open_1): Ditto.
	* remote.c (bin2hex, hex2bin): New functions.  Factor out these
	two conversions which are coded for repeatedly in this module.
	(remote_threads_extra_info, remote_wait, remote_async_wait, 
	store_register_using_P, remote_store_registers, remote_write_bytes,
	remote_read_bytes, remote_rcmd): Use bin2hex and hex2bin instead
	of coding the conversions inline.
	(fromhex): Not exported, change from extern to static.

2001-05-10  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.c (initialize_current_architecture): Delete obsolete
	``info architecture'' command.
	(info_architecture): Delete function.

2001-05-10  Andrew Cagney  <ac131313@redhat.com>

	* TODO (5.1, 5.2): Update.

2001-05-09  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Jim Ingham is no longer maintaining Arm related
	stuff.

2001-05-10  Keith Seitz  <keiths@cygnus.com>

	* Makefile.in (SUBDIR_GDBTK_OBS): Add gdbtk-bp.o, gdbtk-register.o
	and gdbtk-stack.o.
	(SUBDIR_GDBTK_SRCS): Ditto for the sources.
	(gdbtk-bp.o): New rule.
	(gdbtk-register.o): New rule.
	(gdbtk-stack.o): New rule.
	(gdbtk-cmds.o): Update dependencies.
	(gdbtk.o): Ditto.
	(gdbtk-hooks.o): Ditto.
	(gdbtk-varobj.o): Ditto.

2001-05-10  Fernando Nasser  <fnasser@redhat.com>

	* varobj.c (c_number_of_children): Fix memory leak. Delete unwanted old
	variables, not just unregister them.

2001-05-10  Fernando Nasser  <fnasser@redhat.com>

	* varobj.c (c_number_of_children): Check for target type of void*,
	not the target type name.  Allow dereferencing char*.

2001-05-10  Fernando Nasser  <fnasser@redhat.com>

	* symfile.c (symbol_file_add_main_1): New static function. 
	Passes the flags arguments to  symbol_file_add() and takes care
	of any necessary reinitializations.
        (symbol_file_command): Call symbol_file_add_main_1() instead of
        symbol_file_add().  
        (symbol_file_add_main): Ditto.

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

	* lin-lwp.c (lin_lwp_pid_to_str): Revert inadvertent format
	string change in 2001-05-03 changes.
	(lin_lwp_wait): Revert GET_LWP coercion introduced in 2001-05-03
	changes.

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

	* lin-lwp.c (lin_lwp_attach): Use PIDGET() to fetch the pid
	component from inferior_ptid.
	(lin_lwp_detach): Use pid_to_ptid() to convert from a pid to a
	ptid.

2001-05-09  Elena Zannoni  <ezannoni@redhat.com>

	* sh3-rom.c (_initialize_sh3_rom): Get rid of specific _WINDOWS
 	conditional for help with connections through parallel ports,
 	given that the actual code for downloading through a parallel port
 	is not conditionalized.

	* sh-tdep.c: Remove WIN32_WCE conditional. The wince sh target is
 	unmaintaned, and probably on its way to obsolescence.
	
2001-05-09  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_frame_saved_pc): New function.
	* config/i386/tm-i386.h (FRAME_SAVED_PC): Redefine in terms of
	i386_frame_saved_pc.
	(i386_frame_saved_pc): New prototype.

	* i386-tdep.c (i386_register_virtual_type): New function.
	(i386_register_convertible): New function.
	* config/i386/tm-i386.h (REGISTER_VIRTUAL_TYPE): Redefine in terms
	of i386_register_virtual_type.
	(REGISTER_CONVERTIBLE): Redefine in terms of
	i386_register_convertible.
	(i386_register_virtual_type, i386_register_convertible): New
	prototypes.

2001-05-08  Jim Blandy  <jimb@redhat.com>

	* Makefile.in (mn10300-tdep.o): New rule.

	* Makefile.in (gdb_string_h): Define.  Use it throughout.
	Some rules were already using this, even though it isn't defined.

	* Makefile.in (obstack_h, target_h): Define; these are already
	used elsewhere, but have been expanding to the empty string.
	(memattr_h): Define; needed by target_h.

	* mn10300-tdep.c (mn10300_extract_return_value): Mark this as
	static.  (This was accidentally omitted from the earlier patch.)
	
	* mn10300-tdep.c (mn10300_dwarf2_reg_to_regnum): New function.
	(mn10300_gdbarch_init): Register it as the architecture's
	dwarf2_reg_to_regnum method.

	Correct and expand handling of `movm' instruction, and register
	saves in general.
	* config/mn10300/tm-mn10300.h (D0_REGNUM, A0_REGNUM, MDRQ_REGNUM,
	MCRH_REGNUM, MCRL_REGNUM, MCVF_REGNUM): New definitions.
	(enum movm_register_bits): New enum.
	* mn10300-tdep.c (set_movm_offsets): Use symbolic names for the
	bits, not hex literals.  Handle the `other', `exreg0', and
	`exother' bits.  Correct handling of `exreg1': it saves r4, r5,
	r6, and r7, not r2, r3, r4, and r5.
	(saved_regs_size): New function.
	(mn10300_frame_chain, mn10300_frame_saved_pc): Use it, instead
	of computing the same thing inline, incorrectly.

	* mn10300-tdep.c (mn10300_gdbarch_init): We do have a
	dummy_breakpoint_offset; it's zero.

	* mn10300-tdep.c (mn10300_pop_frame): Split the mn10300-specific
	stuff out into mn10300_pop_frame_regular, and use
	generic_pop_current_frame.  This lets us share code, and also
	makes this function's prototype match that expected by gdbarch.
	Make this function static.
	(mn10300_pop_frame_regular): New function.
	(mn10300_gdbarch_init): Register mn10300_pop_frame as the
	gdbarch's pop_frame method.
	* config/mn10300/tm-mn10300.h (POP_FRAME): Delete definition.
	(mn10300_pop_frame): Delete declaration.

	* mn10300-tdep.c (mn10300_saved_pc_after_call,
	mn10300_extract_return_value,
	mn10300_extract_struct_value_address, mn10300_store_return_value,
	mn10300_use_struct_convention, mn10300_breakpoint_from_pc,
	mn10300_frame_chain, mn10300_skip_prologue,
	mn10300_push_arguments, mn10300_push_return_address,
	mn10300_store_struct_return, mn10300_frame_saved_pc,
	mn10300_init_extra_frame_info, mn10300_frame_init_saved_regs):
	Make these functions static; they should only be visible to the
	outside world as gdbarch methods.

	* config/mn10300/tm-mn10300.h (mn10300_find_callers_reg): Delete
	unused declaration.
	
	* mn10300-tdep.c (mn10300_gdbarch_init): Put the gdbarch methods
	in some rational order.

	* mn10300-tdep.c (mn10300_gdbarch_init): Rather than using
	generic_pc_in_call_dummy, use pc_in_call_dummy_at_entry_point.

	Use gdbarch for most target parameters for the MN10300, rather
	than the tm-*.h file.
	* config/mn10300/tm-mn10300.h (MAX_REGISTER_VIRTUAL_SIZE,
	REGISTER_BYTES, FP_REGNUM, BREAKPOINT_FROM_PC,
	FUNCTION_START_OFFSET, DECR_PC_AFTER_BREAK, INNER_THAN,
	SAVED_PC_AFTER_CALL, INIT_EXTRA_FRAME_INFO, FRAME_INIT_SAVED_REGS,
	FRAME_CHAIN, FRAME_CHAIN_VALID, FRAME_SAVED_PC,
	EXTRACT_RETURN_VALUE, EXTRACT_STRUCT_VALUE_ADDRESS,
	STORE_RETURN_VALUE, STORE_STRUCT_RETURN, SKIP_PROLOGUE,
	FRAME_ARGS_SKIP, FRAME_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS,
	FRAME_NUM_ARGS, POP_FRAME, USE_GENERIC_DUMMY_FRAMES, CALL_DUMMY,
	CALL_DUMMY_START_OFFSET, CALL_DUMMY_BREAKPOINT_OFFSET,
	CALL_DUMMY_LOCATION, FIX_CALL_DUMMY, CALL_DUMMY_ADDRESS,
	TARGET_READ_FP, PUSH_RETURN_ADDRESS, PUSH_DUMMY_FRAME,
	SAVE_DUMMY_FRAME_TOS, PUSH_ARGUMENTS, PC_IN_CALL_DUMMY,
	REG_STRUCT_HAS_ADDR, USE_STRUCT_CONVENTION, GET_SAVED_REGISTER):
	Delete definitions.  We register gdbarch methods for these now.
	(struct frame_info, struct type, struct value): Delete forward
	declarations of these types; they're no longer necessary, since we
	don't have function declarations here any more.
	* mn10300-tdep.c: #include "arch-utils.h", to get declarations for
	some default gdbarch methods.
	(mn10300_store_struct_return): Return void, as expected by
	gdbarch.
	(mn10300_init_extra_frame_info): Take initial `fromleaf' argument,
	as expected by gdbarch.
	(mn10300_frame_init_saved_regs): Provide dummy definition for
	this, as required by gdbarch.
	(mn10300_gdbarch_init): Add mn10300_call_dummy_words, as expected
	by gdbarch.  Register gdbarch methods or values for all the stuff
	removed from tm-10300.h, listed above.

2001-05-08  Andrew Cagney  <ac131313@redhat.com>

	* cli-out.c (cli_begin, cli_end): Replace cli_list_begin and
	cli_list_end.
	(cli_ui_out_impl): Update.

	* ui-out.c (default_begin, default_end): Replace
	default_list_begin and default_list_end.
	(default_ui_out_impl): Update.
	(uo_begin, uo_end): Replace ou_list_begin and uo_list_end.
	(ui_out_begin, ui_out_end): Replace ui_out_list_begin and
	ui_out_list_end.
	(ui_out_list_begin, ui_out_list_end): New.  Compatibility
	functions.
	(struct ui_out_level): Add field type.
	(push_level, pop_level): Update.  Add type parameter.

	* ui-out.h (enum ui_out_type): Declare.
	(ui_out_begin, ui_out_end): Declare.
	(ui_out_begin_ftype, ui_out_end_ftype): Replace list_begin_ftype
	and list_end_ftype.
	(struct ui_out_impl): Update.

2001-05-07  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.h (list_begin_ftype, list_end_ftype): Rename argument
	``list_flag'' to ``depth''.
	* ui-out.c (default_list_begin, default_list_end): Update.
	(uo_list_begin, uo_list_end): Update.
	(MAX_UI_OUT_LEVELS): Define.
	(struct ui_out_level): Define.
	(top-level): Include "gdb_assert.h".
	(struct ui_out): Add fields ``level'' and ``levels''.  Delete
 	fields ``list_flag'' and ``field_count''.
	(ui_out_new): Update.
	(verify_field_proper_position): Update.
	(current_level, push_level, pop_level): New functions.
	(ui_out_list_begin): Use push_level.
	(ui_out_list_end): Use pop_level.
	(ui_out_field_int): Use current_level.
	(ui_out_field_skip): Ditto.
	(ui_out_field_fmt): Ditto.

2001-05-08  Michael Snyder  <msnyder@redhat.com>

	* language.c (longest_local_hex_string_custom): Strlen test is 
	inverted -- reverse the sense of the test.

2001-05-08  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386v.h (struct frame_info, struct
	frame_saved_regs):  Remove declarations.
	(i386_frame_num_args): Remove prototype.

2001-05-07  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: I'm no longer actively maintaining the mn10300
	target.

2001-05-04  Andrew Cagney  <ac131313@redhat.com>
 
 	* main.c (captured_main): Delete #ifndef _WIN32 conditional for
 	WinGDB.
 
2001-05-06  Kevin Buettner  <kevinb@redhat.com>

	* inferior.h (save_inferior_ptid): Declare.
	* infrun.c (save_inferior_ptid, restore_inferior_ptid): Define.

	* hpux-thread.c (save_inferior_ptid, restore_inferior_ptid):
	Delete these functions.
	* lin-lwp.c (save_inferior_ptid, restore_inferior_ptid): Likewise.
	* lin-thread.c (save_inferior_ptid, restore_inferior_ptid): Likewise.
	* linux-thread.c (save_inferior_ptid, restore_inferior_ptid):
	Likewise.
	* proc-service.c (save_inferior_ptid, restore_inferior_ptid):
	Likewise.
	* sol-thread.c (save_inferior_ptid, restore_inferior_ptid): Likewise.
	* thread-db.c (save_inferior_ptid, restore_inferior_ptid): Likewise.

	* somsolib.c (reset_inferior_ptid): Delete.
	(som_solib_remove_inferior_hook): Use save_inferior_ptid() to
	build the cleanup struct.

	* breakpoint.c (reattach_breakpoints, detach_breakpoints): Use
	a cleanup to save/restore inferior_ptid.

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

	Implement attach/detach for multi-threaded programs on Linux.
	* thread-db.c (keep_thread_db): Adjust comment.
	(deactivate_target): Removed.
	(thread_db_new_objfile): Don't call deactivate_target.  Implement
	guts of deactivate_target inline instead.
	(attach_thread): Call ATTACH_LWP unconditionally if defined.
	(thread_db_attach): New function.
	(thread_db_detach): Don't call deactivate_target.  Do necessary
	cleanup inline instead.  Set inferior_ptid to LWP corresponding to
	the current user-level thread.
	(thread_db_kill): Set inferior_ptid to LWP corresponding to the
	current user-level thread.
	(thread_db_create_inferior): Deactivate target vector if
	KEEP_THREAD_DB is zero.
	(thread_db_mourn_inferior): Don't call deactivate_target.  Do
	necessary cleanup inline instead.
	(init_thread_db_ops): Initialize to_attach field to
	thread_db_attach.
	* lin-lwp.c (lin_lwp_mourn_inferior): Remove prototype.
	(stop_wait_callback): Add prototype.
	(init_lwp_list): Add comment about when to re-initialize the LWP
	list.
	(lin_lwp_attach_lwp): Only call ptrace for cloned processes.
	Avoid adding publicates to the LWP list.  Only mark an LWP as
	signalled if it doesn't correspond to a cloned process.
	(lin_lwp_attach): Add initial process to the LWP list.  Make sure
	it's stopped and fake a SIGSTOP.
	(detach_callback): New function.
	(lin_lwp_detach): Implement.
	(lin_lwp_create_inferior): Don't re-initialize LWP list here.
	Call child_ops.to_create_inferior directly instead of via
	target_beneath local.
	(lin_lwp_mourn_inferior): Call child_ops.to_mourn_inferior
	directly instead of via target_beneath local.

2001-05-06  Eli Zaretskii  <eliz@is.elta.co.il>

	* symtab.c (lookup_symtab_1, lookup_partial_symtab): Use basename
	instead of non-portable search for `/'.  Use FILENAME_CMP instead
	of STREQ, to account for case-insensitive filesystems.
	(top-level): #include "filenames.h".

2001-05-05  Jim Blandy  <jimb@redhat.com>

	* breakpoint.c (check_duplicates): Use the breakpoint's type, not
	its address, to decide whether it's a watchpoint or not.  Zero
	is a valid code address.
	(update_breakpoints_after_exec): Admonishing comments.
	* breakpoint.h (struct breakpoint): Doc fixes.

	* breakpoint.c (check_duplicates): Take a breakpoint object as an
	argument, rather than an address and section.  All callers changed.

2001-05-03  Kevin Buettner  <kevinb@redhat.com>

	* defs.h (ptid_t): New typedef.
	(pid_to_ptid, null_ptid, minus_one_ptid, ptid_equal): New macros.

	* a68v-nat.c, alphabsd-nat.c, arch-utils.c, arm-linux-nat.c,
	blockframe.c, breakpoint.c, breakpoint.h,
	config/i386/nm-i386sol2.h, config/i386/tm-i386sco5.h,
	config/ia64/nm-linux.h, config/m68k/nm-hp300bsd.h,
	config/mips/nm-irix4.h, config/mips/nm-irix5.h,
	config/pa/nm-hppah.h, config/pa/tm-hppa.h,
	config/rs6000/nm-rs6000.h, config/sparc/nm-sun4sol2.h,
	corelow.c, cxux-nat.c, d10v-tdep.c, dink32-rom.c,
	dve3900-rom.c, fork-child.c, frame.c, gnu-nat.c, go32-nat.c,
	hp300ux-nat.c, hppa-tdep.c, hppab-nat.c, hppah-nat.c,
	hpux-thread.c, i386-linux-nat.c, i386aix-nat.c, i386b-nat.c,
	i386bsd-nat.c, i386gnu-nat.c, i386mach-nat.c, i386nbsd-nat.c,
	infcmd.c, inferior.h, inflow.c, infptrace.c, infrun.c,
	inftarg.c, infttrace.c, lin-lwp.c, lin-thread.c,
	linux-thread.c, lynx-nat.c, m3-nat.c, m32r-rom.c,
	m68knbsd-nat.c, m88k-nat.c, mac-nat.c, mips-nat.c,
	mon960-rom.c, monitor.c, ns32knbsd-nat.c, ocd.c, ppc-bdm.c,
	ppcnbsd-nat.c, proc-service.c, procfs.c, ptx4-nat.c,
	regcache.c, remote-adapt.c, remote-array.c, remote-bug.c,
	remote-e7000.c, remote-es.c, remote-mips.c, remote-mm.c,
	remote-nindy.c, remote-os9k.c, remote-rdi.c, remote-rdp.c,
	remote-sds.c, remote-sim.c, remote-st.c, remote-udi.c,
	remote-vx.c, remote.c, rs6000-nat.c, sol-thread.c,
	solib-aix5.c, solib-svr4.c, somsolib.c, sparc-nat.c,
	standalone.c, sun3-nat.c, sun386-nat.c, symm-nat.c, target.c,
	target.h, thread-db.c, thread.c, top.c, ultra3-nat.c,
	uw-thread.c, v850ice.c, win32-nat.c, wince.c, xcoffsolib.c
	(inferior_pid):  Rename to inferior_ptid everywhere - even in
	comments and obsolete ports.  In cases where this variable
	really is supposed to be used as a process id, use PIDGET() to
	extract the process id component from inferior_ptid.  The
	other cases, either involving other variables whose types had
	to be changed or functions whose signatures had to changed
	are listed separately below.

	* arm-linux-nat.c (get_thread_id): Change type of argument
	representing a combined process/thread id from ``int'' to
	``ptid_t''.  Also change parameter name to ptid.
	* breakpoint.h, breakpoint.c (breakpoint_thread_match): Likewise.
	* corelow.c (core_file_thread_alive): Likewise.
	* d10v-tdep.c (d10v_read_pc, d10v_write_pc): Likewise.
	* defs.h (*target_wait_hook): Likewise.
	* gdbthread.h (thread_info, delete_thread, pid_to_thread_id)
	(find_thread_pid, save_infrun_state, load_infrun_state): Likewise.
	* gnu-nat.c (gnu_thread_alive, gnu_pid_to_str, gnu_wait)
	(gnu_resume): Likewise.
	* go32-nat.c (go32_wait, go32_resume): Likewise.
	* h8500-tdep.c (h8500_read_pc, h8500_write_pc): Likewise.
	* hppa-tdep.c (target_read_pc, target_write_pc): Likewise.
	* hppah-nat.c (child_pid_to_str, hppa_tid_to_str,
	(hppa_pid_or_tid_to_str, child_post_startup_inferior)
	(child_thread_alive): Likewise.
	* hpux-thread.c (hpux_thread_notice_signals, hpux_thread_alive)
	(hpux_pid_to_str, hpux_thread_wait, hpux_thread_resume): Likewise.
	* i386-linux-nat.c (child_resume): Likewise.
	* ia64-linux-nat.c (enable_watchpoints_in_psr, fetch_debug_register)
	(store_debug_register, fetch_debug_register_pair)
	(store_debug_register_pair, ia64_linux_insert_watchpoint)
	(ia64_linux_remove_watchpoint, ia64_linux_stopped_by_watchpoint):
	Likewise.
	* ia64-tdep.c (ia64_read_pc, ia64_write_pc): Likewise.
	* inferior.h (read_pc_pid, generic_target_read_pc, write_pc_pid)
	(generic_target_write_pc, ptrace_wait, child_resume)
	(get_last_target_status): Likewise.
	* infptrace.c (ptrace_wait, child_resume): Likewise.
	* inftarg.c (child_wait, child_post_wait, child_thread_live)
	(child_pid_to_str): Likewise.
	* infttrace.c (ptrace_wait, child_thread_alive, child_resume)
	(hppa_pid_or_tid_to_str, child_post_startup_inferior): Likewise.
	* lin-lwp.c (add_lwp, delete_lwp, find_lwp_pid, lin_lwp_attach_lwp)
	(lin_lwp_resume, lin_lwp_wait, lin_lwp_thread_alive)
	(lin_lwp_pid_to_str): Likewise.
	* lin-thread.c (thread_db_alive, thread_db_pid_to_str)
	(thread_db_resume, thread_db_wait): Likewise.
	* linux-thread.c (linuxthreads_thread_alive, linuxthreads_pid_to_str)
	(linuxthreads_resume, linuxthreads_wait): Likewise.
	* lynx-nat.c (child_wait, child_thread_alive, child_resume)
	(child_pid_to_str): Likewise.
	* m3-nat.c (mach_really_wait, m3_resume): Likewise.
	* mac-nat.c (child_wait, child_resume): Likewise.
	* mips-tdep.c (mips_read_pc): Likewise.
	* monitor.c (monitor_wait, monitor_resume): Likewise.
	* ocd.c, ocd.h (ocd_thread_alive, ocd_resume): Likewise.
	* ppc-bdm.c (bdm_ppc_wait): Likewise.
	* procfs.c (do_attach, procfs_wait, procfs_resume)
	(procfs_notice_signals, procfs_thread_alive, procfs_pid_to_str)
	(procfs_set_watchpoint, procfs_stopped_by_watchpoint)
	(procfs_find_LDT_entry): Likewise.
	* regcache.c (read_register_pid, read_signed_register_pid)
	(write_register_pid, generic_target_read_pc, read_pc_pid)
	(generic_target_write_pc, write_pc_pid): Likewise.
	* regcache.h (read_register_pid, read_signed_register_pid)
	(write_register_pid): Likewise.
	* remote-adapt.c (adapt_wait, adapt_resume): Likewise.
	* remote-array.c (array_wait, array_resume): Likewise.
	* remote-bug.c (bug_wait, bug_resume): Likewise.
	* remote-e7000.c (e7000_wait, e7000_resume): Likewise.
	* remote-eb.c (eb_wait, eb_resume): Likewise.
	* remote-es.c (es1800_wait, es1800_resume): Likewise.
	* remote-mips.c (mips_wait, mips_resume): Likewise.
	* remote-mm.c (mm_wait, mm_resume): Likewise.
	* remote-nindy.c (nindy_wait, nindy_resume): Likewise.
	* remote-os9k.c (rombug_wait, rombug_resume): Likewise.
	* remote-rdi.c (arm_rdi_wait, arm_rdi_resume): Likewise.
	* remote-rdp.c (remote_rdp_resume, remote_rdp_wait): Likewise.
	* remote-sds.c (sds_wait, sds_resume): Likewise.
	* remote-sim.c (gdbsim_wait, gdbsim_resume): Likewise.
	* remote-st.c (st2000_wait, st2000_resume): Likewise.
	* remote-udi.c (udi_wait, udi_resume): Likewise.
	* remote-vx.c (vx_wait, vx_resume): Likewise.
	* remote.c (remote_current_thread, remote_resume, remote_wait)
	(remote_async_resume, remote_async_wait, remote_cisco_wait)
	(remote_thread_alive): Likewise.
	* sol-thread.c (thread_to_lwp, lwp_to_thread, sol_thread_resume)
	(sol_thread_wait, sol_thread_notice_signals, sol_thread_alive)
	(solaris_pid_to_str): Likewise.
	* symm-nat.c (child_wait, child_resume): Likewise.
	* target.c (debug_to_resume, debug_to_wait, debug_to_post_wait)
	(debug_to_notice_signals, debug_to_thread_alive)
	(normal_target_post_startup_inferior, normal_pid_to_str)
	(debug_to_post_startup_inferior): Likewise.
	* target.h (to_resume, to_wait, to_post_wait)
	(to_post_startup_inferior, to_notice_signals, to_thread_alive)
	(to_pid_to_str [all in struct target_ops]): Likewise.
	(child_post_wait, child_thread_alive, normal_pid_to_str): Likewise.
	* thread-db.c (thread_from_lwp, lwp_from_thread, thread_db_wait)
	(attach_thread, detach_thread, thread_db_resume, check_event)
	(thread_db_post_startup_inferior, thread_db_thread_alive)
	(thread_db_pid_to_str): Likewise.
	* thread.c (add_thread, delete_thread, find_thread_pid)
	(pid_to_thread_id, in_thread_list, load_infrun_state)
	(save_infrun_state, switch_to_thread, restore_current_thread)
	(make_cleanup_restore_current_thread): Likewise.
	* top.c (target_wait_hook): Likewise.
	* uw-thread.c (dbgpid, thr_to_lwp, lwp_to_thr, add_thread_uw)
	(uw_thread_resume, libtrhead_stub, uw_thread_wait, uw_thread_alive)
	(uw_thread_pid_to_str): Likewise.
	* v850ice.c (v850ice_wait, v850ice_resume): Likewise.
	* win32-nat.c (child_wait, child_resume, win32_child_thread_alive)
	(cywin_pid_to_str): Likewise.
	* wince.c (child_wait, child_resume, win32_child_thread_alive):
	Likewise.
	* config/nm-linux.h (linuxthreads_pid_to_str): Likewise.
	* config/nm-lynx.h (child_wait, lynx_pid_to_str): Likewise.
	* config/alpha/nm-linux.h (lin_lwp_attach_lwp): Likewise.
	* config/arm/nm-linux.h (lin_lwp_attach_lwp): Likewise.
	* config/h8500/tm-h8500.h (h8500_read_pc, h8500_write_pc): Likewise.
	* config/i386/nm-i386sol2.h (procfs_stopped_by_watchpoint)
	(procfs_set_watchpoint): Likewise.
	* config/i386/nm-linux.h (lin_lwp_attach_lwp): Likewise.
	* config/i386/nm-ptx4.h (child_wait): Likewise.
	* config/i386/nm-symmetry.h (child_wait): Likewise.
	* config/i386/tm-cygwin.h (cygwin_pid_to_str): Likewise.
	* config/ia64/nm-linux.h (ia64_linux_stopped_by_watchpoint)
	(ia64_linux_insert_watchpoint, ia64_linux_remove_watchpoint)
	(lin_lwp_attach_lwp): Likewise.
	* config/mips/nm-irix4.h, config/mips/nm-irix5.h
	(procfs_stopped_by_watchpoint, procfs_set_watchpoint): Likewise.
	* config/pa/nm-hppah.h (child_pid_to_str, hppa_tid_to_str)
	(hppa_pid_or_tid_to_str): Likewise.
	* config/pa/tm-hppa.h (target_read_pc, target_write_pc): Likewise.
	* config/powerpc/nm-linux.h (lin_lwp_attach_lwp): Likewise.
	* config/sparc/nm-sun4sol2.h (procfs_stopped_by_watchpoint)
	(procfs_set_watchpoint): Likewise.

	* gdbthread.h (thread_id_to_pid): Change return type which
	represents a combined process/thread id from ``int'' to
	``ptid_t''.
	* gnu-nat.c (gnu_wait): Likewise.
	* go32-nat.c (go32_wait): Likewise.
	* hpux-thread.c (hpux_thread_wait): Likewise.
	* inferior.h (procfs_first_available): Likewise.
	* inftarg.c (child_wait): Likewise.
	* infttrace.c (ptrace_wait): Likewise.
	* lin-lwp.c (lin_lwp_wait): Likewise.
	* lin-thread.c (thread_db_wait): Likewise.
	* linux-thread.c (linuxthreads_wait): Likewise.
	* lynx-nat.c (child_wait): Likewise.
	* m3-nat.c (mach_really_wait): Likewise.
	* mac-nat.c (child_wait): Likewise.
	* monitor.c (monitor_wait): Likewise.
	* ppc-bdm.c (bdm_ppc_wait): Likewise.
	* procfs.c (do_attach, procfs_wait, procfs_first_available): Likewise.
	* remote-adapt.c (adapt_wait): Likewise.
	* remote-array.c (array_wait): Likewise.
	* remote-bug.c (bug_wait): Likewise.
	* remote-e7000.c (e7000_wait): Likewise.
	* remote-eb.c (eb_wait): Likewise.
	* remote-es.c (es1800_wait): Likewise.
	* remote-mips.c (mips_wait): Likewise.
	* remote-mm.c (mm_wait): Likewise.
	* remote-nindy.c (nindy_wait): Likewise.
	* remote-os9k (rombug_wait): Likewise.
	* remote-rdi.c (arm_rdi_wait): Likewise.
	* remote-rdp.c (remote_rdp_wait): Likewise.
	* remote-sds.c (sds_wait): Likewise.
	* remote-sim.c (gdbsim_wait): Likewise.
	* remote-st.c (st2000_wait): Likewise.
	* remote-udi.c (udi_wait): Likewise.
	* remote-vx.c (vx_wait): Likewise.
	* remote.c (remote_wait, remote_async_wait, remote_current_thread)
	(remote_cisco_wait): Likewise.
	* sol-thread.c (thread_to_lwp, lwp_to_thread, sol_thread_wait):
	Likewise.
	* symm-nat.c (child_wait): Likewise.
	* target.c (debug_to_wait): Likewise.
	* target.h (to_wait [in struct target_ops]): Likewise.
	* thread.c (thread_id_to_pid): Likewise.
	* thread-db.c (thread_from_lwp, lwp_from_thread, thread_db_wait):
	Likewise.
	* top.c (*target_wait_hook): Likewise.
	* uw-thread.c (lwp_to_thr, uw_thread_wait): Likewise.
	* v850ice.c (v850ice_wait): Likewise.
	* win32-nat.c (child_wait): Likewise.
	* wince.c (child_wait): Likewise.
	* config/nm-lynx.h (child_wait): Likewise.
	* config/i386/nm-ptx4.h (child_wait): Likewise.
	* config/i386/nm-symmetry.h (child_wait): Likewise.

	* arch-utils.c (generic_prepare_to_proceed): Rename wait_pid
	to wait_ptid and change its type from ``int'' to ``ptid_t''.
	* breakpoint.c (reattach_breakpoints, detach_breakpoints): Likewise,
	but rename saved_inferior_pid to saved_inferior_ptid.
	* d10v-tdep.c (d10v_read_pc, d10_write_pc): Likewise, but rename
	save_pid to save_ptid.
	* gdbthread.h (struct thread_info): Likewise, but rename pid to ptid.
	* hppah-nat.c (child_pid_to_exec): Likewise, but rename
	saved_inferior_pid to saved_inferior_ptid.
	* hpux-thread.c (main_ptid): Likewise, but rename from main_pid.
	* infrun.c (previous_inferior_pid [static global]): Likewise,
	but rename to previous_inferior_ptid.
	(resume): Likewise, but rename resume_pid to resume_ptid.
	(struct execution_control_state): Likewise, but rename
	pid to ptid, saved_inferior_pid to saved_inferior_ptid,
	and waiton_pid to waiton_ptid.
	(target_last_wait_pid): Likewise, but rename to
	target_last_wait_ptid.
	* infttrace.c (saved_real_pid): Likewise, but rename to
	saved_real_ptid.
	(child_pid_to_exec_file): Likewise, but rename saved_inferior_pid
	to saved_inferior_ptid.
	* lin-lwp.c (struct lwp_info): Likewise, but rename pid to ptid.
	(trap_ptid): Likewise, but renamed from trap_pid.
	* lin-thread.c (handle_new_thread): Likewise, but rename gdb_pid
	to gdb_ptid.
	* linux-thread.c (detach_thread): Likewise, but rename pid to ptid.
	(thread_db_wait): Likewise, but rename ret_pid to retptid.
	* procfs.c (procfs_wait): Likewise, for retval whose name
	doesn't change.  Also, ``temp'' becomes two separate variables,
	one named temp_tid (an int) and the other temp_ptid.
	(procfs_notice_thread): Likewise (type change) for gdb_threadid
	whose name does not change.
	* regcache.c (registers_ptid): Likewise, but renamed from
	registers_pid.
	(read_register_pid, read_signed_register_pid, write_register_pid):
	Likewise, but rename save_pid to save_ptid.
	(read_pc_pid, write_pc_pid): Likewise, but rename saved_inferior_pid
	to saved_inferior_ptid.
	* remote.c (remote_newthread_step): Likewise, but rename pid to ptid.
	* sol-thread.c (struct ps_prochandle): Likewise.
	(sol_thread_resume): Likewise, for save_pid which becomes save_ptid.
	(sol_thread_wait): Likewise, for rtnval whose name does not
	change, and for save_pid which becomes save_ptid.
	(solaris_pid_to_str): Likewise for lwp whose name does not change.
	(sol_find_new_threads_callback): Likewise, for pid which becomes
	ptid.
	* target.h (target_resume, target_wait, target_post_wait)
	(target_post_startup_inferior, target_notice_signals)
	(target_thread_alive): Likewise.
	* thread.c (info_threads_command): Likewise, but rename
	current_pid to current_ptid.
	(struct current_thread_cleanup): Likewise, but rename field
	inferior_pid to inferior_ptid.
	* thread-db.c (find_new_threads_callback): Likewise, but rename
	pid to ptid.
	* uw-thread.c (thr_to_lwp): Likewise for lid whose name does not
	change.
	(lwp_to_tr): Likewise fo tid whose name remains unchanged.
	(thr_infpid, lwp_infpid, notice_thread, libthread_stub): Likewise,
	but rename pid to ptid.
	* config/alpha/nm-linux.h (ATTACH_LWP): Likewise.
	* config/arm/nm-linux.h (ATTACH_LWP): Likewise.
	* config/i386/nm-linux.h (ATTACH_LWP): Likewise.
	* config/ia64/nm-linux.h (ATTACH_LWP): Likewise.
	* config/pa/nm-hppah.h (target_tid_to_str): Likewise.
	* config/powerpc/nm-linux.h (ATTACH_LWP): Likewise.

	* arch-utils.c (generic_prepare_to_proceed):  Test for the
	"zero" ptid by using ptid_equal() to test to see if variable
	in question is the same as null_ptid.  This replaces a direct
	test against zero.
	* cxux-nat.c (add_shared_symbol_files): Likewise.
	* i386aix-nat.c, i386b-nat.c (i386_float_info): Likewise.
	* infcmd.c (run_command): Likewise.
	* inflow.c (kill_command): Likewise.
	* infttrace.c (call_ttrace): Likewise.
	* lin-lwp.c (lin_lwp_prepare_to_proceed): Likewise.
	* lin-thread.c (thread_db_kill): Likewise.
	* procfs.c (procfs_kill_inferior, procfs_mourn_inferior): Likewise.
	* remote-es.c (es1800_kill): Likewise.
	* sol-thread.c (sol_thread_create_inferior): Likewise.
	* solib.c (locate_base): Likewise.
	* target.c (nosupport_runtime): Likewise.
	* thread-db.c (thread_db_wait): Likewise.
	* top.c (quit_confirm, quit_force): Likewise.
	* uw-thread (lwp_infpid, uw_thread_resume): Likewise.

	* infrun.c (handle_inferior_event, stop_stepping, normal_stop):
	Use ptid_equal to compare value of process/thread ids instead of
	``=='' and ``!='' operators.
	lin-lwp.c (delete_lwp, lin_lwp_prepare_to_proceed)
	(stop_wait_callback, lin_lwp_wait): Likewise.
	* procfs.c (procfs_wait): Likewise.
	* regcache.c (read_register_bytes, read_register_gen)
	(write_register_gen, read_register, read_register_pid)
	(read_signed_register, read_signed_register_pid, write_register)
	(write_register_pid, supply_register): Likewise.
	* remote-vx.c (vx_resume): Likewise.
	* sol-thread.c (sol_thread_wait): Likewise.
	* symm-nat.c (kill_inferior): Likewise.
	* thread.c (delete_thread, find_thread_pid, pid_to_thread_id)
	(in_thread_list, info_threads_command, switch_to_thread)
	(restore_current_thread): Likewise.
	* uw-thread (libtread_stub): Likewise.

	* arm-linux-nat.c (GET_THREAD_ID): Change PID to PTID.

	* corelow.c (add_to_thread_list): Convert argument in add_thread()
	call to a ptid_t.
	* gnu-nat.c (inf_validate_procs): Likewise.
	* linux-thread.c (stop_thread, update_stop_threads): Likewise.
	* remote.c (record_currthread, remote_threads_info): Likewise.
	* win32-nat.c (child_add_thread): Likewise.

	* hpux-thread.c (save_inferior_pid, restore_inferior_pid): Rename,
	respectively, to save_inferior_ptid() and restore_inferior_ptid().
	Adjust implementations to operate on ``ptid_t'' instead of ``int''.
	* lin-lwp.c (save_inferior_pid, restore_inferior_pid): Likewise.
	* lin-thread.c (save_inferior_pid, restore_inferior_pid): Likewise.
	* linux-thread.c (save_inferior_pid, restore_inferior_pid): Likewise.
	* proc-service.c (save_inferior_pid, restore_inferior_pid): Likewise.
	* sol-thread.c (save_inferior_pid, restore_inferior_pid): Likewise.
	* thread-db.c (save_inferior_pid, restore_inferior_pid): Likewise.

	* infrun.c (RESUME_ALL): New macro representing the -1 ptid
	to be passed to target_resume() when all threads should resume.
	(resume): Set resume_ptid to RESUME_ALL rather than -1.
	(handle_inferior_event): Invoke target_resume() with RESUME_ALL
	instead of -1.
	* irix5-nat.c (solib_create_inferior_hook): Convert -1 to
	a ptid_t in target_resume() call.
	* osfsolib.c (solib_create_inferior_hook): Likewise.
	* solib-svr4.c (solib_create_inferior_hook): Likewise.

	* lin-lwp.c (PIDGET, PIDGET0): Rename original PIDGET macro to
	PIDGET0.  Define new PIDGET macro which uses PIDGET0, the only
	difference being that the 0xffff pattern will be interpreted
	as -1.
	* lin-thread.c (PIDGET, PIDGET0): Likewise.
	* thread-db.c (PIDGET, PIDGET0): Likewise.
	* config/nm-linux.h (PIDGET, PIDGET0): Likewise.
	* config/i386/tm-i386sol2.h (PIDGET, PIDGET0): Likewise.
	* config/i386/tm-i386v42mp.h (PIDGET, PIDGET0): Likewise.
	* config/sparc/tm-sun4sol2.h (PIDGET, PIDGET0): Likewise.

	* m3-nat.c (init_m3_ops): Fix typo; initialize to_wait field to
	mach_really_wait rather than mach_really__wait.
	* lin-thread.c (check_for_thread_event): Fix warning; make function
	actually return a value.

	* gdbarch.sh (TARGET_READ_PC, TARGET_WRITE_PC): Change type of
	``pid'' arguments from ``int'' to ``ptid_t''.  Also renamed
	pid to ptid.
	* gdbarch.h, gdbarch.c: Regenerated.

2001-05-03  Jonathan Larmour  <jlarmour@redhat.com>

	* rdi-share/devsw.c: Include <time.h> for struct tm

2001-05-03  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/fnchange.lst: Add mappings for the new
	opcodes/openrisc-* files.

2001-05-01  Michael Snyder  <msnyder@redhat.com>

	* lin-lwp.c: Change printf to fprintf_unfiltered.
	* Makefile.in: Add rules for thread-db.o, lin-lwp.o, proc-service.o.

2001-05-01  Nicholas Duffek  <nsd@redhat.com>

	* config/rs6000/tm-rs6000.h (IN_SOLIB_RETURN_TRAMPOLINE): Define.
	(rs6000_in_solib_return_trampoline): Declare.
	* rs6000-tdep.c (rs6000_in_solib_return_trampoline): New
	function.
	(rs6000_skip_trampoline_code): Skip bigtoc fixup code.
	* xcoffread.c (read_xcoff_symtab): Perform the ISFCN function
	check after the CSECT check rather than before it.  Allocate
	separate symtabs for CSECTs whose names begin with '@'.
	(scan_xcoff_symtab): Don't ignore symbols beginning with '@'.
	Activate the misc_func_recorded mechanism for whose names begin
	with '@'.

2001-04-30  J.T. Conklin  <jtc@redback.com>

	* ppcnbsd-nat.c (fetch_inferior_registers)
 	(store_inferior_registers, fetch_core_registers): Changed to use
	fpreg[] instead of r_regs[] to access floating point registers.

2001-04-30  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c: Get rid of the function prototypes.
	(sh_sh4_build_float_register_type): Move earlier in file.
	(fv_reg_base_num): Ditto.
	(dr_reg_base_num): Ditto.

2001-04-30  Michael Snyder  <msnyder@redhat.com>

	* thread-db.c: Revert 2001-04-26 change for debugging output.
	* lin-lwp.c: Ditto.
	* lin-lwp.c: Add set/show debug lin-lwp command.  Use this
	command to turn extra debugging output on / off.

2001-04-30  Eli Zaretskii  <eliz@is.elta.co.il>

	* buildsym.c (start_subfile): Use FILENAME_CMP instead of STREQ.
	(top-level): #include filenames.h.

	* dwarf2read.c (dwarf2_start_subfile): Use IS_ABSOLUTE_PATH and
	FILENAME_CMP, to DTRT on non-Posix platforms.
	(top-level): #include filenames.h.


2001-04-27  Andrew Cagney  <ac131313@redhat.com>

	* gdbtypes.c (check_stub_method): Always initialize ``p''.

2001-04-27  Andrew Cagney  <ac131313@redhat.com>

	* configure.host: Delete romp host.
	* TODO: Update.

2001-04-27  Andrew Cagney  <ac131313@redhat.com>

	* TODO: Updates to 5.1.  No more targets to obsolete.

2001-04-27  Don Howard  <dhoward@redhat.com>

	(Changes from Kevin Buettner, with minor update by Don Howard.)
	
	* i387-nat.c (i387_supply_fxsave, i387_fill_fxsave, i387_tag): Fix
	typos in which hexadecimal constants were really intended to be
	binary constants.
	(i387_tag): Swap logic regarding zero vs non-zero exponents.
	* MAINTAINERS (Misc): Added myself to the write-after-approval
	list.

2001-04-26  Jim Blandy  <jimb@redhat.com>

	(Changes from Daniel Berlin, with revisions by Jim Blandy.)
	
	Abstract out operations specific to particular C++ ABI's, and
	invoke them through a function table.  This removes the C++ ABI
	dependencies scattered throughout the code, and allows us to
	cleanly add support for new C++ ABI's.
	* cp-abi.h, cp-abi.h, gnu-v2-abi.c, hpacc-abi.c: New files.
	* c-typeprint.c, c-valprint.c, dbxread.c, eval.c, gdbtypes.c,
	jv-typeprint.c, linespec.c, symtab.c, typeprint.c, valops.c:
	#include "cp-abi.h".  These files all use functions now declared
	there.
	* symtab.h (OPNAME_PREFIX_P, VTBL_PREFIX_P, DESTRUCTOR_PREFIX_P):
	Deleted.  These services are now provided by functions declared in
	cp-abi.h.
	* value.h (value_rtti_type, value_virtual_fn_field): Same.
	* values.c (value_virtual_fn_field): Same, for this definition.
	* valops.c (value_rtti_type): Same.	
	* c-typeprint.c (c_type_print_base): Use the functions from
	"cp-abi.h", instead of the old macros, or hard-coded ABI-specific
	tests.
	* dbxread.c (record_minimal_symbol): Same.
	* gdbtypes.c (get_destructor_fn_field, virtual_base_index,
	virtual_base_index_skip_primaries): Same.
	* jv-typeprint.c (java_type_print_base): Same.
	* linespec.c (find_methods, decode_line_1): Same.
	* symtab.c (gdb_mangle_name): Same.
	* Makefile.in (SFILES): Add the new .c files mentioned above.
	(cp_abi_h): New variable.
	(COMMON_OBS): Add gnu-v2-abi.o, hpacc-abi.o, and cp-abi.o.
	(cp-abi.o, gnu-v2-abi.o, hpacc-abi.o): New targets.
	(c-typeprint.o, c-valprint.o, dbxread.o, eval.o, gdbtypes.o,
	jv-typeprint.o, symtab.o, linespec.o, typeprint.o, valops.o): Add
	dependency on $(cp_abi_h).

2001-04-26  Michael Snyder  <msnyder@redhat.com>

	* thread-db.c (_initialize_thread_db): Add set/show command
	"debug-linux-threads" for debugging output.
	* lin-lwp.c (various): Use global "debug_linux_threads to 
	turn on extra debugging output.
	* lin-lwp.c: Minor cleanups in comments.
	* target.c (normal_pid_to_str): Get rid of an ancient hack.
	* remote.c (remote_pid_to_str): New function for remote target.

2001-04-24  Jim Blandy  <jimb@redhat.com>

	* c-typeprint.c (c_type_print_cv_qualifier): Don't print `const'
	qualifier on C++ references; all references are innately const.

2001-04-20  Mark Kettenis  <kettenis@gnu.org>

	* event-top.h: Fix formatting.

2001-04-17  Andrew Cagney  <ac131313@redhat.com>

	* source.c (openp): Obsolete #ifdef MPW code.
	(open_source_file): Ditto.
	* event-top.c (display_gdb_prompt): Ditto.
	* utils.c (query): Ditto.
	(init_page_info): Ditto.
	(init_page_info): Delete #ifndef MPW.
	* top.c (gdb_readline): Ditto.
	* mac-xdep.c: Obsolete.
	* mac-gdb.r: Obsolete.
	* config/powerpc/xm-mpw.h: Obsolete.
	* config/xm-mpw.h: Obsolete.
	* mpw-make.sed: Obsolete.
	* mpw-config.in: Obsolete.
	* TODO: Update
	* NEWS: Update

2001-04-19  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_frameless_function_invocation): New function.
	* config/i386/tm-i386.h (FRAMELESS_FUNCTION_INVOCATION): Redefine
	in terms of i386_frameless_function_invocation.  Adjust comment.
	(i386_frameless_function_invocation): New prototype.

2001-04-18  Martin M. Hunt  <hunt@redhat.com>

	* top.c (gdb_init): Don't call cli_out_new() to
	create global uiout if init_ui_hook is set.  uiout will
	have to be initialized there.

2001-04-18  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.c: Include "regcache.h".

2001-04-18  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_saved_pc_after_call): New function.
	* config/i386/tm-i386.h (SAVED_PC_AFTER_CALL): Redefine in terms
	of i386_saved_pc_after_call.
	(i386_saved_pc_after_call): New prototype.

2001-04-17  Michael Snyder  <msnyder@redhat.com>

	* i386-nat.c: Fix typo in comment.
	* solib.c (no_shared_libraries): New function.  Discard all symbols
	from shared libraries.
	(_initialize_solib): Add command "nosharedlibrary" as complement
	to the command "sharedlibrary".  Unloads symbols for all solibs.

2001-04-16  Andrew Cagney  <ac131313@redhat.com>

	* configure.host (m68030-sony-*, m68*-isi-*, m68*-sony-*):
	* configure.tgt (m68*-rom68k-*, m68*-*bug-*, m68*-monitor-*)
	(m68*-est-*, m68*-sony-*, m68*-isi-*):
	* Makefile.in (xm-news1000.h, tm-news.h, xm-news.h): Obsolete..
	* config/m68k/xm-news.h: Obsolete.
	* config/m68k/tm-news.h: 
	* config/m68k/xm-news1000.h: Obsolete.
	* config/m68k/news.mh: Obsolete.
	* config/m68k/news.mt: Obsolete.
	* config/m68k/nm-news.h: Obsolete.
	* config/m68k/news1000.mh: Obsolete.
	* news-xdep.c: Obsolete.
	* Makefile.in (isi-xdep.o): Obsolete.
	(ALLDEPFILES): Delete isi-xdep.c.
	(tm-isi.h): Obsolete.
	* m68k-tdep.c (altos_skip_prologue): Update comments.
	(isi_skip_prologue): Obsolete.
	* isi-xdep.c: Obsolete.
	* config/m68k/xm-isi.h: Obsolete.
	* config/m68k/isi.mh: Obsolete.
	* config/m68k/tm-isi.h: Obsolete.
	* config/m68k/isi.mt: Obsolete.

	* TODO: Update.
	* NEWS: Update.

2001-04-17  Michael Snyder  <msnyder@redhat.com>
	
	* remote.c (remote_open_1): On opening the remote target, activate
	the solib_create_inferior_hook, so that it can detect when the
	target loads shared libraries.
	(remote_async_open_1): Ditto.

2001-04-17  Michael Snyder  <msnyder@redhat.com>
	
	* breakpoint.c (print_one_breakpoint): Handle 64-bit addresses.
	* tracepoint.c (tracepoints_info): Handle 64-bit addresses.
	* testsuite/gdb.trace/deltrace.exp: Allow for 64-bit addresses.
	* testsuite/gdb.trace/infotrace.exp: Ditto.
	* testsuite/gdb.trace/passcount.exp: Ditto.
	* testsuite/gdb.trace/while-stepping.exp: Ditto.

2001-04-17  Michael Snyder  <msnyder@redhat.com>

	* thread-db.c (check_thread_signals): When looping over all
	signals, ignore signal zero.
	(disable_thread_signals): Ditto.

2001-04-17  Eirik Fuller <eirik@netapp.com>

	* thread.c (do_captured_thread_select): Allow the argument to the
	thread command to be an expression rather than a literal integer.

2001-04-17  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-tdep.c (i386_linux_saved_pc_after_call): Use
	read_memory_unsigned_integer instead of read_memory_integer.

2001-04-16  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (map_index_vs_section_name_okay): New function.
	(aix5_relocate_main_executable): Don't use file offsets for
	determining corresponding sections and map file entries.  Call
	map_index_vs_section_name_okay() to do this instead.

2001-04-16  Kevin Buettner  <kevinb@redhat.com>

	* procfs.c (open_with_retry): New function.
	(open_procinfo_files, load_syscalls, proc_iterate_over_mappings)
	(proc_get_LDT_entry): Call open_with_retry() instead of open().

2001-04-16  Kevin Buettner  <kevinb@redhat.com>

	* ia64-linux-nat.c (ia64_linux_stopped_by_watchpoint): Adjust
	comparison against TRAP_HWBKPT constant yet again to account
	for the various values used by different kernel versions.

2001-04-16  Daniel Berlin  <dan@cgsoftware.com>

	* demangle.c (_initialize_demangler): Use xcalloc on the
	demangling_style_names, and make it a null terminated array of
	names, to avoid a crash.

2001-04-16  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_frame_chain): New function.
	* config/i386/tm-i386.h (FRAME_CHAIN): Redefine in terms of
	i386_frame_chain.
	(i386_frame_chain): New prototype.

2001-04-14  J.T. Conklin  <jtc@redback.com>
	
	* target.h (target_ops): Removed to_core_file_to_sym_file vector
 	function.
	* corelow.c (core_ops): Updated for above change.
	* gnu-nat.c (core_ops): Likewise.
	* inftarg.c (child_ops): Likewise.
	* monitor.c (monitor_ops): Likewise.
	* ppc-bdm.c (bdm_ppc_ops): Likewise.
	* remote-adapt.c (adapt_ops): Likewise.
	* remote-bug.c (bug_ops): Likewise.
	* remote-e7000.c (e7000_ops): Likewise.
	* remote-eb.c (eb_ops): Likewise.
	* remote-es.c (es1800_ops, es1800_child_ops): Likewise.
	* remote-mm.c (mm_ops): Likewise.
	* remote-nindy.c (nindy_ops): Likewise.
	* remote-nrom.c (nrom_ops): Likewise.
	* remote-os9k.c (rombug_ops): Likewise.
	* remote-rdp.c (remote_rdp_ops): Likewise.
	* remote-sim.c (gdbsim_ops): Likewise.
	* remote-st.c (st2000_ops): Likewise.
	* v850ice.c (v850ice_ops): Likewise.
	* target.c (cleanup_target): Likewise
	(update_current_target): Likewise.
	(setup_target_debug): Likewise
	(debug_to_core_file_to_sym_file): Removed.

	* corefile.c (core_file_command) [HPUXHPPA]: Removed code that
 	sets symbol file from information obtained from the core file.
	* corelow.c (core_file_to_sym_file): Removed.
	
2001-04-13  Fernando Nasser  <fnasser@redhat.com>

	From  Adam Mirowski  <Adam.Mirowski@Sun.COM>
	Fixed Insight on Solaris. It was not possible to debug a process
	because of EINTR "errors".
	* procfs.c: (procfs_wait): if proc_wait_for_stop() fails
	with EINTR, retry the call.

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

	* solib-aix5.c (enum maptype): Delete.
	(struct lm_info): Add new member ``nmappings''.  Make ``mapping''
	member a pointer instead of a statically sized array.
	(build_so_list_from_mapfile): Dynamically allocate ``mapping''
	array.
	(aix5_relocate_main_executable, aix5_relocate_section_addresses,
	aix5_find_global_pointer): Search for correct mapping to use
	based on file offset instead of knowledge of whether the section
	is read-only or read/write.
	(aix5_find_gate_addresses): Use the first mapping instead of
	the (now defunct) MT_READONLY mapping.

2001-04-12  Nicholas Duffek  <nsd@redhat.com>

	* xcoffread.c (scan_xcoff_symtab): Ignore symbols beginning with
	"@".

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

	* config/i386/fbsd.mh (NATDEPFILES): Add i386-nat.o.

2001-04-09  Andrew Cagney  <ac131313@redhat.com>

	Obsolete i[3456]86-*-sunos* (aka Sun386) host and target.
	* config/i386/sun386.mh: Obsolete.
	* config/i386/sun386.mt: Obsolete.
	* config/i386/xm-sun386.h: Obsolete.
	* config/i386/tm-sun386.h: Obsolete.
	* config/i386/nm-sun386.h: Obsolete.
	* Makefile.in (ALLDEPFILES): Delete sun386-nat.c.
	(sun386-nat.o): Target is obsolete.
	* sun386-nat.c: Obsolete.
	* configure.tgt (i[3456]86-*-sunos*): Obsolete.
	* configure.host (i[3456]86-*-sunos*): Obsolete.
	* NEWS: Update.
	* TODO: Update.

2001-04-10  J.T. Conklin  <jtc@redback.com>

	* maint.c: Fix typo in comment.

2001-04-09  Keith Seitz  <keiths@cygnus.com>

	* MAINTAINERS: Swap with Syd Polk as a gdbtk maintainer.

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

	* fork-child.c (fork_inferior, clone_and_follow_inferior): 
	Document fact that apparent call to vfork() might actually be
	a call to fork() instead.
	* ser-pipe.c (pipe_open): Likewise.

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

	* printcmd.c (print_frame_args): Use a cleanup to invoke
	ui_out_list_end() so that the list count nesting flag will
	be decremented properly when an error occurs.
	* stack.c (print_frame): Likewise.

2001-04-06  J.T. Conklin  <jtc@redback.com>

	* dcache.c (dcache_write_line): Fixed bugs where cache line was
 	not written to target correctly.

	* gdbserver/low-hppabsd.c (read_inferior_memory): Add explicit 
	void return value;
	* gdbserver/low-nbsd.c: Likewise.
	* gdbserver/low-sparc.c: Likewise.
	* gdbserver/low-sun3.c: Likewise.

2001-04-06  Geoffrey Keating  <geoffk@redhat.com>

	* config/rs6000/nm-rs6000.h (PTRACE_ATTACH): Don't define.
	(PTRACE_DETACH): Don't define.

2001-04-06  David Smith  <dsmith@redhat.com>

	* arch-utils.c (default_prepare_to_proceed)
	(generic_prepare_to_proceed): Added new functions.
	* arch-utils.h: New function declarations for
	default_prepare_to_proceed() and generic_prepare_to_proceed().
	* gdbarch.sh: Added PREPARE_TO_PROCEED.
	* gdbarch.c: Regenerated.
	* gdbarch.h: Regenerated.
	* inferior.h: Added get_last_target_status() declaration.
	* infrun.c (get_last_target_status): Added new function.
	(handle_inferior_event): Saves last pid and waitstatus, which will
	get returned by get_last_target_status(). 

	* hppa-tdep.c (prepare_to_proceed):  Added comment stating that
	prepare_to_proceed() is potentially redundant since
	default_prepare_to_proceed() has been added.
	* linux-thread.c (prepare_to_proceed): Ditto.
	* lin-lwp.c (prepare_to_proceed): Ditto.
	* m3-nat.c (prepare_to_proceed): Ditto.
	
2001-04-05  Andrew Cagney  <ac131313@redhat.com>

	Obsolete powerpcle-*-cygwin* and powerpcle-*-solaris* platforms
	and powerpc-*-netware* target.
	* configure.host (powerpcle-*-cygwin*, powerpcle-*-solaris*):
	Obsolete.
	* configure.tgt (powerpc-*-netware*, powerpcle-*-cygwin*)
	(powerpcle-*-solaris*): Obsolete.
	* config/powerpc/tm-cygwin.h: Obsolete.
	* config/powerpc/cygwin.mt: Obsolete.
	* config/powerpc/xm-cygwin.h: Obsolete.
	* config/powerpc/cygwin.mh: Obsolete.
	* config/powerpc/nm-solaris.h: Obsolete.
	* config/powerpc/xm-solaris.h: Obsolete.
	* config/powerpc/tm-solaris.h: Obsolete.
	* config/powerpc/solaris.mt: Obsolete.
	* config/powerpc/tm-ppc-nw.h: Obsolete.
	* config/powerpc/ppc-nw.mt: Obsolete.
	* TODO: Update.
	* NEWS: Update.

2001-04-06  Fernando Nasser  <fnasser@redhat.com>

	* buildsym.c (record_line): Turn off unused addr bits.

2001-04-06  Fernando Nasser  <fnasser@redhat.com>

	From David Deephanphongs <deephan@telocity.com>
	* inferior.h:   Fix declarations of get_inferior_args and 
	set_inferior_args, which were missing the trailing 's'.

2001-04-05  Jeff Holcomb  <jeffh@redhat.com>

	* monitor.c (monitor_supply_register): Only report an error if we
	don't get a valid value.

2001-04-05  Eli Zaretskii  <eliz@is.elta.co.il>

	* README: Don't mention gdba.el.

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

        From  Jimmy Guo  <guo@cup.hp.com>
        * top.c (init_main): set prompt if annotation_level>1,
        this is necessary when annotation_level is set to 2 via
        --annotate=2 command line option.

2001-04-04  Andrew Cagney  <ac131313@redhat.com>

	Obsolete a29k-*-* host and a29k-*-sym1* and a29k-*-kern* targets.
	* configure.tgt (a29k-*-sym1*, a29k-*-kern*): Obsolete.
	* configure.host (a29k-*-*): Obsolete.
	* Makefile.in (ALLDEPFILES): Remove ultra3-nat.c and
	ultra3-xdep.c.
	(ultra3-nat.o, ultra3-xdep.o): Obsolete.
	* config/a29k/tm-ultra3.h: Obsolete.
	* config/a29k/ultra3.mt: Obsolete.
	* config/a29k/ultra3.mh: Obsolete.
	* config/a29k/nm-ultra3.h: Obsolete.
	* config/a29k/xm-ultra3.h: Obsolete.
	* ultra3-xdep.c: Obsolete.
	* ultra3-nat.c: Obsolete.
	* config/a29k/a29k-kern.mt: Obsolete.
	* NEWS: Update.
	* TODO: Update.

Wed Apr  4 21:48:42 2001  Christopher Faylor <cgf@cygnus.com>

	* main.c: Remove windows.h use.
	(gdbtk_test): Use PATH_MAX for home var calculation.
	* remote-e7000.c (e7000_parse_device): Accomodate Cygwin as well as
	Win32 in colon test.
	* ser-tcp.c: Use modern __CYGWIN__ conditional.
	* source.c (mod_path): Add __CYGWIN__ conditional to WIN32 test.
	(openp): Ditto.
	* symfile.c (symfile_bfd_open): Ditto.

2001-04-04  Martin M. Hunt  <hunt@redhat.com>

	* main.c (captured_main): For GDBtk, don't use tui_fileopen().
	Handle all stream setup in gdbtk_init

2001-04-04  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_extract_return_value): Don't return the return
	value of a void function.
	(i386_store_return_value): Likewise.

2001-04-03  Andrew Cagney  <ac131313@redhat.com>

	Obsolete w65-*-* target.
	* configure.tgt (w65-*-*): Obsolete.
	* config/w65/w65.mt: Obsolete.
	* config/w65/tm-w65.h: Obsolete.
	* w65-tdep.c: Obsolete.
	* NEWS: Update.  Fix TiC80 description.
	* TODO: Update.

2001-04-03  Andrew Cagney  <ac131313@redhat.com>

	Obsolete tic80-*-* target.
	* configure.tgt (tic80-*-*): Obsolete.
	* config/tic80/tic80.mt: Obsolete.
	* config/tic80/tm-tic80.h: Obsolete.
	* tic80-tdep.c: Obsolete.
	* TODO: Update
	* NEWS: Update.

2001-04-02  J.T. Conklin  <jtc@redback.com>

	* remote-mips.c (S_IROTH): Moved definition from here.
	* gdb_stat.h (S_IROTH): to here.

	* remote.c (remote_protocol_e, remote_protocol_E): Define.
	(set_remote_protocol_e_packet_cmd)
	(set_remote_protocol_E_packet_cmd)
	(show_remote_protocol_e_packet_command)
	(show_remote_protocol_E_packet_command): New functions.
	(init_all_packet_configs): Initialize remote_protocol_e and
	remote_protocol_E.
	(remote_resume, remote_async_resume): Support e/E command
	packets.
	(show_remote_cmd): Show state of remote_protocol_e and 
	remote_protocol_E.
	(_initialize_remote): Add "set remote step-over-range-packet" 
	and "set remote step-over-range-w-signal-packet" to CLI.

2001-04-01  Andrew Cagney  <ac131313@redhat.com>

	Obsolete ns32k-*-mach3*, ns32k-umax-*, ns32k-utek-sysv* and
	ns32k-utek-*.
	* Makefile.in (ALLDEPFILES): Delete umax-xdep.c and ns32km3-nat.c.
	(umax-xdep.o, ns32km3-nat.o): Obsolete.
	* configure.tgt (ns32k-*-mach3*, ns32k-utek-sysv*, ns32k-utek-*):
	Obsolete.
	* configure.host (ns32k-*-mach3*, ns32k-umax-*, ns32k-utek-sysv*):
	Obsolete.
	* config/ns32k/merlin.mh: Obsolete.
	* config/ns32k/merlin.mt: Obsolete.
	* config/ns32k/xm-merlin.h: Obsolete.
	* config/ns32k/tm-merlin.h: Obsolete.
	* config/ns32k/nm-umax.h: Obsolete.
	* config/ns32k/umax.mh: Obsolete.
	* config/ns32k/umax.mt: Obsolete.
	* config/ns32k/xm-umax.h: Obsolete.
	* umax-xdep.c: Obsolete.
	* config/ns32k/ns32km3.mh: Obsolete.
	* config/ns32k/ns32km3.mt: Obsolete.
	* config/ns32k/tm-ns32km3.h: Obsolete.
	* config/ns32k/xm-ns32km3.h: Obsolete.
	* ns32km3-nat.c: Obsolete.
	* ns32k-tdep.c (merlin_skip_prologue): Obsolete.
	(merlin_frame_num_args): Ditto.
	* NEWS: Update.
	* TODO: Update.

2001-04-02  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/fnchange.lst: Tweak due to
	expect/example/chesslib.c.

2001-04-02  Kevin Buettner  <kevinb@redhat.com>

	* m88k-tdep.c (examine_prologue): Change type of ``insn'' from
	unsigned int to unsigned long.  Also, fix format string.
	(pop_frame):  Fix PC_IN_CALL_DUMMY() call so that it doesn't
	use an undeclared variable.  Also, delete declaration and
	initialization of ``fp'' because it is otherwise unused.
	* remote-bug.c (sleep): Delete declaration.
	(bug_store_register, bug_write_memory, bug_read_memory)
	(bug_insert_breakpoint, bug_remove_breakpoint): Fix sprintf()
	format statements and cast certain sprintf() arguments to
	eliminate warnings.
	(bug_load): Likewise for call to printf_filtered().
	* config/m88k/tm-m88k.h (FIX_CALL_DUMMY): Eliminate
	assignment to ``pc''.  The necessary assignment is done in
	hand_function_call() after the invocation of FIX_CALL_DUMMY().

2001-03-20  Daniel Berlin  <dberlin@redhat.com>
	
	* symtab.c (completion_list_add_name): Remove duplicate string checks,
	readline already does this, and it's much faster at it, too.

2001-04-01  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c: Minor tweaks, to pacify the ari script.

2001-04-01  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_extract_struct_value_address): New function.
	* config/i386/tm-i386.h (EXTRACT_STRUCT_VALUE_ADDRESS): Redefine
	in terms of i386_extract_struct_value_address.
	(i386_extract_struct_value_address): New prototype.

	* i386-linux-nat.c (i386_linux_dr_get): Change type of return
	value to `unsigned long'.  Change type of `value' to `unsigned
	long'.
	(i386_linux_dr_set): Change type of second argument to `unsigned
	long'.
	(i386_linux_dr_set_control): Change type of first argument to
	`unsigned long'.
	(i386_linux_dr_get_status): Change type of return value to
	unsigned long.
	* config/i386/nm-linux.h (i386_linux_dr_set_control,
	i386_linux_dr_get_status): Adjust prototypes accordingly. 

2001-03-31  Kevin Buettner  <kevinb@redhat.com>

	* ia64-linux-nat.c (ia64_linux_stopped_by_watchpoint): Change
	TRAP_HWBKPT constant to match that in the kernel headers for
	Linux/IA-64.

2001-03-31  Mark Kettenis  <kettenis@gnu.org>

	* i386bsd-nat.c: Include "gdb_assert.h".
	[HAVE_PT_GETDBREGS] (DBREG_DRX): Define if not
	already defined.
	[HAVE_PT_GETDBREGS] (i386bsd_dr_set, i386bsd_dr_set_control,
	i386bsd_dr_set_addr, i386bsd_dr_reset_addr,
	i386bsd_dr_get_status): New functions.
	* config/i386/nm-fbsd.h [HAVE_PT_GETDBREGS]
	(I386_USE_GENERIC_WATCHPOINTS): Define.
	Include "i386/nm-i386.h".
	(I386_DR_LOW_SET_CONTROL, I386_DR_LOW_SET_ADDR,
	I386_DR_LOW_RESET_ADDR, I386_DR_LOW_GET_STATUS): New macros.
	(i386bsd_dr_set_control, i386bsd_dr_set_addr,
	i386bsd_dr_reset_addr, i386bsd_dr_get_status): New prototypes.
	* acconfig.h (HAVE_PT_GETDBREGS): New configure macro.
	* configure.in: Cleanup a few comments.  Check for PT_GETDBREGS
	ptrace request.
	* config.in, configure: Regenerate.

	* i386-nat.c (i386_insert_aligned_watchpoint): Set address
	register before enabling it by setting the control register.
	(i386_remove_aligned_watchpoint): Reset address register after
	disabling it by setting the control register.

	* i386-tdep.c (i386_extract_return_value): If the type of the
	return value is TYPE_STRUCT and the number of fields is one, call
	ourselves with TYPE set tp the type of the first field.
	(i386_store_return_value): Likewise.
	This fixes a problem with returning structs consisting of a single
	`float' or `double' on *BSD.

2001-03-30  Mark Kettenis  <kettenis@gnu.org>

	* lin-lwp.c (lin_lwp_resume): Don't mark LWP as not stopped until
	we're absolutely sure we're going to resume it.

	* thread-db.c (check_event): Don't report an error if we encounter
	a thread creation event for a thread that's already in the thread
	list, since that may legitemately happen.  Instead only call
	attach_thread if it's not already in the thread list.

2001-03-28  Andrew Cagney  <ac131313@redhat.com>

	* config/pa/xm-hppah.h (malloc): Really delete declaration
	(MALLOC_INCOMPATIBLE): Really delete macro.
	* cli/cli-cmds.c (apropos_command): Use xcalloc.

2001-03-28  Andrew Cagney  <ac131313@redhat.com>

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

	* v850-tdep.c (v850_scan_prologue): Initialize ``insn2''.
	* sparc-tdep.c (sparc64_push_arguments): Add default case to
	switch.
	* sh-tdep.c (sh_do_fp_register): Replace ``?:'' printf format
	expression with if statement.
	* mn10200-tdep.c (mn10200_analyze_prologue): Initialize
	``stack_size''.
	* mips-tdep.c (show_mipsfpu_command): Add default case to switch.
	(mips_dump_tdep): Fix setting of ef_mips_arch.
	* mcore-tdep.c (mcore_analyze_prologue): Initialize ``fp_regnum''.
	* dsrec.c (make_srec): Always initialize ``binbuf''.
	* monitor.c (monitor_read_memory_single): Do not pass an
	uninitialized buffer to monitor_error. Make ``i'' more local.

2001-03-28  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Change ns32k target to ,-Werror.

	* ns32k-tdep.c: Include "gdbcore.h"
	(flip_bytes): Change first argument to void*. Add forward
	declaration.
	(sign_extend): Add declaration.
	(merlin_frame_num_args): Add final else clause to if-else chain.
	(umax_frame_num_args): Ditto.
	* config/ns32k/tm-umax.h (ns32k_localcount): Declare.
	(flip_bytes): Ditto.

2001-03-28  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-tdep.c (FRAMELESS_SIGNAL): Moved here from
	config/i386/nm-linux.h (including comment).
	(i386_linux_frame_chain): New function implementing guts of the
	former FRAME_CHAIN macro, but using read_memory_unsigned_integer
	instead of read_memory_integer.
	(i386_linux_frame_saved_pc): Removed doc pointing to
	i386/tm-linux.h for an explanation of FRAMELESS_SIGNAL since that
	now lives in this file.
	* config/i386/tm-linux.h (FRAMELESS_SIGNAL): Moved to
	i386-linux-tdep.c (including comment).
	(FRAME_CHAIN): Redefined in terms of i386_linux_frame_chain.
	(i386_linux_frame_chain): New prototype.

	* gdbserver/low-linux.c [I386_GNULINUX_TARGET]: Cleanup code and
	make it work again.
	(NUM_FREGS): Redefine to 0.
	(NUM_REGS): Redefine as NUM_GREGS.
	(i386_register_byte, i386_register_raw_size): Update from
	i386-tdep.c.  Add comment about their origin.
	(regmap, register_u_addr): Take these from i386-linux-nat.c.
	(i386_register_u_addr): Removed.

	* i386-linux-nat.c (i386_linux_dr_get): Return 0 if ptrace call
	fails instead of calling perror_with_name.  This should fix
	debugging remote i386 targets with a native Linux/x86 GDB.  Add
	FIXME for this hack.

2001-03-19  J.T. Conklin  <jtc@redback.com>

	* arch-utils.c (#include "gdbthread.h"): Removed.
	(#include "symfile.h"): Removed. 
	(XMALLOC): Removed unused macro.
	* breakpoint.c (tbreak_command): Removed local declaration.
	(awatch_command, do_enable_breakpoint, set_breakpoint_count):
 	Remove duplicate declarations.
	(bpstat_should_step, bpstat_have_active_hw_watchpoints)
	(remove_solib_event_breakpoints): Fix indentation botch.
	* c-typeprint.c (#include "command.h"): Removed.
	(#include "gdbcmd.h"): Removed.
	* ch-exp.c (ch_terminal_match_float_literal, parse_expr)
	(parse_primval, parse_untyped_expr, parse_opt_untyped_expr):
 	Removed duplicate declarations.
	* ch-typeprint.c (#include "command.h"): Removed.
	(#include "gdbcmd.h"): Removed.
	* corefile.c (#include "frame.h"): Removed
	(#include "symfile.h"): Removed.
	(#include "language.h"): Removed.
	* dbxread.c (#include "command.h"): Removed.
	* environ.c (#include "gdbcore.h"): Removed.
	* event-loop.c (#include "top.h"): Removed.
	* f-typeprint.c (#include "command.h"): Removed.
	(#include "gdbcmd.h"): Removed.
	(#include "language.h"): Removed.
	(#include "typeprint.h"): Removed.
	(#include "frame.h"): Removed.
	* gdbtypes.h (print_type_scalar): Removed declaration.
	* infcmd.c (#include "completer.h"): Removed.
	* language.c (#include "frame.h"): Removed.
	* m2-typeprint.c (#include "command.h"): Removed.
	(#include "gdbcmd.h"): Removed.
	(#include "language.h"): Removed.
	* m2-valprint.c (#include "valprint.h"): Removed.
	* p-typeprint.c (#include "command.h"): Removed.
	(#include "gdbcmd.h"): Removed.
	* p-valprint.c (#include "typeprint.h"): Removed.
	* parse.c (#include "linespec.h"): Removed.
	* regcache.c (#include "frame.h"): Removed.
	* remote.c (#include "frame.h"): Removed.
	(getpkt_sane): Make static.
	* source.c (#include "completer.h"): Removed.
	* stack.c (#include "symfile.h"): Removed.
	(#include "objfiles.h"): Removed.
	* symfile.c (#include "completer.h"): Removed.
	* tracepoint.c (#include "completer.h"): Removed.
	* values.c (#include "frame.h"): Removed.
	* varobj.c (#include "valprint.h"): Removed.
	* wrapper.c (#include "frame.h"): Removed.
	
	* memattr.c (create_mem_region): Removed unused variable.
	* remote-nrom.c: Removed spurious semicolon after init_nrom_ops.

2001-03-27  Nick Clifton  <nickc@redhat.com>

	* remote-rdp.c (rdp_set_command_line): Add missing double quote.

2001-03-27  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (build_so_lib_from_mapfile): Use xfree() instead
	of free().

2001-03-27  Eli Zaretskii  <eliz@is.elta.co.il>

	* TODO (Cleanups): Remove the item about converting docs to GFDL.

2001-03-26  Kevin Buettner  <kevinb@redhat.com>

	* ia64-tdep.c (slotN_contents, replace_slotN_contents): Change
	type of ``bundle'' from unsigned char * to char *.
	(ia64_get_saved_register): Use alloca() to allocate register
	buffers.

	* solib-aix5.c (build_so_lib_from_mapfile): Fix xasprintf() usage.

2001-03-26  Kevin Buettner  <kevinb@redhat.com>

	* proc-utils.h (procfs_ctl_t): New typedef.
	* proc-api.c (write_with_trace): Change type of ``opcode'' from
	long to procfs_ctl_t.  Don't assume that the target has defined
	BREAKPOINT.  Handle case in which PCRESET is the same as PCUNSET.
	* proc-events.c (sys/syscall.h, sys/fault.h): Include conditionally.
	* procfs.c (sys/fault.h, sys/syscall.h): Include conditionally.
	(gdb_sigset_t, gdb_sigaction_t, gdb_siginfo_t, gdb_premptysysset)
	(gdb_praddsysset, gdb_prdelsysset, gdb_pr_issyssetmember):
	Conditionally define as appropriate for AIX/non-AIX systems.  Use
	these defines/typedefs as appropriate elsewhere in file.
	(struct procinfo): Change type of saved_sigset and saved_sighold
	from sigset_t to gdb_sigset_t.  Make saved_exitset and
	saved_entryset pointer variables.  Add two new fields, num_syscalls
	and syscall_names.
	(DYNAMIC_SYSCALLS): Define when HAVE_PRSYSENT_T is defined.
	(sysset_t_size, sysset_t_alloc): New functions.
	(load_syscalls, free_syscalls, find_syscall): New functions for
	platforms which define DYNAMIC_SYSCALLS.
	(create_procinfo): Call load_syscalls.
	(destroy_one_procinfo): Call free_syscalls.
	(GDBRESET): Don't define twice.
	(proc_modify_flag): Change type of operation code array `arg'
	from long to procfs_ctl_t.
	(proc_stop_process, proc_wait_for_stop, proc_run_process)
	(proc_set_traced_signals, proc_set_traced_faults)
	(proc_set_traced_sysentry, proc_set_traced_sysexit)
	(proc_set_held_signals, proc_clear_current_fault)
	(proc_set_current_signal, proc_clear_current_signal, proc_set_gregs)
	(proc_set_fpregs, proc_kill, proc_set_watchpoint): Likewise for `cmd'.
	(proc_set_traced_sysentry): Dynamically allocate variable sized
	struct gdb_proc_ctl_pcsentry.  Also, free it at function exit.
	(proc_set_traced_sysexit): Dynamically allocate variable
	sized struct gdb_proc_ctl_pcsexit.  Also, free it at
	function exit.
	(proc_get_traced_sysentry, proc_get_traced_sysexit): Add new code
	for reading the sysset_t struct on AIX5.
	(procfs_debug_inferior): Don't assume that SYS_exit will be
	defined.  Add new code for finding certain syscalls on AIX5.
	(syscall_is_lwp_exit, syscall_is_exit, syscall_is_exec)
	(syscall_is_lwp_create): New functions.
	(procfs_wait): Restructured code which checks for certain
	system calls to use the new syscall_is_... functions.
	(procfs_notice_signals): Account for the fact that saved_entryset
	and saved_exitset in struct procinfo are now pointers.

2001-03-26  Kevin Buettner  <kevinb@redhat.com>

	* symtab.c (find_pc_sect_line): Revise method used for finding
	the ending pc.

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

	* i386-linux-tdep.c (i386_linux_sigtramp_saved_pc,
	i386_linux_sigtramp_saved_sp): Make static.
	(i386_linux_frame_saved_pc): New function based on the old
	FRAME_SAVED_PC macro, but use read_memory_unsigned_integer instead
	of read_memory_integer.
	* config/i386/tm-linux.h (sigtramp_saved_pc): Remove definition.
	(i386_linux_sigtramp_saved_pc): Remove prototype.
	(FRAME_SAVED_PC): Redefine in terms of i386_linux_frame_saved_pc.
	(i386_linux_frame_saved_pc): New prototype.

2001-03-26  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Document m88k as a ``Known problem in 5.1''.
	* TODO (GDB 5.1 - Cleanups): Update.

2001-03-26  Andrew Cagney  <ac131313@redhat.com>

	* fork-child.c (clone_and_follow_inferior): Delete #ifdef
	HAVE_VFORK.

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

	* config/i386/tm-symmetry.h (PUSH_ARGUMENTS): #undef.

	* i386-tdep.c (i386_push_arguments, i386_store_struct_return): New
	functions.
	* config/i386/tm-i386.h (PUSH_ARGUMENTS): New macro.
	(STORE_STRUCT_RETURN): Redefine in terms of
	i386_store_struct_return.
	(i386_push_arguments, i386_store_struct_return): New prototypes.
	* config/i386/tm-i386v.h (STORE_STRUCT_RETURN): Remove.  It's
	definition was identical to the definition in "i386/tm-i386.h" so
	the new definition should suffice too.

2001-03-26  Eli Zaretskii  <eliz@is.elta.co.il>

	* event-loop.c (toplevel) [!HAVE_POLL] [NO_FD_SET]: Remove unused
	definitions for SELECT, NBBY, FD_SETSIZE, NFDBITS, and MASK_SIZE.

	* config/djgpp/djconfig.sh: Add copyright notice.

	* ser-go32.c (rawclock): Remove prototype; include time.h instead.
	(ISR, dos_hookirq, isr_t): Convert K&R definition to ANSI C.
	(top level) <string.h>: Include gdb_string.h instead.
	(dos_noop, dos_raw, dos_noflush_set_tty_state) 
	(dos_print_tty_state, dos_info): Remove ATTRIBUTE_UNUSED.

	* go32-nat.c (go32_create_inferior): Move the declaration of
	`environ' to here from the top level.
	(top level) <_initialize_go32_nat>: Remove redundant prototype.
	<gdb_string.h>: Include it instead of string.h.
	(store_register): Call register_buffer instead of accessing
	registers[] directly.
	(redir_cmdline_delete, redir_cmdline_parse, redir_to_debugger) 
	(redir_to_debugger, redir_debug_init) [__DJGPP_MINOR__ < 3]: Put
	the function names at the start of the line.
	(go32_set_dr): Throw internal_error if the argument is not a valid
	debug register number.
	(go32_open, go32_close, go32_attach, go32_detach, go32_resume) 
	(go32_wait, go32_xfer_memory, go32_files_info) 
	(go32_terminal_info): Remove ATTRIBUTE_UNUSED.

2001-03-25  Jim Blandy  <jimb@redhat.com>

	* mips-tdep.c (mips_gdbarch_init): Tweak indentation.

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

	From  Andrew Cagney  <ac131313@redhat.com>

        * coffread.c: Include "gdb_assert.h".
	(coff_symtab_read): Cast the integer s_sclass to a long before
 	casting it to a pointer.

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

	From  Andrew Cagney  <ac131313@redhat.com>
	
        * coffread.c (coff_symtab_read): Initialize
 	``fcn_first_line_addr''.  Check that the ``.bf'' always preceeds
 	the ``.ef'' info.
	* dbxread.c (find_text_range): Initialize ``start'' and ``end''.

2001-03-23  Andrew Cagney  <ac131313@redhat.com>

	* config/sparc/tm-sp64.h (GDB_MULTI_ARCH): Down grade to
 	GDB_MULTI_ARCH_PARTIAL from two.  SOFTWARE_SINGLE_STEP is not
 	multi-arch.

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

	* target.h (SOFTWARE_SINGLE_STEP_P)
	(SOFTWARE_SINGLE_STEP): Delete macro definitions.

2001-03-23  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (gdbarch_register_read, gdbarch_register_write): Add.
	* gdbarch.h, gdbarch.c: Regenerate.
	
	* regcache.h (regcache_read, regcache_write): Declare.
	(registers, register_valid, register_buffer): Add note that these
	interfaces are deprecated.
	
	* regcache.c: Include "gdb_assert.h".
	(legacy_write_register_gen): Rename write_register_gen.
	(legacy_read_register_gen): Rename read_register_gen.
	(regcache_read, regcache_write): New function.
	(read_register_gen, write_register_gen): New function.
	(write_register): Simplify.  Use write_register_gen.
	(read_register): Ditto using read_register_gen.
	(read_signed_register): Ditto.
	(read_register_bytes): Ditto!!!!
	(supply_register): Add note that CLEANUP_REGISTER_VALUE is being
	replaced by gdbarch_register_read.

	* TODO (GDB 5.2 - Cleanups): Add list of gdbarch methods to
	deprecate.

2001-03-23  Jim Blandy  <jimb@redhat.com>

	Fix from Dan Berlin:

	* stabsread.c (read_cpp_abbrev): Properly construct the names of
	virtual function table pointer fields.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (xfree, mcalloc, mmalloc, mrealloc, mfree, xmmalloc,
	xmrealloc): Move existing declarations to the one place and
	re-order to be consistent.
	(xmcalloc, xmfree): Declare.
	(xmmalloc, xmrealoc): Assume ISO-C - use size_t and void* in
	declaration.
	
	* utils.c (size_t): Delete #ifdef defining size_t.
	(mmalloc, mrealloc, mcalloc, mfree): Re-order.
	(mmalloc, mrealloc, mcalloc): Document as only calls in GDB
	corresponding malloc, realloc, calloc.
	(mfree): Call free directly.
	(xmmalloc, xmrealloc): Clean up. Assume ISO-C.
	(xmcalloc, xmfree): New functions. Copy old xcalloc and xfree
	function bodies to here.
	(xcalloc, xfree): Call xmcalloc and xmfree respectfully.
	
2001-03-23  Andrew Cagney  <ac131313@redhat.com>

	* fork-child.c (fork_inferior): Make ``argv'', ``exec_file'' and
	``shell_file'' static locals.

	* jv-lang.c (java_link_class_type): Initialize ``field'' and
	``method''.
	
	* jv-valprint.c (java_value_print): Initialize ``next_element''.

2001-03-23  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/nm-i386.h: Fix formatting and change reference to
	i386-tdep.c to i386-nat.c.

2001-03-23  David Smith  <dsmith@redhat.com>

	* configure.in: Corrected spelling errors.
	* configure: Regenerated.

2001-03-22  Andrew Cagney  <ac131313@redhat.com>

	* TODO (GDB 5.1 - Cleanups): Add more targets to obsolete.

2001-03-22  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (NTSSTART): Delete.
	(NTSOBS): Delete.
	(kdb): Delete target.
	* kdb-start.c, stuff.c: Mark as obsolete.
	* NEWS: Update.

2001-03-22  Andrew Cagney  <ac131313@redhat.com>

	* config/pa/xm-hppah.h (HPPA_COMPILER_BUG): Delete. GDB only
	compiles using an ISO-C compiler.
	(MALLOC_INCOMPATIBLE): Ditto.
	* linespec.c (decode_line_1): Delete hack to work around
	HPPA_COMPILER_BUG.

2001-03-22  Andrew Cagney  <ac131313@redhat.com>

	* exec.c (xfer_memory): Always initialize section.
	* infrun.c (normal_stop): Always initialize source_flag.

2001-03-22  Andrew Cagney  <ac131313@redhat.com>

	* TODO (Remote Protocol Support): Review.  Add notes about ``!'',
	non-use of a continue address and typical use of ``q'' packet.

2001-03-22  Eli Zaretskii  <eliz@is.elta.co.il>

	Make DJGPP use the new unified support for hardware
	breakpoints and watchpoints on x86 targets:

	* config/i386/nm-go32.h <top level>: Don't include nm-i386v.h,
	include nm-i386.h instead.
	(TARGET_HAS_HARDWARE_WATCHPOINTS, HAVE_CONTINUABLE_WATCHPOINT)
	(TARGET_CAN_USE_HARDWARE_WATCHPOINT, STOPPED_BY_WATCHPOINT)
	(TARGET_REGION_OK_FOR_HW_WATCHPOINT, DECR_PC_AFTER_HW_BREAK)
	(target_stopped_data_address, target_insert_watchpoint)
	(target_remove_watchpoint, target_insert_hw_breakpoint)
	(target_remove_hw_breakpoint): Don't define.
	(I386_USE_GENERIC_WATCHPOINTS, I386_DR_LOW_SET_CONTROL)
	(I386_DR_LOW_SET_ADDR, I386_DR_LOW_RESET_ADDR)
	(I386_DR_LOW_GET_STATUS): Define to call appropriate go32_*
	functions from go32-nat.c.

	* config/i386/go32.mh (NATDEPFILES): Add i386-nat.o.

	* go32-nat.c <top level>: Remove prototypes for watchpoint-
	related functions.  Remove definitions of watchpoint-related
	macros.
	(go32_mourn_inferior): Call i386_cleanup_dregs instead of the
	private cleanup_dregs function.
	(cleanup_dregs, go32_insert_watchpoint)
	(go32_insert_aligned_watchpoint, go32_handle_nonaligned_watchpoint)
	(go32_remove_watchpoint, go32_remove_aligned_watchpoint)
	(go32_region_ok_for_watchpoint, go32_stopped_by_watchpoint)
	(go32_remove_hw_breakpoint, go32_insert_hw_breakpoint): Remove.
	(go32_set_dr, go32_set_dr7, go32_get_dr6): New functions.

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

	* ia64-tdep.c (fetch_instruction): Warn about slot numbers greater
	than two instead of generating an error.
	
2001-03-21  Jim Blandy  <jimb@redhat.com>

	* cp-valprint.c: Reformat to bring into line with GNU coding
	standards.

2001-03-21  Mark Kettenis  <kettenis@gnu.org>

	Make Linux use the new unified support for hardware breakpoints
	and watchpoints on x86 targets.
	* i386-linux-nat.c: Doc fixes.  Include "gdb_assert.h".
	[HAVE_SYS_DEBUGREG_H]: Include <sys/debugreg.h>.
	(DR_FIRSTADDR, DR_LASTADDR, DR_STATUS, DR_CONTROL): Define to
	appropriate value if not already defined.
	(register_u_addr): New function.
	(kernel_u_size): New function.
	(i386_linux_dr_get, i386_linux_dr_set): New functions.
	(i386_linux_dr_set_control, i386_linux_dr_set_addr,
	i386_linux_reset_addr, i386_linux_dr_get_status): New functions.
	* config/i386/nm-linux.h: Don't include "nm-i386v.h".
	(I386_USE_GENERIC_WATCHPOINTS): Define and include "nm-i386.h".
	(TARGET_HAS_HARDWARE_WATCHPOINTS,
	TARGET_CAN_USE_HARDWARE_WATCHPOINTS, HAVE_CONTINUABLE_WATCHPOINT,
	STOPPED_BY_WATCHPOINT, target_insert_watchpoint,
	target_remove_watchpoint): Remove macros.
	(i386_stopped_by_watchpoint, i386_insert_watchpoint,
	i386_remove_watchpoint): Remove prototypes.
	(register_u_addr): New prototype.
	(REGISTER_U_ADDR): Define in terms of register_u_addr.
	(i386_linux_dr_set_control, i386_linux_dr_set_addr,
	i386_linux_reset_addr, i386_linux_dr_get_status): New prototypes.
	(I386_DR_LOW_SET_CONTROL, I386_DR_LOW_SET_ADDR,
	I386_DR_LOW_RESET_ADDR, I386_DR_LOW_GET_STATUS): New macros.
	* config/i386/linux.mh (NATDEPFILES): Replace i386v-nat.o with
	i386-nat.o.

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

	Fix from Dan Berlin:

	* linespec.c (find_methods): Whitespace differences aren't
	significant in *un*mangled method names.  Use strcmp_iw to compare
	them, not STREQ.

2001-03-21  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Allow a non- multi-arch target to override a
	predicate.
	* gdbarch.h: Regenerate.

2001-03-21  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Avoid use of ``!''.

2001-03-20  Andrew Cagney  <ac131313@redhat.com>

	* target.h (enum target_signal): Move definition from here.
	* defs.h (enum target_signal): To here.

	* config/arc/tm-arc.h (arc_software_single_step): Change type of
	first parameter to enum target_signal.
	* config/rs6000/tm-rs6000.h (rs6000_software_single_step): Ditto.
	* config/sparc/tm-sparc.h (sparc_software_single_step): Ditto.
	* rs6000-tdep.c (rs6000_software_single_step): Update.
	
2001-03-20  Andrew Cagney  <ac131313@redhat.com>

	* frame.h (SIZEOF_FRAME_SAVED_REGS): Report an error if macro
	already defined.
	
	From 2000-08-25 Stephane Carrez <Stephane.Carrez@worldnet.fr>:
        * stabsread.c (define_symbol): A parameter ('R'), a local ('r'),
        or a reference ('a') can be in a pseudo register.
        * infcmd.c (do_registers_info): Must take into account the pseudo
        registers to print their value.
        (registers_info): Likewise.
        * stack.c (frame_info): Likewise.
        * frame.h (SIZEOF_FRAME_SAVED_REGS): Save the pseudo registers.

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

	Unified support for hardware breakpoints and watchpoints on
	x86 targets:

	* config/i386/nm-i386.h: New file.

	* config/i386/nm-i386.h: (i386_cleanup_dregs)
	(i386_insert_watchpoint, i386_remove_watchpoint)
	(i386_region_ok_for_watchpoint, i386_stopped_by_hwbp)
	(i386_stopped_data_address, i386_insert_hw_breakpoint)
	(i386_remove_hw_breakpoint): Declare prototypes.
	[I386_USE_GENERIC_WATCHPOINTS] (TARGET_CAN_USE_HARDWARE_WATCHPOINT):
	Define if not already defined.
	(TARGET_REGION_OK_FOR_HW_WATCHPOINT, HAVE_CONTINUABLE_WATCHPOINT)
	(STOPPED_BY_WATCHPOINT, target_stopped_data_address)
	(target_insert_watchpoint, target_remove_watchpoint)
	(target_insert_hw_breakpoint, target_remove_hw_breakpoint): Define
	to call the appropriate i386_* functions.

	* i386-nat.c: New file.

	* i386-nat.c (I386_DR_CONTROL_MASK, I386_DR_LOCAL_ENABLE)
	(I386_DR_GLOBAL_ENABLE, I386_DR_DISABLE, I386_DR_SET_RW_LEN)
	(I386_DR_GET_RW_LEN, I386_DR_WATCH_HIT): New macros.
	(dr_mirror, dr_status_mirror, dr_control_mirror, dr_ref_count)
	(maint_show_dr): New variables.
	(i386_cleanup_dregs, i386_show_dr, i386_length_and_rw_bits)
	(i386_insert_aligned_watchpoint, i386_remove_aligned_watchpoint)
	(i386_handle_nonaligned_watchpoint, i386_insert_watchpoint)
	(i386_remove_watchpoint, i386_region_ok_for_watchpoint)
	(i386_stopped_data_address, i386_stopped_by_hwbp)
	(i386_insert_hw_breakpoint, i386_remove_hw_breakpoint): New
	functions.
	(_initialize_i386_nat): New function.
	[I386_USE_GENERIC_WATCHPOINTS]: Add new	maint command
	`show-debug-regs', sets maint_show_dr to non-zero value and
	activates debugging print-outs in functions which insert, remove,
	and test watchpoints and hardware breakpoints.

	* Makefile.in (i386-nat.o): New target.
	(ALLDEPFILES): Add i386-nat.o.

2001-03-21  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c: Add back _initialize_i386_tdep prototype with
	appropriate comment.

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

	* config/alpha/alpha-linux.mh (NATDEPFILES): Use proc-service.o,
	thread-db.o, and lin-lwp.o for thread support instead of
	linux-thread.o and lin-thread.o.
	* config/alpha/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.

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

	Fix from Dan Berlin:
	
	* Makefile.in: Clean up dependencies on ../include/demangle.h.
	(demangle_h): New variable.
	(jv-typeprint.o, jv-valprint.o, linespec.o): Use it.

2001-03-20  Andrew Cagney  <ac131313@redhat.com>

	* target.h (SOFTWARE_SINGLE_STEP_P): Add empty parameter list.
	* breakpoint.c (bpstat_stop_status): Update.
	* infrun.c (handle_inferior_event): Ditto.
	* mips-tdep.c (mips_dump_tdep): Ditto.
	* infrun.c (resume): Ditto.
	* infptrace.c (child_resume): Ditto.
	* config/mips/tm-wince.h (SOFTWARE_SINGLE_STEP_P): Ditto.
	* config/sh/tm-wince.h (SOFTWARE_SINGLE_STEP_P): Ditto.
	* config/sparc/tm-sparc.h (SOFTWARE_SINGLE_STEP_P): Ditto.
	* config/powerpc/tm-linux.h (SOFTWARE_SINGLE_STEP_P): Ditto.
	* config/arm/tm-wince.h (SOFTWARE_SINGLE_STEP_P): Ditto.
	* config/arc/tm-arc.h (SOFTWARE_SINGLE_STEP_P): Ditto.
	* config/powerpc/tm-ppc-eabi.h (SOFTWARE_SINGLE_STEP_P): Ditto.

2001-03-20  Andrew Cagney  <ac131313@redhat.com>

	* config/powerpc/tm-linux.h (SOFTWARE_SINGLE_STEP): Replace abort
	with internal_error.

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

	Fix from Dan Berlin:
	
	* linespec.c (find_methods): Just call CHECK_TYPEDEF on t, rather
	than asking for sym_class's type; that's circuitous.  Remove
	sym_class, since the last use of it is gone.

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

	* breakpoint.c (print_it_typical) <bp_access_watchpoint> [UI_OUT]:
	Correct the order of calls to ui_out_field_string and
	ui_out_list_begin when bs->old_val is NULL.

2001-03-19  Kevin Buettner  <kevinb@redhat.com>

	* configure.in (AC_CHECK_HEADERS): Check for existence of nlist.h.
	* configure: Regenerate.
	* config.in: Regenerate.
	* solib-legacy.c (nlist.h): Include if HAVE_NLIST_H is defined.

2001-03-19  Kevin Buettner  <kevinb@redhat.com>

	* config/i386/i386v42mp.mh (NATDEPFILES): List all files on
	same line to avoid problems with Unixware 7's make when building
	a cross debugger.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (malloc): Move declaration from here.
	* utils.c (malloc): To here.
	* config/pa/xm-hppah.h (malloc): Delete declaration.

	* gnu-nat.c (make_proc): Use xmalloc instead of malloc.
	* hp-psymtab-read.c (hpread_call_pxdb): Ditto.
	(hpread_quick_traverse): Ditto.
	* infttrace.c (create_thread_info): Ditto.
	(kill_inferior): Ditto.
	* gnu-nat.c (make_inf): Ditto, and don't check return value.
	* procfs.c (proc_update_threads): Ditto.
	* valprint.c (print_decimal_chars): Ditto.
	* gdbtypes.c (cfront_mangle_name): Use xasprintf instead of
	malloc and sprintf.
	* remote-rdp.c (rdp_set_command_line): Ditto.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (realloc): Move declaration from here.
	* utils.c (realloc): To here.
	* config/pa/xm-hppah.h (realloc): Delete declaration.
	* lin-thread.c (insert_thread): Use xrealloc instead of realloc.
	* symfile.c (add_filename_language): Ditto.
	* event-loop.c (create_file_handler): Ditto.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (free): Move declaration from here.
	* utils.c (free): To here.
	(xfree): Document as the only call to free().
	* config/pa/xm-hppah.h (free): Delete declaration.

2001-03-19  Kevin Buettner  <kevinb@redhat.com>

	* config/ia64/linux.mh (NATDEPFILES): Add proc-service.o to
	this list.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* eval.c (evaluate_subexp): Remove #ifdef __STDC__ and ``inline''.
	* config/mips/xm-mips.h (offsetof): Define when !GNUC not !STDC.
	* cli/cli-cmds.c (init_cli_cmds): Remove #ifdef __STDC__

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* TODO: List known problems with TUI.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Jimmy Guo stepped down as a maintiner (TUI,
	gdb.hp).

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (remote_cisco_section_offsets): Do not cast result from
	bfd_get_section_name.
	(compare_sections_command): Ditto.
	(remote_cisco_section_offsets): Make ``p'' a const pointer.
	(compare_sections_command): Ditto for ``sectname''.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	From Mon Nov 20 13:59:29 2000 Andrew Cagney <cagney@b1.cygnus.com>:
	* valops.c (hand_function_call): Simplify computation of the
	address of the pushed argument.
 
2001-03-17  Andrew Cagney  <ac131313@redhat.com>

	* p-exp.y (parse_number): Avoid shift overflow when ``long''.
	Code copied from c-exp.y.

2001-03-18  Kevin Buettner  <kevinb@redhat.com>

	* acconfig.h (HAVE_STRUCT_LINK_MAP_WITH_L_MEMBERS)
	(HAVE_STRUCT_LINK_MAP_WITH_LM_MEMBERS)
	(HAVE_STRUCT_SO_MAP_WITH_SOM_MEMBERS): New configure macros.
	* configure.in (HAVE_STRUCT_LINK_MAP32): Move this test out
	of the Solaris procfs testing section.  Instead, group with...
	(HAVE_STRUCT_LINK_MAP_WITH_L_MEMBERS)
	(HAVE_STRUCT_LINK_MAP_WITH_LM_MEMBERS)
	(HAVE_STRUCT_SO_MAP_WITH_SOM_MEMBERS): New <link.h> tests.
	* configure: Regenerate.
	* config.in: Regenerate.

	* solib-legacy.c (legacy_svr4_fetch_link_map_offsets): Use
	new configure macros to choose which (if any) code to
	compile in.  Added code to explicitly handle *BSD systems;
	these systems were previously handled only through macro
	redefinition.  Also, due to the way the autoconf tests are set
	up, this function will no longer return a non-zero value when
	GDB is configured as a cross debugger.  I.e, cross debuggers
	will no longer be able to "accidentally" get the host system's
	link map offsets.

2001-03-18  Kevin Buettner  <kevinb@redhat.com>

	* config/i386/nbsd.mh (NATDEPFILES): List all files on the same
	line to avoid build problem on NetBSD 1.4.

2001-03-17  Michael Chastain  <chastain@redhat.com>

	* win32-nat.c (child_attach): check args for NULL before passing
	to strtoul.  This fixes PR gdb/43.

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

	* i387-nat.h: Doc Fix.

	* i386-tdep.c: Fix formatting.
	(i386_get_frame_setup, i386_follow_jump, codestream_read,
	codestream_seek, codestream_fill, skip_trampoline_code,
	gdb_print_insn_i386, _initialize_i386_tdep): Remove redundant
	prototypoes.

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

	* config/i386/tm-linux.h (TARGET_ANALYZE_FLOATING): Remove.  It's
	no longer used.  Also remove associated FIXME.

2001-03-16  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Add classes ``m'' and ``M'' for pure multi-arch.  Do
	not generate macro wrappers for multi-arch functions or
	predicates.
	(class_is_info_p, class_is_predicate_p): Update.
	(class_is_function_p, class_is_variable_p): Ditto.
	(class_is_multiarch_p): New class function.

2001-03-16  J.T. Conklin  <jtc@redback.com>

	* config/h8300/tm-h8300.h (FRAME_ARGS_ADDRESS): Changed to use
	h8300_frame_args_address from frame_args_address.
	(FRAME_LOCALS_ADDRESS): Changed to use h8300_frame_locals_address
	from frame_locals_address.
	(PRINT_REGISTER_HOOK): Changed to use h8300_print_register_hook
	from print_register_hook.
	(h8300_frame_args_address): Declare.
	(h8300_frame_find_saved_regs): Declare.
	(h8300_frame_locals_address): Declare.
	(h8300_frame_saved_pc): Declare.
	(h8300_pop_frame): Declare.
	(h8300_print_register_hook): Declare.
	* h8300-tdep.c (h8300_frame_find_saved_regs): Removed declaration.
	(h8300_frame_args_address): Renamed from frame_args_address.
	(h8300_frame_locals_address): Renamed from frame_locals_address.
	(h8300_pop_frame): Renamed from pop_frame.
	(h8300_print_register_hook): Renamed from print_register_hook.

2001-03-16  Kevin Buettner  <kevinb@redhat.com>

	* solib-svr4.c (bfd_lookup_symbol):  Change type of
	``storage_needed'' from unsigned int to long in order to
	match return type of bfd_get_symtab_upper_bound() and
	bfd_get_dynamic_symtab_upper_bound().
	* solib-aix5.c (bfd_lookup_symbol): Likewise.  Also, eliminate
	REASONABLE_LIMIT hack which had been added to work around this
	problem.

2001-03-15  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (bfd_lookup_symbol, build_so_list_from_mapfile)
	(aix5_relocate_main_executable, aix5_clear_solib): Replace calls
	to free() with calls to xfree().
	(bfd_lookup_symbol): Eliminate use of PTR.
	(build_so_list_from_mapfile): Use xasprintf() instead of sprintf().

2001-03-15  Martin Hunt  <hunt@redhat.com>

	* linespec.c (decode_line_1): Remove trailing quote
	when parsing double quotes.

2001-03-15  Kevin Buettner  <kevinb@redhat.com>

	* uw-thread.c (read_thr_debug, read_map, read_lwp, thread_iter)
	(libthread_stub, libthread_init): Pass NULL for the mem_attrib
	argument in the to_xfer_memory calls.

2001-03-15  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Fix typo - w65 not w64.  Still doesn't build.
	* TODO (GDB 5.1 - Cleanups): Add status of targets being obsoleted.

2001-03-15  Andrew Cagney  <ac131313@redhat.com>

	* wince.c (child_xfer_memory): Add attrib parameter.
	* symm-nat.c (child_xfer_memory): Ditto.
	* mac-nat.c (child_xfer_memory): Ditto.
	* infttrace.c (child_xfer_memory): Ditto.
	* procfs.c (procfs_xfer_memory): Ditto.
	* lin-thread.c (thread_db_xfer_memory): Ditto.
	* gnu-nat.c (gnu_xfer_memory): Ditto.

2001-03-14  Andrew Cagney  <ac131313@redhat.com>

	* NEWS: Mention that Harris/CXUX m88k is obsolete.

2001-03-13  Andrew Cagney  <ac131313@redhat.com>

	* config/mips/tm-mips.h: Include "regcache.h" for macros refering
	to regcache functions.
	* config/m68k/tm-m68k.h: Ditto.
	* config/i386/tm-i386v.h: Ditto.
	* config/mcore/tm-mcore.h: Ditto.
	* config/m88k/tm-m88k.h: Ditto.
	* config/m68k/tm-news.h: Ditto.
	* config/m68k/tm-linux.h: Ditto.
	* config/m68k/tm-delta68.h: Ditto.
	* config/m68k/nm-sun3.h: Ditto.
	* config/m32r/tm-m32r.h: Ditto.
	* config/i386/tm-symmetry.h: Ditto.
	* config/i386/tm-sun386.h: Ditto.
	* config/i386/tm-i386.h: Ditto.
	* config/i386/nm-symmetry.h: Ditto.
	* config/i386/nm-sun386.h: Ditto.
	* config/i386/nm-ptx4.h: Ditto.
	* config/i386/nm-i386mach.h: Ditto.
	* config/h8500/tm-h8500.h: Ditto.
	* config/h8300/tm-h8300.h: Ditto.
	* config/fr30/tm-fr30.h: Ditto.
	* config/d30v/tm-d30v.h: Ditto.
	* config/arm/tm-arm.h: Ditto.
	* config/arc/tm-arc.h: Ditto.
	* config/alpha/tm-alpha.h: Ditto.
	* config/a29k/tm-vx29k.h: Ditto.
	* config/a29k/tm-a29k.h: Ditto.
	* config/w65/tm-w65.h: Ditto.
	* config/vax/tm-vax.h: Ditto.
	* config/v850/tm-v850.h: Ditto.
	* config/tic80/tm-tic80.h: Ditto.
	* config/sparc/tm-sparclite.h: Ditto.
	* config/sparc/tm-sparclet.h: Ditto.
	* config/sparc/tm-sparc.h: Ditto.
	* config/sparc/nm-sun4sol2.h: Ditto.
	* config/sparc/nm-sun4os4.h: Ditto.
	* config/sparc/nm-nbsd.h: Ditto.
	* config/powerpc/nm-solaris.h: Ditto.
	* config/pa/tm-hppao.h: Ditto.
	* config/pa/tm-hppa.h: Ditto.
	* config/pa/nm-hppab.h: Ditto.
	* config/ns32k/tm-umax.h: Ditto.
	* config/ns32k/tm-merlin.h: Ditto.
	* config/nm-m3.h: Ditto.
	* config/nm-gnu.h: Ditto.

2001-03-14  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Update list of targets. Mark arm-* and v850-elf as
	broken.  Mark sh-*, ia64-linux and ns32k-netbsd as buildable.
	Specify an m88k target.  Include sample GAWK script to generate
	target list.  Delete non-existant romp target.
	* TODO (GDB 5.1 - Cleanups): Update.

2001-03-14  Keith Seitz  <keiths@cygnus.com>

	* linespec.c (decode_line_1): Skip argptr over a leading
	double quote. Prevents alloc of 0 bytes and memcpy of -1 bytes.

2001-03-14  Kevin Buettner  <kevinb@redhat.com>

	* config/djgpp/fnchange.lst (ia64-aix-nat.c): Add entry.

2001-03-13  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.h: Remove #if __STDC__, assume an ISO-C compiler.
	* m3-nat.c: Ditto.
	* p-lang.h: Ditto.
	* printcmd.c (printf_command): Ditto.
	* ch-exp.c (match_integer_literal): Ditto.
	* scm-tags.h: Ditto.
	* ser-go32.c: Ditto.
	* hppa-tdep.c (unwind_command): Ditto.
	* defs.h (volatile): Delete macro definition.  Assume __STDC__.
	* remote-adapt.c (volatile): Ditto.
	* remote-eb.c (volatile): Ditto.
	* remote-mm.c (volatile): Ditto.
	* defs.h (alloca): Assume __STDC__, declare returning void *.

2001-03-08  Andrew Cagney  <ac131313@redhat.com>

	* inferior.h (ARCH_NUM_REGS): Delete definition.
	* stack.c (frame_info): Use NUM_REGS, not ARCH_NUM_REGS.
	* regcache.c (registers_changed): Ditto.
	(registers_fetched): Ditto.
	* infptrace.c (fetch_inferior_registers): Ditto.
	(store_inferior_registers): Ditto.
	* infcmd.c (do_registers_info): Ditto.
	(registers_info): Ditto.
	* i386-linux-nat.c (old_fetch_inferior_registers): Ditto.
	(old_store_inferior_registers): Ditto.
	* gdbserver/low-linux.c (register_addr): Ditto.
	* gdbserver/low-hppabsd.c (register_addr): Ditto.
	* core-aout.c: Don't include "inferior.h".
	(fetch_core_registers): Use NUM_REGS not ARCH_NUM_REGS.
	(register_addr): Ditto.

2001-03-13  Fernando Nasser  <fnasser@redhat.com>

	From Steven Johnson <sjohnson@neurizon.net>
	* cli/cli-script.c (define_command): Fix setting of post hooks.

2001-03-13  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-tdep.c: Fix formatting and clarify comments.
	(i386_linux_svr4_fetch_link_map_offsets): Use NULL instead of 0
	where appropriate.

2001-03-12  Andrew Cagney  <ac131313@redhat.com>

	* gnu-nat.c: Include "gdb_assert.h" instead of <assert.h>.
	(proc_update_sc): Use gdb_assert instead of assert.
	(proc_abort): Ditto.
	(inf_set_step_thread): Ditto.
	(gnu_wait): Ditto.
	(S_exception_raise_request): Ditto.
	(gnu_terminal_init_inferior): Ditto.

2001-03-09  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (solib-svr4.o): Depend on solib-svr4.c, not solib.c.
	(solib-legacy.o): New makefile target.
	* solib-legacy.c: New file.
	* solib-svr4.h (SVR4_FETCH_LINK_MAP_OFFSETS): Delete.
	(default_svr4_fetch_link_map_offsets): Delete.
	(set_solib_svr4_fetch_link_map_offsets): Declare.
	(legacy_svr4_fetch_link_map_offsets_hook): Declare.
	* solib-svr4.c (elf/common.h): Include.
	(link.h): Only include for SunOS shared library support.
	(_SYSCALL32): Don't define.
	(SVR4_FETCH_LINK_MAP_OFFSETS): Define.
	(default_svr4_fetch_link_map_offsets): Made static; added forward
	declaration.
	(fetch_link_map_offsets): New static global.
	(legacy_svr4_fetch_link_map_offsets_hook): New global variable.
	(default_svr4_fetch_link_map_offsets):  Rewritten.  The guts
	of what used to be in this function now reside in
	legacy_svr4_fetch_link_map_offsets() in solib-legacy.c.
	(open_symbol_file_object): Fix declaration in SunOS section
	of the code.
	(set_solib_svr4_fetch_link_map_offsets): New extern function.
	(init_fetch_link_map_offsets): New static function.
	(_initialize_svr4_solib): Put static global fetch_link_map_offsets
	under multiarch control.

	* config/alpha/alpha-linux.mt (TDEPFILES): Add solib-legacy.o to
	list.
	* config/alpha/fbsd.mh (NATDEPFILES): Likewise.
	* config/arm/linux.mt (TDEPFILES): Likewise.
	* config/i386/fbsd.mh (NATDEPFILES): Likewise.
	* config/i386/i386dgux.mh (NATDEPFILES): Likewise.
	* config/i386/i386gnu.mh (NATDEPFILES): Likewise.
	* config/i386/i386sco5.mh (NATDEPFILES): Likewise.
	* config/i386/i386sol2.mt (TDEPFILES): Likewise.
	* config/i386/i386v4.mh (NATDEPFILES): Likewise.
	* config/i386/i386v42mp.mh (NATDEPFILES): Likewise.
	* config/i386/linux.mt (TDEPFILES): Likewise.
	* config/i386/nbsd.mh (NATDEPFILES): Likewise.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/i386/ncr3000.mt (TDEPFILES): Likewise.
	* config/i386/ptx4.mh (XDEPFILES): Likewise.
	* config/i386/sun386.mt (TDEPFILES): Likewise.
	* config/ia64/linux.mt (TDEPFILES): Likewise.
	* config/m68k/linux.mt (TDEPFILES): Likewise.
	* config/m68k/m68kv4.mh (NATDEPFILES): Likewise.
	* config/m68k/nbsd.mh (NATDEPFILES): Likewise.
	* config/m68k/sun2os4.mt (TDEPFILES): Likewise.
	* config/m68k/sun3os4.mt (TDEPFILES): Likewise.
	* config/m88k/delta88v4.mh (NATDEPFILES): Likewise.
	* config/mips/mipsv4.mh (NATDEPFILES): Likewise.
	* config/ns32k/nbsd.mh (NATDEPFILES): Likewise.
	* config/powerpc/linux.mt (TDEPFILES): Likewise.
	* config/powerpc/nbsd.mh (NATDEPFILES): Likewise.
	* config/powerpc/solaris.mh (NATDEPFILES): Likewise.
	* config/sh/linux.mt (TDEPFILES): Likewise.
	* config/sparc/linux.mt (TDEPFILES): Likewise.
	* config/sparc/nbsd.mh (NATDEPFILES): Likewise.
	* config/sparc/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/sparc/sp64linux.mt (TDEPFILES): Likewise.
	* config/sparc/sun4os4.mt (TDEPFILES): Likewise.
	* config/sparc/sun4sol2.mh (NATDEPFILES): Likewise.

2001-03-09  Kevin Buettner  <kevinb@redhat.com>

	* utils.c (xmrealloc, xcalloc): Return NULL for zero-sized requests.

2001-03-09  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (Write After Approval): Update Philip Blundell.

2001-03-09  Keith Seitz  <keiths@cygnus.com>

	* MAINTAINERS: Add myself to write after approval list.

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

	* i387-tdep.c (print_i387_status_word): Fix printing of Stack
	fault flag.  It is bit 6 of the x87 FPU status word, not bit 7.

2001-03-08  Andrew Cagney  <ac131313@redhat.com>

	* configure.host (m88*-harris-cxux*): Mark as obsolete.
	* configure.tgt: Ditto.
	* config/m88k/xm-cxux.h: Ditto.
	* config/m88k/tm-cxux.h: Ditto.
	* config/m88k/nm-cxux.h: Ditto.
	* config/m88k/cxux.mt: Ditto.
	* config/m88k/cxux.mh: Ditto.

2001-03-08  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in: Delete rules for obsolete files.

Thu Mar  8 15:43:40 2001  David Taylor  <taylor@redhat.com>

	* stack.c (parse_frame_specification): For one argument case,
 	handle the situation where the argument is an integer, not an
 	address -- arguably the most common case.  This matters on
	targets where pointers and addresses are different.

2001-03-08  Andrew Cagney  <ac131313@redhat.com>

	* TODO: Revise 5.1 list.  Delete PARAMS task.  Add coding standard
	review.  Clarify GNU/LINUX/sparc.  Move other tasks to 5.2 or
	general.

2001-03-07  Andrew Cagney  <ac131313@redhat.com>

	* TODO (GDB 5.1 Known Problems): Document problem of building GDB
	with SID on Solaris 8.

2001-03-07  Mark Kettenis  <kettenis@gnu.org>

	* defs.h: Provide prototypes for floatformat_is_negative,
	floatformat_is_nan and floatformat_mantissa.
	* utils.c: Include "gdb_assert.h".
	(floatformat_is_negative): New function.
	(floatformat_is_nan): New function.
	(floatformat_mantissa): New function.
	* valprint.c: Include "floatformat.h".
	(print_floating): Get rid of the Linux-specific
	TARGET_ANALYZE_FLOATING macro and rewrite NaN detection with the
	help these new functions.  Print NaN's in a format conforming to
	ISO C99.

2001-03-07  Eli Zaretskii  <eliz@is.elta.co.il>

	* top.c (init_main): Make `set history file name' complete on file
	names.

2001-03-06  J.T. Conklin  <jtc@redback.com>

	* Makefile.in (LINTFLAGS): Update to contain all of the macros
	which define include paths used when compiling.

	* util.c (savestring, msavestring): Change type of length argument.
	* defs.h (savestring, msavestring): Update to match.

	* symtab.h (decode_line_1): Removed declaration.

	* symfile.c (#include <assert.h>): Removed.

	* arch-utils.c (#include <ctype.h>): Removed.
	* c-typeprint.c: Likewise.
	* dbxread.c: Likewise.
	* gdbtypes.c: Likewise.
	* target.c: Likewise.
	* os9kread.c: Likewise.

	* c-valprint.c (#include "demangle.h"): Removed.
	* ch-typeprint.c: Likewise.
	* eval.c: Likewise.
	* f-typeprint.c: Likewise.
	* f-valprint.c: Likewise.
	* m2-typeprint.c: Likewise.
	* typeprint.c: Likewise.
	* p-typeprint.c: Likewise.
	* valarith.c: Likewise.
	* valprint.c: Likewise.

	* m2-typeprint.c (#include "gdb_string.h"): Removed.
	* nlmread.c: Likewise.

	* mdebugread.c (#include "gdb-stabs.h"): Removed.
	* minsyms.c: Likewise.
	* mipsread.c: Likewise.
	* nlmread.c: Likewise.

	* m2-typeprint.c (#include "obstack.h"): Removed.
	* m2-valprint.c: Likewise.

	* event-loop.c (#include <setjmp.h>): Removed.

2001-03-06  Stan Shebs  <shebs@apple.com>

	* MAINTAINERS: Remove self from specific maintenance domains
	(macos, gdbserver, documentation, testsuite).

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

	* 29k-share/udi/udip2soc.c, Makefile.in, a29k-tdep.c,
	a68v-nat.c, abug-rom.c, aclocal.m4, alpha-nat.c, alpha-tdep.c,
	annotate.c, annotate.h, arc-tdep.c, arch-utils.c,
	arch-utils.h, arm-tdep.c, ax-gdb.c, ax-gdb.h, ax-general.c,
	ax.h, bcache.c, bcache.h, blockframe.c, breakpoint.c,
	breakpoint.h, buildsym.c, buildsym.h, c-exp.y, c-lang.c,
	c-lang.h, c-typeprint.c, c-valprint.c, call-cmds.h, ch-exp.c,
	ch-lang.c, ch-lang.h, ch-typeprint.c, ch-valprint.c,
	cli/cli-cmds.h, cli/cli-decode.c, cli/cli-decode.h,
	cli/cli-script.c, cli/cli-script.h, cli/cli-setshow.h,
	cli/cli-utils.h, cli-out.c, cli-out.h, coff-solib.c,
	coff-solib.h, coffread.c, command.h, complaints.c,
	complaints.h, completer.c, completer.h,
	config/a29k/nm-ultra3.h, config/a29k/tm-a29k.h,
	config/a29k/tm-ultra3.h, config/a29k/tm-vx29k.h,
	config/a29k/xm-ultra3.h, config/alpha/nm-fbsd.h,
	config/alpha/nm-linux.h, config/alpha/nm-osf.h,
	config/alpha/nm-osf2.h, config/alpha/nm-osf3.h,
	config/alpha/tm-alpha.h, config/alpha/tm-alphalinux.h,
	config/alpha/xm-alphalinux.h, config/alpha/xm-alphaosf.h,
	config/alpha/xm-fbsd.h, config/arc/tm-arc.h,
	config/arm/nm-linux.h, config/arm/tm-arm.h,
	config/arm/tm-embed.h, config/d10v/tm-d10v.h,
	config/d30v/tm-d30v.h, config/fr30/tm-fr30.h,
	config/h8300/tm-h8300.h, config/h8500/tm-h8500.h,
	config/i386/nm-fbsd.h, config/i386/nm-gnu.h,
	config/i386/nm-i386bsd.h, config/i386/nm-i386mach.h,
	config/i386/nm-i386sco.h, config/i386/nm-i386sol2.h,
	config/i386/nm-i386v.h, config/i386/nm-i386v4.h,
	config/i386/nm-i386v42mp.h, config/i386/nm-linux.h,
	config/i386/nm-nbsd.h, config/i386/nm-nbsdelf.h,
	config/i386/nm-ptx4.h, config/i386/nm-sun386.h,
	config/i386/nm-symmetry.h, config/i386/tm-cygwin.h,
	config/i386/tm-fbsd.h, config/i386/tm-i386.h,
	config/i386/tm-i386aix.h, config/i386/tm-i386bsd.h,
	config/i386/tm-i386gnu.h, config/i386/tm-i386lynx.h,
	config/i386/tm-i386m3.h, config/i386/tm-i386mk.h,
	config/i386/tm-i386nw.h, config/i386/tm-i386os9k.h,
	config/i386/tm-i386sco5.h, config/i386/tm-i386sol2.h,
	config/i386/tm-i386v.h, config/i386/tm-i386v4.h,
	config/i386/tm-i386v42mp.h, config/i386/tm-linux.h,
	config/i386/tm-nbsd.h, config/i386/tm-ptx.h,
	config/i386/tm-ptx4.h, config/i386/tm-sun386.h,
	config/i386/tm-symmetry.h, config/i386/tm-vxworks.h,
	config/i386/xm-fbsd.h, config/i386/xm-i386bsd.h,
	config/i386/xm-i386gnu.h, config/i386/xm-i386m3.h,
	config/i386/xm-i386mach.h, config/i386/xm-i386mk.h,
	config/i386/xm-i386sco.h, config/i386/xm-i386v4.h,
	config/i386/xm-linux.h, config/i386/xm-nbsd.h,
	config/i386/xm-ptx.h, config/i386/xm-ptx4.h,
	config/i386/xm-sun386.h, config/i386/xm-symmetry.h,
	config/i960/tm-i960.h, config/i960/tm-mon960.h,
	config/i960/tm-nindy960.h, config/i960/tm-vx960.h,
	config/ia64/nm-aix.h, config/ia64/nm-linux.h,
	config/ia64/tm-aix.h, config/ia64/tm-ia64.h,
	config/ia64/tm-linux.h, config/ia64/xm-aix.h,
	config/ia64/xm-linux.h, config/m68k/nm-apollo68b.h,
	config/m68k/nm-delta68.h, config/m68k/nm-dpx2.h,
	config/m68k/nm-hp300bsd.h, config/m68k/nm-hp300hpux.h,
	config/m68k/nm-linux.h, config/m68k/nm-sun3.h,
	config/m68k/tm-apollo68b.h, config/m68k/tm-cisco.h,
	config/m68k/tm-dpx2.h, config/m68k/tm-es1800.h,
	config/m68k/tm-hp300bsd.h, config/m68k/tm-hp300hpux.h,
	config/m68k/tm-isi.h, config/m68k/tm-linux.h,
	config/m68k/tm-m68k.h, config/m68k/tm-m68kv4.h,
	config/m68k/tm-mac.h, config/m68k/tm-monitor.h,
	config/m68k/tm-nbsd.h, config/m68k/tm-news.h,
	config/m68k/tm-os68k.h, config/m68k/tm-sun3.h,
	config/m68k/tm-vx68.h, config/m68k/xm-3b1.h,
	config/m68k/xm-apollo68b.h, config/m68k/xm-dpx2.h,
	config/m68k/xm-hp300bsd.h, config/m68k/xm-hp300hpux.h,
	config/m68k/xm-linux.h, config/m68k/xm-m68kv4.h,
	config/m68k/xm-mpw.h, config/m68k/xm-news.h,
	config/m68k/xm-sun2.h, config/m68k/xm-sun3.h,
	config/m68k/xm-sun3os4.h, config/m88k/nm-delta88v4.h,
	config/m88k/tm-delta88.h, config/m88k/tm-delta88v4.h,
	config/m88k/tm-m88k.h, config/m88k/xm-cxux.h,
	config/m88k/xm-delta88.h, config/m88k/xm-delta88v4.h,
	config/m88k/xm-dgux.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/nm-news-mips.h, config/mips/tm-bigmips.h,
	config/mips/tm-embed.h, config/mips/tm-embed64.h,
	config/mips/tm-embedl.h, config/mips/tm-embedl64.h,
	config/mips/tm-irix3.h, config/mips/tm-irix5.h,
	config/mips/tm-mips.h, config/mips/tm-mips64.h,
	config/mips/tm-mipsm3.h, config/mips/tm-mipsv4.h,
	config/mips/tm-tx39.h, config/mips/tm-tx39l.h,
	config/mips/tm-vr4100.h, config/mips/tm-vr4300.h,
	config/mips/tm-vr4300el.h, config/mips/tm-vr4xxx.h,
	config/mips/tm-vr4xxxel.h, config/mips/tm-vr5000.h,
	config/mips/tm-vr5000el.h, config/mips/xm-irix3.h,
	config/mips/xm-irix4.h, config/mips/xm-irix5.h,
	config/mips/xm-mips.h, config/mips/xm-mipsm3.h,
	config/mips/xm-mipsv4.h, config/mips/xm-news-mips.h,
	config/mips/xm-riscos.h, config/mn10200/tm-mn10200.h,
	config/mn10300/tm-mn10300.h, config/nm-gnu.h,
	config/nm-linux.h, config/nm-lynx.h, config/nm-m3.h,
	config/nm-sysv4.h, config/none/nm-none.h,
	config/none/tm-none.h, config/none/xm-none.h,
	config/ns32k/nm-nbsd.h, config/ns32k/nm-umax.h,
	config/ns32k/tm-merlin.h, config/ns32k/tm-nbsd.h,
	config/ns32k/tm-ns32km3.h, config/ns32k/tm-umax.h,
	config/ns32k/xm-merlin.h, config/ns32k/xm-ns32km3.h,
	config/pa/nm-hppab.h, config/pa/nm-hppah.h,
	config/pa/nm-hppao.h, config/pa/tm-hppa.h,
	config/pa/tm-hppa64.h, config/pa/tm-hppah.h,
	config/pa/xm-hppab.h, config/pa/xm-hppah.h,
	config/powerpc/nm-aix.h, config/powerpc/nm-linux.h,
	config/powerpc/nm-macos.h, config/powerpc/nm-nbsd.h,
	config/powerpc/tm-cygwin.h, config/powerpc/tm-linux.h,
	config/powerpc/tm-macos.h, config/powerpc/tm-ppc-aix.h,
	config/powerpc/tm-ppc-eabi.h, config/powerpc/tm-ppc-nw.h,
	config/powerpc/tm-ppcle-eabi.h, config/powerpc/tm-solaris.h,
	config/powerpc/xm-aix.h, config/powerpc/xm-linux.h,
	config/powerpc/xm-mpw.h, config/rs6000/nm-rs6000.h,
	config/rs6000/tm-rs6000.h, config/rs6000/tm-rs6000ly.h,
	config/rs6000/xm-aix4.h, config/rs6000/xm-rs6000.h,
	config/sh/tm-linux.h, config/sh/tm-sh.h, config/sh/tm-wince.h,
	config/sparc/nm-linux.h, config/sparc/nm-nbsd.h,
	config/sparc/nm-nbsdelf.h, config/sparc/nm-sparclynx.h,
	config/sparc/nm-sun4os4.h, config/sparc/nm-sun4sol2.h,
	config/sparc/tm-linux.h, config/sparc/tm-sp64.h,
	config/sparc/tm-sp64sim.h, config/sparc/tm-sparc.h,
	config/sparc/tm-sparclet.h, config/sparc/tm-sparclite.h,
	config/sparc/tm-sparclynx.h, config/sparc/tm-spc-em.h,
	config/sparc/tm-sun4os4.h, config/sparc/tm-sun4sol2.h,
	config/sparc/xm-sun4os4.h, config/sparc/xm-sun4sol2.h,
	config/tic80/tm-tic80.h, config/tm-linux.h, config/tm-lynx.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/xm-lynx.h,
	config/xm-mpw.h, config/xm-nbsd.h, config/xm-sysv4.h,
	config/z8k/tm-z8k.h, configure.in, 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, dcache.h, defs.h,
	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, environ.h, eval.c, event-loop.c,
	event-loop.h, event-top.c, exec.c, expprint.c, f-exp.y,
	f-lang.c, f-lang.h, f-typeprint.c, f-valprint.c, findvar.c,
	fork-child.c, fr30-tdep.c, frame.c, frame.h, gdb-events.c,
	gdb-events.h, gdb-events.sh, gdb-stabs.h, gdb.1, gdb_string.h,
	gdb_thread_db.h, gdbcmd.h, gdbcore.h, gdbserver/Makefile.in,
	gdbserver/gdbreplay.c, gdbserver/gdbserver.1,
	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/server.c, gdbserver/server.h, gdbserver/utils.c,
	gdbthread.h, gdbtypes.c, gdbtypes.h, gnu-nat.c, gnu-nat.h,
	gnu-regex.c, gnu-regex.h, 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,
	hpread.h, hpux-thread.c, i386-tdep.c, i386aix-nat.c,
	i386b-nat.c, i386gnu-nat.c, i386ly-tdep.c, i386m3-nat.c,
	i386mach-nat.c, i386nbsd-nat.c, i386nbsd-tdep.c, i386v-nat.c,
	i386v4-nat.c, i387-tdep.c, i960-tdep.c, infcmd.c, inferior.h,
	inflow.c, infptrace.c, infrun.c, inftarg.c, infttrace.c,
	irix4-nat.c, irix5-nat.c, isi-xdep.c, jv-exp.y, jv-lang.c,
	jv-lang.h, jv-typeprint.c, jv-valprint.c, kdb-start.c,
	kod-cisco.c, kod.c, language.c, language.h, lin-thread.c,
	linespec.c, linespec.h, linux-thread.c, lynx-nat.c, m2-exp.y,
	m2-lang.c, m2-lang.h, m2-typeprint.c, m2-valprint.c, m3-nat.c,
	m32r-rom.c, m32r-tdep.c, m68k-tdep.c, m68klinux-nat.c,
	m68knbsd-nat.c, m88k-nat.c, m88k-tdep.c, mac-nat.c,
	mac-xdep.c, main.c, maint.c, mcore-rom.c, mcore-tdep.c,
	mdebugread.c, mem-break.c, minimon.h, 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,
	monitor.h, news-xdep.c, nindy-share/env.h, nindy-tdep.c,
	nlm/Makefile.in, nlmread.c, ns32k-tdep.c, ns32km3-nat.c,
	ns32knbsd-nat.c, objfiles.c, objfiles.h, ocd.c, ocd.h,
	op50-rom.c, os9kread.c, osfsolib.c, p-exp.y, pa64solib.c,
	pa64solib.h, parse.c, parser-defs.h, partial-stab.h,
	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-utils.h, proc-why.c, procfs.c, ptx4-nat.c,
	rdi-share/Makefile.in, rdi-share/aclocal.m4, regcache.c,
	regcache.h, 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-utils.h, remote-vx.c, remote.c,
	remote.h, reply_mig_hack.awk, rom68k-rom.c, rs6000-nat.c,
	rs6000-tdep.c, scm-exp.c, scm-lang.c, scm-lang.h, scm-tags.h,
	scm-valprint.c, ser-e7kpc.c, ser-mac.c, ser-ocd.c, ser-pipe.c,
	ser-tcp.c, ser-unix.c, serial.c, serial.h, sh-tdep.c,
	sh3-rom.c, sol-thread.c, solib-aix5.c, solib-svr4.c, solib.c,
	solib.h, solist.h, somread.c, somsolib.c, somsolib.h,
	source.c, sparc-nat.c, sparc-tdep.c, sparcl-tdep.c,
	sparclet-rom.c, srec.h, stabsread.c, stabsread.h, stack.c,
	standalone.c, stop-gdb.c, stuff.c, sun3-nat.c, sun386-nat.c,
	symfile.c, symfile.h, symm-nat.c, symm-tdep.c, symmisc.c,
	symtab.c, symtab.h, target.c, target.h, terminal.h, thread.c,
	tic80-tdep.c, top.c, top.h, tracepoint.c, tracepoint.h,
	typeprint.c, ui-file.c, ui-file.h, ui-out.h, ultra3-nat.c,
	ultra3-xdep.c, umax-xdep.c, utils.c, v850-tdep.c, v850ice.c,
	valarith.c, valops.c, valprint.c, value.h, values.c, varobj.h,
	vax-tdep.c, version.h, vx-share/vxWorks.h, vx-share/xdr_ld.c,
	vx-share/xdr_ptrace.c, vx-share/xdr_ptrace.h,
	vx-share/xdr_rdb.c, w65-tdep.c, w89k-rom.c, win32-nat.c,
	wrapper.c, wrapper.h, xcoffread.c, xcoffsolib.c, xcoffsolib.h,
	xmodem.c, xmodem.h, z8k-tdep.c: Update/correct copyright
	notices.

2001-03-05  Kevin Buettner  <kevinb@redhat.com>

	* acconfig.h (HAVE_PRSYSENT_T, HAVE_PR_SIGSET_T,
	HAVE_PR_SIGACTION64_T, HAVE_PR_SIGINFO64_T): New configure
	macros.
	* configure.in (prsysent_t, pr_sigset_t, pr_sigaction64_t,
	pr_siginfo64_t): Test for these typedefs in <sys/procfs.h>.
	(sys/fault.h, sys/select.h): Test for presence of these
	header files.
	(ia64-*-aix*): Define NEW_PROC_API for this host.
	* configure: Regenerate.
	* config.in: Regenerate.

	* configure.host (ia64-*-aix*): New host.
	* configure.tgt (ia64-*-aix*): New target.

2001-03-05  Andrew Cagney  <ac131313@redhat.com>

	* TODO (GDB 5.1 Known Problems): Document z8k as broken.

Mon Mar  5 11:56:09 2001  Christopher Faylor <cgf@cygnus.com>

	* wince.c: Change realloc to xrealloc throughout.
	(handle_load_dll): Use void * rather than PTR in argument.

2001-03-04  Andrew Cagney  <ac131313@redhat.com>

	* ocd.h (ocd_xfer_memory): Add ``attrib'' parameter.
	* ocd.c (ocd_xfer_memory): Ditto.
	* ser-ocd.c (ocd_setstopbits): New function. Add to ocd_ops.
	* MAINTAINERS: Document powerpc-eabi and powerpcle-eabi as
	buildable with ,-Werror.

	* Makefile.in (symfile_h): Define.
	(mcore-tdep.o): Add $(symfile_h), $(gdbcore_h) and $(inferior_h).
	* mcore-tdep.c: Include "symfile.h", "gdbcore.h" and "inferior.h".
	* MAINTAINERS: Document mcore-elf and mcore-pe as buildable with
	,-Werror.

	* dsrec.c (make_srec): Fix internal_error fmt arg.
	* MAINTAINERS: Document i960-coff as buildable with ,-Werror.

2001-03-03  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (aix5_relocate_main_executable): Don't use ANOFFSET
	as an lvalue.

2001-03-02  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (paper trail): Update.

	* CONTRIBUTE: Update note on ``Fix PR gdb/4706'' convention.

2001-03-02  Andrew Cagney  <ac131313@redhat.com>

	From 2001-03-01 Tom Rix <trix@redhat.com>:
	* mn10200-tdep.c (mn10200_frame_chain): Pass 0 for ``pc''
	parameter to mn10200_analyze_prologue.

	* config/mn10200/tm-mn10200.h: Include "regcache.h".
	* MAINTAINERS: Document that mn10200-elf target is buildable.

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

	* config/ia64/xm-aix.h (GDB_GREGSET_T, GDB_FPREGSET_T): Move defines
	from here...
	* config/ia64/nm-aix.h (GDB_GREGSET_T, GDB_FPREGSET_T): ...to here.
	(MONTEREY): Don't define.
	(AIX5): Define.

2001-03-02  Matt Hiller  <hiller@redhat.com>

	* config/mn10300/tm-mn10300.h (E0_REGNUM): Correct to 15.

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

	* sparc-nat.c (sparc-nat.c): Don't include self.

2001-03-01  J.T. Conklin  <jtc@redback.com>

	* defs.h (__CYGWIN__): Moved conditional which defines __CYGWIN__
 	if __CYGWIN32__ is set from here.
	* config/i386/xm-cygwin.h: To here.
	* config/powerpc/xm-cygwin.h: To here.

	* i386-stub.c (handle_exception): Use 'T' response packet.

2001-03-01  Michael Snyder  <msnyder@mvstp600e.cygnus.com>

	* m32r-tdep.c: Fix cut and paste error in comment.

2001-02-28  Michael Snyder  <msnyder@mvstp600e.cygnus.com>

	* symtab.c (print_msymbol_info): Print addresses by portable method
	longest_local_hex_string_custom.  Allow for 64-bit addresses.

2001-03-01  J.T. Conklin  <jtc@redback.com>

	* gdbtypes.h (builtin_type_f_integer): Removed duplicate declaration.
	(MAX_OF_TYPE): Wrap macro definition in parenthesis.
	(MIN_OF_TYPE): Likewise.
	
	* memattr.h (mem_access_mode): Removed extraneous trailing comma.

2001-03-01  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (os9kread.o): Do not compile with WERROR_CFLAGS.
	* os9kread.c (os9k_process_one_symbol): Add assert to detect
	``loses if sizeof (char *) > sizeof (int)''.

2001-03-01  Andrew Cagney  <ac131313@redhat.com>

	* gdb_assert.h: Document pragmatics behind gdb_assert's case.

2001-03-01  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (gdbtk-cmds.o): Add $(regcache_h) to dependency
	lists.
	(mi-main.o): Ditto.

2001-03-01  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (regcache_h): Define. Add $(regcache_h) to
	dependency lists.

2001-02-28  Michael Snyder  <msnyder@mvstp600e.cygnus.com>

	* printcmd.c (print_address_numeric): Update comments to refer
	to sizeof addr, not sizeof pointer.
	(x_command): Remove needless whitespace (shorten long line).
	
	* breakpoint.c (print_one_breakpoint): Formatting clean-up.
	(read_memory_nobpt): Ditto.
	(ep_is_catchpoint): Ditto.
	(ep_is_shlib_catchpoint): Ditto.
	(ep_is_exception_catchpoint): Ditto.
	(describe_other_breakpoints): Ditto.

Wed Feb 28 20:37:36 2001  Andrew Cagney  <ac131313@redhat.com>

	* regcache.h (register_valid): Fix comment documenting valid
	states.

Tue Feb 27 23:56:23 2001  Andrew Cagney  <ac131313@redhat.com>

	From Steven Johnson:
	* regcache.h: New file.
	
	* value.h (read_register_bytes, read_register_gen)
	(write_register_gen, write_register_bytes)
	(read_register, read_register_pid)
	(read_signed_register, read_signed_register_pid)
	(write_register, write_register_pid)
	(register_cached, set_register_cached)
	(register_changed, register_buffer)
	(registers_changed, supply_register): Move declaration from here.
	* regcache.h: To here.
	* gdbcore.h (registers_fetched): Ditto.
	* inferior.h (registers, registers_valid): Ditto.

	* regcache.c (generic_target_read_pc, read_pc_pid, read_pc,
	generic_target_write_pc, write_pc_pid, write_pc,
	generic_target_read_sp, read_sp, generic_target_write_sp,
	write_sp, generic_target_read_fp, read_fp,
	generic_target_write_fp, write_fp): Add note that these functions
	will be moved from this file.
	
	* a29k-tdep.c: Include "regcache.h".
	* a68v-nat.c: Ditto.
	* abug-rom.c: Ditto.
	* alpha-nat.c: Ditto.
	* alpha-tdep.c: Ditto.
	* alphabsd-nat.c: Ditto.
	* arc-tdep.c: Ditto.
	* arm-linux-nat.c: Ditto.
	* arm-linux-tdep.c: Ditto.
	* arm-tdep.c: Ditto.
	* blockframe.c: Ditto.
	* core-aout.c: Ditto.
	* core-sol2.c: Ditto.
	* corelow.c: Ditto.
	* cpu32bug-rom.c: Ditto.
	* cxux-nat.c: Ditto.
	* d10v-tdep.c: Ditto.
	* d30v-tdep.c: Ditto.
	* dbug-rom.c: Ditto.
	* dink32-rom.c: Ditto.
	* dve3900-rom.c: Ditto.
	* findvar.c: Ditto.
	* fr30-tdep.c: Ditto.
	* frame.c: Ditto.
	* go32-nat.c: Ditto.
	* h8300-tdep.c: Ditto.
	* h8500-tdep.c: Ditto.
	* hp300ux-nat.c: Ditto.
	* hppa-tdep.c: Ditto.
	* hppab-nat.c: Ditto.
	* hppah-nat.c: Ditto.
	* hppam3-nat.c: Ditto.
	* hpux-thread.c: Ditto.
	* i386-linux-nat.c: Ditto.
	* i386-linux-tdep.c: Ditto.
	* i386-tdep.c: Ditto.
	* i386aix-nat.c: Ditto.
	* i386b-nat.c: Ditto.
	* i386bsd-nat.c: Ditto.
	* i386gnu-nat.c: Ditto.
	* i386ly-tdep.c: Ditto.
	* i386m3-nat.c: Ditto.
	* i386mach-nat.c: Ditto.
	* i386nbsd-nat.c: Ditto.
	* i386v4-nat.c: Ditto.
	* i387-nat.c: Ditto.
	* i387-tdep.c: Ditto.
	* i960-tdep.c: Ditto.
	* ia64-aix-nat.c: Ditto.
	* ia64-linux-nat.c: Ditto.
	* ia64-tdep.c: Ditto.
	* infptrace.c: Ditto.
	* infrun.c: Ditto.
	* irix4-nat.c: Ditto.
	* irix5-nat.c: Ditto.
	* lin-lwp.c: Ditto.
	* lin-thread.c: Ditto.
	* lynx-nat.c: Ditto.
	* m3-nat.c: Ditto.
	* m32r-rom.c: Ditto.
	* m32r-tdep.c: Ditto.
	* m68hc11-tdep.c: Ditto.
	* m68k-tdep.c: Ditto.
	* m68klinux-nat.c: Ditto.
	* m68knbsd-nat.c: Ditto.
	* m68knbsd-tdep.c: Ditto.
	* m88k-nat.c: Ditto.
	* m88k-tdep.c: Ditto.
	* mac-nat.c: Ditto.
	* mcore-rom.c: Ditto.
	* mcore-tdep.c: Ditto.
	* mi/mi-main.c: Ditto.
	* mips-nat.c: Ditto.
	* mips-tdep.c: Ditto.
	* mipsm3-nat.c: Ditto.
	* mipsv4-nat.c: Ditto.
	* mn10200-tdep.c: Ditto.
	* mn10300-tdep.c: Ditto.
	* monitor.c: Ditto.
	* ns32km3-nat.c: Ditto.
	* ns32knbsd-nat.c: Ditto.
	* ocd.c: Ditto.
	* pa64solib.c: Ditto.
	* ppc-bdm.c: Ditto.
	* ppc-linux-nat.c: Ditto.
	* ppc-linux-tdep.c: Ditto.
	* ppcbug-rom.c: Ditto.
	* ppcnbsd-nat.c: Ditto.
	* ptx4-nat.c: Ditto.
	* regcache.c: Ditto.
	* remote-adapt.c: Ditto.
	* remote-array.c: Ditto.
	* remote-bug.c: Ditto.
	* remote-e7000.c: Ditto.
	* remote-eb.c: Ditto.
	* remote-es.c: Ditto.
	* remote-est.c: Ditto.
	* remote-hms.c: Ditto.
	* remote-mips.c: Ditto.
	* remote-mm.c: Ditto.
	* remote-nindy.c: Ditto.
	* remote-os9k.c: Ditto.
	* remote-rdi.c: Ditto.
	* remote-rdp.c: Ditto.
	* remote-sds.c: Ditto.
	* remote-sim.c: Ditto.
	* remote-st.c: Ditto.
	* remote-udi.c: Ditto.
	* remote-utils.c: Ditto.
	* remote-vx.c: Ditto.
	* remote-vx29k.c: Ditto.
	* remote-vx68.c: Ditto.
	* remote-vx960.c: Ditto.
	* remote-vxmips.c: Ditto.
	* remote-vxsparc.c: Ditto.
	* remote.c: Ditto.
	* rom68k-rom.c: Ditto.
	* rs6000-nat.c: Ditto.
	* rs6000-tdep.c: Ditto.
	* sh-tdep.c: Ditto.
	* sh3-rom.c: Ditto.
	* sol-thread.c: Ditto.
	* solib-svr4.c: Ditto.
	* somsolib.c: Ditto.
	* sparc-nat.c: Ditto.
	* sparc-tdep.c: Ditto.
	* sparcl-tdep.c: Ditto.
	* sparclet-rom.c: Ditto.
	* sun3-nat.c: Ditto.
	* sun386-nat.c: Ditto.
	* symm-nat.c: Ditto.
	* target.c: Ditto.
	* thread-db.c: Ditto.
	* thread.c: Ditto.
	* tic80-tdep.c: Ditto.
	* tracepoint.c: Ditto.
	* ultra3-nat.c: Ditto.
	* umax-xdep.c: Ditto.
	* uw-thread.c: Ditto.
	* v850-tdep.c: Ditto.
	* v850ice.c: Ditto.
	* valops.c: Ditto.
	* w65-tdep.c: Ditto.
	* w89k-rom.c: Ditto.
	* win32-nat.c: Ditto.
	* wince.c: Ditto.
	* z8k-tdep.c: Ditto.

2001-02-28  Matt Hiller  <hiller@redhat.com>	
	
	* MAINTAINERS: Add Matt Hiller to Write After Approval list.

2001-02-27  Matt Hiller  <hiller@redhat.com>

	* mn10300-tdep.c (mn10300_stab_reg_to_regnum): New function.
	(mn10300_gdbarch_init): Set appropriate elements of gdbarch to
	mn10300_stab_reg_to_regnum.

Tue Feb 27 16:56:13 2001  David Taylor  <taylor@redhat.com>

	* symtab.c (search_symbols): Fix off by one error in test for
	error.

2001-02-23  Andrew Cagney  <ac131313@redhat.com>

	* config/sparc/sp64linux.mt: New file.
	* configure.tgt: Recognize sparc64-*-linux* as a sp64linux target.
	* configure.host: Recognize sparc64-*-linux* as a linux host.

	From 2000-03-17 Jakub Jelinek <jakub@redhat.com>:
	* config/sparc/tm-sp64linux.h: New file.
	
2001-02-24  Kevin Buettner  <kevinb@redhat.com>

	* buildsym.c (push_subfile, pop_subfile): Replace call to abort()
	with call to internal_error().
	* dbxread.c (process_one_symbol): Likewise.
	* exec.c (build_section_table, xfer_memory): Likewise.
	* h8500-tdep.c (h8500_register_size, h8500_register_virtual_type):
	Likewise.
	* hpread.c (hpread_type_translate, hpread_read_array_type)
	(hpread_type_lookup): Likewise.
	* i386-tdep.c (gdb_print_insn_i386): Likewise.
	* i960-tdep.c (mem): Likewise
	* inflow.c (set_sigio_trap, clear_sigio_trap): Likewise.
	* infptrace.c (child_resume): Likewise.
	* infttrace.c (_initialize_infttrace): Likewise.
	* language.c (binop_result_type, add_language): Likewise.
	* lynx-nat.c (store_inferior_registers): Likewise.
	* m3-nat.c (port_chain_insert, m3_trace_me): Likewise.
	* mdebugread.c (parse_partial_symbols): Likewise.
	* monitor.c (monitor_printf_noecho, monitor_printf)
	(monitor_dump_regs): Likewise.
	* ocd.c (stu_put_packet): Likewise.
	* printcmd.c (decode_format, print_scalar_formatted): Likewise.
	* remote-bug.c (bug_open): Likewise.
	* remote-e7000.c (fetch_regs_from_dump, e7000_wait): Likewise.
	* remote-es.c (es1800_read_bytes): Likewise.
	* remote-mips.c (common_breakpoint): Likewise.
	* remote-rdp.c (send_rdp): Likewise.
	* remote-sds.c (putmessage): Likewise.
	* sparc-nat.c (fetch_inferior_registers, store_inferior_registers):
	Likewise.
	* sparcl-tdep.c (sparclite_download): Likewise.
	* symtab.c (lookup_partial_symbol): Likewise.
	* target.c (push_target, pop_target, initialize_targets): Likewise.
	* utils.c (internal_verror, malloc_botch, wrap_here, decimal2str):
	Likewise.
	* valprint.c (print_decimal, print_longest, print_longest)
	(strcat_longest): Likewise.
	* w65-tdep.c (init_frame_pc, w65_push_dummy_frame): Likewise.
	* xmodem.c (xmodem_send_packet): Likewise.
	* z8k-tdep.c (init_frame_pc, z8k_push_dummy_frame): Likewise.
	* config/h8500/tm-h8500.h (STORE_STRUCT_RETURN): Likewise.
	* config/mn10200/tm-mn10200.h (EXTRACT_RETURN_VALUE)
	(STORE_RETURN_VALUE): Likewise.
	* config/ns32k/nm-umax.h (REGISTER_U_ADDR): Likewise.
	* config/ns32k/xm-merlin.h (REGISTER_U_ADDR): Likewise.
	* config/z8k/tm-z8k.h (STORE_STRUCT_RETURN, STORE_RETURN_VALUE):
	Likewise.

2001-02-23  Andrew Cagney  <ac131313@redhat.com>

	* CONTRIBUTE: Document how to cite a problem report.
	* TODO: Note need to replace CONTRIBUTE with generated file.

	* CONTRIBUTE: Mention that patches do not need to include the
	generated files gdbarch.h and gdbarch.c.
	
2001-02-21  Andrew Cagney  <ac131313@redhat.com>

	* value.h (get_saved_register): Move from here.
	* frame.h: To here.

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

	* solib.h (in_svr4_dynsym_resolve_code): Delete declaration.
	(in_solib_dynsym_resolve_code): Add declaration.
	(IN_SOLIB_DYNSYM_RESOLVE_CODE): Changed define to invoke
	in_solib_dynsym_resolve_code() rather than
	in_svr4_dynsym_resolve_code().  Also, removed the ifdefs
	which caused this macro to only be defined when
	SVR4_SHARED_LIBS is defined.
	* solib.c (in_solib_dynsym_resolve_code): New function.
	* solist.h (struct target_so_ops): Add new member
	in_dynsym_resolve_code.
	* solib-aix5.c (aix5_in_dynsym_resolve_code): Renamed from
	in_svr4_dynsym_resolve_code.  Also, made static.
	(_initialize_aix5_solib): Initialize in_dynsym_resolve_code
	member in aix5_so_ops.
	* solib-svr4.c (svr4_in_dynsym_resolve_code): Renamed from
	in_svr4_dynsym_resolve_code.  Also, added second version
	of this function which will be used when SVR4_SHARED_LIBS
	is not defined.
	(_initialize_svr4_solib): Initialize in_dynsym_resolve_code
	member in svr4_so_ops.

	* ia64-aix-nat.c, ia64-aix-tdep.c, config/ia64/aix.mh,
	config/ia64/aix.mt, config/ia64/nm-aix.h, config/ia64/tm-aix.h,
	config/ia64/xm-aix.h: New files.
	* ia64-tdep.c (_initialize_ia64_tdep): Remove declaration.
	(ia64_aix_sigcontext_register_address): New declaration.
	(ia64_gdbarch_init): Provide for initialization of 
	sigcontext_register_address member of struct tdep when
	on target is detected to be running AIX.
	* config/ia64/linux.mt (TDEPFILES): Add ia64-aix-tdep.o to
	this list.

2001-02-20  Kevin Buettner  <kevinb@redhat.com>

	* ia64-tdep.c (ia64_frameless_function_invocation): Implement.
	* config/ia64/linux.mh (NATDEPFILES): Use thread-db.o and lin-lwp.o
	for thread support instead of linux-thread.o and lin-thread.o.
	* config/ia64/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.

2001-02-20  Andrew Cagney  <ac131313@redhat.com>

	* mips-tdep.c (do_fp_register_row, do_fp_register_row): Fix printf
	formatting.

2001-02-20  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (solib-svr4.h): Remove include.
	(solib_break_names): Delete names which aren't actually
	used by AIX5.
	(bkpt_names): Remove.
	(aix5_relocate_main_executable, bfd_lookup_symbol): Replace calls
	to STREQ() with equivalent calls to strcmp().
	(in_svr4_dynsym_resolve_code, enable_break, bfd_lookup_symbol,
	aix5_solib_create_inferior_hook): Revise comments.
	(enable_break): Remove old ``bkpt_names'' code.

2001-02-19  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (SFILES): Add frame.c .
	(COMMON_OBS): Add frame.o .
	(frame.o): New target.

	* frame.c (find_saved_register): 
	(default_get_saved_register): 
	(get_saved_register): 
	(read_relative_register_raw_bytes_for_frame): 
	(read_relative_register_raw_bytes): Moved to here.
	* regcache.c: From here.

2001-02-20  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c: New file.

2001-02-20  Martin M. Hunt  <hunt@redhat.com>

	* solib.c (info_sharedlibrary_command): Don't assume pointers
	are the same size of long, call	longest_local_hex_string_custom().

	* solib-svr4.c (LM_ADDR): LM_ADDR is a signed offset, so
	extract_signed_integer() should be called instead of
	extract_address().

2001-02-20  Martin M. Hunt  <hunt@redhat.com>	
	
	* MAINTAINERS: Add Martin Hunt to Write After Approval list.

2001-02-19  Andrew Cagney  <ac131313@redhat.com>

	Frm 2001-02-09 Jim Kingdon <jkingdon@engr.sgi.com>:
	* mips-tdep.c (mips_register_raw_size): If FP_REGISTER_DOUBLE,
	then floating point registers are 8 bytes.

2001-02-19  Michael Snyder  <msnyder@mvstp600e.cygnus.com>

	* parse.c (write_exp_msymbol): Make the type CORE_ADDR, to 
	accomodate 64-bit addresses.

2001-02-19  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	From Peter Schauer <Peter.Schauer@regent.e-technik.tu-muenchen.de>
 	* symtab.c (lookup_symbol_aux): Call lookup_symbol_aux, not
 	lookup_symbol, when trying to find a symbol with a mangled name,
 	to avoid infinite recursion.

2001-02-18  Andrew Cagney  <ac131313@redhat.com>

	* TODO (5.2): Mention G++ 3.0 ABI.  General cleanups.

2001-02-19  Jonathan Larmour  <jlarmour@redhat.com>

	* arm-tdep.c (check_prologue_cache): Fix off by 1 error.
	(save_prologue_cache): Ditto.

2001-02-19  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	From: innadadadavida@yahoo.com:
	* partial-stab.h (switch): Check that pst is not null
 	before dereferencing it.

2001-02-19  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

        From Andrew Cagney  <cagney@b1.cygnus.com>:
	* symfile.c (add_symbol_file_command): Always initialize
 	my_cleanup using a NULL cleanup.

2001-02-19  Eli Zaretskii  <eliz@is.elta.co.il>

	* demangle.c (demangling_style_names): New variable.
	(_initialize_demangler): Fill demangling_style_names with the
	names of known demangling styles from libiberty_demanglers[].  Use
	add_set_enum_cmd instead of add_set_cmd, to get completion on
	demangling style names.

	* proc-api.c (_initialize_proc_api): Make `procfs-file' use
	file-name completion.

	* remote-rdi.c (_initialize_remote_rdi): Ditto for `rdilogfile'.

	* solib.c (_initialize_solib): Ditto for `solib-search-path' and
	`solib-absolute-prefix'.

	* tracepoint.c (_initialize_tracepoint): Ditto for
	`save-tracepoints'.

	* win32-nat.c (_initialize_inftarg): Ditto for `dll-symbols'.

	* cli/cli-cmds.c (init_cli_cmds): Make `shell' and `make' use
	file-name completion.

	* infcmd.c (_initialize_infcmd): Make the following commands use
	the file-name completer: `tty', `args', `path', `paths', and
	`run'.

2001-02-18  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c: Include i387-nat.h.
	(fetch_register): New function, uses some of the guts of
	go32_fetch_registers and calls i387_supply_register.
	(go32_fetch_registers): Most of the code moved into
	fetch_register.  Use i387_supply_fsave.
	(store_register): Use i387_fill_fsave instead of custom code.
	(go32_store_registers): Use i387_fill_fsave.

	* Makefile.in (go32-nat.o): Depend on i387-nat.h.

	* config/i386/go32.mh (NATDEPFILES): Add i387-nat.o.

	* completer.c (gdb_completer_file_name_break_characters): Remove
	slash from file-name break characters.
	[__MSDOS__]: Special definition for DOS/Windows file names.
	(line_completion_function): When completing on file names, bump
	`p' to the first file-name constituent character of `word', before
	invoking the completer.

2001-02-17  Mark Kettenis  <kettenis@gnu.org>

	* i387-nat.c: Include "i387-nat.h".  Use regnum instead of regno
	consistently for parameter names.  Fix comments accordingly.
	(i387_supply_register): New function.
	(i387_supply_fsave): Implement using i387_supply_register.
	* i387-nat.h: Use regnum instead of regno consistently for
	parameter names.  Fix comments accordingly.
	(i387_supply_register): New prototype.

2001-02-16  Michael Snyder  <msnyder@mvstp600e.cygnus.com>

	* remote.c (build_remote_gdbarch_data): Use new TARGET_ADDR_BIT 
	instead of TARGET_PTR_BIT (to support Harvard architectures).

2001-02-16  Andrew Cagney  <ac131313@redhat.com>

	From 2001-02-11 Paul Hilfinger <hilfingr@lisbon.int.act-europe.fr>
	* hpux-thread.c (hpux_thread_xfer_memory): Add mem_attrib 
	argument to parameter list and to call in order to conform to 
	to_xfer_memory field of struct target_ops.

2001-02-12  Michael Chastain  <chastain@redhat.com>

	* somsolib.c (som_solib_add_solib_objfile): Do not use
	section relocation feature of syms_from_objfile.  Do my own
	section relocation, offsetting each section of the som by
	either text_addr - text_link_addr or data_start.

2001-02-16  Andrew Cagney  <ac131313@redhat.com>

	* TODO (5.1): Move ``Hardware watchpint problems'' out of 5.1.

2001-02-16  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (paper trail): Update.

2001-02-16  Mark Kettenis  <kettenis@gnu.org>

	* target.h (target_fetch_registers): Fix comment.

2001-02-15  Andrew Cagney  <ac131313@redhat.com>

	* f-exp.y: Include <ctype.h>.
	(parse_number): Ensure that ``i'' is always initialized.

2001-02-14  Jim Kingdon  <jkingdon@engr.sgi.com>

	* MAINTAINERS: Add myself to paper trail section.

2001-02-14  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* configure.in (AC_CHECK_HEADERS): Add sys/file.h.
	* configure, config.in: Regenerate.
	* corelow.c: Include <sys/file.h> if present.

2001-02-14  Andrew Cagney  <ac131313@redhat.com>

	* inflow.c (terminal_ours_1): Initialize ``osigtou''.  Only
 	declare when have SIGTTOU.

2001-02-14  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/fnchange.lst: Add entries for gdb/gdbtk/*/ChangeLog-*.

2001-02-12  Jim Kingdon  <jkingdon@engr.sgi.com>

	* MAINTAINERS: Update my email address.

2001-02-11  Eli Zaretskii  <eliz@is.elta.co.il>

	* NEWS: Document that "info symbol" works with COFF debug info and
	its variants.

	* minsyms.c (lookup_minimal_symbol_by_pc_section): Don't skip
	symbols whose SYMBOL_BFD_SECTION is NULL.

2001-02-10  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	Get rid of AIX specific PC_LOAD_SEGMENT, replace with PC_SOLIB.
	* xcoffsolib.c (xcoff_solib_address):  Renamed from
	pc_load_segment_name.  Return NULL if address is not in a shared
	library.  Cleanup shared library name construction, using xasprintf.
	Format shared library member names consistent with format in exec.c.
	(solib_info):  Format shared library member names consistent with
	format in exec.c.
	* config/rs6000/nm-rs6000.h:  Replace PC_LOAD_SEGMENT with PC_SOLIB,
	using xcoff_solib_address for PC_SOLIB definition.
	* stack.c (print_frame):  Remove PC_LOAD_SEGMENT code, no longer
	needed.

2001-02-10  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* mipsread.c (read_alphacoff_dynamic_symtab):  Replace alloca calls
	with xmalloc calls and cleanups.

2001-02-10  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* rs6000-nat.c (child_xfer_memory):  Add missing parameter
	'struct mem_attrib *' required by 2001-01-23 change.

2001-02-08  Jim Kingdon  <jkingdon@engr.sgi.com>

	Updates to "make TAGS":
	* Makefile.in (ALLDEPFILES): Remove altos-xdep.c arm-convert.s
	arm-xdep.c convex-tdep.c convex-xdep.c pyr-tdep.c pyr-xdep.c
	tahoe-tdep.c.
	(TAGFILES_NO_SRCDIR): Add $(SUBDIR_CLI_SRCS).

2001-02-08  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/fnchange.lst: Remove extraneous "too many dots".

Wed Feb  7 22:39:26 2001  Andrew Cagney  <cagney@redhat.com>

	From Dean Luick <luick@cray.com>:
	* defs.h (continuation): Remove unused global variable.

Wed Feb  7 22:28:31 2001  Andrew Cagney  <cagney@redhat.com>

	* configure.tgt: Remove references to convex, pyramid, altos and
 	tahoe.
 	* configure.host: Ditto.
	* MAINTAINERS: Ditto.
	* NEWS: Update.

	* tahoe-tdep.c: Delete obsolete file.
	* pyr-xdep.c: Ditto.
	* pyr-tdep.c: Ditto.
	* convex-tdep.c: Ditto.
	* convex-xdep.c: Ditto.
	* config/tahoe/xm-tahoe.h: Ditto.
	* config/tahoe/tm-tahoe.h: Ditto.
	* config/tahoe/tahoe.mt: Ditto.
	* config/tahoe/tahoe.mh: Ditto.
	* config/pyr/xm-pyr.h: Ditto.
	* config/pyr/tm-pyr.h: Ditto.
	* config/pyr/pyramid.mt: Ditto.
	* config/pyr/pyramid.mh: Ditto.
	* config/m68k/xm-altos.h: Ditto.
	* config/m68k/tm-altos.h: Ditto.
	* config/m68k/altos.mt: Ditto.
	* config/m68k/altos.mh: Ditto.
	* config/convex/xm-convex.h: Ditto.
	* config/convex/tm-convex.h: Ditto.
	* config/convex/convex.mt: Ditto.
	* config/convex/convex.mh: Ditto.
	* config/convex/Convex.notes: Ditto.
	* config/arm/xm-arm.h: Ditto.
	* config/arm/nm-arm.h: Ditto.
	* config/arm/arm.mt: Ditto.
	* config/arm/arm.mh: Ditto.
	* arm-convert.s: Ditto.
	* arm-xdep.c: Ditto.
	* altos-xdep.c: Ditto.

Wed Feb  7 19:41:21 2001  Andrew Cagney  <cagney@redhat.com>

	* defs.h (internal_error, internal_verror): Add __FILE__ and
 	__LINE__ parameter.
	* utils.c (internal_error, internal_verror): Update.

	* v850-tdep.c: Update calls to internal_error.
	* utils.c: Ditto.
	* ui-out.c: Ditto.
	* ui-file.c: Ditto.
	* target.h: Ditto.
	* symtab.h: Ditto.
	* symm-nat.c: Ditto.
	* sparc-tdep.c: Ditto.
	* source.c: Ditto.
	* serial.c: Ditto.
	* rs6000-tdep.c: Ditto.
	* rs6000-nat.c: Ditto.
	* remote.c: Ditto.
	* remote-vx.c: Ditto.
	* remote-sim.c: Ditto.
	* remote-mips.c: Ditto.
	* regcache.c: Ditto.
	* objfiles.h: Ditto.
	* objfiles.c: Ditto.
	* mn10300-tdep.c: Ditto.
	* mips-tdep.c: Ditto.
	* maint.c: Ditto.
	* m68k-tdep.c: Ditto.
	* m3-nat.c: Ditto.
	* language.c: Ditto.
	* infptrace.c: Ditto.
	* inferior.h: Ditto.
	* infcmd.c: Ditto.
	* ia64-tdep.c: Ditto.
	* i386-tdep.c: Ditto.
	* i386-linux-nat.c: Ditto.
	* hppah-nat.c: Ditto.
	* go32-nat.c: Ditto.
	* findvar.c: Ditto.
	* f-lang.c: Ditto.
	* elfread.c: Ditto.
	* event-loop.c: Ditto.
	* dwarf2read.c: Ditto.
	* dsrec.c: Ditto.
	* d30v-tdep.c: Ditto.
	* d10v-tdep.c: Ditto.
	* cli/cli-setshow.c: Ditto.
	* cli/cli-script.c: Ditto.
	* ch-exp.c: Ditto.
	* breakpoint.c: Ditto.
	* ax-gdb.c: Ditto.
	* arch-utils.c: Ditto.
	* a29k-tdep.c: Ditto.
	* gdb_assert.h: Ditto.
	* gdbarch.sh: Ditto.
	* gdbarch.h, gdbarch.c: Re-generate.
	
2001-02-07  Andrew Cagney  <ac131313@redhat.com>

	From Mark Kettenis <kettenis@gnu.org>:
	* event-top.h [!STOP_SIGNAL]: #include <signal.h>.

2001-02-07  Andrew Cagney  <ac131313@redhat.com>

	* remote-sim.c (dump_mem): Cleanup printf format argument.
	* MAINTAINERS: Update, mn10300-elf now builds.

2001-02-07  Mark Kettenis  <kettenis@gnu.org>

	* event-top.c: Remove duplicate #include <signal.h>.

2001-02-06  Andrew Cagney  <ac131313@redhat.com>

	* sol-thread.c (restore_inferior_pid): Save the PID in a freshly
 	allocated buffer.
	(save_inferior_pid): Restore the PID from that tempoary
 	buffer. Delete the buffer.
	* utils.c (make_cleanup_close, do_close_cleanup): Ditto for FD.

2001-02-06  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add ``The Obvious Fix Rule''.

2001-02-06  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add Michael Snyder to Solaris/SPARC list.

2001-02-06  Andrew Cagney  <ac131313@cygnus.com>

	* gdbarch.sh: Include "gdb_assert.h".
	(struct gdbarch): Change ``nr_data'' to unsigned.
	(alloc_gdbarch_data, free_gdbarch_data): New functions.
	(gdbarch_free): Free the data-pointer vector.  Use xfree to delete
 	architecture vector.
 	(struct gdbarch_data, struct gdbarch_data_registration): Move init
 	method to gdbarch_data.  Add free method, make index unsigned.
	(struct gdbarch_data_registry): Make nr unsigned.
	(register_gdbarch_data): Add free parameter. Store in
 	gdbarch_data.
	(init_gdbarch_data): Use set_gdbarch_data.
	(set_gdbarch_data): New function.
	
	* gdbarch.h, gdbarch.c: Re-generate.
	
2001-02-06  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* ser-unix.c (hardware_print_tty_state) [HAVE_SGTTY]: Call
	fprintf_filtered with correct arguments.

2001-02-06  Michael Snyder  <msnyder@makita.cygnus.com>
	Submitted by Paul Hilfinger (hilfingr@gnat.com) 
	and Andrei Petrov (and@genesyslab.com).
	* findvar.c: Buffers of size MAX_REGISTER_RAW_SIZE or REGISTER_BYTES
	must be allocated dynamically, since these are no longer constants.
	* infcmd.c: Ditto.
	* regcache.c: Ditto.
	* remote.c: Ditto.
	* sol-thread.c: Ditto.
	* valops.c: Ditto.
	* config/sparc/sun4sol2.mh (MH_CFLAGS): Add -I/usr/include/v9, as a
	work-around for a missing Sun header file in solaris for sparc64.

2001-02-04  Philip Blundell  <philb@gnu.org>

	* config/arm/linux.mh (NATDEPFILES): Add proc-service.o,
	thread-db.o, lin-lwp.o; remove lin-thread.o, linux-thread.o.
	* config/arm/nm-linux.h (PREPARE_TO_PROCEED, ATTACH_LWP,
	GET_THREAD_SIGNALS): Define.
	* arm-linux-nat.c (fill_gregset): Correct type of argument.
	(supply_gregset): Likewise.
	(fill_fpregset): Likewise.
	(supply_fpregset): Likewise.

Tue Feb  6 11:58:57 2001  David Taylor  <taylor@redhat.com>

	* valops.c (value_cast): If casting a scalar to a pointer, do not
 	issue a message about truncation unless it exceeds the length of
 	an address, not the length of a pointer.  This is because what the
 	user gives us is an address, not a pointer, and we will ultimately
 	convert it (via ADDRESS_TO_POINTER) to a pointer, not truncate it
 	to a pointer.  This allows things like "print *(int *)0x01000234"
 	to work without generating a misleading message on a target having
 	two byte pointers and four byte addresses.

2001-02-05  Christopher Faylor  <cgf@cygnus.com>

	* win32-nat.c: Change PTR to void * throughout.

2001-02-05  J.T. Conklin  <jtc@redback.com>

	* signals.h: Removed.
	* event-top.c (#include <signal.h>): Changed from signals.h.
	* inflow.c: Likewise.
	* mac-xdep.c: Likewise.
	* ser-pipe.c: Likewise.
	* ser-tcp.c: Likewise.
	* standalone.c: Likewise.
	* top.c: Likewise.
	* utils.c: Likewise.
	* Makefile.in: Removed signals.h from dependencies.

2001-02-05  Christopher Faylor  <cgf@cygnus.com>

	Change suggested by Dean Luick <luick@cray.com>
	* inferior.h (step_over_calls_kind): Remove trailing comma from
	last enum element.
	(step_over_calls): Declare as extern rather than global.

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

	* sh-tdep.c: Update copyright.
	(sh_extract_return_value): Rewrite.
	(sh3e_sh4_extract_return_value): New function.
	(sh_gdbarch_init): Initialize gdbarch_extract-return_value to new
 	version of the function for sh3e and sh4 CPUs.

2001-02-05  Michael Chastain  <chastain@redhat.com>

	* hppah-nat.c (child_xfer_memory): Add parameter 'struct mem_attrib *'
	to conform with interface change.

2001-02-04  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/fnchange.lst: Tweak to make consistent with the
	new files.

	* config/djgpp/djconfig.sh: Use explicit absolute file name when
	invoking `find'.

	* ser-go32.c (dos_write) [UART_FIFO_WORKS]: Use outportsb only if
	UART_FIFO_WORKS is defined.  Otherwise use outportb.
	From Francisco Pastor <fpastor.etra-id@etra.es>

	* go32-nat.c (go32_xfer_memory): Make the argument list consistent
	with target.h's `to_xfer_memory' member.

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

	* ppc-bdm.c (#include <signal.h>): Removed.
	* remote-array.c: Likewise.
	* remote-bug.c: Likewise.
	* remote-e7000.c: Likewise.
	* remote-mips.c: Likewise.
	* remote-os9k.c: Likewise.
	* remote-st.c: Likewise.
	* remote-udi.c: Likewise.
	* remote-vx29k.c: Likewise.
	* remote-vx68.c: Likewise.
	* remote-vx960.c: Likewise.
	* remote-vxmips.c: Likewise.
	* remote-vxsparc.c: Likewise.

2001-02-02  John Moore  <jmoore@redhat.com>

	* remote-utils.h (sr_set_device): Changed free() to xfree() where 
	appropriate.  Also changed Copyright to include 2001.
	* symtab.h (obstack_chunk_free, SYMBOL_INIT_DEMANGLED_NAME): Likewise.
	* value.h (value_free): Likewise.
	* gdbarch.sh (gdbarch_free): Likewise.
	* gdbarch.c, gdbarch.h: Regenerated.

2001-02-02  John Moore  <jmoore@redhat.com>

        * cli/cli-cmds.c (apropos_command): Changed occurance of free() to 
	xfree().  Also changed Copyright to include 2001.

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

	* monitor.c (#include "gdb_wait.h"): Removed.
	* ocd.c: Likewise.
	* ppc-bdm.c: Likewise.
	* remote-adapt.c: Likewise.
	* remote-array.c: Likewise.
	* remote-bug.c: Likewise.
	* remote-e7000.c: Likewise.
	* remote-eb.c: Likewise.
	* remote-es.c: Likewise.
	* remote-mips.c: Likewise.
	* remote-mm.c: Likewise.
	* remote-nindy.c: Likewise.
	* remote-os9k.c: Likewise.
	* remote-rdi.c: Likewise.
	* remote-rdp.c: Likewise.
	* remote-sds.c: Likewise.
	* remote-sim.c: Likewise.
	* remote-st.c: Likewise.
	* remote-udi.c: Likewise.
	* remote-vx.c: Likewise.
	* remote-vx29k.c: Likewise.
	* remote-vx68.c: Likewise.
	* remote-vx960.c: Likewise.
	* remote-vxmips.c: Likewise.
	* remote-vxsparc.c: Likewise.
	* remote.c: Likewise.
	* ser-pipe.c: Likewise.
	* ser-unix.c: Likewise.
	* Makefile.in: Updated dependencies.

2001-01-31  David Smith  <dsmith@redhat.com>

	* event-loop.c: Change inclusion of string.h to gdb_string.h and
	updated the copyright notice.
	* ser-pipe.c: Ditto.
	* mi/mi-cmds.c: Ditto.
	* mi/mi-console.c: Ditto.
	* mi/mi-getopt.c: Ditto.
	* mi/mi-parse.c: Ditto.

2001-01-31  David Smith  <dsmith@redhat.com>

	* MAINTAINERS: Add David Smith to Write After Approval list.

Tue Jan 30 15:43:08 2001  Andrew Cagney  <cagney@cygnus.com>

	* cli/cli-utils.c (putchar_filtered): Move function from here.
	* utils.c (putchar_filtered): To here.
	* cli/cli-utils.h (putchar_filtered): Move declaration from here.
	* defs.h (putchar_filtered): To here.
	
Tue Jan 30 17:27:11 2001  Andrew Cagney  <cagney@redhat.com>

	* configure.in (AC_CHECK_FUNCS): Replace vfork test with
 	AC_FUNC_VFORK macro.
	* config.in, configure: Re-generate.

	* gdb_vfork.h: New file.
	* ser-pipe.c (pipe_open): Update. Include "gdb_vfork.h".
	* fork-child.c (fork_inferior): Ditto.
	
Tue Jan 30 17:09:07 2001  Andrew Cagney  <cagney@redhat.com>

	* defs.h (strsave): Delete declaration.
	* utils.c (strsave): Delete definition.
	* TODO (strsave): Update

	* mac-xdep.c (tilde_expand): Replace strsave with xstrdup.
	* sparcl-tdep.c (sparclite_open): Ditto.
	* mips-tdep.c (mips_set_processor_type_command):  Ditto.
	(_initialize_mips_tdep):  Ditto.
	* solib.c (solib_open):  Ditto.
	* symfile.c (add_filename_language):  Ditto.
	(set_ext_lang_command):  Ditto.
	* source.c (init_source_path):  Ditto.
	(mod_path):  Ditto.
	* sh3-rom.c (sh3_open):  Ditto.
	(sh3e_open):  Ditto.
	* serial.c (serial_open):  Ditto.
	* remote-mips.c (common_open):  Ditto.
	* monitor.c (monitor_open):  Ditto.
	* m32r-rom.c (m32r_upload_command):  Ditto.
	* infcmd.c (path_command):  Ditto.
	* f-exp.y (parse_number):  Ditto.
	* breakpoint.c (create_longjmp_breakpoint):  Ditto.
	(create_thread_event_breakpoint):  Ditto.
	* arc-tdep.c (arc_set_cpu_type_command):  Ditto.
	(_initialize_arc_tdep):  Ditto.

Tue Jan 30 15:14:26 2001  Andrew Cagney  <cagney@skil>

	* cli/cli-script.c (define_command): Check for a bad hook value in
 	switch statement.

2001-01-30  J.T. Conklin  <jtc@redback.com>

	* configure/sh/embed.mt: New file.
	* configure/sh/linux.mt: New file.
	* configure/sh/sh.mt: Removed.
	* configure.tgt (sh-*-hms,sh-*-coff*,sh-*-elf*,sh-*-linux): New targets.
	(sh-*-*): Removed.

2001-01-29  Michael Chastain  <chastain@redhat.com>

	* symtab.c (block_lookup_symbol): Use 'namespace' parameter in
	symbol comparisons in binary search.

2001-01-27  Christopher Faylor  <cgf@cygnus.com>

	* win32-nat.c (child_xfer_memory): Add missing argument required by
	2001-01-23 change.

2001-01-27  Mark Kettenis  <kettenis@gnu.org>

	* ui-out.c (do_list_end): New function.
	(make_cleanup_ui_out_list_end): New function.
	* ui-out.h: Provide prototype for make_cleanup_ui_out_list_end.
	* stack.c (print_frame) [UI_OUT]: Call
	make_cleanup_ui_out_list_end to make sure we mark the end of the
	list if we do a non-local exit.  At the end of the function,
	instead of calling ui_out_list_end directly, let do_cleanups
	handle it.

2001-01-26  Fernando Nasser  <fnasser@redhat.com>

	Fix double parsing of filenames passed as command line arguments
	to GDB (causes weird handling of escape characters).
	Also, remove dependencies on the CLI from libgdb.
	* call-cmds.h: Remove declaration of exec_file_command().
	* gdbcore.h: Remove declaration of exec_file_command().
	Add declarations for exec_open() and exec_file_clear().
	* symfile.h: Add declarations for symbol_file_add_main() and
	symbol_file_clear().
	* exec.c (exec_open): New function. Implements to_open for exec
	targets.
	(exec_file_clear): New function. Makes GDB forget about a previously
	specified executable file.
	(exec_file_attach): Move parsing of arguments from here ...
	(exec_file_command): ... to here.
	(init_exec_ops): Use exec_open(), not exec_file_command() to
	implement to_open for exec targets.
	* symfile.c (symbol_file_add_main): New function. Call symbol_file_add()
	with default values.  Used when the file name has already been parsed.
	(symbol_file_clear): New function. Makes GDB forget about previously
	read symbols.
	(symbol_file_command): Call the above function instead of inline code.
	* main.c: Include "symfile.h" and "gdbcore.h" instead of the deprecated
	"call-cmds.h".
	(captured_main): Call exec_file_attach() and symbol_file_add_main()
	instead of exec_file_command() and symbol_file_command().
	(captured_main): Add comment.
	* corefile.c: Include "symfile.h".
	(core_file_command): Call symbol_file_add_main() instead of
	symbol_file_command().
	(reopen_exec_file): Call exec_open() instead of exec_file_command().
	* infcmd.c: Include "symfile.h".
	(attach_command): Call symbol_file_add_main() instead of 
        symbol_file_command().
	* infrun.c: Remove comment about the inclusion of "symfile.h",
	not any longer appropriate.
	(follow_exec): Call symbol_file_add_main() instead of 
        symbol_file_command().
	* remote-es.c: Include "symfile.h".
	(es1800_load): Call symbol_file_add_main() instead of 
        symbol_file_command().
	* remote-vx.c: Remove comment about the inclusion of "symfile.h",
        not any longer appropriate.
	(vx-wait): Call symbol_file_add_main() instead of 
        symbol_file_command().
	* solib-svr4.c (open_symbol_file_object): Call symbol_file_add_main()
	instead of symbol_file_command().
	* v850ice.c (ice_file): Call exec_open(), exec_file_attach() and
	symbol_file_add_main() instead of exec_file_command() and
	symbol_file_command().
	* Makefile.in: Update dependencies.

2001-01-26  Jeff Holcomb  <jeffh@redhat.com>

	* remote-udi.c (udi_open): Change strdup to xstrdup.
	* thread.c (thread_apply_all_command): Change strdup to xstrdup.
	Update copyright message.
	* varobj.c (delete_variable_1): Likewise.

	* gdb_string.h: Remove declaration of strdup.  Update copyright
	message.
	* config/xm-mpw.h: Likewise.
	* config/i386/xm-i386mach.h: Likewise.
	* config/m68k/xm-apollo68b.h: Likewise.
	* config/m68k/xm-hp300bsd.h: Likewise.
	* config/rs6000/xm-rs6000.h: Likewise.
	* config/vax/xm-vaxult.h: Remove declaration of strdup.
	* config/vax/xm-vaxult2.h: Likewise.

2001-01-26  Jeff Holcomb  <jeffh@redhat.com>

	* MAINTAINERS: Add Jeff Holcomb to Write After Approval list.

2001-01-25  J.T. Conklin  <jtc@redback.com>

	* target.c (target_xfer_memory_partial): Return -1 on failure due
 	to invalid access mode attribute.

2001-01-25  Christopher Faylor  <cgf@cygnus.com>

	* win32-nat.c (_initialize_core_win32): Prototype correctly.

2001-01-25  Mark Kettenis  <kettenis@gnu.org>

	* config/alpha/tm-fbsd.h: Update copyright.
	(USE_STRUCT_CONVENTION): Define in terms of
	alphabsd_use_struct_convention.
	* config/alpha/fbsd.mt (TDEPFILES): Add alphafbsd-tdep.c.
	* alphafbsd-tdep.c: New file.

2001-01-24  Fernando Nasser  <fnasser@redhat.com>

	* top.c (print_gdb_version): Update Copyright year.

2001-01-24  J.T. Conklin  <jtc@redback.com>

	* dcache.c (dcache_write_line): Fix typo.

	* memattr.c (delete_mem_region): Replace free() with xfree().
	(mem_number): Add explicit type.

	* sol-thread.c (sol_thread_xfer_memory): Add attrib argument.
	(rw_common): Likewise.

2001-01-24  Fernando Nasser  <fnasser@redhat.com>

	* infcmd.c (get_inferior_args, set_inferior_args): Accessor functions
	for the inferior program arguments.
	(run_command, run_no_args_command, init_infcmd)): Use accessor
	functions to set the inferior program arguments.
	* inferior.h: Add definitions to the accessor functions above.

2001-01-23  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c (read_tag_const_type, read_tag_volatile_type):
	Implement these correctly, using make_cv_type.

2001-01-23  J.T. Conklin  <jtc@redback.com>

	* exec.c (xfer_memory): Add attrib argument.
	* infptrace.c (child_xfer_memory): Likewise.
	* lin-lwp.c (lin_lwp_xfer_memory): Likewise.
	* monitor.c (monitor_xfer_memory): Likewise.
	* remote-adapt.c (adapt_xfer_inferior_memory): Likewise.
	* remote-array.c (array_xfer_memory): Likewise.
	* remote-bug.c (bug_xfer_memory): Likewise.
	* remote-e7000.c (e7000_xfer_inferior_memory): Likewise.
	* remote-eb.c (eb_xfer_inferior_memory): Likewise.
	* remote-es.c (es1800_xfer_inferior_memory): Likewise.
	* remote-mips.c (mips_xfer_memory): Likewise.
	* remote-mm.c (mm_xfer_inferior_memory): Likewise.
	* remote-nindy.c (nindy_xfer_inferior_memory): Likewise.
	* remote-os9k.c (rombug_xfer_inferior_memory): Likewise.
	* remote-rdi.c (arm_rdi_xfer_memory): Likewise.
	* remote-rdp.c (remote_rdp_xfer_inferior_memory): Likewise.
	* remote-sds.c (sds_xfer_memory): Likewise.
	* remote-sim.c (gdbsim_xfer_inferior_memory): Likewise.
	* remote-st.c (st2000_xfer_inferior_memory): Likewise.
	* remote-udi.c (udi_xfer_inferior_memory): Likewise.
	* remote-vx.c (vx_xfer_memory): Likewise.
	* remote.c (remote_xfer_memory): Likewise.
	* target.c (debug_to_xfer_memory, do_xfer_memory): Likewise.
	* target.h (child_xfer_memory, do_xfer_memory, xfer_memory): Likewise.
	* thread-db.c (thread_db_xfer_memory): Likewise.

	* target.h (#include "memattr.h"): Added.
	(target_ops.to_xfer_memory): Add attrib argument.

	* wince.c (_initialize_inftarg): Removed call to set_dcache_state.
	* dcache.h (set_dcache_state): Removed declaration.
	* dcache.c (set_dcache_state): Removed definition
	
	* dcache.c: Update module comment, as dcache is now enabled and
 	disabled with memory region attributes instead of by the global
 	variable "remotecache".  Add comment describing the interaction
	between dcache and memory region attributes.
	(dcache_xfer_memory): Add comment describing benefits of moving
	cache writeback to a higher level.
	(dcache_struct): Removed cache_has_stuff field.  This was used to
 	record whether the cache had been accessed in order to invalidate
 	it when it was disabled.  However, this is not needed because the
 	cache is write through and the code that enables, disables, and
 	deletes memory regions invalidate the cache.  Add comment which
 	suggests that we could be more selective and only invalidate those
	cache lines containing data from those memory regions.
	(dcache_invalidate): Updated.
	(dcache_xfer_memory): Updated.
	
	(dcache_alloc): Don't abort() if dcache_enabled_p is clear.
	(dcache_xfer_memory): Removed code that called do_xfer_memory() to
 	perform a uncached transfer if dcache_enabled_p was clear.  This
 	function is now only called if caching is enabled for the memory
	region.
	(dcache_info): Always print cache info.

	* target.c (do_xfer_memory): Add attrib argument.
	(target_xfer_memory, target_xfer_memory_partial): Break transfer
 	into chunks defined by memory regions, pass region attributes to
 	do_xfer_memory().
	* dcache.c (dcache_read_line, dcache_write_line): Likewise.

	* Makefile.in (SFILES): Add memattr.c.
	(COMMON_OBS): Add memattr.o.
	(dcache.o): Add target.h to dependencies.
	* memattr.c: New file.
	* memattr.h: Likewise.

	* config/m32r/m32r.mt (GDBSERVER_LIBS): Added ../../intl/libintl.a.
	* config/mips/vr5000.mt (GDBSERVER_LIBS): Likewise.
	* config/tic80/tic80.mt (GDBSERVER_LIBS): Likewise.
	* gdbserver/low-sim.c (#include "defs.h"): Removed.
	(mygeneric_load): Rename from generic_load.
	
	* gdbserver/low-hppabsd.c (#include "server.h"): Added.
	(#include "defs.h"): Removed.
	(inferior_pid, perror_with_name): Remove declarations.
	* gdbserver/low-linux.c: Likewise.
	* gdbserver/low-nbsd.c: Likewise.
	* gdbserver/low-sparc.c: Likewise.
	* gdbserver/low-sun3.c: Likewise.

	* i386-stub.c: Re-indent.
	* m68k-stub.c: Re-indent.

2001-01-22  Nicholas Duffek  <nsd@redhat.com>

	* gdbarch.sh (PARM_BOUNDARY): Define.
	* gdbarch.c: Regenerate.
	* gdbarch.h: Regenerate.

2001-01-22  J.T. Conklin  <jtc@redback.com>

	* ns32k-tdep.c: #include "frame.h"
	* config/ns32k/tm-umax.h (FRAME_FIND_SAVED_REGS): Restore.  It
 	appears to have been inadvertantly removed sometime in May 1999.

	* Revert 2000-11-09 changes where shared library objects were
 	moved from NATDEPFILES to TDEPFILES on NetBSD targets.  While
	we'd like to be able to debug dynamically linked executables,
	this makes it impossible to build a cross debugger on a many
	hosts.

	* config/i386/nbsd.mt: Remove solib.o, solib-svr4.o from 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.
        * config/sparc/nbsdelf.mt: Likewise.
        * config/i386/nbsd.mh: Add solib.o, solib-svr4.o to 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.

2001-01-19  Jason Merrill  <jason@redhat.com>

	* dbxread.c (read_ofile_symtab): Stay with AUTO_DEMANGLING for G++.
	(process_one_symbol): Likewise.
	* dwarfread.c (handle_producer): Likewise.

Thu Jan 18 12:08:57 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (build_warnings): Disable -Wuninitialized until GDB
 	compiles with -Wuninitialized,-Werror.
	* configure: Regenerate.

	* MAINTAINERS: Add list of buildable targets.

Thu Jan 18 12:48:04 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* defs.h (STRCMP): Delete macro.

	* objfiles.c (objfile_relocate): Replace STRCMP with call to
 	strcmp.
	* symtab.c (lookup_partial_symbol, lookup_block_symbol): Ditto.
	* symfile.c (compare_symbols):  Ditto.
	* standalone.c (open):  Ditto.
	* remote-es.c (verify_break):  Ditto.
	* cli/cli-decode.c (add_cmd, add_show_from_set): Ditto.

	* symfile.c (compare_psymbols): Delete comment refering to STRCMP.

Thu Jan 18 12:25:06 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* varobj.c (FREEIF): Delete macro.
	(varobj_set_value, free_variable): Replace FREEIF with ``xfree''
 	call.

2001-01-18  Nick Clifton  <nickc@redhat.com>

	* arc-tdep.c (arc_cpu_type_table): Add new arc core numbers.
	(arc_print_insn): No bfd available, so pass NULL to
	arc_get_disassembler.

2001-01-09  James Ingham  <jingham@inghji.apple.com>

         * symtab.c (lookup_symbol_aux): Call lookup_symbol_aux to lookup
 	 a mangled symbol rather than recursing into lookup_symbol, since
 	 this will just re-unmangle the name & call lookup_symbol_aux -
 	 leading to an infinite recursion.

2001-01-18  Mark Kettenis  <kettenis@gnu.org>

	* infcmd.c (print_return_value): Restore another space lost by
	switch to UIOUT. ``$NN='' should be ``$NN =''.

Fri Jan 19 02:31:40 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* target.h (TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT)
	* breakpoint.c (TARGET_REGION_OK_FOR_HW_WATCHPOINT): Wrap macro
 	definition in parenthesis.

Fri Jan 19 02:13:40 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-10-27 Mark Salter <msalter@redhat.com>:
	* remote.c (remote_remove_hw_breakpoint): Add 'len' field to Z
 	packet.
	(remote_insert_hw_breakpoint): Ditto.

2001-01-17  J.T. Conklin  <jtc@redback.com>

	* config/m68k/tm-nbsd.h (USE_STRUCT_CONVENTION): Define.
	(BPT_VECTOR, REMOTE_BPT_VECTOR): Change to 0xf.
	* config/m68k/nbsd.mt (TDEPFILES): Add m68knbsd-tdep.o.
	* m68knbsd-tdep.c: New file.

	* i386nbsd-tdep.c: Remove #if 0'd out #includes.

	* m68knbsd-nat.c: #include gdbcore.h.

Wed Jan 17 09:41:58 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Add J.T. Conklin to Blanket Write Privs.

2001-01-16  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* procfs.c (procfs_stopped_by_watchpoint): Don't die if process
	goes away -- just return false (ie. not stopped by watchpoint).
	* source.c (openp): Fix typo in comment.

2001-01-12  Nicholas Duffek  <nsd@redhat.com>

	* blockframe.c (generic_get_saved_register): Spelling fix.
	* frame.h (FRAME_FP): Spelling fix.

Fri Jan 12 18:29:46 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* infcmd.c (print_return_value): Restore space lost by switch to
 	UIOUT. ``$NN='' should be ``$NN =''.
	
2001-01-08  Nicholas Duffek  <nsd@redhat.com>

	* regcache.c (set_register_cached, register_buffer,
	real_register, pseudo_register fetch_register, store_register):
	New functions.
	(register_changed, read_relative_register_raw_bytes_for_frame,
	registers_changed, registers_fetched, read_register_bytes,
	read_register_gen, write_register_gen, read_register,
	read_signed_register, write_register, supply_register): Replace
	register_valid[] with register_cached() and
	set_register_cached().
	(read_register_bytes, read_register_gen, write_register_gen,
	read_register, read_signed_register, write_register,
	supply_register): Replace registers[] with register_buffer().
	(read_register_bytes, read_register_gen, read_register,
	read_signed_register): Call fetch_register().
	(write_register_gen, write_register): Call real_register() and
	store_register().
	(write_register_bytes): Call store_register().
	* value.h (set_register_cached, register_buffer): Prototype.
	* remote.c (remote_fetch_registers): Allocate regs[] with a
	run-time size.  Replace register_valid[] with
	set_register_cached().
	(store_register_using_P, remote_store_registers): Replace
	registers[] with register_buffer().

2001-01-08  Nicholas Duffek  <nsd@redhat.com>

	* regcache.c: Change "write-back" comment to "write-through".
	Change "regno" to "regnum".
	(read_register, read_signed_register): Remove "raw" from return
	value description.
	(supply_register): Spelling fix.
	* value.h: Change "regno" to "regnum".

2001-01-08  Fernando Nasser  <fnasser@redhat.com>

	* Makefile.in (install-gdbtk): Add .itcl files to the list of files
	to be installed.

2001-01-04  Michael Snyder  <msnyder@mvstp600e.cygnus.com>

	* mips-tdep.c (mips_coerce_float_to_double): Fix typo in comment.

2001-01-04  Nicholas Duffek  <nsd@redhat.com>

	* valops.c (VALUE_SUBSTRING_START): Delete.

2001-01-04  Nicholas Duffek  <nsd@redhat.com>

	* Makefile.in (SUBDIR_CLI_OBS): Add cli/cli-utils.o.
	(SUBDIR_CLI_SRCS): Add cli/cli-utils.c.
	(cli_utils_h): New variable.
	(cli/cli-utils.o): New rule.
	* cli/cli-utils.c: New file.
	* cli/cli-utils.h: New file.

2001-01-04  Nicholas Duffek  <nsd@redhat.com>

	* config/i386/tm-i386.h (REGISTER_CONVERT_TO_VIRTUAL,
	REGISTER_CONVERT_TO_RAW): Delete trailing semicolon.

2001-01-03  J.T. Conklin  <jtc@redback.com>

	* alphabsd-nat.c, i386-linux-nat.c, i386bsd-nat.c: Fix typo in
 	comment.

2001-01-02  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* sh-tdep.c (sh_default_store_return_value):  Allow for small return type.
	(sh3e_sh4_store_return_value): Call sh_default_store_return_value for
	non-float types.
	* sparc-tdep.c (sparc_frame_chain): Fix typo in comment.
	Update copyright notice.
	
For older changes see ChangeLog-2000

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
