2002-01-31  Andrew Cagney  <ac131313@redhat.com>

	* PROBLEMS: Fix tipo, 5.1->5.1.1.

2002-01-30  Andrew Cagney  <ac131313@redhat.com>

	* PROBLEMS: Note that the i386 fix was missing from 5.1.1.

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

	* version.in: Bump version to 5.1.1
	* README: Update to 5.1.1.
	* NEWS: Mention problems fixed in 5.1.1

2002-01-20  Michael Chastain  <mec@shout.net>

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

2002-01-13  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (save_npx) [__DJGPP_MINOR__ < 3]: Remove extraneous
	white space which prevented compilation.  Reported by DSK
	<dsk@student.unsw.edu.au>.

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

	* i387-nat.c (i387_fill_fxsave): Change type of ``val'' from char
	to short so that we don't memcpy() beyond the end of this buffer.
	Also, change shift value used in computing val to account for the
	fact that only eight bits are used.

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

	* PROBLEMS: New file.  Add title.
	* README: Move known problems to PROBLEMS file.

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

        From Jakub Jelinek  <jakub@redhat.com>:

        * dwarf2read.c (dwarf_str_buffer): New.
        (struct dwarf2_pinfo): Add dwarf_str_buffer and dwarf_str_size.
        (DWARF_STR_BUFFER, DWARF_STR_SIZE): Define.
        (dwarf2_has_info): Clear dwarf_str_offset.
        (dwarf2_build_psymtabs): Read .debug_str section if present.
        (dwarf2_build_psymtabs_hard): Save DWARF_STR_BUFFER and
        DWARF_STR_SIZE.
        (psymtab_to_symtab_1): Restore DWARF_STR_BUFFER and DWARF_STR_SIZE.
        (read_attribute): Handle DW_FORM_strp.
        (read_n_bytes, read_string): Remove HOST_CHAR_BIT != 8
        handling code.
        (read_indirect_string): New.
        (dump_die): Handle DW_FORM_strp.

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

	* version.in: Bump version to 5.1.0_0000-00-00-cvs.

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:
