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

	* regcache.c (regcache_descr): New function.
	(init_legacy_regcache_descr): Replace legacy_regcache_descr.
	(init_regcache_descr): Replace regcache_descr.
	(_initialize_regcache): Pass init_regcache_descr to
	register_gdbarch_data.

	* arch-utils.h (legacy_extract_return_value): Declare.

	* blockframe.c (generic_call_dummy_register_unwind): Use
	deprecated_grub_regcache_for_registers to get register value.
	* values.c (value_being_returned): Ditto.  Include "regcache.h".

2002-05-23  Andrew Cagney  <ac131313@redhat.com>

	* regbuf.h, regbuf.c: Delete.

2002-05-23  Andrew Cagney  <ac131313@redhat.com>

	* regcache.c (register_buffer): Add regcache parameter.  Update
	callers.
	(struct regcache_descr): Add nr_raw_registers and
	max_register_size.  Add legacy_p.  Change registers to
	raw_registers, register_valid_p to raw_register_valid_p.  Update
	all callers.
	(legacy_regcache_descr): New function handle legacy case.
	(regcache_descr): Use legacy function.  For non-legacy case,
	restrict the register cache to just NUM_REGS.
	(regcache_read, regcache_write): When non-legacy case, implement
	regcache read and write directly.
	(regcache_write): Use regcache_valid_p.

	* regcache.h (deprecated_grub_regcache_for_registers): Rename
	grub_around_regcache_for_registers
	(deprecated_grub_regcache_for_register_valid): Rename
	grub_around_regcache_for_register_valid.
	* regcache.c (deprecated_grub_around_regcache_for_registers)
	(deprecated_grub_regcache_for_register_valid): Rename.
	* rs6000-tdep.c (rs6000_extract_return_value): Update.
	* regcache.c (build_regcache): Update.

2002-05-17  Andrew Cagney  <ac131313@redhat.com>

	* regcache.c (regcache_move): New function.
	(regcache_save): Rewrite, handle pre and post
	gdbarch_register_read_p with regcache_move.
	(regcache_dup): Ditto
	(regcache_dup_no_passthrough): Ditto ditto.
	(regcache_save_no_passthrough): Ditto ditto.
	(regcache_restore): Ditto ditto.
	(regcache_restore_no_passthrough): Ditto ditto.
	* regcache.h: Upate

	* infrun.c (save_inferior_status): Use regcache_dup_no_passthrough
	instead of regcache_dup.  Use regcache dup instead of
	regcache_xmalloc, regcache_save.  Revert white space change.

	* infcmd.c (run_stack_dummy): Use regcache_dup_no_passthrough not
	regcache_dup.

	* blockframe.c (generic_push_dummy_frame): Re-order regcache_save
	call to so that the patch is better.

	* regcache.c (regcache_save_no_passthrough): New function.
	(regcache_dup_no_passthrough): Ditto.
	(regcache_restore_no_passthrough): Rename to
	regcache_restore_no_writethrough.

	* blockframe.c, regbuf.c, rs6000-tdep.c: Include "regcache.h".

** REMEMBER TO FIX DEPENDENCIES
	
	* regcache.c: Update copyright.

	* regbuf.c (regbuf_descr): gdbarch_data finally takes a gdbarch
	parameter.

	* rs6000-tdep.c (rs6000_extract_return_value): Update.
	(rs6000_extract_struct_value_address): Update.

	* infrun.c (write_inferior_status_register): Update.
	(save_inferior_status): Update.
	(discard_inferior_status): Update.
	(build_infrun): Update.

2002-05-15  Andrew Cagney  <ac131313@redhat.com>

	* infcmd.c: Include "regcache.h" instead of "regbuf.h".

	* infrun.c (save_inferior_status): Update.
	(struct inferior_status): Change type of stop_registers and
	registers to `struct regcache'.
	(restore_inferior_status): 

	* regcache.h (regcache_dup): Declare.

	* valops.c (hand_function_call): Update.

	* gdbarch.sh (struct regcache): Declare opaque.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Ditto.
	(EXTRACT_RETURN_VALUE): Ditto.
	* gdbarch.h, gdbarch.c: Regenerate.

	* values.c (value_being_returned): Change retbuf parameter to a
	`struct regcache'.

	* inferior.h (run_stack_dummy): Change retbuf to a `struct
	regcache'.
	* value.h (value_being_returned): Ditto.

	* infcmd.c (run_stack_dummy): Update.
	(run_stack_dummy): Change parameter to regcache.

	* infrun.c (stop_registers): Change type to ``struct regcache''.
	* inferior.h (stop_registers): Ditto.

	* regcache.c (build_regcache): Update.
	(regcache_restore): Ditto.
	(regcache_save): Ditto.
	(_initialize_regcache): Swap current_regcache instead of
	regcache_regbuf.

	* blockframe.c (generic_get_saved_register): 

	* regcache.h (regcache_read_as_address): Declare.
	(regcache_xfree, regcache_xmalloc):

	* blockframe.c (generic_read_register_dummy): Update.
	(generic_push_dummy_frame): Update.

	* frame.h (generic_find_dummy_frame): Change return type to
	``struct regcache''.

	* blockframe.c (struct dummy_frame): Replace regbuf with regcache.
	(generic_find_dummy_frame): Update.

	* regcache.h (struct regbuf): Delete declaration.
	(current_regcache): Declare.
	(struct regcache): Declare opaque.
	(struct regbuf): Delete.

	* regcache.c (regcache_write): Add regcache parameter.  Only pass
	through to target code when backed by a real target.
	(regcache_read): Ditto.
	(struct regcache): define.
	(current_regcache): New global variable.
	(regcache_regbuf): Delete.

2002-05-16  Richard Earnshaw  <rearnsha@arm.com>

	* regbuf.c (regbuf_descr): gdbarch_data() now takes a gdbarch
	parameter.

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

	* regcache.c (regcache_restore): New function.
	* regcache.h (regcache_restore): Declare.

	* infrun.c (build_infrun): Allocate stop_registers using
	regbuf_xmalloc.
	(_initialize_infrun): Don't call build_infrun.

	* Makefile.in (infrun.o): Add dependency on "regbuf.h".

	* infrun.c: Include "regbuf.h".
	(struct inferior_status): Change type of stop_registers
	and registers to ``struct regbuf''.
	(xmalloc_inferior_status): Allocate stop_registers and registers
	using regbuf_xmalloc.
	(free_inferior_status): Free registers and stop_registers using
	regbuf_xfree.
	(xmalloc_inferior_status): Delete.
	(save_inferior_status): XMALLOC inf_status directly.  Use
	regbuf_dup and regbuf_xmalloc.
	(free_inferior_status): Delete.
	(discard_inferior_status): Free inf_status directly.
	(restore_inferior_status): Free inf_status directly.  Restore
	stop_registers by replacing buffer.
	(write_inferior_status_register): Use regbuf_write.

	* Makefile.in (infcmd.o): Add $(regbuf_h).

	* infcmd.c: Include "regbuf.h".
	(run_stack_dummy): Duplicate the stop_registers.


	* rs6000-tdep.c (rs6000_extract_struct_value_address): Change type
	of regbuf parameter to ``struct regbuf''.

	* Makefile.in (rs6000-tdep.o): Add $(regbuf_h).

	* rs6000-tdep.c: Include "regbuf.h".

	* infrun.c (normal_stop): Use regcache_save.

	* rs6000-tdep.c (rs6000_extract_return_value): Change regbuf type
	to ``struct regbuf''.  Use grub_around_regbuf_for_registers.

	* inferior.h (stop_registers): Change type to a ``struct regbuf''.
	* infrun.c (stop_registers): Update.

	* values.c (value_being_returned): Update.

	* infcmd.c (run_stack_dummy): Update.

	* gdbarch.sh (EXTRACT_STRUCT_VALUE_ADDRESS): Change type of regbuf
	to ``struct regbuf''.
	(EXTRACT_RETURN_VALUE): 

	* value.h (value_being_returned): Change regbuf parameter type to
	``struct retbuf''.

	* inferior.h (run_stack_dummy): Change retbuf parameter type to
	``struct regbuf''.
	
	* valops.c (hand_function_call): Make retbuf a ``struct regbuf''.

	* blockframe.c (generic_pop_dummy_frame): Use
	regcache_restore_no_writethrough and regbuf_xfree.

	* regcache.c (regcache_restore_no_writethrough): New function.
	(regcache_save): New function.
	* regcache.h (regcache_save): Declare.
	(regcache_restore_no_writethrough): Declare.

	* blockframe.c (generic_pop_dummy_frame): Use regbuf_xfree and
	regcache_restore_regbuf.
	(generic_get_saved_register): Use regbuf_read.


	* blockframe.c: Include "regbuf.h".
	(generic_push_dummy_frame): Use regbuf_xfree and regcache_save.

	* frame.h (generic_find_dummy_frame): Change return type to
	``struct regbuf''.

	* Makefile.in (blockframe.o): Add dependency on $(regbuf_h).

	* blockframe.c (struct dummy_frame): Replace registers with
	regbuf.
	(generic_find_dummy_frame): Change return type to `struct regbuf',
	return regbuf.
	(generic_read_register_dummy): Rewrite using
	regbuf_read_as_address.

	* regcache.c: Include "regbuf.h".
	(_initialize_regcache): Register regcache_regbuf for swapping.
	(regcache_regbuf): Define.
	(build_regcache): Rewrite using regbuf_xmalloc,
	grub_around_regbuf_for_registers and
	grub_around_regbuf_for_register_valid.
	
	* Makefile.in (regcache.o): Add $(regbuf_h).

	* defs.h (XCALLOC): Define.
	* regbuf.c, regbuf.c: New files.
	* Makefile.in (SFILES): Add regbuf.c.
	(regbuf_h): Define.
	(COMMON_OBS): Add regbuf.o.
	(regbuf.o): Specify dependencies.

2002-06-14  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename
	EXTRACT_RETURN_VALUE.
	(DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename
	EXTRACT_STRUCT_VALUE_ADDRESS.
	* gdbarch.h, gdbarch.c: Regenerate.
	
	* values.c (value_being_returned): Handle
	DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS.
	(EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE.

	* arm-linux-tdep.c (arm_linux_init_abi): Update. 
	* arm-tdep.c (arm_gdbarch_init): Update.
	* avr-tdep.c (avr_gdbarch_init): Update.
	* cris-tdep.c (cris_gdbarch_init): Update.
	* d10v-tdep.c (d10v_gdbarch_init): Update.
	* ia64-tdep.c (ia64_gdbarch_init): Update.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
	* rs6000-tdep.c (rs6000_gdbarch_init): Update.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* sh-tdep.c (sh_gdbarch_init): Update.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* sparc-tdep.c (sparc_gdbarch_init): Update.
	* ns32k-tdep.c (ns32k_gdbarch_init): Update.
	* v850-tdep.c (v850_gdbarch_init): Update.
	* vax-tdep.c (vax_gdbarch_init): Update.
	* x86-64-tdep.c (x86_64_gdbarch_init): Update.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Update.

	* config/arc/tm-arc.h: Update.
	* config/d30v/tm-d30v.h: Update.
	* config/fr30/tm-fr30.h: Update.
	* config/h8300/tm-h8300.h: Update.
	* config/h8500/tm-h8500.h: Update.
	* config/i386/tm-i386.h: Update.
	* config/i386/tm-ptx.h: Update.
	* config/i386/tm-symmetry.h: Update.
	* config/i960/tm-i960.h: Update.
	* config/m32r/tm-m32r.h: Update.
	* config/m68k/tm-delta68.h: Update.
	* config/m68k/tm-linux.h: Update.
	* config/m68k/tm-m68k.h: Update.
	* config/m88k/tm-m88k.h: Update.
	* config/mcore/tm-mcore.h: Update.
	* config/mips/tm-mips.h: Update.
	* config/mn10200/tm-mn10200.h: Update.
	* config/pa/tm-hppa.h: Update.
	* config/pa/tm-hppa64.h: Update.
	* config/sparc/tm-sp64.h: Update.
	* config/sparc/tm-sparc.h: Update.
	* config/sparc/tm-sparclet.h: Update.
	* config/z8k/tm-z8k.h: Update.

2002-06-14  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (i386_linux_tdep_h): Define.
	(i386_tdep_h, i387_tdep_h): Define.
	(i386-linux-nat.o): Add $(i386_linux_tdep_h),
	$(i386_tdep_h) and $(i387_tdep_h).
	* i386-linux-nat.c: Include "i386-linux-tdep.h".

2002-06-14  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h (START_INFERIOR_TRAPS_EXPECTED): Removed.
	Already covered by the default.

	* config/i386/tm-i386.h (TARGET_LONG_DOUBLE_FORMAT,
	TARGET_LONG_DOUBLE_BIT): Remove.  * i386-tdep.c
	(i386_gdbarch_init): Initialize long_double_format and long_double
	bit.

	* config/i386/i386sol2.mt (TDEPFILES): Add i386-sol2-tdep.o and
	i386bsd-tdep.o.  Remove solib.o, solib-svr4.o and solib-legacy.o.
	Move these to ...
	* config/i386/i386sol2.mh: ... here.
	* config/i386/tm-i386sol2.h (STAB_REG_TO_REGNUM): Remove define.
	(sigtramp_saved_pc, I386V4_SIGTRAMP_SAVED_PC): Don't #undef.
	(SIGCONTEXT_PC_OFFSET): Remove define.
	(IN_SIGTRAMP): Remove define.
	* i386-sol2-tdep.c: New file.
	
	* config/i386/i386nw.mt (TM_FILE): Change to tm-i386.h.
	* config/i386/tm-i386nw.h: Removed.

	* config/i386/tm-fbsd.h (STAB_REG_TO_REGNUM,
	USE_STRUCT_CONVENTION): Remove defines.
	(JB_ELEMENT_SIZE, JB_PC, GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	(IN_SIGTRAMP): Remove define.
	(i386bsd_in_sigtramp): Remove prototype.
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Turn into a
	function.  Update comment accordingly
	(SIGTRAMP_START, SIGTRAMP): Adjust definition accordingly.
	(FRAME_SAVED_PC): Remove define.
	(i386bsd_frame_saved_pc): Remove prototype.
	* config/i386/tm-nbsd.h (JB_ELEMENT_SIZE, JB_PC,
	GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	(IN_SIGTRAMP): Remove define.
	(i386bsd_in_sigtramp): Remove prototype.
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Turn into a
	function.  Update comment accordingly
	(SIGTRAMP_START, SIGTRAMP): Adjust definition accordingly.
	(FRAME_SAVED_PC): Remove define.
	(i386bsd_frame_saved_pc): Remove prototype.
	* config/i386/tm-nbsdaout.h (i386nbsd_aout_use_struct_convention):
	Remove prototype.
	(USE_STRUCT_CONVENTION): Remove prototype.
	* i386bsd-nat.c (i386bsd_sigcontext_pc_offset): Remove
	declaration.
	(_initialize_i386bsd_nat): Revise logic to determine some
	constants at compile time when compiling a native GDB.  Warn if
	things don't match up with what we expect.
	* i386bsd-tdep.c (i386bsd_sigtramp_start, i386bsd_sigtramp_end):
	Remove variables.
	(i386bsd_in_sigtramp): Rename tp i386bsd_pc_in_sigtramp.  Rewrite
	to use date stored in `struct gdbarch_tdep'.
	(i386bsd_sigcontext_offset): Remove varaible.
	(i386bsd_sigtramp_saved_pc): Make public.  Rewrite to use data
	stored in `struct gdbarch_tdep'.
	(i386bsd_frame_saved_pc): Make static.
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): New functions.
	(i386bsd_sc_pc_offset, i386nbsd_sc_pc_offset,
	i386fbsd_sigtramp_start, i386fbsd_sigtramp_end,
	i386fbsd4_sc_pc_offset): New variables.
	(i386bsd_init_abi, i386nbsd_init_abi, i386nbsdelf_init_abi,
	i386fbsdaout_init_abi, i386fbsd_init_abi, i386fbsd4_init_abi): New
	functions.
	(i386bsd_aout_osabi_sniffer, _initialize_i386bsd_tdep): New
	functions.
	* i386fbsd-nat.c (_initialize_i386fbsd_nat): Fix type in comment.
	Modify the value of i386fbsd_sigtramp_start and
	i386fbsd_sigtramp_end instead of i386bsd_sigtramp_start and
	i386fbsd_sigtramp_end.
	* i386nbsd-tdep.c: (i386nbsd_aout_use_struct_convention): Remove
	function.

	* config/i386/tm-linux.h (I386_LINUX_ORIG_EAX_REGNUM): Move
	define to i386-linux-tdep.h.
	(NUM_REGS, MAX_NUM_REGS, REGISTER_BYTES, REGISTER_NAME,
	REGISTER_BYTE, REGISTER_RAW_SIZE, STAB_REG_TO_REGNUM): Remove
	defines.
	(i386_linux_register_name, i386_linux_register_byte,
	i386_linux_register_raw_size): Remove prototypes.
	(i386_linux_svr4_fetch_link_map_offsets): Remove prototype.
	(SVR4_FETCH_LINK_MAP_OFFSETS): Remove define.
	(IN_SIGTRAMP, FRAME_CHAIN, FRAME_SAVED_PC, SAVED_PC_AFTER_CALL,
	TARGET_WRITE_PC): Remove defines.
	(i386_linux_in_sigtramp, i386_linux_frame_chain,
	i386_linux_frame_saved_pc, i386_linux_saved_pc_after_call,
	i386_linux_write_pc): Remove prototypes.
	(JB_ELEMENT_SIZE, JB_PC, GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	* i386-linux-tdep.h: New file.
	* i386-linux-nat.c: Include "i386-linux-tdep.h".
	* i386-linux-tdep.c: Include "i386-tdep.h" and
	"i386-linux-tdep.h".
	(i386_linux_register_name, i386_linux_register_byte,
	i386_linux_register_raw_size, i386_linux_in_sigtramp,
	i386_linux_write_pc, i386_linux_svr4_fetch_link_map_offsets):
	Make static.
	(i386_linux_init_abi): New function.
	(_initialize_i386_linux_tdep): New function.

	* config/i386/tm-i386.h (SAVED_PC_AFTER_CALL): Remove define.
	(i386_saved_pc_after_call): Remove prototype.
	(MAX_NUM_REGS): Increase to deal with Linux's orig_eax "register".
	(REGISTER_NAME, STAB_REG_TO_REGNUM, SDB_REG_TO_REGNUM,
	DWARF_REG_TO_REGNUM, DWARF2_REG_TO_REGNUM): Remove defines.
	(i386_register_name, i386_stab_reg_to_regnum,
	i386_dwarf_reg_to_regnum): Remove prototypes.
	(SIZEOF_GREGS, SIZEOF_FPU_REGS, SIZEOF_FPU_CTL_REGS,
	SIZEOF_SSE_REGS): Remove defines.
	(REGISTER_BYTES): Remove define.
	(REGISTER_BYTE, REGISTER_RAW_SIZE): Remove defines.
	(i386_register_byte, i386_register_raw_size): Remove prototypes.
	(FRAME_CHAIN, FRAME_SAVED_PC): Remove defines.
	(i386_frame_chain, i386_frame_saved_pc): Remove prototypes.
	* config/i386/tm-i386v4.h (FRAME_CHAIN_VALID): Remove define.
	(JB_ELEMENT_SIZE, JB_PC, JB_EBX, JB_ESI, JB_EDI, JB_EBP, JB_ESP,
	JB_EDX, GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	(I386V4_SIGTRAMP_SAVED_PC, IN_SIGTRAMP): Remove defines.
	(sigtramp_saved_pc): Remove define.
	(i386v4_sigtramp_saved_pc): Remove prototype.
	* config/i386/tm-go32.h (FRAME_CHAIN,
	FRAMELESS_FUNCTION_INVOCATION, FRAME_SAVED_PC): Remove defines.
	(i386go32_frame_saved_pc): Remove prototype.
	(JB_ELEMENT_SIZE, JB_PC, GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	* i386-tdep.h: Include "osabi.h".
	(enum i386_abi): Removed.
	(enum struct_return): New enum.
	(struct gdbarch_tdep): Remove abi member, add osabi, jb_pc_offset,
	struct_return, sigtramp_saved_pc, sigtramp_start, sigtramp_end and
	sc_pc_offset members.
	(i386_gdbarch_register_os_abi): Remove prototype.
	(I386_NUM_GREGS, I386_NUM_FREGS, I386_NUM_XREGS,
	I386_SSE_NUM_REGS): New defines.
	(I386_SIZEOF_GREGS, I386_SIZEOF_FREGS, I386_SIZEOF_XREGS,
	I386_SSE_SIZEOF_REGS): New defines.
	(i386_register_name, i386_register_byte, i386_register_raw_size):
	New prototypes.
	(i386_elf_init_abi, i386_svr4_init_abi): New prototypes.
	(i386bsd_sigtramp_saved_pc): New prototype.
	* i386-tdep.c: Don't include "elf-bfd.h".
	(i386_stab_reg_to_regnum, i386_dwarf_reg_to_regnum,
	i386_frame_chain, i386_saved_pc_after_call): Make static.
	(i386_frame_saved_pc): Rewrite to call architecture dependent
	function to deal with signal handlers.  Make static.
	(i386go32_frame_saved_pc): Removed.
	[GET_LONGJMP_TARGET] (JB_PC, JB_ELEMENT_SIZE, get_longjmp_target):
	Removed.
	(i386_get_longjmp_target): New function.
	(default_struct_convention, pcc_struct_convention,
	reg_struct_convention, valid_conventions, struct_convention): New
	variables.
	(i386_use_struct_convention): New function.
	(i386v4_sigtramp_saved_pc): Renamed to
	i386_svr4_sigtramp_saved_pc.  Made static.  Moved.
	(i386_pc_in_sigtramp): New function.
	(i386_abi_names): Removed.
	(ABI_TAG_OS_GNU_LINUX, ABI_TAG_OS_GNU_HURD,
	ABI_TAG_OS_GNU_SOLARIS, ABI_TAG_OS_FREEBSD, ABI_TAG_OS_NETBSD):
	Removed.
	(process_note_sections, i386_elf_abi_from_note, i386_elf_abi,
	i386_gdbarch_register_os_abi): Removed.
	(struct i386_abi_handler): Removed.
	(i386_abi_handler_list): Removed.
	(i386_svr4_pc_in_sigtramp, i386_go32_pc_in_sigtramp): New
	functions.
	(i386_elf_init_abi, i386_svr4_init_abi, i386_go32_init_abi,
	i386_nw_init_abi): New functions.
	(i386_gdbarch_init): Rewritten to use generic OS ABI framework.
	Use set_gdbarch_xxx() calls instead of relying on macros for a
	number of calls.
	(i386_coff_osabi_sniffer, i386_nlm_osabi_sniffer): New functions.
	(_initialize_i386_tdep): Add new 'struct-convcention' command.
	Register the various architecture variants defined in this file.

2002-06-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.h (TYPE_FLAG_VARARGS): Update comment.
	(struct main_type): Remove arg_types member.  Update comments for
	struct field.
	(TYPE_ARG_TYPES): Remove.
	(TYPE_FN_FIELD_ARGS): Update.
	(smash_to_method_type): Update prototype.

	* c-typeprint.c (cp_type_print_method_args): Take method type
	instead of argument list.  Use new argument layout.  Simplify.
	(c_type_print_args): Use new argument layout.  Simplify.
	(c_type_print_base): Update call to cp_type_print_method_args.
	* dwarf2read.c (dwarf2_add_member_fn): Remove unneeded type
	argument; use die->type instead.  Update call to
	smash_to_method_type.
	(read_structure_scope): Update call to dwarf2_add_member_fn.
	* gdbtypes.c (allocate_stub_method): Update comment.
	(smash_to_method_type): Take new NARGS and VARARGS arguments.
	Use new argument layout.
	(check_stub_method): Use new argument layout.  Don't count
	void as an argument.
	(print_arg_types): Update comments.  Use new argument layout.
	(recursive_dump_type): Don't print arg_types member.
	* hpread.c (hpread_read_struct_type): Use new argument layout.
	(fixup_class_method_type): Likewise.
	(hpread_type_lookup): Likewise.
	* stabsread.c (read_type): Update calls to read_args and
	smash_to_method_type.
	(read_args): Use new argument layout.  Simplify.
	* valops.c (typecmp): Use new argument layout.  Update parameters
	and comments.  Simplify.
	(hand_function_call): Use new argument layout.
	(search_struct_method): Update call to typecmp.
	(find_overload_match): Use new argument layout.

2002-06-13  Daniel Jacobowitz  <drow@mvista.com>

	* NEWS: Mention multithreaded debug support for gdbserver.

2002-06-13  Daniel Jacobowitz  <drow@mvista.com>

	* MAINTAINERS: Mention NEWS.

2002-06-13  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/regcache.c: Add comment.

2002-06-13  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (PROC_SYMBOL): Add warning comment.
	(struct mips_objfile_private, compare_pdr_entries): New.
	(non_heuristic_proc_desc): Read the ".pdr" section if it
	is present.

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

	* arm-tdep.c (arm_push_arguments): Rewrite using a two-pass loop.
	(arm_debug): New static variable.
	(_initialize_arm_tdep): Add ``set debug arm'' command.

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

	* Makefile.in (sim_arm_h): Define.
	(arm-tdep.o): Add $(sim_arm_h) and $(gdb_assert_h).
	* arm-tdep.c: Include "gdb/sim-arm.h" and "gdb_assert.h".
	(arm_register_sim_regno): New function, map an internal REGNUM
	onto a simulator register number.
	(arm_gdbarch_init): Set register_sim_regno.

2002-06-09  Aldy Hernandez  <aldyh@redhat.com>

	* MAINTAINERS: Add self.

2002-06-11  Jim Blandy  <jimb@redhat.com>

	* source.c (source_info): Mention whether the symtab has
	information about preprocessor macros.

	Call the command `info macro', not `show macro'.
	* macrocmd.c (info_macro_command): Renamed from `show_macro_command'.
	Fix error message.
	(_initialize_macrocmd): Register `info_macro_command' in
	`infolist', not `showlist'.

2002-06-11  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (MIPS_FPU_TYPE, FP_REGISTER_DOUBLE, MIPS_EABI)
	(MIPS_LAST_FP_ARG_REGNUM, MIPS_LAST_ARG_REGNUM)
	(MIPS_DEFAULT_SAVED_REGSIZE, MIPS_REGS_HAVE_HOME_P)
	(MIPS_DEFAULT_STACK_ARGSIZE, GDB_TARGET_IS_MIPS64)
	(MIPS_DEFAULT_MASK_ADDRESS_P): Remove obsolete definitions.  Define
	unconditionally.
	(set_mipsfpu_single_command, set_mipsfpu_double_command)
	(set_mipsfpu_none_command): Remove if (GDB_MULTI_ARCH).
	(_initialize_mips_tdep): Remove dead code.
	* config/mips/tm-irix5.h (MIPS_LAST_ARG_REGNUM)
	(MIPS_DEFAULT_STACK_ARGSIZE, MIPS_REGS_HAVE_HOME_P): Remove.
	* config/mips/tm-irix6.h (MIPS_LAST_ARG_REGNUM)
	(MIPS_DEFAULT_STACK_ARGSIZE, MIPS_REGS_HAVE_HOME_P): Remove.
	* config/mips/tm-mips.h (MIPS_EABI, MIPS_LAST_ARG_REGNUM,
	MIPS_LAST_FP_ARG_REGNUM): Remove.

2002-06-11  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/thread-db.c: New file.
	* gdbserver/proc-service.c: New file.
	* gdbserver/acinclude.m4: New file.
	* gdbserver/Makefile.in: Add GDBSERVER_LIBS, gdb_proc_service_h,
	proc-service.o, and thread-db.o.
	(linux-low.o): Add USE_THREAD_DB.
	* gdbserver/acconfig.h: Add HAVE_PRGREGSET_T, HAVE_PRFPREGSET_T,
	HAVE_LWPID_T, HAVE_PSADDR_T, and PRFPREGSET_T_BROKEN.
	* gdbserver/aclocal.m4: Regenerated.
	* gdbserver/config.in: Regenerated.
	* gdbserver/configure: Regenerated.
	* gdbserver/configure.in: Check for proc_service.h, sys/procfs.h,
	thread_db.h, and linux/elf.h headrs.
	Check for lwpid_t, psaddr_t, prgregset_t, prfpregset_t, and
	PRFPREGSET_T_BROKEN.  Introduce srv_thread_depfiles and USE_THREAD_DB.
	Check for -lthread_db and thread support.
	* gdbserver/configure.srv: Enable thread_db support for ARM, i386, MIPS,
	PowerPC, and SuperH.
	* gdbserver/i387-fp.c: Constify arguments.
	* gdbserver/i387-fp.h: Likewise.
	* gdbserver/inferiors.c: (struct thread_info): Renamed from
	`struct inferior_info'.  Remove PID member.  Use generic inferior
	list header.  All uses updated.
	(inferiors, signal_pid): Removed.
	(all_threads): New variable.
	(get_thread): Define.
	(add_inferior_to_list): New function.
	(for_each_inferior): New function.
	(change_inferior_id): New function.
	(add_inferior): Removed.
	(remove_inferior): New function.
	(add_thread): New function.
	(free_one_thread): New function.
	(remove_thread): New function.
	(clear_inferiors): Use for_each_inferior and free_one_thread.
	(find_inferior): New function.
	(find_inferior_id): New function.
	(inferior_target_data): Update argument type.
	(set_inferior_target_data): Likewise.
	(inferior_regcache_data): Likewise.
	(set_inferior_regcache_data): Likewise.
	* gdbserver/linux-low.c (linux_bp_reinsert): Remove.
	(all_processes, stopping_threads, using_thrads)
	(struct pending_signals, debug_threads, pid_of): New.
	(inferior_pid): Replace with macro.
	(struct inferior_linux_data): Remove.
	(get_stop_pc, add_process): New functions.
	(linux_create_inferior): Restore SIGRTMIN+1 before calling exec.
	Use add_process and add_thread.
	(linux_attach_lwp): New function, based on old linux_attach.  Use
	add_process and add_thread.  Set stop_expected for new threads.
	(linux_attach): New function.
	(linux_kill_one_process): New function.
	(linux_kill): Kill all LWPs.
	(linux_thread_alive): Use find_inferior_id.
	(check_removed_breakpoints, status_pending_p): New functions.
	(linux_wait_for_process): Renamed from linux_wait_for_one_inferior.
	Update.  Use WNOHANG.  Wait for cloned processes also.  Update process
	struct for the found process.
	(linux_wait_for_event): New function.
	(linux_wait): Use it.  Support LWPs.
	(send_sigstop, wait_for_sigstop, stop_all_processes)
	(linux_resume_one_process, linux_continue_one_process): New functions.
	(linux_resume): Support LWPs.
	(REGISTER_RAW_SIZE): Remove.
	(fetch_register): Use register_size instead.  Call supply_register.
	(usr_store_inferior_registers): Likewise.  Call collect_register.
	Fix recursive case.
	(regsets_fetch_inferior_registers): Improve error message.
	(regsets_store_inferior_registers): Add debugging.
	(linux_look_up_symbols): Call thread_db_init if USE_THREAD_DB.
	(unstopped_p, linux_signal_pid): New functions.
	(linux_target_ops): Add linux_signal_pid.
	(linux_init_signals): New function.
	(initialize_low): Call it.  Initialize using_threads.
	* gdbserver/regcache.c (inferior_regcache_data): Add valid
	flag.
	(get_regcache): Fetch registers lazily.  Add fetch argument
	and update all callers.
	(regcache_invalidate_one, regcache_invalidate): New
	functions.
	(new_register_cache): Renamed from create_register_cache.
	Return the new regcache.
	(free_register_cache): Change argument to a void *.
	(registers_to_string, registers_from_string): Call get_regcache
	with fetch flag set.
	(register_data): Make static.  Pass fetch flag to get_regcache.
	(supply_register): Call get_regcache with fetch flag clear.
	(collect_register): Call get_regcache with fetch flag set.
	(collect_register_as_string): New function.
	* gdbserver/regcache.h: Update.
	* gdbserver/remote-utils.c (putpkt): Flush after debug output and use
	stderr.
	Handle input interrupts while waiting for an ACK.
	(input_interrupt): Use signal_pid method.
	(getpkt): Flush after debug output and use stderr.
	(outreg): Use collect_register_as_string.
	(new_thread_notify, dead_thread_notify): New functions.
	(prepare_resume_reply): Check using_threads.  Set thread_from_wait
	and general_thread.
	(look_up_one_symbol): Flush after debug output.
	* gdbserver/server.c (step_thread, server_waiting): New variables.
	(start_inferior): Don't use signal_pid.  Update call to mywait.
	(attach_inferior): Update call to mywait.
	(handle_query): Handle qfThreadInfo and qsThreadInfo.
	(main): Don't fetch/store registers explicitly.  Use
	set_desired_inferior.  Support proposed ``Hs'' packet.  Update
	calls to mywait.
	* gdbserver/server.h: Update.
	(struct inferior_list, struct_inferior_list_entry): New.
	* gdbserver/target.c (set_desired_inferior): New.
	(write_inferior_memory): Constify.
	(mywait): New function.
	* gdbserver/target.h: Update.
	(struct target_ops): New signal_pid method.
	(mywait): Removed macro, added prototype.

	* gdbserver/linux-low.h (regset_func): Removed.
	(regset_fill_func, regset_store_func): New.
	(enum regset_type): New.
	(struct regset_info): Add type field.  Use new operation types.
	(struct linux_target_ops): stop_pc renamed to get_pc.
	Add decr_pc_after_break and breakpoint_at.
	(get_process, get_thread_proess, get_process_thread)
	(strut process_info, all_processes, linux_attach_lwp)
	(thread_db_init): New.

	* gdbserver/linux-arm-low.c (arm_get_pc, arm_set_pc,
	arm_breakpoint, arm_breakpoint_len, arm_breakpoint_at): New.
	(the_low_target): Add new members.
	* gdbserver/linux-i386-low.c (i386_store_gregset, i386_store_fpregset)
	(i386_store_fpxregset): Constify.
	(target_regsets): Add new kind identifier.
	(i386_get_pc): Renamed from i386_stop_pc.  Simplify.
	(i386_set_pc): Add debugging.
	(i386_breakpoint_at): New function.
	(the_low_target): Add new members.
	* gdbserver/linux-mips-low.c (mips_get_pc, mips_set_pc)
	(mips_breakpoint, mips_breakpoint_len, mips_reinsert_addr)
	(mips_breakpoint_at): New.
	(the_low_target): Add new members.
	* gdbserver/linux-ppc-low.c (ppc_get_pc, ppc_set_pc)
	(ppc_breakpoint, ppc_breakpoint_len, ppc_breakpoint_at): New.
	(the_low_target): Add new members.
	* gdbserver/linux-sh-low.c (sh_get_pc, sh_set_pc)
	(sh_breakpoint, sh_breakpoint_len, sh_breakpoint_at): New.
	(the_low_target): Add new members.
	* gdbserver/linux-x86-64-low.c (target_regsets): Add new kind
	identifier.

2002-06-11  Michal Ludvig  <mludvig@suse.cz>

	* dwarf2cfi.c (unwind_tmp_obstack_init): New.
	(unwind_tmp_obstack_free, parse_frame_info)
	(update_context, cfi_read_fp, cfi_write_fp)
	(cfi_frame_chain, cfi_init_extra_frame_info)
	(cfi_virtual_frame_pointer): Use the above function.
	* dwarf2cfi.c: Reindented (using 'indent dwarf2cfi.c').

2002-06-11  Corinna Vinschen  <vinschen@redhat.com>

	* v850-tdep.c (v850_type_is_scalar): New function.
	(v850_use_struct_convention): Match current gcc implementation
	as close as possible.
	(v850_push_arguments): Fix stack_offset handling.  Don't write
	struct_addr into register.  This is done by v850_store_struct_return.
	(v850_extract_return_value): Care for structs.
	(v850_store_return_value): Ditto.
	(v850_store_struct_return): Actually write address.

2002-06-11  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_skip_prologue): Fix to work on functions
	without debug information too.

2002-06-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (PRINT_FLOAT_INFO): Add frame and ui_file parameters.
	Make multi-arch pure.
	* gdbarch.h, gdbarch.c: Re-generate.
	* arm-tdep.c (arm_print_float_info): Update.
	* arch-utils.h (default_print_float_info): Update.
	* arch-utils.c (default_print_float_info): Update.
	* infcmd.c (float_info): Update call.

2002-06-10  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (init.c): Move the call to _initialize_gdbtypes to
	the front of the initialize list.

2002-06-10  Andrew Cagney  <ac131313@redhat.com>

	* infrun.c (struct inferior_status): Replace fields
	selected_frame_address and selected_level with field
	selected_frame_id.
	(save_inferior_status): Update.  Use get_frame_id.
	(struct restore_selected_frame_args): Delete.
	(restore_selected_frame): Update.  Use frame_find_by_id.
	(restore_inferior_status): Update.

	* breakpoint.h (struct breakpoint): Change type of
	watchpoint_frame to frame_id.
	* breakpoint.c (insert_breakpoints): Use frame_find_by_id.  Remove
	call to get_current_frame.
	(do_enable_breakpoint): Use frame_find_by_id.  Remove call to
	get_current_frame.
	(watchpoint_check): Use frame_find_by_id.

	* frame.h (record_selected_frame): Delete declaration.
	* stack.c (record_selected_frame): Delete function.
	
	* frame.h (struct frame_id): Define.
	(get_frame_id): Declare.
	(frame_find_by_id): Declare.
	* frame.c (frame_find_by_id): New function.
	(get_frame_id): New function.

2002-06-10  Andrey Volkov <avolkov@transas.com>

	* ser-e7kpc.c: Fix duplicated define and call of 
        _initialize_ser_e7000pc
	    
2002-06-09  Daniel Jacobowitz  <drow@mvista.com>

	* signals/signals.c (target_signal_from_host): Fix #ifdef
	SIGRTMIN case.
	(do_target_signal_to_host): Likewise.

2002-06-09  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (mips_find_abi_section): New function.
	(mips_gdbarch_init): Call it.

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

	* solib-svr4.c (init_fetch_link_map_offsets): Simply return
	legacy_fetch_link_map_offsets.  Adjust comment to reflect reality
	after Andrew's 2002-06-08 gdbarch change.

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

	* i386-linux-nat.c (suppy_gregset): Don't supply
	I386_LINUX_ORIG_EAX_REGNUM if there isn't room for it in GDB's
	register cache.
	(fill_gregset): Don't fetch it under the same circumstances.

2002-06-09  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (callback_h): Define.
	(remote_sim_h): Update path to remote-sim.h.
	(remote-rdp.o): Add $(callback_h).
	(remote-sim.o): Use $(callback_h).
	* remote-sim.c: Include "gdb/callback.h" and "gdb/remote-sim.h".
	* remote-rdp.c: Include "gdb/callback.h".

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

	* osabi.h (gdb_osabi): Add GDB_OSABI_GO32 and GDB_OSABI_NETWARE.
	* osabi.c (gdb_osabi_names): Add "DJGPP" and "NetWare".

2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* sparcl-tdep.c: Use __CYGWIN__ instead of __CYGWIN32__.
	* rdi-share/serpardr.c: Ditto.
	* rdi-share/unixcomm.c: Ditto.
	* rdi-share/serdrv.c: Ditto.
	* rdi-share/hostchan.h: Ditto.
	* rdi-share/hostchan.c: Ditto.
	* rdi-share/host.h: Ditto.
	* rdi-share/devsw.c: Ditto.

	* objfiles.h: Change type of obj_private to void pointer.
	* pa64solib.c: Update copyright.  Don't include "assert.h", use
	strcmp instead of STREQ, use LONGEST, do not use PTR
	* somsolib.c: Ditto.

	* config/djgpp/fnchange.lst: Fix problems with bfd/elf32-i386.c,
	bfd/elf32-i386qnx.c, bfd/elf32-sh.c, bfd/elf32-sh64-nbsd.c,
	bfd/elf64-sh64-nbsd.c bfd/elf64-sh64.c.

2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* frame.c (GET_SAVED_REGISTER): Delete macro definition.
	(default_get_saved_register): Delete function.
	* gdbarch.sh (GET_SAVED_REGISTER): Set default to
	generic_unwind_get_saved_register.
	* gdbarch.h, gdbarch.c: Re-generate.
	
2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (FRAME_CHAIN_VALID): Set default to
	generic_func_frame_chain_valid.
	* gdbarch.h, gdbarch.c: Re-generate.
	* blockframe.c (generic_func_frame_chain_valid): Only check
	PC_IN_CALL_DUMMY when generic dummy frames.  Don't worry about
	passing FP to PC_IN_CALL_DUMMY.
	Fix PR gdb/360.

2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (struct gdbarch_data): Add field init_p.
	(register_gdbarch_data): Initialize init_p.
	(gdbarch_data): Initialize data pointer using the init function.
	(init_gdbarch_data): Delete function.
	(gdbarch_update_p): Update.
	(initialize_non_multiarch): Update.
	(struct gdbarch): Add field initialized_p.
	* gdbarch.h, gdbarch.c: Re-generate.

2002-06-07  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-linux-nat.c (x86_64_fxsave_offset): New.
	(supply_fpregset, fill_fpregset): Don't call i387_*_fxsave,
	better do the things actually here.
	* x86-64-tdep.c (x86_64_register_name2nr): New.
	(x86_64_register_name): Renamed to x86_64_register_nr2name.
	(x86_64_gdbarch_init): Respect the above change.
	* x86-64-tdep.h (x86_64_register_name2nr)
	(x86_64_register_nr2name): Add prototypes.
	* config/i386/x86-64linux.mt (TDEPFILES): Remove i387-tdep.o.

2002-06-06  Michael Snyder  <msnyder@redhat.com>

	* d10v-tdep.c (d10v_push_arguments): Handle struct_return.
	Delete extra braces and re-indent.
	(d10v_store_return_value): Char return values
	must be shifted over by one byte in R0.
	(d10v_extract_return_value): Delete extra braces, re-indent.

2002-06-06  Elena Zannoni  <ezannoni@redhat.com>

        * d10v-tdep.c (d10v_read_sp, d10v_read_fp): Add prototype.
        (d10v_register_virtual_type): Make $fp and $sp be pointer to data.
        (d10v_integer_to_address): Rewrite.
        (d10v_frame_init_saved_regs): When reading fp and sp registers use
        the d10v specific functions which take care of converting to the
        correct space.

2002-06-06  Elena Zannoni  <ezannoni@redhat.com>

	* config/djgpp/fnchange.lst: Add testsuite files altivec-abi.c,
	altivec-abi.exp, altivec-regs.c, altivec-regs.exp.

2002-06-02  Andrew Cagney  <ac131313@redhat.com>

	* config/alpha/nm-linux.h: Add "config/" prefix to tm, nm and xm
	includes.
	* config/tm-linux.h: Ditto.
	* config/alpha/tm-alphalinux.h: Ditto.
	* config/arm/nm-linux.h, config/arm/tm-linux.h: Ditto.
	* config/arm/xm-nbsd.h, config/i386/nm-gnu.h: Ditto.
	* config/i386/nm-i386lynx.h, config/i386/nm-i386sol2.h: Ditto.
	* config/i386/nm-i386v4.h, config/i386/nm-i386v42mp.h: Ditto.
	* config/i386/nm-linux.h, config/i386/nm-m3.h: Ditto.
	* config/i386/nm-ptx4.h, config/i386/nm-x86-64.h: Ditto.
	* config/i386/tm-i386gnu.h, config/i386/tm-i386lynx.h: Ditto.
	* config/i386/tm-i386m3.h, config/i386/tm-i386sco5.h: Ditto.
	* config/i386/tm-i386v4.h, config/i386/tm-linux.h: Ditto.
	* config/i386/tm-ptx4.h, config/i386/tm-vxworks.h: Ditto.
	* config/i386/xm-i386v4.h, config/i386/xm-nbsd.h: Ditto.
	* config/i386/xm-ptx.h, config/i386/xm-ptx4.h: Ditto.
	* config/i960/tm-vx960.h, config/ia64/nm-aix.h: Ditto.
	* config/ia64/nm-linux.h, config/ia64/tm-aix.h: Ditto.
	* config/ia64/tm-linux.h, config/ia64/xm-aix.h: Ditto.
	* config/m68k/nm-linux.h, config/m68k/nm-m68klynx.h: Ditto.
	* config/m68k/nm-sysv4.h, config/m68k/tm-linux.h: Ditto.
	* config/m68k/tm-m68klynx.h, config/m68k/tm-m68kv4.h: Ditto.
	* config/m68k/tm-sun2os4.h, config/m68k/tm-sun3os4.h: Ditto.
	* config/m68k/tm-vx68.h, config/m68k/xm-m68kv4.h: Ditto.
	* config/m68k/xm-nbsd.h, config/m88k/nm-delta88v4.h: Ditto.
	* config/m88k/tm-delta88v4.h, config/m88k/xm-delta88v4.h: Ditto.
	* config/mips/nm-irix5.h, config/mips/nm-linux.h: Ditto.
	* config/mips/tm-linux.h, config/mips/tm-mips64.h: Ditto.
	* config/mips/tm-mipsm3.h, config/mips/tm-mipsv4.h: Ditto.
	* config/mips/tm-vxmips.h, config/mips/xm-irix5.h: Ditto.
	* config/mips/xm-mipsv4.h, config/ns32k/xm-nbsd.h: Ditto.
	* config/pa/nm-hppao.h, config/powerpc/nm-linux.h: Ditto.
	* config/powerpc/tm-linux.h, config/powerpc/tm-vxworks.h: Ditto.
	* config/powerpc/xm-aix.h, config/rs6000/nm-rs6000ly.h: Ditto.
	* config/rs6000/tm-rs6000ly.h, config/rs6000/xm-aix4.h: Ditto.
	* config/sh/tm-linux.h, config/sparc/nm-linux.h: Ditto.
	* config/sparc/nm-sparclynx.h, config/sparc/nm-sun4sol2.h: Ditto.
	* config/sparc/tm-linux.h, config/sparc/tm-sp64linux.h: Ditto.
	* config/sparc/tm-sp64sim.h, config/sparc/tm-sparclynx.h: Ditto.
	* config/sparc/tm-sun4os4.h, config/sparc/tm-sun4sol2.h: Ditto.
	* config/sparc/tm-vxsparc.h, config/sparc/xm-sun4sol2.h: Ditto.

2002-05-04  Aidan Skinner <aidan@velvet.net>

	* ada-exp.tab.c: New file
	* ada-exp.y: New file
	* ada-lang.c: New file
	* ada-lang.h: New file
	* ada-lex.c: New file
	* ada-lex.l: New file
	* ada-tasks.c: New file
	* ada-typeprint.c: New file
	* ada-valprint.c: New file
	
2002-06-02  Jason Thorpe  <thorpej@wasabisystems.com>

	* ppcnbsd-tdep.c (ppcnbsd_init_abi): Don't set
	use_struct_convention to ppc_sysv_abi_broken_use_struct_convention.

2002-06-02  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/rs6000/aix4.mt (TDEPFILES): Use ppc-sysv-tdep.o
	insetead of ppc-linux-tdep.o.
	* config/rs6000/rs6000.mt (TDEPFILES): Likewise.
	* config/rs6000/rs6000lynx.mt (TDEPFILES): Likewise.

2002-06-02  Andrew Cagney  <ac131313@redhat.com>

	2002-05-07 Christian Groessler <chris@groessler.org>
        * z8k-tdep.c (z8k_print_register_hook): Fix display of 32 and 64
	bit register contents for little endian hosts.

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

	* MAINTAINERS: Mention that any `HP/UX reader' can be changed by
	any maintainer.

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

	* gdbarch.h: Regenerate.

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

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

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

	* stack.c (frame_info): Use frame_register_unwind instead of
	saved_regs.  Mention when the SP is on the stack or in a register.

	* frame.h (frame_register_unwind_ftype): Define.  Document.
	(struct frame_info): Add field register_unwind and
	register_unwind_cache.
	(frame_register_unwind): Declare.
	(generic_unwind_get_saved_register): Declare.

	* frame.c (frame_register_unwind): New function.
	(generic_unwind_get_saved_register): New function.

	* blockframe.c (generic_call_dummy_register_unwind): New function.
	(frame_saved_regs_register_unwind): New function.
	(set_unwind_by_pc): New function.
	(create_new_frame): New function.
	(get_prev_frame): New function.

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

	* a29k-share/: Delete directory.
	* remote-vx29k.c: Delete file.

2002-05-30  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/djgpp/fnchange.lst: Add ns32knbsd-nat.c, ns32knbsd-tdep.c,
	ppcnbsd-nat.c, ppcnbsd-tdep.c, sparcnbsd-nat.c, and sparcnbsd-tdep.c.

2002-05-30  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add sparc64nbsd-nat.c,
	sparcnbsd-nat.c, and sparcnbsd-tdep.c.
	(sparc64nbsd-nat.o)
	(sparcnbsd-nat.o)
	(sparcnbsd-tdep.o): New dependency lists.
	* NEWS: Note new UltraSPARC NetBSD native configuration.
	* configure.host (sparc64-*-netbsd*): New host.
	* configure.tgt (sparc-*-netbsdelf*)
	(sparc-*-netbsd*): Set gdb_target to nbsd.
	(sparc64-*-netbsd*): New target.
	* sparc64nbsd-nat.c: New file.
	* sparcnbsd-nat.c: New file.
	* sparcnbsd-tdep.c: New file.
	* sparcnbsd-tdep.h: New file.
	* config/sparc/nbsd.mt: New file.
	* config/sparc/nbsd64.mh: New file.
	* config/sparc/nbsd64.mt: New file.
	* config/sparc/nbsdaout.mh (NATDEPFILES): Remove corelow.o,
	sparc-nat.o, and solib.o.  Add sparcnbsd-nat.o.
	(HOST_IPC): Remove.
	* config/sparc/nbsdaout.mt: Remove.
	* config/sparc/nbsdelf.mh (NATDEPFILES): Remove corelow.o,
	sparc-nat.o, and solib.o.  Add sparcnbsd-nat.o.
	(HOST_IPC): Remove.
	* config/sparc/nbsdelf.mt: Remove.
	* config/sparc/nm-nbsd.h: Update copyright years.  Remove all
	sparc-nat.c compatiblity defines.
	* config/sparc/tm-nbsd.h: Update copyright years.  Include solib.h.
	(GDB_MULTI_ARCH): Set to GDB_MULTI_ARCH_PARTIAL.
	* config/sparc/tm-nbsd64.h: New file.
	* config/sparc/tm-nbsdaout.h: Remove.
	* config/sparc/xm-nbsd.h: Remove.

2002-05-30  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (sparc-tdep.o): Add osabi.h to dependency list.
	* sparc-tdep.c: Include osabi.h.
	(gdbarch_tdep): Add osabi member.
	(_initialize_sparc_tdep): Use gdbarch_register.
	(sparc_gdbarch_init): Use generic OS ABI framework.
	(sparc_dump_tdep): New function.

2002-05-30  Kevin Buettner  <kevinb@redhat.com>

	* corefile.c (do_captured_read_memory_integer): Return non-zero
	result.
	(safe_read_memory_integer): Copy result of memory read when
	status is non-zero.  Also, add comments.

2002-05-20  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ppc_tdep_h): Define.
	(ppc-linux-nat.o)
	(ppc-linux-tdep.o)
	(rs6000-tdep.o): Use $(ppc_tdep_h).
	(ppc-sysv-tdep.o)
	(ppcnbsd-nat.o)
	(ppcnbsd-tdep.o): New dependency lists.
	* ppc-tdep.h: Use generic OS ABI framework.
	* ppc-linux-tdep.c (_initialize_ppc_linux_tdep)
	(ppc_linux_init_abi): New functions.
	(ppc_sysv_abi_broken_use_struct_convention)
	(ppc_sysv_abi_use_struct_convention)
	(ppc_sysv_abi_push_arguments): Move to...
	* ppc-sysv-tdep.c: ...here.
	* ppcnbsd-nat.c: Don't include gdbcore.h and regcache.h.
	* rs6000-tdep.c (process_note_abi_tag_sections)
	(get_elfosabi): Remove.
	(rs6000_gdbarch_init): Use generic OS ABI framework.
	(rs6000_dump_tdep): New function.
	(_initialize_rs6000_tdep): Use gdbarch_register.
	* config/powerpc/linux.mt (TDEPFILES): Add ppc-sysv-tdep.o.
	* config/powerpc/nbsd.mh (NATDEPFILES): Remove solib-legacy.o.
	* config/powerpc/aix.mt (TDEPFILES): Use ppc-sysv-tdep.o instead
	of ppc-linux-tdep.o.
	* config/powerpc/nbsd.mt (TDEPFILES): Likewise.
	* config/powerpc/ppc-eabi.mt (TDEPFILES): Likewise.
	* config/powerpc/ppc-sim.mt (TDEPFILES): Likewise.
	* config/powerpc/ppcle-eabi.mt (TDEPFILES): Likewise.
	* config/powerpc/ppcle-sim.mt (TDEPFILES): Likewise.
	* config/powerpc/vxworks.mt (TDEPFILES): Likewise.

2002-05-29  Jim Blandy  <jimb@redhat.com>

	* macroscope.c (default_macro_scope): Put `void' in empty argument
	list.

2002-05-29  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (arch-utils.o): Add $(sim_regno_h).
	* arch-utils.c: Include "sim-regno.h".
	* gdbarch.sh: Don't include "sim-regno.h".
	* gdbarch.h, gdbarch.c: Regenerate.
	* sim-regno.h (legacy_register_sim_regno): Move declaration from
	here.
	* arch-utils.h (legacy_register_sim_regno): To here.
	* remote-sim.c (legacy_register_sim_regno): Move function from
	here.
	* arch-utils.c (legacy_register_sim_regno): To here.

2002-05-28  Andrew Cagney  <ac131313@redhat.com>

	* sim-regno.h: New file.
	* Makefile.in (sim_regno_h): Define.
	(d10v-tdep.o, remote-sim.o): Add dependency on $(sim_regno_h).
	* remote-sim.c: Include "sim-regno.h" and "gdb_assert.h".
	(legacy_register_sim_regno): New function.
	(one2one_register_sim_regno): New function.
	(gdbsim_fetch_register): Rewrite.
	(gdbsim_store_register): Only store a register when
	REGISTER_SIM_REGNO is valid.
	* d10v-tdep.c: Include "sim-regno.h".
	(d10v_ts2_register_sim_regno): Add legacy_regiter_sim_regno check.
	(d10v_ts3_register_sim_regno): Ditto.
	* gdbarch.sh: Include "sim-regno.h".
	(REGISTER_SIM_REGNO): Set default to legacy_register_sim_regno.
	* gdbarch.h, gdbarch.c: Regenerate.
	* arch-utils.h (default_register_sim_regno): Delete declaration.
	* arch-utils.c (default_register_sim_regno): Delete function.

2002-05-28  Jason Thorpe  <thorpej@wasabisystems.com>

	* ppcnbsd-nat.c: Rewrite.
	* ppcnbsd-tdep.c: New file.
	* ppcnbsd-tdep.h: New file.
	* config/powerpc/nbsd.mh (NATDEPFILES): Remove corelow.o,
	solib.o, and solib-svr4.o.
	* config/powerpc/nbsd.mt (TDEPFILES): Add ppcnbsd-tdep.o,
	nbsd-tdep.o, and corelow.o.

2002-05-28  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (--enable-gdb-build-warnings): Rewrite script to use
	`tr' and `sed'.  Mention that `broken' targets are not expected to
	build.

2002-05-27  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_skip_prologue): Remove obsolete note.
	Let PC point right after the prologue before looking up symbols.
	
2002-05-27  Martin M. Hunt  <hunt@redhat.com>

	* i386-tdep.c (i386_register_virtual_type): Return 
	builtin_type_vec128i for SSE registers.

	* gdbtypes.h (builtin_type_vec128i): Declare.

	* gdbtypes.c (build_builtin_type_vec128i): New function.
	(builtin_type_v2_double, builtin_type_v4_int64): New types.
	(builtin_type_vec128i): New type for SSE2 128-bit registers.
	(build_gdbtypes): Initialize new builtin vector types.
	(_initialize_gdbtypes): Register new vector types with gdbarch.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* MAINTAINERS: ns32k is not longer an obsolete candidate,
	since it has been multi-arch'd.
	* NEWS: Note that ns32k-*-* is now partial multi-arch.
	Move Alpha and VAX multi-arch news entries to same section
	as other multi-arch news.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c: include gdbtypes.h, inferior.h, regcache.h,
	target.s, arch-utils.h, ns32k-tdep.h.  Make many functions
	static.  Rename some register numbers to put them in ns32k-tdep
	private namespace.
	(ns32k_get_saved_register, ns32k_gdbarch_init_32082,
	ns32k_gdbarch_init_32382, ns32k_gdbarch_init, ns32k_dump_tdep): New
	functions.
	(_initialize_ns32k_tdep): Use gdbarch_register.
	* ns32k-tdep.h: New file.
	* ns32knbsd-tdep.c: New file.
	* config/ns32k/nbsdaout.mt (TDEPFILES): Add ns32knbsd-tdep.o.
	* config/ns32k/tm-nbsd.h: Include "ns32k/tm-ns32k.h".
	(IN_SOLIB_CALL_TRAMPOLINE, REGISTER_NAME, NUM_REGS,
	REGISTER_BYTES, REGISTER_BYTE): Remove.
	* config/ns32k/tm-ns32k.h: New file.
	* config/ns32k/tm-umax.h: Remove.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c (ns32k_saved_pc_after_call,
	ns32k_store_struct_return, ns32k_extract_return_value,
	ns32k_store_return_value, ns32k_extract_struct_value_address): New
	functions.
	* config/ns32k/tm-umax.h (SAVED_PC_AFTER_CALL): Define as
	ns32k_saved_pc_after_call.
	(STORE_STRUCT_RETURN): Define as ns32k_store_struct_return.
	(EXTRACT_RETURN_VALUE): Define as ns32k_extract_return_value.
	(STORE_RETURN_VALUE): Define as ns32k_store_return_value.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Define as
	ns32k_extract_struct_value_address.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c (ns32k_call_dummy_words, sizeof_ns32k_call_dummy_words,
	ns32k_fix_call_dummy): New.
	* config/ns32k/tm-umax.h (CALL_DUMMY_WORDS): Define as
	ns32k_call_dummy_words.
	(SIZEOF_CALL_DUMMY_WORDS): Define as sizeof_ns32k_call_dummy_words.
	(CALL_DUMMY, CALL_DUMMY_LENGTH, CALL_DUMMY_ADDR,
	CALL_DUMMY_NARGS): Remove.
	(FIX_CALL_DUMMY): Define as ns32k_fix_call_dummy.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c (ns32k_breakpoint_from_pc, ns32k_frame_chain,
	ns32k_frame_saved_pc, ns32k_frame_args_address,
	ns32k_frame_locals_address, ns32k_frame_init_saved_regs,
	ns32k_push_dummy_frame, ns32k_pop_frame): New functions.
	* config/ns32k/tm-nbsd.h (FRAME_SAVED_PC): Remove.
	* config/ns32k/tm-umax.h (INNER_THAN): Define as core_addr_lessthan.
	(BREAKPOINT_FROM_PC): Define as ns32k_breakpoint_from_pc.
	(BREAKPOINT): Remove..
	(FRAME_CHAIN): Define as ns32k_frame_chain.
	(FRAME_SAVED_PC): Define as ns32k_frame_saved_pc.
	(FRAME_ARGS_ADDRESS): Define as ns32k_frame_args_address.
	(FRAME_LOCALS_ADDRESS): Define as ns32k_frame_locals_address.
	(FRAME_FIND_SAVED_REGS): Remove.
	(FRAME_INIT_SAVED_REGS): Define as ns32k_frame_init_saved_regs.
	(PUSH_DUMMY_FRAME): Define as ns32k_push_dummy_frame.
	(POP_FRAME): Define as ns32k_pop_frame.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c (ns32k_register_byte_32082,
	ns32k_register_byte_32382, ns32k_register_raw_size,
	ns32k_register_virtual_size, ns32k_register_virtual_type): New
	functions.
	* config/ns32k/tm-nbsd.h (REGISTER_BYTE): Define as
	ns32k_register_byte_32382.
	* config/ns32k/tm-umax.h: Update copyright years.
	(REGISTER_BYTE): Define as ns32k_register_byte_32082.
	(REGISTER_RAW_SIZE): Define as ns32k_register_raw_size.
	(REGISTER_VIRTUAL_SIZE): Define as ns32k_register_virtual_size.
	(REGISTER_VIRTUAL_TYPE): Define as ns32k_register_virtual_type.
	(ns32k_get_enter_addr): Fix prototype.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c: Update copyright years.
	(ns32k_register_name_32082): New function.
	(ns32k_register_name_32382): Ditto.
	* config/ns32k/tm-nbsd.h (REGISTER_NAMES): Remove.
	(REGISTER_NAME): Define as ns32k_register_name_32382.
	* config/ns32k/tm-umax.h (REGISTER_NAMES): Remove.
	(REGISTER_NAME): Define as ns32k_register_name_32082.

2002-05-24  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c (free_line_header): Use xfree, not free.

2002-05-24  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/djgpp/fnchange.lst: Add alphabsd-nat.c,
	alphabsd-tdep.c, mipsnbsd-nat.c, and mipsnbsd-tdep.c

2002-05-23  Andrew Cagney  <ac131313@redhat.com>

	* PROBLEMS: Mention s390 and FreeBSD 4.4 build problems.

2002-05-23  Andrew Cagney  <ac131313@redhat.com>

	From Ross Alexander at NEC Europe:
	* config/pa/hpux11w.mh (NATDEPFILES): Add solib.o.

2002-05-23  Michael Snyder  <msnyder@redhat.com>

	* cli/cli-dump.c (restore_command): Use parse_and_eval_long
	for input, rather than parse_and_eval_address.  

2002-05-23  Andrew Cagney  <ac131313@redhat.com>

	* d10v-tdep.c: Include "gdb/sim-d10v.h" instead of "sim-d10v.h".
	* Makefile.in (sim_d10v_h): Update definition.

2002-05-24  Andrew Cagney  <cagney@redhat.com>

	* d10v-tdep.c (d10v_gdbarch_init): Revert old code included in
	change `2002-05-22 Michael Snyder' below.
	(d10v_push_arguments): Ditto.
	(d10v_extract_return_value): Ditto.

2002-05-23  Jim Blandy  <jimb@redhat.com>

	* macrotab.c (check_for_redefinition): Don't complain if the new
	definition is the same as the previous one.  Take more arguments
	to allow the comparison.
	(macro_define_object, macro_define_function): Pass more arguments
	to check_for_redefinition.

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

	* d10v-tdep.c: Change a few macros to enums for ease of debugging.
	(d10v_frame_chain_valid): Add PC_IN_CALL_DUMMY clause.
	(d10v_frame_saved_pc): Add PC_IN_CALL_DUMMY clause.
	(d10v_frame_chain): Bail immediately if PC_IN_CALL_DUMMY.
	Don't bail if return_pc is PC_IN_CALL_DUMMY.
	Add a temp variable to save a call (and a memory read).
	(d10v_init_extra_frame_info): Get fi->pc from callee's return_pc
	if possible (so that PC_IN_CALL_DUMMY will work).

2002-05-22  Corinna Vinschen  <vinschen@redhat.com>

	* MAINTAINERS: Remove status `OBSOLETE' from v850.

2002-05-22  Michal Ludvig  <mludvig@suse.cz>

	* dwarf2cfi.c (frame_state_for): Added safety check for a valid
	fde->cie_ptr.
	(dwarf2_build_frame_info): Corrected handling of eh_frame.
	(dwarf2_build_frame_info): Add offset to fde->initial_location 
	so that frames of shared libraries are mapped correctly.
	(execute_stack_op): Change type of 'result' from ULONGEST to
	CORE_ADDR.
	
2002-05-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/alpha/tm-nbsd.h: Include solib.h.

2002-05-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* alphanbsd-tdep.c (alphanbsd_sigtramp_offset): Don't make
	assumptions about the host's byte order.

2002-05-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (alphanbsd-tdep.o, shnbsd-tdep.o): Add solib-svr4.h
	to dependency list.
	* alphanbsd-tdep.c: Include solib-svr4.h.
	* shnbsd-tdep.c: Ditto.

2002-05-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (armnbsd-tdep.o): Add solib-svr4.h and
	nbsd-tdep.h to dependency list.
	* configure.host (arm*-*-netbsdelf*, arm*-*-netbsd*,
	i[3456]86-*-netbsdaout*, i[3456]86-*-netbsd*, m68*-*-netbsd*,
	ns32k-*-netbsd*, sparc-*-netbsdaout*, sparc-*-netbsd*): Use
	nbsdaout.mh and nbsdelf.mh consistently.
	* configure.tgt (i[3456]86-*-netbsd*, m68*-*-netbsd*,
	ns32k-*-netbsd*, sparc-*-netbsdelf*, sparc-*-netbsd*) Use
	nbsdaout.mt and nbsdelf.mh consistently.
	* armnbsd-tdep.c: Include nbsd-tdep.h and solib-svr4.h. 
	(arm_netbsd_elf_init_abi): Use set_solib_svr4_fetch_link_map_offsets
	to set nbsd_ilp32_solib_svr4_fetch_link_map_offsets.
	* config/nm-nbsd.h: Garbage-collect SVR4_SHARED_LIBS.  Move
	a.out shared library stuff from here...
	* config/nm-nbsdaout.h: ...to here.
	* config/tm-nbsd.h: Remove.
	* config/alpha/nm-nbsd.h (SVR4_SHARED_LIBS): Remove.
	* config/arm/nbsd.mh: Remove.
	* config/arm/nbsd.mt (TDEPFILES): Remove solib-sunos.o, add
	nbsd-tdep.o.
	* config/arm/nbsdaout.mh: New file. 
	* config/arm/nbsdelf.mh: New file.
	* config/arm/nm-nbsdaout.h: New file.
	* config/i386/nbsd.mh: Remove.
	* config/i386/nbsd.mt: Remove.
	* config/i386/nbsdaout.mh: New file.
	* config/i386/nbsdaout.mt: New file.
	* config/i386/nbsdelf.mh (NAT_FILE): Use nm-nbsd.h.
	* config/i386/nbsdelf.mt (TM_FILE): Use tm-nbsd.h.
	* config/i386/nm-nbsd.h (REGISTER_U_ADDR, 
	i386_register_u_addr): Remove.
	* config/i386/nm-nbsdaout.h: New file.
	* config/i386/nm-nbsdelf.h: Remove.
	* config/i386/tm-nbsd.h: Don't include config/tm-nbsd.h.
	(USE_STRUCT_CONVENTION): Remove.
	* config/i386/tm-nbsdaout.h: New file.
	* config/i386/tm-nbsdelf.h: Remove.
	* config/m68k/nbsd.mh: Remove.
	* config/m68k/nbsd.mt: Remove.
	* config/m68k/nbsdaout.mh: New file.
	* config/m68k/nbsdaout.mt: New file. 
	* config/m68k/nm-nbsd.h: Use config/nm-nbsd.h.
	* config/m68k/nm-nbsdaout.h: New file.
	* config/m68k/tm-nbsd.h: Don't include config/tm-nbsd.h.
	(IN_SOLIB_CALL_TRAMPOLINE): Define.
	* config/ns32k/nbsd.mh: Remove.
	* config/ns32k/nbsd.mt: Remove. 
	* config/ns32k/nbsdaout.mh: New file.
	* config/ns32k/nbsdaout.mt: New file.
	* config/ns32k/nm-nbsd.h: Include config/nm-nbsd.h. 
	* config/ns32k/nm-nbsdaout.h: New file.
	* config/ns32k/tm-nbsd.h: Don't include config/tm-nbsd.h.  
	(IN_SOLIB_CALL_TRAMPOLINE): Define.
	* config/powerpc/nm-nbsd.h: Include config/nm-nbsd.h.
	(SVR4_SHARED_LIBS): Remove.
	* config/powerpc/tm-nbsd.h: Dont' include config/tm-nbsd.h.
	* config/sparc/nbsd.mh: Remove.
	* config/sparc/nbsd.mt: Remove.
	* config/sparc/nbsdaout.mh: New file.
	* config/sparc/nbsdaout.mt: New file.
	* config/sparc/nbsdelf.mh (NAT_FILE): Use nm-nbsd.h.
	* config/sparc/nbsdelf.mt: New file.
	* config/sparc/nm-nbsdaout.h: New file.   
	* config/sparc/nm-nbsdelf.h: Remove.
	* config/sparc/tm-nbsd.h: Don't include config/tm-nbsd.h.
	* config/sparc/tm-nbsdaout.h: New file.

2002-05-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add mipsnbsd-nat.c and
	mipsnbsd-tdep.c
	(mipsnbsd-nat.o, mipsnbsd-tdep.o): New dependency lists.

2002-05-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add shnbsd-tdep.c and
	shnbsd-nat.c.
	(shnbsd-tdep.o, shnbsd-nat.o): New dependency lists.

2002-05-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* NEWS: Note new MIPS NetBSD native configuration. 
	* configure.host (mips*-*-netbsd*): New host. 
	* configure.tgt (mips*-*-netbsd*): New target. 
	* mipsnbsd-nat.c: New file.
	* mipsnbsd-tdep.c: New file.
	* mipsnbsd-tdep.h: New file.
	* config/mips/nbsd.mh: New file.
	* config/mips/nbsd.mt: New file.
	* config/mips/nm-nbsd.h: New file.
	* config/mips/tm-nbsd.h: New file.

2002-05-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (SFILES): Add osabi.c.
	(COMMON_OBS): Add osabi.o.
	(osabi.o): New dependency list.
	* osabi.c: New file.
	* osabi.h: New file.
	* doc/gdbint.texinfo: Document new generic OS ABI framework.

	* Makefile.in (alpha_tdep_h): Define and use instead of
	alpha-tdep.h.
	* alpha-tdep.c (alpha_abi_names, process_note_abi_tag_sections,
	get_elfosabi, alpha_abi_handler_list, alpha_gdbarch_register_os_abi):
	Remove.
	(alpha_gdbarch_init, alpha_dump_tdep): Use generic OS ABI framework.
	* alpha-tdep.h: Include osabi.h.
	(alpha_abi): Remove.
	(gdbarch_tdep): Use generic OS ABI framework.
	* alpha-linux-tdep.c (_initialize_alpha_linux_tdep): Use
	gdbarch_register_osabi.
	* alpha-osf1-tdep.c (_initialize_alpha_osf1_tdep): Likewise.
	* alphafbsd-tdep.c (_initialize_alphafbsd_tdep): Likewise.
	* alphanbsd-tdep.c (_initialize_alphanbsd_tdep): Likewise.

	* Makefile.in (sh_tdep_h): Add osabi.h.
	* sh-tdep.h (sh_osabi): Remove.
	(gdbarch_tdep): Use generic OS ABI framework.
	* sh-tdep.c (sh_osabi_names, process_note_abi_tag_sections,
	sh_osabi_handler_list, sh_gdbarch_register_os_abi): Remove.
	(sh_gdbarch_init, sh_dump_tdep): Use generic OS ABI framework.
	* shnbsd-tdep.c (_initialize_shnbsd_tdep): Use gdbarch_register_osabi.

	* Makefile.in (arm_tdep_h): Define and use instead of arm-tdep.h.
	* arm-linux-tdep.c (_initialize_arm_linux_tdep): Use
	gdbarch_register_osabi.
	* arm-tdep.c (arm_abi_names, process_note_abi_tag_sections,
	arm_abi_handler_list, arm_gdbarch_register_os_abi): Remove.
	(get_elfosabi): Rename to...
	(arm_elf_osabi_sniffer): ...this.  Adjust to use generic OS
	ABI framework support routines.
	(arm_gdbarch_init): Use generic OS ABI framework.
	(arm_dump_tdep): Likewise.
	(_initialize_arm_tdep): Likewise.
	* arm-tdep.h: Include osabi.h.
	(arm_abi): Remove.
	(gdbarch_tdep): Remove arm_abi and abi_name members.  Add
	osabi member.
	(arm_gdbarch_register_os_abi): Remove prototype.
	* armnbsd-tdep.c (arm_netbsd_aout_osabi_sniffer): New function.
	(_initialize_arm_netbsd_tdep): Use gdbarch_register_osabi.

	* Makefile.in (mips-tdep.o): Add osabi.h to dependency list.
	* mips-tdep.c: Include osabi.h.
	(gdbarch_tdep, mips_gdbarch_init, mips_dump_tdep): Use generic
	OS ABI framework.

2002-05-20  Kazu Hirata  <kazu@cs.umass.edu>

	* h8300-tdep.c: Fix formatting.

2002-05-20  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (rs6000_do_registers_info): Simplify code for
	printing vector registers.

2002-05-19  Andrew Cagney  <ac131313@redhat.com>

	From Fernando Nasser:
	* remote.c (remote_async_open_1): Re-throw the exception when the
	connection fails.
	(remote_cisco_open): Ditto.
	(remote_open_1): Ditto.

2002-05-19  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (remote_start_remote_dummy): Add uiout parameter.
	(remote_start_remote): Add uiout parameter.  Pass through to
	remote_start_remote_dummy.
	(remote_open_1): Use catch_exception instead of catch_errors.
	(remote_async_open_1): Ditto.
	(remote_cisco_open): Ditto.

2002-05-19  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (remote_start_remote): Replace PTR with void pointer.
	(sigint_remote_twice_token, sigint_remote_token): Ditto.  Make
	static.

2002-05-18  Andrew Cagney  <ac131313@redhat.com>

	* gdb_indent.sh: Allow the script to be run in the sim directory.

2002-05-18  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/nm-cygwin.h (NO_PTRACE_H): Remove define.
	* config/i386/nm-go32.h (NO_PTRACE_H): Remove define.

	* corelow.c (core_open): Only call set_gdbarch_from_file if
	exec_bfd is NULL.

2002-05-17  Andrey Volkov <avolkov@transas.com>

	* h8300-tdep.c: Add support of EXR register
	* config/h8300/tm-h8300.h: Ditto. 
	
2002-05-17  Andrey Volkov <avolkov@transas.com>

	* h8300-tdep.c: Add additional CCR flags (I,UI,H,U) 
	
2002-05-17  Andrey Volkov <avolkov@transas.com>

	* h8300-tdep.c: Change literal regnums to REGNO.
	
2002-05-17  Jim Blandy  <jimb@redhat.com>

	* NEWS: Note addition of macro support.

	Expand preprocessor macros in C expressions.
	* c-lang.h: #include "macroexp.h", for macro_lookup_ftype.
	(scan_macro_expansion, scanning_macro_expansion,
	finished_macro_expansion): New function declarations.
	(expression_macro_lookup_func, expression_macro_lookup_baton): New
	variable declarations.
	* parser-defs.h (expression_context_pc): New declaration.
	* parse.c (expression_context_pc): New variable.
	(parse_exp_1): Set expression_context_pc, as well as
	expression_context_block.
	* c-exp.y (yylex): If we're not already reading the result of a
	macro expansion, try to macro-expand the next token.  When we're
	done scanning a macro expansion, switch back to the mainline text.
	Commas and `if's in a macro's expansion don't terminate the input.
	* c-lang.c: #include "macroscope.h" and "gdb_assert.h".
	(macro_original_text, macro_expanded_text,
	expression_macro_lookup_func, expression_macro_lookup_baton): New
	variables.
	(scan_macro_expansion, scanning_macro_expansion,
	finished_macro_expansion, scan_macro_cleanup, null_macro_lookup,
	c_preprocess_and_parse): New functions.
	(c_language_defn, cplus_language_defn, asm_language_defn): Call
	c_preprocess_and_parse, instead of c_parse.
	* Makefile.in (c_lang_h): Note that this #includes macroexp.h.
	(c-lang.o): Note dependency on macroscope.h and gdb_assert.h.

Fri May 17 14:26:19 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh-tdep.c (gdb_print_insn_sh64): Delete.
	(gdb_print_insn_sh): Just set info->endian and use print_insn_sh.
	(sh_gdbarch_init): Always use gdb_print_insn_sh.

2002-05-17  Corinna Vinschen  <vinschen@redhat.com>

	* NEWS: Add section for multi-arched targets.  Add v850 to that section.

2002-05-17  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (sh_tdep_h): Define and use.
	* config/sh/tm-sh.h (sh_osabi, sh_abi, gdbarch_tdep,
	register enum): Move to...
	* * sh-tdep.h: ...here.
	* sh-tdep.c: Include sh-tdep.h.
	* sh3-rom.c: Likewise.
	* shnbsd-tdep.c: Likewise.

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

	* arm-tdep.c: Spelling fix in comment.

2002-05-16  Jim Blandy  <jimb@redhat.com>

	Add commands for manually expanding macros and showing their
	definitions.
	* macrocmd.c, macroscope.c, macroscope.h: New files.
	* Makefile.in (SFILES): Add macrocmd.c, macroscope.c.
	(macroscope_h): New variable.
	(HFILES_NO_SRCDIR): Add macroscope.h.
	(COMMON_OBS): Add macrocmd.o, macroscope.o.
	(macroscope.o, macrocmd.o): New rules.

	Teach the Dwarf 2 reader to read macro information.
	* dwarf2read.c: #include "macrotab.h".
	(dwarf_macinfo_buffer): New variable.
	(struct dwarf2_pinfo): New members: dwarf_macinfo_buffer, and
	dwarf_macinfo_size.
	(DWARF_MACINFO_BUFFER, DWARF_MACINFO_SIZE): New macros.
	(dwarf2_missing_macinfo_section, dwarf2_macros_too_long,
	dwarf2_macros_not_terminated, dwarf2_macro_outside_file,
	dwarf2_macro_unmatched_end_file, dwarf2_macro_malformed_definition,
	dwarf2_macro_spaces_in_definition): New complaints.
	(dwarf2_has_info): Initialize dwarf_macinfo_offset.
	(dwarf2_build_psymtabs): Read the .dwarf_macinfo section.
	(dwarf2_build_psymtabs_hard): Record the buffer and its size in
	the partial symbol table.
	(psymtab_to_symtab_1): Set the macinfo buffer and size globals
	from what's recorded in the partial symbol table.
	(read_file_scope): If the compilation unit has a
	`DW_AT_macro_info' attribute, read its macro information.
	* Makefile.in (dwarf2read.o): Depend on macrotab.h.

2002-05-16  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR gdb/546
	* ser-tcp.c: Don't include <netinet/udp.h>.

2002-05-16  Stephane Carrez  <stcarrez@nerim.fr>

	* MAINTAINERS: Update my email address.

2002-05-16  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/nm-nbsd.h: Use "config/nm-nbsd.h" to include generic
	include file of the same name.

2002-05-16  Corinna Vinschen  <vinschen@redhat.com>

	* configure.tgt: Mark v850 as multi-arched.
	* config/v850/tm-v850.h: Remove file.
	* config/v850/v850.mt: Eliminate TM_FILE.

2002-05-16  Corinna Vinschen  <vinschen@redhat.com>

	* v850-tdep.c: Full multi-arch.
	* config/v850/tm-v850.h: Eliminate or move to v850-tdep.c everything.
	Define GDB_MULTI_ARCH to 2.

2002-05-16  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y (current_type): New static variable.
	Carries the type of the expression at the position that is parsed.
	(push_current_type, pop_current_type): Two new functions. Used
	to store/restore current_type in expression on specific tokens.
	(search_field): New static variable. Set to one after parsing a point
	as at that point only a FIELDNAME token should be searched.
	(FIELDNAME): New token. After a point only a token belonging to 
	current_type type definition is allowed.
	(all over token rules): reset and change current_type according
	to rules.
	(exp '[' rule): insert implicit array index field if
	exp is a pascal string type.

2002-05-16  Corinna Vinschen  <vinschen@redhat.com>

	* v850-tdep.c: Fix comment for v850_scan_prologue.  Remove extra
	frame info.  Use frame_info's saved_regs instead of matching member
	in extra_frame_info throughout.
	(v850_frame_init_saved_regs): New function.
	(v850_init_extra_frame_info): Move most functionality into
	v850_frame_init_saved_regs().
	* config/v850/tm-v850.h (EXTRA_FRAME_INFO): Remove definition.
	(v850_frame_find_saved_regs): Remove declaration.
	(FRAME_FIND_SAVED_REGS): Remove definition.
	(v850_frame_init_saved_regs): Add declaration.
	(FRAME_INIT_SAVED_REGS): Add definition.

2002-05-16  Corinna Vinschen  <vinschen@redhat.com>

	* v850-tdep.c: Begin multi-arch'ing v850.
	(v850_target_architecture_hook): Remove function.
	(v850_gdbarch_init): New function.  Add code previously in
	v850_target_architecture_hook().
	(_initialize_v850_tdep): Don't  set target_architecture_hook.
	Call register_gdbarch_init() instead.

2002-05-16 Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.h (struct cplus_struct_type): Remove args field.
	* hpread.c (hpread_read_struct_type): Remove assignments to args.
	(fixup_class_method_type): Likewise.

2002-05-15  Daniel Jacobowitz  <drow@mvista.com>

	From Martin Pool <mbp@samba.org>:
	* gdbserver/server.c (gdbserver_usage): New function.
	(main): Call it.

2002-06-19  Andrew Cagney  <cagney@redhat.com>

	* regcache.h: Update copyright.
	(struct regcache, struct gdbarch): Add opaque declarations.
	(current_regcache): Declare global variable.
	(regcache_read, regcache_write): Add gdbarch parameter.
	(regcache_save, regcache_save_no_passthrough)
	(regcache_restore, regcache_restore_no_passthrough)
	(regcache_dup, regcache_dup_no_passthrough)
	(regcache_cpy, regcache_cpy_no_passthrough)
	(deprecated_grub_regcache_for_registers)
	(deprecated_grub_regcache_for_register_valid)
	(regcache_valid_p): Add function declarations.
	
	* regcache.c: Update copyright.
	(regcache_descr_handle): New global variable.
	(struct regcache_descr): Define.
	(init_legacy_regcache_descr, init_regcache_descr): New functions.
	(regcache_descr, xfree_regcache_descr): New functions.
	(struct regcache): Define.
	(regcache_xmalloc, regcache_xfree): New functions.
	(regcache_cpy, regcache_cpy_no_passthrough): New functions.
	(regcache_dup, regcache_dup_no_passthrough): New functions.
	(regcache_valid_p, regcache_read_as_address): New functions.
	(deprecated_grub_regcache_for_registers): New function.
	(deprecated_grub_regcache_for_register_valid): New function.
	(current_regcache): New global variable.
	(register_buffer): Add regcache parameter.  Update calls.
	(regcache_read, regcache_write): Add regcache parameter.  Rewrite.
	(read_register_gen, write_register_gen): Update register_buffer
	call.  Test for legacy_p instead of gdbarch_register_read_p or
	gdbarch_register_write_p.
	(regcache_collect): Update register_buffer call.
	(build_regcache): Rewrite.  Use deprecated grub functions.
	(regcache_save, regcache_save_no_passthrough): New functions.
	(regcache_restore, regcache_restore_no_passthrough): New
	functions.
	(_initialize_regcache): Create the regcache_data_handle. Swap
	current_regcache global variable.
	
	* sh-tdep.c (sh_pseudo_register_read): Add current_regcache
	parameter to regcache_read and regcache_write calls.
	(sh4_register_read): Ditto.
	(sh64_pseudo_register_read): Ditto.
	(sh64_register_read): Ditto.
	(sh_pseudo_register_write): Ditto.
	(sh4_register_write): Ditto.
	(sh64_pseudo_register_write): Ditto.
	(sh64_register_write): Ditto.

	* defs.h (XCALLOC): Define.

2002-06-19  Grace Sainsbury  <graces@redhat.com>

	* config/m68k/tm-m68k.h (GDB_MULTI_ARCH): Added (set to 0).
	* m68k-tdep.c (m68k_gdbarch_init): Added.
	(m68k_dump_tdep): Added.

2002-06-19  Daniel Jacobowitz  <drow@mvista.com>

	* ada-lang.c (fill_in_ada_prototype): Update comment.

2002-06-19  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (enum mips_abi): Explicitly start at 0.  Add
	MIPS_ABI_LAST.
	(mips_abi_string, mips_abi_strings): New.
	(struct gdbarch_tdep): Remove mips_abi_string, add found_abi.
	(mips_gdbarch_init): Set tdep->found_abi.  Don't set
	tdep->mips_abi_string.  Honor mips_abi_string.  Default to
	O32 if no ABI is found.
	(mips_dump_tdep): Use mips_abi_strings.
	(mips_abi_update): New function.
	(_initialize_mips_tdep): Initialize mips_abi_string.  Add  
	``set mips abi'' and ``show mips abi''.  Check the size of
	mips_abi_strings.

2002-06-19  Andrew Cagney  <cagney@redhat.com>

	* i386-linux-tdep.c (i386_linux_register_name): Make return type
	constant.

2002-06-18  Joel Brobecker  <brobecker@gnat.com>

	* alpha-tdep.c (heuristic_proc_desc): Compute the size of the  
	current frame using only the first stack size adjustment. All
	subsequent size adjustments are not considered to be part of
	the "static" part of the current frame.
	Compute the address of the saved registers relative to the
	Frame Pointer ($fp) instead of the Stack Pointer if $fp is
	in use in this frame.

2002-06-18  Don Howard  <dhoward@redhat.com>
 
        * valops.c (value_ind): Use value_at_lazy() when dereferencing
        type int expressions.  Thanks to Jim Blandy <jimb@redhat.com> for
        suggesting this solution.

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

	* config/romp/xm-rtbsd.h: Delete file.
	* config/romp/rtbsd.mh: Delete file.

2002-06-18  Keith Seitz  <keiths@redhat.com>

	* breakpoint.c (condition_command): Post breakpoint_modify
	when a condition is added to an existing breakpoint.
	(commands_command): Likewise for commands.
	(set_ignore_count): Likewise for ignore counts.
	If no tty, do not simply return, still need to send event
	notification.
	(ignore_command): Only print a newline if the command came
	from a tty.
	Don't call breakpoints_changed, since this is now properly
	handled by set_ignore_count.

2002-06-18  Andrew Cagney  <cagney@redhat.com>

	* MAINTAINERS: Note that cris-elf target can be compiled with
	-Werror.
	* cris-tdep.c (cris_register_name): Make return type constant.
	(cris_breakpoint_from_pc): Ditto.

2002-06-18  Michal Ludvig  <mludvig@suse.cz>

	* frame.h (struct frame_info): Change type of context to 
	'struct context'.

2002-06-17  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (REGISTER_NAME): Change return type a constant string
	pointer.
	* gdbarch.h, gdbarch.c: Regenerate.
	* config/mips/tm-mips.h (mips_register_name): Update.
	* i386-tdep.h (i386_register_name): Update.
	* mips-tdep.c (mips_register_name): Update
	* alpha-tdep.c (alpha_register_name): Update.
	* arch-utils.c (legacy_register_name): Update.
	* arch-utils.h (legacy_register_name): Update.
	* avr-tdep.c (avr_register_name): Update.
	* ia64-tdep.c (ia64_register_name): Update.
	* i386-tdep.c (i386_register_name): Update.
	* sparc-tdep.c (sparc32_register_name): Update.
	(sparc64_register_name): Update.
	(sparclite_register_name): Update.
	(sparclet_register_name): Update.
	* sh-tdep.c (sh_generic_register_name): Update.
	(sh_sh_register_name): Update.
	(sh_sh3_register_name): Update.
	(sh_sh3e_register_name): Update.
	(sh_sh_dsp_register_name): Update.
	(sh_sh3_dsp_register_name): Update.
	(sh_sh4_register_name): Update.
	(sh_sh64_register_name): Update.
	* s390-tdep.c (s390_register_name): Update.
	* rs6000-tdep.c (rs6000_register_name): Update.
	* ns32k-tdep.c (ns32k_register_name_32082): Update.
	(ns32k_register_name_32382): Update.
	* d10v-tdep.c (d10v_ts2_register_name): Update.
	(d10v_ts3_register_name): Update.
	* xstormy16-tdep.c (xstormy16_register_name): Update.
	* vax-tdep.c (vax_register_name): Update.
	* v850-tdep.c (v850_register_name): Update.
	* m68hc11-tdep.c (m68hc11_register_name): Update.
	* mn10300-tdep.c (mn10300_generic_register_name): Update.
	(am33_register_name): Update.

2002-06-17  Grace Sainsbury  <graces@redhat.com>

	* m68k-tdep.c: Reindented.

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

	* gdb_indent.sh: Add prgregset_t, fpregset_t, and gregset_t to the
	list of predefined types.

2002-06-16  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h (REGISTER_VIRTUAL_TYPE,
	REGISTER_CONVERTIBLE, REGISTER_CONVERT_TO_VIRTUAL,
	REGISTER_CONVERT_TO_RAW): Remove defines.
	(i386_register_virtual_type, i386_register_convertible,
	i386_register_convert_to_virtual, i386_register_convert_to_raw):
	Remove prototypes.
	* i386-tdep.c (i386_gdbarch_init): Adjust for removal of the
	macros mentioned above.

	* config/i386/tm-i386lynx.h (SAVED_PC_AFTER_CALL): Remove define.
	(i386lynx_saved_pc_after_call): Remove prototype.
	* i386ly-tdep.c: Include "i386-tdep.h".
	(i386lynx_saved_pc_after_call): Make static.  Use
	read_memory_nobpt instead of read_memory.  Use
	read_memory_unsigned_integer instead of read_memory_integer.
	(i386lynx_init_abi): New function.
	(i386lynx_coff_osabi_sniffer): New function.
	(_initialize_i386bsd_tdep): New function.

	* config/i386/tm-i386.h (PARM_BOUNDARY, CALL_DUMMY,
	CALL_DUMMY_LENGTH, CALL_DUMMY_START_OFFSET,
	CALL_DUMMY_BREAKPOINT_OFFSET, FIX_CALL_DUMMY): Remove defines.
	(i386_fix_call_dummy): Remove prototype.
	* i386-tdep.c (i386_call_dummy_words): New variable.
	(i386_gdbarch_init): Adjust for removal of the
	macros mentioned above.

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

	* command.h (add_setshow_auto_boolean_cmd): Replace
	add_set_auto_boolean_cmd.
	* cli/cli-decode.c (add_setshow_auto_boolean_cmd): Replace
	add_set_auto_boolean_cmd.
	* cli/cli-decode.h (add_set_auto_boolean_cmd): Delete declaration.
	* mips-tdep.c (_initialize_mips_tdep): Update ``set mips
	mask-address'' command.
	(show_mask_address): Add cmd parameter.
	* remote.c (add_packet_config_cmd): Update.  Change type of
	set_func and show_func to cmd_sfunc_ftype.
	(_initialize_remote): Update `set remote Z-packet'
	(show_remote_protocol_qSymbol_packet_cmd): Add cmd parameter.
	(show_remote_protocol_e_packet_cmd): Ditto.
	(show_remote_protocol_E_packet_cmd): Ditto.
	(show_remote_protocol_P_packet_cmd): Ditto.
	(show_remote_protocol_Z_software_bp_packet_cmd): Ditto.
	(show_remote_protocol_Z_hardware_bp_packet_cmd): Ditto.
	(show_remote_protocol_Z_write_wp_packet_cmd): Ditto.
	(show_remote_protocol_Z_read_wp_packet_cmd): Ditto.
	(show_remote_protocol_Z_access_wp_packet_cmd): Ditto.
	(show_remote_protocol_Z_packet_cmd): Ditto.
	(show_remote_protocol_binary_download_cmd): Ditto.
	(show_remote_cmd): Pass NULL to all of above.

2002-06-15  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h (PUSH_ARGUMENTS, STORE_STRUCT_RETURN,
	DEPRECATED_EXTRACT_RETURN_VALUE, STORE_RETURN_VALUE,
	DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS, PUSH_DUMMY_FRAME,
	POP_FRAME): Remove defines.
	(i386_push_arguments, i386_store_struct_return,
	i386_extract_return_value, i386_store_return_value,
	i386_extract_struct_value_address, i386_push_dummy_frame,
	i386_pop_frame): Renove prototypes.
	* i386-tdep.c (i386_gdbarch_init): Adjust for removal of the
	macros mentioned above.

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

	* cli/cli-decode.c (add_setshow_boolean_cmd): Replace
	add_set_boolean_cmd.
	(add_setshow_cmd): New function.
	* command.h (add_setshow_boolean_cmd): Replace
	add_set_boolean_cmd.
	* remote-rdi.c (_initialize_remote_rdi): Update ``set rdiheartbeat''
	and ``set rdiromatzero''.
	* maint.c (_initialize_maint_cmds): Update commented out code.
	* cli/cli-decode.h (add_set_boolean_cmd): Delete declaration.
	* target.c (initialize_targets): Update `set
	trust-readonly-sections'.
	* remote.c (_initialize_remote): Update `set remotebreak'.

2002-06-15  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h (FUNCTION_START_OFFSET, INNER_THAN,
	BREAKPOINT, DECR_PC_AFTER_BREAK): Removed.
	* i386-tdep.c (i386_skip_prologue): Adjust function signature to
	fit into multi-arch framework.
	(i386_breakpoint_from_pc): New function.
	(i386_gdbarch_init): Adjust for removal of the macros mentioned
	above.

	* config/i386/tm-i386.h (FRAMELESS_FUNCTION_INVOCATION,
	FRAME_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS, FRAME_NUM_ARGS,
	FRAME_ARGS_SKIP, FRAME_INIT_SAVED_REGS): Remove defines.
	(i386_frameless_function_invocation, i386_frame_num_args,
	i386_frame_init_saved_regs): Remove prototypes.
	* i386-tdep.c (i386_gdbarch_init): Adjust for removal of the
	macros mentioned above.

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

	* cli/cli-decode.c (set_cmd_cfunc): Update.
	(set_cmd_sfunc): Update.
	* command.h (cmd_cfunc_ftype, cmd_sfunc_ftype): Declare.
	(set_cmd_sfunc, set_cmd_cfunc): Update.
	* cli/cli-decode.h: Update.

2002-06-15  Mark Kettenis  <kettenis@gnu.org>

	* i386-sol2-tdep.c (i386_sol2_osabi_sniffer): New function.
	(_initialize_i386_sol2_tdep): Register i386_sol2_osabi_sniffer.

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

	* defs.h (auto_boolean): Declare enum.
	* command.h (cmd_auto_boolean): Delete enum.
	* mips-tdep.c (mask_address_var): Update.
	(mips_mask_address_p): Update.
	(show_mask_address): Update.
	* remote.c (struct packet_config): Update.
	(update_packet_config): Update.
	(show_packet_config_cmd): Update.
	(packet_ok): Update.
	(add_packet_config_cmd): Update.
	(_initialize_remote): 
	* command.h: Update.
	* cli/cli-setshow.c (parse_auto_binary_operation): Update.
	(do_setshow_command): Update.
	* cli/cli-decode.c (add_set_auto_boolean_cmd): Update.
	* cli/cli-decode.h: Update.

2002-06-15  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-cygwin.h, config/i386/tm-fbsd.h,
	config/i386/tm-go32.h, config/i386/tm-i386gnu.h,
	config/i386/tm-i386sol2.h, config/i386/tm-i386v4.h,
	config/i386/tm-linux.h, config/i386/tm-nbsd.h,
	config/i386/tm-obsd.h (HAVE_I387_REGS): Remove define.
	* config/i386/tm-i386.h: Unconditionally define FLOAT_INFO.

	* i386-tdep.c (i386_coff_osabi_sniffer): Add "coff-go32" to the
	list of DJGPP COFF targets.

	* config/i386/tm-i386.h (REGISTER_SIZE): Remove define.
	(NUM_GREGS, NUM_FREGS, NUM_SSE_REGS): Remove defines.
	(FP_REGNUM, SP_REGNUM, PC_REGNUM, PS_REGNUM): Remove defines.
	(FP0_REGNUM): Remove define.
	(MAX_REGISTER_RAW_SIZE, MAX_REGISTER_VIRTUAL_SIZE,
	MAX_REGISTER_VIRTUAL_SIZE): Remove define.
	(i386_register_virtual_size): Remove protoype.
	* i386-tdep.c (i386_register_virtual_size): Removed.
	(i386_extract_return_value, i386_store_return_value): Use
	FP0_REGNUM instead of NUM_FREGS to determine whether the
	floating-point registers are available.
	(i386_gdbarch_init): Tweak FIXME about FPU registers.
	Adjust for removal of macros mentioned above.

2002-06-15  Mark Kettenis  <kettenis@gnu.org>

	* i386v4-nat.c: Include "i386-tdep.h".  Reformat and tweak various
	comments.
	(fill_gregset, supply_gregset, supply_fpregset, fill_fpregset):
	Remove prototypes.
	(supply_gregset, fill_gregset): Remove use of register keyword and
	remove declaration for regmap.  Use I386_NUM_GREGS instead of
	NUM_REGS and NUM_FREGS.
	(FPREGSET_FSAVE_OFFSET): Remove.
	(supply_fpregset, fill_fpregset): Use FPO_REGNUM instead of
	NUM_FREGS to determine whether the floating-point registers are
	available.

	* i386gnu-nat.c (supply_gregset, gnu_fetch_registers,
	gnu_store_registers): Replace usage of NUM_GREGS with
	I386_NUM_GREGS.

	* i386-linux-nat.c (OLD_CANNOT_FETCH_REGISTER,
	OLD_CANNOT_STORE_REGISTER, supply_gregset, fill_gregset): Replace
	usage of NUM_GREGS with I386_NUM_GREGS.

	* i386-linux-nat.c (fill_gregset): Remove redundant parentheses.

	* i386bsd-nat.c: Include "i386-tdep.h".
	(supply_gregset, fill_gregset): Replace usage of NUM_GREGS with
	I386_NUM_GREGS.

	* i386v-nat.c: Remove copnditional inclusion of <asm/debugreg.h>,
	and associated comment.  They no longer make any sense, since we
	don't use this file anymore on Linux.

	* config/i386/tm-i386.h (MAX_NUM_REGS): Removed.
	* i386-tdep.c (i386_register_offset, i386_register_size): Use
	I386_SSE_NUM_REGS instead of MAX_NUM_REGS for the number of
	elements in these arrays.
	(_initialize_i386_tdep): Use I386_SSE_NUM_REGS instead of
	MAX_NUM_REGS.

2002-06-15  Mark Kettenis  <kettenis@gnu.org>

	* osabi.h (gdb_osabi): Add GDB_OSABI_LYNXOS.
	* osabi.c (gdb_osabi_names): Add entry for "LynxOS".

2002-06-14  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename
	EXTRACT_RETURN_VALUE.
	(DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename
	EXTRACT_STRUCT_VALUE_ADDRESS.
	* gdbarch.h, gdbarch.c: Regenerate.
	
	* values.c (value_being_returned): Handle
	DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS.
	(EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE.

	* arm-linux-tdep.c (arm_linux_init_abi): Update. 
	* arm-tdep.c (arm_gdbarch_init): Update.
	* avr-tdep.c (avr_gdbarch_init): Update.
	* cris-tdep.c (cris_gdbarch_init): Update.
	* d10v-tdep.c (d10v_gdbarch_init): Update.
	* ia64-tdep.c (ia64_gdbarch_init): Update.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
	* rs6000-tdep.c (rs6000_gdbarch_init): Update.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* sh-tdep.c (sh_gdbarch_init): Update.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* sparc-tdep.c (sparc_gdbarch_init): Update.
	* ns32k-tdep.c (ns32k_gdbarch_init): Update.
	* v850-tdep.c (v850_gdbarch_init): Update.
	* vax-tdep.c (vax_gdbarch_init): Update.
	* x86-64-tdep.c (x86_64_gdbarch_init): Update.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Update.

	* config/arc/tm-arc.h: Update.
	* config/d30v/tm-d30v.h: Update.
	* config/fr30/tm-fr30.h: Update.
	* config/h8300/tm-h8300.h: Update.
	* config/h8500/tm-h8500.h: Update.
	* config/i386/tm-i386.h: Update.
	* config/i386/tm-ptx.h: Update.
	* config/i386/tm-symmetry.h: Update.
	* config/i960/tm-i960.h: Update.
	* config/m32r/tm-m32r.h: Update.
	* config/m68k/tm-delta68.h: Update.
	* config/m68k/tm-linux.h: Update.
	* config/m68k/tm-m68k.h: Update.
	* config/m88k/tm-m88k.h: Update.
	* config/mcore/tm-mcore.h: Update.
	* config/mips/tm-mips.h: Update.
	* config/mn10200/tm-mn10200.h: Update.
	* config/pa/tm-hppa.h: Update.
	* config/pa/tm-hppa64.h: Update.
	* config/sparc/tm-sp64.h: Update.
	* config/sparc/tm-sparc.h: Update.
	* config/sparc/tm-sparclet.h: Update.
	* config/z8k/tm-z8k.h: Update.

2002-06-14  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (i386_linux_tdep_h): Define.
	(i386_tdep_h, i387_tdep_h): Define.
	(i386-linux-nat.o): Add $(i386_linux_tdep_h),
	$(i386_tdep_h) and $(i387_tdep_h).
	* i386-linux-nat.c: Include "i386-linux-tdep.h".

2002-06-14  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h (START_INFERIOR_TRAPS_EXPECTED): Removed.
	Already covered by the default.

	* config/i386/tm-i386.h (TARGET_LONG_DOUBLE_FORMAT,
	TARGET_LONG_DOUBLE_BIT): Remove.  * i386-tdep.c
	(i386_gdbarch_init): Initialize long_double_format and long_double
	bit.

	* config/i386/i386sol2.mt (TDEPFILES): Add i386-sol2-tdep.o and
	i386bsd-tdep.o.  Remove solib.o, solib-svr4.o and solib-legacy.o.
	Move these to ...
	* config/i386/i386sol2.mh: ... here.
	* config/i386/tm-i386sol2.h (STAB_REG_TO_REGNUM): Remove define.
	(sigtramp_saved_pc, I386V4_SIGTRAMP_SAVED_PC): Don't #undef.
	(SIGCONTEXT_PC_OFFSET): Remove define.
	(IN_SIGTRAMP): Remove define.
	* i386-sol2-tdep.c: New file.
	
	* config/i386/i386nw.mt (TM_FILE): Change to tm-i386.h.
	* config/i386/tm-i386nw.h: Removed.

	* config/i386/tm-fbsd.h (STAB_REG_TO_REGNUM,
	USE_STRUCT_CONVENTION): Remove defines.
	(JB_ELEMENT_SIZE, JB_PC, GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	(IN_SIGTRAMP): Remove define.
	(i386bsd_in_sigtramp): Remove prototype.
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Turn into a
	function.  Update comment accordingly
	(SIGTRAMP_START, SIGTRAMP): Adjust definition accordingly.
	(FRAME_SAVED_PC): Remove define.
	(i386bsd_frame_saved_pc): Remove prototype.
	* config/i386/tm-nbsd.h (JB_ELEMENT_SIZE, JB_PC,
	GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	(IN_SIGTRAMP): Remove define.
	(i386bsd_in_sigtramp): Remove prototype.
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Turn into a
	function.  Update comment accordingly
	(SIGTRAMP_START, SIGTRAMP): Adjust definition accordingly.
	(FRAME_SAVED_PC): Remove define.
	(i386bsd_frame_saved_pc): Remove prototype.
	* config/i386/tm-nbsdaout.h (i386nbsd_aout_use_struct_convention):
	Remove prototype.
	(USE_STRUCT_CONVENTION): Remove prototype.
	* i386bsd-nat.c (i386bsd_sigcontext_pc_offset): Remove
	declaration.
	(_initialize_i386bsd_nat): Revise logic to determine some
	constants at compile time when compiling a native GDB.  Warn if
	things don't match up with what we expect.
	* i386bsd-tdep.c (i386bsd_sigtramp_start, i386bsd_sigtramp_end):
	Remove variables.
	(i386bsd_in_sigtramp): Rename tp i386bsd_pc_in_sigtramp.  Rewrite
	to use date stored in `struct gdbarch_tdep'.
	(i386bsd_sigcontext_offset): Remove varaible.
	(i386bsd_sigtramp_saved_pc): Make public.  Rewrite to use data
	stored in `struct gdbarch_tdep'.
	(i386bsd_frame_saved_pc): Make static.
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): New functions.
	(i386bsd_sc_pc_offset, i386nbsd_sc_pc_offset,
	i386fbsd_sigtramp_start, i386fbsd_sigtramp_end,
	i386fbsd4_sc_pc_offset): New variables.
	(i386bsd_init_abi, i386nbsd_init_abi, i386nbsdelf_init_abi,
	i386fbsdaout_init_abi, i386fbsd_init_abi, i386fbsd4_init_abi): New
	functions.
	(i386bsd_aout_osabi_sniffer, _initialize_i386bsd_tdep): New
	functions.
	* i386fbsd-nat.c (_initialize_i386fbsd_nat): Fix type in comment.
	Modify the value of i386fbsd_sigtramp_start and
	i386fbsd_sigtramp_end instead of i386bsd_sigtramp_start and
	i386fbsd_sigtramp_end.
	* i386nbsd-tdep.c: (i386nbsd_aout_use_struct_convention): Remove
	function.

	* config/i386/tm-linux.h (I386_LINUX_ORIG_EAX_REGNUM): Move
	define to i386-linux-tdep.h.
	(NUM_REGS, MAX_NUM_REGS, REGISTER_BYTES, REGISTER_NAME,
	REGISTER_BYTE, REGISTER_RAW_SIZE, STAB_REG_TO_REGNUM): Remove
	defines.
	(i386_linux_register_name, i386_linux_register_byte,
	i386_linux_register_raw_size): Remove prototypes.
	(i386_linux_svr4_fetch_link_map_offsets): Remove prototype.
	(SVR4_FETCH_LINK_MAP_OFFSETS): Remove define.
	(IN_SIGTRAMP, FRAME_CHAIN, FRAME_SAVED_PC, SAVED_PC_AFTER_CALL,
	TARGET_WRITE_PC): Remove defines.
	(i386_linux_in_sigtramp, i386_linux_frame_chain,
	i386_linux_frame_saved_pc, i386_linux_saved_pc_after_call,
	i386_linux_write_pc): Remove prototypes.
	(JB_ELEMENT_SIZE, JB_PC, GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	* i386-linux-tdep.h: New file.
	* i386-linux-nat.c: Include "i386-linux-tdep.h".
	* i386-linux-tdep.c: Include "i386-tdep.h" and
	"i386-linux-tdep.h".
	(i386_linux_register_name, i386_linux_register_byte,
	i386_linux_register_raw_size, i386_linux_in_sigtramp,
	i386_linux_write_pc, i386_linux_svr4_fetch_link_map_offsets):
	Make static.
	(i386_linux_init_abi): New function.
	(_initialize_i386_linux_tdep): New function.

	* config/i386/tm-i386.h (SAVED_PC_AFTER_CALL): Remove define.
	(i386_saved_pc_after_call): Remove prototype.
	(MAX_NUM_REGS): Increase to deal with Linux's orig_eax "register".
	(REGISTER_NAME, STAB_REG_TO_REGNUM, SDB_REG_TO_REGNUM,
	DWARF_REG_TO_REGNUM, DWARF2_REG_TO_REGNUM): Remove defines.
	(i386_register_name, i386_stab_reg_to_regnum,
	i386_dwarf_reg_to_regnum): Remove prototypes.
	(SIZEOF_GREGS, SIZEOF_FPU_REGS, SIZEOF_FPU_CTL_REGS,
	SIZEOF_SSE_REGS): Remove defines.
	(REGISTER_BYTES): Remove define.
	(REGISTER_BYTE, REGISTER_RAW_SIZE): Remove defines.
	(i386_register_byte, i386_register_raw_size): Remove prototypes.
	(FRAME_CHAIN, FRAME_SAVED_PC): Remove defines.
	(i386_frame_chain, i386_frame_saved_pc): Remove prototypes.
	* config/i386/tm-i386v4.h (FRAME_CHAIN_VALID): Remove define.
	(JB_ELEMENT_SIZE, JB_PC, JB_EBX, JB_ESI, JB_EDI, JB_EBP, JB_ESP,
	JB_EDX, GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	(I386V4_SIGTRAMP_SAVED_PC, IN_SIGTRAMP): Remove defines.
	(sigtramp_saved_pc): Remove define.
	(i386v4_sigtramp_saved_pc): Remove prototype.
	* config/i386/tm-go32.h (FRAME_CHAIN,
	FRAMELESS_FUNCTION_INVOCATION, FRAME_SAVED_PC): Remove defines.
	(i386go32_frame_saved_pc): Remove prototype.
	(JB_ELEMENT_SIZE, JB_PC, GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	* i386-tdep.h: Include "osabi.h".
	(enum i386_abi): Removed.
	(enum struct_return): New enum.
	(struct gdbarch_tdep): Remove abi member, add osabi, jb_pc_offset,
	struct_return, sigtramp_saved_pc, sigtramp_start, sigtramp_end and
	sc_pc_offset members.
	(i386_gdbarch_register_os_abi): Remove prototype.
	(I386_NUM_GREGS, I386_NUM_FREGS, I386_NUM_XREGS,
	I386_SSE_NUM_REGS): New defines.
	(I386_SIZEOF_GREGS, I386_SIZEOF_FREGS, I386_SIZEOF_XREGS,
	I386_SSE_SIZEOF_REGS): New defines.
	(i386_register_name, i386_register_byte, i386_register_raw_size):
	New prototypes.
	(i386_elf_init_abi, i386_svr4_init_abi): New prototypes.
	(i386bsd_sigtramp_saved_pc): New prototype.
	* i386-tdep.c: Don't include "elf-bfd.h".
	(i386_stab_reg_to_regnum, i386_dwarf_reg_to_regnum,
	i386_frame_chain, i386_saved_pc_after_call): Make static.
	(i386_frame_saved_pc): Rewrite to call architecture dependent
	function to deal with signal handlers.  Make static.
	(i386go32_frame_saved_pc): Removed.
	[GET_LONGJMP_TARGET] (JB_PC, JB_ELEMENT_SIZE, get_longjmp_target):
	Removed.
	(i386_get_longjmp_target): New function.
	(default_struct_convention, pcc_struct_convention,
	reg_struct_convention, valid_conventions, struct_convention): New
	variables.
	(i386_use_struct_convention): New function.
	(i386v4_sigtramp_saved_pc): Renamed to
	i386_svr4_sigtramp_saved_pc.  Made static.  Moved.
	(i386_pc_in_sigtramp): New function.
	(i386_abi_names): Removed.
	(ABI_TAG_OS_GNU_LINUX, ABI_TAG_OS_GNU_HURD,
	ABI_TAG_OS_GNU_SOLARIS, ABI_TAG_OS_FREEBSD, ABI_TAG_OS_NETBSD):
	Removed.
	(process_note_sections, i386_elf_abi_from_note, i386_elf_abi,
	i386_gdbarch_register_os_abi): Removed.
	(struct i386_abi_handler): Removed.
	(i386_abi_handler_list): Removed.
	(i386_svr4_pc_in_sigtramp, i386_go32_pc_in_sigtramp): New
	functions.
	(i386_elf_init_abi, i386_svr4_init_abi, i386_go32_init_abi,
	i386_nw_init_abi): New functions.
	(i386_gdbarch_init): Rewritten to use generic OS ABI framework.
	Use set_gdbarch_xxx() calls instead of relying on macros for a
	number of calls.
	(i386_coff_osabi_sniffer, i386_nlm_osabi_sniffer): New functions.
	(_initialize_i386_tdep): Add new 'struct-convcention' command.
	Register the various architecture variants defined in this file.

2002-06-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.h (TYPE_FLAG_VARARGS): Update comment.
	(struct main_type): Remove arg_types member.  Update comments for
	struct field.
	(TYPE_ARG_TYPES): Remove.
	(TYPE_FN_FIELD_ARGS): Update.
	(smash_to_method_type): Update prototype.

	* c-typeprint.c (cp_type_print_method_args): Take method type
	instead of argument list.  Use new argument layout.  Simplify.
	(c_type_print_args): Use new argument layout.  Simplify.
	(c_type_print_base): Update call to cp_type_print_method_args.
	* dwarf2read.c (dwarf2_add_member_fn): Remove unneeded type
	argument; use die->type instead.  Update call to
	smash_to_method_type.
	(read_structure_scope): Update call to dwarf2_add_member_fn.
	* gdbtypes.c (allocate_stub_method): Update comment.
	(smash_to_method_type): Take new NARGS and VARARGS arguments.
	Use new argument layout.
	(check_stub_method): Use new argument layout.  Don't count
	void as an argument.
	(print_arg_types): Update comments.  Use new argument layout.
	(recursive_dump_type): Don't print arg_types member.
	* hpread.c (hpread_read_struct_type): Use new argument layout.
	(fixup_class_method_type): Likewise.
	(hpread_type_lookup): Likewise.
	* stabsread.c (read_type): Update calls to read_args and
	smash_to_method_type.
	(read_args): Use new argument layout.  Simplify.
	* valops.c (typecmp): Use new argument layout.  Update parameters
	and comments.  Simplify.
	(hand_function_call): Use new argument layout.
	(search_struct_method): Update call to typecmp.
	(find_overload_match): Use new argument layout.

2002-06-13  Daniel Jacobowitz  <drow@mvista.com>

	* NEWS: Mention multithreaded debug support for gdbserver.

2002-06-13  Daniel Jacobowitz  <drow@mvista.com>

	* MAINTAINERS: Mention NEWS.

2002-06-13  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/regcache.c: Add comment.

2002-06-13  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (PROC_SYMBOL): Add warning comment.
	(struct mips_objfile_private, compare_pdr_entries): New.
	(non_heuristic_proc_desc): Read the ".pdr" section if it
	is present.

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

	* arm-tdep.c (arm_push_arguments): Rewrite using a two-pass loop.
	(arm_debug): New static variable.
	(_initialize_arm_tdep): Add ``set debug arm'' command.

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

	* Makefile.in (sim_arm_h): Define.
	(arm-tdep.o): Add $(sim_arm_h) and $(gdb_assert_h).
	* arm-tdep.c: Include "gdb/sim-arm.h" and "gdb_assert.h".
	(arm_register_sim_regno): New function, map an internal REGNUM
	onto a simulator register number.
	(arm_gdbarch_init): Set register_sim_regno.

2002-06-09  Aldy Hernandez  <aldyh@redhat.com>

	* MAINTAINERS: Add self.

2002-06-11  Jim Blandy  <jimb@redhat.com>

	* source.c (source_info): Mention whether the symtab has
	information about preprocessor macros.

	Call the command `info macro', not `show macro'.
	* macrocmd.c (info_macro_command): Renamed from `show_macro_command'.
	Fix error message.
	(_initialize_macrocmd): Register `info_macro_command' in
	`infolist', not `showlist'.

2002-06-11  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (MIPS_FPU_TYPE, FP_REGISTER_DOUBLE, MIPS_EABI)
	(MIPS_LAST_FP_ARG_REGNUM, MIPS_LAST_ARG_REGNUM)
	(MIPS_DEFAULT_SAVED_REGSIZE, MIPS_REGS_HAVE_HOME_P)
	(MIPS_DEFAULT_STACK_ARGSIZE, GDB_TARGET_IS_MIPS64)
	(MIPS_DEFAULT_MASK_ADDRESS_P): Remove obsolete definitions.  Define
	unconditionally.
	(set_mipsfpu_single_command, set_mipsfpu_double_command)
	(set_mipsfpu_none_command): Remove if (GDB_MULTI_ARCH).
	(_initialize_mips_tdep): Remove dead code.
	* config/mips/tm-irix5.h (MIPS_LAST_ARG_REGNUM)
	(MIPS_DEFAULT_STACK_ARGSIZE, MIPS_REGS_HAVE_HOME_P): Remove.
	* config/mips/tm-irix6.h (MIPS_LAST_ARG_REGNUM)
	(MIPS_DEFAULT_STACK_ARGSIZE, MIPS_REGS_HAVE_HOME_P): Remove.
	* config/mips/tm-mips.h (MIPS_EABI, MIPS_LAST_ARG_REGNUM,
	MIPS_LAST_FP_ARG_REGNUM): Remove.

2002-06-11  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/thread-db.c: New file.
	* gdbserver/proc-service.c: New file.
	* gdbserver/acinclude.m4: New file.
	* gdbserver/Makefile.in: Add GDBSERVER_LIBS, gdb_proc_service_h,
	proc-service.o, and thread-db.o.
	(linux-low.o): Add USE_THREAD_DB.
	* gdbserver/acconfig.h: Add HAVE_PRGREGSET_T, HAVE_PRFPREGSET_T,
	HAVE_LWPID_T, HAVE_PSADDR_T, and PRFPREGSET_T_BROKEN.
	* gdbserver/aclocal.m4: Regenerated.
	* gdbserver/config.in: Regenerated.
	* gdbserver/configure: Regenerated.
	* gdbserver/configure.in: Check for proc_service.h, sys/procfs.h,
	thread_db.h, and linux/elf.h headrs.
	Check for lwpid_t, psaddr_t, prgregset_t, prfpregset_t, and
	PRFPREGSET_T_BROKEN.  Introduce srv_thread_depfiles and USE_THREAD_DB.
	Check for -lthread_db and thread support.
	* gdbserver/configure.srv: Enable thread_db support for ARM, i386, MIPS,
	PowerPC, and SuperH.
	* gdbserver/i387-fp.c: Constify arguments.
	* gdbserver/i387-fp.h: Likewise.
	* gdbserver/inferiors.c: (struct thread_info): Renamed from
	`struct inferior_info'.  Remove PID member.  Use generic inferior
	list header.  All uses updated.
	(inferiors, signal_pid): Removed.
	(all_threads): New variable.
	(get_thread): Define.
	(add_inferior_to_list): New function.
	(for_each_inferior): New function.
	(change_inferior_id): New function.
	(add_inferior): Removed.
	(remove_inferior): New function.
	(add_thread): New function.
	(free_one_thread): New function.
	(remove_thread): New function.
	(clear_inferiors): Use for_each_inferior and free_one_thread.
	(find_inferior): New function.
	(find_inferior_id): New function.
	(inferior_target_data): Update argument type.
	(set_inferior_target_data): Likewise.
	(inferior_regcache_data): Likewise.
	(set_inferior_regcache_data): Likewise.
	* gdbserver/linux-low.c (linux_bp_reinsert): Remove.
	(all_processes, stopping_threads, using_thrads)
	(struct pending_signals, debug_threads, pid_of): New.
	(inferior_pid): Replace with macro.
	(struct inferior_linux_data): Remove.
	(get_stop_pc, add_process): New functions.
	(linux_create_inferior): Restore SIGRTMIN+1 before calling exec.
	Use add_process and add_thread.
	(linux_attach_lwp): New function, based on old linux_attach.  Use
	add_process and add_thread.  Set stop_expected for new threads.
	(linux_attach): New function.
	(linux_kill_one_process): New function.
	(linux_kill): Kill all LWPs.
	(linux_thread_alive): Use find_inferior_id.
	(check_removed_breakpoints, status_pending_p): New functions.
	(linux_wait_for_process): Renamed from linux_wait_for_one_inferior.
	Update.  Use WNOHANG.  Wait for cloned processes also.  Update process
	struct for the found process.
	(linux_wait_for_event): New function.
	(linux_wait): Use it.  Support LWPs.
	(send_sigstop, wait_for_sigstop, stop_all_processes)
	(linux_resume_one_process, linux_continue_one_process): New functions.
	(linux_resume): Support LWPs.
	(REGISTER_RAW_SIZE): Remove.
	(fetch_register): Use register_size instead.  Call supply_register.
	(usr_store_inferior_registers): Likewise.  Call collect_register.
	Fix recursive case.
	(regsets_fetch_inferior_registers): Improve error message.
	(regsets_store_inferior_registers): Add debugging.
	(linux_look_up_symbols): Call thread_db_init if USE_THREAD_DB.
	(unstopped_p, linux_signal_pid): New functions.
	(linux_target_ops): Add linux_signal_pid.
	(linux_init_signals): New function.
	(initialize_low): Call it.  Initialize using_threads.
	* gdbserver/regcache.c (inferior_regcache_data): Add valid
	flag.
	(get_regcache): Fetch registers lazily.  Add fetch argument
	and update all callers.
	(regcache_invalidate_one, regcache_invalidate): New
	functions.
	(new_register_cache): Renamed from create_register_cache.
	Return the new regcache.
	(free_register_cache): Change argument to a void *.
	(registers_to_string, registers_from_string): Call get_regcache
	with fetch flag set.
	(register_data): Make static.  Pass fetch flag to get_regcache.
	(supply_register): Call get_regcache with fetch flag clear.
	(collect_register): Call get_regcache with fetch flag set.
	(collect_register_as_string): New function.
	* gdbserver/regcache.h: Update.
	* gdbserver/remote-utils.c (putpkt): Flush after debug output and use
	stderr.
	Handle input interrupts while waiting for an ACK.
	(input_interrupt): Use signal_pid method.
	(getpkt): Flush after debug output and use stderr.
	(outreg): Use collect_register_as_string.
	(new_thread_notify, dead_thread_notify): New functions.
	(prepare_resume_reply): Check using_threads.  Set thread_from_wait
	and general_thread.
	(look_up_one_symbol): Flush after debug output.
	* gdbserver/server.c (step_thread, server_waiting): New variables.
	(start_inferior): Don't use signal_pid.  Update call to mywait.
	(attach_inferior): Update call to mywait.
	(handle_query): Handle qfThreadInfo and qsThreadInfo.
	(main): Don't fetch/store registers explicitly.  Use
	set_desired_inferior.  Support proposed ``Hs'' packet.  Update
	calls to mywait.
	* gdbserver/server.h: Update.
	(struct inferior_list, struct_inferior_list_entry): New.
	* gdbserver/target.c (set_desired_inferior): New.
	(write_inferior_memory): Constify.
	(mywait): New function.
	* gdbserver/target.h: Update.
	(struct target_ops): New signal_pid method.
	(mywait): Removed macro, added prototype.

	* gdbserver/linux-low.h (regset_func): Removed.
	(regset_fill_func, regset_store_func): New.
	(enum regset_type): New.
	(struct regset_info): Add type field.  Use new operation types.
	(struct linux_target_ops): stop_pc renamed to get_pc.
	Add decr_pc_after_break and breakpoint_at.
	(get_process, get_thread_proess, get_process_thread)
	(strut process_info, all_processes, linux_attach_lwp)
	(thread_db_init): New.

	* gdbserver/linux-arm-low.c (arm_get_pc, arm_set_pc,
	arm_breakpoint, arm_breakpoint_len, arm_breakpoint_at): New.
	(the_low_target): Add new members.
	* gdbserver/linux-i386-low.c (i386_store_gregset, i386_store_fpregset)
	(i386_store_fpxregset): Constify.
	(target_regsets): Add new kind identifier.
	(i386_get_pc): Renamed from i386_stop_pc.  Simplify.
	(i386_set_pc): Add debugging.
	(i386_breakpoint_at): New function.
	(the_low_target): Add new members.
	* gdbserver/linux-mips-low.c (mips_get_pc, mips_set_pc)
	(mips_breakpoint, mips_breakpoint_len, mips_reinsert_addr)
	(mips_breakpoint_at): New.
	(the_low_target): Add new members.
	* gdbserver/linux-ppc-low.c (ppc_get_pc, ppc_set_pc)
	(ppc_breakpoint, ppc_breakpoint_len, ppc_breakpoint_at): New.
	(the_low_target): Add new members.
	* gdbserver/linux-sh-low.c (sh_get_pc, sh_set_pc)
	(sh_breakpoint, sh_breakpoint_len, sh_breakpoint_at): New.
	(the_low_target): Add new members.
	* gdbserver/linux-x86-64-low.c (target_regsets): Add new kind
	identifier.

2002-06-11  Michal Ludvig  <mludvig@suse.cz>

	* dwarf2cfi.c (unwind_tmp_obstack_init): New.
	(unwind_tmp_obstack_free, parse_frame_info)
	(update_context, cfi_read_fp, cfi_write_fp)
	(cfi_frame_chain, cfi_init_extra_frame_info)
	(cfi_virtual_frame_pointer): Use the above function.
	* dwarf2cfi.c: Reindented (using 'indent dwarf2cfi.c').

2002-06-11  Corinna Vinschen  <vinschen@redhat.com>

	* v850-tdep.c (v850_type_is_scalar): New function.
	(v850_use_struct_convention): Match current gcc implementation
	as close as possible.
	(v850_push_arguments): Fix stack_offset handling.  Don't write
	struct_addr into register.  This is done by v850_store_struct_return.
	(v850_extract_return_value): Care for structs.
	(v850_store_return_value): Ditto.
	(v850_store_struct_return): Actually write address.

2002-06-11  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_skip_prologue): Fix to work on functions
	without debug information too.

2002-06-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (PRINT_FLOAT_INFO): Add frame and ui_file parameters.
	Make multi-arch pure.
	* gdbarch.h, gdbarch.c: Re-generate.
	* arm-tdep.c (arm_print_float_info): Update.
	* arch-utils.h (default_print_float_info): Update.
	* arch-utils.c (default_print_float_info): Update.
	* infcmd.c (float_info): Update call.

2002-06-10  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (init.c): Move the call to _initialize_gdbtypes to
	the front of the initialize list.

2002-06-10  Andrew Cagney  <ac131313@redhat.com>

	* infrun.c (struct inferior_status): Replace fields
	selected_frame_address and selected_level with field
	selected_frame_id.
	(save_inferior_status): Update.  Use get_frame_id.
	(struct restore_selected_frame_args): Delete.
	(restore_selected_frame): Update.  Use frame_find_by_id.
	(restore_inferior_status): Update.

	* breakpoint.h (struct breakpoint): Change type of
	watchpoint_frame to frame_id.
	* breakpoint.c (insert_breakpoints): Use frame_find_by_id.  Remove
	call to get_current_frame.
	(do_enable_breakpoint): Use frame_find_by_id.  Remove call to
	get_current_frame.
	(watchpoint_check): Use frame_find_by_id.

	* frame.h (record_selected_frame): Delete declaration.
	* stack.c (record_selected_frame): Delete function.
	
	* frame.h (struct frame_id): Define.
	(get_frame_id): Declare.
	(frame_find_by_id): Declare.
	* frame.c (frame_find_by_id): New function.
	(get_frame_id): New function.

2002-06-10  Andrey Volkov <avolkov@transas.com>

	* ser-e7kpc.c: Fix duplicated define and call of 
        _initialize_ser_e7000pc
	    
2002-06-09  Daniel Jacobowitz  <drow@mvista.com>

	* signals/signals.c (target_signal_from_host): Fix #ifdef
	SIGRTMIN case.
	(do_target_signal_to_host): Likewise.

2002-06-09  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (mips_find_abi_section): New function.
	(mips_gdbarch_init): Call it.

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

	* solib-svr4.c (init_fetch_link_map_offsets): Simply return
	legacy_fetch_link_map_offsets.  Adjust comment to reflect reality
	after Andrew's 2002-06-08 gdbarch change.

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

	* i386-linux-nat.c (suppy_gregset): Don't supply
	I386_LINUX_ORIG_EAX_REGNUM if there isn't room for it in GDB's
	register cache.
	(fill_gregset): Don't fetch it under the same circumstances.

2002-06-09  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (callback_h): Define.
	(remote_sim_h): Update path to remote-sim.h.
	(remote-rdp.o): Add $(callback_h).
	(remote-sim.o): Use $(callback_h).
	* remote-sim.c: Include "gdb/callback.h" and "gdb/remote-sim.h".
	* remote-rdp.c: Include "gdb/callback.h".

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

	* osabi.h (gdb_osabi): Add GDB_OSABI_GO32 and GDB_OSABI_NETWARE.
	* osabi.c (gdb_osabi_names): Add "DJGPP" and "NetWare".

2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* sparcl-tdep.c: Use __CYGWIN__ instead of __CYGWIN32__.
	* rdi-share/serpardr.c: Ditto.
	* rdi-share/unixcomm.c: Ditto.
	* rdi-share/serdrv.c: Ditto.
	* rdi-share/hostchan.h: Ditto.
	* rdi-share/hostchan.c: Ditto.
	* rdi-share/host.h: Ditto.
	* rdi-share/devsw.c: Ditto.

	* objfiles.h: Change type of obj_private to void pointer.
	* pa64solib.c: Update copyright.  Don't include "assert.h", use
	strcmp instead of STREQ, use LONGEST, do not use PTR
	* somsolib.c: Ditto.

	* config/djgpp/fnchange.lst: Fix problems with bfd/elf32-i386.c,
	bfd/elf32-i386qnx.c, bfd/elf32-sh.c, bfd/elf32-sh64-nbsd.c,
	bfd/elf64-sh64-nbsd.c bfd/elf64-sh64.c.

2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* frame.c (GET_SAVED_REGISTER): Delete macro definition.
	(default_get_saved_register): Delete function.
	* gdbarch.sh (GET_SAVED_REGISTER): Set default to
	generic_unwind_get_saved_register.
	* gdbarch.h, gdbarch.c: Re-generate.
	
2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (FRAME_CHAIN_VALID): Set default to
	generic_func_frame_chain_valid.
	* gdbarch.h, gdbarch.c: Re-generate.
	* blockframe.c (generic_func_frame_chain_valid): Only check
	PC_IN_CALL_DUMMY when generic dummy frames.  Don't worry about
	passing FP to PC_IN_CALL_DUMMY.
	Fix PR gdb/360.

2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (struct gdbarch_data): Add field init_p.
	(register_gdbarch_data): Initialize init_p.
	(gdbarch_data): Initialize data pointer using the init function.
	(init_gdbarch_data): Delete function.
	(gdbarch_update_p): Update.
	(initialize_non_multiarch): Update.
	(struct gdbarch): Add field initialized_p.
	* gdbarch.h, gdbarch.c: Re-generate.

2002-06-07  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-linux-nat.c (x86_64_fxsave_offset): New.
	(supply_fpregset, fill_fpregset): Don't call i387_*_fxsave,
	better do the things actually here.
	* x86-64-tdep.c (x86_64_register_name2nr): New.
	(x86_64_register_name): Renamed to x86_64_register_nr2name.
	(x86_64_gdbarch_init): Respect the above change.
	* x86-64-tdep.h (x86_64_register_name2nr)
	(x86_64_register_nr2name): Add prototypes.
	* config/i386/x86-64linux.mt (TDEPFILES): Remove i387-tdep.o.

2002-06-06  Michael Snyder  <msnyder@redhat.com>

	* d10v-tdep.c (d10v_push_arguments): Handle struct_return.
	Delete extra braces and re-indent.
	(d10v_store_return_value): Char return values
	must be shifted over by one byte in R0.
	(d10v_extract_return_value): Delete extra braces, re-indent.

2002-06-06  Elena Zannoni  <ezannoni@redhat.com>

        * d10v-tdep.c (d10v_read_sp, d10v_read_fp): Add prototype.
        (d10v_register_virtual_type): Make $fp and $sp be pointer to data.
        (d10v_integer_to_address): Rewrite.
        (d10v_frame_init_saved_regs): When reading fp and sp registers use
        the d10v specific functions which take care of converting to the
        correct space.

2002-06-06  Elena Zannoni  <ezannoni@redhat.com>

	* config/djgpp/fnchange.lst: Add testsuite files altivec-abi.c,
	altivec-abi.exp, altivec-regs.c, altivec-regs.exp.

2002-06-02  Andrew Cagney  <ac131313@redhat.com>

	* config/alpha/nm-linux.h: Add "config/" prefix to tm, nm and xm
	includes.
	* config/tm-linux.h: Ditto.
	* config/alpha/tm-alphalinux.h: Ditto.
	* config/arm/nm-linux.h, config/arm/tm-linux.h: Ditto.
	* config/arm/xm-nbsd.h, config/i386/nm-gnu.h: Ditto.
	* config/i386/nm-i386lynx.h, config/i386/nm-i386sol2.h: Ditto.
	* config/i386/nm-i386v4.h, config/i386/nm-i386v42mp.h: Ditto.
	* config/i386/nm-linux.h, config/i386/nm-m3.h: Ditto.
	* config/i386/nm-ptx4.h, config/i386/nm-x86-64.h: Ditto.
	* config/i386/tm-i386gnu.h, config/i386/tm-i386lynx.h: Ditto.
	* config/i386/tm-i386m3.h, config/i386/tm-i386sco5.h: Ditto.
	* config/i386/tm-i386v4.h, config/i386/tm-linux.h: Ditto.
	* config/i386/tm-ptx4.h, config/i386/tm-vxworks.h: Ditto.
	* config/i386/xm-i386v4.h, config/i386/xm-nbsd.h: Ditto.
	* config/i386/xm-ptx.h, config/i386/xm-ptx4.h: Ditto.
	* config/i960/tm-vx960.h, config/ia64/nm-aix.h: Ditto.
	* config/ia64/nm-linux.h, config/ia64/tm-aix.h: Ditto.
	* config/ia64/tm-linux.h, config/ia64/xm-aix.h: Ditto.
	* config/m68k/nm-linux.h, config/m68k/nm-m68klynx.h: Ditto.
	* config/m68k/nm-sysv4.h, config/m68k/tm-linux.h: Ditto.
	* config/m68k/tm-m68klynx.h, config/m68k/tm-m68kv4.h: Ditto.
	* config/m68k/tm-sun2os4.h, config/m68k/tm-sun3os4.h: Ditto.
	* config/m68k/tm-vx68.h, config/m68k/xm-m68kv4.h: Ditto.
	* config/m68k/xm-nbsd.h, config/m88k/nm-delta88v4.h: Ditto.
	* config/m88k/tm-delta88v4.h, config/m88k/xm-delta88v4.h: Ditto.
	* config/mips/nm-irix5.h, config/mips/nm-linux.h: Ditto.
	* config/mips/tm-linux.h, config/mips/tm-mips64.h: Ditto.
	* config/mips/tm-mipsm3.h, config/mips/tm-mipsv4.h: Ditto.
	* config/mips/tm-vxmips.h, config/mips/xm-irix5.h: Ditto.
	* config/mips/xm-mipsv4.h, config/ns32k/xm-nbsd.h: Ditto.
	* config/pa/nm-hppao.h, config/powerpc/nm-linux.h: Ditto.
	* config/powerpc/tm-linux.h, config/powerpc/tm-vxworks.h: Ditto.
	* config/powerpc/xm-aix.h, config/rs6000/nm-rs6000ly.h: Ditto.
	* config/rs6000/tm-rs6000ly.h, config/rs6000/xm-aix4.h: Ditto.
	* config/sh/tm-linux.h, config/sparc/nm-linux.h: Ditto.
	* config/sparc/nm-sparclynx.h, config/sparc/nm-sun4sol2.h: Ditto.
	* config/sparc/tm-linux.h, config/sparc/tm-sp64linux.h: Ditto.
	* config/sparc/tm-sp64sim.h, config/sparc/tm-sparclynx.h: Ditto.
	* config/sparc/tm-sun4os4.h, config/sparc/tm-sun4sol2.h: Ditto.
	* config/sparc/tm-vxsparc.h, config/sparc/xm-sun4sol2.h: Ditto.

2002-05-04  Aidan Skinner <aidan@velvet.net>

	* ada-exp.tab.c: New file
	* ada-exp.y: New file
	* ada-lang.c: New file
	* ada-lang.h: New file
	* ada-lex.c: New file
	* ada-lex.l: New file
	* ada-tasks.c: New file
	* ada-typeprint.c: New file
	* ada-valprint.c: New file
	
2002-06-02  Jason Thorpe  <thorpej@wasabisystems.com>

	* ppcnbsd-tdep.c (ppcnbsd_init_abi): Don't set
	use_struct_convention to ppc_sysv_abi_broken_use_struct_convention.

2002-06-02  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/rs6000/aix4.mt (TDEPFILES): Use ppc-sysv-tdep.o
	insetead of ppc-linux-tdep.o.
	* config/rs6000/rs6000.mt (TDEPFILES): Likewise.
	* config/rs6000/rs6000lynx.mt (TDEPFILES): Likewise.

2002-06-02  Andrew Cagney  <ac131313@redhat.com>

	2002-05-07 Christian Groessler <chris@groessler.org>
        * z8k-tdep.c (z8k_print_register_hook): Fix display of 32 and 64
	bit register contents for little endian hosts.

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

	* MAINTAINERS: Mention that any `HP/UX reader' can be changed by
	any maintainer.

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

	* gdbarch.h: Regenerate.

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

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

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

	* stack.c (frame_info): Use frame_register_unwind instead of
	saved_regs.  Mention when the SP is on the stack or in a register.

	* frame.h (frame_register_unwind_ftype): Define.  Document.
	(struct frame_info): Add field register_unwind and
	register_unwind_cache.
	(frame_register_unwind): Declare.
	(generic_unwind_get_saved_register): Declare.

	* frame.c (frame_register_unwind): New function.
	(generic_unwind_get_saved_register): New function.

	* blockframe.c (generic_call_dummy_register_unwind): New function.
	(frame_saved_regs_register_unwind): New function.
	(set_unwind_by_pc): New function.
	(create_new_frame): New function.
	(get_prev_frame): New function.

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

	* a29k-share/: Delete directory.
	* remote-vx29k.c: Delete file.

2002-05-30  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/djgpp/fnchange.lst: Add ns32knbsd-nat.c, ns32knbsd-tdep.c,
	ppcnbsd-nat.c, ppcnbsd-tdep.c, sparcnbsd-nat.c, and sparcnbsd-tdep.c.

2002-05-30  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add sparc64nbsd-nat.c,
	sparcnbsd-nat.c, and sparcnbsd-tdep.c.
	(sparc64nbsd-nat.o)
	(sparcnbsd-nat.o)
	(sparcnbsd-tdep.o): New dependency lists.
	* NEWS: Note new UltraSPARC NetBSD native configuration.
	* configure.host (sparc64-*-netbsd*): New host.
	* configure.tgt (sparc-*-netbsdelf*)
	(sparc-*-netbsd*): Set gdb_target to nbsd.
	(sparc64-*-netbsd*): New target.
	* sparc64nbsd-nat.c: New file.
	* sparcnbsd-nat.c: New file.
	* sparcnbsd-tdep.c: New file.
	* sparcnbsd-tdep.h: New file.
	* config/sparc/nbsd.mt: New file.
	* config/sparc/nbsd64.mh: New file.
	* config/sparc/nbsd64.mt: New file.
	* config/sparc/nbsdaout.mh (NATDEPFILES): Remove corelow.o,
	sparc-nat.o, and solib.o.  Add sparcnbsd-nat.o.
	(HOST_IPC): Remove.
	* config/sparc/nbsdaout.mt: Remove.
	* config/sparc/nbsdelf.mh (NATDEPFILES): Remove corelow.o,
	sparc-nat.o, and solib.o.  Add sparcnbsd-nat.o.
	(HOST_IPC): Remove.
	* config/sparc/nbsdelf.mt: Remove.
	* config/sparc/nm-nbsd.h: Update copyright years.  Remove all
	sparc-nat.c compatiblity defines.
	* config/sparc/tm-nbsd.h: Update copyright years.  Include solib.h.
	(GDB_MULTI_ARCH): Set to GDB_MULTI_ARCH_PARTIAL.
	* config/sparc/tm-nbsd64.h: New file.
	* config/sparc/tm-nbsdaout.h: Remove.
	* config/sparc/xm-nbsd.h: Remove.

2002-05-30  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (sparc-tdep.o): Add osabi.h to dependency list.
	* sparc-tdep.c: Include osabi.h.
	(gdbarch_tdep): Add osabi member.
	(_initialize_sparc_tdep): Use gdbarch_register.
	(sparc_gdbarch_init): Use generic OS ABI framework.
	(sparc_dump_tdep): New function.

2002-05-30  Kevin Buettner  <kevinb@redhat.com>

	* corefile.c (do_captured_read_memory_integer): Return non-zero
	result.
	(safe_read_memory_integer): Copy result of memory read when
	status is non-zero.  Also, add comments.

2002-05-20  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ppc_tdep_h): Define.
	(ppc-linux-nat.o)
	(ppc-linux-tdep.o)
	(rs6000-tdep.o): Use $(ppc_tdep_h).
	(ppc-sysv-tdep.o)
	(ppcnbsd-nat.o)
	(ppcnbsd-tdep.o): New dependency lists.
	* ppc-tdep.h: Use generic OS ABI framework.
	* ppc-linux-tdep.c (_initialize_ppc_linux_tdep)
	(ppc_linux_init_abi): New functions.
	(ppc_sysv_abi_broken_use_struct_convention)
	(ppc_sysv_abi_use_struct_convention)
	(ppc_sysv_abi_push_arguments): Move to...
	* ppc-sysv-tdep.c: ...here.
	* ppcnbsd-nat.c: Don't include gdbcore.h and regcache.h.
	* rs6000-tdep.c (process_note_abi_tag_sections)
	(get_elfosabi): Remove.
	(rs6000_gdbarch_init): Use generic OS ABI framework.
	(rs6000_dump_tdep): New function.
	(_initialize_rs6000_tdep): Use gdbarch_register.
	* config/powerpc/linux.mt (TDEPFILES): Add ppc-sysv-tdep.o.
	* config/powerpc/nbsd.mh (NATDEPFILES): Remove solib-legacy.o.
	* config/powerpc/aix.mt (TDEPFILES): Use ppc-sysv-tdep.o instead
	of ppc-linux-tdep.o.
	* config/powerpc/nbsd.mt (TDEPFILES): Likewise.
	* config/powerpc/ppc-eabi.mt (TDEPFILES): Likewise.
	* config/powerpc/ppc-sim.mt (TDEPFILES): Likewise.
	* config/powerpc/ppcle-eabi.mt (TDEPFILES): Likewise.
	* config/powerpc/ppcle-sim.mt (TDEPFILES): Likewise.
	* config/powerpc/vxworks.mt (TDEPFILES): Likewise.

2002-05-29  Jim Blandy  <jimb@redhat.com>

	* macroscope.c (default_macro_scope): Put `void' in empty argument
	list.

2002-05-29  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (arch-utils.o): Add $(sim_regno_h).
	* arch-utils.c: Include "sim-regno.h".
	* gdbarch.sh: Don't include "sim-regno.h".
	* gdbarch.h, gdbarch.c: Regenerate.
	* sim-regno.h (legacy_register_sim_regno): Move declaration from
	here.
	* arch-utils.h (legacy_register_sim_regno): To here.
	* remote-sim.c (legacy_register_sim_regno): Move function from
	here.
	* arch-utils.c (legacy_register_sim_regno): To here.

2002-05-28  Andrew Cagney  <ac131313@redhat.com>

	* sim-regno.h: New file.
	* Makefile.in (sim_regno_h): Define.
	(d10v-tdep.o, remote-sim.o): Add dependency on $(sim_regno_h).
	* remote-sim.c: Include "sim-regno.h" and "gdb_assert.h".
	(legacy_register_sim_regno): New function.
	(one2one_register_sim_regno): New function.
	(gdbsim_fetch_register): Rewrite.
	(gdbsim_store_register): Only store a register when
	REGISTER_SIM_REGNO is valid.
	* d10v-tdep.c: Include "sim-regno.h".
	(d10v_ts2_register_sim_regno): Add legacy_regiter_sim_regno check.
	(d10v_ts3_register_sim_regno): Ditto.
	* gdbarch.sh: Include "sim-regno.h".
	(REGISTER_SIM_REGNO): Set default to legacy_register_sim_regno.
	* gdbarch.h, gdbarch.c: Regenerate.
	* arch-utils.h (default_register_sim_regno): Delete declaration.
	* arch-utils.c (default_register_sim_regno): Delete function.

2002-05-28  Jason Thorpe  <thorpej@wasabisystems.com>

	* ppcnbsd-nat.c: Rewrite.
	* ppcnbsd-tdep.c: New file.
	* ppcnbsd-tdep.h: New file.
	* config/powerpc/nbsd.mh (NATDEPFILES): Remove corelow.o,
	solib.o, and solib-svr4.o.
	* config/powerpc/nbsd.mt (TDEPFILES): Add ppcnbsd-tdep.o,
	nbsd-tdep.o, and corelow.o.

2002-05-28  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (--enable-gdb-build-warnings): Rewrite script to use
	`tr' and `sed'.  Mention that `broken' targets are not expected to
	build.

2002-05-27  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_skip_prologue): Remove obsolete note.
	Let PC point right after the prologue before looking up symbols.
	
2002-05-27  Martin M. Hunt  <hunt@redhat.com>

	* i386-tdep.c (i386_register_virtual_type): Return 
	builtin_type_vec128i for SSE registers.

	* gdbtypes.h (builtin_type_vec128i): Declare.

	* gdbtypes.c (build_builtin_type_vec128i): New function.
	(builtin_type_v2_double, builtin_type_v4_int64): New types.
	(builtin_type_vec128i): New type for SSE2 128-bit registers.
	(build_gdbtypes): Initialize new builtin vector types.
	(_initialize_gdbtypes): Register new vector types with gdbarch.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* MAINTAINERS: ns32k is not longer an obsolete candidate,
	since it has been multi-arch'd.
	* NEWS: Note that ns32k-*-* is now partial multi-arch.
	Move Alpha and VAX multi-arch news entries to same section
	as other multi-arch news.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c: include gdbtypes.h, inferior.h, regcache.h,
	target.s, arch-utils.h, ns32k-tdep.h.  Make many functions
	static.  Rename some register numbers to put them in ns32k-tdep
	private namespace.
	(ns32k_get_saved_register, ns32k_gdbarch_init_32082,
	ns32k_gdbarch_init_32382, ns32k_gdbarch_init, ns32k_dump_tdep): New
	functions.
	(_initialize_ns32k_tdep): Use gdbarch_register.
	* ns32k-tdep.h: New file.
	* ns32knbsd-tdep.c: New file.
	* config/ns32k/nbsdaout.mt (TDEPFILES): Add ns32knbsd-tdep.o.
	* config/ns32k/tm-nbsd.h: Include "ns32k/tm-ns32k.h".
	(IN_SOLIB_CALL_TRAMPOLINE, REGISTER_NAME, NUM_REGS,
	REGISTER_BYTES, REGISTER_BYTE): Remove.
	* config/ns32k/tm-ns32k.h: New file.
	* config/ns32k/tm-umax.h: Remove.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c (ns32k_saved_pc_after_call,
	ns32k_store_struct_return, ns32k_extract_return_value,
	ns32k_store_return_value, ns32k_extract_struct_value_address): New
	functions.
	* config/ns32k/tm-umax.h (SAVED_PC_AFTER_CALL): Define as
	ns32k_saved_pc_after_call.
	(STORE_STRUCT_RETURN): Define as ns32k_store_struct_return.
	(EXTRACT_RETURN_VALUE): Define as ns32k_extract_return_value.
	(STORE_RETURN_VALUE): Define as ns32k_store_return_value.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Define as
	ns32k_extract_struct_value_address.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c (ns32k_call_dummy_words, sizeof_ns32k_call_dummy_words,
	ns32k_fix_call_dummy): New.
	* config/ns32k/tm-umax.h (CALL_DUMMY_WORDS): Define as
	ns32k_call_dummy_words.
	(SIZEOF_CALL_DUMMY_WORDS): Define as sizeof_ns32k_call_dummy_words.
	(CALL_DUMMY, CALL_DUMMY_LENGTH, CALL_DUMMY_ADDR,
	CALL_DUMMY_NARGS): Remove.
	(FIX_CALL_DUMMY): Define as ns32k_fix_call_dummy.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c (ns32k_breakpoint_from_pc, ns32k_frame_chain,
	ns32k_frame_saved_pc, ns32k_frame_args_address,
	ns32k_frame_locals_address, ns32k_frame_init_saved_regs,
	ns32k_push_dummy_frame, ns32k_pop_frame): New functions.
	* config/ns32k/tm-nbsd.h (FRAME_SAVED_PC): Remove.
	* config/ns32k/tm-umax.h (INNER_THAN): Define as core_addr_lessthan.
	(BREAKPOINT_FROM_PC): Define as ns32k_breakpoint_from_pc.
	(BREAKPOINT): Remove..
	(FRAME_CHAIN): Define as ns32k_frame_chain.
	(FRAME_SAVED_PC): Define as ns32k_frame_saved_pc.
	(FRAME_ARGS_ADDRESS): Define as ns32k_frame_args_address.
	(FRAME_LOCALS_ADDRESS): Define as ns32k_frame_locals_address.
	(FRAME_FIND_SAVED_REGS): Remove.
	(FRAME_INIT_SAVED_REGS): Define as ns32k_frame_init_saved_regs.
	(PUSH_DUMMY_FRAME): Define as ns32k_push_dummy_frame.
	(POP_FRAME): Define as ns32k_pop_frame.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c (ns32k_register_byte_32082,
	ns32k_register_byte_32382, ns32k_register_raw_size,
	ns32k_register_virtual_size, ns32k_register_virtual_type): New
	functions.
	* config/ns32k/tm-nbsd.h (REGISTER_BYTE): Define as
	ns32k_register_byte_32382.
	* config/ns32k/tm-umax.h: Update copyright years.
	(REGISTER_BYTE): Define as ns32k_register_byte_32082.
	(REGISTER_RAW_SIZE): Define as ns32k_register_raw_size.
	(REGISTER_VIRTUAL_SIZE): Define as ns32k_register_virtual_size.
	(REGISTER_VIRTUAL_TYPE): Define as ns32k_register_virtual_type.
	(ns32k_get_enter_addr): Fix prototype.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c: Update copyright years.
	(ns32k_register_name_32082): New function.
	(ns32k_register_name_32382): Ditto.
	* config/ns32k/tm-nbsd.h (REGISTER_NAMES): Remove.
	(REGISTER_NAME): Define as ns32k_register_name_32382.
	* config/ns32k/tm-umax.h (REGISTER_NAMES): Remove.
	(REGISTER_NAME): Define as ns32k_register_name_32082.

2002-05-24  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c (free_line_header): Use xfree, not free.

2002-05-24  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/djgpp/fnchange.lst: Add alphabsd-nat.c,
	alphabsd-tdep.c, mipsnbsd-nat.c, and mipsnbsd-tdep.c

2002-05-23  Andrew Cagney  <ac131313@redhat.com>

	* PROBLEMS: Mention s390 and FreeBSD 4.4 build problems.

2002-05-23  Andrew Cagney  <ac131313@redhat.com>

	From Ross Alexander at NEC Europe:
	* config/pa/hpux11w.mh (NATDEPFILES): Add solib.o.

2002-05-23  Michael Snyder  <msnyder@redhat.com>

	* cli/cli-dump.c (restore_command): Use parse_and_eval_long
	for input, rather than parse_and_eval_address.  

2002-05-23  Andrew Cagney  <ac131313@redhat.com>

	* d10v-tdep.c: Include "gdb/sim-d10v.h" instead of "sim-d10v.h".
	* Makefile.in (sim_d10v_h): Update definition.

2002-05-24  Andrew Cagney  <cagney@redhat.com>

	* d10v-tdep.c (d10v_gdbarch_init): Revert old code included in
	change `2002-05-22 Michael Snyder' below.
	(d10v_push_arguments): Ditto.
	(d10v_extract_return_value): Ditto.

2002-05-23  Jim Blandy  <jimb@redhat.com>

	* macrotab.c (check_for_redefinition): Don't complain if the new
	definition is the same as the previous one.  Take more arguments
	to allow the comparison.
	(macro_define_object, macro_define_function): Pass more arguments
	to check_for_redefinition.

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

	* d10v-tdep.c: Change a few macros to enums for ease of debugging.
	(d10v_frame_chain_valid): Add PC_IN_CALL_DUMMY clause.
	(d10v_frame_saved_pc): Add PC_IN_CALL_DUMMY clause.
	(d10v_frame_chain): Bail immediately if PC_IN_CALL_DUMMY.
	Don't bail if return_pc is PC_IN_CALL_DUMMY.
	Add a temp variable to save a call (and a memory read).
	(d10v_init_extra_frame_info): Get fi->pc from callee's return_pc
	if possible (so that PC_IN_CALL_DUMMY will work).

2002-05-22  Corinna Vinschen  <vinschen@redhat.com>

	* MAINTAINERS: Remove status `OBSOLETE' from v850.

2002-05-22  Michal Ludvig  <mludvig@suse.cz>

	* dwarf2cfi.c (frame_state_for): Added safety check for a valid
	fde->cie_ptr.
	(dwarf2_build_frame_info): Corrected handling of eh_frame.
	(dwarf2_build_frame_info): Add offset to fde->initial_location 
	so that frames of shared libraries are mapped correctly.
	(execute_stack_op): Change type of 'result' from ULONGEST to
	CORE_ADDR.
	
2002-05-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/alpha/tm-nbsd.h: Include solib.h.

2002-05-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* alphanbsd-tdep.c (alphanbsd_sigtramp_offset): Don't make
	assumptions about the host's byte order.

2002-05-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (alphanbsd-tdep.o, shnbsd-tdep.o): Add solib-svr4.h
	to dependency list.
	* alphanbsd-tdep.c: Include solib-svr4.h.
	* shnbsd-tdep.c: Ditto.

2002-05-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (armnbsd-tdep.o): Add solib-svr4.h and
	nbsd-tdep.h to dependency list.
	* configure.host (arm*-*-netbsdelf*, arm*-*-netbsd*,
	i[3456]86-*-netbsdaout*, i[3456]86-*-netbsd*, m68*-*-netbsd*,
	ns32k-*-netbsd*, sparc-*-netbsdaout*, sparc-*-netbsd*): Use
	nbsdaout.mh and nbsdelf.mh consistently.
	* configure.tgt (i[3456]86-*-netbsd*, m68*-*-netbsd*,
	ns32k-*-netbsd*, sparc-*-netbsdelf*, sparc-*-netbsd*) Use
	nbsdaout.mt and nbsdelf.mh consistently.
	* armnbsd-tdep.c: Include nbsd-tdep.h and solib-svr4.h. 
	(arm_netbsd_elf_init_abi): Use set_solib_svr4_fetch_link_map_offsets
	to set nbsd_ilp32_solib_svr4_fetch_link_map_offsets.
	* config/nm-nbsd.h: Garbage-collect SVR4_SHARED_LIBS.  Move
	a.out shared library stuff from here...
	* config/nm-nbsdaout.h: ...to here.
	* config/tm-nbsd.h: Remove.
	* config/alpha/nm-nbsd.h (SVR4_SHARED_LIBS): Remove.
	* config/arm/nbsd.mh: Remove.
	* config/arm/nbsd.mt (TDEPFILES): Remove solib-sunos.o, add
	nbsd-tdep.o.
	* config/arm/nbsdaout.mh: New file. 
	* config/arm/nbsdelf.mh: New file.
	* config/arm/nm-nbsdaout.h: New file.
	* config/i386/nbsd.mh: Remove.
	* config/i386/nbsd.mt: Remove.
	* config/i386/nbsdaout.mh: New file.
	* config/i386/nbsdaout.mt: New file.
	* config/i386/nbsdelf.mh (NAT_FILE): Use nm-nbsd.h.
	* config/i386/nbsdelf.mt (TM_FILE): Use tm-nbsd.h.
	* config/i386/nm-nbsd.h (REGISTER_U_ADDR, 
	i386_register_u_addr): Remove.
	* config/i386/nm-nbsdaout.h: New file.
	* config/i386/nm-nbsdelf.h: Remove.
	* config/i386/tm-nbsd.h: Don't include config/tm-nbsd.h.
	(USE_STRUCT_CONVENTION): Remove.
	* config/i386/tm-nbsdaout.h: New file.
	* config/i386/tm-nbsdelf.h: Remove.
	* config/m68k/nbsd.mh: Remove.
	* config/m68k/nbsd.mt: Remove.
	* config/m68k/nbsdaout.mh: New file.
	* config/m68k/nbsdaout.mt: New file. 
	* config/m68k/nm-nbsd.h: Use config/nm-nbsd.h.
	* config/m68k/nm-nbsdaout.h: New file.
	* config/m68k/tm-nbsd.h: Don't include config/tm-nbsd.h.
	(IN_SOLIB_CALL_TRAMPOLINE): Define.
	* config/ns32k/nbsd.mh: Remove.
	* config/ns32k/nbsd.mt: Remove. 
	* config/ns32k/nbsdaout.mh: New file.
	* config/ns32k/nbsdaout.mt: New file.
	* config/ns32k/nm-nbsd.h: Include config/nm-nbsd.h. 
	* config/ns32k/nm-nbsdaout.h: New file.
	* config/ns32k/tm-nbsd.h: Don't include config/tm-nbsd.h.  
	(IN_SOLIB_CALL_TRAMPOLINE): Define.
	* config/powerpc/nm-nbsd.h: Include config/nm-nbsd.h.
	(SVR4_SHARED_LIBS): Remove.
	* config/powerpc/tm-nbsd.h: Dont' include config/tm-nbsd.h.
	* config/sparc/nbsd.mh: Remove.
	* config/sparc/nbsd.mt: Remove.
	* config/sparc/nbsdaout.mh: New file.
	* config/sparc/nbsdaout.mt: New file.
	* config/sparc/nbsdelf.mh (NAT_FILE): Use nm-nbsd.h.
	* config/sparc/nbsdelf.mt: New file.
	* config/sparc/nm-nbsdaout.h: New file.   
	* config/sparc/nm-nbsdelf.h: Remove.
	* config/sparc/tm-nbsd.h: Don't include config/tm-nbsd.h.
	* config/sparc/tm-nbsdaout.h: New file.

2002-05-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add mipsnbsd-nat.c and
	mipsnbsd-tdep.c
	(mipsnbsd-nat.o, mipsnbsd-tdep.o): New dependency lists.

2002-05-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add shnbsd-tdep.c and
	shnbsd-nat.c.
	(shnbsd-tdep.o, shnbsd-nat.o): New dependency lists.

2002-05-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* NEWS: Note new MIPS NetBSD native configuration. 
	* configure.host (mips*-*-netbsd*): New host. 
	* configure.tgt (mips*-*-netbsd*): New target. 
	* mipsnbsd-nat.c: New file.
	* mipsnbsd-tdep.c: New file.
	* mipsnbsd-tdep.h: New file.
	* config/mips/nbsd.mh: New file.
	* config/mips/nbsd.mt: New file.
	* config/mips/nm-nbsd.h: New file.
	* config/mips/tm-nbsd.h: New file.

2002-05-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (SFILES): Add osabi.c.
	(COMMON_OBS): Add osabi.o.
	(osabi.o): New dependency list.
	* osabi.c: New file.
	* osabi.h: New file.
	* doc/gdbint.texinfo: Document new generic OS ABI framework.

	* Makefile.in (alpha_tdep_h): Define and use instead of
	alpha-tdep.h.
	* alpha-tdep.c (alpha_abi_names, process_note_abi_tag_sections,
	get_elfosabi, alpha_abi_handler_list, alpha_gdbarch_register_os_abi):
	Remove.
	(alpha_gdbarch_init, alpha_dump_tdep): Use generic OS ABI framework.
	* alpha-tdep.h: Include osabi.h.
	(alpha_abi): Remove.
	(gdbarch_tdep): Use generic OS ABI framework.
	* alpha-linux-tdep.c (_initialize_alpha_linux_tdep): Use
	gdbarch_register_osabi.
	* alpha-osf1-tdep.c (_initialize_alpha_osf1_tdep): Likewise.
	* alphafbsd-tdep.c (_initialize_alphafbsd_tdep): Likewise.
	* alphanbsd-tdep.c (_initialize_alphanbsd_tdep): Likewise.

	* Makefile.in (sh_tdep_h): Add osabi.h.
	* sh-tdep.h (sh_osabi): Remove.
	(gdbarch_tdep): Use generic OS ABI framework.
	* sh-tdep.c (sh_osabi_names, process_note_abi_tag_sections,
	sh_osabi_handler_list, sh_gdbarch_register_os_abi): Remove.
	(sh_gdbarch_init, sh_dump_tdep): Use generic OS ABI framework.
	* shnbsd-tdep.c (_initialize_shnbsd_tdep): Use gdbarch_register_osabi.

	* Makefile.in (arm_tdep_h): Define and use instead of arm-tdep.h.
	* arm-linux-tdep.c (_initialize_arm_linux_tdep): Use
	gdbarch_register_osabi.
	* arm-tdep.c (arm_abi_names, process_note_abi_tag_sections,
	arm_abi_handler_list, arm_gdbarch_register_os_abi): Remove.
	(get_elfosabi): Rename to...
	(arm_elf_osabi_sniffer): ...this.  Adjust to use generic OS
	ABI framework support routines.
	(arm_gdbarch_init): Use generic OS ABI framework.
	(arm_dump_tdep): Likewise.
	(_initialize_arm_tdep): Likewise.
	* arm-tdep.h: Include osabi.h.
	(arm_abi): Remove.
	(gdbarch_tdep): Remove arm_abi and abi_name members.  Add
	osabi member.
	(arm_gdbarch_register_os_abi): Remove prototype.
	* armnbsd-tdep.c (arm_netbsd_aout_osabi_sniffer): New function.
	(_initialize_arm_netbsd_tdep): Use gdbarch_register_osabi.

	* Makefile.in (mips-tdep.o): Add osabi.h to dependency list.
	* mips-tdep.c: Include osabi.h.
	(gdbarch_tdep, mips_gdbarch_init, mips_dump_tdep): Use generic
	OS ABI framework.

2002-05-20  Kazu Hirata  <kazu@cs.umass.edu>

	* h8300-tdep.c: Fix formatting.

2002-05-20  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (rs6000_do_registers_info): Simplify code for
	printing vector registers.

2002-05-19  Andrew Cagney  <ac131313@redhat.com>

	From Fernando Nasser:
	* remote.c (remote_async_open_1): Re-throw the exception when the
	connection fails.
	(remote_cisco_open): Ditto.
	(remote_open_1): Ditto.

2002-05-19  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (remote_start_remote_dummy): Add uiout parameter.
	(remote_start_remote): Add uiout parameter.  Pass through to
	remote_start_remote_dummy.
	(remote_open_1): Use catch_exception instead of catch_errors.
	(remote_async_open_1): Ditto.
	(remote_cisco_open): Ditto.

2002-05-19  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (remote_start_remote): Replace PTR with void pointer.
	(sigint_remote_twice_token, sigint_remote_token): Ditto.  Make
	static.

2002-05-18  Andrew Cagney  <ac131313@redhat.com>

	* gdb_indent.sh: Allow the script to be run in the sim directory.

2002-05-18  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/nm-cygwin.h (NO_PTRACE_H): Remove define.
	* config/i386/nm-go32.h (NO_PTRACE_H): Remove define.

	* corelow.c (core_open): Only call set_gdbarch_from_file if
	exec_bfd is NULL.

2002-05-17  Andrey Volkov <avolkov@transas.com>

	* h8300-tdep.c: Add support of EXR register
	* config/h8300/tm-h8300.h: Ditto. 
	
2002-05-17  Andrey Volkov <avolkov@transas.com>

	* h8300-tdep.c: Add additional CCR flags (I,UI,H,U) 
	
2002-05-17  Andrey Volkov <avolkov@transas.com>

	* h8300-tdep.c: Change literal regnums to REGNO.
	
2002-05-17  Jim Blandy  <jimb@redhat.com>

	* NEWS: Note addition of macro support.

	Expand preprocessor macros in C expressions.
	* c-lang.h: #include "macroexp.h", for macro_lookup_ftype.
	(scan_macro_expansion, scanning_macro_expansion,
	finished_macro_expansion): New function declarations.
	(expression_macro_lookup_func, expression_macro_lookup_baton): New
	variable declarations.
	* parser-defs.h (expression_context_pc): New declaration.
	* parse.c (expression_context_pc): New variable.
	(parse_exp_1): Set expression_context_pc, as well as
	expression_context_block.
	* c-exp.y (yylex): If we're not already reading the result of a
	macro expansion, try to macro-expand the next token.  When we're
	done scanning a macro expansion, switch back to the mainline text.
	Commas and `if's in a macro's expansion don't terminate the input.
	* c-lang.c: #include "macroscope.h" and "gdb_assert.h".
	(macro_original_text, macro_expanded_text,
	expression_macro_lookup_func, expression_macro_lookup_baton): New
	variables.
	(scan_macro_expansion, scanning_macro_expansion,
	finished_macro_expansion, scan_macro_cleanup, null_macro_lookup,
	c_preprocess_and_parse): New functions.
	(c_language_defn, cplus_language_defn, asm_language_defn): Call
	c_preprocess_and_parse, instead of c_parse.
	* Makefile.in (c_lang_h): Note that this #includes macroexp.h.
	(c-lang.o): Note dependency on macroscope.h and gdb_assert.h.

Fri May 17 14:26:19 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh-tdep.c (gdb_print_insn_sh64): Delete.
	(gdb_print_insn_sh): Just set info->endian and use print_insn_sh.
	(sh_gdbarch_init): Always use gdb_print_insn_sh.

2002-05-17  Corinna Vinschen  <vinschen@redhat.com>

	* NEWS: Add section for multi-arched targets.  Add v850 to that section.

2002-05-17  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (sh_tdep_h): Define and use.
	* config/sh/tm-sh.h (sh_osabi, sh_abi, gdbarch_tdep,
	register enum): Move to...
	* * sh-tdep.h: ...here.
	* sh-tdep.c: Include sh-tdep.h.
	* sh3-rom.c: Likewise.
	* shnbsd-tdep.c: Likewise.

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

	* arm-tdep.c: Spelling fix in comment.

2002-05-16  Jim Blandy  <jimb@redhat.com>

	Add commands for manually expanding macros and showing their
	definitions.
	* macrocmd.c, macroscope.c, macroscope.h: New files.
	* Makefile.in (SFILES): Add macrocmd.c, macroscope.c.
	(macroscope_h): New variable.
	(HFILES_NO_SRCDIR): Add macroscope.h.
	(COMMON_OBS): Add macrocmd.o, macroscope.o.
	(macroscope.o, macrocmd.o): New rules.

	Teach the Dwarf 2 reader to read macro information.
	* dwarf2read.c: #include "macrotab.h".
	(dwarf_macinfo_buffer): New variable.
	(struct dwarf2_pinfo): New members: dwarf_macinfo_buffer, and
	dwarf_macinfo_size.
	(DWARF_MACINFO_BUFFER, DWARF_MACINFO_SIZE): New macros.
	(dwarf2_missing_macinfo_section, dwarf2_macros_too_long,
	dwarf2_macros_not_terminated, dwarf2_macro_outside_file,
	dwarf2_macro_unmatched_end_file, dwarf2_macro_malformed_definition,
	dwarf2_macro_spaces_in_definition): New complaints.
	(dwarf2_has_info): Initialize dwarf_macinfo_offset.
	(dwarf2_build_psymtabs): Read the .dwarf_macinfo section.
	(dwarf2_build_psymtabs_hard): Record the buffer and its size in
	the partial symbol table.
	(psymtab_to_symtab_1): Set the macinfo buffer and size globals
	from what's recorded in the partial symbol table.
	(read_file_scope): If the compilation unit has a
	`DW_AT_macro_info' attribute, read its macro information.
	* Makefile.in (dwarf2read.o): Depend on macrotab.h.

2002-05-16  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR gdb/546
	* ser-tcp.c: Don't include <netinet/udp.h>.

2002-05-16  Stephane Carrez  <stcarrez@nerim.fr>

	* MAINTAINERS: Update my email address.

2002-05-16  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/nm-nbsd.h: Use "config/nm-nbsd.h" to include generic
	include file of the same name.

2002-05-16  Corinna Vinschen  <vinschen@redhat.com>

	* configure.tgt: Mark v850 as multi-arched.
	* config/v850/tm-v850.h: Remove file.
	* config/v850/v850.mt: Eliminate TM_FILE.

2002-05-16  Corinna Vinschen  <vinschen@redhat.com>

	* v850-tdep.c: Full multi-arch.
	* config/v850/tm-v850.h: Eliminate or move to v850-tdep.c everything.
	Define GDB_MULTI_ARCH to 2.

2002-05-16  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y (current_type): New static variable.
	Carries the type of the expression at the position that is parsed.
	(push_current_type, pop_current_type): Two new functions. Used
	to store/restore current_type in expression on specific tokens.
	(search_field): New static variable. Set to one after parsing a point
	as at that point only a FIELDNAME token should be searched.
	(FIELDNAME): New token. After a point only a token belonging to 
	current_type type definition is allowed.
	(all over token rules): reset and change current_type according
	to rules.
	(exp '[' rule): insert implicit array index field if
	exp is a pascal string type.

2002-05-16  Corinna Vinschen  <vinschen@redhat.com>

	* v850-tdep.c: Fix comment for v850_scan_prologue.  Remove extra
	frame info.  Use frame_info's saved_regs instead of matching member
	in extra_frame_info throughout.
	(v850_frame_init_saved_regs): New function.
	(v850_init_extra_frame_info): Move most functionality into
	v850_frame_init_saved_regs().
	* config/v850/tm-v850.h (EXTRA_FRAME_INFO): Remove definition.
	(v850_frame_find_saved_regs): Remove declaration.
	(FRAME_FIND_SAVED_REGS): Remove definition.
	(v850_frame_init_saved_regs): Add declaration.
	(FRAME_INIT_SAVED_REGS): Add definition.

2002-05-16  Corinna Vinschen  <vinschen@redhat.com>

	* v850-tdep.c: Begin multi-arch'ing v850.
	(v850_target_architecture_hook): Remove function.
	(v850_gdbarch_init): New function.  Add code previously in
	v850_target_architecture_hook().
	(_initialize_v850_tdep): Don't  set target_architecture_hook.
	Call register_gdbarch_init() instead.

2002-05-16 Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.h (struct cplus_struct_type): Remove args field.
	* hpread.c (hpread_read_struct_type): Remove assignments to args.
	(fixup_class_method_type): Likewise.

2002-05-15  Daniel Jacobowitz  <drow@mvista.com>

	From Martin Pool <mbp@samba.org>:
	* gdbserver/server.c (gdbserver_usage): New function.
	(main): Call it.

2002-06-25  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (stop_registers): Change variable's type to ``struct
	regcache'''.
	(xmalloc_inferior_status): Delete function.
	(free_inferior_status): Delete function.
	(normal_stop): Use regcache_cpy.
	(struct inferior_status): Change type of fields ``stop_registers''
	and ``registers'' to ``struct regcache''.
	(write_inferior_status_register): Use regcache_write.
	(save_inferior_status): Instead of calling
	xmalloc_inferior_status, allocate the inf_status buffer directly.
	Use regcache_dup_no_passthrough and regcache_dup to save the
	buffers.
	(restore_inferior_status): Use regcache_xfree and regcache_cpy.
	Replace the stop_registers regcache instead of overriding it.  Use
	regcache_xfree.  Instead of calling free_inferior_status, xfree
	the buffer directly.
	(discard_inferior_status): Use regcache_xfree.  Instead of calling
	free_inferior_status, xfree the buffer directly.
	(build_infrun): Use regcache_xmalloc.
	(_initialize_infrun): Delete redundant call to build_infrun.

	* Makefile.in (infcmd.o): Add $(regcache_h).

	* infcmd.c: Include "regcache.h".
	(run_stack_dummy): Use deprecated_grub_regcache_for_registers to
	obtain the address of `stop_registers' register buffer.
	(print_return_value): Ditto.

	* inferior.h (struct regcache): Add opaque declaration.
	(stop_registers): Change variable's declared type to ``struct
	regcache''.

2002-06-24  Tom Tromey  <tromey@redhat.com>

	* cli/cli-decode.c (add_show_from_set): Fixed typo in comment.
	* target.c (initialize_targets): Fixed typo in
	trust-readonly-sections `show' documentation.

	* main.c: Marked all strings with _().

2002-06-24  Don Howard  <dhoward@redhat.com>

        * memattr.c (create_mem_region): Treat hi == 0 as a special case
        that means max CORE_ADDR+1.
        (lookup_mem_region): Ditto.
        (mem_info_command): Ditto.

2002-06-24  Grace Sainsbury  <graces@redhat.com>

	* config/m68k/tm-m68k.h (DECR_PC_AFTER_BREAK): Remove.
	(REGISTER_BYTES_OK): Remove.
	(REGISTER_BYTES): Remove.
	(STORE_STRUCT_RETURN): Remove.
	(DEPRECATED_EXTRACT_RETURN_VALUE): Remove.
	(STORE_RETURN_VALUE): Remove.
	(DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Remove.
	(FRAME_CHAIN): Remove.
	(FRAMELESS_FUNCTION_INVOCATION): Remove.
	(FRAME_SAVED_PC): Remove.  
	* m68k-tdep.c (m68k_register_bytes_ok):Add.
	(m68k_store_struct_return): Add.
	(m68k_deprecated_extract_return_value): Add.
	(m68k_deprecated_extract_struct_value_address): Add.
	(m68k_store_return_value): Add.
	(m68k_frame_chain): Add.
	(m68k_frameless_function_invocation): Add.
	(m68k_frame_saved_pc): Add.
	(m68k_gdbarch_init): added set_gdbarch calls for new 
	functions and deleted macros.

2002-06-23  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (HFILES_NO_SRCDIR): Remove old files.
	(ALLDEPFILES): Likewise.
	(udiheaders): Removed.
	(udip2soc.o): Likewise.
	(udi2go32.o): Likewise.
	(udr.o): Likewise.
	(HFILES_WITH_SRCDIR): Don't mention udiheaders.

2002-06-22  Andrew Cagney  <ac131313@redhat.com>

	* infrun.c (_initialize_infrun): Delete unnecessary call to
	build_infrun.

	* regcache.h: Update comments describing the regcache_cpy family
	of functions.
	(regcache_save, regcache_restore): Delete declaration.
	(regcache_save_no_passthrough): Delete declaration.
	(regcache_restore_no_passthrough): Delete declaration.
	* regcache.c (regcache_save): Delete function.
	(regcache_save_no_passthrough): Delete function.
	(regcache_restore): Delete function.
	(regcache_restore_no_passthrough): Delete function.

2002-06-21  Andrew Cagney  <ac131313@redhat.com>

	* config/m68k/tm-m68k.h: Fix typo.
	(FRAME_INIT_SAVED_REGS): Define when non-multi-arch.
	(m68k_frame_init_saved_regs): Declare.

2002-06-21  Jim Blandy  <jimb@redhat.com>

	Remove some vestiges of Harris 88k support.
	* dwarf2read.c (decode_locdesc): Remove `#if' block for Harris 88k
	register numbering quirk.
	* elfread.c (elf_symtab_read): Remove `#if' block for skipping
	odd symbols occurring in Harris 88k ELF targets.

2002-06-21  Tom Tromey  <tromey@redhat.com>

	* gdb_locale.h: New file.
	* Makefile.in (GDB_CFLAGS): Define LOCALEDIR.
	(defs_h): Added gdb_locale.h.
	* configure, config.in: Rebuilt.
	* configure.in (PACKAGE): Define.
	* defs.h: Include gdb_locale.h.
	* main.c (captured_main): Call setlocale, bindtextdomain,
	textdomain.

2002-06-21  Dave Brolley  <brolley@redhat.com>

	From Stan Shebs, Jim Blandy, Mark Salter, Kevin Buettner:
	* config/frv/frv.mt: New file.
	* config/frv/tm-frv.h: New file.
	* configure.tgt: Support frv-*-*.
	* Makefile.in (frv-tdep.o): New target.
	* frv-tdep.c: New file.
	* NEWS: Mention frv.

2002-06-21  Dave Brolley  <brolley@redhat.com>

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

2002-06-21  Grace Sainsbury  <graces@redhat.com>

	* config/m68k/tm-m68k.h (REGISTER_BYTE, REGISTER_RAW_SIZE)
	(REGISTER_VIRTUAL_SIZE, MAX_REGISTER_RAW_SIZE)
	(REGISTER_VIRTUAL_TYPE, REGISTER_NAMES, TARGET_LONG_DOUBLE_FORMAT)
	(FUNCTION_START_OFFSET, SKIP_PROLOGUE, SAVED_PC_AFTER_CALL)
	(INNER_THAN, STACK_ALIGN, REGISTER_SIZE): Remove macros.

	* m68k-tdep.c: Include arch-utils.h
	(m68k_register_raw_size): Add.
	(m68k_register_virtual_size): Add.
	(m68k_register_virtual_type): Add.
	(m68k_register_name): Add.
	(m68k_stack_align): Add.
	(m68k_register_byte): Add.
	(m68k_gdbarch_init): Add set_gdbarch calls for macros removed in
	tm-m68k.h.

2002-06-21  Grace Sainsbury  <graces@redhat.com>

	* m68k-tdep.c (m68k_frame_init_saved_regs): Replace
        m68k_find_saved_regs.
        (m68k_pop_frame): Removed saved_regs structure, and replaced
        references to it with frame->saved_regs.
        (m68k_gdbarch_init): Added function calls to initialize the
        gdbarch structure.
	(m68k_fix_call_dummy): Add. 
	* config/m68k/tm-m68k.h: (FRAME_FIND_SAVED_REGS): Remove.
       	(CALL_DUMMY): Remove.
	(CALL_DUMMY_LENGTH): Remove.
	(CALL_DUMMY_START_OFFSET): Remove.
	(CALL_DUMMY_BREAKPOINT_OFFSET): Remove.
	(FIX_CALL_DUMMY): Remove.
	(PUSH_DUMMY_FRAME): Remove.
	(POP_FRAME): Remove.

2002-06-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* parse.c (parse_fprintf): New function used to avoid calls to
	fprintf in bison parser generated debug code.
	* parser-defs.h: Declaration of new parse_fprintf function.
	* ada-exp.y, c-exp.y, f-exp.y, jv-exp.y, m2-exp.y, p-exp.y:
	Set YYDEBUG to 1 by default.
	Set YYFPRINTF as parse_fprintf.

2002-06-21  Michal Ludvig  <mludvig@suse.cz>

	* dwarf2cfi.c (read_encoded_pointer): Don't handle pointer 
	encoding anymore.
	(pointer_encoding, enum ptr_encoding): New.
	(execute_cfa_program): Take care about pointer encoding.	
	(dwarf2_build_frame_info): Only call parse_frame_info for 
	.debug_frame and .eh_frame.
	(parse_frame_info): New, derived from former dwarf2_build_frame_info.
	fixed augmentation handling, added relative addressing, 
	ignore duplicate FDEs. Added comments.
	* dwarf2cfi.c: Reindented.
	
2002-06-20  Elena Zannoni  <ezannoni@redhat.com>

	* event-top.c (command_handler): Don't use space_at_cmd_start
	unless there is sbrk() on the host. Assign time and space data
	to union fields of the appropriate length.

2002-06-20  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_register_nr2name): Rename to 
	x86_64_register_name. Return type changed to 'const char *'.
	(x86_64_register_name2nr): Rename to x86_64_register_number.
	(x86_64_gdbarch_init): Update to reflect the change.
	* x86-64-tdep.h: Ditto.
	* x86-64-linux-nat.c (x86_64_fxsave_offset)
	(supply_fpregset): Ditto.

2002-06-19  Andrew Cagney  <cagney@redhat.com>

	* regcache.h: Update copyright.
	(struct regcache, struct gdbarch): Add opaque declarations.
	(current_regcache): Declare global variable.
	(regcache_read, regcache_write): Add gdbarch parameter.
	(regcache_save, regcache_save_no_passthrough)
	(regcache_restore, regcache_restore_no_passthrough)
	(regcache_dup, regcache_dup_no_passthrough)
	(regcache_cpy, regcache_cpy_no_passthrough)
	(deprecated_grub_regcache_for_registers)
	(deprecated_grub_regcache_for_register_valid)
	(regcache_valid_p): Add function declarations.
	
	* regcache.c: Update copyright.
	(regcache_descr_handle): New global variable.
	(struct regcache_descr): Define.
	(init_legacy_regcache_descr, init_regcache_descr): New functions.
	(regcache_descr, xfree_regcache_descr): New functions.
	(struct regcache): Define.
	(regcache_xmalloc, regcache_xfree): New functions.
	(regcache_cpy, regcache_cpy_no_passthrough): New functions.
	(regcache_dup, regcache_dup_no_passthrough): New functions.
	(regcache_valid_p, regcache_read_as_address): New functions.
	(deprecated_grub_regcache_for_registers): New function.
	(deprecated_grub_regcache_for_register_valid): New function.
	(current_regcache): New global variable.
	(register_buffer): Add regcache parameter.  Update calls.
	(regcache_read, regcache_write): Add regcache parameter.  Rewrite.
	(read_register_gen, write_register_gen): Update register_buffer
	call.  Test for legacy_p instead of gdbarch_register_read_p or
	gdbarch_register_write_p.
	(regcache_collect): Update register_buffer call.
	(build_regcache): Rewrite.  Use deprecated grub functions.
	(regcache_save, regcache_save_no_passthrough): New functions.
	(regcache_restore, regcache_restore_no_passthrough): New
	functions.
	(_initialize_regcache): Create the regcache_data_handle. Swap
	current_regcache global variable.
	
	* sh-tdep.c (sh_pseudo_register_read): Add current_regcache
	parameter to regcache_read and regcache_write calls.
	(sh4_register_read): Ditto.
	(sh64_pseudo_register_read): Ditto.
	(sh64_register_read): Ditto.
	(sh_pseudo_register_write): Ditto.
	(sh4_register_write): Ditto.
	(sh64_pseudo_register_write): Ditto.
	(sh64_register_write): Ditto.

	* defs.h (XCALLOC): Define.

2002-06-19  Grace Sainsbury  <graces@redhat.com>

	* config/m68k/tm-m68k.h (GDB_MULTI_ARCH): Added (set to 0).
	* m68k-tdep.c (m68k_gdbarch_init): Added.
	(m68k_dump_tdep): Added.

2002-06-19  Daniel Jacobowitz  <drow@mvista.com>

	* ada-lang.c (fill_in_ada_prototype): Update comment.

2002-06-19  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (enum mips_abi): Explicitly start at 0.  Add
	MIPS_ABI_LAST.
	(mips_abi_string, mips_abi_strings): New.
	(struct gdbarch_tdep): Remove mips_abi_string, add found_abi.
	(mips_gdbarch_init): Set tdep->found_abi.  Don't set
	tdep->mips_abi_string.  Honor mips_abi_string.  Default to
	O32 if no ABI is found.
	(mips_dump_tdep): Use mips_abi_strings.
	(mips_abi_update): New function.
	(_initialize_mips_tdep): Initialize mips_abi_string.  Add  
	``set mips abi'' and ``show mips abi''.  Check the size of
	mips_abi_strings.

2002-06-19  Andrew Cagney  <cagney@redhat.com>

	* i386-linux-tdep.c (i386_linux_register_name): Make return type
	constant.

2002-06-18  Joel Brobecker  <brobecker@gnat.com>

	* alpha-tdep.c (heuristic_proc_desc): Compute the size of the  
	current frame using only the first stack size adjustment. All
	subsequent size adjustments are not considered to be part of
	the "static" part of the current frame.
	Compute the address of the saved registers relative to the
	Frame Pointer ($fp) instead of the Stack Pointer if $fp is
	in use in this frame.

2002-06-18  Don Howard  <dhoward@redhat.com>
 
        * valops.c (value_ind): Use value_at_lazy() when dereferencing
        type int expressions.  Thanks to Jim Blandy <jimb@redhat.com> for
        suggesting this solution.

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

	* config/romp/xm-rtbsd.h: Delete file.
	* config/romp/rtbsd.mh: Delete file.

2002-06-18  Keith Seitz  <keiths@redhat.com>

	* breakpoint.c (condition_command): Post breakpoint_modify
	when a condition is added to an existing breakpoint.
	(commands_command): Likewise for commands.
	(set_ignore_count): Likewise for ignore counts.
	If no tty, do not simply return, still need to send event
	notification.
	(ignore_command): Only print a newline if the command came
	from a tty.
	Don't call breakpoints_changed, since this is now properly
	handled by set_ignore_count.

2002-06-18  Andrew Cagney  <cagney@redhat.com>

	* MAINTAINERS: Note that cris-elf target can be compiled with
	-Werror.
	* cris-tdep.c (cris_register_name): Make return type constant.
	(cris_breakpoint_from_pc): Ditto.

2002-06-18  Michal Ludvig  <mludvig@suse.cz>

	* frame.h (struct frame_info): Change type of context to 
	'struct context'.

2002-06-17  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (REGISTER_NAME): Change return type a constant string
	pointer.
	* gdbarch.h, gdbarch.c: Regenerate.
	* config/mips/tm-mips.h (mips_register_name): Update.
	* i386-tdep.h (i386_register_name): Update.
	* mips-tdep.c (mips_register_name): Update
	* alpha-tdep.c (alpha_register_name): Update.
	* arch-utils.c (legacy_register_name): Update.
	* arch-utils.h (legacy_register_name): Update.
	* avr-tdep.c (avr_register_name): Update.
	* ia64-tdep.c (ia64_register_name): Update.
	* i386-tdep.c (i386_register_name): Update.
	* sparc-tdep.c (sparc32_register_name): Update.
	(sparc64_register_name): Update.
	(sparclite_register_name): Update.
	(sparclet_register_name): Update.
	* sh-tdep.c (sh_generic_register_name): Update.
	(sh_sh_register_name): Update.
	(sh_sh3_register_name): Update.
	(sh_sh3e_register_name): Update.
	(sh_sh_dsp_register_name): Update.
	(sh_sh3_dsp_register_name): Update.
	(sh_sh4_register_name): Update.
	(sh_sh64_register_name): Update.
	* s390-tdep.c (s390_register_name): Update.
	* rs6000-tdep.c (rs6000_register_name): Update.
	* ns32k-tdep.c (ns32k_register_name_32082): Update.
	(ns32k_register_name_32382): Update.
	* d10v-tdep.c (d10v_ts2_register_name): Update.
	(d10v_ts3_register_name): Update.
	* xstormy16-tdep.c (xstormy16_register_name): Update.
	* vax-tdep.c (vax_register_name): Update.
	* v850-tdep.c (v850_register_name): Update.
	* m68hc11-tdep.c (m68hc11_register_name): Update.
	* mn10300-tdep.c (mn10300_generic_register_name): Update.
	(am33_register_name): Update.

2002-06-17  Grace Sainsbury  <graces@redhat.com>

	* m68k-tdep.c: Reindented.

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

	* gdb_indent.sh: Add prgregset_t, fpregset_t, and gregset_t to the
	list of predefined types.

2002-06-16  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h (REGISTER_VIRTUAL_TYPE,
	REGISTER_CONVERTIBLE, REGISTER_CONVERT_TO_VIRTUAL,
	REGISTER_CONVERT_TO_RAW): Remove defines.
	(i386_register_virtual_type, i386_register_convertible,
	i386_register_convert_to_virtual, i386_register_convert_to_raw):
	Remove prototypes.
	* i386-tdep.c (i386_gdbarch_init): Adjust for removal of the
	macros mentioned above.

	* config/i386/tm-i386lynx.h (SAVED_PC_AFTER_CALL): Remove define.
	(i386lynx_saved_pc_after_call): Remove prototype.
	* i386ly-tdep.c: Include "i386-tdep.h".
	(i386lynx_saved_pc_after_call): Make static.  Use
	read_memory_nobpt instead of read_memory.  Use
	read_memory_unsigned_integer instead of read_memory_integer.
	(i386lynx_init_abi): New function.
	(i386lynx_coff_osabi_sniffer): New function.
	(_initialize_i386bsd_tdep): New function.

	* config/i386/tm-i386.h (PARM_BOUNDARY, CALL_DUMMY,
	CALL_DUMMY_LENGTH, CALL_DUMMY_START_OFFSET,
	CALL_DUMMY_BREAKPOINT_OFFSET, FIX_CALL_DUMMY): Remove defines.
	(i386_fix_call_dummy): Remove prototype.
	* i386-tdep.c (i386_call_dummy_words): New variable.
	(i386_gdbarch_init): Adjust for removal of the
	macros mentioned above.

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

	* command.h (add_setshow_auto_boolean_cmd): Replace
	add_set_auto_boolean_cmd.
	* cli/cli-decode.c (add_setshow_auto_boolean_cmd): Replace
	add_set_auto_boolean_cmd.
	* cli/cli-decode.h (add_set_auto_boolean_cmd): Delete declaration.
	* mips-tdep.c (_initialize_mips_tdep): Update ``set mips
	mask-address'' command.
	(show_mask_address): Add cmd parameter.
	* remote.c (add_packet_config_cmd): Update.  Change type of
	set_func and show_func to cmd_sfunc_ftype.
	(_initialize_remote): Update `set remote Z-packet'
	(show_remote_protocol_qSymbol_packet_cmd): Add cmd parameter.
	(show_remote_protocol_e_packet_cmd): Ditto.
	(show_remote_protocol_E_packet_cmd): Ditto.
	(show_remote_protocol_P_packet_cmd): Ditto.
	(show_remote_protocol_Z_software_bp_packet_cmd): Ditto.
	(show_remote_protocol_Z_hardware_bp_packet_cmd): Ditto.
	(show_remote_protocol_Z_write_wp_packet_cmd): Ditto.
	(show_remote_protocol_Z_read_wp_packet_cmd): Ditto.
	(show_remote_protocol_Z_access_wp_packet_cmd): Ditto.
	(show_remote_protocol_Z_packet_cmd): Ditto.
	(show_remote_protocol_binary_download_cmd): Ditto.
	(show_remote_cmd): Pass NULL to all of above.

2002-06-15  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h (PUSH_ARGUMENTS, STORE_STRUCT_RETURN,
	DEPRECATED_EXTRACT_RETURN_VALUE, STORE_RETURN_VALUE,
	DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS, PUSH_DUMMY_FRAME,
	POP_FRAME): Remove defines.
	(i386_push_arguments, i386_store_struct_return,
	i386_extract_return_value, i386_store_return_value,
	i386_extract_struct_value_address, i386_push_dummy_frame,
	i386_pop_frame): Renove prototypes.
	* i386-tdep.c (i386_gdbarch_init): Adjust for removal of the
	macros mentioned above.

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

	* cli/cli-decode.c (add_setshow_boolean_cmd): Replace
	add_set_boolean_cmd.
	(add_setshow_cmd): New function.
	* command.h (add_setshow_boolean_cmd): Replace
	add_set_boolean_cmd.
	* remote-rdi.c (_initialize_remote_rdi): Update ``set rdiheartbeat''
	and ``set rdiromatzero''.
	* maint.c (_initialize_maint_cmds): Update commented out code.
	* cli/cli-decode.h (add_set_boolean_cmd): Delete declaration.
	* target.c (initialize_targets): Update `set
	trust-readonly-sections'.
	* remote.c (_initialize_remote): Update `set remotebreak'.

2002-06-15  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h (FUNCTION_START_OFFSET, INNER_THAN,
	BREAKPOINT, DECR_PC_AFTER_BREAK): Removed.
	* i386-tdep.c (i386_skip_prologue): Adjust function signature to
	fit into multi-arch framework.
	(i386_breakpoint_from_pc): New function.
	(i386_gdbarch_init): Adjust for removal of the macros mentioned
	above.

	* config/i386/tm-i386.h (FRAMELESS_FUNCTION_INVOCATION,
	FRAME_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS, FRAME_NUM_ARGS,
	FRAME_ARGS_SKIP, FRAME_INIT_SAVED_REGS): Remove defines.
	(i386_frameless_function_invocation, i386_frame_num_args,
	i386_frame_init_saved_regs): Remove prototypes.
	* i386-tdep.c (i386_gdbarch_init): Adjust for removal of the
	macros mentioned above.

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

	* cli/cli-decode.c (set_cmd_cfunc): Update.
	(set_cmd_sfunc): Update.
	* command.h (cmd_cfunc_ftype, cmd_sfunc_ftype): Declare.
	(set_cmd_sfunc, set_cmd_cfunc): Update.
	* cli/cli-decode.h: Update.

2002-06-15  Mark Kettenis  <kettenis@gnu.org>

	* i386-sol2-tdep.c (i386_sol2_osabi_sniffer): New function.
	(_initialize_i386_sol2_tdep): Register i386_sol2_osabi_sniffer.

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

	* defs.h (auto_boolean): Declare enum.
	* command.h (cmd_auto_boolean): Delete enum.
	* mips-tdep.c (mask_address_var): Update.
	(mips_mask_address_p): Update.
	(show_mask_address): Update.
	* remote.c (struct packet_config): Update.
	(update_packet_config): Update.
	(show_packet_config_cmd): Update.
	(packet_ok): Update.
	(add_packet_config_cmd): Update.
	(_initialize_remote): 
	* command.h: Update.
	* cli/cli-setshow.c (parse_auto_binary_operation): Update.
	(do_setshow_command): Update.
	* cli/cli-decode.c (add_set_auto_boolean_cmd): Update.
	* cli/cli-decode.h: Update.

2002-06-15  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-cygwin.h, config/i386/tm-fbsd.h,
	config/i386/tm-go32.h, config/i386/tm-i386gnu.h,
	config/i386/tm-i386sol2.h, config/i386/tm-i386v4.h,
	config/i386/tm-linux.h, config/i386/tm-nbsd.h,
	config/i386/tm-obsd.h (HAVE_I387_REGS): Remove define.
	* config/i386/tm-i386.h: Unconditionally define FLOAT_INFO.

	* i386-tdep.c (i386_coff_osabi_sniffer): Add "coff-go32" to the
	list of DJGPP COFF targets.

	* config/i386/tm-i386.h (REGISTER_SIZE): Remove define.
	(NUM_GREGS, NUM_FREGS, NUM_SSE_REGS): Remove defines.
	(FP_REGNUM, SP_REGNUM, PC_REGNUM, PS_REGNUM): Remove defines.
	(FP0_REGNUM): Remove define.
	(MAX_REGISTER_RAW_SIZE, MAX_REGISTER_VIRTUAL_SIZE,
	MAX_REGISTER_VIRTUAL_SIZE): Remove define.
	(i386_register_virtual_size): Remove protoype.
	* i386-tdep.c (i386_register_virtual_size): Removed.
	(i386_extract_return_value, i386_store_return_value): Use
	FP0_REGNUM instead of NUM_FREGS to determine whether the
	floating-point registers are available.
	(i386_gdbarch_init): Tweak FIXME about FPU registers.
	Adjust for removal of macros mentioned above.

2002-06-15  Mark Kettenis  <kettenis@gnu.org>

	* i386v4-nat.c: Include "i386-tdep.h".  Reformat and tweak various
	comments.
	(fill_gregset, supply_gregset, supply_fpregset, fill_fpregset):
	Remove prototypes.
	(supply_gregset, fill_gregset): Remove use of register keyword and
	remove declaration for regmap.  Use I386_NUM_GREGS instead of
	NUM_REGS and NUM_FREGS.
	(FPREGSET_FSAVE_OFFSET): Remove.
	(supply_fpregset, fill_fpregset): Use FPO_REGNUM instead of
	NUM_FREGS to determine whether the floating-point registers are
	available.

	* i386gnu-nat.c (supply_gregset, gnu_fetch_registers,
	gnu_store_registers): Replace usage of NUM_GREGS with
	I386_NUM_GREGS.

	* i386-linux-nat.c (OLD_CANNOT_FETCH_REGISTER,
	OLD_CANNOT_STORE_REGISTER, supply_gregset, fill_gregset): Replace
	usage of NUM_GREGS with I386_NUM_GREGS.

	* i386-linux-nat.c (fill_gregset): Remove redundant parentheses.

	* i386bsd-nat.c: Include "i386-tdep.h".
	(supply_gregset, fill_gregset): Replace usage of NUM_GREGS with
	I386_NUM_GREGS.

	* i386v-nat.c: Remove copnditional inclusion of <asm/debugreg.h>,
	and associated comment.  They no longer make any sense, since we
	don't use this file anymore on Linux.

	* config/i386/tm-i386.h (MAX_NUM_REGS): Removed.
	* i386-tdep.c (i386_register_offset, i386_register_size): Use
	I386_SSE_NUM_REGS instead of MAX_NUM_REGS for the number of
	elements in these arrays.
	(_initialize_i386_tdep): Use I386_SSE_NUM_REGS instead of
	MAX_NUM_REGS.

2002-06-15  Mark Kettenis  <kettenis@gnu.org>

	* osabi.h (gdb_osabi): Add GDB_OSABI_LYNXOS.
	* osabi.c (gdb_osabi_names): Add entry for "LynxOS".

2002-06-14  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename
	EXTRACT_RETURN_VALUE.
	(DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename
	EXTRACT_STRUCT_VALUE_ADDRESS.
	* gdbarch.h, gdbarch.c: Regenerate.
	
	* values.c (value_being_returned): Handle
	DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS.
	(EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE.

	* arm-linux-tdep.c (arm_linux_init_abi): Update. 
	* arm-tdep.c (arm_gdbarch_init): Update.
	* avr-tdep.c (avr_gdbarch_init): Update.
	* cris-tdep.c (cris_gdbarch_init): Update.
	* d10v-tdep.c (d10v_gdbarch_init): Update.
	* ia64-tdep.c (ia64_gdbarch_init): Update.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
	* rs6000-tdep.c (rs6000_gdbarch_init): Update.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* sh-tdep.c (sh_gdbarch_init): Update.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* sparc-tdep.c (sparc_gdbarch_init): Update.
	* ns32k-tdep.c (ns32k_gdbarch_init): Update.
	* v850-tdep.c (v850_gdbarch_init): Update.
	* vax-tdep.c (vax_gdbarch_init): Update.
	* x86-64-tdep.c (x86_64_gdbarch_init): Update.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Update.

	* config/arc/tm-arc.h: Update.
	* config/d30v/tm-d30v.h: Update.
	* config/fr30/tm-fr30.h: Update.
	* config/h8300/tm-h8300.h: Update.
	* config/h8500/tm-h8500.h: Update.
	* config/i386/tm-i386.h: Update.
	* config/i386/tm-ptx.h: Update.
	* config/i386/tm-symmetry.h: Update.
	* config/i960/tm-i960.h: Update.
	* config/m32r/tm-m32r.h: Update.
	* config/m68k/tm-delta68.h: Update.
	* config/m68k/tm-linux.h: Update.
	* config/m68k/tm-m68k.h: Update.
	* config/m88k/tm-m88k.h: Update.
	* config/mcore/tm-mcore.h: Update.
	* config/mips/tm-mips.h: Update.
	* config/mn10200/tm-mn10200.h: Update.
	* config/pa/tm-hppa.h: Update.
	* config/pa/tm-hppa64.h: Update.
	* config/sparc/tm-sp64.h: Update.
	* config/sparc/tm-sparc.h: Update.
	* config/sparc/tm-sparclet.h: Update.
	* config/z8k/tm-z8k.h: Update.

2002-06-14  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (i386_linux_tdep_h): Define.
	(i386_tdep_h, i387_tdep_h): Define.
	(i386-linux-nat.o): Add $(i386_linux_tdep_h),
	$(i386_tdep_h) and $(i387_tdep_h).
	* i386-linux-nat.c: Include "i386-linux-tdep.h".

2002-06-14  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h (START_INFERIOR_TRAPS_EXPECTED): Removed.
	Already covered by the default.

	* config/i386/tm-i386.h (TARGET_LONG_DOUBLE_FORMAT,
	TARGET_LONG_DOUBLE_BIT): Remove.  * i386-tdep.c
	(i386_gdbarch_init): Initialize long_double_format and long_double
	bit.

	* config/i386/i386sol2.mt (TDEPFILES): Add i386-sol2-tdep.o and
	i386bsd-tdep.o.  Remove solib.o, solib-svr4.o and solib-legacy.o.
	Move these to ...
	* config/i386/i386sol2.mh: ... here.
	* config/i386/tm-i386sol2.h (STAB_REG_TO_REGNUM): Remove define.
	(sigtramp_saved_pc, I386V4_SIGTRAMP_SAVED_PC): Don't #undef.
	(SIGCONTEXT_PC_OFFSET): Remove define.
	(IN_SIGTRAMP): Remove define.
	* i386-sol2-tdep.c: New file.
	
	* config/i386/i386nw.mt (TM_FILE): Change to tm-i386.h.
	* config/i386/tm-i386nw.h: Removed.

	* config/i386/tm-fbsd.h (STAB_REG_TO_REGNUM,
	USE_STRUCT_CONVENTION): Remove defines.
	(JB_ELEMENT_SIZE, JB_PC, GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	(IN_SIGTRAMP): Remove define.
	(i386bsd_in_sigtramp): Remove prototype.
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Turn into a
	function.  Update comment accordingly
	(SIGTRAMP_START, SIGTRAMP): Adjust definition accordingly.
	(FRAME_SAVED_PC): Remove define.
	(i386bsd_frame_saved_pc): Remove prototype.
	* config/i386/tm-nbsd.h (JB_ELEMENT_SIZE, JB_PC,
	GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	(IN_SIGTRAMP): Remove define.
	(i386bsd_in_sigtramp): Remove prototype.
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Turn into a
	function.  Update comment accordingly
	(SIGTRAMP_START, SIGTRAMP): Adjust definition accordingly.
	(FRAME_SAVED_PC): Remove define.
	(i386bsd_frame_saved_pc): Remove prototype.
	* config/i386/tm-nbsdaout.h (i386nbsd_aout_use_struct_convention):
	Remove prototype.
	(USE_STRUCT_CONVENTION): Remove prototype.
	* i386bsd-nat.c (i386bsd_sigcontext_pc_offset): Remove
	declaration.
	(_initialize_i386bsd_nat): Revise logic to determine some
	constants at compile time when compiling a native GDB.  Warn if
	things don't match up with what we expect.
	* i386bsd-tdep.c (i386bsd_sigtramp_start, i386bsd_sigtramp_end):
	Remove variables.
	(i386bsd_in_sigtramp): Rename tp i386bsd_pc_in_sigtramp.  Rewrite
	to use date stored in `struct gdbarch_tdep'.
	(i386bsd_sigcontext_offset): Remove varaible.
	(i386bsd_sigtramp_saved_pc): Make public.  Rewrite to use data
	stored in `struct gdbarch_tdep'.
	(i386bsd_frame_saved_pc): Make static.
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): New functions.
	(i386bsd_sc_pc_offset, i386nbsd_sc_pc_offset,
	i386fbsd_sigtramp_start, i386fbsd_sigtramp_end,
	i386fbsd4_sc_pc_offset): New variables.
	(i386bsd_init_abi, i386nbsd_init_abi, i386nbsdelf_init_abi,
	i386fbsdaout_init_abi, i386fbsd_init_abi, i386fbsd4_init_abi): New
	functions.
	(i386bsd_aout_osabi_sniffer, _initialize_i386bsd_tdep): New
	functions.
	* i386fbsd-nat.c (_initialize_i386fbsd_nat): Fix type in comment.
	Modify the value of i386fbsd_sigtramp_start and
	i386fbsd_sigtramp_end instead of i386bsd_sigtramp_start and
	i386fbsd_sigtramp_end.
	* i386nbsd-tdep.c: (i386nbsd_aout_use_struct_convention): Remove
	function.

	* config/i386/tm-linux.h (I386_LINUX_ORIG_EAX_REGNUM): Move
	define to i386-linux-tdep.h.
	(NUM_REGS, MAX_NUM_REGS, REGISTER_BYTES, REGISTER_NAME,
	REGISTER_BYTE, REGISTER_RAW_SIZE, STAB_REG_TO_REGNUM): Remove
	defines.
	(i386_linux_register_name, i386_linux_register_byte,
	i386_linux_register_raw_size): Remove prototypes.
	(i386_linux_svr4_fetch_link_map_offsets): Remove prototype.
	(SVR4_FETCH_LINK_MAP_OFFSETS): Remove define.
	(IN_SIGTRAMP, FRAME_CHAIN, FRAME_SAVED_PC, SAVED_PC_AFTER_CALL,
	TARGET_WRITE_PC): Remove defines.
	(i386_linux_in_sigtramp, i386_linux_frame_chain,
	i386_linux_frame_saved_pc, i386_linux_saved_pc_after_call,
	i386_linux_write_pc): Remove prototypes.
	(JB_ELEMENT_SIZE, JB_PC, GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	* i386-linux-tdep.h: New file.
	* i386-linux-nat.c: Include "i386-linux-tdep.h".
	* i386-linux-tdep.c: Include "i386-tdep.h" and
	"i386-linux-tdep.h".
	(i386_linux_register_name, i386_linux_register_byte,
	i386_linux_register_raw_size, i386_linux_in_sigtramp,
	i386_linux_write_pc, i386_linux_svr4_fetch_link_map_offsets):
	Make static.
	(i386_linux_init_abi): New function.
	(_initialize_i386_linux_tdep): New function.

	* config/i386/tm-i386.h (SAVED_PC_AFTER_CALL): Remove define.
	(i386_saved_pc_after_call): Remove prototype.
	(MAX_NUM_REGS): Increase to deal with Linux's orig_eax "register".
	(REGISTER_NAME, STAB_REG_TO_REGNUM, SDB_REG_TO_REGNUM,
	DWARF_REG_TO_REGNUM, DWARF2_REG_TO_REGNUM): Remove defines.
	(i386_register_name, i386_stab_reg_to_regnum,
	i386_dwarf_reg_to_regnum): Remove prototypes.
	(SIZEOF_GREGS, SIZEOF_FPU_REGS, SIZEOF_FPU_CTL_REGS,
	SIZEOF_SSE_REGS): Remove defines.
	(REGISTER_BYTES): Remove define.
	(REGISTER_BYTE, REGISTER_RAW_SIZE): Remove defines.
	(i386_register_byte, i386_register_raw_size): Remove prototypes.
	(FRAME_CHAIN, FRAME_SAVED_PC): Remove defines.
	(i386_frame_chain, i386_frame_saved_pc): Remove prototypes.
	* config/i386/tm-i386v4.h (FRAME_CHAIN_VALID): Remove define.
	(JB_ELEMENT_SIZE, JB_PC, JB_EBX, JB_ESI, JB_EDI, JB_EBP, JB_ESP,
	JB_EDX, GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	(I386V4_SIGTRAMP_SAVED_PC, IN_SIGTRAMP): Remove defines.
	(sigtramp_saved_pc): Remove define.
	(i386v4_sigtramp_saved_pc): Remove prototype.
	* config/i386/tm-go32.h (FRAME_CHAIN,
	FRAMELESS_FUNCTION_INVOCATION, FRAME_SAVED_PC): Remove defines.
	(i386go32_frame_saved_pc): Remove prototype.
	(JB_ELEMENT_SIZE, JB_PC, GET_LONGJMP_TARGET): Remove defines.
	(get_longjmp_target): Remove prototype.
	* i386-tdep.h: Include "osabi.h".
	(enum i386_abi): Removed.
	(enum struct_return): New enum.
	(struct gdbarch_tdep): Remove abi member, add osabi, jb_pc_offset,
	struct_return, sigtramp_saved_pc, sigtramp_start, sigtramp_end and
	sc_pc_offset members.
	(i386_gdbarch_register_os_abi): Remove prototype.
	(I386_NUM_GREGS, I386_NUM_FREGS, I386_NUM_XREGS,
	I386_SSE_NUM_REGS): New defines.
	(I386_SIZEOF_GREGS, I386_SIZEOF_FREGS, I386_SIZEOF_XREGS,
	I386_SSE_SIZEOF_REGS): New defines.
	(i386_register_name, i386_register_byte, i386_register_raw_size):
	New prototypes.
	(i386_elf_init_abi, i386_svr4_init_abi): New prototypes.
	(i386bsd_sigtramp_saved_pc): New prototype.
	* i386-tdep.c: Don't include "elf-bfd.h".
	(i386_stab_reg_to_regnum, i386_dwarf_reg_to_regnum,
	i386_frame_chain, i386_saved_pc_after_call): Make static.
	(i386_frame_saved_pc): Rewrite to call architecture dependent
	function to deal with signal handlers.  Make static.
	(i386go32_frame_saved_pc): Removed.
	[GET_LONGJMP_TARGET] (JB_PC, JB_ELEMENT_SIZE, get_longjmp_target):
	Removed.
	(i386_get_longjmp_target): New function.
	(default_struct_convention, pcc_struct_convention,
	reg_struct_convention, valid_conventions, struct_convention): New
	variables.
	(i386_use_struct_convention): New function.
	(i386v4_sigtramp_saved_pc): Renamed to
	i386_svr4_sigtramp_saved_pc.  Made static.  Moved.
	(i386_pc_in_sigtramp): New function.
	(i386_abi_names): Removed.
	(ABI_TAG_OS_GNU_LINUX, ABI_TAG_OS_GNU_HURD,
	ABI_TAG_OS_GNU_SOLARIS, ABI_TAG_OS_FREEBSD, ABI_TAG_OS_NETBSD):
	Removed.
	(process_note_sections, i386_elf_abi_from_note, i386_elf_abi,
	i386_gdbarch_register_os_abi): Removed.
	(struct i386_abi_handler): Removed.
	(i386_abi_handler_list): Removed.
	(i386_svr4_pc_in_sigtramp, i386_go32_pc_in_sigtramp): New
	functions.
	(i386_elf_init_abi, i386_svr4_init_abi, i386_go32_init_abi,
	i386_nw_init_abi): New functions.
	(i386_gdbarch_init): Rewritten to use generic OS ABI framework.
	Use set_gdbarch_xxx() calls instead of relying on macros for a
	number of calls.
	(i386_coff_osabi_sniffer, i386_nlm_osabi_sniffer): New functions.
	(_initialize_i386_tdep): Add new 'struct-convcention' command.
	Register the various architecture variants defined in this file.

2002-06-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.h (TYPE_FLAG_VARARGS): Update comment.
	(struct main_type): Remove arg_types member.  Update comments for
	struct field.
	(TYPE_ARG_TYPES): Remove.
	(TYPE_FN_FIELD_ARGS): Update.
	(smash_to_method_type): Update prototype.

	* c-typeprint.c (cp_type_print_method_args): Take method type
	instead of argument list.  Use new argument layout.  Simplify.
	(c_type_print_args): Use new argument layout.  Simplify.
	(c_type_print_base): Update call to cp_type_print_method_args.
	* dwarf2read.c (dwarf2_add_member_fn): Remove unneeded type
	argument; use die->type instead.  Update call to
	smash_to_method_type.
	(read_structure_scope): Update call to dwarf2_add_member_fn.
	* gdbtypes.c (allocate_stub_method): Update comment.
	(smash_to_method_type): Take new NARGS and VARARGS arguments.
	Use new argument layout.
	(check_stub_method): Use new argument layout.  Don't count
	void as an argument.
	(print_arg_types): Update comments.  Use new argument layout.
	(recursive_dump_type): Don't print arg_types member.
	* hpread.c (hpread_read_struct_type): Use new argument layout.
	(fixup_class_method_type): Likewise.
	(hpread_type_lookup): Likewise.
	* stabsread.c (read_type): Update calls to read_args and
	smash_to_method_type.
	(read_args): Use new argument layout.  Simplify.
	* valops.c (typecmp): Use new argument layout.  Update parameters
	and comments.  Simplify.
	(hand_function_call): Use new argument layout.
	(search_struct_method): Update call to typecmp.
	(find_overload_match): Use new argument layout.

2002-06-13  Daniel Jacobowitz  <drow@mvista.com>

	* NEWS: Mention multithreaded debug support for gdbserver.

2002-06-13  Daniel Jacobowitz  <drow@mvista.com>

	* MAINTAINERS: Mention NEWS.

2002-06-13  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/regcache.c: Add comment.

2002-06-13  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (PROC_SYMBOL): Add warning comment.
	(struct mips_objfile_private, compare_pdr_entries): New.
	(non_heuristic_proc_desc): Read the ".pdr" section if it
	is present.

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

	* arm-tdep.c (arm_push_arguments): Rewrite using a two-pass loop.
	(arm_debug): New static variable.
	(_initialize_arm_tdep): Add ``set debug arm'' command.

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

	* Makefile.in (sim_arm_h): Define.
	(arm-tdep.o): Add $(sim_arm_h) and $(gdb_assert_h).
	* arm-tdep.c: Include "gdb/sim-arm.h" and "gdb_assert.h".
	(arm_register_sim_regno): New function, map an internal REGNUM
	onto a simulator register number.
	(arm_gdbarch_init): Set register_sim_regno.

2002-06-09  Aldy Hernandez  <aldyh@redhat.com>

	* MAINTAINERS: Add self.

2002-06-11  Jim Blandy  <jimb@redhat.com>

	* source.c (source_info): Mention whether the symtab has
	information about preprocessor macros.

	Call the command `info macro', not `show macro'.
	* macrocmd.c (info_macro_command): Renamed from `show_macro_command'.
	Fix error message.
	(_initialize_macrocmd): Register `info_macro_command' in
	`infolist', not `showlist'.

2002-06-11  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (MIPS_FPU_TYPE, FP_REGISTER_DOUBLE, MIPS_EABI)
	(MIPS_LAST_FP_ARG_REGNUM, MIPS_LAST_ARG_REGNUM)
	(MIPS_DEFAULT_SAVED_REGSIZE, MIPS_REGS_HAVE_HOME_P)
	(MIPS_DEFAULT_STACK_ARGSIZE, GDB_TARGET_IS_MIPS64)
	(MIPS_DEFAULT_MASK_ADDRESS_P): Remove obsolete definitions.  Define
	unconditionally.
	(set_mipsfpu_single_command, set_mipsfpu_double_command)
	(set_mipsfpu_none_command): Remove if (GDB_MULTI_ARCH).
	(_initialize_mips_tdep): Remove dead code.
	* config/mips/tm-irix5.h (MIPS_LAST_ARG_REGNUM)
	(MIPS_DEFAULT_STACK_ARGSIZE, MIPS_REGS_HAVE_HOME_P): Remove.
	* config/mips/tm-irix6.h (MIPS_LAST_ARG_REGNUM)
	(MIPS_DEFAULT_STACK_ARGSIZE, MIPS_REGS_HAVE_HOME_P): Remove.
	* config/mips/tm-mips.h (MIPS_EABI, MIPS_LAST_ARG_REGNUM,
	MIPS_LAST_FP_ARG_REGNUM): Remove.

2002-06-11  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/thread-db.c: New file.
	* gdbserver/proc-service.c: New file.
	* gdbserver/acinclude.m4: New file.
	* gdbserver/Makefile.in: Add GDBSERVER_LIBS, gdb_proc_service_h,
	proc-service.o, and thread-db.o.
	(linux-low.o): Add USE_THREAD_DB.
	* gdbserver/acconfig.h: Add HAVE_PRGREGSET_T, HAVE_PRFPREGSET_T,
	HAVE_LWPID_T, HAVE_PSADDR_T, and PRFPREGSET_T_BROKEN.
	* gdbserver/aclocal.m4: Regenerated.
	* gdbserver/config.in: Regenerated.
	* gdbserver/configure: Regenerated.
	* gdbserver/configure.in: Check for proc_service.h, sys/procfs.h,
	thread_db.h, and linux/elf.h headrs.
	Check for lwpid_t, psaddr_t, prgregset_t, prfpregset_t, and
	PRFPREGSET_T_BROKEN.  Introduce srv_thread_depfiles and USE_THREAD_DB.
	Check for -lthread_db and thread support.
	* gdbserver/configure.srv: Enable thread_db support for ARM, i386, MIPS,
	PowerPC, and SuperH.
	* gdbserver/i387-fp.c: Constify arguments.
	* gdbserver/i387-fp.h: Likewise.
	* gdbserver/inferiors.c: (struct thread_info): Renamed from
	`struct inferior_info'.  Remove PID member.  Use generic inferior
	list header.  All uses updated.
	(inferiors, signal_pid): Removed.
	(all_threads): New variable.
	(get_thread): Define.
	(add_inferior_to_list): New function.
	(for_each_inferior): New function.
	(change_inferior_id): New function.
	(add_inferior): Removed.
	(remove_inferior): New function.
	(add_thread): New function.
	(free_one_thread): New function.
	(remove_thread): New function.
	(clear_inferiors): Use for_each_inferior and free_one_thread.
	(find_inferior): New function.
	(find_inferior_id): New function.
	(inferior_target_data): Update argument type.
	(set_inferior_target_data): Likewise.
	(inferior_regcache_data): Likewise.
	(set_inferior_regcache_data): Likewise.
	* gdbserver/linux-low.c (linux_bp_reinsert): Remove.
	(all_processes, stopping_threads, using_thrads)
	(struct pending_signals, debug_threads, pid_of): New.
	(inferior_pid): Replace with macro.
	(struct inferior_linux_data): Remove.
	(get_stop_pc, add_process): New functions.
	(linux_create_inferior): Restore SIGRTMIN+1 before calling exec.
	Use add_process and add_thread.
	(linux_attach_lwp): New function, based on old linux_attach.  Use
	add_process and add_thread.  Set stop_expected for new threads.
	(linux_attach): New function.
	(linux_kill_one_process): New function.
	(linux_kill): Kill all LWPs.
	(linux_thread_alive): Use find_inferior_id.
	(check_removed_breakpoints, status_pending_p): New functions.
	(linux_wait_for_process): Renamed from linux_wait_for_one_inferior.
	Update.  Use WNOHANG.  Wait for cloned processes also.  Update process
	struct for the found process.
	(linux_wait_for_event): New function.
	(linux_wait): Use it.  Support LWPs.
	(send_sigstop, wait_for_sigstop, stop_all_processes)
	(linux_resume_one_process, linux_continue_one_process): New functions.
	(linux_resume): Support LWPs.
	(REGISTER_RAW_SIZE): Remove.
	(fetch_register): Use register_size instead.  Call supply_register.
	(usr_store_inferior_registers): Likewise.  Call collect_register.
	Fix recursive case.
	(regsets_fetch_inferior_registers): Improve error message.
	(regsets_store_inferior_registers): Add debugging.
	(linux_look_up_symbols): Call thread_db_init if USE_THREAD_DB.
	(unstopped_p, linux_signal_pid): New functions.
	(linux_target_ops): Add linux_signal_pid.
	(linux_init_signals): New function.
	(initialize_low): Call it.  Initialize using_threads.
	* gdbserver/regcache.c (inferior_regcache_data): Add valid
	flag.
	(get_regcache): Fetch registers lazily.  Add fetch argument
	and update all callers.
	(regcache_invalidate_one, regcache_invalidate): New
	functions.
	(new_register_cache): Renamed from create_register_cache.
	Return the new regcache.
	(free_register_cache): Change argument to a void *.
	(registers_to_string, registers_from_string): Call get_regcache
	with fetch flag set.
	(register_data): Make static.  Pass fetch flag to get_regcache.
	(supply_register): Call get_regcache with fetch flag clear.
	(collect_register): Call get_regcache with fetch flag set.
	(collect_register_as_string): New function.
	* gdbserver/regcache.h: Update.
	* gdbserver/remote-utils.c (putpkt): Flush after debug output and use
	stderr.
	Handle input interrupts while waiting for an ACK.
	(input_interrupt): Use signal_pid method.
	(getpkt): Flush after debug output and use stderr.
	(outreg): Use collect_register_as_string.
	(new_thread_notify, dead_thread_notify): New functions.
	(prepare_resume_reply): Check using_threads.  Set thread_from_wait
	and general_thread.
	(look_up_one_symbol): Flush after debug output.
	* gdbserver/server.c (step_thread, server_waiting): New variables.
	(start_inferior): Don't use signal_pid.  Update call to mywait.
	(attach_inferior): Update call to mywait.
	(handle_query): Handle qfThreadInfo and qsThreadInfo.
	(main): Don't fetch/store registers explicitly.  Use
	set_desired_inferior.  Support proposed ``Hs'' packet.  Update
	calls to mywait.
	* gdbserver/server.h: Update.
	(struct inferior_list, struct_inferior_list_entry): New.
	* gdbserver/target.c (set_desired_inferior): New.
	(write_inferior_memory): Constify.
	(mywait): New function.
	* gdbserver/target.h: Update.
	(struct target_ops): New signal_pid method.
	(mywait): Removed macro, added prototype.

	* gdbserver/linux-low.h (regset_func): Removed.
	(regset_fill_func, regset_store_func): New.
	(enum regset_type): New.
	(struct regset_info): Add type field.  Use new operation types.
	(struct linux_target_ops): stop_pc renamed to get_pc.
	Add decr_pc_after_break and breakpoint_at.
	(get_process, get_thread_proess, get_process_thread)
	(strut process_info, all_processes, linux_attach_lwp)
	(thread_db_init): New.

	* gdbserver/linux-arm-low.c (arm_get_pc, arm_set_pc,
	arm_breakpoint, arm_breakpoint_len, arm_breakpoint_at): New.
	(the_low_target): Add new members.
	* gdbserver/linux-i386-low.c (i386_store_gregset, i386_store_fpregset)
	(i386_store_fpxregset): Constify.
	(target_regsets): Add new kind identifier.
	(i386_get_pc): Renamed from i386_stop_pc.  Simplify.
	(i386_set_pc): Add debugging.
	(i386_breakpoint_at): New function.
	(the_low_target): Add new members.
	* gdbserver/linux-mips-low.c (mips_get_pc, mips_set_pc)
	(mips_breakpoint, mips_breakpoint_len, mips_reinsert_addr)
	(mips_breakpoint_at): New.
	(the_low_target): Add new members.
	* gdbserver/linux-ppc-low.c (ppc_get_pc, ppc_set_pc)
	(ppc_breakpoint, ppc_breakpoint_len, ppc_breakpoint_at): New.
	(the_low_target): Add new members.
	* gdbserver/linux-sh-low.c (sh_get_pc, sh_set_pc)
	(sh_breakpoint, sh_breakpoint_len, sh_breakpoint_at): New.
	(the_low_target): Add new members.
	* gdbserver/linux-x86-64-low.c (target_regsets): Add new kind
	identifier.

2002-06-11  Michal Ludvig  <mludvig@suse.cz>

	* dwarf2cfi.c (unwind_tmp_obstack_init): New.
	(unwind_tmp_obstack_free, parse_frame_info)
	(update_context, cfi_read_fp, cfi_write_fp)
	(cfi_frame_chain, cfi_init_extra_frame_info)
	(cfi_virtual_frame_pointer): Use the above function.
	* dwarf2cfi.c: Reindented (using 'indent dwarf2cfi.c').

2002-06-11  Corinna Vinschen  <vinschen@redhat.com>

	* v850-tdep.c (v850_type_is_scalar): New function.
	(v850_use_struct_convention): Match current gcc implementation
	as close as possible.
	(v850_push_arguments): Fix stack_offset handling.  Don't write
	struct_addr into register.  This is done by v850_store_struct_return.
	(v850_extract_return_value): Care for structs.
	(v850_store_return_value): Ditto.
	(v850_store_struct_return): Actually write address.

2002-06-11  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_skip_prologue): Fix to work on functions
	without debug information too.

2002-06-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (PRINT_FLOAT_INFO): Add frame and ui_file parameters.
	Make multi-arch pure.
	* gdbarch.h, gdbarch.c: Re-generate.
	* arm-tdep.c (arm_print_float_info): Update.
	* arch-utils.h (default_print_float_info): Update.
	* arch-utils.c (default_print_float_info): Update.
	* infcmd.c (float_info): Update call.

2002-06-10  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (init.c): Move the call to _initialize_gdbtypes to
	the front of the initialize list.

2002-06-10  Andrew Cagney  <ac131313@redhat.com>

	* infrun.c (struct inferior_status): Replace fields
	selected_frame_address and selected_level with field
	selected_frame_id.
	(save_inferior_status): Update.  Use get_frame_id.
	(struct restore_selected_frame_args): Delete.
	(restore_selected_frame): Update.  Use frame_find_by_id.
	(restore_inferior_status): Update.

	* breakpoint.h (struct breakpoint): Change type of
	watchpoint_frame to frame_id.
	* breakpoint.c (insert_breakpoints): Use frame_find_by_id.  Remove
	call to get_current_frame.
	(do_enable_breakpoint): Use frame_find_by_id.  Remove call to
	get_current_frame.
	(watchpoint_check): Use frame_find_by_id.

	* frame.h (record_selected_frame): Delete declaration.
	* stack.c (record_selected_frame): Delete function.
	
	* frame.h (struct frame_id): Define.
	(get_frame_id): Declare.
	(frame_find_by_id): Declare.
	* frame.c (frame_find_by_id): New function.
	(get_frame_id): New function.

2002-06-10  Andrey Volkov <avolkov@transas.com>

	* ser-e7kpc.c: Fix duplicated define and call of 
        _initialize_ser_e7000pc
	    
2002-06-09  Daniel Jacobowitz  <drow@mvista.com>

	* signals/signals.c (target_signal_from_host): Fix #ifdef
	SIGRTMIN case.
	(do_target_signal_to_host): Likewise.

2002-06-09  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (mips_find_abi_section): New function.
	(mips_gdbarch_init): Call it.

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

	* solib-svr4.c (init_fetch_link_map_offsets): Simply return
	legacy_fetch_link_map_offsets.  Adjust comment to reflect reality
	after Andrew's 2002-06-08 gdbarch change.

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

	* i386-linux-nat.c (suppy_gregset): Don't supply
	I386_LINUX_ORIG_EAX_REGNUM if there isn't room for it in GDB's
	register cache.
	(fill_gregset): Don't fetch it under the same circumstances.

2002-06-09  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (callback_h): Define.
	(remote_sim_h): Update path to remote-sim.h.
	(remote-rdp.o): Add $(callback_h).
	(remote-sim.o): Use $(callback_h).
	* remote-sim.c: Include "gdb/callback.h" and "gdb/remote-sim.h".
	* remote-rdp.c: Include "gdb/callback.h".

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

	* osabi.h (gdb_osabi): Add GDB_OSABI_GO32 and GDB_OSABI_NETWARE.
	* osabi.c (gdb_osabi_names): Add "DJGPP" and "NetWare".

2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* sparcl-tdep.c: Use __CYGWIN__ instead of __CYGWIN32__.
	* rdi-share/serpardr.c: Ditto.
	* rdi-share/unixcomm.c: Ditto.
	* rdi-share/serdrv.c: Ditto.
	* rdi-share/hostchan.h: Ditto.
	* rdi-share/hostchan.c: Ditto.
	* rdi-share/host.h: Ditto.
	* rdi-share/devsw.c: Ditto.

	* objfiles.h: Change type of obj_private to void pointer.
	* pa64solib.c: Update copyright.  Don't include "assert.h", use
	strcmp instead of STREQ, use LONGEST, do not use PTR
	* somsolib.c: Ditto.

	* config/djgpp/fnchange.lst: Fix problems with bfd/elf32-i386.c,
	bfd/elf32-i386qnx.c, bfd/elf32-sh.c, bfd/elf32-sh64-nbsd.c,
	bfd/elf64-sh64-nbsd.c bfd/elf64-sh64.c.

2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* frame.c (GET_SAVED_REGISTER): Delete macro definition.
	(default_get_saved_register): Delete function.
	* gdbarch.sh (GET_SAVED_REGISTER): Set default to
	generic_unwind_get_saved_register.
	* gdbarch.h, gdbarch.c: Re-generate.
	
2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (FRAME_CHAIN_VALID): Set default to
	generic_func_frame_chain_valid.
	* gdbarch.h, gdbarch.c: Re-generate.
	* blockframe.c (generic_func_frame_chain_valid): Only check
	PC_IN_CALL_DUMMY when generic dummy frames.  Don't worry about
	passing FP to PC_IN_CALL_DUMMY.
	Fix PR gdb/360.

2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (struct gdbarch_data): Add field init_p.
	(register_gdbarch_data): Initialize init_p.
	(gdbarch_data): Initialize data pointer using the init function.
	(init_gdbarch_data): Delete function.
	(gdbarch_update_p): Update.
	(initialize_non_multiarch): Update.
	(struct gdbarch): Add field initialized_p.
	* gdbarch.h, gdbarch.c: Re-generate.

2002-06-07  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-linux-nat.c (x86_64_fxsave_offset): New.
	(supply_fpregset, fill_fpregset): Don't call i387_*_fxsave,
	better do the things actually here.
	* x86-64-tdep.c (x86_64_register_name2nr): New.
	(x86_64_register_name): Renamed to x86_64_register_nr2name.
	(x86_64_gdbarch_init): Respect the above change.
	* x86-64-tdep.h (x86_64_register_name2nr)
	(x86_64_register_nr2name): Add prototypes.
	* config/i386/x86-64linux.mt (TDEPFILES): Remove i387-tdep.o.

2002-06-06  Michael Snyder  <msnyder@redhat.com>

	* d10v-tdep.c (d10v_push_arguments): Handle struct_return.
	Delete extra braces and re-indent.
	(d10v_store_return_value): Char return values
	must be shifted over by one byte in R0.
	(d10v_extract_return_value): Delete extra braces, re-indent.

2002-06-06  Elena Zannoni  <ezannoni@redhat.com>

        * d10v-tdep.c (d10v_read_sp, d10v_read_fp): Add prototype.
        (d10v_register_virtual_type): Make $fp and $sp be pointer to data.
        (d10v_integer_to_address): Rewrite.
        (d10v_frame_init_saved_regs): When reading fp and sp registers use
        the d10v specific functions which take care of converting to the
        correct space.

2002-06-06  Elena Zannoni  <ezannoni@redhat.com>

	* config/djgpp/fnchange.lst: Add testsuite files altivec-abi.c,
	altivec-abi.exp, altivec-regs.c, altivec-regs.exp.

2002-06-02  Andrew Cagney  <ac131313@redhat.com>

	* config/alpha/nm-linux.h: Add "config/" prefix to tm, nm and xm
	includes.
	* config/tm-linux.h: Ditto.
	* config/alpha/tm-alphalinux.h: Ditto.
	* config/arm/nm-linux.h, config/arm/tm-linux.h: Ditto.
	* config/arm/xm-nbsd.h, config/i386/nm-gnu.h: Ditto.
	* config/i386/nm-i386lynx.h, config/i386/nm-i386sol2.h: Ditto.
	* config/i386/nm-i386v4.h, config/i386/nm-i386v42mp.h: Ditto.
	* config/i386/nm-linux.h, config/i386/nm-m3.h: Ditto.
	* config/i386/nm-ptx4.h, config/i386/nm-x86-64.h: Ditto.
	* config/i386/tm-i386gnu.h, config/i386/tm-i386lynx.h: Ditto.
	* config/i386/tm-i386m3.h, config/i386/tm-i386sco5.h: Ditto.
	* config/i386/tm-i386v4.h, config/i386/tm-linux.h: Ditto.
	* config/i386/tm-ptx4.h, config/i386/tm-vxworks.h: Ditto.
	* config/i386/xm-i386v4.h, config/i386/xm-nbsd.h: Ditto.
	* config/i386/xm-ptx.h, config/i386/xm-ptx4.h: Ditto.
	* config/i960/tm-vx960.h, config/ia64/nm-aix.h: Ditto.
	* config/ia64/nm-linux.h, config/ia64/tm-aix.h: Ditto.
	* config/ia64/tm-linux.h, config/ia64/xm-aix.h: Ditto.
	* config/m68k/nm-linux.h, config/m68k/nm-m68klynx.h: Ditto.
	* config/m68k/nm-sysv4.h, config/m68k/tm-linux.h: Ditto.
	* config/m68k/tm-m68klynx.h, config/m68k/tm-m68kv4.h: Ditto.
	* config/m68k/tm-sun2os4.h, config/m68k/tm-sun3os4.h: Ditto.
	* config/m68k/tm-vx68.h, config/m68k/xm-m68kv4.h: Ditto.
	* config/m68k/xm-nbsd.h, config/m88k/nm-delta88v4.h: Ditto.
	* config/m88k/tm-delta88v4.h, config/m88k/xm-delta88v4.h: Ditto.
	* config/mips/nm-irix5.h, config/mips/nm-linux.h: Ditto.
	* config/mips/tm-linux.h, config/mips/tm-mips64.h: Ditto.
	* config/mips/tm-mipsm3.h, config/mips/tm-mipsv4.h: Ditto.
	* config/mips/tm-vxmips.h, config/mips/xm-irix5.h: Ditto.
	* config/mips/xm-mipsv4.h, config/ns32k/xm-nbsd.h: Ditto.
	* config/pa/nm-hppao.h, config/powerpc/nm-linux.h: Ditto.
	* config/powerpc/tm-linux.h, config/powerpc/tm-vxworks.h: Ditto.
	* config/powerpc/xm-aix.h, config/rs6000/nm-rs6000ly.h: Ditto.
	* config/rs6000/tm-rs6000ly.h, config/rs6000/xm-aix4.h: Ditto.
	* config/sh/tm-linux.h, config/sparc/nm-linux.h: Ditto.
	* config/sparc/nm-sparclynx.h, config/sparc/nm-sun4sol2.h: Ditto.
	* config/sparc/tm-linux.h, config/sparc/tm-sp64linux.h: Ditto.
	* config/sparc/tm-sp64sim.h, config/sparc/tm-sparclynx.h: Ditto.
	* config/sparc/tm-sun4os4.h, config/sparc/tm-sun4sol2.h: Ditto.
	* config/sparc/tm-vxsparc.h, config/sparc/xm-sun4sol2.h: Ditto.

2002-05-04  Aidan Skinner <aidan@velvet.net>

	* ada-exp.tab.c: New file
	* ada-exp.y: New file
	* ada-lang.c: New file
	* ada-lang.h: New file
	* ada-lex.c: New file
	* ada-lex.l: New file
	* ada-tasks.c: New file
	* ada-typeprint.c: New file
	* ada-valprint.c: New file
	
2002-06-02  Jason Thorpe  <thorpej@wasabisystems.com>

	* ppcnbsd-tdep.c (ppcnbsd_init_abi): Don't set
	use_struct_convention to ppc_sysv_abi_broken_use_struct_convention.

2002-06-02  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/rs6000/aix4.mt (TDEPFILES): Use ppc-sysv-tdep.o
	insetead of ppc-linux-tdep.o.
	* config/rs6000/rs6000.mt (TDEPFILES): Likewise.
	* config/rs6000/rs6000lynx.mt (TDEPFILES): Likewise.

2002-06-02  Andrew Cagney  <ac131313@redhat.com>

	2002-05-07 Christian Groessler <chris@groessler.org>
        * z8k-tdep.c (z8k_print_register_hook): Fix display of 32 and 64
	bit register contents for little endian hosts.

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

	* MAINTAINERS: Mention that any `HP/UX reader' can be changed by
	any maintainer.

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

	* gdbarch.h: Regenerate.

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

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

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

	* stack.c (frame_info): Use frame_register_unwind instead of
	saved_regs.  Mention when the SP is on the stack or in a register.

	* frame.h (frame_register_unwind_ftype): Define.  Document.
	(struct frame_info): Add field register_unwind and
	register_unwind_cache.
	(frame_register_unwind): Declare.
	(generic_unwind_get_saved_register): Declare.

	* frame.c (frame_register_unwind): New function.
	(generic_unwind_get_saved_register): New function.

	* blockframe.c (generic_call_dummy_register_unwind): New function.
	(frame_saved_regs_register_unwind): New function.
	(set_unwind_by_pc): New function.
	(create_new_frame): New function.
	(get_prev_frame): New function.

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

	* a29k-share/: Delete directory.
	* remote-vx29k.c: Delete file.

2002-05-30  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/djgpp/fnchange.lst: Add ns32knbsd-nat.c, ns32knbsd-tdep.c,
	ppcnbsd-nat.c, ppcnbsd-tdep.c, sparcnbsd-nat.c, and sparcnbsd-tdep.c.

2002-05-30  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add sparc64nbsd-nat.c,
	sparcnbsd-nat.c, and sparcnbsd-tdep.c.
	(sparc64nbsd-nat.o)
	(sparcnbsd-nat.o)
	(sparcnbsd-tdep.o): New dependency lists.
	* NEWS: Note new UltraSPARC NetBSD native configuration.
	* configure.host (sparc64-*-netbsd*): New host.
	* configure.tgt (sparc-*-netbsdelf*)
	(sparc-*-netbsd*): Set gdb_target to nbsd.
	(sparc64-*-netbsd*): New target.
	* sparc64nbsd-nat.c: New file.
	* sparcnbsd-nat.c: New file.
	* sparcnbsd-tdep.c: New file.
	* sparcnbsd-tdep.h: New file.
	* config/sparc/nbsd.mt: New file.
	* config/sparc/nbsd64.mh: New file.
	* config/sparc/nbsd64.mt: New file.
	* config/sparc/nbsdaout.mh (NATDEPFILES): Remove corelow.o,
	sparc-nat.o, and solib.o.  Add sparcnbsd-nat.o.
	(HOST_IPC): Remove.
	* config/sparc/nbsdaout.mt: Remove.
	* config/sparc/nbsdelf.mh (NATDEPFILES): Remove corelow.o,
	sparc-nat.o, and solib.o.  Add sparcnbsd-nat.o.
	(HOST_IPC): Remove.
	* config/sparc/nbsdelf.mt: Remove.
	* config/sparc/nm-nbsd.h: Update copyright years.  Remove all
	sparc-nat.c compatiblity defines.
	* config/sparc/tm-nbsd.h: Update copyright years.  Include solib.h.
	(GDB_MULTI_ARCH): Set to GDB_MULTI_ARCH_PARTIAL.
	* config/sparc/tm-nbsd64.h: New file.
	* config/sparc/tm-nbsdaout.h: Remove.
	* config/sparc/xm-nbsd.h: Remove.

2002-05-30  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (sparc-tdep.o): Add osabi.h to dependency list.
	* sparc-tdep.c: Include osabi.h.
	(gdbarch_tdep): Add osabi member.
	(_initialize_sparc_tdep): Use gdbarch_register.
	(sparc_gdbarch_init): Use generic OS ABI framework.
	(sparc_dump_tdep): New function.

2002-05-30  Kevin Buettner  <kevinb@redhat.com>

	* corefile.c (do_captured_read_memory_integer): Return non-zero
	result.
	(safe_read_memory_integer): Copy result of memory read when
	status is non-zero.  Also, add comments.

2002-05-20  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ppc_tdep_h): Define.
	(ppc-linux-nat.o)
	(ppc-linux-tdep.o)
	(rs6000-tdep.o): Use $(ppc_tdep_h).
	(ppc-sysv-tdep.o)
	(ppcnbsd-nat.o)
	(ppcnbsd-tdep.o): New dependency lists.
	* ppc-tdep.h: Use generic OS ABI framework.
	* ppc-linux-tdep.c (_initialize_ppc_linux_tdep)
	(ppc_linux_init_abi): New functions.
	(ppc_sysv_abi_broken_use_struct_convention)
	(ppc_sysv_abi_use_struct_convention)
	(ppc_sysv_abi_push_arguments): Move to...
	* ppc-sysv-tdep.c: ...here.
	* ppcnbsd-nat.c: Don't include gdbcore.h and regcache.h.
	* rs6000-tdep.c (process_note_abi_tag_sections)
	(get_elfosabi): Remove.
	(rs6000_gdbarch_init): Use generic OS ABI framework.
	(rs6000_dump_tdep): New function.
	(_initialize_rs6000_tdep): Use gdbarch_register.
	* config/powerpc/linux.mt (TDEPFILES): Add ppc-sysv-tdep.o.
	* config/powerpc/nbsd.mh (NATDEPFILES): Remove solib-legacy.o.
	* config/powerpc/aix.mt (TDEPFILES): Use ppc-sysv-tdep.o instead
	of ppc-linux-tdep.o.
	* config/powerpc/nbsd.mt (TDEPFILES): Likewise.
	* config/powerpc/ppc-eabi.mt (TDEPFILES): Likewise.
	* config/powerpc/ppc-sim.mt (TDEPFILES): Likewise.
	* config/powerpc/ppcle-eabi.mt (TDEPFILES): Likewise.
	* config/powerpc/ppcle-sim.mt (TDEPFILES): Likewise.
	* config/powerpc/vxworks.mt (TDEPFILES): Likewise.

2002-05-29  Jim Blandy  <jimb@redhat.com>

	* macroscope.c (default_macro_scope): Put `void' in empty argument
	list.

2002-05-29  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (arch-utils.o): Add $(sim_regno_h).
	* arch-utils.c: Include "sim-regno.h".
	* gdbarch.sh: Don't include "sim-regno.h".
	* gdbarch.h, gdbarch.c: Regenerate.
	* sim-regno.h (legacy_register_sim_regno): Move declaration from
	here.
	* arch-utils.h (legacy_register_sim_regno): To here.
	* remote-sim.c (legacy_register_sim_regno): Move function from
	here.
	* arch-utils.c (legacy_register_sim_regno): To here.

2002-05-28  Andrew Cagney  <ac131313@redhat.com>

	* sim-regno.h: New file.
	* Makefile.in (sim_regno_h): Define.
	(d10v-tdep.o, remote-sim.o): Add dependency on $(sim_regno_h).
	* remote-sim.c: Include "sim-regno.h" and "gdb_assert.h".
	(legacy_register_sim_regno): New function.
	(one2one_register_sim_regno): New function.
	(gdbsim_fetch_register): Rewrite.
	(gdbsim_store_register): Only store a register when
	REGISTER_SIM_REGNO is valid.
	* d10v-tdep.c: Include "sim-regno.h".
	(d10v_ts2_register_sim_regno): Add legacy_regiter_sim_regno check.
	(d10v_ts3_register_sim_regno): Ditto.
	* gdbarch.sh: Include "sim-regno.h".
	(REGISTER_SIM_REGNO): Set default to legacy_register_sim_regno.
	* gdbarch.h, gdbarch.c: Regenerate.
	* arch-utils.h (default_register_sim_regno): Delete declaration.
	* arch-utils.c (default_register_sim_regno): Delete function.

2002-05-28  Jason Thorpe  <thorpej@wasabisystems.com>

	* ppcnbsd-nat.c: Rewrite.
	* ppcnbsd-tdep.c: New file.
	* ppcnbsd-tdep.h: New file.
	* config/powerpc/nbsd.mh (NATDEPFILES): Remove corelow.o,
	solib.o, and solib-svr4.o.
	* config/powerpc/nbsd.mt (TDEPFILES): Add ppcnbsd-tdep.o,
	nbsd-tdep.o, and corelow.o.

2002-05-28  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (--enable-gdb-build-warnings): Rewrite script to use
	`tr' and `sed'.  Mention that `broken' targets are not expected to
	build.

2002-05-27  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_skip_prologue): Remove obsolete note.
	Let PC point right after the prologue before looking up symbols.
	
2002-05-27  Martin M. Hunt  <hunt@redhat.com>

	* i386-tdep.c (i386_register_virtual_type): Return 
	builtin_type_vec128i for SSE registers.

	* gdbtypes.h (builtin_type_vec128i): Declare.

	* gdbtypes.c (build_builtin_type_vec128i): New function.
	(builtin_type_v2_double, builtin_type_v4_int64): New types.
	(builtin_type_vec128i): New type for SSE2 128-bit registers.
	(build_gdbtypes): Initialize new builtin vector types.
	(_initialize_gdbtypes): Register new vector types with gdbarch.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* MAINTAINERS: ns32k is not longer an obsolete candidate,
	since it has been multi-arch'd.
	* NEWS: Note that ns32k-*-* is now partial multi-arch.
	Move Alpha and VAX multi-arch news entries to same section
	as other multi-arch news.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c: include gdbtypes.h, inferior.h, regcache.h,
	target.s, arch-utils.h, ns32k-tdep.h.  Make many functions
	static.  Rename some register numbers to put them in ns32k-tdep
	private namespace.
	(ns32k_get_saved_register, ns32k_gdbarch_init_32082,
	ns32k_gdbarch_init_32382, ns32k_gdbarch_init, ns32k_dump_tdep): New
	functions.
	(_initialize_ns32k_tdep): Use gdbarch_register.
	* ns32k-tdep.h: New file.
	* ns32knbsd-tdep.c: New file.
	* config/ns32k/nbsdaout.mt (TDEPFILES): Add ns32knbsd-tdep.o.
	* config/ns32k/tm-nbsd.h: Include "ns32k/tm-ns32k.h".
	(IN_SOLIB_CALL_TRAMPOLINE, REGISTER_NAME, NUM_REGS,
	REGISTER_BYTES, REGISTER_BYTE): Remove.
	* config/ns32k/tm-ns32k.h: New file.
	* config/ns32k/tm-umax.h: Remove.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c (ns32k_saved_pc_after_call,
	ns32k_store_struct_return, ns32k_extract_return_value,
	ns32k_store_return_value, ns32k_extract_struct_value_address): New
	functions.
	* config/ns32k/tm-umax.h (SAVED_PC_AFTER_CALL): Define as
	ns32k_saved_pc_after_call.
	(STORE_STRUCT_RETURN): Define as ns32k_store_struct_return.
	(EXTRACT_RETURN_VALUE): Define as ns32k_extract_return_value.
	(STORE_RETURN_VALUE): Define as ns32k_store_return_value.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Define as
	ns32k_extract_struct_value_address.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c (ns32k_call_dummy_words, sizeof_ns32k_call_dummy_words,
	ns32k_fix_call_dummy): New.
	* config/ns32k/tm-umax.h (CALL_DUMMY_WORDS): Define as
	ns32k_call_dummy_words.
	(SIZEOF_CALL_DUMMY_WORDS): Define as sizeof_ns32k_call_dummy_words.
	(CALL_DUMMY, CALL_DUMMY_LENGTH, CALL_DUMMY_ADDR,
	CALL_DUMMY_NARGS): Remove.
	(FIX_CALL_DUMMY): Define as ns32k_fix_call_dummy.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c (ns32k_breakpoint_from_pc, ns32k_frame_chain,
	ns32k_frame_saved_pc, ns32k_frame_args_address,
	ns32k_frame_locals_address, ns32k_frame_init_saved_regs,
	ns32k_push_dummy_frame, ns32k_pop_frame): New functions.
	* config/ns32k/tm-nbsd.h (FRAME_SAVED_PC): Remove.
	* config/ns32k/tm-umax.h (INNER_THAN): Define as core_addr_lessthan.
	(BREAKPOINT_FROM_PC): Define as ns32k_breakpoint_from_pc.
	(BREAKPOINT): Remove..
	(FRAME_CHAIN): Define as ns32k_frame_chain.
	(FRAME_SAVED_PC): Define as ns32k_frame_saved_pc.
	(FRAME_ARGS_ADDRESS): Define as ns32k_frame_args_address.
	(FRAME_LOCALS_ADDRESS): Define as ns32k_frame_locals_address.
	(FRAME_FIND_SAVED_REGS): Remove.
	(FRAME_INIT_SAVED_REGS): Define as ns32k_frame_init_saved_regs.
	(PUSH_DUMMY_FRAME): Define as ns32k_push_dummy_frame.
	(POP_FRAME): Define as ns32k_pop_frame.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c (ns32k_register_byte_32082,
	ns32k_register_byte_32382, ns32k_register_raw_size,
	ns32k_register_virtual_size, ns32k_register_virtual_type): New
	functions.
	* config/ns32k/tm-nbsd.h (REGISTER_BYTE): Define as
	ns32k_register_byte_32382.
	* config/ns32k/tm-umax.h: Update copyright years.
	(REGISTER_BYTE): Define as ns32k_register_byte_32082.
	(REGISTER_RAW_SIZE): Define as ns32k_register_raw_size.
	(REGISTER_VIRTUAL_SIZE): Define as ns32k_register_virtual_size.
	(REGISTER_VIRTUAL_TYPE): Define as ns32k_register_virtual_type.
	(ns32k_get_enter_addr): Fix prototype.

2002-05-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* ns32k-tdep.c: Update copyright years.
	(ns32k_register_name_32082): New function.
	(ns32k_register_name_32382): Ditto.
	* config/ns32k/tm-nbsd.h (REGISTER_NAMES): Remove.
	(REGISTER_NAME): Define as ns32k_register_name_32382.
	* config/ns32k/tm-umax.h (REGISTER_NAMES): Remove.
	(REGISTER_NAME): Define as ns32k_register_name_32082.

2002-05-24  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c (free_line_header): Use xfree, not free.

2002-05-24  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/djgpp/fnchange.lst: Add alphabsd-nat.c,
	alphabsd-tdep.c, mipsnbsd-nat.c, and mipsnbsd-tdep.c

2002-05-23  Andrew Cagney  <ac131313@redhat.com>

	* PROBLEMS: Mention s390 and FreeBSD 4.4 build problems.

2002-05-23  Andrew Cagney  <ac131313@redhat.com>

	From Ross Alexander at NEC Europe:
	* config/pa/hpux11w.mh (NATDEPFILES): Add solib.o.

2002-05-23  Michael Snyder  <msnyder@redhat.com>

	* cli/cli-dump.c (restore_command): Use parse_and_eval_long
	for input, rather than parse_and_eval_address.  

2002-05-23  Andrew Cagney  <ac131313@redhat.com>

	* d10v-tdep.c: Include "gdb/sim-d10v.h" instead of "sim-d10v.h".
	* Makefile.in (sim_d10v_h): Update definition.

2002-05-24  Andrew Cagney  <cagney@redhat.com>

	* d10v-tdep.c (d10v_gdbarch_init): Revert old code included in
	change `2002-05-22 Michael Snyder' below.
	(d10v_push_arguments): Ditto.
	(d10v_extract_return_value): Ditto.

2002-05-23  Jim Blandy  <jimb@redhat.com>

	* macrotab.c (check_for_redefinition): Don't complain if the new
	definition is the same as the previous one.  Take more arguments
	to allow the comparison.
	(macro_define_object, macro_define_function): Pass more arguments
	to check_for_redefinition.

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

	* d10v-tdep.c: Change a few macros to enums for ease of debugging.
	(d10v_frame_chain_valid): Add PC_IN_CALL_DUMMY clause.
	(d10v_frame_saved_pc): Add PC_IN_CALL_DUMMY clause.
	(d10v_frame_chain): Bail immediately if PC_IN_CALL_DUMMY.
	Don't bail if return_pc is PC_IN_CALL_DUMMY.
	Add a temp variable to save a call (and a memory read).
	(d10v_init_extra_frame_info): Get fi->pc from callee's return_pc
	if possible (so that PC_IN_CALL_DUMMY will work).

2002-05-22  Corinna Vinschen  <vinschen@redhat.com>

	* MAINTAINERS: Remove status `OBSOLETE' from v850.

2002-05-22  Michal Ludvig  <mludvig@suse.cz>

	* dwarf2cfi.c (frame_state_for): Added safety check for a valid
	fde->cie_ptr.
	(dwarf2_build_frame_info): Corrected handling of eh_frame.
	(dwarf2_build_frame_info): Add offset to fde->initial_location 
	so that frames of shared libraries are mapped correctly.
	(execute_stack_op): Change type of 'result' from ULONGEST to
	CORE_ADDR.
	
2002-05-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/alpha/tm-nbsd.h: Include solib.h.

2002-05-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* alphanbsd-tdep.c (alphanbsd_sigtramp_offset): Don't make
	assumptions about the host's byte order.

2002-05-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (alphanbsd-tdep.o, shnbsd-tdep.o): Add solib-svr4.h
	to dependency list.
	* alphanbsd-tdep.c: Include solib-svr4.h.
	* shnbsd-tdep.c: Ditto.

2002-05-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (armnbsd-tdep.o): Add solib-svr4.h and
	nbsd-tdep.h to dependency list.
	* configure.host (arm*-*-netbsdelf*, arm*-*-netbsd*,
	i[3456]86-*-netbsdaout*, i[3456]86-*-netbsd*, m68*-*-netbsd*,
	ns32k-*-netbsd*, sparc-*-netbsdaout*, sparc-*-netbsd*): Use
	nbsdaout.mh and nbsdelf.mh consistently.
	* configure.tgt (i[3456]86-*-netbsd*, m68*-*-netbsd*,
	ns32k-*-netbsd*, sparc-*-netbsdelf*, sparc-*-netbsd*) Use
	nbsdaout.mt and nbsdelf.mh consistently.
	* armnbsd-tdep.c: Include nbsd-tdep.h and solib-svr4.h. 
	(arm_netbsd_elf_init_abi): Use set_solib_svr4_fetch_link_map_offsets
	to set nbsd_ilp32_solib_svr4_fetch_link_map_offsets.
	* config/nm-nbsd.h: Garbage-collect SVR4_SHARED_LIBS.  Move
	a.out shared library stuff from here...
	* config/nm-nbsdaout.h: ...to here.
	* config/tm-nbsd.h: Remove.
	* config/alpha/nm-nbsd.h (SVR4_SHARED_LIBS): Remove.
	* config/arm/nbsd.mh: Remove.
	* config/arm/nbsd.mt (TDEPFILES): Remove solib-sunos.o, add
	nbsd-tdep.o.
	* config/arm/nbsdaout.mh: New file. 
	* config/arm/nbsdelf.mh: New file.
	* config/arm/nm-nbsdaout.h: New file.
	* config/i386/nbsd.mh: Remove.
	* config/i386/nbsd.mt: Remove.
	* config/i386/nbsdaout.mh: New file.
	* config/i386/nbsdaout.mt: New file.
	* config/i386/nbsdelf.mh (NAT_FILE): Use nm-nbsd.h.
	* config/i386/nbsdelf.mt (TM_FILE): Use tm-nbsd.h.
	* config/i386/nm-nbsd.h (REGISTER_U_ADDR, 
	i386_register_u_addr): Remove.
	* config/i386/nm-nbsdaout.h: New file.
	* config/i386/nm-nbsdelf.h: Remove.
	* config/i386/tm-nbsd.h: Don't include config/tm-nbsd.h.
	(USE_STRUCT_CONVENTION): Remove.
	* config/i386/tm-nbsdaout.h: New file.
	* config/i386/tm-nbsdelf.h: Remove.
	* config/m68k/nbsd.mh: Remove.
	* config/m68k/nbsd.mt: Remove.
	* config/m68k/nbsdaout.mh: New file.
	* config/m68k/nbsdaout.mt: New file. 
	* config/m68k/nm-nbsd.h: Use config/nm-nbsd.h.
	* config/m68k/nm-nbsdaout.h: New file.
	* config/m68k/tm-nbsd.h: Don't include config/tm-nbsd.h.
	(IN_SOLIB_CALL_TRAMPOLINE): Define.
	* config/ns32k/nbsd.mh: Remove.
	* config/ns32k/nbsd.mt: Remove. 
	* config/ns32k/nbsdaout.mh: New file.
	* config/ns32k/nbsdaout.mt: New file.
	* config/ns32k/nm-nbsd.h: Include config/nm-nbsd.h. 
	* config/ns32k/nm-nbsdaout.h: New file.
	* config/ns32k/tm-nbsd.h: Don't include config/tm-nbsd.h.  
	(IN_SOLIB_CALL_TRAMPOLINE): Define.
	* config/powerpc/nm-nbsd.h: Include config/nm-nbsd.h.
	(SVR4_SHARED_LIBS): Remove.
	* config/powerpc/tm-nbsd.h: Dont' include config/tm-nbsd.h.
	* config/sparc/nbsd.mh: Remove.
	* config/sparc/nbsd.mt: Remove.
	* config/sparc/nbsdaout.mh: New file.
	* config/sparc/nbsdaout.mt: New file.
	* config/sparc/nbsdelf.mh (NAT_FILE): Use nm-nbsd.h.
	* config/sparc/nbsdelf.mt: New file.
	* config/sparc/nm-nbsdaout.h: New file.   
	* config/sparc/nm-nbsdelf.h: Remove.
	* config/sparc/tm-nbsd.h: Don't include config/tm-nbsd.h.
	* config/sparc/tm-nbsdaout.h: New file.

2002-05-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add mipsnbsd-nat.c and
	mipsnbsd-tdep.c
	(mipsnbsd-nat.o, mipsnbsd-tdep.o): New dependency lists.

2002-05-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add shnbsd-tdep.c and
	shnbsd-nat.c.
	(shnbsd-tdep.o, shnbsd-nat.o): New dependency lists.

2002-05-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* NEWS: Note new MIPS NetBSD native configuration. 
	* configure.host (mips*-*-netbsd*): New host. 
	* configure.tgt (mips*-*-netbsd*): New target. 
	* mipsnbsd-nat.c: New file.
	* mipsnbsd-tdep.c: New file.
	* mipsnbsd-tdep.h: New file.
	* config/mips/nbsd.mh: New file.
	* config/mips/nbsd.mt: New file.
	* config/mips/nm-nbsd.h: New file.
	* config/mips/tm-nbsd.h: New file.

2002-05-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (SFILES): Add osabi.c.
	(COMMON_OBS): Add osabi.o.
	(osabi.o): New dependency list.
	* osabi.c: New file.
	* osabi.h: New file.
	* doc/gdbint.texinfo: Document new generic OS ABI framework.

	* Makefile.in (alpha_tdep_h): Define and use instead of
	alpha-tdep.h.
	* alpha-tdep.c (alpha_abi_names, process_note_abi_tag_sections,
	get_elfosabi, alpha_abi_handler_list, alpha_gdbarch_register_os_abi):
	Remove.
	(alpha_gdbarch_init, alpha_dump_tdep): Use generic OS ABI framework.
	* alpha-tdep.h: Include osabi.h.
	(alpha_abi): Remove.
	(gdbarch_tdep): Use generic OS ABI framework.
	* alpha-linux-tdep.c (_initialize_alpha_linux_tdep): Use
	gdbarch_register_osabi.
	* alpha-osf1-tdep.c (_initialize_alpha_osf1_tdep): Likewise.
	* alphafbsd-tdep.c (_initialize_alphafbsd_tdep): Likewise.
	* alphanbsd-tdep.c (_initialize_alphanbsd_tdep): Likewise.

	* Makefile.in (sh_tdep_h): Add osabi.h.
	* sh-tdep.h (sh_osabi): Remove.
	(gdbarch_tdep): Use generic OS ABI framework.
	* sh-tdep.c (sh_osabi_names, process_note_abi_tag_sections,
	sh_osabi_handler_list, sh_gdbarch_register_os_abi): Remove.
	(sh_gdbarch_init, sh_dump_tdep): Use generic OS ABI framework.
	* shnbsd-tdep.c (_initialize_shnbsd_tdep): Use gdbarch_register_osabi.

	* Makefile.in (arm_tdep_h): Define and use instead of arm-tdep.h.
	* arm-linux-tdep.c (_initialize_arm_linux_tdep): Use
	gdbarch_register_osabi.
	* arm-tdep.c (arm_abi_names, process_note_abi_tag_sections,
	arm_abi_handler_list, arm_gdbarch_register_os_abi): Remove.
	(get_elfosabi): Rename to...
	(arm_elf_osabi_sniffer): ...this.  Adjust to use generic OS
	ABI framework support routines.
	(arm_gdbarch_init): Use generic OS ABI framework.
	(arm_dump_tdep): Likewise.
	(_initialize_arm_tdep): Likewise.
	* arm-tdep.h: Include osabi.h.
	(arm_abi): Remove.
	(gdbarch_tdep): Remove arm_abi and abi_name members.  Add
	osabi member.
	(arm_gdbarch_register_os_abi): Remove prototype.
	* armnbsd-tdep.c (arm_netbsd_aout_osabi_sniffer): New function.
	(_initialize_arm_netbsd_tdep): Use gdbarch_register_osabi.

	* Makefile.in (mips-tdep.o): Add osabi.h to dependency list.
	* mips-tdep.c: Include osabi.h.
	(gdbarch_tdep, mips_gdbarch_init, mips_dump_tdep): Use generic
	OS ABI framework.

2002-05-20  Kazu Hirata  <kazu@cs.umass.edu>

	* h8300-tdep.c: Fix formatting.

2002-05-20  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (rs6000_do_registers_info): Simplify code for
	printing vector registers.

2002-05-19  Andrew Cagney  <ac131313@redhat.com>

	From Fernando Nasser:
	* remote.c (remote_async_open_1): Re-throw the exception when the
	connection fails.
	(remote_cisco_open): Ditto.
	(remote_open_1): Ditto.

2002-05-19  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (remote_start_remote_dummy): Add uiout parameter.
	(remote_start_remote): Add uiout parameter.  Pass through to
	remote_start_remote_dummy.
	(remote_open_1): Use catch_exception instead of catch_errors.
	(remote_async_open_1): Ditto.
	(remote_cisco_open): Ditto.

2002-05-19  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (remote_start_remote): Replace PTR with void pointer.
	(sigint_remote_twice_token, sigint_remote_token): Ditto.  Make
	static.

2002-05-18  Andrew Cagney  <ac131313@redhat.com>

	* gdb_indent.sh: Allow the script to be run in the sim directory.

2002-05-18  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/nm-cygwin.h (NO_PTRACE_H): Remove define.
	* config/i386/nm-go32.h (NO_PTRACE_H): Remove define.

	* corelow.c (core_open): Only call set_gdbarch_from_file if
	exec_bfd is NULL.

2002-05-17  Andrey Volkov <avolkov@transas.com>

	* h8300-tdep.c: Add support of EXR register
	* config/h8300/tm-h8300.h: Ditto. 
	
2002-05-17  Andrey Volkov <avolkov@transas.com>

	* h8300-tdep.c: Add additional CCR flags (I,UI,H,U) 
	
2002-05-17  Andrey Volkov <avolkov@transas.com>

	* h8300-tdep.c: Change literal regnums to REGNO.
	
2002-05-17  Jim Blandy  <jimb@redhat.com>

	* NEWS: Note addition of macro support.

	Expand preprocessor macros in C expressions.
	* c-lang.h: #include "macroexp.h", for macro_lookup_ftype.
	(scan_macro_expansion, scanning_macro_expansion,
	finished_macro_expansion): New function declarations.
	(expression_macro_lookup_func, expression_macro_lookup_baton): New
	variable declarations.
	* parser-defs.h (expression_context_pc): New declaration.
	* parse.c (expression_context_pc): New variable.
	(parse_exp_1): Set expression_context_pc, as well as
	expression_context_block.
	* c-exp.y (yylex): If we're not already reading the result of a
	macro expansion, try to macro-expand the next token.  When we're
	done scanning a macro expansion, switch back to the mainline text.
	Commas and `if's in a macro's expansion don't terminate the input.
	* c-lang.c: #include "macroscope.h" and "gdb_assert.h".
	(macro_original_text, macro_expanded_text,
	expression_macro_lookup_func, expression_macro_lookup_baton): New
	variables.
	(scan_macro_expansion, scanning_macro_expansion,
	finished_macro_expansion, scan_macro_cleanup, null_macro_lookup,
	c_preprocess_and_parse): New functions.
	(c_language_defn, cplus_language_defn, asm_language_defn): Call
	c_preprocess_and_parse, instead of c_parse.
	* Makefile.in (c_lang_h): Note that this #includes macroexp.h.
	(c-lang.o): Note dependency on macroscope.h and gdb_assert.h.

Fri May 17 14:26:19 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh-tdep.c (gdb_print_insn_sh64): Delete.
	(gdb_print_insn_sh): Just set info->endian and use print_insn_sh.
	(sh_gdbarch_init): Always use gdb_print_insn_sh.

2002-05-17  Corinna Vinschen  <vinschen@redhat.com>

	* NEWS: Add section for multi-arched targets.  Add v850 to that section.

2002-05-17  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (sh_tdep_h): Define and use.
	* config/sh/tm-sh.h (sh_osabi, sh_abi, gdbarch_tdep,
	register enum): Move to...
	* * sh-tdep.h: ...here.
	* sh-tdep.c: Include sh-tdep.h.
	* sh3-rom.c: Likewise.
	* shnbsd-tdep.c: Likewise.

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

	* arm-tdep.c: Spelling fix in comment.

2002-05-16  Jim Blandy  <jimb@redhat.com>

	Add commands for manually expanding macros and showing their
	definitions.
	* macrocmd.c, macroscope.c, macroscope.h: New files.
	* Makefile.in (SFILES): Add macrocmd.c, macroscope.c.
	(macroscope_h): New variable.
	(HFILES_NO_SRCDIR): Add macroscope.h.
	(COMMON_OBS): Add macrocmd.o, macroscope.o.
	(macroscope.o, macrocmd.o): New rules.

	Teach the Dwarf 2 reader to read macro information.
	* dwarf2read.c: #include "macrotab.h".
	(dwarf_macinfo_buffer): New variable.
	(struct dwarf2_pinfo): New members: dwarf_macinfo_buffer, and
	dwarf_macinfo_size.
	(DWARF_MACINFO_BUFFER, DWARF_MACINFO_SIZE): New macros.
	(dwarf2_missing_macinfo_section, dwarf2_macros_too_long,
	dwarf2_macros_not_terminated, dwarf2_macro_outside_file,
	dwarf2_macro_unmatched_end_file, dwarf2_macro_malformed_definition,
	dwarf2_macro_spaces_in_definition): New complaints.
	(dwarf2_has_info): Initialize dwarf_macinfo_offset.
	(dwarf2_build_psymtabs): Read the .dwarf_macinfo section.
	(dwarf2_build_psymtabs_hard): Record the buffer and its size in
	the partial symbol table.
	(psymtab_to_symtab_1): Set the macinfo buffer and size globals
	from what's recorded in the partial symbol table.
	(read_file_scope): If the compilation unit has a
	`DW_AT_macro_info' attribute, read its macro information.
	* Makefile.in (dwarf2read.o): Depend on macrotab.h.

2002-05-16  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR gdb/546
	* ser-tcp.c: Don't include <netinet/udp.h>.

2002-05-16  Stephane Carrez  <stcarrez@nerim.fr>

	* MAINTAINERS: Update my email address.

2002-05-16  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/nm-nbsd.h: Use "config/nm-nbsd.h" to include generic
	include file of the same name.

2002-05-16  Corinna Vinschen  <vinschen@redhat.com>

	* configure.tgt: Mark v850 as multi-arched.
	* config/v850/tm-v850.h: Remove file.
	* config/v850/v850.mt: Eliminate TM_FILE.

2002-05-16  Corinna Vinschen  <vinschen@redhat.com>

	* v850-tdep.c: Full multi-arch.
	* config/v850/tm-v850.h: Eliminate or move to v850-tdep.c everything.
	Define GDB_MULTI_ARCH to 2.

2002-05-16  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y (current_type): New static variable.
	Carries the type of the expression at the position that is parsed.
	(push_current_type, pop_current_type): Two new functions. Used
	to store/restore current_type in expression on specific tokens.
	(search_field): New static variable. Set to one after parsing a point
	as at that point only a FIELDNAME token should be searched.
	(FIELDNAME): New token. After a point only a token belonging to 
	current_type type definition is allowed.
	(all over token rules): reset and change current_type according
	to rules.
	(exp '[' rule): insert implicit array index field if
	exp is a pascal string type.

2002-05-16  Corinna Vinschen  <vinschen@redhat.com>

	* v850-tdep.c: Fix comment for v850_scan_prologue.  Remove extra
	frame info.  Use frame_info's saved_regs instead of matching member
	in extra_frame_info throughout.
	(v850_frame_init_saved_regs): New function.
	(v850_init_extra_frame_info): Move most functionality into
	v850_frame_init_saved_regs().
	* config/v850/tm-v850.h (EXTRA_FRAME_INFO): Remove definition.
	(v850_frame_find_saved_regs): Remove declaration.
	(FRAME_FIND_SAVED_REGS): Remove definition.
	(v850_frame_init_saved_regs): Add declaration.
	(FRAME_INIT_SAVED_REGS): Add definition.

2002-05-16  Corinna Vinschen  <vinschen@redhat.com>

	* v850-tdep.c: Begin multi-arch'ing v850.
	(v850_target_architecture_hook): Remove function.
	(v850_gdbarch_init): New function.  Add code previously in
	v850_target_architecture_hook().
	(_initialize_v850_tdep): Don't  set target_architecture_hook.
	Call register_gdbarch_init() instead.

2002-05-16 Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.h (struct cplus_struct_type): Remove args field.
	* hpread.c (hpread_read_struct_type): Remove assignments to args.
	(fixup_class_method_type): Likewise.

2002-05-15  Daniel Jacobowitz  <drow@mvista.com>

	From Martin Pool <mbp@samba.org>:
	* gdbserver/server.c (gdbserver_usage): New function.
	(main): Call it.

2002-05-15  Jim Blandy  <jimb@redhat.com>

	Add macro structures to GDB's symbol tables.  Nobody puts anything
	in them yet.
	* symtab.h (struct symtab): New member: `macro_table'.
	* buildsym.h (pending_macros): New global variable.
	* buildsym.c: #include "macrotab.h".
	(buildsym_init): Initialize `pending_macros'.
	(end_symtab): If we found macro information while reading a CU's
	debugging info, do build a symtab structure for it.  Make the
	symtab point to the macro information, and clear the
	`pending_macros' pointer which held it while we were reading the
	debug info.
	(really_free_pendings): Free any pending macro table.
	* objfiles.h (struct objfile): New member: `macro_cache'.
	* objfiles.c (allocate_objfile): Set allocate and free functions
	for the macro cache's objstack.
	(free_objfile): Empty the macro cache's obstack.
	* symfile.c (reread_symbols): Empty the macro cache's obstack, and
	set new allocate and free functions for it.
	* solib-sunos.c (allocate_rt_common_objfile): Set allocate and
	free functions for the macro cache's objstack.  (Why is this
	function building its own objfile?)
	* symmisc.c (print_objfile_statistics): Print statistics on the
	macro bcache.
	* Makefile.in: Note that buildsym.o depends on macrotab.h.

2002-05-15  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/nm-nbsd.h: Use <> for include of config/nm-nbsd.h.
	(REGISTER_U_ADDR): Delete definition.
	(arm_register_u_addr): Delete declaration.

2002-05-15  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-tdep.c (ARM_LINUX_JB_PC): Renamed from JB_PC.
	(ARM_LINUX_JB_ELEMENT_SIZE): Likewise.

2002-05-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/mem-break.c (reinsert_breakpoint_by_bp): Correct typo
	stop_at -> stop_pc.

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

	* regcache.c (register_valid): Revise comments refering to "Not
	available" and "unavailable".
	* frame.c (frame_register_read): Ditto.
	* findvar.c (value_of_register): Ditto.

2002-05-15  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (remote_sim_h): Replace remote-sim_h.
	(remote-sim.o): Update dependencies.
	(d10v-tdep.o): Specify dependencies.
	(sim_d10v_h): Define.

2002-05-14  Jim Blandy  <jimb@redhat.com>

	* macroexp.c (init_buffer, gather_arguments, expand): Use NULL, not 0.
	* macrotab.c (macro_lookup_inclusion, find_definition,
	new_macro_table): Same.
	
	* macroexp.c (currently_rescanning, expand): Use `strcmp () == 0',
	not `! strcmp ()'.  This is a dubious improvement.
	* macrotab.c (macro_lookup_inclusion, find_definition): Same.

	* macrotab.c (macro_lookup_inclusion): Initialize `best_depth',
	although it's not necessary, to avoid a warning.

2002-05-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.h: Update accessor macros to use TYPE_MAIN_TYPE.
	(TYPE_CONST, TYPE_VOLATILE, TYPE_CODE_SPACE, TYPE_DATA_SPACE): Use
	TYPE_INSTANCE_FLAGS.
	(struct main_type): New.
	(struct type): Move most members to struct main_type.  Change
	cv_type and as_type to new type_chain member.  Add instance_flags.
	(TYPE_MAIN_TYPE, TYPE_CHAIN, TYPE_INSTANCE_FLAGS): New macros.
	(TYPE_CV_TYPE, TYPE_AS_TYPE): Remove.
	(finish_cv_type): Remove prototype.
	* gdbtypes.c (alloc_type): Update comment.  Allocate TYPE_MAIN_TYPE.
	Set TYPE_CHAIN.
	(alloc_type_instance): New function.
	(smash_type): New function.
	(make_pointer_type, make_reference_type, make_function_type)
	(smash_to_member_type, smash_to_method_type): Call smash_type.
	(make_qualified_type): New function.
	(make_type_with_address_space): Call make_qualified_type.
	(make_cv_type): Likewise.
	(finish_cv_type): Remove unnecessary function.
	(replace_type): Update comment.  Copy TYPE_MAIN_TYPE.
	(recursive_dump_type): Dump TYPE_CHAIN and TYPE_INSTANCE_FLAGS;
	remove TYPE_CV_TYPE and TYPE_AS_TYPE.
	* c-typeprint.c (c_type_print_modifier): Use TYPE_INSTANCE_FLAGS.
	* dwarf2read.c (read_structure_scope): Don't call finish_cv_type.
	* hpread.c (hpread_read_struct_type): Likewise.
	* stabsread.c (read_struct_type): Likewise.

2002-05-14  Elena Zannoni  <ezannoni@redhat.com>

	* configure.tgt: Add a catch all sh* target, for cases like
	sh[2,3,4]-elf and sh-hms.

2002-05-14  Keith Seitz  <keiths@redhat.com>

	* event-loop.c (create_file_handler): Don't do anything but
	update data when we are given a fd which we are already
	monitoring.

2002-05-14  Michal Ludvig  <mludvig@suse.cz>

	* dwarf2cfi.c (context_cpy): Copy registers correctly.
	(update_context): Use __func__ in warnings.
	
2002-05-14  Daniel Jacobowitz  <drow@mvista.com>

	* ser-tcp.c: Include <netinet/udp.h>.  Rename tcp_open
	and tcp_close to net_open and net_close.
	(net_open): Accept "udp:" and "tcp:" specifications.  Connect
	using UDP if requested.  Don't try to disable Nagle on UDP
	sockets.
	* remote.c (remote_serial_open): New function.  Warn about UDP.
	(remote_open_1, remote_async_open_1, remote_cisco_open): Call it.

2002-05-13  Elena Zannoni  <ezannoni@redhat.com>

	* MAINTAINERS: List sh-elf as buildable with ,-Werror.

2002-05-13  Elena Zannoni  <ezannoni@redhat.com>

	* configure.tgt: Remove sh-hms target.
	* MAINTAINERS: Don't list sh-hms as a separate target.

2002-05-13  Jim Blandy  <jimb@redhat.com>

	Add first preprocessor macro-expansion files.
	* macroexp.c, macroexp.h, macrotab.c, macrotab.h: New files.
	* Makefile.in (SFILES): Add macrotab.c, macroexp.c.
	(splay_tree_h, macroexp_h, macrotab_h): New variable.
	(HFILES_NO_SRCDIR): Add macrotab.h, macroexp.h.
	(COMMON_OBS): Add macrotab.o, macroexp.o.
	(macroexp.o, macrotab.o): New rules.

2002-05-13  Andrew Cagney  <ac131313@redhat.com>

	* config/m88k/tm-m88k.h: Update copyright.
	(m88k_target_write_pc): Declare
	(TARGET_WRITE_PC): Redefine using m88k_target_write_pc.
	(M88K_NNPC_REGNUM): Rename NNPC_REGNUM.
	(SHIFT_INST_REGS): Update definition.
	* m88k-tdep.c (m88k_target_write_pc): New function.  Implement
	using old definition of TARGET_WRITE_PC.
	* regcache.c (generic_target_write_pc): Delete code handling
	NNPC_REGNUM.
	* gdbarch.sh (NNPC_REGNUM): Delete.
	* gdbarch.h, gdbarch.c: Regenerate.

2002-05-13  Richard Earnshaw  <rearnsha@arm.com>

	* builtin-regs.c (value_of_builtin_reg): Correctly calculate the
	builtin reg number.

2002-05-13  Daniel Jacobowitz  <drow@mvista.com>

	* ax-gdb.c (gen_sign_extend, gen_fetch, gen_usual_unary)
	(gen_cast, gen_scale, gen_add, gen_sub, gen_binop, gen_deref)
	(gen_address_of, gen_struct_ref, gen_repeat): Use type
	access macros.
	* c-typeprint.c (cp_type_print_method_args): Likewise.
	(c_type_print_args): Likewise.
	* d10v-tdep.c (d10v_push_arguments): Likewise.
	(d10v_extract_return_value): Likewise.
	* expprint.c (print_subexp): Likewise.
	* gdbtypes.c (lookup_primitive_typename): Likewise.
	(lookup_template_type, add_mangled_type, print_arg_types): Likewise.
	* gdbtypes.h (TYPE_UNSIGNED, TYPE_NOSIGN, TYPE_STUB)
	(TYPE_TARGET_STUB, TYPE_STATIC, TYPE_CONST, TYPE_VOLATILE)
	(TYPE_PROTOTYPED, TYPE_INCOMPLETE, TYPE_CODE_SPACE, TYPE_VARARGS)
	(TYPE_VECTOR): Likewise.
	* hpread.c (hpread_read_struct_type)
	(fix_static_member_physnames, fixup_class_method_type)
	(hpread_type_lookup): Likewise.
	* mdebugread.c (parse_symbol, parse_type): Likewise.
	* p-lang.c (is_pascal_string_type): Likewise.
	* valops.c (hand_function_call): Likewise.
	* x86-64-tdep.c (classify_argument): Likewise.

	* hpread.c (hpread_read_function_type)
	(hpread_read_doc_function_type): Call replace_type.
	* dstread.c (create_new_type): Delete.
	(decode_dst_structure, process_dst_function): Call alloc_type.
	Use type access macros.

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

	* i387-tdep.c (i387_supply_fxsave): Skip the SSE registers if
	the're not supported by the current architecture.
	(i387_fill_fxsave): Likewise.

2002-05-12  Fred Fish  <fnf@redhat.com>

	* symfile.c (default_symfile_offsets): Arrange for uninitialized
	sect_index_xxx members to index the first slot in section_offsets
	if all of the section_offsets are zero.

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

	* configure.tgt (sparc-*openbsd): Remove entry accidentially
	checked in with last change.

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

	* configure.tgt (i[3456]86-*-unixware*, i[3456]86-*-unixware2*):
	Remove targets.  These are canonicalized to i386-*-sysv4.2uw by
	config.sub.

2002-05-12  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in: Update dependencies.

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

	* language.c (local_hex_string_custom): Simplify.  Do not depend
	on PRINTF_HAS_LONG_LONG or CC_HAS_LONG_LONG.

	* memattr.c (mem_info_command): Replace calls to
	longest_local_hex_string and longest_local_hex_string_custom.
	* buildsym.c (make_blockvector): Ditto.
	* solib.c (info_sharedlibrary_command): Ditto.
	* tracepoint.c (tracepoints_info): Ditto.
	* symtab.c (print_msymbol_info): Ditto.

	* language.c (local_hex_string): Delete.
	(local_hex_string_custom): Delete.
	(longest_local_hex_string): Rename to local_hex_string.
	(longest_local_hex_string_custom): Rename to
	local_hex_string_custom.
	* language.h (local_hex_string): Change parameter type to LONGEST.
	(local_hex_string_custom): Ditto.
	(longest_local_hex_string): Delete declaration.
	(longest_local_hex_string_custom): Ditto.

	* solib.c: Update copyright.
	* memattr.c: Update copyright.
	
2002-05-11  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.h (legacy_register_to_value): Declare.
	(legacy_value_to_register): Declare.
	(legacy_convert_register_p): Declare.
	* arch-utils.c (legacy_register_to_value): New function.
	(legacy_value_to_register): New function.
	(legacy_convert_register_p): New function.

	* gdbarch.sh (REGISTER_TO_VALUE): Define.
	(VALUE_TO_REGISTER): Define.
	(CONVERT_REGISTER_P): Define.
	* gdbarch.h, gdbarch.c: Regenerate.

	* valops.c (value_assign): Use CONVERT_REGISTER_P and
	VALUE_TO_REGISTER.
	* findvar.c (value_from_register): Use REGISTER_TO_VALUE and
	CONVERT_REGISTER_P.

2005-05-11  Daniel Jacobowitz  <drow@mvista.com>
	    Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* Makefile.in: Update dependencies for valops.c.
	* valops.c: Include "gdb_assert.h".
	(typecmp): Skip THIS parameter to methods.
	(find_method_list): Remove static_memfuncp argument,
	update callers.  Check for stub methods.
	(find_value_oload_method_list): Don't set *static_memfuncp.
	(find_overload_match): Don't check for stub methods.  Assert
	that methods are not stubbed.  Handle static methods.
	(value_find_oload_method_list): Remove static_memfuncp argument.
	* gdbtypes.c (check_stub_method): Do not add THIS pointer
	to the argument list for static stub methods.
	* value.h (value_find_oload_method_list): Update prototype.

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

	* arch-utils.h (generic_register_size): Declare.
	(generic_register_raw_size, generic_register_virtual_size): Delete
	declarations.
	* arch-utils.c (generic_register_raw_size): Delete.
	(generic_register_size): New function.
	(generic_register_virtual_size): Delete.

	* gdbarch.sh (REGISTER_RAW_SIZE, REGISTER_VIRTUAL_SIZE): Make
	default generic_register_size.
	* gdbarch.h, gdbarch.c: Re-generate.
	
	* d10v-tdep.c (d10v_gdbarch_init): Use generic_register_size for
	register_virtual_size.
	* x86-64-tdep.c (x86_64_gdbarch_init): Ditto.
	* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.

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

	* gdbarch.sh (gdbarch_data): Add gdbarch parameter.
	* gdbarch.h, gdbarch.c: Regenerate.
	* gnu-v3-abi.c: Update copyright.
	(vtable_address_point_offset): Update.
	(gnuv3_rtti_type): Update.
	(gnuv3_baseclass_offset): Update.
	* solib-svr4.c (svr4_fetch_link_map_offsets): Update.
	(init_fetch_link_map_offsets): Update.
	* remote.c (get_remote_state): Update.
	
2002-05-11  Daniel Jacobowitz  <drow@mvista.com>

	* TODO: Remove value_headof/value_from_vtable_info comment.
	* printcmd.c (print_command_1): Don't call value_from_vtable_info.
	* values.c (value_headof, value_from_vtable_info): Delete.
	* value.h (value_from_vtable_info): Delete prototype.

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

	* Makefile.in: Replace gdb_assert.h with $(gdb_assert_h),
	gdb_string.h with $(gdb_string_h) and gdb_regex.h with
	$(gdb_regex_h).
	(gdb_assert_h): Define.
	(gdb_wait_h): Define.
	(gdb_regex_h): Define.

2002-05-11 Daniel Jacobowitz  <drow@mvista.com>

	From Peter Schauer <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>:
	* linespec.c (find_methods): Handle GCC 3.x template constructors.

2002-05-11  Jason Thorpe  <thorpej@wasabisystems.com>

	* nbsd-tdep.c: Fix comment.

2002-05-11  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add nbsd-tdep.c.
	(alphanbsd-tdep.o): Add nbsd-tdep.h to dependency list.
	(nbsd-tdep.o): New dependency list.
	* alphanbsd-tdep.c: Don't include solib-svr4.h.  Include
	nbsd-tdep.h.
	(alphanbsd_solib_svr4_fetch_link_map_offsets): Remove.
	(alphanbsd_init_abi): Use nbsd_lp64_solib_svr4_fetch_link_map_offsets.
	* nbsd-tdep.c: New file.
	* nbsd-tdep.h: New file.
	* shnbsd-tdep.c: Don't include solib-svr4.h.  Include
	nbsd-tdep.h.
	(shnbsd_solib_svr4_fetch_link_map_offsets): Remove.
	(shnbsd_init_abi): Use nbsd_ilp32_solib_svr4_fetch_link_map_offsets.
	* config/alpha/nbsd.mt (TDEPFILES): Add nbsd-tdep.o.
	* config/sh/nbsd.mt (TDEPFILES): Ditto.

2002-05-11  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/alpha/nbsd.mh (NATDEPFILES): Remove corelow.o.
	* config/alpha/nbsd.mt (TDEPFILES): Add corelow.o.
	* config/i386/nbsd.mh (NATDEPFILES): Remove corelow.o.
	* config/i386/nbsd.mt (TDEPFILES): Add corelow.o.
	* config/i386/nbsdelf.mh (NATDEPFILES): Remove corelow.o.
	* config/i386/nbsdelf.mt (TDEPFILES): Add corelow.o.

2002-05-11  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/i386/nbsd.mh (NATDEPFILES): Use line continuations.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/m68k/nbsd.mh (NATDEPFILES): Likewise.
	* config/ns32k/nbsd.mh (NATDEPFILES): Likewise.
	* config/powerpc/nbsd.mh (NATDEPFILES): Likewise.
	* config/sparc/nbsd.mh (NATDEPFILES): Likewise.
	* config/sparc/nbsdelf.mh (NATDEPFILES): Likewise.

2002-05-11  Jason Thorpe  <thorpej@wasabisystems.com>

	* i386nbsd-nat.c: Delete file.  Move fetch_core_registers and
	fetch_elfcore_registers to...
	* i386nbsd-tdep.c: ...here.
	(i386nbsd_use_struct_convention): Rename to...
	(i386nbsd_aout_use_struct_convention): ...this.
	(i386nbsd_supply_reg): New function.
	(i386nbsd_fill_reg): New function.
	(fetch_core_registers): Use i386nbsd_supply_reg.
	(fetch_elfcore_registers): Likewise.
	(_initialize_i386nbsd_tdep): New function.
	* config/i386/nbsd.mh (NATDEPFILES): Remove i386nbsd-nat.o.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/i386/nbsdelf.mt (TDEPFILES): Add i386nbsd-tdep.o.
	* config/i386/tm-nbsd.h (i386nbsd_use_struct_convention): Rename to...
	(i386nbsd_aout_use_struct_convention): ...this.

2002-05-11  Jason Thorpe  <thorpej@wasabisystems.com>

	* shnbsd-nat.c (fetch_inferior_registers): Use shnbsd_supply_reg.
	(store_inferior_registers): Use shnbsd_fill_reg.
	* shnbsd-tdep.c (sh_nbsd_supply_registers, 
	sh_nbsd_supply_register): Collapse into...
	(shnbsd_supply_reg): ...this.
	(sh_nbsd_fill_registers, sh_nbsd_fill_register): Collapse into...
	(shnbsd_fill_reg): ...this.
	(sh_nbsd_solib_svr4_fetch_link_map_offsets): Rename to...
	(shnbsd_solib_svr4_fetch_link_map_offsets): ...this.
	(fetch_core_registers): Use shnbsd_supply_reg.
	(fetch_elfcore_registers): Use shnbsd_supply_reg.
	(sh_nbsd_core_fns): Rename to...
	(shnbsd_core_fns): ...this.
	(sh_nbsd_elfcore_fns): Rename to...
	(shnbsd_elfcore_fns): ...this.
	(sh_nbsd_init_abi): Rename to...
	(shnbsd_init_abi): ...this.
	(_initialize_sh_nbsd_tdep): Rename to...
	(_initialize_shnbsd_tdep): ...this.
	* shnbsd-tdep.h (sh_nbsd_supply_registers,
	sh_nbsd_supply_register, sh_nbsd_fill_registers,
	sh_nbsd_fill_register): Remove prototypes.
	(shnbsd_supply_reg, shnbsd_fill_reg): Add prototypes.

2002-05-11  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Remove i387-nat.c.
	(i387-nat.o): Delete dependency list.
	(go32-nat.o): Change i387-nat.h to i387-tdep.h.
	(x86-64-linux-nat.o): Likewise.
	* i387-nat.c: Delete file, moving contents to...
	* i387-tdep.c: ...here.
	* i387-nat.h: Rename...
	* i387-tdep.h: ...to this.
	* go32-nat.c: Include i387-tdep.h instead of i387-nat.h.
	* i386-linux-nat.c: Likewise.
	* i386bsd-nat.c: Likewise.
	* i386gnu-nat.c: Likewise.
	* i386nbsd-nat.c: Likewise.
	* i386v4-nat.c: Likewise.
	* x86-64-linux-nat.c: Likewise.
	* config/i386/fbsd.mh (NATDEPFILES): Remove i387-nat.o.
	* config/i386/go32.mh (NATDEPFILES): Likewise.
	* config/i386/i386gnu.mh (NATDEPFILES): Likewise.
	* config/i386/i386sol2.mh (NATDEPFILES): Likewise.
	* config/i386/i386v42mp.mh (NATDEPFILES): Likewise.
	* config/i386/linux.mh (NATDEPFILES): Likewise.
	* config/i386/nbsd.mh (NATDEPFILES): Likewise.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/i386/obsd.mh (NATDEPFILES): Likewise.
	* config/i386/x86-64linux.mh (NATDEPFILES): Likewise.

2002-05-11  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Remove alphanbsd-nat.c.
	(alphanbsd-nat.o): Remove dependency list.
	(alphanbsd-tdep.o): Add $(regcache_h) to dependency list.
	* alphanbsd-nat.c: Delete.  Contents moved to...
	* alphanbsd-tdep.c: ...here.
	(_initialize_alphanbsd_tdep): Register core functions.
	* config/alpha/nbsd.mh (NATDEPFILES): Remove alphanbsd-nat.o.

2002-05-11  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add alphabsd-tdep.c.
	(alphabsd-nat.o): Depend on alphabsd-tdep.h.
	(alphanbsd-nat.o): Likewise.
	(alphabsd-tdep.o): New dependency list.
	* alphabsd-nat.c (supply_gregset): Use alphabsd_supply_reg.
	(fill_gregset): Use alphabsd_fill_reg.
	(supply_fpregset): Use alphabsd_supply_fpreg.
	(fill_fpregset): Use alphabsd_fill_fpreg.
	(fetch_inferior_registers): Use struct reg and struct fpreg
	rather than gregset_t and fpregset_t.  Use alphabsd_supply_reg
	and alphabsd_supply_fpreg.
	(store_inferior_registers): Use struct reg and struct fpreg
	rather than gregset_t and fpregset_t.  Use alphabsd_fill_reg
	and alphabsd_fill_fpreg.
	* alphabsd-tdep.c: New file.
	* alphabsd-tdep.h: New file.
	* alphanbsd-nat.c (fetch_core_registers): Use alphabsd_supply_fpreg.
	(fetch_elfcore_registers): Use alphabsd_supply_reg and
	alphabsd_supply_fpreg.
	* config/alpha/fbsd.mt (TDEPFILES): Add alphabsd-tdep.o.
	* config/alpha/nbsd.mt (TDEPFILES): Likewise.

2002-05-11  Eric Christopher  <echristo@redhat.com>

	* mips-tdep.c (mips_double_register_type): Fix thinko.
	(mips_single_register_type): Ditto.
	* MAINTAINERS: Add self.

2002-05-11  Mark Kettenis  <kettenis@gnu.org>

	* i387-nat.c (i387_supply_register, i387_fill_fsave,
	i387_supply_fxsave, i387_fill_fxsave): Rewrite in order to do the
	right thing on architectures with different endianness and/or
	integer sizes.

2002-05-10  Jason Thorpe  <thorpej@wasabisystems.com>

	From Christian Limpach <chris@Pin.LU>
	* configure.in: Change sed expression which comments out
	NATDEPFILES to also comment out continuation lines.
	* configure: Regenerate.

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

        * sh-tdep.c: Clean up code erroneously reintroduced by previous
	big patch.

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

        * sh-tdep.c: Include correct file.

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

        New support for sh64-elf (sh5) target.

        * configure.tgt: For sh64-elf target, default to sh-elf.

        * config/sh/tm-sh.h (enum sh-abi): Possible ABI's.
        (struct gdbarch_tdep): Add new fields for new registers and ABI
        info.

        * sh-tdep.c: Include elf-bfd.h, elf/sh.h, gdb/sim-sh.h.
        (NUM_PSEUDO_REGS_SH_MEDIA, NUM_PSEUDO_REGS_SH_COMPACT,
        MSYMBOL_IS_SPECIAL, IS_ISA32_ADDR, MAKE_ISA32_ADDR,
        UNMAKE_ISA32_ADDR, IS_PTABSL_R18, IS_STS_R0, IS_STS_PR,
        IS_MOV_TO_R15, IS_MOV_R14, IS_STQ_R18_R14, IS_STQ_R18_R15,
        IS_STL_R18_R15, IS_STQ_R14_R15, IS_STL_R14_R15, IS_ADDIL_SP_MEDIA,
        IS_ADDI_SP_MEDIA, IS_ADDL_SP_FP_MEDIA, IS_ADD_SP_FP_MEDIA,
        IS_MOV_SP_FP_MEDIA, IS_MOV_R0, IS_MOVL_R0, IS_ADD_SP_R0,
        IS_MOV_R14_R0, IS_MEDIA_IND_ARG_MOV, IS_MEDIA_ARG_MOV,
        IS_MEDIA_MOV_TO_R14, IS_COMPACT_IND_ARG_MOV, IS_COMPACT_ARG_MOV,
        IS_COMPACT_MOV_TO_R14, IS_JSR_R0, IS_NOP): New macros.
        (sh_sh64_register_name, sh64_elf_make_msymbol_special,
        pc_is_isa32, sh_sh64_breakpoint_from_pc, look_for_args_moves,
        sh64_skip_prologue_hard_way, sh64_use_struct_convention,
        gdb_print_insn_sh64, translate_insn_rn, sh64_frame_chain,
        sh64_get_saved_pr, fpp_reg_base_num, is_media_pseudo,
        sh64_get_gdb_regnum, sh64_media_reg_base_num,
        sh64_compact_reg_base_num, translate_rn_to_arch_reg_num,
        sign_extend, sh64_nofp_frame_init_saved_regs,
        sh64_init_extra_frame_info, sh64_get_saved_register,
        sh64_extract_struct_value_address, sh64_pop_frame,
        sh64_push_arguments, sh64_extract_return_value,
        sh64_store_return_value, sh64_show_media_regs,
        sh64_show_compact_regs, sh64_show_regs, sh_sh64_register_byte,
        sh_sh64_register_raw_size, sh_sh64_register_virtual_size,
        sh_sh64_register_virtual_type,
        sh_sh64_register_convert_to_virtual,
        sh_sh64_register_convert_to_raw, sh64_pseudo_register_read,
        sh64_register_read, sh64_pseudo_register_write,
        sh64_register_write, do_fv_c_register_info, do_dr_c_register_info,
        do_r_c_register_info, do_fpp_register_info, do_cr_c_register_info,
        sh64_do_pseudo_register, sh_compact_do_registers_info,
        sh64_do_registers_info, sh_gdbarch_init): New functions.

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

	* sh-tdep.c (sh_breakpoint_from_pc): Add 'const' to return type.

2002-05-10 Daniel Jacobowitz  <drow@mvista.com>

	* linespec.c (decode_line_1): Check for a double quote after
	a filename correctly.

2002-05-10  Jim Blandy  <jimb@redhat.com>

	Properly track the size of the current objfile's .debug_line section.
	* dwarf2read.c (struct dwarf2_pinfo): New member: dwarf_line_size.
	(DWARF_LINE_SIZE): New macro.
	(dwarf2_build_psymtabs_hard): Record the line section's size in
	the partial symbol table.
	(psymtab_to_symtab_1): Restore dwarf_line_size from the partial
	symbol table.

2002-05-10  Petr Sorfa  <petrs@caldera.com>

	* ia64-tdep.c: Handle breakpoints on L instruction type
	in MLX instruction bundle by moving the breakpoint to
	the third slot (X instruction type) as L holds only data.

2002-05-10  Kevin Buettner  <kevinb@redhat.com>

	* dbxread.c (discarding_local_symbols_complaint): New complaint.
	(process_one_symbol): Complain about discarding local symbols
	due to a misplaced N_LBRAC entry.

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

	From Daniel Berlin <dan@cgsoftware.com>
	* linespec.c (find_toplevel_char): '<' and '>' also increase and
	decrease the depth we are at, in the case of templates.

2002-05-09  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (mips_float_register_type): New function.
	(mips_double_register_type): New function.
	(mips_print_register): Use them.
	(do_fp_register_row): Likewise.

2002-05-09  Daniel Jacobowitz  <drow@mvista.com>

	* signals/signals.c (signals): Remove conditional compilation around
	Mach-specific signals.  Move them to after TARGET_SIGNAL_DEFAULT.
	(target_signal_from_name): Loop until TARGET_SIGNAL_LAST.

2002-05-09  Michael Snyder  <msnyder@redhat.com>

	* remote-rdp.c (remote_rdp_can_run): Remove.

2002-05-09  Tom Tromey  <tromey@redhat.com>

	* jv-valprint.c (java_val_print): Handle `char' as a special case
	of TYPE_CODE_INT.

2002-05-09  Michael Snyder  <msnyder@redhat.com>

	* arm-tdep.c (arm_scan_prologue): Accept strb r(0123),[r11,#-nn],
	strh r(0123),[r11,#-nn], str r(0123),[r11,#-nn], as well as
	strb r(0123),[sp,#nn], strh r(0123),[sp,#nn] and
	str r(0123),[sp,#nn].
	(arm_skip_prologue): Ditto.  Also make disassembly
	order-independent by placing it in a loop.

2002-05-06  Michael Snyder  <msnyder@redhat.com>

	* stabsread.c (read_type): Add recognition for new attribute:
	"@V;" means that an array type is actually a vector.
	This is analogous to the vector flag that's been added to dwarf2.

2002-05-09  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.h (i386_abi): New enum.
	(struct gdbarch_tdep): Replace os_ident member with abi.
	(i386_gdbarch_register_os_abi): New prototype.
	* i386-tdep.c (i386_abi_names): New array.
	(process_note_abi_tag_sections): Removed.
	(process_note_sections): New function.
	(i386_elf_abi_from_note, i386_elf_abi): New functions.
	(struct i386_abi_handler): New struct.
	(i386_abi_handler_list): New variable.
	(i386_gdbarch_register_os_abi): New function.
	(i386_gdbarch_init): Adapt for the changes given above.

2002-05-08  Daniel Jacobowitz  <drow@mvista.com>

	* gregset.h: Say "GNU/Linux".

2002-05-08  Elena Zannoni  <ezannoni@redhat.com>

	* gdbtypes.c : Add new builtin type for 64 bit vectors.
        (build_gdbtypes): Build builtin_type_v2_float.
	(_initialize_gdbtypes): Register new builtin type.

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

	* gdbarch.sh (init_gdbarch_swap): Do not clear the swap section.
	(clear_gdbarch_swap): New function.
	(initialize_non_multiarch): Call.
	(gdbarch_update_p): Before calling init(), swap out and clear the
	existing architecture.
	* gdbarch.c: Regenerate.

2002-05-08  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/djgpp/fnchange.lst: Add alphanbsd-nat.c and
	alphanbsd-tdep.c.

2002-05-08  Jason Thorpe  <thorpej@wasabisystems.com>

	* sh-nbsd-nat.c: Rename to...
	* shnbsd-nat.c: ...this.
	* sh-nbsd-tdep.c: Rename to...
	* shnbsd-tdep.c: ...this.
	* sh-nbsd-tdep.h: Rename to...
	* shnbsd-tdep.h: ...this.
	* config/sh/nbsd.mh: Use shnbsd-nat.o.
	* config/sh/nbsd.mt: Use shnbsd-tdep.o.

2002-05-08  Richard Earnshaw  <rearnsha@arm.com>

	* remote-rdi.c (_initializie_remote_rdi): Use ANSI-style string
	concatenation for command help messages.

2002-05-08  Jason Thorpe  <thorpej@wasabisystems.com>

	* NEWS: Note new sh*-*-netbsdelf* configuration.
	* configure.host: Set gdb_host_cpu to sh for all sh*.
	(sh*-*-netbsdelf*): New host.
	* configure.tgt: Set gdb_target_cpu to sh for all sh*.
	(sh*-*-netbsdelf*): New target.
	* sh-nbsd-nat.c: New file.
	* sh-nbsd-tdep.c: New file.
	* sh-nbsd-tdep.h: New file.
	* config/sh/nbsd.mh: New file.
	* config/sh/nbsd.mt: New file.
	* config/sh/nm-nbsd.h: New file.
	* config/sh/tm-nbsd.h: New file.

2002-05-08  Jason Thorpe  <thorpej@wasabisystems.com>

	* sh-tdep.c (sh_osabi_names): Declare.
	(process_note_abi_tag_sections): New function.
	(get_elfosabi): Ditto.
	(sh_gdbarch_register_os_abi): Ditto.
	(sh_dump_tdep): Ditto.
	_initialize_sh_tdep): Use gdbarch_register to register
	sh_gdbarch_init and sh_dump_tdep.
	* config/sh/tm-sh.h (sh_osabi): Declare.
	(gdbarch_tdep): Add sh_osabi and osabi_name members.

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

	* arm-tdep.c (arm_skip_prologue): Handle generic dummy frames.
	(thumb_scan_prologue): Ditto.
	(arm_find_callers_reg): Ditto.
	(arm_frame_chain): Ditto.
	(arm_init_extra_frame_info): Ditto.
	(arm_frame_saved_pc): Ditto.
	(arm_pop_frame): Ditto.
	(arm_push_return_address): New function.
	(arm_gdbarch_init): Initialize use_generic_dummy_frames,
	call_dummy_location, call_dummy_breakpoint_offset_p,
	call_dummy_breakpoint_offset, call_dummy_p,
	call_dummy_stack_adjust_p, call_dummy_words,
	sizeof_call_dummy_words, call_dummy_start_offset,
	call_dummy_length, fix_call_dummy, pc_in_call_dummy,
	call_dummy_address, push_return_address and push_dummy_frame for
	generic dummy frames.

2002-05-07  Jason Thorpe  <thorpej@wasabisystems.com>

	* sh-tdep.c (sh_nofp_frame_init_saved_regs): Fix error in
	size computation for alloca.
	(sh_fp_frame_init_saved_regs): Likewise.

2002-05-07  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.h (ARM_MAX_REGISTER_RAW_SIZE): Define.
	(ARM_MAX_REGISTER_VIRTUAL_SIZE): Define.
	* arm-tdep.c (arm_store_return_value): Use them.
	Use FP_REGISTER_RAW_SIZE when setting the FPA return value.
	* remote-rdp.c (remote_rdp_fetch_register): Use
	ARM_MAX_REGISTER_RAW_SIZE.
	(remote_rdp_store_register): Likewise.

2002-05-07  Michal Ludvig  <mludvig@suse.cz>

	* dwarf2cfi.c: Code cleanup, removed unused variables,
	added default labels to switch {} statements.
	* x86-64-tdep.c: Ditto.
	* x86-64-linux-nat.c: Ditto.

2002-05-07  Jason Thorpe  <thorpej@wasabisystems.com>

	* solib.h: Protect against multiple inclusion.

2002-05-06  Jim Blandy  <jimb@redhat.com>

	Add first preprocessor macro-expansion files.
	* macroexp.c, macroexp.h, macrotab.c, macrotab.h: New files.
	* Makefile.in (SFILES): Add macrotab.c, macroexp.c.
	(splay_tree_h, macroexp_h, macrotab_h): New variable.
	(HFILES_NO_SRCDIR): Add macrotab.h, macroexp.h.
	(COMMON_OBS): Add macrotab.o, macroexp.o.
	(macroexp.o, macrotab.o): New rules.

	Separate the job of reading the line number info statement program
	header (...expialidocious) out into its own function.
	* dwarf2read.c (struct line_head, struct filenames, struct
	directories): Replace with...
	(struct line_header): New structure, containing the full
	contents of the statement program header, including the
	include directory and file name tables.
	(read_file_scope): If we have line number info, instead of just
	calling dwarf_decode_lines to do all the work, call
	dwarf_decode_line_header first to get a `struct line_header'
	containing the data in the statement program header, and then
	pass that to dwarf_decode_lines, which will pick up where that
	left off.  Be sure to clean up the `struct line_header' object.
	(dwarf_decode_line_header, free_line_header, add_include_dir,
	add_file_name): New functions.
	(dwarf_decode_lines): Move all the code to read the statement
	program header into dwarf_decode_line_header.  Take the line
	header it built as the first argument, instead of the offset to
	the compilation unit's line number info.  Use the new `struct
	line_header' type instead of the old structures.  No need to do
	cleanups here now, since we don't allocate anything.
	(dwarf2_statement_list_fits_in_line_number_section,
	dwarf2_line_header_too_long): New complaints.

2002-05-06  Elena Zannoni  <ezannoni@redhat.com>

	* gdbtypes.c (init_vector_type): New function.
	(build_builtin_type_vec128): Simplify the representation of SIMD
	registers.
	(build_gdbtypes): Initialize new builtin vector types.
	(_initialize_gdbtypes): Register new vector types with gdbarch.
	(builtin_type_v4_float, builtin_type_v4_int32,
	builtin_type_v8_int16, builtin_type_v16_int8,
	builtin_type_v2_int32, builtin_type_v4_int16,
	builtin_type_v8_int8): New (renamed) SIMD types.

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

	* i387-nat.c (i387_fill_fsave): Use regcache_collect.
	(i387_fill_fxsave): Likewise.

2002-05-05  Alexandre Oliva  <aoliva@redhat.com>

	* alpha-tdep.c (alpha_extract_return_value): Don't use
	non-constant array size in prototype.

2002-05-04  Andrew Cagney  <ac131313@redhat.com>

	From Brian Taylor <briant at model dot com>:
	* ui-out.c (ui_out_field_core_addr): Use the function
	longest_local_hex_string_custom'to format addresses > 32 bits
	wide.

	* ui-out.c (ui_out_field_core_addr): Update comment.

2002-05-04  Andrew Cagney  <ac131313@redhat.com>

	* stack.c (select_and_print_frame): Make static.  Delete the
	parameter `level'.
	(func_command): Update call.
	(select_frame_command): Delete code computing the frame level.
	* frame.h (select_and_print_frame): Delete declaration.

2002-05-04  Andrew Cagney  <ac131313@redhat.com>

	* sparc-tdep.c (sparc_get_saved_register): Comment why
	get_prev_frame call is safe.

2002-05-04  Andrew Cagney  <ac131313@redhat.com>

	* frame.h (select_frame): Delete level parameter.
	* stack.c (select_frame): Update.  Use frame_relative_level to
	obtain the frame's level.
	(select_and_print_frame): Update call.
	(select_frame_command): Ditto.
	(up_silently_base): Ditto.
	(down_silently_base): Ditto.
	* ocd.c (ocd_start_remote): Ditto.
	* remote-rdp.c (remote_rdp_open): Ditto.
	* remote-mips.c (mips_initialize): Ditto.
	(common_open): Ditto.
	* remote-e7000.c (e7000_start_remote): Ditto.
	* m3-nat.c (select_thread): Ditto.
	* hppa-tdep.c (child_get_current_exception_event): Ditto.
	(child_get_current_exception_event): Ditto.
	* varobj.c (varobj_create): Ditto.
	(varobj_update): Ditto.
	(c_value_of_root): Ditto.
	* tracepoint.c (finish_tfind_command): Ditto.
	* corelow.c (core_open): Ditto.
	* arch-utils.c (generic_prepare_to_proceed): Ditto.
	* thread.c (info_threads_command): Ditto.
	(switch_to_thread): Ditto.
	* infrun.c (normal_stop): Ditto.
	(restore_selected_frame): Ditto.
	(restore_inferior_status): Ditto.
	* breakpoint.c (insert_breakpoints): Ditto.
	(watchpoint_check): Ditto.
	(bpstat_stop_status): Ditto.
	(do_enable_breakpoint): Ditto.
	* blockframe.c (flush_cached_frames): Ditto.
	(reinit_frame_cache): Ditto.

2002-05-04  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (Host/Native): Add Jason Thorpe as NetBSD
	maintainer.

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

	* gdbtypes.c (replace_type): Doc fix.

2002-05-04  Andrew Cagney  <ac131313@redhat.com>

	* valprint.c (strcat_longest): Delete commented out function.
	Update copyright.

2002-05-04  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Mark a29k as deleted.
	* NEWS: Mention that a29k was removed.  Add OBSOLETE section.
	Move new configurations to the top.
	* configure.tgt: Remove a29k.
	* config/a29k/tm-vx29k.h: Delete.
	* config/a29k/vx29k.mt: Delete.
	* config/a29k/tm-a29k.h: Delete.
	* config/a29k/a29k-udi.mt: Delete.
	* config/a29k/a29k.mt: Delete.
	* a29k-tdep.c: Delete.
	* remote-udi.c: Delete.
	* remote-mm.c: Delete.
	* remote-eb.c: Delete.
	* remote-adapt.c: Delete.
	* Makefile.in: Remove obsolete code.
	* gdbserver/Makefile.in: Ditto.
	* config/s390/s390x.mt: Ditto.
	* config/s390/s390.mt: Ditto.
	* config/sparc/sparclynx.mh: Ditto.
	* config/sparc/linux.mh: Ditto.
	* config/pa/hppaosf.mh: Ditto.
	* config/pa/hppabsd.mh: Ditto.
	* config/ns32k/nbsd.mt: Ditto.
	* config/mips/vr5000.mt: Ditto.
	* config/m68k/sun3os4.mh: Ditto.
	* config/m68k/nbsd.mt: Ditto.
	* config/m68k/m68klynx.mh: Ditto.
	* config/m32r/m32r.mt: Ditto.
	* config/i386/x86-64linux.mt: Ditto.
	* config/i386/nbsdelf.mt: Ditto.
	* config/i386/nbsd.mt: Ditto.
	* config/i386/i386lynx.mh: Ditto.

2002-05-04  Andrew Cagney  <ac131313@redhat.com>

	* target.c (debug_print_register): New function.  Handle oversize
	registers.
	(debug_to_fetch_registers): Call.
	(debug_to_store_registers): Call.

2002-05-03  Jim Blandy  <jimb@redhat.com>

	* stabsread.c (cleanup_undefined_types): Use replace_type, not memcpy.
	(read_type): Doc fix.
	* gdbtypes.c (replace_type): Doc fix.

	* stabsread.c (multiply_defined_struct): New complaint.
	(read_struct_type): If the type we were passed isn't empty, or
	incomplete, don't read the new struct type into it; complain,
	and return the original type unchanged.  Take a new `type_code'
	argument, which is the type code for the new type.
	(read_type): Rather than storing the type's type code here, pass
	it as an argument to read_struct_type, and let that take care of
	storing it.  That way, we don't overwrite the original type code,
	so read_struct_type can use it to decide whether we're overwriting
	something we shouldn't.
	(complain_about_struct_wipeout): New function.

2002-05-03  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Assert that gdbarch is non-NULL.
	* gdbarch.c: Regenerate.

2002-05-03  Jason Merrill  <jason@redhat.com>

	* gnu-v3-abi.c (gnuv3_rtti_type): If we get confused, just warn
	and return NULL.

2002-05-03  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_dwarf2gdb_regno_map),
	(x86_64_dwarf2gdb_regno_map_length),
	(x86_64_dwarf2_reg_to_regnum): Added.
	(x86_64_gdbarch_init): Added registration of x86_64_dwarf2_reg_to_regnum.
	(x86_64_gdbarch_init): Renamed from i386_gdbarch_init.
	(_initialize_x86_64_tdep): Synced with the change above.
	(x86_64_skip_prologue): Reformulated message.

2002-05-03  Pierre Muller  <muller@ics.u-strasbg.fr>

	* f-exp.y: Also use new prev_lexptr variable
	to improve error reporting. Based on Michael Snyder
	2002-04-24 dated patch to c-exp.y.
	* jv-exp.y: Likewise.
	* m2-exp.y: Likewise.

2002-05-02  Elena Zannoni  <ezannoni@redhat.com>

	* valops.c (value_arg_coerce): Don't coerce arrays to pointers if
	we are dealing with vectors.

2002-05-02  Pierre Muller  <muller@ics.u-strasbg.fr>

	* config/m68k/tm-nbsd.h: Obvious fix,
	correct machine name.

2002-05-02  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-typeprint.c (pascal_type_print_base): Add support
	for TYPE_CODE_STRING and TYPE_CODE_BITSTRING.

2002-05-02  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-lang.c (pascal_create_fundamental_type): Use TYPE_CODE_CHAR
	for fondamental pascal 'char' type.

2002-05-02  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-lang.h (is_pascal_string_type): Declaration changed,
	new sixth argument of type char ** added.
	* p-lang.c (is_pascal_string_type): Implementation
	changed. Args length_pos, length_size, string_pos, char_size
	can now be NULL. New argument arrayname set to the field
	name of the char array. Return value set to char array
	field index plus one.
	* p-valprint.c (pascal_val_print): Adapt to new declaration of
	is_pascal_string_type function.

2002-05-02  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (gdbarch_update_p): Revert 2002-05-02 Andrew Cagney
	<cagney@redhat.com> change.
	* gdbarch.c: Regenerate.

2002-05-02  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (gdbarch_update_p): Swap out the old architecture
	before probing for a new one.  Detect errorenous gdbarch_init
	functions.
	* gdbarch.c: Regenerate.

2002-05-01  Andrew Cagney  <cagney@redhat.com>

	* config/mn10200/tm-mn10200.h: Include "symfile.h" and "symtab.h".
	* config/mcore/tm-mcore.h: Ditto.  Update copyright.
	* config/v850/tm-v850.h: Ditto.  Update copyright.

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

	* cris-tdep.c (cris_gdbarch_init): Use arches instead of
	current_gdbarch.

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

	* arm-tdep.c: Whitespace clean-ups.
	(arm_skip_prologue): Fix thinko; two lines
	should have been removed as part of 4/24 change.

2002-04-30  Kevin Buettner  <kevinb@redhat.com>

	* rs6000-tdep.c: Added comment describing how fpscr register
	numbers were chosen.

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

	* gnu-nat.c (gnu_find_memory_regions): Fix merge botch.

2002-04-29  Elena Zannoni  <ezannoni@redhat.com>

	* hpread.c (DNTT_TYPE_VECTOR): Rename from TYPE_VECTOR.
	(DNTT_TYPE_VECTOR_LENGTH): Rename from TYPE_VECTOR_LENGTH.
	(hpread_symfile_init, hpread_lookup_type): Substitute throughout.

2002-04-29  Kevin Buettner  <kevinb@redhat.com>

	From Louis Hamilton <hamilton@redhat.com>:
	* rs6000-tdep.c (coff/xcoff.h, libxcoff.h): Include.
	* xcoffread.c (coff/xcoff.h, libxcoff.h): Likewise.
	* rs6000-tdep.c (rs6000_gdbarch_init): Use bfd_xcoff_is_xcoff64(),
	not bfd-private xcoff data, to determine wordsize.
	* xcoffread.c (read_xcoff_xymtab, read_symbol_lineno): Likewise.

2002-04-29  Andrew Cagney  <ac131313@redhat.com>

	GDB 5.2 released from 5.2 branch.

2002-04-29  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-linux-nat.c (fill_gregset): Explicit cast to avoid warning.
	* x86-64-tdep.c (i386_gdbarch_init): Ditto.
	(x86_64_register_info_table): Added comments with register numbers.

2002-04-29  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (rs6000_extract_return_value,
	rs6000_store_return_value): Handle returning vectors.
	(rs6000_gdbarch_init): Use
	ppc_sysv_abi_broken_use_struct_convention for native sysv cases.
	* ppc-linux-tdep.c (ppc_sysv_abi_broken_use_struct_convention):
	New function.
	(ppc_sysv_abi_use_struct_convention): Deal with functions returning
	vectors.
	(ppc_sysv_abi_push_arguments): Handle vector parameters.
	* ppc-tdep.h (ppc_sysv_abi_broken_use_struct_convention): Export.

2002-04-24  Pierre Muller  <ics.u-strasbg.fr>

	* hpread.c (hpread_psymtab_to_symtab_1,
	hpread_psymtab_to_symtab): Replace fprintf (stderr,...)
	with fprintf_unfiltered (gdb_stderr,...).

2002-04-24  Pierre Muller  <ics.u-strasbg.fr>

	* remote-array.c (printf_monitor, write_monitor,
	array_insert_breakpoint, array_remove_breakpoint ):
	Replace fprintf (stderr,...
	with fprintf_unfiltered (gdb_stderr,....
	* remote-es.c: Likewise.
	* remote-os9k.c: Likewise.
	* remote-st.c: Likewise.

2002-04-28  Andreas Schwab  <schwab@suse.de>

	* config/s390/s390.mh (NATDEPFILES): Remove solib.o, add
	linux-proc.o and gcore.o.

2002-04-26  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_skip_prologue): Print note when debugging
	code without frame pointers.

2002-04-26  Andrew Cagney  <ac131313@redhat.com>

	* sparc-tdep.c (sparc_gdbarch_init): Add comment explaining why
	ON_STACK is needed.

2002-04-26  Ben Elliston  <bje@redhat.com>

	* target.c (do_xfer_memory): Correct reference to the new option
	"trust-readonly-sections".

2002-04-26  Elena Zannoni  <ezannoni@redhat.com>

	* gdbtypes.h (TYPE_FLAG_VECTOR, TYPE_VECTOR): Define.
	* gdbtypes.c (recursive_dump_type): Output the vector flag.
	* dwarf2read.c (dwarf_attr_name): Handle new attribute for
	vectors.
	(read_array_type): Record the fact that this array type is really a
	vector (i.e. are passed in by value).

2002-04-26  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.h (gdbarch_tdep): Add sigcontext_addr member.
	* alpha-tdep.c (alpha_sigcontext_addr): New function.
	(alpha_find_saved_regs): Use alpha_sigcontext_addr.
	(alpha_gdbarch_init): Initialize tdep->sigcontext_addr.
	* alpha-linux-tdep.c: Include frame.h.
	(alpha_linux_sigcontext_addr): New function.
	(alpha_linux_init_abi): Set tdep->sigcontext_addr to
	alpha_linux_sigcontext_addr.
	* alpha-osf1-tdep.c: Include gdbcore.h.
	(alpha_osf1_sigcontext_addr): New function.
	(alpha_osf1_init_abi): Set tdep->sigcontext_addr to
	alpha_osf1_sigcontext_addr.
	* config/alpha/tm-alpha.h (SIGCONTEXT_ADDR): Remove.
	* config/alpha/tm-alphalinux.h (SIGCONTEXT_ADDR): Remove.

2002-04-26  Andrew Cagney  <ac131313@redhat.com>

	* stack.c (selected_frame_level):
	(select_frame): Do not set selected_frame_level.
	* frame.h (selected_frame_level): Delete declaration.

2002-04-26  Andrew Cagney  <ac131313@redhat.com>

	* rs6000-tdep.c (rs6000_gdbarch_init): Only set
	convert_from_func_ptr-addr when AIX / PowerOpen.

2002-04-25  Andrew Cagney  <ac131313@redhat.com>

	* valops.c (hand_function_call): Call
	generic_save_call_dummy_addr.
	* frame.h (generic_save_call_dummy_addr): Declare.
	* blockframe.c (struct dummy_frame): Add fields call_lo and
	call_hi.
	(generic_find_dummy_frame): Check for PC in range call_lo to
	call_hi instead of entry_point_address.
	(generic_pc_in_call_dummy): Search the dummy frames for a PC in
	the call_lo to call_hi range.  Allow for DECR_PC_AFTER_BREAK.
	(generic_save_call_dummy_addr): New function.

2002-04-24  David S. Miller  <davem@redhat.com>

	* sparc-tdep.c (sparc_gdbarch_skip_prologue): Kill, duplicates
	sparc_skip_prologue.
	(sparc_skip_prologue): Kill frameless_p arg, and use line number
	information to find prologue when possible.
	(sparc_prologue_frameless_p): Call examine_prologue directly.
	(sparc_gdbarch_init): Update set_gdbarch_skip_prologue call.
	* config/sparc/tm-sparc.h (sparc_skip_prologue): Update for killed
	second argument.
	(SKIP_PROLOGUE): Likewise.

2002-04-25  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_skip_prologue_internal): Remove
	GDB_TARGET_HAS_SHARED_LIBS #ifdef and update comment to
	indicate that the condition it was testing is always true.
	* config/alpha/nm-linux.h (GDB_TARGET_HAS_SHARED_LIBS): Remove.
	* config/alpha/nm-nbsd.h (GDB_TARGET_HAS_SHARED_LIBS): Ditto.
	* config/alpha/nm-osf.h (GDB_TARGET_HAS_SHARED_LIBS): Ditto.

2002-04-25  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.h (gdbarch_tdep): Add jb_pc and jb_elt_size members.
	* alpha-linux-tdep.c (alpha_linux_init_abi): Initialize
	tdep->jb_pc and tdep->jb_elt_size.
	* alpha-osf1-tdep.c (alpha_osf1_init_abi): Likewise.
	* alphafbsd-tdep.c (alphafbsd_init_abi): Likewise.
	* alphanbsd-tdep.c (alphanbsd_init_abi): Likewise.
	* alpha-nat.c (get_longjmp_target): Remove.
	(JB_ELEMENT_SIZE): Ditto.
	(JB_PC): Ditto.
	* alpha-tdep.c (alpha_get_longjmp_target): New function.
	(alpha_gdbarch_init): Default tdep->jb_pc to -1.  If the
	OS ABI sets jb_pc to a valid value, set gdbarch_get_longjmp_target
	to alpha_get_longjmp_target.
	(alpha_dump_tdep): Report tdep->jb_pc and tdep->jb_elt_size.
	* config/alpha/nm-linux.h (GET_LONGJMP_TARGET): Remove.
	* config/alpha/nm-osf.h (GET_LONGJMP_TARGET): Remove.

2002-04-25  Andrew Cagney  <ac131313@redhat.com>

	* README: Update to GDB 5.2.

2002-04-25  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (LC_ALL): Set to `c'.

2002-04-25  Theodore A. Roth  <troth@verinet.com>

	* avr-tdep.c: Ran through gdb_indent.sh.

2002-04-25  Theodore A. Roth  <troth@verinet.com>

	* MAINTAINERS: Add myself as AVR maintainer.
	* NEWS: Note new target avr.

2002-04-25  Theodore A. Roth  <troth@verinet.com>

	* Makefile.in: Add support for AVR target.
	* configure.tgt: Add support for AVR target.
	* avr-tdep.c: New file
 	* config/avr/avr.mt: New file.

2002-04-25  Theodore A. Roth  <troth@verinet.com>

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

2002-04-24  Pierre Muller  <ics.u-strasbg.fr>

	* f-lang.c (get_bf_for_fcn): Replace fprintf (stderr,...
	with fprintf_unfiltered (gdb_stderr,....

2002-04-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	Fix PR gdb/508.
	* symfile.c (add_filename_language): Fix wrong xrealloc size argument.

2002-04-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y: Also use new prev_lexptr variable
	to improve error reporting. Based on Michael Snyder
	2002-04-24 dated patch to c-exp.y.

2002-04-25  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_breakpoint_from_pc): New function.
	(alpha_gdbarch_init): Set gdbarch_breakpoint_from_pc to
	alpha_breakpoint_from_pc.  Set gdbarch_function_start_offset
	to 0.
	* config/alpha/tm-alpha.h: Remove forward decls of struct type
	and struct value.
	(FUNCTION_START_OFFSET): Remove.
	(BREAKPOINT): Ditto.

2002-04-25  Jason Thorpe  <thorpej@wasabisystems.com>

	* MAINTAINERS: Reflect that multi-arch is enabled for VAX.
	* NEWS: Ditto.

2002-04-24  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-linux-tdep.c (alpha_linux_pc_in_sigtramp): New function.
	(alpha_linux_init_abi): Set gdbarch_pc_in_sigtramp to
	alpha_linux_pc_in_sigtramp.
	* alpha-osf1-tdep.c (alpha_osf1_pc_in_sigtramp): New function.
	(alpha_osf1_init_abi): Set gdbarch_pc_in_sigtramp to
	alpha_osf1_pc_in_sigtramp.
	* alpha-tdep.c (alpha_osf_in_sigtramp): Remove.
	* alphafbsd-tdep.c (alphafbsd_pc_in_sigtramp): New function.
	(alphafbsd_init_abi): Set gdbarch_pc_in_sigtramp to
	alphafbsd_pc_in_sigtramp.
	* alphanbsd-tdep.c (alphanbsd_pc_in_sigtramp): New function.
	(alphanbsd_init_abi): Set gdbarch_pc_in_sigtramp to
	alphanbsd_pc_in_sigtramp.
	* config/alpha/tm-alpha.h (IN_SIGTRAMP): Remove.
	* config/alpha/tm-alphalinux.h (IN_SIGTRAMP): Remove.

2002-04-24  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/alpha/nbsd.mh (NATDEPFILES): Remove solib-legacy.o.

2002-04-24  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add alphanbsd-nat.c and
	alphanbsd-tdep.c.
	(alphanbsd-nat.o): New dependency list.
	(alphanbsd-tdep.o): Ditto.
	* NEWS: Note new native NetBSD/alpha configuration.
	* alphanbsd-nat.c: New file.
	* alphanbsd-tdep.c: Ditto.
	* configure.host (alpha*-*-netbsd*): New host.
	* configure.tgt (alpha*-*-netbsd*): New target.
	* config/alpha/nbsd.mh: New file.
	* config/alpha/nbsd.mt: Ditto.
	* config/alpha/nm-nbsd.h: Ditto.
	* config/alpha/tm-nbsd.h: Ditto.

2002-04-24  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add alpha-osf1-tdep.c.
	(alpha-osf1-tdep.o): New dependency list.
	* alpha-tdep.h (gdbarch_tdep): Add dynamic_sigtramp_offset
	and skip_sigtramp_frame members.
	* alpha-linux-tdep.c: Include gdbcore.h.
	(alpha_linux_sigtramp_offset): Change return type to LONGEST.
	(alpha_linux_init_abi): Initialize tdep->dynamic_sigtramp_offset.
	* alpha-osf1-tdep.c: New file.
	* alpha-tdep.c (alpha_osf_skip_sigtramp_frame): Moved to
	alpha-osf1-dep.c.
	(alpha_frame_past_sigtramp_frame): New function.
	(alpha_dynamic_sigtramp_offset): Ditto.
	(alpha_proc_desc_is_dyn_sigtramp): Ditto.
	(alpha_set_proc_desc_is_dyn_sigtramp): Ditto.
	(ALPHA_PROC_SIGTRAMP_MAGIC): Define.
	(push_sigtramp_desc): Use alpha_set_proc_desc_is_dyn_sigtramp.
	(after_prologue): Use alpha_proc_desc_is_dyn_sigtramp.
	(find_proc_desc): Use alpha_dynamic_sigtramp_offset.
	(alpha_frame_chain): Use alpha_frame_past_sigtramp_frame.
	(alpha_init_extra_frame_info): Use alpha_proc_desc_is_dyn_sigtramp.
	(alpha_pop_frame): Use alpha_proc_desc_is_dyn_sigtramp.
	(alpha_gdbarch_init): Initialize tdep->dynamic_sigtramp_offset
	and tdep->skip_sigtramp_frame.  Set gdbarch_skip_trampoline_code
	to find_solib_trampoline_target.
	* config/alpha/alpha-osf1.mt (TDEPFILES): Add alpha-osf1-tdep.o.
	* config/alpha/tm-alpha.h: Remove inclusion of regcache.h.
	(SKIP_TRAMPOLINE_CODE): Remove.
	(PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(DYNAMIC_SIGTRAMP_OFFSET): Ditto.
	(FRAME_PAST_SIGTRAMP_FRAME): Ditto.
	* config/alpha/tm-alphalinux.h (PROC_DESC_IS_DYN_SIGTRAMP): Remove.
	(PROC_SIGTRAMP_MAGIC): Ditto.
	(PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(DYNAMIC_SIGTRAMP_OFFSET): Ditto.
	(FRAME_PAST_SIGTRAMP_FRAME): Ditto.

2002-04-24  Jason Thorpe  <thorpej@wasabisystems.com>

	* NEWS: Note that Alpha targets are now multi-arch.

2002-04-24  Michael Snyder  <msnyder@redhat.com>

	* parser-defs.h (prev_lexptr): New external variable.
	* parse.c (parse_exp_1): Set prev_lexptr to null before
	calling the language-specific parser.
	* c-exp.y (yylex): Set prev_lexptr to start of current token.
	(yyerror): Use prev_lexptr in error reporting.

2002-04-24  Daniel Jacobowitz  <drow@mvista.com>

	* config/i386/tm-linux.h: Define FILL_FPXREGSET.
	* gregset.h: If FILL_FPXREGSET is defined, provide
	gdb_fpxregset_t, supply_fpxregset, and fill_fpxregset.
	* linux-proc.c (linux_do_thread_registers): If FILL_FPXREGSET
	is defined, call fill_fpxregset.

2002-04-24  Roland McGrath  <roland@frob.com>

	* config/i386/i386gnu.mh (NATDEPFILES): Add core-regset.o here.
	* i386gnu-nat.c [HAVE_SYS_PROCFS_H]
	(supply_gregset, supply_fpregset): New functions.

	* gnu-nat.c (gnu_find_memory_regions): New function.
	(init_gnu_ops): Set `to_find_memory_regions' hook to that.
	(gnu_xfer_memory): Add a cast.

2002-04-24  Michael Snyder  <msnyder@redhat.com>

	* arm-tdep.c (arm_scan_prologue): Move "mov ip, sp" into the
	loop.  Add handling for "str lr, [sp, #-4]!" and for saves
	of argument regs ("str r(0123), [r11, #-nn"]).
	(arm_skip_prologue): Better handling for frameless functions.
	Treat "mov ip, sp" as optional.  Recognize "str lr, [sp, #-4]".
	(arm_skip_prologue): Recognize str r(0123), [r11, #-nn].

Wed Apr 24 14:22:21 2002  Andrew Cagney  <cagney@redhat.com>

	* arm-tdep.c (arm_gdbarch_init): Add comment that NUM_REGS nor
 	NUM_PSEUDO_REGS can be used.

2002-04-24  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.h: Update copyright.

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

	* inferior.h (IN_SIGTRAMP): Delete definition.
	* arch-utils.c (legacy_pc_in_sigtramp): New function.
	* arch-utils.h (legacy_pc_in_sigtramp): Declare.

	* mips-tdep.c (mips_init_extra_frame_info): Use PC_IN_SIGTRAMP.
	(mips_dump_tdep): Do not print value of IN_SIGTRAMP.
	* hppa-tdep.c (pc_in_interrupt_handler):  Use PC_IN_SIGTRAMP.
	(find_proc_framesize): Ditto.
	* alpha-tdep.c (alpha_osf_skip_sigtramp_frame): Ditto.
	(alpha_init_extra_frame_info): Ditto.
	* infrun.c (handle_inferior_event): Ditto.
	(handle_inferior_event): Ditto.
	(check_sigtramp2): Ditto.
	* blockframe.c (create_new_frame): Ditto.
	(get_prev_frame): Ditto.
	* ppc-linux-tdep.c: Update comments.
	* i386-linux-tdep.c: Update comments.
	* breakpoint.c (bpstat_what): Update comment.

2002-04-24  Michal Ludvig  <mludvig@suse.cz>

	* gdbserver/linux-low.c (regsets_fetch_inferior_registers),
	(regsets_store_inferior_registers): Removed cast to int from
	ptrace() calls.
	* gdbserver/regcache.h: Added declaration of struct inferior_info.

2002-04-24  David S. Miller  <davem@redhat.com>

	* i960-tdep.c (register_in_window_p): New function.
	(i960_find_saved_register): Use it instead of
	REGISTER_IN_WINDOW_P.
	* config/i960/tm-i960.h (REGISTER_IN_WINDOW): Delete.

	* symtab.h (find_stab_function_addr): Kill extern.
	* minsyms.c (find_stab_function_addr): Remove from here...
	* dbxread.c: ... to here, and mark it static.

2002-04-20  David S. Miller  <davem@redhat.com>

	* sparc-tdep.c (sparc_pop_frame): Only need to allocate
	SPARC_INTREG_SIZE * 16 bytes for reg_temp.

2002-04-21  David S. Miller  <davem@redhat.com>

	* remote-vxsparc.c (vx_read_register): Fix typo, we want
	REGISTER_RAW_SIZE of SP_REGNUM not CORE_ADDR.
	(vx_write_register): Likewise.

2002-04-23  J. Brobecker  <brobecker@gnat.com>

	* source.c (is_regular_file): New function.
	(openp): Check wether file to open is a regular file
	to avoid opening directories.

2002-04-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* findvar.c (extract_signed_integer): Cast printf argument
	to suppress format warning.
	(extract_unsigned_integer): Likewise.
	* infcmd.c (registers_info): Likewise.
	* top.c (get_prompt_1): Likewise.
	* valops.c (value_assign): Likewise.
	* valprint.c (print_decimal): Likewise.

2002-04-22  H.J. Lu  (hjl@gnu.org)

	* c-exp.y (typebase): Support

	[long|long long|short] [signed|unsigned] [int|]

	and

	signed [long|long long|short] int

2002-04-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (vax-tdep.o): Add $(arch_utils_h), $(inferior_h),
	and vax-tdep.h.
	* vax-tdep.h: New file.
	* vax-tdep.c: Include inferior.h, arch-utils.h, and vax-tdep.h.
	Make several routines static.
	(vax_get_saved_register): New function.
	(vax_gdbarch_init): New function.
	(_initialize_vax_tdep): Register vax_gdbarch_init.
	* config/vax/tm-vax.h: Set GDB_MULTI_ARCH to GDB_MULTI_ARCH_PARTIAL.
	Remove macros now under the control of gdbarch.

2002-04-22  Michael Snyder  <msnyder@redhat.com>

	* arm-tdep.c (arm_skip_prologue): Recognize "sub sp, sp, #nn".
	Some whitespace and coding standards tweaks.

2002-04-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* vax-tdep.c: Include regcache.h.
	(vax_call_dummy_words): New.
	(sizeof_vax_call_dummy_words): New.
	(vax_fix_call_dummy): New function.
	(vax_saved_pc_after_call): Ditto.
	* config/vax/tm-vax.h: Don't include regcache.h.
	(SAVED_PC_AFTER_CALL): Use vax_saved_pc_after_call.
	(CALL_DUMMY): Remove.
	(CALL_DUMMY_WORDS): Define.
	(SIZEOF_CALL_DUMMY_WORDS): Define.
	(FIX_CALL_DUMMY): Use vax_fix_call_dummy.

2002-04-18  Michael Snyder  <msnyder@redhat.com>

	* arm-tdep.h: Change regnum defines to enums for ease of debugging.

2002-04-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* vax-tdep.c (vax_frame_chain): New function.
	(vax_push_dummy_frame): Ditto.
	(vax_pop_frame): Ditto.
	* config/vax/tm-vax.h (FRAME_CHAIN): vax_frame_chain.
	(FRAMELESS_FUNCTION_INVOCATION): Use
	generic_frameless_function_invocation_not.
	(PUSH_DUMMY_FRAME): Use vax_push_dummy_frame.
	(POP_FRAME): Use vax_pop_frame.

2002-04-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* vax-tdep.c (vax_store_struct_return): New function.
	(vax_extract_return_value): Ditto.
	(vax_store_return_value): Ditto.
	(vax_extract_struct_value_address): Ditto.
	* config/vax/tm-vax.h (STORE_STRUCT_RETURN): Use
	vax_store_struct_return.
	(EXTRACT_RETURN_VALUE): Use vax_extract_return_value.
	(STORE_RETURN_VALUE): Use vax_store_return_value.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Use vax_extract_struct_value_address.

2002-04-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* vax-tdep.c (vax_frame_saved_pc): New function.
	(vax_frame_args_address_correct): Ditto.
	(vax_frame_args_address): Ditto.
	(vax_frame_locals_address): Ditto.
	(vax_frame_num_args): Move code to be in proximity to
	other frame-related functions.
	* config/vax/tm-vax.h (INNER_THAN): Use core_addr_lessthan.
	(FRAME_SAVED_PC): Use vax_frame_saved_pc.
	(FRAME_ARGS_ADDRESS_CORRECT): Use vax_frame_args_address_correct.
	(FRAME_ARGS_ADDRESS): Use vax_frame_args_address.
	(FRAME_LOCALS_ADDRESS): Use vax_frame_locals_address.

2002-04-22  H.J. Lu  (hjl@gnu.org)

	* Makefile.in (FLAGS_TO_PASS): Add libdir, mandir, datadir and
	includedir.

2002-04-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* vax-tdep.c (vax_frame_init_saved_regs): New function.
	* config/vax/tm-vax.h (FRAME_FIND_SAVED_REGS): Remove.
	(FRAME_INIT_SAVED_REGS): New macro.

2002-04-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* MAINTAINERS: Reflect that the Alpha target has been multi-arch'd.

2002-04-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-nat.c (get_longjmp_target): Use ALPHA_* constants
	where needed.
	(fetch_osf_core_registers): Likewise.
	(supply_gregset): Likewise.

2002-04-22  J. Brobecker  <brobecker@gnat.com>

	* symfile.h (get_section_index): Define.
	* symfile.c (get_section_index): New function.
	* mdebugread.c (SC_IS_SBSS): New macro.
	(SC_IS_BSS): Return true for the scBss storage class only, as
	the scSBss storage class refers to the .sbss section.
	(parse_partial_symbols): Discard the symbols which associated
	section does not exist.
	Make sure to use the .sbss section index for symbols which
	storage class is scBss, rather than using the .bss section index.

2002-04-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* vax-tdep.c: Update copyright years.
	(vax_register_name): New function.
	(vax_register_byte): Ditto.
	(vax_register_raw_size): Ditto.
	(vax_register_virtual_size): Ditto.
	(vax_register_virtual_type): Ditto.
	* config/vax/tm-vax.h: Update copyright years.
	(REGISTER_NAMES): Remove.
	(REGISTER_NAME): Define.
	(REGISTER_BYTE): Use vax_register_byte.
	(REGISTER_RAW_SIZE): Use vax_register_raw_size.
	(REGISTER_VIRTUAL_SIZE): Use vax_register_virtual_size.
	(REGISTER_VIRTUAL_TYPE): Use vax_register_virtual_type.

2002-04-21  Andrew Cagney  <ac131313@redhat.com>

	* config/sparc/tm-sparc.h (sparc_skip_prologue): Restore
	declaration
	* arc-tdep.c (arc_prologue_frameless_p): Fix syntax error.

2002-04-21  David S. Miller  <davem@redhat.com>

	* arch-utils.c (generic_prologue_frameless_p): Kill
	SKIP_PROLOGUE_FRAMELESS_P code.
	* config/arc/tm-arc.h (SKIP_PROLOGUE_FRAMELESS_P): Delete
	references.
	(PROLOGUE_FRAMELESS_P, arc_prologue_frameless_p): New.
	* arc-tdep.c (arc_prologue_frameless_p): Implement.
	* config/arc/tm-sparc.h (SKIP_PROLOGUE_FRAMELESS_P): Delete
	references.
	(PROLOGUE_FRAMELESS_P, sparc_prologue_frameless_p): New.
	* sparc-tdep.c (sparc_prologue_frameless_p): Implement.
	(sparc_gdbarch_init): Pass it to
	set_gdbarch_prologue_frameless_p.

2002-04-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add alphabsd-nat.c.
	(alphabsd-nat.o): New dependency list.

2002-04-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (ALLDEPFILES): Add alpha-linux-tdep.c and
	alphafbsd-tdep.c.
	(alpha-linux-tdep.o): New dependency list.
	(alphafbsd-tdep.o): Likewise.

2002-04-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-linux-tdep.c: New file.  Move alpha_linux_sigtramp_offset
	to here...
	* alpha-tdep.c: ...from here.
	* config/alpha/alpha-linux.mt (TDEPFILES): Add alpha-linux-tdep.o.

2002-04-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/alpha/tm-alpha.h: Move alpha_software_single_step
	prototype from here...
	* alpha-tdep.h: ...to here.

2002-04-21  Andrew Cagney  <ac131313@redhat.com>

	* frame.h (selected_frame_level): Document as deprecated.
	(frame_relative_level): Declare.
	* stack.c (frame_relative_level): New function.
	(selected_frame_level): Document as deprecated.
	(select_frame): Do not set the selected_frame_level.

	* stack.c (frame_info, record_selected_frame): Update.
	(frame_command, current_frame_command): Update.
	(up_silently_base, up_command, down_silently_base): Update.
	(down_command): Update.
	* inflow.c (kill_command): Update.
	* tracepoint.c (finish_tfind_command): Update.
	* corelow.c (core_open): Update.
	* thread.c (info_threads_command): Update.
	(do_captured_thread_select): Update.
	* infcmd.c (finish_command): Update.
	* breakpoint.c (insert_breakpoints, do_enable_breakpoint): Update.

2002-04-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/alpha/tm-fbsd.h (FRAME_CHAIN_VALID): Remove.

2002-04-21  Andrew Cagney  <ac131313@redhat.com>

	* arm-tdep.c (arm_breakpoint_from_pc): Make static.  Make return
	type const.

2002-04-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* alphafbsd-tdep.c: Update copyright years.  Include
	alpha-tdep.h.
	(alphafbsd_use_struct_convention): Make static.
	(alphafbsd_init_abi): New function.
	(_initialize_alphafbsd_tdep): New function.
	* config/alpha/tm-fbsd.h: Update copyright years.
	(USE_STRUCT_CONVENTION): Remove.

2002-04-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_abi_handler): New structure to describe
	an Alpha ABI variant.
	(alpha_abi_handler_list): Declare.
	(alpha_gdbarch_register_os_abi): New function.
	(alpha_gdbarch_init): Give registered ABI variant handlers a
	chance to tweak the gdbarch once we have set up defaults.
	* alpha-tdep.h: Prototype alpha_gdbarch_register_os_abi.

2002-04-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_gdbarch_init): Set coerce_float_to_double
	to standard_coerce_float_to_double.
	* config/alpha/tm-alpha.h (COERCE_FLOAT_TO_DOUBLE): Remove.

2002-04-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.h (gdbarch_tdep): Add vm_min_address member.
	* alpha-tdep.c (heuristic_proc_start): Use vm_min_address
	from gdbarch_tdep rather than a constant.
	(alpha_gdbarch_init): Initialize tdep->vm_min_address to
	the default text address for all Alpha Unix ABIs.
	(alpha_dump_tdep): Report the value of tdep->vm_min_address.
	* config/alpha/tm-alpha.h (VM_MIN_ADDRESS): Delete.

2002-04-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.h: New file.  Includes several Alpha target constants
	taken from...
	* config/alpha/tm-alpha.h: ...here.  Remove macros that we now
	let gdbarch deal with.
	(GDB_MULTI_ARCH): Define as GDB_MULTI_ARCH_PARTIAL.
	* Makefile.in (alpha-nat.o): Add alpha-tdep.h and $(BFD_SRC)/elf-bfd
	to dependency list.
	* alpha-nat.c: Include alpha-tdep.h.  Update for adjusted
	Alpha target register names.
	* alphabsd-nat.c: Likewise.
	* alpha-tdep.c: Include alpha-tdep.h.  Update for adjusted
	Alpha target register names.  Make serveral routines static.
	(alpha_get_saved_register): New function.
	(alpha_abi_names): New.
	(process_note_abi_tag_sections): New function.
	(get_elfosabi): New function.
	(alpha_gdbarch_init): New function.
	(alpha_dump_tdep): New function.
	(_initialize_alpha_tdep): Register alpha_gdbarch_init.

2002-04-21  Andrew Cagney  <ac131313@redhat.com>

	* frame.c (find_saved_register): Delete #ifdef
	HAVE_REGISTER_WINDOWS code.
	* config/sparc/tm-sparc.h: Update comments.
	* config/i960/tm-i960.h (HAVE_REGISTER_WINDOWS): Delete macro.

2002-04-21  Andrew Cagney  <ac131313@redhat.com>

	* i960-tdep.c (i960_find_saved_register): New function.
	(i960_get_saved_register): New function.
	* config/i960/tm-i960.h (GET_SAVED_REGISTER): Define.
	(i960_get_saved_register): Declare.
	* config/i960/tm-i960.h, i960-tdep.c: Update copyright.

2002-04-20  David S. Miller  <davem@redhat.com>

	* sparc-nat.c (store-inferior_registers): Fix ambiguous else.

2002-04-20  Andrew Cagney  <ac131313@redhat.com>

	* arm-tdep.c (arm_gdbarch_init): Use gdbarch_num_pseudo_regs
	instead of NUM_PSEUDO_REGS.

2002-04-20  David S. Miller  <davem@redhat.com>

	* config/sparc/tm-linux.h (GDB_MULTI_ARCH): Define to
	GDB_MULTI_ARCH_PARTIAL
	* config/sparc/tm-sp64linux.h (GDB_MULTI_ARCH): Do not
	define, let tm-sp64.h do it.

2002-04-20  Jason Thorpe  <thorpej@wasabisystems.com>

	* frame.c (find_saved_register): Avoid a NULL pointer
	dereference and actually walk the frame list.

2002-04-20  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (gdbarch_update_p): Keep the list of architectures
	sorted in most most-recent-used order.  Document.
	* gdbarch.h, gdbarch.c: Regenerate.

2002-04-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/inferiors.c (struct inferior_info): Add regcache_data.
	(add_inferior): Call create_register_cache.
	(clear_inferiors): Call free_register_cache.
	(inferior_regcache_data, set_inferior_regcache_data): New functions.
	* gdbserver/regcache.c (struct inferior_regcache_data): New.
	(registers): Remove.
	(get_regcache): New function.
	(create_register_cache, free_register_cache): New functions.
	(set_register_cache): Don't initialize the register cache here.
	(registers_to_string, registers_from_string, register_data): Call
	get_regcache.
	* gdbserver/regcache.h: Add prototypes.
	* gdbserver/server.h: Likewise.

2002-04-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/mem-break.c: New file.
	* gdbserver/mem-break.h: New file.
	* gdbserver/Makefile.in: Add mem-break.o rule; update server.h
	dependencies.
	* gdbserver/inferiors.c (struct inferior_info): Add target_data
	member.
	(clear_inferiors): Free target_data member if set.
	(inferior_target_data, set_inferior_target_data): New functions.
	* gdbserver/linux-i386-low.c (i386_breakpoint, i386_breakpoint_len)
	(i386_stop_pc, i386_set_pc): New.  Add to the_low_target.
	* gdbserver/linux-low.c (linux_bp_reinsert): New variable.
	(struct inferior_linux_data): New.
	(linux_create_inferior): Use set_inferior_target_data.
	(linux_attach): Likewise.  Call add_inferior.
	(linux_wait_for_one_inferior): New function.
	(linux_wait): Call it.
	(linux_write_memory): Add const.
	(initialize_low): Call set_breakpoint_data.
	* gdbserver/linux-low.h (struct linux_target_ops): Add breakpoint
	handling members.
	* gdbserver/server.c (attach_inferior): Remove extra add_inferior
	call.
	* gdbserver/server.h: Include mem-break.h.  Update inferior.c
	prototypes.
	* gdbserver/target.c (read_inferior_memory)
	(write_inferior_memory): New functions.
	* gdbserver/target.h (read_inferior_memory)
	(write_inferior_memory): Change macros to prototypes.
	(struct target_ops): Update comments.  Add const to write_memory
	definition.

2002-04-19  Andrew Cagney  <ac131313@redhat.com>

	* sparc-tdep.c (sparc_get_saved_register): Use get_prev_frame
	instead of ->prev.
	* z8k-tdep.c (z8k_frame_chain): Do not use ->prev.
	* s390-tdep.c (s390_frame_chain): Do not use ->prev.
	* rs6000-tdep.c (frame_get_saved_regs): Use rs6000_frame_chain()
	instead of ->prev.

2002-04-19  Elena Zannoni  <ezannoni@redhat.com>

        Fix PR gdb/471.
	* gdbtypes.c (init_simd_type): Rewrite using new functions.
	(build_builtin_type_vec128): Ditto.
	(append_composite_type_field): Fix calculation of type length in
	union case.

2002-04-19  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/README: Update.

	* go32-nat.c (store_register): Cast &a_tss to `char *' to avoid a
	compiler warnings.

2002-04-19  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (setup_arbitrary_frame): Rename...
	(alpha_setup_arbitrary_frame): ...to this.
	* config/alpha/tm-alpha.h (SETUP_ARBITRARY_FRAME): Update
	for alpha_setup_arbitrary_frame.

2002-04-18  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (BREAKPOINT_FROM_PC): Return a const buffer.
	* gdbarch.h, gdbarch.c: Regenerate.

	* defs.h (breakpoint_from_pc_fn): Delete type definition.
	* target.h (memory_breakpoint_from_pc): Update declaration.
	* config/mcore/tm-mcore.h (mcore_breakpoint_from_p): Ditto.

	* arch-utils.c (legacy_breakpoint_from_pc): Update return type.
	* mcore-tdep.c (mcore_breakpoint_from_pc): Ditto.
	* mem-break.c (memory_breakpoint_from_pc): Ditto.
	* rs6000-tdep.c (rs6000_breakpoint_from_pc): Ditto.
	* s390-tdep.c (s390_breakpoint_from_pc): Ditto
	* xstormy16-tdep.c (xstormy16_breakpoint_from_pc): Ditto.
	* mn10300-tdep.c (mn10300_breakpoint_from_pc): Ditto.
	* mips-tdep.c (mips_breakpoint_from_pc): Ditto.
	* m68hc11-tdep.c (m68hc11_breakpoint_from_pc): Ditto.
	* ia64-tdep.c (ia64_breakpoint_from_pc): Ditto.
	* d10v-tdep.c (d10v_breakpoint_from_pc): Ditto.
	* arch-utils.c (legacy_breakpoint_from_pc): Ditto..

	* mem-break.c (default_memory_insert_breakpoint): Make `bp' a
	const pointer.
	* monitor.c (monitor_insert_breakpoint): Ditto.
	* rs6000-tdep.c (rs6000_software_single_step): Ditto for `breakp'.

	* config/mcore/tm-mcore.h: Update copyright.
	* mem-break.c: Ditto.
	* xstormy16-tdep.c: Ditto.

2002-04-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y: Add precedence rule for '^' token.
	This removes the shift/reduce conflicts.
	Remove the comment concerning these shift/reduce conflicts.

2002-04-18  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (COMMON_UISA_NOFP_REGS): New macro.
	(registers_powerpc_nofp): New register set for processors
	without floating point unit.

2002-04-18  David S. Miller  <davem@redhat.com>

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

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

	* MAINTAINERS: Add myself as co-maintainer of testsuite/gdb.asm.

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

	* rs6000-tdep.c (frame_initial_stack_address): Use
	frame_register_read to read the alloca_reg.

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

	* frame.c (find_saved_register): Find saved registers in the next
	not prev frame.
	Fix PR gdb/365.

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

	* gdbarch.sh (LANG): Set to ``c''.

2002-04-15  Andrew Cagney  <ac131313@redhat.com>

 	* PROBLEMS: Mention hppa2.0-hp-hpux10.20 compile problems.

2002-04-15  Andrew Cagney  <ac131313@redhat.com>

	* bcache.c: Include <stddef.h> and <stdlib.h> after "defs.h".
	Update copyright.

 	* hpread.c (hpread_get_lntt): Add declaration.
 	Also fix PR gdb/391.

2002-04-14  Andrew Cagney  <ac131313@redhat.com>

	* acinclude.m4 (AM_PROG_CC_STDC): Import from automake 1.6.
	* aclocal.m4, configure: Re-generate.
	Fix PR gdb/391.

2002-04-14  Elena Zannoni  <ezannoni@redhat.com>

        * mi/mi-cmd-disas.c (dump_insns): Use TARGET_PRINT_INSN
        instead of tm_print_insn.

2002-04-14  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-bdm.c (bdm_ppc_fetch_registers): Fix typo.

2002-04-14  Andrew Cagney  <ac131313@redhat.com>

	* config/pa/tm-hppa.h (FRAME_CHAIN_COMBINE): Delete macro.
	* blockframe.c (FRAME_CHAIN_COMBINE): Delete macro.
	(get_prev_frame): Do not call FRAME_CHAIN_COMBINE.

2002-04-12  Don Howard  <dhoward@redhat.com>

	* cli/cli-cmds.c (init_cli_cmds): Add new user settable value:
	max_user_call_depth.
	(init_cmd_lists): Initialize the new value;
	* cli/cli-script.c (execute_user_command): Limit the call depth of
	user defined commands.  This avoids a core-dump when user commands
	are infinitly recursive.

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

	* ppc-tdep.h (struct gdbarch_tdep): Add new member ``lr_frame_offset''.
	* rs6000-tdep.c (rs6000_frame_saved_pc): Use ``lr_frame_offset''
	from tdep struct instead of DEFAULT_LR_SAVE.
	(rs6000_gdbarch_init): Initialize ``lr_frame_offset''.
	* config/powerpc/tm-ppc-eabi.h (DEFAULT_LR_SAVE): Delete.
	* config/rs6000/tm-rs6000.h (DEFAULT_LR_SAVE): Delete.

2002-04-12  Michael Snyder  <msnyder@redhat.com>

	* Remote.c: Spelling fix.
	* gcore.c (default_derive_heap_segment): Use bfd_section_name.
	If no symbol found for "sbrk", try "_sbrk".
	(make_output_phdrs): Use bfd_section_name.
	(gcore_copy_callback): Use bfd_section_name.
	* eval.c: Indentation fix-ups.
	* d10v-tdep.c (d10v_make_iaddr): Make it idempotent,
	in case it gets applied to an address that is already
	in the instruction space.
	* cli/cli-decode.c (help_list): Allow long lines to wrap.
	* symfile.c: Fix indentation, long lines.
	* source.c: White space fix-up.

2002-04-12  Andrew Cagney  <cagney@redhat.com>

	* defs.h (read_relative_register_raw_bytes): Delete declaration.
	* frame.c (frame_register_read): New function.  Return non-zero on
	success.
	(read_relative_register_raw_bytes_for_frame): Delete.
	(read_relative_register_raw_bytes): Delete.
	* frame.h (frame_register_read): Declare.
	* d30v-tdep.c: Update Copyright.  Use frame_register_read.
	* sh-tdep.c: Ditto.
	* infcmd.c (do_registers_info): Ditto.
	* hppa-tdep.c: Ditto.
	* rs6000-tdep.c: Ditto.
	* h8500-tdep.c: Ditto.
	* mips-tdep.c: Ditto.
	* h8300-tdep.c: Ditto.
	* z8k-tdep.c: Ditto.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_gdbarch_init): Use rs6000_* methods for
	64-bit SysV ABI.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_gdbarch_init): Compute ``wordsize'' from
	bfd info.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (powerpc64, 630, rs64ii, rs64iii): Define
	register sets for these processor variants.

2002-04-11  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (usr_store_inferior_registers): Support
	registers which are allowed to fail to store.
	* gdbserver/linux-low.h (linux_target_ops): Likewise.
	* gdbserver/linux-ppc-low.c (ppc_regmap): Support FPSCR.
	(ppc_cannot_store_register): FPSCR may not be storable.
	* regformats/reg-ppc.dat: Support FPSCR.

2002-04-11  Kevin Buettner  <kevinb@redhat.com>

	* ppc-tdep.h (struct gdbarch_tdep): Add new field ``ppc_fpscr_regnum''.
	* ppc-bdm.c (bdm_ppc_fetch_registers, bdm_ppc_store_registers):
	Add fpscr as an invalid/unfetchable register.
	* ppc-linux-nat.c (ppc_register_u_addr, store_register)
	(fetch_ppc_registers, store_ppc_registers, supply_fpregset)
	(fill_fpregset): Add support for register fpscr.
	(fetch_ppc_registers, store_ppc_registers, supply_gregset)
	(fill_gregset): Account for the fact that register ``mq'' might
	not exist.
	* rs6000-tdep.c (PPC_UISA_SPRS): Use (unused) slot 70 for fpscr.
	(registers_power): Add fpscr to register set at slot 71.
	(rs6000_gdbarch_init): Account for the fact that ``mq'' doesn't
	exist on most PPC architectures.  Initialize ppc_fpscr_regnum.

2002-04-11  Michael Snyder  <msnyder@redhat.com>

	* configure.in: Autoconfiscate _SYSCALL32 define for solaris.
	* configure: Regenerate.
	* config.in: Regenerate.
	* acconfig.h: Add define for _SYSCALL32.
	* core-sol2.c: Remove #define _SYSCALL32.
	* solib-legacy.c: Remove #define _SYSCALL32.

2002-04-10  Andrew Cagney  <ac131313@redhat.com>

	* stack.c (select_frame): Cleanup internal error message, do not
	use %p.

2002-04-10  Andrew Cagney  <ac131313@redhat.com>

	* stack.c (select_frame): Check that selected_frame and the
	specified level are as expected.
	* blockframe.c (get_prev_frame): Set the `level' from next_frame.
	Update copyright.
	* frame.h (struct frame_info): Add field `level'.  Update
	copyright.
	Work-in-progress PR gdb/464.

2002-04-10  Andrew Cagney  <ac131313@redhat.com>

	* maint.c (maint_print_section_info): Rename print_section_info.
	(print_bfd_section_info, print_objfile_section_info): Update.
	* inferior.h (struct gdbarch): Add opaque declaration.
	* gdbarch.sh: Add include of "inferior.h" to gdbarch.sh.
	* gdbarch.h: Regenerate.

2002-04-10  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-linux-nat.c (child_resume, child_xfer_memory): Delete.
	(PTRACE_XFER_TYPE): Moved to config/i386/nm-x86-64.h.
	(kernel_u_size): Added.
	* config/i386/nm-x86-64.h (CHILD_XFER_MEMORY, CHILD_RESUME): Delete.
	(PTRACE_XFER_TYPE): Moved here from config/i386/nm-x86-64.h.

2002-04-04  Jim Ingham  <jingham@apple.com>

       * valarith.c (find_size_for_pointer_math): New function, either returns
       the size for a pointer's target, returns 1 for void *, or errors for
       incomplete types.
       (value_add, value_sub): use find_size_for_pointer_math.

2002-04-09  Daniel Jacobowitz  <drow@mvista.com>

	* linux-low.c (linux_look_up_symbols): New hook.
	(linux_target_ops): Add linux_look_up_symbols.
	* remote-utils.c (decode_address): New function.
	(look_up_one_symbol): New function.
	* server.c (handle_query): Call target look_up_symbols hook.
	* server.h (look_up_one_symbol): Add prototype.
	* target.h (struct target_ops): Add look_up_symbols hook.

2002-04-09  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/server.h: Include <string.h> if HAVE_STRING_H.
	* ChangeLog: Correct paths in last ChangeLog entry.

2002-04-09  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.h: Remove obsolete prototypes.
	(struct linux_target_ops): New.
	(extern the_low_target): New.
	* gdbserver/linux-low.c (num_regs, regmap): Remove declarations.
	(register_addr): Use the_low_target explicitly.
	(fetch_register): Likewise.
	(usr_fetch_inferior_registers): Likewise.
	(usr_store_inferior_registers): Likewise.
	* gdbserver/linux-arm-low.c (num_regs): Remove.
	(arm_num_regs): Define.
	(arm_regmap): Renamed from regmap, made static.
	(arm_cannot_fetch_register): Renamed from cannot_fetch_register,
	made static.
	(arm_cannot_store_register): Renamed from cannot_store_register,
	made static.
	(the_low_target): New.
	* gdbserver/linux-i386-low.c (num_regs): Remove.
	(i386_num_regs): Define.
	(i386_regmap): Renamed from regmap, made static.
	(i386_cannot_fetch_register): Renamed from cannot_fetch_register,
	made static.
	(i386_cannot_store_register): Renamed from cannot_store_register,
	made static.
	(the_low_target): New.
	* gdbserver/linux-ia64-low.c (num_regs): Remove.
	(ia64_num_regs): Define.
	(ia64_regmap): Renamed from regmap, made static.
	(ia64_cannot_fetch_register): Renamed from cannot_fetch_register,
	made static.
	(ia64_cannot_store_register): Renamed from cannot_store_register,
	made static.
	(the_low_target): New.
	* gdbserver/linux-m68k-low.c (num_regs): Remove.
	(m68k_num_regs): Define.
	(m68k_regmap): Renamed from regmap, made static.
	(m68k_cannot_fetch_register): Renamed from cannot_fetch_register,
	made static.
	(m68k_cannot_store_register): Renamed from cannot_store_register,
	made static.
	(the_low_target): New.
	* gdbserver/linux-mips-low.c (num_regs): Remove.
	(mips_num_regs): Define.
	(mips_regmap): Renamed from regmap, made static.
	(mips_cannot_fetch_register): Renamed from cannot_fetch_register,
	made static.
	(mips_cannot_store_register): Renamed from cannot_store_register,
	made static.
	(the_low_target): New.
	* gdbserver/linux-ppc-low.c (num_regs): Remove.
	(ppc_num_regs): Define.
	(ppc_regmap): Renamed from regmap, made static.
	(ppc_cannot_fetch_register): Renamed from cannot_fetch_register,
	made static.
	(ppc_cannot_store_register): Renamed from cannot_store_register,
	made static.
	(the_low_target): New.
	* gdbserver/linux-s390-low.c (num_regs): Remove.
	(s390_num_regs): Define.
	(s390_regmap): Renamed from regmap, made static.
	(s390_cannot_fetch_register): Renamed from cannot_fetch_register,
	made static.
	(s390_cannot_store_register): Renamed from cannot_store_register,
	made static.
	(the_low_target): New.
	* gdbserver/linux-sh-low.c (num_regs): Remove.
	(sh_num_regs): Define.
	(sh_regmap): Renamed from regmap, made static.
	(sh_cannot_fetch_register): Renamed from cannot_fetch_register,
	made static.
	(sh_cannot_store_register): Renamed from cannot_store_register,
	made static.
	(the_low_target): New.
	* gdbserver/linux-x86-64-low.c (x86_64_regmap): Renamed from regmap.
	(the_low_target): New.

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

	* frame.c (read_relative_register_raw_bytes_for_frame): Do not
	override FP_REGNUM with frame->fp.  Update copyright.
	* parse.c (num_std_regs, std_regs): Delete.
	(target_map_name_to_register): Do not search std_regs.  Update
	function description.
	* parser-defs.h (num_std_regs, std_regs, struct std_regs): Delete
	declarations.  Update copyright.
	Fix PR gdb/251.

2002-04-09  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in: Add stamp-h target.
	* gdbserver/configure.in: Create stamp-h.
	* gdbserver/configure: Regenerated.

2002-04-09  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/inferiors.c: New file.
	* gdbserver/target.c: New file.
	* gdbserver/target.h: New file.
	* gdbserver/Makefile.in:  Add target.o and inferiors.o.  Update
	dependencies.
	* gdbserver/linux-low.c (inferior_pid): New static variable,
	moved from server.c.
	(linux_create_inferior): Renamed from create_inferior.
	Call add_inferior.  Return 0 on success instead of a PID.
	(linux_attach): Renamed from myattach.
	(linux_kill): Renamed from kill_inferior.  Call clear_inferiors ().
	(linux_thread_alive): Renamed from mythread_alive.
	(linux_wait): Renamed from mywait.  Call clear_inferiors () if the
	child dies.
	(linux_resume): Renamed from myresume.  Add missing ``return 0''.
	(regsets_store_inferior_registers): Correct error message.
	Add missing ``return 0''.
	(linux_fetch_registers): Renamed from fetch_inferior_registers.
	(linux_store_registers): Renamed from store_inferior_registers.
	(linux_read_memory): Renamed from read_inferior_memory.
	(linux_write_memory): Renamed from write_inferior_memory.
	(linux_target_ops): New structure.
	(initialize_low): Call set_target_ops ().
	* gdbserver/remote-utils.c (unhexify): New function.
	(hexify): New function.
	(input_interrupt): Send signals to ``signal_pid''.
	* gdbserver/server.c (inferior_pid): Remove.
	(start_inferior): Update create_inferior call.
	(attach_inferior): Call add_inferior.
	(handle_query): New function.
	(main): Call handle_query for `q' packets.
	* gdbserver/server.h: Include "target.h".  Remove obsolete prototypes.
	Add prototypes for "inferiors.c", "target.c", hexify, and unhexify.

2002-04-09  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in: Add WARN_CFLAGS.  Update configury
	dependencies.
	* gdbserver/configure.in: Check for <string.h>
	* gdbserver/configure: Regenerate.
	* gdbserver/config.in: Regenerate.
	* gdbserver/gdbreplay.c: Include needed system headers.
	(remote_open): Remove strchr prototype.
	* gdbserver/linux-low.h: Correct #ifdef to HAVE_LINUX_USRREGS.
	* gdbserver/regcache.c (supply_register): Change buf argument to const void *.
	(supply_register_by_name): Likewise.
	(collect_register): Change buf argument to void *.
	(collect_register_by_name): Likewise.
	* gdbserver/regcache.h: Add missing prototypes.
	* gdbserver/remote-utils.c: Include <arpa/inet.h> for inet_ntoa.
	* gdbserver/server.c (handle_query): New function.
	(attached): New static variable, moved out of main.
	(main): Quiet longjmp clobber warnings.
	* gdbserver/server.h: Add ATTR_NORETURN and ATTR_FORMAT.  Update prototypes.
	* gdbserver/utils.c (error): Remove NORETURN.
	(fatal): Likewise.

2002-04-09  Daniel Jacobowitz  <drow@mvista.com>

	* symtab.h (ALL_BLOCK_SYMBOLS): Don't dereference the pointer
	after the last symbol in a block.

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

	* p-exp.y (yylex): Handle also the fact that is_a_field_of_this
	is non zero as a found symbol.

2002-04-08  Andrew Cagney  <ac131313@redhat.com>

	* findvar.c: Include "builtin-regs.h".
	(value_of_register): Call value_of_builtin_reg when applicable.
	* parse.c: Include "builtin-regs.h" and "gdb_assert.h".
	(target_map_name_to_register): Call
	builtin_reg_map_name_to_regnum.
	* Makefile.in (SFILES): Add builtin-regs.c and std-regs.c.
	(COMMON_OBS): Add builtin-regs.o and std-regs.o.
	(builtin_regs_h): Define.
	(builtin-regs.o): New target.
	(findvar.o): Add $(builtin_regs_h).
	* builtin-regs.c, builtin-regs.h: New files.
	* std-regs.c: New file.
	Partial fix for PR gdb/251.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Don't set tm_print_insn;
	it's no longer required.

2002-04-08  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (gdbtk-wrapper.o): Add missing dependencies.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_software_single_step): Use
	rs6000_breakpoint_from_pc() to fetch breakpoint instruction
	and size.  Use target_insert_breakpoint() and
	target_remove_breakpoint() to insert and remove breakpoints
	instead of explicit memory reads and writes.

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

	* config/powerpc/tm-ppc-eabi.h (ELF_OBJECT_FORMAT): Delete.
	* rs6000-tdep.c (rs6000_push_arguments): Eliminate
	ELF_OBJECT_FORMAT ifdef.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_gdbarch_init): Use set_gdbarch_print_insn().

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_fix_call_dummy): Delete unused macro
	definitions for TOC_ADDR_OFFSET and TARGET_ADDR_OFFSET.

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

	* fbsd-proc.c (child_pid_to_exec_file, fbsd_find_memory_regions):
	s/asprintf/xasprintf/.
	(fbsd_make_corefile_notes): s/strdup/xstrdup/.

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

	I believe Jeff Law denies responsability for this one:
	* config/pa/hpux11w.mh (MH_CFLAGS): Add -Dvfork=fork.
	* config/pa/hpux11.mh (MH_CFLAGS): Add -Dvfork=fork.
	* config/pa/hpux1020.mh (MH_CFLAGS): Add -Dvfork=fork.
	Work-around for PR gdb/366.

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

	* remote-e7000.c (write_small, e7000_read_inferior_memory,
	e7000_read_inferior_memory_large, e7000_insert_breakpoint,
	e7000_remove_breakpoint): Use paddr_nz() to print addresses.

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

	* sh-tdep.c (sh_fp_frame_init_saved_regs,
	sh_nofp_frame_init_saved_regs): Use alloca() for 'where'
	information.

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

	* MAINTAINERS (Misc): List Daniel Jacobowitz as the GDBSERVER
	maintainer.

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

	* README (Reporting Bugs in GDB): Document the bug web page as the
	prefered way of submitting bugs.
	Fix PR gdb/402.

2002-04-06  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (FP_REGNUM, PC_REGNUM, SP_REGNUM): Allow default of
	-1.  Update comment.
	* gdbarch.h, gdbarch.c: Re-generate.

2002-04-07  Andreas Schwab  <schwab@suse.de>

	* m68klinux-nat.c (fill_fpregset): Properly pass address of
	buffer to regcache_collect.

2002-04-06  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (PS_REGNUM): Add.  Document.  Default to -1.
	* gdbarch.c, gdbarch.h: Re-generate.

2002-04-06  Andrew Cagney  <ac131313@redhat.com>

	* symtab.c (lookup_symtab): Remove ``const'' from ``rp''
	declaration.  Fix -Werror.

2002-04-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbarch.sh (initialize_non_multiarch): Call init_gdbarch_swap.
	* gdbarch.c: Regenerate.

2002-04-05  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (clear_command): Rewrite middle section to
	combine two loops with identical control conditions.
	Add a cleanup to eliminate a memory leak.
	* cli/cli-dump.c (restore_section_callback): Use paddr_nz.

2002-04-05  H.J. Lu  (hjl@gnu.org)

	* solib-svr4.c (bkpt_names): Add "__start".

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

	* sparc-tdep.c (sparc_push_dummy_frame): Use GDB_TARGET_IS_SPARC64
	as test for 64 bit target.

2002-04-05  Andrew Cagney  <ac131313@redhat.com>

	* h8500-tdep.c (h8500_write_fp): Delete function.
	* dwarf2cfi.c (cfi_write_fp): Document as not used.
	* mips-tdep.c (mips_gdbarch_init): Do not set write_fp.
	* ia64-tdep.c (ia64_gdbarch_init): Do not set write_fp.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Do not set write_fp.
	* rs6000-tdep.c (rs6000_gdbarch_init): Do not set write_fp.
	* s390-tdep.c (s390_gdbarch_init): Do not set write_fp.
	(s390_write_fp):
	* sh-tdep.c (sh_gdbarch_init): Do not set write_fp.
	* x86-64-tdep.c (i386_gdbarch_init): Do not set write_fp.
	* d10v-tdep.c (d10v_gdbarch_init): Do not set write_fp.
	(d10v_write_fp): Delete function.
	* inferior.h (write_fp, generic_target_write_fp): Delete
	declarations.
	* regcache.c (generic_target_write_fp): Delete function.
	(write_fp): Delete function.
	* gdbarch.sh (TARGET_WRITE_FP): Delete.
	* gdbarch.h, gdbarch.c: Regenerate.
	* config/v850/tm-v850.h (TARGET_WRITE_FP): Delete macro.
	* config/sparc/tm-sp64.h (TARGET_WRITE_FP): Delete macro.
	(sparc64_write_fp): Delete declaration.
	* config/h8500/tm-h8500.h (TARGET_WRITE_FP): Delete macro.
	(h8500_write_fp): Delete declaration.

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

	* sparc-tdep.c (sparc64_write_fp): Delete.
	(sparc_push_dummy_frame): Replace write_fp call with code to store
	the FP directly.
	(sparc_gdbarch_init): Do not initialize write_fp.

2002-04-05  Kevin Buettner  <kevinb@redhat.com>

	* rs6000-tdep.c (skip_prologue): Eliminate unused/unreachable
	clause.

2002-03-29  Jim Blandy  <jimb@redhat.com>

	* stack.c (get_selected_block): Add new argument `addr_in_block',
	used to return the exact code address we used to select the block,
	not just the block.
	* blockframe.c (get_frame_block, get_current_block): Same.
	* frame.h (get_frame_block, get_current_block,
	get_selected_block): Update declarations.
	* linespec.c, stack.c, blockframe.c, breakpoint.c, findvar.c,
	linespec.c, varobj.c, printcmd.c, symtab.c: Callers changed.

2002-04-05  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (insert_breakpoints): Change 'hw' to 'hardware in
	warning message.

2002-04-05  J. Brobecker  <brobecker@gnat.com>

	* utils.c (xfullpath): New function.
	* defs.h (xfullpath): Add declaration.
	* source.c (openp): Use xfullpath in place of gdb_realpath to
	avoid resolving the basename part of filenames when the
	associated file is a symbolic link. This fixes a potential
	inconsistency between the filenames known to GDB and the
	filenames it prints in the annotations.
	* symtab.c (lookup_symtab): Use the new xfullpath function, in order
	to be able to match a filename with either the real filename, or
	the name of any symbolic link to this file.
	(lookup_partial_symtab): Ditto.

2002-04-04  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c: Add support for hardware breakpoints in overlays.
	(overlay_events_enabled): New state variable.
	(insert_breakpoints): Use overlay_events_enabled to decide
	whether to attempt to set a breakpoint at the overlay load addr.
	Handle bp_hardware_breakpoint as well as bp_breakpoint.
	(remove_breakpoint): Use overlay_events_enabled to decide
	whether breakpoints need to be removed from overlay load addr.
	Handle bp_hardware_breakpoint as well as bp_breakpoint.
	(bpstat_stop_status): Handle bp_hardware_breakpoint in overlays.
	(create_overlay_event_breakpoint, enable_overlay_breakpoints,
	disable_overlay_breakpoints): Update overlay_events_enabled.

2002-04-04  Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2read.c (struct function_range): New.
	(cu_first_fn, cu_last_fn, cu_cached_fn): New.
	(check_cu_functions): New.
	(read_file_scope): Initialize global function lists.
	Call dwarf_decode_line after processing children.
	(read_func_scope): Add to global function list.
	(dwarf_decode_lines): Call check_cu_functions everywhere
	record_line is called.  Call record_line with a linenumber
	of 0 to mark sequence ends.

2002-04-04  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-linux-nat.c (child_xfer_memory): x86-64 ptrace() ABI
	change sync with glibc.

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

	* configure.in: Call AC_C_INLINE.
	* configure: Regenerated.

2002-04-01  Daniel Jacobowitz  <drow@mvista.com>

	* rs6000-tdep.c: Change #include of "bfd/libcoff.h"
	and "bfd/libbfd.h" to "libcoff.h" and "libbfd.h".

2002-03-31  Mark Kettenis  <kettenis@gnu.org>

	* NEWS: Mention gcore support on FreeBSD/i386.

	* fbsd-proc.c: New file.
	* config/i386/nm-fbsd.h (CHILD_PID_TO_EXEC_FILE): Define.
	* config/i386/fbsd.mh (NATDEPFILES): Add gcore.o and fbsd-proc.o.

	* lin-lwp.c (child_wait): Check SAVE_ERRNO instead of ERRNO in
	while statement.

2002-03-29  Jim Blandy  <jimb@redhat.com>

	* cli/cli-dump.c (_initialize_cli_dump): Older GCC's tolerate
	unescaped newlines in string literals, but newer ones don't.  So
	escape them.

2002-03-26  Michael Snyder  <msnyder@redhat.com>
	    Andrew Cagney <cagney@redhat.com>

	* cli/cli-dump.c: New file.  Dump memory to file,
	restore file to memory.
	* cli/cli-dump.h: New file.
	* Makefile.in: Add rules, dependencies for cli-dump.o.
	* NEWS: Mention new commands.

2002-03-28  Michael Snyder  <msnyder@redhat.com>

	* symfile.c (symbol_file_add): Move test for null symbols to later.

2002-03-27  Andrew Cagney  <ac131313@redhat.com>

	From veksler at il.ibm.com:
	* utils.c (gdb_realpath): If canonicalize_file_name fails, return
	the xstrduped original path.
	Fix PR gdb/417.

2002-03-27  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (_initialize_breakpoint): Clean up help string.
	* infcmd.c (_initialize_infcmd): Ditto.
	* language.c (_initialize_language): Ditto.
	* symfile.c (_initialize_symfile): Ditto.
	* top.c (_init_main): Ditto.
	* cli/cli-cmds.c (init_cli_cmds): Ditto.

2002-03-27  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (struct rs6000_framedata): Add fields for AltiVec
	vector registers handling.
	(skip_prologue): Handle new AltiVec instructions.  Fill in new
	fields of frame data.
	(frame_get_saved_regs): Fill in information for AltiVec registers.

2002-03-27  Jim Blandy  <jimb@redhat.com>

	* symtab.h (SYMBOL_INIT_MANGLED_NAME): Turn this macro's body into
	a function; leave this macro here to invoke that function.
	(symbol_init_mangled_name): Declaration for that function.
	* symtab.c (symbol_init_mangled_name): New function.

2002-03-27  Andrew Cagney  <ac131313@redhat.com>

	* valarith.c: Replace strerror with safe_strerror.
	* tracepoint.c: Ditto.
	* lin-lwp.c: Ditto.
	* go32-nat.c: Ditto.
	* inflow.c: Ditto.
	* gnu-nat.c: Ditto.

2002-03-27  Andreas Schwab  <schwab@suse.de>

	* event-top.c (command_line_handler): Remove useless if.

2002-03-27  Andreas Jaeger  <aj@suse.de>

	* dwarf2cfi.c: Give credit to Daniel Berlin, reformat copyright
	comment.

2002-03-27  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.h (X86_64_NUM_REGS, X86_64_NUM_GREGS): Delete #defines.
	(x86_64_num_regs, x86_64_num_gregs): Added extern variables.
	* x86-64-linux-nat.c (x86_64_regmap): Swapped RBX <> RDX, added DS, ES, FS, GS.
	(x86_64_linux_dr_get_status, supply_gregset),
	(fill_gregset): Changed X86_64_NUM_GREGS to x86_64_num_gregs.
	* x86-64-tdep.c (x86_64_register_raw_size_table): Delete.
	(x86_64_register_info_table): Add.
	(X86_64_NUM_REGS, X86_64_NUM_GREGS): Add.
	(x86_64_register_raw_size, x86_64_register_virtual_type),
	(x86_64_register_name, _initialize_x86_64_tdep): Changed to reflect new
	general x86_64_register_info_table.
	(i386_gdbarch_init): gdbarch_register_bytes is now set
	dynamicaly during initialization.
	* regformats/reg-x86-64.dat: Synced with changes to registers above.
	* gdbserver/linux-x86-64-low.c: Ditto.

2002-03-27  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/server.c (main): Call target_signal_to_host_p
	and target_signal_to_host on signals received from the remote.
	* gdbserver/remote-utils.c (prepare_resume_reply): Call
	target_signal_from_host on signals sent to the remote.
	* gdbserver/server.h: Add prototypes.  Include "gdb/signals.h".
	* gdbserver/Makefile.in: Add signals.o.  Add -I${INCLUDE_DIR}.

2002-03-27  Daniel Jacobowitz  <drow@mvista.com>

	* signals/signals.c: Include "server.h" in gdbserver build.
	(target_signal_from_name): Don't use STREQ.
	(_initialize_signals): Likewise.  Don't include function in
	gdbserver build.

2002-03-27  Daniel Jacobowitz  <drow@mvista.com>

	* signals.c: Moved to...
	* signals/signals.c: Here.
	* Makefile (signals.o): Update.

2002-03-26  Jeff Law (law@redhat.com)

	* somread.c (som_symtab_read): Remove some commented out code and
	updated related comments.  Do not set the minimal symbol table to
	mst_solib_trampoline for ST_ENTRY symbols with SS_LOCAL scope
	in a dynamic executable.
	* hppa-tdep.c (find_proc_framesize): Sanely handle the case
	where we are unable to find the minimal symbol for the given
	PC value.

2002-03-25  Jeff Law (law@redhat.com)

	* linux-proc.c (read_mapping): Scan up to end of line for filename.

2002-03-25  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_skip_prologue): Rewritten from scratch.

2002-03-23  Andrew Cagney  <ac131313@redhat.com>

	* command.h: Update copyright.
	(struct cmd_list_element): Replace definition with opaque
	declaration.
	(enum cmd_types): Document that it will eventually be moved to
	cli/cli-decode.h
	(CMD_DEPRECATED, DEPRECATED_WARN_USER): Delete macros.
	(MALLOCED_REPLACEMENT): Delete macro.
	* Makefile.in (cli_decode_h): Add $(command_h).
	(top.o, completer.o, maint.o): Add dependency on $(cli_decode_h).
	* top.c: Include "cli/cli-decode.h".
	* completer.c: Include "cli/cli-decode.h".
	* maint.c: Include "cli/cli-decode.h".
	* cli/cli-decode.h: Include "command.h".
	(enum command_class): Delete.
	(enum cmd_types): Comment out.
	(enum cmd_auto_boolean): Delete.
	(enum var_types): Delete.

2002-03-23  Andrew Cagney  <ac131313@redhat.com>

	* cli/cli-decode.c: Include "gdb_assert.h".
	(add_set_or_show_cmd): New static function.
	(add_set_cmd): Rewrite.  Use add_set_or_show_cmd.
	(add_show_from_set): Rewrite. Use add_set_or_show_cmd.  Don't copy
	all fields, such as func, from the set command.

2002-03-23  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (sh-elf): Change warning flag to -w.

2002-03-23  Andrew Cagney  <cagney@redhat.com>

	* defs.h (error): Add printf format attribute.
	* thread-db.c (thread_from_lwp): Fix error format string.
	* stack.c (parse_frame_specification): Ditto.
	* cli/cli-decode.c (undef_cmd_error): Ditto.
	* scm-lang.c (scm_lookup_name): Ditto.
	* tracepoint.c (trace_error): Ditto.
	* remote-utils.c (usage): Ditto.
	* remote.c (compare_sections_command): Ditto.
	Fix PR gdb/328.

2002-03-22  Andrew Cagney  <ac131313@redhat.com>

	* gdbtypes.c (append_composite_type_field): New function.
	(init_composite_type): New function.
	* gdbtypes.h (append_composite_type_field): Declare.
	(init_composite_type): Ditto.

2002-03-22  Elena Zannoni  <ezannoni@redhat.com>

        * ppc-linux-tdep.c (ppc_sysv_abi_use_struct_convention): New
        function.
	* ppc-tdep.h (ppc_sysv_abi_use_struct_convention): Export.
        * rs6000-tdep.c (rs6000_gdbarch_init): Use different
        structure returning convention for SYSV ABI case, but not
        for GNU/Linux, FreeBSD, or NetBSD.

2002-03-22  Daniel Jacobowitz  <drow@mvista.com>

	* symtab.h (lookup_block_symbol): Add mangled_name argument
	to prototype.

	* symmisc.c (maintenance_check_symtabs): Call lookup_block_symbol
	with new mangled_name argument.
	* linespec.c (decode_line_1): Likewise.
	* valops (value_of_this): Likewise.
	* symtab.c (lookup_transparent_type): Likewise.
	(lookup_symbol_aux): Likewise.  Accept new mangled_name argument.
	(lookup_symbol): If we are given a mangled name, pass it down
	to lookup_symbol_aux.
	(lookup_block_symbol): If we are given a mangled name to check
	against, only return symbols which match it.

2002-03-22  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (child_create_inferior): Check for proper shell to use
	here, in case the user changes it on the fly.
	(_initialize_inftarg): Remove shell path considerations.

2002-03-21  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (rs6000_gdbarch_init): Use correct max size value
	for gdbarch_max_register_raw_size and max_register_virtual_size.
	Adjust copyright year.

2002-03-21  Daniel Jacobowitz  <drow@mvista.com>

	 * dbxread.c (process_one_symbol): Extend the first N_SLINE
	 in a function to cover the entire beginning of the function
	 as well if it does not already.

2002-03-21  Tom Rix  <trix@redhat.com>

	* rs6000-nat.c (rs6000_ptrace32): Renamed from ptrace32.
	(rs6000_ptrace64): Renamed from ptrace64.

2002-03-20  Martin M. Hunt  <hunt@redhat.com>

	* gdbserver/remote-utils.c (remote_open): Don't call
	getprotobyname, we're all using TCP here so just use
	IPPROTO_TCP.
	* gdbserver/gdbreplay.c (remote_open): Ditto.

2002-03-20  Martin M. Hunt  <hunt@redhat.com>

	* regcache.c (_initialize_regcache): No need to call
	build_regcache() at this time; it gets called whenever
	the gdbarch changes.

2002-03-20  David O'Brien  <obrien@FreeBSD.org>

	* sparc-nat.c:  Include sys/param.h where possible.

2002-03-20  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR gdb/422.
	* c-lang.c (c_create_fundamental_type): Handle FT_COMPLEX,
	FT_DBL_PREC_COMPLEX, and FT_EXT_PREC_COMPLEX.
	* dwarf2read.c (read_base_type): Set TYPE_TARGET_TYPE for
	complex types.
	* stabsread.c (rs6000_builtin_type): Likewise.
	(read_sun_floating_type): Likewise.

2002-03-19  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* stabsread.c (read_member_functions): Remove skip code for duplicate
	constructor/destructor methods.  Use standard parsing for these
	methods and just do not chain them to the list of methods after
	parsing.

2002-03-19  Alexandre Oliva  <aoliva@redhat.com>

	* coffread.c: Remove redundant static declarations.  Replace
	occurrences of `PTR' with `void *'.
	* elfread.c, mdebugread.c, minsyms.c, mipsread.c: Likewise.
	* top.h (quit_cover): Likewise.
	* defs.h (catch_errors): Likewise.

2002-03-18  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (XMALLOC): Define.
	* gdb-events.sh (XMALLOC): Delete macro.
	* gdb-events.c, gdb-events.h: Regenerate.
	* gdbarch.sh (XMALLOC): Delete macro.
	* gdbarch.c: Regenerate.
	* serial.c (XMALLOC): Delete macro.
	* ui-file.c (XMALLOC): Ditto.
	* ser-unix.h (XMALLOC): Ditto.
	* sh-tdep.c (XMALLOC): Ditto.
	* ui-out.c (XMALLOC): Ditto.
	* utils.c (XMALLOC): Ditto.
	* i386-tdep.c (XMALLOC): Ditto.
	* gdb-events.c (XMALLOC): Ditto.
	* d10v-tdep.c (XMALLOC): Ditto.
	* cli-out.c (XMALLOC): Ditto.

	* cli-out.c, d10v-tdep.c, gdb-events.c: Update copyright.
	* gdb-events.sh, i386-tdep.c, ser-unix.h, serial.c: Ditto.
	* ui-file.c, ui-out.c: Ditto.

2002-03-18  Andrew Cagney  <ac131313@redhat.com>

	* command.h (struct cmd_list_element): Add field context.
	(set_cmd_context, get_cmd_context): Declare.
	* cli/cli-decode.h: Ditto.
	* cli/cli-decode.c (get_cmd_context): New function.
	(set_cmd_context): New function.
	(add_cmd): Initialize context.
	Part of fixing PR gdb/145 and PR gdb/146.

2002-03-17  Andrew Cagney  <ac131313@redhat.com>

	* cli/cli-decode.c (cmd_type): New function.
	* command.h (cmd_type): Declare.
	* infrun.c (set_schedlock_func): Call function cmd_type.
	* kod.c (kod_set_os): Call cmd_type.
	* cris-tdep.c (cris_version_update): Use function cmd_type.
	(cris_mode_update, cris_abi_update): Ditto.

	* command.h: (execute_cmd_post_hook): Declare.
	(execute_cmd_pre_hook): Declare.
	* cli/cli-script.c (clear_hook_in_cleanup): New function.
	(execute_cmd_post_hook, execute_cmd_pre_hook): New
	functions. Execute pre/post hook while ensuring that afterwords
	hook_in is cleared.
	* top.c (execute_command): Use execute_cmd_post_hook, and
	execute_cmd_pre_hook to execute pre/post commands.
	* infrun.c (normal_stop): Pass stop_command and not pre_hook to
	hook_stop_stub.
	(hook_stop_stub): Call execute_cmd_pre_hook.

2002-03-17  Andrew Cagney  <ac131313@redhat.com>

	* kod.c (kod_set_os): Revert previous change.  Is called by ``info
	set'' and this leads to a core dump.  Move xstrdup of
	operating_system to after check that it is not NULL.

2002-03-17  Andrew Cagney  <ac131313@redhat.com>

	* kod.c (kod_set_os): Remove unnecessary check that
	``command->type'' is set_cmd.

	* valprint.c (set_input_radix): Use input_radix.
	(set_output_radix): Use output_radix.
	(set_input_radix_1, set_output_radix_1): Add FIXME - bad radix
	isn't reverted.

2002-03-16  Andrew Cagney  <ac131313@redhat.com>

	* value.h (struct value): Delete field ``substring_addr''.  Change
	aligner fields to force_doublest_align, force_longest_align,
	force_core_addr_align and force_pointer_aligh.

	* value.h (struct value): Fix typo in above change.

2002-03-16  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* ia64-tdep.c (ia64_gdbarch_init): Call set_gdbarch_frame_args_skip,
	to fix internal_error from ``maintenance print architecture''.

2002-03-16  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* cp-valprint.c (cp_is_vtbl_ptr_type): Handle vtbl field type
	for gcc versions after gcc-2.8.1.

2002-03-16  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* eval.c (evaluate_subexp_standard): Fix setup of ``this'' pointer
	for method resolution.  Restore adjustment of ``this'' pointer after
	calling value_struct_elt, which was accidentally removed during the
	HP merge.

2002-03-15  Andrew Cagney  <ac131313@redhat.com>

	* eval.c (evaluate_subexp_standard): Pass ``selected_frame'' to
	value_of_register.
	* findvar.c (value_of_register): Add ``frame'' parameter.  Pass to
	get_saved_register.
	* value.h (value_of_register): Update.

2002-03-14  Richard Henderson  <rth@redhat.com>

	* configure.in: Detect declaration for canonicalize_file_name.
	* utils.c (canonicalize_file_name): Declare, if needed.
	(gdb_realpath): Prefer realpath if available and usable.
	* config.in, configure: Rebuild.

2002-03-14  Richard Henderson  <rth@redhat.com>

	* dwarf2read.c (read_array_type): Accept DW_FORM_data8 as
	a constant array bound.

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

2002-03-14  Michael Snyder  <msnyder@redhat.com>

	* symfile.c (syms_from_objfile): Return immediately if no syms.
	(symbol_file_add): Return immediately if no syms.
	(find_sym_fns): Return immediately if no syms.

2002-03-13  Michal Ludvig  <mludvig@suse.cz>

	* gdbserver/remote-util.c (remote_open): Print remote-side's
	IP address when remote debugging over the network.

2002-03-12  David O'Brien  <obrien@FreeBSD.org>

	* config/sparc/fbsd.mh: Fix copyright.
	* config/sparc/fbsd.mt: Likewise.

2002-03-11  Richard Earnshaw  <rearnsha@arm.com>

	* MAINTAINERS: Fix typo in name of gdb warnings option.
	(x86-64): Fix formating so that this can be parsed by awk.

2002-03-10  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (defs_h): Add $(INCLUDE_DIR)/gdb/signals.h.
	* defs.h: Include "gdb/signals.h".
	(enum target_signal): Move to $(INCLUDE_DIR)/gdb/signals.h.

2002-03-10  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.h (sys/reg.h, x86_64_regmap): Moved to x86-64-linux-nat.c
	* x86-64-linux-nat.c (sys/reg.h, x86_64_regmap): Moved here
	from x86-64-tdep.h

2002-03-10  Daniel Jacobowitz  <drow@mvista.com>
	    Don Howard <dhoward@redhat.com>

	* mips-tdep.c (ST0_FR): Define.
	(mips2_fp_compat): New function, temporarily disabled.
	(mips_read_fp_register_single): New function.
	(mips_read_fp_register_double): New function.
	(mips_print_register): Use them.
	(do_fp_register_row): Likewise.

2002-03-09  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add Jim Ingham and Klee Dienes to ``write after
	approval''.

2002-03-08  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* stabsread.c (read_member_functions): Fix is_stub test for
	static member functions, improve comment.

2002-03-07  Richard Earnshaw  <rearnsha@arm.com>

	* remote-rdi.c (myprint): Replace 'PTR' with 'void *'.
	(mywrite, mywritec, mypause, myreadc, mygets): Likewise.
	(_initialize_remote_rdi): Use add_set_boolean_cmd to register
	commands that set boolean values.
	(arm_rdi_remove_breakpoint): Rewrite to avoid uninitialized warning.
	(arm_rdi_resume): Always initialize PC.
	(arm_rdi_open): Don't use rslt as a boolean.
	(arm_rdi_create_inferior, arm_rdi_close, arm_rdi_resume)
	(arm_rdi_fetch_registers, arm_rdi_store_registers)
	(arm_rdi_xfer_memory, arm_rdi_files_info, arm_rdi_kill)
	(arm_rdi_insert_breakpoint, arm_rdi_remove_breakpoint): Likewise.

2002-03-06  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (gdb_cv_bigtoc): Check for -bbigtoc on AIX.
	* configure: Rebuilt.

2002-03-06  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (_initialize_m68hc11_tdep): Don't set tm_print_insn.
	(m68hc11_gdbarch_init): But use set_gdbarch_print_insn instead.

2002-03-06  Andrew Cagney  <ac131313@redhat.com>

	* cli/cli-decode.c (set_cmd_completer): New function.
	* command.h (set_cmd_completer): Declare.
	* cli/cli-decode.h (set_cmd_completer): Ditto.

	* breakpoint.c (_initialize_breakpoint): Use set_cmd_completer.
	* cli/cli-cmds.c (init_cli_cmds): Ditto.
	* win32-nat.c (_initialize_inftarg): Ditto.
	* remote-rdi.c (_initialize_remote_rdi): Ditto.
	* proc-api.c (_initialize_proc_api): Ditto.
	* hppa-tdep.c (_initialize_hppa_tdep): Ditto.
	* source.c (_initialize_source): Ditto.
	* exec.c (_initialize_exec): Ditto.
	* solib.c (_initialize_solib): Ditto.
	* top.c (init_main): Ditto.
	* tracepoint.c (_initialize_tracepoint): Ditto.
	* symfile.c (_initialize_symfile): Ditto.
	* printcmd.c (_initialize_printcmd): Ditto.
	* infcmd.c (_initialize_infcmd): Ditto.
	* corefile.c (_initialize_core): Ditto.

2002-03-05  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (Past Maintainers): Add Frank Ch. Eigler.

2002-03-05  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Fix Mac OS X and Objective-C/C++.

2002-03-05  Andrew Cagney  <ac131313@redhat.com>

	* NEWS: Update headings, 5.2 has branched.

2002-03-04  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (PTRACE_XFER_TYPE): Change to long.
	(num_regs, regmap): Move inside HAVE_LINUX_USRREGS.
	(register_addr, REGISTER_RAW_SIZE): Likewise.
	(usr_store_inferior_registers): Use PTRACE_XFER_TYPE.
	* gdbserver/linux-x86-64-low.c: Remove extra #endif.

2002-03-03  Michal Ludvig <mludvig@suse.cz>

	* MAINTAINERS (x86-64): Add myself.
	* x86-64-tdep.c (x86_64_push_arguments): Fixed typo naregs->nregs,
	changed value_ptr -> struct value *

2002-03-01  David O'Brien  <obrien@FreeBSD.org>

	* configure.host (sparc64-*-freebsd): Add.
	* configure.tgt: Likewise.
	* config/sparc/fbsd.mh: New file.
	* config/sparc/fbsd.mt: Likewise.
	* config/sparc/nm-fbsd.h: Likewise.
	* config/sparc/tm-fbsd.h: Likewise.

2002-03-01  Daniel Jacobowitz  <drow@mvista.com>

	* config/djgpp/fnchange.lst: Add regformats/reg-i386-linux.dat and
	regformats/reg-s390x.dat.

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

	* utils.c: Add FIXME explaining true/false problem.

2002-02-28  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (Past Maintainers): Add J.T. Conklin.

2002-02-28  Michael Chastain  <mec@shout.net>

	* MAINTAINERS: Fix typo: gdb.satbs -> gdb.stabs .

2002-02-28  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-s390-low.c: New file.
	* regformats/reg-s390.dat: New file.
	* regformats/reg-s390x.dat: New file.
	* gdbserver/configure.srv: Add S/390.
	* gdbserver/Makefile.in: Add S/390.
	* configure.tgt: Enable gdbserver for S/390.

2002-02-28  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (_initialize_go32_nat): Don't use periods in the
	first line of the doc string for "info dos", except at the end of
	the sentence, since the short help stops at the first period.

2002-02-28  Jason Merrill  <jason@redhat.com>

	* dwarf2read.c (dwarf_cfi_name): Add new codes.

2002-02-27  Fred Fish  <fnf@redhat.com>

	* blockframe.c (generic_fix_call_dummy): Fix obvious typo in
	comment (dumy -> dummy).

2002-02-27  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* symtab.c (gdb_mangle_name): Handle fully mangled v3 abi physnames.

2002-02-27  Rodney Brown  <rbrown64@csc.com.au>

      * utils.c (gdb_realpath): Add pathconf fallback for sco3.2v5.

2002-02-27  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/acconfig.h: New file.
	* gdbserver/i387-fp.c: New file.
	* gdbserver/i387-fp.h: New file.
	* gdbserver/linux-x86-64.c: New file.
	* regformats/reg-x86-64.dat: New file.
	* configure.tgt: Add x86_64-*-linux* gdbserver support.
	* gdbserver/configure.srv: Add x86_64-*-linux* and regset support.
	* gdbserver/configure.in: Add support for regsets.
	* gdbserver/config.in: Regenerate.
	* gdbserver/configure: Regenerate.
	* gdbserver/Makefile.in: Likewise.  Add $(linux_low_h).
	* gdbserver/linux-low.h: New file.
	* gdbserver/linux-low.c: Include "linux-low.h".  Add support
	for regsets.
	* gdbserver/linux-arm-low.c: Include "linux-low.h".
	* gdbserver/linux-ia64-low.c: Include "linux-low.h".
	* gdbserver/linux-m68k-low.c: Include "linux-low.h".
	* gdbserver/linux-mips-low.c: Include "linux-low.h".
	* gdbserver/linux-ppc-low.c: Include "linux-low.h".
	* gdbserver/linux-sh-low.c: Include "linux-low.h".
	* gdbserver/linux-i386-low.c: Include "linux-low.h".  Include
	"i387-fp.h".  Add PTRACE_GETREGS and friends.
	* gdbserver/regcache.c (supply_register): New function.
	(supply_register_by_name): New function.
	(collect_register): New function.
	(collect_register_by_name): New function.

2002-02-27  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in (INTERNAL_CFLAGS): Remove -DGDBSERVER.
	(config.status): Add configure.srv dependency.
	(server_h): Add config.h dependency.

2002-02-27  Daniel Jacobowitz  <drow@mvista.com>

	* regformats/reg-i386-linux.dat: New file, with $orig_eax.
	* gdbserver/Makefile.in: Add rules for reg-i386-linux.o.
	* gdbserver/configure.srv: Change i386-*-linux* to use
	reg-i386-linux.o.

2002-02-26  Andrew Cagney  <ac131313@redhat.com>

	* x86-64-tdep.c: Re-indent.  Update copyright date.

2002-02-26  Andrew Cagney  <ac131313@redhat.com>

	From Michal Ludvig <mludvig@suse.cz>:
	* x86-64-tdep.c (value.h): Delete.
	(gdb_assert.h): Include.
	(x86_64_register_convert_to_virtual,
	x86_64_register_convert_to_raw ): Add check which lets only
	floating-point values to be converted.
	(value_push): Delete.
	(x86_64_push_arguments): Order of arguments pushed on stack fixed.
	(i386_gdbarch_init): Number of register_bytes fixed.

2002-02-26  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add x86-64 target.

2002-02-26  Andrew Cagney  <ac131313@redhat.com>

	* memattr.c (mem_command): Eliminate ``true'' and ``false''.
	* osfsolib.c (solib_map_sections): Ditto.
	* irix5-nat.c (solib_map_sections): Ditto.
	* corelow.c (gdb_check_format): Ditto.
	* symfile.c (symfile_bfd_open): Ditto.
	* solib.c (solib_map_sections): Ditto.
	Fix PR gdb/354.

2002-02-26  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (_initialize_remote): By default, disable ``e'' and
	``E'' step out-of-range packets.

2002-02-26  Andreas Schwab  <schwab@suse.de>

	* config/m68k/tm-linux.h (FRAME_SAVED_PC): Define as
	m68k_linux_frame_saved_pc.
	(IN_SIGTRAMP): Define as m68k_linux_in_sigtramp instead of
	in_sigtramp.
	(SIGCONTEXT_PC_OFFSET): Remove.
	* m68klinux-nat.c (m68k_linux_frame_saved_pc,
	m68k_linux_sigtramp_saved_pc): New functions.
	(IS_SIGTRAMP, IS_RT_SIGTRAMP): Define.
	(SIGCONTEXT_PC_OFFSET): Moved here from config/m68k/tm-linux.h.
	(UCONTEXT_PC_OFFSET): Define.
	(m68k_linux_in_sigtramp): Renamed from in_sigtramp, handle both
	non-RT and RT signal trampolines.

2002-02-26  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/tm-embed.h (TARGET_UPAGES): Delete.
	(TARGET_NBPG, STACK_END_ADDR): Delete
	(VARIABLES_INSIDE_BLOCK): Delete.

2002-02-25  Andrew Cagney  <ac131313@redhat.com>

	* utils.c (perror_with_name): Make string parameter constant.
	(print_sys_errmsg): Ditto.
	(query): Ditto.
	* defs.h (perror_with_name): Update.
	(print_sys_errmsg): Update.
	(query): Update.

2002-02-25  Daniel Jacobowitz  <drow@mvista.com>

	From Eliot Dresselhaus <eliot@ayrnetworks.com>:
	* gdbserver/linux-mips-low.c (cannot_fetch_register): Fix typo.

2002-02-25  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* rs6000-nat.c (set_host_arch): Do not switch to a new architecture
	if it already matches the current architecture from the exec file.
	Include arch-utils.h for gdbarch_info_init prototype.
	* Makefile.in (rs6000-nat.o): Update dependencies.

2002-02-25  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/djconfig.sh: Set NM=nm and CFLAGS="-g -O2" in the
	 list of exported variables.

2002-02-24  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/configure.srv: New file.
	* gdbserver/configure.in: Use configure.srv instead
	of the host/target makefile fragments.  Set GDBSERVER_DEPFILES
	from it.
	* gdbserver/configure: Regenerated.
	* gdbserver/terminal.h: New file.
	* gdbserver/Makefile.in: Update for configure changes.  Remove
	more unneeded include paths.

2002-02-24  Andrew Cagney  <ac131313@redhat.com>

	From wiz at danbala:
	* config/sparc/tm-sp64.h: Fix grammar and typos.
	Fix PR gdb/287.

2002-02-24  Andrew Cagney  <ac131313@redhat.com>

	* lin-lwp.c, thread-db.c, defs.h, cris-tdep.c: Replace ``Linux''
	with either ``GNU/Linux'' or ``Linux kernel''.  Update copyright.
	* m68klinux-nat.c, sparc-linux-nat.c, x86-64-linux-nat.c: Ditto.
	* x86-64-linux-tdep.c, gregset.h, gdb_wait.h: Ditto.
	* ia64-linux-nat.c, infrun.c, linux-proc.c: Ditto.
	* proc-service.c, i386-linux-tdep.c, ppc-linux-tdep.c: Ditto.
	* s390-tdep.c: Ditto.
	* config/nm-linux.h, config/alpha/nm-linux.h: Ditto.
	* config/alpha/tm-alpha.h, config/alpha/tm-alphalinux.h:
	* config/alpha/xm-alphalinux.h, config/i386/nm-linux.h: Ditto.
	* config/i386/nm-x86-64.h, config/i386/tm-linux.h: Ditto.
	* config/m68k/tm-linux.h, config/mips/nm-linux.h: Ditto.
	* config/mips/tm-linux.h, config/mips/xm-linux.h: Ditto.
	* config/powerpc/tm-linux.h, config/s390/nm-linux.h: Ditto.
	* config/s390/tm-linux.h, config/sh/tm-linux.h: Ditto.
	* config/sparc/nm-linux.h, config/sparc/tm-linux.h: Ditto.
	* config/sparc/tm-sp64linux.h, config/sparc/xm-linux.h: Ditto.
	Fix PR gdb/378.

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	* lin-thread.c: Delete file.
	* configure.in (gdb_cv_struct_reg_r_gs): Update comment to refer
	to gdb_proc_service.h.
	* configure: Re-generate.

	* ocd.c (ocd_open): Do not try to open the "ocd" device.
	* serial.c (serial_open): Delete check for "ocd".
	Fix PR gdb/349.

	* Makefile.in (linux-thread.o): Delete target.
	* linux-thread.c: Delete file.

	* config/djgpp/fnchange.lst: Rename bfd/elf32-sh64.c.  Tweak other
	renamed SH files to be consistent.

	* symtab.c (sort_search_symbols): Use xfree.

2002-02-23  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-tdep.c (arm_linux_init_abi): Register
	IN_SOLIB_CALL_TRAMPOLINE and SKIP_TRAMPOLINE_CODE
	* config/arm/tm-linux.h (IN_SOLIB_CALL_TRAMPOLINE): Replace old
	definition with undef, since we don't want the sysvr4 definition.
	(SKIP_TRAMPOLINE_CODE): Likewise.

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	From 2002-02-22 Alfred M. Szmidt <ams@kemisten.nu>:

	* configure.in: (AC_CHECK_FUNCS) Added test for
	canonicalize_file_name Regenerated.
        * config.in, configure: Regenerated.
        * utils.c: (gdb_realpath) If HAVE_CANONICALIZE_FILE_NAME is
	defined use canonicalize_file_name.

2002-02-23  Michael Chastain  <mec@shout.net>

	* MAINTAINERS: Remove Michael Chastain from "paper trail" list.

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	* README: Remove references to cygnus.com.
	* MAINTAINERS: Change Past Maintainer addresses to ``foo at bar
	dot com'' form.  Remove references to cygnus.com and sourceware.

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	From 2002-02-19 Paul Eggert <eggert@twinsun.com>:
	* Makefile.in (VER): Change "head -1" to "sed q", since POSIX
	1003.1-2001 no longer allows "head -1".
	* gdb/Makefile.in (version.c): Likewise.
	* gdb/doc/Makefile.in (GDBvn.texi): Likewise.
	* gdb/CONTRIBUTE: Change "diff -c3" to "diff -c", which is
	equivalent.  POSIX 1003.1-2001 no longer allows "diff -c3".

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	* cli/cli-decode.c (cmd_cfunc_eq): New function.
	* command.h (cmd_cfunc_eq): Declare.
	* cli/cli-decode.h (cmd_cfunc_eq): Ditto.

	* cli/cli-cmds.h (is_complete_command): Change parameter to a
	``struct cmd_list_element *''.
	* cli/cli-cmds.c (is_complete_command): Update.  Use
	cmd_cfunc_eq.
	* top.c (execute_command): Pass the command to
	is_complete_command.
	* tracepoint.c: Replace function.cfunc with cmd_cfunc_eq.

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	From 2002-02-20 Martin Schwidefsky <schwidefsky@de.ibm.com>:
	* config/s390/tm-s390.h (GDB_TARGET_IS_ESAME): Use renamed
	architecture defines.
	* s390-tdep.c (s390_gdbarch_init): Likewise.

2002-02-23  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-tdep.c (arm_linux_extract_return_value): Make static.
	(arm_linux_push_arguments): Likewise.
	(arm_linux_init_abi): Register them.  Also register linux-specific
	call_dummy_words.
	(find_minsym_and_objfile): Use strcmp, not STREQ.
	* config/arm/tm-linux.h (CALL_DUMMY_WORDS): Delete.
	(arm_linux_call_dummy_words): Delete declaration.
	(EXTRACT_RETURN_VALUE, PUSH_ARGUMENTS): Delete.
	(arm_linux_extract_return_value, arm_linux_push_arguments): Delete
	declarations.
	(LOWEST_PC): Delete.

2002-02-23  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* maint.c (print_section_info): Do not prepend `0x' to filepos
	output, it will be handled by local_hex_string_custom.

2002-02-23  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-nat.c (store_newfpe_single): Use regcache_collect.
	(store_newfpe_double, store_newfpe_extended, store_fpregister)
	(store_register, store_regs, fill_gregset, fill_fpregset): Likewise.

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

	Indicate that the bcache functions don't change the strings
	they're passed.
	* bcache.h (bcache, hash): Add `const' keywords to declarations.
	* bcache.c (bcache, hash): Add `const' keywords to definitions.

2002-02-22  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (child_create_inferior): Fix create flags setting bug.

2002-02-21  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (register_loaded_dll): Just use raw name when we can't
	find the complete path to a loaded DLL.

2002-02-21  Fred Fish  <fnf@redhat.com>

	* dbxread.c (process_one_symbol): When finding an N_FUN symbol
	that marks the end of the range of a function, enter a line number
	entry that has a line number of zero and a PC offset that matches
	the end of the function.  This starts a range of PC's for which no
	line number information is known.
	* symtab.c (find_pc_sect_line): If our best fit is in a range of
	PC's for which no line number info is found (line number is zero)
	then we didn't find any valid line information.
	* symtab.h: Document use of zero line number entry.

2002-02-21  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-linux-nat.c (PTRACE_GETVRREGS, PTRACE_SETVRREGS): Define.
	(have_ptrace_getvrregs): Define for run time checks.
	(gdb_vrregset_t): New type for Altivec register handling.
	(fetch_register, store_register): Fetch/store altivec register
	when needed.
	(fetch_altivec_register, store_altivec_register): New functions.
	(supply_vrregset, fill_vrregset): New functions.
	(fetch_altivec_registers, store_altivec_registers): New functions.
	(fetch_ppc_registers, store_ppc_registers): Fetch/store altivec
	registers as well.

2002-02-21  Jiri Smid  <smid@suse.cz>

	* config/i386/x86-64linux.mh (NATDEPFILES): Remove x86-64-nat.o.

2002-02-21  Richard Earnshaw  <rearnsha@arm.com>

	* Makefile.in (armnbsd-nat.o): Update dependencies.
	* armnbsd-nat.c (supply_gregset): New function.  Common code to
	supply the integer register set.
	(supply_fparegset): New function.  Similar for FPA registers.
	(fetch_regs, fetch_fp_regs): Use them.
	(fetch_core_registers): Likewise.
	(fetch_elfcore_registers): New function.
	(arm_netbsd_elfcore_fns): New core-file type specification.
	(_initialize_arm_netbsd_nat): Register it.

2002-02-21  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-nat.c: Include gdbcore.h.
	(FETCH_INFERIOR_REGISTERS): Just error if this isn't defined.
	(fetch_regs, fetch_fp_regs, store_regs, store_fp_regs): Add explicit
	'void' to declaration, to shut up ARI.
	(fetch_core_registers): Make static.  Rewrite using supply_register.
	(arm_netbsd_core_fns): New core-file type specification.
	(_initialize_arm_netbsd_nat): New function.

2002-02-21  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (register_loaded_dll): Correctly check for invalid handle
	value.

2002-02-20  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (register_loaded_dll): Handle case where FindFirstFile
	fails.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* jv-exp.y (parse_number): Change type of implicit longs
	to builtin_type_uint64.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (mywait): Change argument to waitpid
	to be an integer instead of a `union wait'.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* mips-linux-nat.c: Call the operating system GNU/Linux.
	* mips-linux-tdep.c: Likewise.
	* mips-tdep.c: Likewise.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR gdb/265.
	* jv-exp.y (parse_number): Handle 64-bit integers.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/configure.in: Remove AM_PROC_CC_STDC.  Change
	AC_STDC_HEADERS to AC_HEADER_STDC.
	* gdbserver/configure: Regenerated.

2002-02-20  Richard Earnshaw  <rearnsha@arm.com>

	* arc-tdep.c (get_longjmp_target): Only compile this function if JB_PC
	is defined.
	* sparc-tdep.c (get_longjmp_target): Likewise.

2002-02-20  Richard Earnshaw  <rearnsha@arm.com>

	* News: Add news about ARM and Multi-arch.  Mention the new target
	arm*-*-netbsd*.

2002-02-19  Jim Blandy  <jimb@redhat.com>

	* stabsread.c (error_type_complaint): Improve error message.

2002-02-19  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/README: Update documentation.
	* gdbserver/configure.in: Update configury to match documentation.
	* gdbserver/Makefile.in: Likewise.
	* gdbserver/configure: Regenerated.
	* gdbserver/aclocal.m4: New file, generated by aclocal.
	* gdbserver/config.in: New file, generated by autoheader.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* config/djgpp/fnchange.lst: Add change rules for armnbsd-tdep.c and
	armnbsd-nat.c.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.h (enum arm_float_model): New enum.
	(struct gdbarch_tdep): Add fp_model.
	* arm-tdep.c (arm_gdbarch_init): Set fp_model in tdep.  Defer setting
	up floating-point conversions until we know the floating-point model
	in use by the inferior.  Don't complain about being unable to
	determine the ABI of the inferior when we don't have one.
	(arm_extract_return_value): Support different floating-point models.
	(arm_store_return_value): Likewise.
	* armnbsd-tdep.c (arm_netbsd_aout_init_abi): Set fp_model in tdep to
	ARM_FLOAT_SOFT.
	(arm_netbsd_elf_init_abi): Set fp_model to ARM_FLOAT_SOFT_VFP.

2002-02-19  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* i386-tdep.c (i386_gdbarch_init): Eliminate incorrect use
        of ``current_gdbarch''.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-nat.c : ANSIfy all function declarations.
	(fetch_register, fetch_regs, fetch_fp_register, fetch_fp_regs): New.
	(fetch_inferior_registers): Re-implement in terms of above.
	(store_register, store_regs, store_fp_register, store_fp_regs): New.
	(store_inferior_registers): Re-implement in terms of above.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-nat.c: Linux -> GNU/Linux when not talking about the
	kernel.
	* arm-linux-tdep.c: Likewise.
	* config/arm/tm-linux.h: Likewise.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* configure.tgt (arm*-*-netbsd*): This variant is now fully multi-arch.
	* config/arm/nbsd.mt (TM_FILE): Delete.
	* config/arm/tm-nbsd.h: Delete.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_gdbarch_init): Initialize TARGET_CHAR_SIGNED.
	Initialize CALL_DUMMY_LENGTH.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-tdep.c (arm_netbsd_aout_in_solib_call_trampoline): New
	function.
	(arm_netbsd_aout_init_abi): Initialize IN_SOLIB_CALL_TRAMPOLINE.
	* config/arm/tm-nbsd.h: Don't include config/tm-nbsd.h, it only
	defines one thing and that is incorrect for this port.
	(IN_SOLIB_CALL_TRAMPOLINE): Delete.

2002-02-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* go32-nat.c: add i386-tdep.h include to import FP_REGNUM_P macro.

2002-02-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (display_selector): New function. Displays information
	about the information returned by GetThreadSelectorEntry API function.
	(display_selectors): New function. Displays the infomation of
	the selector given as argument, or of CS, DS ans FS selectors
	if no argument is given.
	( _initialize_inftarg): Add "w32" as info prefix command.
	Add "info w32 selector" as command calling display_selectors.

2002-02-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* i386-tdep.c (get_longjmp_target): Fix compilation failure
	by setting dummy values to JB_PC and JB_ELEMENT_SIZE
	if not defined.

2002-02-18  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/nbsd.mt (TDEPFILES): Add solib-sunos.o.

2002-02-18  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_set_call_dummy_breakpoint_offset): New function.
	(arm_fix_call_dummy): Call it.
	(arm_call_dummy_breakpoint_offset): Delete.
	(arm_gdbarch_init): Initialize call_dummy_breakpoint_offset.
	* config/arm/tm-arm.h (CALL_DUMMY_BREAKPOINT_OFFSET): Delete.

2002-02-18  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (FRAME_CHAIN_VALID): Only require at level 2.
	Default to func_frame_chain_valid.
	* gdbarch.h, gdbarch.c: Re-generate.
	* frame.h (FRAME_CHAIN_VALID): Delete definition.

2002-02-18  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-linux-nat.c: Update copyright.
	(fetch_register, store_register): Add tid parameter, don't compute
	tid here.
	(fetch_ppc_registers, store_ppc_registers): Add tid
	parameter. Pass it along to callees.
	(fetch_inferior_registers, store_inferior_registers): Compute tid
	here, and pass it to calleed functions.
	(fill_gregset, supply_fpregset): Clean up formatting.

2002-02-18  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_gdbarch_init): Initialize coerce_float_to_double.
	* config/arm/tm-arm.h (COERCE_FLOAT_TO_DOUBLE): Delete.

2002-02-18  Richard Earnshaw  <rearnsha@arm.com>

	* gdbarch.sh (GET_LONGJMP_TARGET): Add rule.
	* gdbarch.c gdbarch.h: Regenerate.
	* breakpoint.c (create_longjmp_breakpoint): Always compile this
	function.
	(breakpoint_reset): Test GET_LONGJMP_TARGET_P().
	* infrun.c (GET_LONGJMP_TARGET): Delete default definition.
	(handle_inferior_event): Test GET_LONGJMP_TARGET_P().

	* arm-tdep.h (struct gdbarch_tdep): Add jb_pc and jb_elt_size fields.
	* arm-tdep.c (arm_get_longjmp_target): New function.
	(arm_gdbarch_init): Initialize jb_pc to -1.  If ABI handler changes
	this to a positive value register arm_get_longjmp_target as the
	longjmp handler.
	* arm-linux-tdep.c (arm_get_longjmp_target): Delete.
	(arm_linux_init_abi): Set up longjmp description in tdep.
	* armnbsd-nat.c (get_longjmp_target): Delete.
	* armnbsd-tdep.c (arm_netbsd_init_abi_common): Set up longjmp
	description in tdep.
	* config/arm/tm-nbsd.h (JB_ELEMENT_SIZE, JB_PC): Delete.
	(get_longjmp_target): Delete declaration.
	(GET_LONGJMP_TARGET): Delete.
	* config/arm/tm-linux.h (arm_get_longjmp_target): Delete declaration.
	(GET_LONGJMP_TARGET): Delete.

2002-02-17  Kevin Buettner  <kevinb@redhat.com>

	From Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>:
	* ia64-tdep.c (ia64_gdbarch_init): Eliminate incorrect use
	of ``current_gdbarch''.

2002-02-17  Tom Tromey  <tromey@redhat.com>

	* cli/cli-cmds.c (compare_strings): New function.
	(complete_command): Only print each unique item once.
	* completer.h (complete_line): Declare.
	* completer.c (complete_line): New function.
	(line_completion_function): Use it.

2002-02-16  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (TARGET_LONG_DOUBLE_BIT): Default to 64.
	* gdbarch.h, gdbarch.c: Re-generate.

2002-02-16  Daniel Jacobowitz  <drow@mvista.com>

	* valarith.c (value_x_unop): Fix decrement; support post-decrement.

2002-02-16  Daniel Jacobowitz  <drow@mvista.com>

	From Peter Schauer <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>:
	* valops.c (value_arg_coerce): Don't take the address of a reference
	to convert an argument to a reference.

2002-02-15  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (get_image_name): New function.
	(handle_load_dll): Use get_image_name function.
	(get_child_debug_event): Avoid registering debug events until possibly
	execed process is started.
	(child_create_inferior): Allow invocation via shell so that command
	line redirection, etc.  works ok.
	(_initialize_inftarg): Add new command: "set shell" to control whether
	a shell is used to start a process.

2002-02-15  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-mips-low.c (cannot_fetch_register): Use find_regno
	instead of find_register_by_number.
	(cannot_store_register): Likewise.

2002-02-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	* dwarf2read.c: Replace fprintf (stderr, ...) by
	fprintf_unfiltered (gdb_stderr, ...).

2002-02-15  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/gdbserver.1: Document --attach.

2002-02-15  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.h (struct gdbarch_tdep): Add fields for breakpoint
	descriptions.
	* arm-tdep.c (arm_default_arm_le_breakpoint)
	(arm_default_arm_be_breakpoint, arm_default_thumb_le_breakpoint)
	(arm_default_thumb_be_breakpoint): New.  Initialize them from
	traditional breakpoint defines.
	(arm_breakpoint_from_pc): Use new gdbarch_tdep entries.
	(arm_gdbarch_init): Initialize new breakpoint variables.
	* arm-linux-tdep.c (arm_linux_arm_le_breakpoint): New.
	(arm_linux_init_abi): Initialize linux-specific breakpoint.
	* armnbsd-tdep.c (arm_nbsd_arm_le_breakpoint): New.
	(arm_netbsd_aout_init_abi, arm_netbsd_elf_init_abi): Split common
	code out to ...
	(arm_netbsd_init_abi_common): ... here; new function.
	* config/arm/tm-arm.h (ARM_LE_BREAKPOINT, ARM_BE_BREAKPOINT)
	(THUMB_LE_BREAKPOINT, THUMB_BE_BREAKPOINT): Delete.
	* config/arm/tm-linux.h (ARM_LE_BREAKPOINT): Delete.
	* config/arm/tm-nbsd.h (ARM_LE_BREAKPOINT): Delete.

2002-02-15  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.h (enum arm_abi): New enum.
	(struct gdbarch_tdep): New structure.
	(LOWEST_PC): Provide a default.
	(arm_gdbarch_register_os_abi): Declare new function.
	* arm-tdep.c (arm_abi_names): New array.
	(process_note_abi_tag_sections): New function.
	(get_elfosabi): New function.
	(arm_gdbarch_register_os_abi): New function.
	(arm_gdbarch_init): Try to determine the ABI of the inferior.  If
	support for that ABI has been built in, then call the appropriate
	configuration routine.  Use gdbarch_num_regs() to get the number
	of registers.
	(arm_dump_tdep): New function.
	(arm_init_abi_eabi_v1, arm_init_abi_eabi_v2, arm_init_abi_apcs): New
	place-holder functions.
	(_initialize_arm_tdep): Register them.
	* config/arm/tm-arm.h (LOWEST_PC): Delete.

	* armnbsd-tdep.c: New file.
	* Makefile.in (armnbsd-tdep.o): Add dependencies.
	* config/arm/nbsd.mt (TDEPFILES): Add it.
	* config/arm/tm-nbsd.h (LOWEST_PC): Delete.

	* armnbsd-nat.c: Include regcache.h.
	* Makefile.in (armnbsd-nat.o): Update dependency list.

	* arm-tdep.c (arm_get_next_pc): Use printf_filtered for error message.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in: Fix typos in target rules.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	Fix part of PR gdb/267.
	* linespec.c (find_methods): Handle constructors specially for now.

2002-02-14  Corinna Vinschen  <vinschen@redhat.com>

	* arm-tdep.c (arm_push_arguments): Eliminate special float type
	handling.
	* config/arm/tm-arm.h (COERCE_FLOAT_TO_DOUBLE): Define to call
	standard_coerce_float_to_double().

2002-02-14  Christopher Faylor  <cgf@redhat.com>

	* config/i386/xm-cygwin.h: Revert inadvertent reinclusion of
	GDBINIT_FILENAME.

2002-02-14  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (rs6000_gdbarch_init): Don't call
	find_variant_by_name, because it confuses the multiarch
	framework. Return NULL if there isn't an architecture with the
	user supplied name, instead of forcing a different one without
	recording the change with the multiarch machinery.
	(find_variant_by_name): Delete.

2002-02-14  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* config/i386/i386sol2.mh (NATDEPFILES): Add i387-nat.o, needed by
	i386v4-nat.o now. Add gcore.o, Solaris x86 supports gcore.

2002-02-13  Martin M. Hunt  <hunt@redhat.com>

	* stack.c (print_frame_info_base): When calling
	print_frame_info_listing_hook, set current_source_symtab.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in: Add regformats directory to INCLUDE_CFLAGS,
	and remove unused $(INCLUDE_DIR).
	Add regcache.c to OBS.
	Add generated register protocol files to clean target.
	Update dependencies for new objects, obsolete old target code.

	* gdbserver/linux-low.c: Remove all platform-specific code to
	new files.  Remove various dead code.  Update to use regcache
	functionality.
	* gdbserver/remote-utils.c (fromhex): Add return statement
	to quiet warning.
	(putpkt): Dynamically allocate buf2 because PBUFSIZ is no longer
	constant.
	(input_interrupt): Add integer parameter to match prototype
	of a signal handler.
	(outreg): Use register_data ().
	(prepare_resume_reply): Use gdbserver_expedite_regs.
	* gdbserver/server.c (main): Dynamically allocate own_buf because
	PBUFSIZ is no longer constant.  Use registers_to_string () and
	registers_from_string ().
	* gdbserver/server.h: No longer include "defs.h".  Add prototypes
	for error (), fatal (), and warning ().  Update definition of
	PBUFSIZ to use regcache functionality.  Add include guard.
	* gdbserver/utils.c (fatal): Add missing ``const''.
	(warning): New function.

	* regformats/regdat.sh: Include "regcache.h" in generated files.
	Provide init_registers () function.
	* regformats/regdef.h: Add prototype for set_register_cache ().
	Add include guard.

	* gdbserver/linux-arm-low.c: New file.
	* gdbserver/linux-i386-low.c: New file.
	* gdbserver/linux-ia64-low.c: New file.
	* gdbserver/linux-m68k-low.c: New file.
	* gdbserver/linux-mips-low.c: New file.
	* gdbserver/linux-ppc-low.c: New file.
	* gdbserver/linux-sh-low.c: New file.

	* gdbserver/regcache.c: New file.
	* gdbserver/regcache.h: New file.

	* gdbserver/low-linux.c: Removed obsolete file.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	* config/arm/linux.mt: Update GDBSERVER_DEPFILES.
	* config/i386/linux.mt: Likewise.
	* config/ia64/linux.mt: Likewise.
	* config/m68k/linux.mh: Likewise.
	* config/powerpc/linux.mh: Likewise.
	* config/mips/linux.mt: Likewise.

	* config/sh/linux.mt: Add GDBSERVER_DEPFILES.

	* config/i386/i386lynx.mh: Mark gdbserver variables
	as (currently) obsolete for this target.
	* config/i386/nbsd.mt: Likewise.
	* config/i386/nbsdelf.mt: Likewise.
	* config/m32r/m32r.mt: Likewise.
	* config/m68k/m68klynx.mh: Likewise.
	* config/m68k/nbsd.mt: Likewise.
	* config/m68k/sun3os4.mh: Likewise.
	* config/mips/vr5000.mt: Likewise.
	* config/ns32k/nbsd.mt: Likewise.
	* config/pa/hppabsd.mh: Likewise.
	* config/pa/hppaosf.mh: Likewise.
	* config/powerpc/nbsd.mt: Likewise.
	* config/rs6000/rs6000lynx.mh: Likewise.
	* config/s390/s390.mt: Likewise.
	* config/s390/s390x.mt: Likewise.
	* config/sparc/sparclynx.mh: Likewise.
	* config/sparc/sun4os4.mh: Likewise.
	* config/i386/x86-64linux.mt: Likewise.
	* config/sparc/linux.mh: Likewise.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	* configure.tgt: Configure gdbserver only for known working
	targets.  Set ${build_gdbserver} instead of modifying ${configdirs}.
	* configure.in: Check ${build_gdbserver}.  Put gdbserver/ into
	SUBDIRS if it is configured.  Update comment for ${nativefile}.
	* configure: Regenerated.

2002-02-13  Michael Snyder  <msnyder@redhat.com>

	* config/i386/i386v42mp.mh: Add gcore.o to NATDEPFILES.

	* gcore.c (gcore_command): Use gcore_default_target instead of NULL.
	(default_gcore_mach): Just return 0, work around a problem in bfd.
	(default_gcore_target): OK to return NULL if exec_bfd is null.
	(make_mem_sec): Use a cast, avoid a warning.

	* procfs.c (find_memory_regions_callback): Use a cast instead of
	calling host_pointer_to_address (which complains if
	sizeof (host pointer) != sizeof (target pointer)).
	(procfs_make_note_section): Avoid overflow in psargs string.

	* procfs.c (procfs_make_note_section): Make the default
	implementation return an error.

2002-02-13  Rodney Brown  <rbrown64@csc.com.au>

	* procfs.c (procfs_make_note_section): Provide a default definition
	(for alpha-dec-osf4.0f). Fix typos.

2002-02-13  Elena Zannoni  <ezannoni@redhat.com>

	* linux-proc.c: Add include of regcache.h.
	* Makefile.in (linux-proc.o): Add dependency on regcache.h.

2002-02-13  Andrew Cagney  <ac131313@redhat.com>

	From 2002-01-18 Greg McGary <greg@mcgary.org>:
	* memattr.c (create_mem_region): Disallow useless empty region.
	Regions are half-open intervals, so allow [A..B) [B..C) as
	non-overlapping.

2002-02-13  Michael Chastain <mec@shout.net>

	* defs.h: Kill CONST_PTR.
	* c-lang.h (c_builtin_types): Change CONST_PTR to simple "const".
	* c-lang.c (c_builtin_types): Likewise.
	* ch-lang.c (ch_builtin_types): Likewise.
	* f-lang.c (f_builtin_types): Likewise.
	* language.c (unknown_builtin_types): Likewise.
	* m2-lang.c (m2_builtin_types): Likewise.
	* p-lang.c (pascal_builtin_types): Likewise.
	* scm-lang.c (c_builtin_types): Likewise.

2002-02-13  Keith Seitz  <keiths@redhat.com>

	* arm-tdep.h (arm_get_next_pc): Add declaration.

2002-02-13  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_use_struct_convention): Make static.  Move to be
	with other related struct-returning functions.
	(arm_extract_struct_value_address): New function.
	(arm_gdbarch_init): Initialize the above in multi-arch vector.  Also
	initialize float_format, double_format and long_double_format as
	appropriate to the endianness of the target.
	* config/arm/tm-arm.h (TARGET_DOUBLE_FORMAT): Delete.
	(arm_use_struct_convention): Delete declaration.
	(USE_STRUCT_CONVENTION, EXTRACT_STRUCT_VALUE_ADDRESS): Delete.

2002-02-13  Keith Seitz  <keiths@redhat.com>

        * defs.h (core_addr_to_string_nz): New function.

2002-02-13  Mark Kettenis  <kettenis@gnu.org>

	Apply missing bits of 2002-01-15 patch.
	* i386v4-nat.c (supply_fpregset): Use i387_supply_fsave.
	(fill_fpregset): Use i387_fill_fsave.

2002-02-12  Keith Seitz  <keiths@redhat.com>

	* utils.c (core_addr_to_string): Use phex instead of phex_nz.
	(core_addr_to_string_nz): New function.

2002-02-11  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-nat.c: Really include arm-tdep.h.
	* config/arm/tm-linux.h (struct type, struct value): Declare.

2002-02-11  Michael Snyder  <msnyder@redhat.com>

	* procfs.c: Include elf-bfd.h (for elfcore_write functions).
	(gcore section): Ifdef for Solaris and Unixware only.
	(procfs_do_thread_registers): Unixware needs one lwpstatus
	per thread (not one prstatus or pstatus).
	(procfs_make_note_section): Iterate only over kernel threads (lwps),
	not over all gdb threads.  For unixware, call elfcore_write_pstatus
	once before iterating over threads.

2002-02-11  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.h: New file.
	* arm-tdep.c: Include arm-tdep.h.
	(arm_addr_bits_remove, arm_smash_text_address, arm_saved_pc_after_call)
	(arm_skip_prologue, arm_call_dummy_words, arm_fix_call_dummy)
	(arm_print_float_info, arm_register_type, convert_to_extended)
	(arm_elf_make_msymbols_special, arm_coff_make_msymbol_special)
	(arm_extract_return_value, arm_register_name): Make static.
	(arm_software_single_step): Similarly.  Fix types in declaration.
	(arm_register_byte, arm_register_raw_size, arm_register_virtual_size)
	(arm_store_return_value, arm_store_struct_return): New functions.
	(arm_gdbarch_init): Register the above functions.  Also register
	call_dummy_start_offset, sizeof_call_dummy_words,
	function_start_offset, inner_than, decr_pc_after_break, fp_regnum,
	sp_regnum, pc_regnum, register_bytes, num_regs, max_register_raw_size,
	max_register_virtual_size, register_size.  Set up
	prologue_cache.saved_regs here, rather than ...
	(_initialize_arm_tdep): ... here.
	* config/arm/tm-arm.h (struct type, struct value): Delete forward
	declarations.
	(arm_addr_bits_remove, arm_smash_text_address, arm_saved_pc_after_call)
	(arm_skip_prologue, arm_call_dummy_words, arm_fix_call_dummy)
	(arm_print_float_info, arm_register_type, convert_to_extended)
	(arm_elf_make_msymbols_special, arm_coff_make_msymbol_special)
	(arm_extract_return_value, arm_register_name): Delete declarations.
	(SMASH_TEXT_ADDRESS, ADDR_BITS_REMOVE, FUNCTION_START_OFFSET)
	(SKIP_PROLOGUE, SAVED_PC_AFTER_CALL, INNER_THAN, BREAKPOINT_FROM_PC)
	(DECR_PC_AFTER_BREAK, PRINT_FLOAT_INFO, REGISTER_SIZE, NUM_REGS)
	(REGISTER_NAME, REGISTER_BYTES, REGISTER_BYTE, REGISTER_RAW_SIZE)
	(REGISTER_VIRTUAL_SIZE, MAX_REGISTER_RAW_SIZE)
	(MAX_REGISTER_VIRTUAL_SIZE, REGISTER_VIRTUAL_TYPE, STORE_STRUCT_RETURN)
	(EXTRACT_RETURN_VALUE, STORE_RETURN_VALUE, CALL_DUMMY_WORDS)
	(SIZEOF_CALL_DUMMY_WORDS, CALL_DUMMY_START_OFFSET, FIX_CALL_DUMMY)
	(SOFTWARE_SINGLE_STEP_P, SOFTWARE_SINGLE_STEP)
	(ELF_MAKE_MSYMBOL_SPECIAL, COFF_MAKE_MSYMBOL_SPECIAL) Delete.
	(arm_pc_is_thumb, arm_pc_is_thumb_dummy, thumb_get_next_pc)
	(arm_get_next_pc): No-longer static -- these are needed by the RDI
	interface.
	* arm-linux-nat.c arm-linux-tdep.c armnbsd-nat.c: Include arm-tdep.h.
	* remote-rdi.c remote-rdp.c: Likewise.
	* Makefile.in (arm-linux-nat.o, arm-linux-tdep.o arm-tdep.o)
	(armnbsd-nat.o, remote-rdi.o, remote_rdp.o): Update dependencies.
	* config/arm/tm-nbsd.h (SOFTWARE_SINGLE_STEP_P): Delete bogus
	definition.

	* arm-tdep.h (ARM_A1_REGNUM, ARM_A4_REGNUM, ARM_AP_REGNUM)
	(ARM_SP_REGNUM, ARM_LR_REGNUM, ARM_PC_REGNUM, ARM_F0_REGNUM)
	(ARM_F3_REGNUM, ARM_F7_REGNUM, ARM_FPS_REGNUM, ARM_PS_REGNUM): Renamed
	from non-ARM_ prefixed definitions.
	* arm-tdep.c armnbsd-nat.c arm-linux-nat.c arm-linux-tdep.c: Update
	all uses of above.
	* remote-rdi.c remote-rdp.c: Likewise.
	* arm-linux-nat.c (ARM_CPSR_REGNUM): Renamed from CPSR_REGNUM.

2002-02-11  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_frameless_function_invocation)
	(arm_frame_args_address, arm_frame_locals_address, arm_frame_num_args)
	(arm_frame_chain, arm_init_extra_frame_info, arm_frame_saved_pc)
	(arm_read_fp, arm_frame_init_saved_regs, arm_push_dummy_frame)
	(arm_pop_frame, arm_get_next_pc): Make static.
	(arm_gdbarch_init): Register above in gdbarch structure.
	(arm_read_fp): Renamed from arm_target_read_fp.
	(arm_pc_is_thumb, arm_pc_is_thumb_dummy): Make static.
	* config/arm/tm-arm.h (arm_frameless_function_invocation)
	(arm_frame_args_address, arm_frame_locals_address, arm_frame_num_args)
	(arm_frame_chain, arm_init_extra_frame_info, arm_frame_saved_pc)
	(arm_target_read_fp, arm_frame_init_saved_regs, arm_push_dummy_frame)
	(arm_pop_frame, arm_get_next_pc, arm_pc_is_thumb)
	(arm_pc_is_thumb_dummy): Delete declarations.
	(INIT_EXTRA_FRAME_INFO, TARGET_READ_FP, FRAME_CHAIN)
	(FRAMELESS_FUNCTION_INVOCATION, FRAME_SAVED_PC, FRAME_ARGS_ADDRESS)
	(FRAME_LOCALS_ADDRESS, FRAME_NUM_ARGS, FRAME_ARGS_SKIP)
	(FRAME_INIT_SAVED_REGS, PUSH_DUMMY_FRAME, POP_FRAME): Delete.

2002-02-10  Daniel Jacobowitz  <drow@mvista.com>

	* symtab.c (compare_search_syms): New function.
	(sort_search_symbols): New function.
	(search_symbols): Sort symbols after searching rather than
	before.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* NEWS: Linux -> GNU/Linux.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: For for level one methods, disallow a definition
	when partially multi-arched.  Add comments explaining rationale.
	* gdbarch.h: Re-generate.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (EXTRA_STACK_ALIGNMENT_NEEDED): Don't require when
	multi-arch partial.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Map LEVEL onto a symbolic GT_LEVEL.  Exit on bad
	field.  Use diff -u.
	* gdbarch.c: Re-generate.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* config/mips/tm-mips.h (CALL_DUMMY_LOCATION): Delete.
	* gdbarch.sh (PUSH_RETURN_ADDRESS): Don't require when multi-arch
	partial.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (REGISTER_CONVERTIBLE): Don't require when
	multi-arch partial.
	(PUSH_ARGUMENTS): Switch to using predefault.
	* gdbarch.c: Regenerate.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* valops.c (PUSH_ARGUMENTS): Delete definition.
	* gdbarch.sh (PUSH_ARGUMENTS): Don't require when multi-arch
	partial.  Default to default_push_arguments.
	* gdbarch.h, gdbarch.c: Regenerate.

2002-02-09  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (throw_exception): Rename return_to_top_level.  Update
	comments.
	* utils.c (error_stream, internal_verror, quit): Ditto.
	* top.c (throw_exception, catcher): Ditto.
	* sparclet-rom.c (sparclet_load): Ditto.
	* remote.c (interrupt_query, minitelnet): Ditto.
	* remote-sds.c (interrupt_query): Ditto.
	* remote-mips.c (mips_error, mips_kill): Ditto.
	* ocd.c (interrupt_query): Ditto.
	* monitor.c (monitor_interrupt_query): Ditto.
	* m3-nat.c (suspend_all_threads, thread_resume_command): Ditto.
	* target.h: Update comment.

	* m3-nat.c, ocd.c, sparclet-rom.c: Update copyright.

2002-02-09  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (TARGET_LONG_DOUBLE_FORMAT): Default to
	default_double_format.
	* gdbarch.h, gdbarch.c: Re-generate.
	* findvar.c (floatformat_unknown): Delete variable definition.
	* doublest.h (floatformat_unknown): Delete variable declaration.

2002-02-09  Jim Blandy  <jimb@redhat.com>

	* stabsread.c (read_type): Add code to parse Sun's syntax for
	prototyped function types.

2002-02-09  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (SUBDIR_CLI_INITS): Set to SUBDIR_CLI_SRCS.
	(SUBDIR_MI_INITS): Set to SUBDIR_MI_SRCS.

2002-02-09  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* xcoffsolib.c (_initialize_xcoffsolib): Renamed from
	_initialize_solib.  Fixes name clash with solib.c:_initialize_solib,
	now _initialize_xcoffsolib gets called again and overrides the
	commands from solib.c in a native configuration.

2002-02-09  Mark Kettenis  <kettenis@gnu.org>

	* doublest.c (store_typed_floating): Don't try to return a value.
	Fixes PR gdb/290.

2002-02-08  Jim Blandy  <jimb@redhat.com>

	* c-typeprint.c (c_type_print_varspec_suffix): If a function type
	is prototyped and has no arguments, print its argument list as
	`(void)'.

2002-02-08  Chris Demetriou  <cgd@broadcom.com>

	* MAINTAINERS (write-after-approval): Add myself.
	(paper-trail): I've escaped!

2002-02-08  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (cygwin_pid_to_str): Revert 2002-02-08 change xasprintf
	changes.
	(_initialize_check_for_gdb_ini): Ditto.

2002-02-08  Martin M. Hunt  <hunt@redhat.com>

	* win32-nat.c (cygwin_pid_to_str): Fix typo.
	xaprintf -> xasprintf.

2002-02-08  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c: Remove use of printf and sprintf functions.

2002-02-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_frame_chain_valid): Make static.
	(arm_push_arguments): Likewise.
	(arm_gdbarch_init): New function.
	(_initialize_arm_tdep): Call it.
	* config/arm/tm-arm.h (GDB_MULTI_ARCH): Set to 1.
	(TARGET_DOUBLE_FORMAT): Test TARGET_BYTE_ORDER, not target_byte_order.
	(FRAME_CHAIN_VALID): Delete.
	(arm_frame_chain_valid): Delete declaration.
	(PUSH_ARGUMENTS): Delete.
	(arm_push_arguments): Delete declaration.
	(CALL_DUMMY_P): Delete.

2002-02-08  Andrew Cagney  <ac131313@redhat.com>
	    Corinna Vinschen  <vinschen@redhat.com>

	* gdbtypes.c (build_gdbtypes): Disable setting a specific float format
	on builtin float types.

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

	* utils.c: Include <curses.h> before "bfd.h".
	* tui/tui-hooks.c: Likewise.
	* tui/tui.c: Likewise.
	* tui/tuiCommand.c: Likewise.
	* tui/tuiData.c: Likewise.
	* tui/tuiDataWin.c: Likewise.
	* tui/tuiDisassem.c: Likewise.
	* tui/tuiGeneralWin.c: Likewise.
	* tui/tuiIO.c: Likewise.
	* tui/tuiLayout.c: Likewise.
	* tui/tuiRegs.c: Likewise.
	* tui/tuiSource.c: Likewise.
	* tui/tuiSourceWin.c: Likewise.
	* tui/tuiStack.c: Likewise.
	* tui/tuiWin.c: Likewise.

2002-02-07  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_nofp_frame_init_saved_regs): Extend where[] array
	to include space for pseudoregs as well. Update loops accordingly.
	(sh_fp_frame_init_saved_regs): Ditto.
	(sh_init_extra_frame_info, sh_pop_frame): Split long lines.

2002-02-07  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Andreas Schwab is GNU/Linux m68k maintainer.
	Add Richard Earnshaw to Arm maintainers.

2002-02-07  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (warning_begin): Delete declaration.

	* config/powerpc/tm-ppcle-eabi.h (TARGET_BYTE_ORDER_DEFAULT):
	Delete macro.

2002-02-07  Michael Snyder  <msnyder@redhat.com>

	* solib-legacy.c (legacy_svr4_fetch_link_map_offsets):
	Logic bug, remove misplaced else.

2002-02-07  Klee Dienes  <klee@apple.com>

	* fork-inferior.c (fork_inferior): Add '!' to the list of
	characters that need to be quoted when building a string for the
	shell.  Quote '!' specifically with a backslash, since CSH chokes
	when trying to evaluate "str!str".

2002-02-06  Nick Clifton  <nickc@cambridge.redhat.com>

	* rdi-share/host.h: Only provide a typedef for bool if it is not
	defined.

2002-02-04  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.h (enum bptype): Add new overlay event bp type.
	(enable_overlay_breakpoints, disable_overlay_breakpoints): Export.

	* breakpoint.c (create_internal_breakpoint): New function.
	(internal_breakpoint_number): Moved into create_internal_breakpoint.
	(create_longjmp_breakpoint): Use create_internal_breakpoint.
	(create_thread_event_breakpoint): Ditto.
	(create_solib_event_breakpoint): Ditto.
	(create_overlay_event_breakpoint): New function.
	(enable_overlay_breakpoints, disable_overlay_breakpoints): New funcs.
	(update_breakpoints_after_exec): Delete and re-initialize
	overlay event breakpoints after an exec.  Add FIXME comment
	about longjmp breakpoint.
	(print_it_typical): Ignore overlay event breakpoints.
	(print_one_breakpoint): Ditto.
	(mention): Ditto.
	(bpstat_what): Do not stop for overlay event breakpoints.
	(delete_breakpoint): Don't delete overlay event breakpoints.
	(breakpoint_re_set_one): Delete the overlay event breakpoint.
	(breakpoint_re_set): Re-create overlay event breakpoint.

	* symfile.c (overlay_auto_command): Enable overlay breakpoints.
	(overlay_manual_command): Disable overlay breakpoints.
	(overlay_off_command): Disable overlay breakpoints.

2002-02-06  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c: Include elf-bfd.h and coff/internal.h.
	(MSYMBOL_SET_SPECIAL, MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Move defines
	to here from config/tm-arm.h.
	(coff_sym_is_thumb): Make static.
	(arm_elf_make_msymbol_special): New function.
	(arm_coff_make_msymbol_special): New function.
	* config/arm/tm-arm.h (MSYMBOL_SET_SPECIAL): Delete definition.
	(MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Likewise.
	(coff_sym_is_thumb): Delete declaration.
	(arm_elf_make_msymbol_special): Declare.
	(arm_coff_make_msymbol_special): Declare.
	(ELF_MAKE_MSYMBOL_SPECIAL): Call arm_elf_make_msymbol_special.
	(COFF_MAKE_MSYMBOL_SPECIAL): Call arm_coff_make_msymbol_special.

2002-02-06  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_software_single_step): ANSIfy function declaration.

2002-02-06  Richard Earnshaw  <rearnsha@arm.com>

	* gdbarch.sh (PRINT_FLOAT_INFO): Add rule.
	* gdbarch.c gdbarch.h: Regenerate.
	* arch-utils.c (default_print_float_info): New function.
	* arch-utils.h (default_print_float_info): Prototype it.
	* infcmd.c (float_info): Call PRINT_FLOAT_INFO.
	* doc/gdbint.texinfo (FLOAT_INFO): Mark as deprecated.
	(PRINT_FLOAT_INFO): Document it.

	* arm-tdep.c (arm_print_float_info): Renamed from arm_float_info.
	* config/arm/tm-arm.h (FLOAT_INFO): Delete.
	(PRINT_FLOAT_INFO): Define.

2002-02-06  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (_initialize_check_for_gdb_ini):
	Add typecast to sprintf argument to suppress a warning.

2002-02-05  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (last_sig): Changed type of variable to target_signal,
	to allow easier handling of pass state.
	(DEBUG_EXCEPTION_SIMPLE): New macro, used in handle_exception,
	that gives exception name and address.
	(handle_exception): Use DEBUG_EXCEPTION_SIMPLE macro
	and set last_sig value to ourstatus->value.sig. Some missing
	exceptions added.
	(child_continue): Correctly report continue_status.
	(get_child_debug_event,do_initial_child_stuff): Set last_sig to
	TARGET_SIGNAL_0 (new default value).
	(child_resume): consider sig argument passed to decide if
	the exception should be passed to debuggee or not.

2002-02-05  Michael Snyder  <msnyder@redhat.com>

	* regcache.c (fetch_register): Call target_fetch_register
	only if we don't call FETCH_PSEUDO_REGISTER.
	(store_register): Call target_store_register only if we
	don't call STORE_PSEUDO_REGISTER.

2002-02-05  Elena Zannoni  <ezannoni@redhat.com>

	* gdbarch.sh: Add definitions for COFF_MAKEMSYMBOL_SPECIAL and
	ELF_MAKE_MSYMBOL_SPECIAL.
	* gdbarch.c, gdbarch.h: Regenerate.
	* arch-utils.c (default_make_msymbol_special): New function.
	* arch-utils.h (default_make_msymbol_special): Export.
	* elfread.c (elf_symtab_read): Compile use of
	ELF_MAKE_MSYMBOL_SPECIAL unconditionally because it is now
	multiarched.
	* coffread.c (coff_symtab_read): Ditto, for
	COFF_MAKE_MSYMBOL_SPECIAL.

2002-02-05  Jim Blandy  <jimb@redhat.com>

	* solib-svr4.c (svr4_truncate_ptr): New function.
	(svr4_relocate_section_addresses): Do the address arithmetic with
	the appropriate truncation for target addresses, even when
	CORE_ADDR is larger than a target address.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (mywait): Cast second argument of waitpid
	to (int *).

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (kill_inferior): Remove commented out
	code.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

        * c-valprint.c (c_val_print): Handle TYPE_CODE_COMPLEX.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c: Remove unused include files.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c: Define PTRACE_ARG3_TYPE.
	(read_inferior_memory): Use it.
	(write_inferior_memory): Likewise.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (create_inferior): Call strerror instead of
	grubbing through sys_errlist.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c: New file, copied exactly from low-linux.c.

2002-02-04  Pierre Muller  <muller@ics.u-strasbg.fr>
	* win32-nat.c (handle_exception): Handle Ctrl-Break exception.

2002-02-04  Andrew Cagney  <ac131313@redhat.com>

	* cli/cli-decode.c (do_cfunc, set_cmd_cfunc): New functions.
	(do_sfunc, set_cmd_sfunc): New functions.

	* command.h (struct cmd_list_element): Add field func.
	* cli/cli-decode.h (struct cmd_list_element): Ditto.
	* command.h (set_cmd_sfunc, set_cmd_cfunc): Declare.
	* cli/cli-decode.h: Ditto.

	* cli/cli-decode.c (help_cmd): Test for func not cfunc/sfunc.
	(help_all, help_cmd_list): Ditto.
	(find_cmd, complete_on_cmdlist): Ditto.
	* top.c (execute_command): Ditto.

	* cli/cli-setshow.c (do_setshow_command): Call func instead of
	function.sfunc.

	* infcmd.c (notice_args_read): Fix function signature.

	* cli/cli-cmds.c (init_cli_cmds): Use set_cmd_sfunc.
	* cli/cli-decode.c (add_set_cmd): Ditto.
	* utils.c (initialize_utils): Ditto.
	* maint.c (_initialize_maint_cmds): Ditto.
	* infrun.c (_initialize_infrun): Ditto.
	* demangle.c (_initialize_demangler): Ditto.
	* remote.c (add_packet_config_cmd): Ditto.
	* mips-tdep.c (_initialize_mips_tdep): Ditto.
	* cris-tdep.c (_initialize_cris_tdep): Ditto.
	* proc-api.c (_initialize_proc_api): Ditto.
	* kod.c (_initialize_kod): Ditto.
	* valprint.c (_initialize_valprint): Ditto.
	* top.c (init_main): Ditto.
	* infcmd.c (_initialize_infcmd): Ditto.
	* corefile.c (_initialize_core): Ditto.
	* arm-tdep.c (_initialize_arm_tdep): Ditto.
	* arch-utils.c (initialize_current_architecture): Ditto.
	(_initialize_gdbarch_utils): Ditto.
	* alpha-tdep.c (_initialize_alpha_tdep): Ditto.

	* cli/cli-decode.c (add_cmd): Use set_cmd_cfunc.
	* wince.c (_initialize_inftarg): Ditto.
	* symfile.c (_initialize_symfile): Ditto.
	* mips-tdep.c (_initialize_mips_tdep): Ditto.
	* language.c (_initialize_language): Ditto.
	* arc-tdep.c (_initialize_arc_tdep): Ditto.

2002-02-04  Michael Snyder  <msnyder@redhat.com>

	* memattr.c (_initialize_mem): Elaborate the help for 'mem' command.

2002-02-04  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in: Add regformats directory to INCLUDE_CFLAGS.
	Add rules for building the register data files.

2002-02-04  Daniel Jacobowitz  <drow@mvista.com>

	* regformats/regdat.sh: Add braces to the definition of
	expedite_regs_${arch}.

2002-02-04  Daniel Jacobowitz  <drow@mvista.com>

	* regformats/regdef.h (struct reg): Add comment describing the
	requirements for offset and size fields.

2002-02-04  Andreas Schwab  <schwab@suse.de>

	* config/ia64/linux.mh: Don't set NAT_CLIBS and REGEX.
	* config/ia64/linux.mt: Don't set GDBSERVER_LIBS.

2002-02-04  Richard Earnshaw  <rearnsha@arm.com>

	* gdbarch.sh (copyright): Update years in generated header.
	(SMASH_TEXT_ADDRESS): Add rule.
	* gdbarch.h, gdbarch.c: Re-generate.
	* coffread.c: Multi-arch uses of SMASH_TEXT_ADDRESS.
	* dbxread.c: Likewise.
	* dwarfread.c: Likewise.
	* elfread.c: Likewise.
	* somread.c: Likewise.

	* arm-tdep.c (arm_smash_text_address): New function.
	* config/arm/tm-arm.h (SMASH_TEXT_ADDRESS): Define in terms of above.

2002-02-04  Pierre Muller  <muller@ics.u-strasbg.fr>

	Add support for hardware watchpoints on win32 native.
	* win32-nat.c (CONTEXT_DEBUG_DR macro): Add use of
	CONTEXT_DEBUG_REGISTERS.
	(dr variable): New variable. Static array containing a local copy
	of debug registers.
	(debug_registers_changed): New variable.  Reflects when debug registers
	are changed and need to be written to inferior.
	(debug_registers_used): New variable. Reflects when any debug register
	was set, used when new threads are created.
	(cygwin_set_dr, cygwin_set_dr7, cygwin_get_dr6): New functions used by
	i386-nat code.
	(thread_rec): Set dr array if id is the thread of current_event .
	(child_continue, child_resume): Change the debug registers for all
	threads if debug_registers_changed.
	(child_add_thread): Change the debug registers if debug_registers_used.
	* config/i386/cygwin.mh: Add use of i386-nat.o file.
	Link nm.h to new nm-cygwin.h file.
	+ config/i386/nm-cygwin.h: New file. Contains the macros used for use
	of hardware registers.

2002-02-03  Andrew Cagney  <ac131313@redhat.com>

	* valprint.c (print_floating): Allow non TYPE_CODE_FLT types.
	Restore behavour broken by 2002-01-20 Andrew Cagney
	<ac131313@redhat.com> IEEE_FLOAT removal.

2002-02-03  Daniel Jacobowitz  <drow@mvista.com>

	* c-valprint.c (c_val_print): Pass a proper valaddr to
	cp_print_class_method.
	* valops.c (search_struct_method): If there is only one method
	and args is NULL, return that method.

2002-02-03  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.c (init_simd_type): Use TYPE_TAG_NAME instead of
	accessing tag_name directly.

2002-02-03  Daniel Jacobowitz  <drow@mvista.com>

	* ax-gdb.c (find_field): Use TYPE_TAG_NAME instead
	of accessing tag_name directly.

2002-02-03  Daniel Jacobowitz  <drow@mvista.com>

	PR gdb/280
	* gdbtypes.c (replace_type): New function.
	* gdbtypes.h (replace_type): Add prototype.
	* stabsread.c (read_type): Use replace_type.

2002-02-03  Richard Earnshaw  <rearnsha@arm.com>

	* Makefile.in (memattr.o): Add missing dependencies rule.

2002-02-03  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* breakpoint.c (break_at_finish_command): Really export.
	(break_at_finish_at_depth_command): Ditto.
	(tbreak_at_finish_command): Ditto.
	* hppa-tdep.c: Include completer.h.
	* Makefile.in (hppa-tdep.o): Add dependency on $(completer_h).
	(COMMON_OBS): Remove duplicate ui-file.o, frame.o, doublest.o.

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

	* utils.c (do_write): New function.
	(error_stream): Rewrite combining the code from error_begin and
	verror.
	(verror): Rewrite using error_stream.
	(error_begin): Delete function.

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

	* utils.c (error_begin): Make static.
	* defs.h (error_begin): Delete declaration.

	* linespec.c (cplusplus_error): Replace cplusplus_hint.
	(decode_line_1): Use cplusplus_error instead of error_begin,
	cplusplus_hint and return_to_top_level.
	* coffread.c (coff_symfile_read): Use error instead of error_begin
	and return_to_top_level.
	* infrun.c (default_skip_permanent_breakpoint): Ditto.

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

	* language.h (type_error, range_error): Make string parameter
	constant.
	* language.c (warning_pre_print): Delete extern declaration.
	* dwarfread.c (warning_pre_print): Ditto.
	* language.c (type_error, range_error): Rewrite to use verror and
	vwarning instead of warning_begin.

2002-02-01  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (breakpoint_re_set): Delete ancient #if 0 code.
	(set_ignore_count): Move misplaced comment back where it belongs.

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

	* command.h (NO_FUNCTION): Delete macro.
	* cli/cli-decode.h (NO_FUNCTION): Ditto.
	* top.c (execute_command): Replace NO_FUNCTION with NULL.
	* tracepoint.c (_initialize_tracepoint): Ditto.
	* cli/cli-decode.c (add_set_cmd): Ditto.
	* cli/cli-cmds.c (init_cli_cmds): Ditto.

2002-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* gnu-v3-abi.c (gnuv3_virtual_fn_field): Update comments.
	Update ``this'' pointer when calling virtual functions.

2002-02-01  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (create_temp_exception_breakpoint): Delete.
	* hppa-tdep.c: Deprecate xbreak, txbreak and bx commands.

2002-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* regformats/reg-arm.dat: New file.
	* regformats/reg-i386.dat: New file.
	* regformats/reg-ia64.dat: New file.
	* regformats/reg-m68k.dat: New file.
	* regformats/reg-mips.dat: New file.
	* regformats/reg-ppc.dat: New file.
	* regformats/reg-sh.dat: New file.
	* regformats/regdef.h: New file.
	* regformats/regdat.sh: New file.

2002-02-01  Richard Earnshaw  <reanrsha@arm.com>

	* arm-tdep.c (arm_frameless_function_invocation): Add some comments.
	(arm_frame_args_address, arm_frame_locals_address): New functions.
	(arm_frame_num_args): New function.
	* config/tm-arm.h (FRAME_ARGS_ADDRESS): Call arm_frame_args_address.
	(FRAME_LOCALS_ADDRESS): Call arm_frame_locals_address.
	(FRMA_NUM_ARGS): Call arm_frame_num_args.

2002-01-31  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (break_at_finish_command): Export.
	(break_at_finish_at_depth_command): Export.
	(tbreak_at_finish_command): Export.
	(_initialize_breakpoint): Delete "xbreak" and "tbreak" commands.
	* hppa-tdep.c (_initialize_hppa_tdep): Add "xbreak" and
	"tbreak" commands, which are HPPA specific.

	* printcmd.c (disassemble_command): Remove an ancient
	artifact of an old merge.

	* symfile.h (enum overlay_debugging_state):
	Define enum constant values for overlay mode.
	* symfile.c (overlay_debugging): Use enums instead of literals.
	(overlay_is_mapped, overlay_auto_command,
	overlay_manual_command): Ditto.

	* breakpoint.c (insert_breakpoints, remove_breakpoint,
	breakpoint_here_p, breakpoint_inserted_here_p,
	breakpoint_thread_match, bpstat_stop_status,
	describe_other_breakpoints, check_duplicates, clear_command):
	Coding standard fixes.

	* target.c (target_xfer_memory): Add spaces, coding standard.
	(do_xfer_memory): Add missing line to trust-readonly
	code: check bfd SEC_READONLY flag for section.

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

	* PROBLEMS: Fix typo, 5.1->5.1.1.

2002-01-30  Daniel Jacobowitz  <drow@mvista.com>

	* symtab.c (find_pc_sect_psymtab): Do not search psymtabs for
	data symbols, since we search based on textlow and texthigh.
	(find_pc_sect_symtab): Likewise.

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

	* defs.h (vwarning): Declare.
	* utils.c (vwarning): New function.
	(warning): Call vwarning.
	(warning_begin): Delete function.

	* rs6000-nat.c (vmap_ldinfo): Use the function warning to print
	the warning message.
	* d10v-tdep.c (d10v_address_to_pointer) [0]: Delete call to
	warning_begin.

2002-01-30  Michael Snyder  <msnyder@redhat.com>

	* NEWS: Mention "set trust-readonly-sections" command.
	Mention generate-core-file command.

2002-01-15  Michael Snyder  <msnyder@redhat.com>

	* target.c: New command, "set trust-readonly-sections on".
	(do_xfer_memory): Honor the suggestion to trust readonly sections
	by reading them from the object file instead of from the target.
	(initialize_targets): Register command "set trust-readonly-sections".

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

	* parse.c (target_map_name_to_register): Simplify, search regs and
	pseudo-regs using a single loop.

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

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

2002-01-15  Rodney Brown  <rbrown64@csc.com.au>

	* config/i386/tm-i386v4.h: Define HAVE_I387_REGS.
	* config/i386/i386v42mp.mh: Add i387-nat.o .
	* i386v4-nat.c: Include i387-nat.h.
	(supply_fpregset): Use i387_supply_fsave.
	(fill_fpregset): Use i387_fill_fsave.

2002-01-30  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_call_dummy_words): Define.
	* arm-linux-tdep.c (arm_linux_call_dummy_words): Define.
	* config/arm/tm-arm.h (CALL_DUMMY_P): Define.
	(CALL_DUMMY_WORDS): Define.
	(arm_call_dummy_words): Declare.
	* config/arm/tm-linux.h (CALL_DUMMY_WORDS): Define.
	(arm_linux_call_dummy_words): Declare.

2002-01-30  Andreas Schwab  <schwab@suse.de>

	* m68klinux-nat.c: Fix last change to use regcache_collect
	instead of referencing registers[] directly.

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

	* parse.c (target_map_name_to_register): Delete code wrapped in
	#ifdef REGISTER_NAME_ALIAS_HOOK.

2002-01-28  Michael Snyder  <msnyder@redhat.com>

	* regcache.c (legacy_read_register_gen): Need to be able to
	read pseudo-register as well as real register.
	(legacy_write_register_gen): Ditto.

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

	* config/mips/tm-wince.h (TARGET_BYTE_ORDER): Delete.
	* config/sparc/tm-sparc.h (TARGET_BYTE_ORDER): Delete.
	* config/ns32k/tm-umax.h (TARGET_BYTE_ORDER): Delete.
	* config/ia64/tm-ia64.h (TARGET_BYTE_ORDER): Delete.
	* config/m32r/tm-m32r.h (TARGET_BYTE_ORDER): Delete.
	* config/m68k/tm-m68k.h (TARGET_BYTE_ORDER): Delete.
	* config/m88k/tm-m88k.h (TARGET_BYTE_ORDER): Delete.
	* config/mn10200/tm-mn10200.h (TARGET_BYTE_ORDER): Delete.
	* config/pa/tm-hppa.h (TARGET_BYTE_ORDER): Delete.
	* config/sh/tm-wince.h (TARGET_BYTE_ORDER): Delete.
	* config/v850/tm-v850.h (TARGET_BYTE_ORDER): Delete.
	* config/vax/tm-vax.h (TARGET_BYTE_ORDER): Delete.
	* config/z8k/tm-z8k.h (TARGET_BYTE_ORDER): Delete.
	* config/i960/tm-i960.h (TARGET_BYTE_ORDER): Delete.
	* config/i386/tm-i386.h (TARGET_BYTE_ORDER): Delete.
	* config/h8500/tm-h8500.h (TARGET_BYTE_ORDER): Delete.
	* config/h8300/tm-h8300.h (TARGET_BYTE_ORDER): Delete.
	* config/fr30/tm-fr30.h (TARGET_BYTE_ORDER): Delete.
	* config/d30v/tm-d30v.h (TARGET_BYTE_ORDER): Delete.
	* config/alpha/tm-alpha.h (TARGET_BYTE_ORDER): Delete.

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

	* arch-utils.c (TARGET_BYTE_ORDER_DEFAULT): Delete macro.
	(target_byte_order): Initialize to BFD_ENDIAN_BIG.
	(initialize_current_architecture): Update target_byte_order using
	information from BFD.
	* config/mcore/tm-mcore.h (TARGET_BYTE_ORDER_DEFAULT):
	* config/arm/tm-arm.h (TARGET_BYTE_ORDER_DEFAULT): Delete.

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

	* config/vax/tm-vax.h (INVALID_FLOAT): Move macro from here...
	* vax-tdep.c (INVALID_FLOAT): To here.  Document why it is broken.

	* rs6000-tdep.c (rs6000_do_registers_info): Delete code wrapped in
	#ifdef INVALID_FLOAT.
	* infcmd.c (do_registers_info): Ditto.
	* values.c (unpack_double): Ditto.  Add comment.

	* config/ns32k/tm-umax.h (INVALID_FLOAT): Delete macro that was
	already commented out.

2002-01-26  Andreas Schwab  <schwab@suse.de>

	* config/m68k/nm-linux.h (FETCH_INFERIOR_REGISTERS): Define.
	* m68klinux-nat.c: Update ptrace interface for fetching/storing
	registers and add support for PTRACE_GETREGS.

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

	GDB 5.1.1 released from 5.1 branch.
	* NEWS: Add 5.1.1 news.
	* README: Sync with 5.1 branch.

2002-01-23  Fred Fish  <fnf@redhat.com>

	* mdebugread.c (parse_partial_symbols): Only copy stabstring1 to
	stabstring on initial malloc.  Reallocing will copy it for us,
	if necessary.

2002-01-23  Elena Zannoni  <ezannoni@redhat.com>

        * Makefile.in (hpread_h): Delete.
        (HFILES_NO_SRCDIR): Remove hpread.h.
        (ALLDEPFILES): Remove hp-psymtab-read.c and hp-symtab-read.c.
        (hpread.o): Update dependencies.
        (hp-psymtab-read.o, hp-symtab-read.o): Remove.

        * hp-psymtab-read.c: Remove file.
        * hp-symtab-read.c: Remove file.
        * hpread.h: Remove file.

        * hpread.c: Merge all contents of hp-psymtab-read.c,
        hp-symtab-read.c and hpread.h into this file, as it was prior to
        January 1999.

        * config/pa/hpux11w.mh, config/pa/hpux11.mh,
        config/pa/hpux1020.mh, config/pa/hppaosf.mh,
        config/pa/hppahpux.mh, config/pa/hppabsd.mh (NATDEPFILES):
        Remove hp-psymtab-read.o and hp-symtab-read.o, add hpread.o.

2002-01-23  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-linux-nat.c (ppc_register_u_addr, supply_gregset,
	fill_gregset): Call gdbarch_tdep() just once, assign result to
	variable and use that, instead of calling the function several
	times.

2002-01-24  Alexandre Oliva  <aoliva@redhat.com>

	* configure.host: Accept sparcv9 as alias for sparc64.
	* configure.tgt: Likewise.

2002-01-22  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (build_so_list_from_mapfile)
	(aix5_relocate_main_executable): Fix xcalloc() calls so order of
	arguments is not reversed.
	* solib-sunos.c (sunos_relocate_main_executable): Likewise.
	* solib-svr4.c (svr4_relocate_main_executable): Likewise.

2002-01-22  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_pseudo_register_read): New function. Renamed and
	modified version of obsolete sh_fetch_pseudo_register.
	(sh_fetch_pseudo_register): Rename to sh_pseudo_register_read.
	(sh4_register_read): New function.
	(sh_pseudo_register_write): New function. Renamed and modified
	version of obsolete sh_store_pseudo_register.
	(sh_store_pseudo_register): Rename to sh_pseudo_register_write.
	(sh4_register_write): New function.
	(sh_gdbarch_init): Remove setting of gdbarch function
	fetch_pseudo_register and store_pseudo_register. Remove setting of
	register_convert_to_raw, register_convert_to_virtual,
	register_convertible.
	(sh_sh4_register_convertible): Delete. No longer needed. All is
	taken care by architecture specific functions
	register_read/register_write.
	(sh_sh4_register_convert_to_virtual): Make static.
	(sh_sh4_register_convert_to_raw): Ditto.

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

	* doublest.c (floatformat_is_negative): Assert FMT is non NULL.
	(floatformat_is_nan, floatformat_mantissa): Ditto.

	* gdbtypes.c (_initialize_gdbtypes): Initialize TYPE_FLOATFORMAT
	for builtin_type_ieee_single_little, builtin_type_ieee_double_big,
	builtin_type_ieee_double_little,
	builtin_type_ieee_double_littlebyte_bigword,
	builtin_type_m68881_ext, builtin_type_i960_ext,
	builtin_type_m88110_ext, builtin_type_m88110_harris_ext,
	builtin_type_arm_ext_big, builtin_type_arm_ext_littlebyte_bigword,
	builtin_type_ia64_spill_big, builtin_type_ia64_spill_little and
	builtin_type_ia64_quad_big, builtin_type_ia64_quad_little.

2002-01-22  Corinna Vinschen  <vinschen@redhat.com>

	* xstormy16-tdep.c (xstormy16_scan_prologue): Add frameless
	parameter.  Set frameless flag if it exists and depended of
	whether the scanned function is frameless or not.
	(xstormy16_skip_prologue): If function is frameless, return
	result of xstormy16_scan_prologue().
	(xstormy16_frame_init_saved_regs): Adjust xstormy16_scan_prologue()
	call.

2002-01-21  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_fp_frame_init_saved_regs, sh_push_arguments,
	sh_generic_show_regs, sh3_show_regs, sh3e_show_regs,
	sh3_dsp_show_regs, sh4_show_regs, sh_dsp_show_regs,
	sh_sh4_register_byte, sh_sh4_register_raw_size,
	sh_sh3e_register_virtual_type, sh_sh4_register_virtual_type,
	sh_sh4_register_convertible, sh_sh4_register_convert_to_virtual,
	sh_sh4_register_convert_to_raw, sh_fetch_pseudo_register,
	sh_store_pseudo_register, sh_do_pseudo_register): Call
	gdbarch_tdep() just once, assign result to variable and use that,
	instead of calling the function several times.

2002-01-20  Mark Kettenis  <kettenis@gnu.org>

	* go32-nat.c (fetch_register): Use FP_REGNUM_P and FPC_REGNUM_P
	macros instead of LAST_FPU_CTRL_REGNUM.
	(store_register): Likewise.

2002-01-21  Jim Blandy  <jimb@redhat.com>

	* infcmd.c (run_command): Check that the `exec' target layer's BFD
	is up-to-date before running the program, not just when a program
	exits.

2002-01-21  Fred Fish  <fnf@redhat.com>

	* arm-tdep.c (thumb_skip_prologue): Quit scanning prologue
	when we have found all instructions we are looking for.

2002-01-21  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_register_name): New function.
	(arm_registers_names): Make static.
	* config/arm/tm-arm.h (arm_register_names): Delete declaration.
	(arm_register_name): Declare.
	(REGISTER_NAME): Use it.

2002-01-21  Richard Earnshaw  <rearnsha@arm.com>
	    Kevin Buettner  <kevinb@redhat.com>

	Convert arm targets to new FRAME interface.
	* arm-tdep.c (struct frame_extra_info): Remove fsr.
	(arm_frame_find_save_regs): Delete.
	(arm_frame_init_saved_regs): New.
	(arm_init_extra_frame_info): Alloacte saved_regs as required.
	Allocate extra_info as required.  Convert all uses of fsr.regs
	to use saved_regs, similarly all uses of EXTRA_FRAME_INFO fields
	to use extra_info.
	(thumb_scan_prologue, arm_scan_prologue, arm_find_callers_reg)
	(arm_frame_chain, arm_frame_saved_pc, arm_pop_frame): Likewise.
	(check_prologue_cache, save_prologue_cache): Likewise.
	(_initialize_arm_tdep): Ensure prologue_cache is correctly set up.
	* config/arm/tm-arm.h (EXTRA_FRAME_INFO): Delete.
	(FRAME_FIND_SAVED_REGS): Delete.
	(arm_frame_find_saved_regs): Delete prototype.
	(arm_frame_init_saved_regs): New prototype.
	(FRAME_INIT_SAVED_REGS): Define.

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

	* config/arc/tm-arc.h (IEEE_FLOAT): Delete.

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

	From Jeff Law <law@redhat.com>:
	* infttrace.c: Include <sys/pstat.h>.
	(child_pid_to_exec_file): Revamp.  Use pstat call to get the
	exec file if the ttrace equivalent fails.

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

	* rdi-share/devsw.c (openLogFile): Delete unused ``struct tm lt''.
	(closeLogFile): Ditto.

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

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

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

	* MAINTAINERS (Blanket Write Privs): Add Kevin Buettner, Elena
	Zannoni and Eli Zaretskii.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* buildsym.c: Update copyright years.
	* c-typeprint.c: Likewise.
	* dwarf2read.c: Likewise.
	* f-typeprint.c: Likewise.
	* gdbtypes.c: Likewise.
	* gdbtypes.h: Likewise.
	* hp-symtab-read.c: Likewise.
	* hpread.c: Likewise.
	* mdebugread.c: Likewise.
	* p-typeprint.c: Likewise.

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

	* remote-sim.c (gdbsim_open): Simplify code testing the macro
	TARGET_BYTE_ORDER_SELECTABLE_P.  Assume the target is always
	byte-order selectable.
	* sparc-tdep.c (sparc_target_architecture_hook): Ditto.
	* arch-utils.c: Ditto.
	(set_endian): Ditto.
	(set_endian_from_file): Ditto.
	* gdbserver/low-sim.c (create_inferior): Ditto.
	* gdbarch.sh: Ditto.
	* gdbarch.h: Re-generate.
	* config/powerpc/tm-ppc-eabi.h (TARGET_BYTE_ORDER_SELECTABLE_P):
	* config/sparc/tm-sparclite.h (TARGET_BYTE_ORDER_SELECTABLE):
	* config/sparc/tm-sparclet.h (TARGET_BYTE_ORDER_SELECTABLE):
	* config/mcore/tm-mcore.h (TARGET_BYTE_ORDER_SELECTABLE_P):
	* config/arm/tm-wince.h (TARGET_BYTE_ORDER_SELECTABLE_P):
	* config/arm/tm-linux.h (TARGET_BYTE_ORDER_SELECTABLE_P):
	* config/arc/tm-arc.h (TARGET_BYTE_ORDER_SELECTABLE):
	* config/arm/tm-arm.h (TARGET_BYTE_ORDER_SELECTABLE_P): Delete
	macro definition.
	* config/mips/tm-wince.h: Remove #undef of macro
	TARGET_BYTE_ORDER_SELECTABLE.
	* config/sh/tm-wince.h: Ditto.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.h (struct cplus_struct_type): Add is_artificial to
	member function fields.  Add accessor macro
	TYPE_FN_FIELD_ARTIFICIAL.
	* dwarf2read.c (dwarf2_add_member_fn): Check for artificial methods.
	* c-typeprint.c (c_type_print_base): Skip artificial member
	functions.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* f-typeprint.c: Delete unused function f_type_print_args.
	* p-typeprint.c: Delete unused function pascal_type_print_args.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.h (struct type): Fix whitespace.  Remove obsolete
	comment.  Add ``artificial'' to ``union field_location''.

	* dwarf2read.c: Remove ad-hoc TYPE_FIELD_ARTIFICIAL.

	* buildsym.c (finish_block): Initialize TYPE_FIELD_ARTIFICIAL to 0.
	* mdebugread.c (parse_symbol): Likewise.
	* stabsread.c (define_symbol): Likewise.
	* hp-symtab-read.c (hpread_function_type): Likewise, instead of
	initializing TYPE_FIELD_BITPOS to n (obsolete).
	(hpread_doc_function_type): Likewise.
	* hpread.c (hpread_function_type): Likewise.

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

	* configure.in (host_makefile_frag): Only require a host makefile
	fragment when a native build.
	* configure: Re-generate.

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

	* doublest.h (floatformat_from_type): Declare.
	* doublest.c (floatformat_from_type): New function.
	(convert_typed_floating): Use.

	* valprint.c (print_floating): Replace checks for IEEE_FLOAT with
	call to function floatformat_from_type.

	* gdbarch.sh (IEEE_FLOAT): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* config/i960/tm-i960.h (IEEE_FLOAT): Delete macro.
	* config/i386/tm-i386.h (IEEE_FLOAT): Ditto.
	* config/z8k/tm-z8k.h (IEEE_FLOAT): Ditto.
	* config/sparc/tm-sparc.h (IEEE_FLOAT): Ditto.
	* config/pa/tm-hppa.h (IEEE_FLOAT): Ditto.
	* config/m88k/tm-m88k.h (IEEE_FLOAT): Ditto.
	* config/m68k/tm-m68k.h (IEEE_FLOAT): Ditto.
	* config/h8500/tm-h8500.h (IEEE_FLOAT): Ditto.
	* config/h8300/tm-h8300.h (IEEE_FLOAT): Ditto.
	* config/fr30/tm-fr30.h (IEEE_FLOAT): Ditto.
	* config/arm/tm-arm.h (IEEE_FLOAT): Ditto.
	* config/alpha/tm-alpha.h (IEEE_FLOAT): Ditto.

	* s390-tdep.c (s390_gdbarch_init): Do not set ieee_float.
	* x86-64-tdep.c (i386_gdbarch_init): Ditto.
	* sparc-tdep.c (sparc_gdbarch_init): Ditto.
	* sh-tdep.c (sh_gdbarch_init): Ditto.
	* mips-tdep.c (mips_gdbarch_init): Ditto.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
	* cris-tdep.c (cris_gdbarch_init): Ditto.

2002-01-20  Jiri Smid  <smid@suse.cz>

	* configure.host, configure.tgt: Support x86-64.
	* NEWS: Note new target x86-64.

	* config/i386/x86-64linux.mh (NATDEPFILES): x86-64-nat.o removed.
	* x86-64-linux-nat.c (x86_64_register_u_addr): New function.
	* config/i386/nm-x86-64.h (ATTACH_LWP): Removed.
	* Makefile.in (x86-64-tdep.o, x86-64-linux-tdep.o,
	x86-64-linux-nat.o): Fix dependencies.

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

	* utils.c: Remove #ifndef MALLOC_INCOMPATIBLE.
	* config/sparc/xm-sun4os4.h (PTRACE_ARG3_TYPE): Move macro ....
	* config/sparc/nm-sun4os4.h (PTRACE_ARG3_TYPE): ... to here.
	* config/sparc/xm-sun4os4.h: Delete file.
	* config/sparc/sun4os4.mh (XM_FILE): Delete makefile variable.

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

	* config/sparc/sparclynx.mh (XM_FILE): Delete.
	* config/rs6000/rs6000lynx.mh (XM_FILE): Delete.
	* config/m68k/m68klynx.mh (XM_FILE): Delete.
	* config/i386/i386lynx.mh (XM_FILE): Delete.
	* config/rs6000/xm-rs6000ly.h: Delete file.
	* config/sparc/xm-sparclynx.h: Delete file.
	* config/m68k/xm-m68klynx.h: Delete file.
	* config/i386/xm-i386lynx.h: Delete file.
	* config/xm-lynx.h: Delete file.
	* config/djgpp/fnchange.lst: Update.

2002-01-19  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_register_byte): New function.
	(alpha_register_raw_size): Ditto.
	(alpha_register_virtual_size): Ditto.
	(alpha_skip_prologue_internal): Renamed from
	alpha_skip_prologue.
	(alpha_skip_prologue): New version that calls
	alpha_skip_prologue_internal.
	(alpha_in_lenient_prologue): Use alpha_skip_prologue_internal.
	* config/alpha/tm-alpha.h (SKIP_PROLOGUE): Remove
	second argument from alpha_skip_prologue.
	(REGISTER_BYTE): Use alpha_register_byte.
	(REGISTER_RAW_SIZE): Use alpha_register_raw_size.
	(REGISTER_VIRTUAL_SIZE): Use alpha_register_virtual_size.
	(FRAMELESS_FUNCTION_INVOCATION): Use
	generic_frameless_function_invocation_not.
	(FRAME_NUM_ARGS): Use frame_num_args_unknown.
	(COERCE_FLOAT_TO_DOUBLE): Use standard_coerce_float_to_double.

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

	* config/mips/xm-news-mips.h: Delete file.
	* config/mips/news-mips.mh (XM_FILE): Delete makefile variable.

	* config/m88k/xm-m88k.h: Delete file.
	* config/m88k/xm-dgux.h: Do not include xm-m88k.h.
	* config/m88k/xm-delta88v4.h: Ditto.
	* config/m88k/xm-delta88.h: Ditto.

	* config/alpha/xm-fbsd.h: Delete file.
	* config/alpha/fbsd.mh (XM_FILE): Delete makefile variable.

	* config/sparc/xm-sparc.h: Delete file.
	* Makefile.in (xm-sun4os4.h): Delete dependency.
	* config/sparc/xm-sun4sol2.h: Do not include xm-sparc.h.
	* config/sparc/xm-sun4os4.h: Ditto.
	* config/sparc/xm-linux.h: Ditto.

	* config/i386/xm-windows.h: Delete file.

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

	* utils.c: Include <sys/param.h> for MAXPATHLEN.
	(gdb_realpath): Use MAXPATHLEN when PATH_MAX is not defined.

2002-01-19  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_call_dummy_words): New.
	* config/alpha/tm-alpha.h (CALL_DUMMY): Remove.
	(CALL_DUMMY_P): Define.
	(CALL_DUMMY_WORDS): Define.
	(SIZEOF_CALL_DUMMY_WORDS): Define.

2002-01-19  Per Bothner  <per@bothner.com>

	* gnu-v3-abi.c (gnuv3_rtti_type):  Guard that vtable_symbol_name
	isn't NULL, which can happen with some gcj-3.x-produced code.

2002-01-19  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_register_virtual_type): New function.
	(alpha_init_frame_pc_first): Ditto.
	(alpha_fix_call_dummy): Ditto.
	(alpha_store_struct_return): Ditto.
	(alpha_extract_struct_value_address): Ditto.
	* config/alpha/tm-alpha.h (REGISTER_VIRTUAL_TYPE): Use
	alpha_register_virtual_type.
	(STORE_STRUCT_RETURN): Use alpha_store_struct_return.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Use
	alpha_extract_struct_value_address.
	(FIX_CALL_DUMMY): Use alpha_fix_call_dummy.
	(INIT_FRAME_PC): Use init_frame_pc_noop.
	(INIT_FRAME_PC_FIRST): Use alpha_init_frame_pc_first.

2002-01-19  Mark Kettenis  <kettenis@gnu.org>

	* i386gnu-nat.c: Include "i386-tdep.h".
	(fetch_fpregs): Simplify code dealing with uninitialized floating
	point states such that it doesn't require FP7_REGNUM.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (frame_extra_info): New.
	(alpha_find_saved_regs): Make static.  Use
	frame->extra_info.
	(alpha_frame_init_saved_regs): New function.
	(alpha_frame_saved_pc): Use frame->extra_info.
	(temp_saved_regs): Don't declare as struct frame_saved_regs.
	(heuristic_proc_desc): Adjust for temp_saved_regs changes.
	(init_extra_frame_info): Rename to...
	(alpha_init_extra_frame_info): ...this.  Use frame->extra_info.
	(alpha_print_extra_frame_info): New function.
	(alpha_frame_locals_address): Ditto.
	(alpha_frame_args_address): Ditto.
	(alpha_pop_frame): Use frame->extra_info.
	* config/alpha/tm-alpha.h (FRAME_ARGS_ADDRESS): Use
	alpha_frame_args_address.
	(FRAME_LOCALS_ADDRESS): Use alpha_frame_locals_address.
	(alpha_find_saved_regs): Remove prototype.
	(FRAME_INIT_SAVED_REGS): Use alpha_frame_init_saved_regs.
	(EXTRA_FRAME_INFO): Remove.
	(INIT_EXTRA_FRAME_INFO): Use alpha_init_extra_frame_info.
	(PRINT_EXTRA_FRAME_INFO): Use alpha_print_extra_frame_info.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_osf_in_sigtramp): New function.
	(alpha_cannot_fetch_register): Ditto.
	(alpha_cannot_store_register): Ditto.
	(alpha_register_convertible): Ditto.
	(alpha_use_struct_convention): Ditto.
	* config/alpha/tm-alpha.h: Update copyright years.
	(IN_SIGTRAMP): Use alpha_osf_in_sigtramp.
	(INNER_THAN): Use core_addr_lessthan.
	(CANNOT_FETCH_REGISTER): Use alpha_cannot_fetch_register.
	(CANNOT_STORE_REGISTER): Use alpha_cannot_store_register.
	(REGISTER_CONVERTIBLE): Use alpha_register_convertible.
	(USE_STRUCT_CONVENTION): Use alpha_use_struct_convention.
	(FRAME_CHAIN): Remove unnecessary cast.

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

	* NEWS: Document that testsuite/gdb.hp/gdb.threads-hp/ is
	obsolete.

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

	* infptrace.c: Remove ATTRIBUTE_UNUSED.  Update copyright.
	* monitor.c, remote-array.c, remote-bug.c: Ditto.
	* remote-e7000.c, remote-es.c, remote-mips.c: Ditto.
	* remote-nindy.c, remote-os9k.c, remote-rdi.c: Ditto.
	* remote-rdp.c, remote-sds.c, remote-sim.c: Ditto.
	* remote-st.c, remote-vx.c, remote.c, win32-nat.c: Ditto.
	* x86-64-linux-nat.c: Ditto.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_register_name): New function.
	* config/alpha/tm-alpha.h (REGISTER_NAMES): Remove.
	(REGISTER_NAME): Define.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/nm-nbsd.h (KERNEL_U_ADDR): Remove.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c: Update copyright years.
	(alpha_next_pc): New function.
	(alpha_software_single_step): Ditto.
	* config/alpha/tm-alpha.h: Add prototype for
	alpha_software_single_step.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alphabsd-nat.c: Update copyright years.
	(fill_gregset): Use regcache_collect.
	(fill_fpregset): Likewise.
	(fetch_inferior_registers): Only fetch integer registers
	if requested to do so.
	(store_inferior_registers): Only store integer registers
	if requested to do so.

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

	* config/alpha/alpha-osf3.mh (XDEPFILES): Delete.
	* config/alpha/alpha-osf2.mh (XDEPFILES): Delete.
	* config/alpha/alpha-osf1.mh (XDEPFILES): Delete.
	* config/alpha/alpha-linux.mh (XDEPFILES): Delete.
	* config/alpha/fbsd.mh (XDEPFILES): Delete.
	* config/arm/linux.mh (XDEPFILES): Delete.
	* config/arm/nbsd.mh (XDEPFILES): Delete.
	* config/i386/i386dgux.mh (XDEPFILES): Delete.
	* config/i386/i386sol2.mh (XDEPFILES): Delete.
	* config/i386/i386m3.mh (XDEPFILES): Delete.
	(NATDEPFILES): Move i387-tdep.o and core-aout.o to here.
	* config/i386/i386gnu.mh (XDEPFILES): Delete.
	* config/i386/fbsd.mh (XDEPFILES): Delete.
	* config/i386/i386bsd.mh (XDEPFILES): Delete.
	* config/i386/i386sco5.mh (XDEPFILES): Delete.
	* config/i386/i386v4.mh (XDEPFILES): Delete.
	* config/i386/i386v42mp.mh (XDEPFILES): Delete.
	* config/i386/i386sco4.mh (XDEPFILES): Delete.
	* config/i386/i386aix.mh (XDEPFILES): Delete.
	* config/i386/go32.mh (XDEPFILES): Delete.
	* config/i386/cygwin.mh (XDEPFILES): Delete.
	* config/i386/i386lynx.mh (XDEPFILES): Delete.
	* config/i386/i386mach.mh (XDEPFILES): Delete.
	* config/i386/i386v32.mh (XDEPFILES): Delete.
	* config/i386/linux.mh (XDEPFILES): Delete.
	* config/i386/nbsdelf.mh (XDEPFILES): Delete.
	* config/i386/ncr3000.mh (XDEPFILES): Delete.
	* config/i386/i386mk.mh (NATDEPFILES): Rename XDEPFILES.
	* config/i386/i386sco.mh (XDEPFILES): Delete.
	* config/i386/i386v.mh (XDEPFILES): Delete.
	* config/i386/nbsd.mh (XDEPFILES): Delete.
	* config/i386/ptx.mh (NATDEPFILES): Rename XDEPFILES.
	* config/i386/ptx4.mh (NATDEPFILES): Rename XDEPFILES.
	* config/i386/symmetry.mh (XDEPFILES): Delete.
	* config/i386/obsd.mh (XDEPFILES): Delete.
	* config/i386/x86-64linux.mh (XDEPFILES): Delete.
	* config/ia64/linux.mh (XDEPFILES): Delete.
	* config/ia64/aix.mh (XDEPFILES): Delete.
	* config/m68k/apollo68b.mh (XDEPFILES): Delete.
	* config/m68k/dpx2.mh (XDEPFILES): Delete.
	* config/m68k/3b1.mh (NATDEPFILES): Rename XDEPFILES.
	* config/m68k/apollo68v.mh (XDEPFILES): Delete.
	* config/m68k/hp300bsd.mh (XDEPFILES): Delete.
	* config/m68k/linux.mh (XDEPFILES): Delete.
	* config/m68k/m68klynx.mh (XDEPFILES): Delete.
	* config/m68k/m68kv4.mh (XDEPFILES): Delete.
	* config/m68k/nbsd.mh (XDEPFILES): Delete.
	* config/m68k/sun2os3.mh (XDEPFILES): Delete.
	* config/m68k/sun2os4.mh (XDEPFILES): Delete.
	* config/m68k/sun3os3.mh (XDEPFILES): Delete.
	* config/m68k/sun3os4.mh (XDEPFILES): Delete.
	* config/m88k/delta88.mh (XDEPFILES): Delete.
	* config/m88k/delta88v4.mh (XDEPFILES): Delete.
	* config/m88k/m88k.mh (XDEPFILES): Delete.
	* config/mips/littlemips.mh (NATDEPFILES): Rename XDEPFILES.
	* config/mips/linux.mh (XDEPFILES): Delete.
	* config/mips/irix6.mh (XDEPFILES): Delete.
	* config/mips/irix5.mh (XDEPFILES): Delete.
	* config/mips/irix4.mh (XDEPFILES): Delete.
	* config/mips/irix3.mh (XDEPFILES): Delete.
	* config/mips/decstation.mh (XDEPFILES): Delete.
	* config/mips/mipsm3.mh (XDEPFILES): Delete.
	(NATDEPFILES): Move core-aout.o to here.
	* config/ns32k/nbsd.mh (XDEPFILES): Delete.
	* config/pa/hpux1020.mh (XDEPFILES): Delete.
	* config/pa/hppabsd.mh (XDEPFILES): Delete.
	* config/pa/hppahpux.mh (XDEPFILES): Delete.
	* config/pa/hpux11w.mh (XDEPFILES): Delete.
	* config/pa/hppaosf.mh (XDEPFILES): Delete.
	* config/pa/hpux11.mh (XDEPFILES): Delete.
	* config/powerpc/aix.mh (XDEPFILES): Delete.
	* config/powerpc/nbsd.mh (XDEPFILES): Delete.
	* config/powerpc/linux.mh (XDEPFILES): Delete.
	* config/romp/rtbsd.mh: Rename XDEPFILES.
	* config/rs6000/rs6000lynx.mh (XDEPFILES): Delete.
	* config/rs6000/aix4.mh (XDEPFILES): Delete.
	* config/rs6000/rs6000.mh (XDEPFILES): Delete.
	* config/s390/s390.mh (XDEPFILES): Delete.
	* config/vax/vaxbsd.mh (NATDEPFILES): Rename XDEPFILES.
	* config/sparc/sun4sol2.mh (XDEPFILES): Delete.
	* config/sparc/sun4os4.mh (XDEPFILES): Delete.
	* config/sparc/sparclynx.mh (XDEPFILES): Delete.
	* config/sparc/nbsdelf.mh (XDEPFILES): Delete.
	* config/sparc/nbsd.mh (XDEPFILES): Delete.
	* config/sparc/linux.mh (XDEPFILES): Delete.
	* config/vax/vaxult.mh (XDEPFILES): Delete.
	* config/vax/vaxult2.mh (XDEPFILES): Delete.
	* Makefile.in (DEPFILES): Remove XDEPFILES.

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

	* utils.c (internal_verror): Fix comments, default is yes not no.
	Update queries to match.  Default to quit and dump core.

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

	* breakpoint.c: Update assuming #if UI_OUT is always true.  Update
	copyright.
	* defs.h, event-top.c, gdbcmd.h: Ditto.
	* infcmd.c, infrun.c, main.c, printcmd.c, remote.c: Ditto.
	* source.c, stack.c, symfile.c, symtab.c, thread.c: Ditto.
	* top.c, cli/cli-cmds.c, cli/cli-decode.c: Ditto.
	* cli/cli-script.c, cli/cli-script.h, cli/cli-setshow.c: Ditto.
	* mi/ChangeLog, mi/mi-cmd-break.c, mi/mi-cmd-stack.c: Ditto.
	* mi/mi-main.c:Ditto.

	* stack.c, symfile.c: Update copyright.

2002-01-17  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/low-hppabsd.c, gdbserver/low-lynx.c,
	gdbserver/low-nbsd.c, gdbserver/low-sim.c,
	gdbserver/low-sparc.c, gdbserver/low-sun3.c,
	gdbserver/low-linux.c, gdbserver/server.c: Correct copyright notices.

2002-01-17  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/low-hppabsd.c (myattach): New function, returning -1.
	* gdbserver/low-lynx.c (myattach): Likewise.
	* gdbserver/low-nbsd.c (myattach): Likewise.
	* gdbserver/low-sim.c (myattach): Likewise.
	* gdbserver/low-sparc.c (myattach): Likewise.
	* gdbserver/low-sun3.c (myattach): Likewise.

	* gdbserver/low-linux.c (myattach): New function.

	* gdbserver/server.c (attach_inferior): New function.
	(main): Handle "--attach".

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

	* MAINTAINERS (language support): Daniel Jacobwitz is C++
	maintainer.

2002-01-15  Daniel Jacobowitz  <drow@mvista.com>

	* c-typeprint.c (is_type_conversion_operator): Add additional
	check for non-conversion operators.

2002-01-15  Michael Snyder  <msnyder@redhat.com>

	* linux-proc.c: Add "info proc" command, a la procfs.c.
	(read_mapping): New function, abstract and re-use code.
	(linux_find_memory_regions): Use new func read_mapping.
	(linux_info_proc_cmd): New function, implement "info proc".
	(_initialize_linux_proc): Add new command "info proc".

2002-01-15  Michael Snyder  <msnyder@redhat.com>

	* symfile.c (generic_load): Use bfd_map_over_sections method
	instead of manipulating bfd structure members directly.
	(add_section_size_callback): New function, bfd sections callback
	used by generic_load.
	(load_sections_callback): New function, bfd sections callback
	used by generic_load.

2002-01-15  Elena Zannoni  <ezannoni@redhat.com>

	[Based on work by Jim Blandy]
	* gdbtypes.h (builtin_type_v16qi, builtin_type_v8hi): Export.
	(builtin_type_vec128): Export.
	* gdbtypes.c (builtin_type_v16qi, builtin_type_v8hi): New SIMD
	types.
	(builtin_type_vec128): New builtin type for 128 bit vector
	registers.
	(build_gdbtypes): Initialize builtin_type_v16qi and
	builtin_type_v8hi. Create the vec128 register builtin type
	structure.
	(build_builtin_type_vec128): New function.
	(_initialize_gdbtypes): Register builtin_type_v16qi and
	builtin_type_v8hi with gdbarch. Same for builtin_type_vec128.
	* rs6000-tdep.c (rs6000_register_virtual_type): Change type of
	AltiVec register to new builtin type.

2001-01-15  Daniel Jacobowitz  <drow@mvista.com>

	* stabsread.c (read_type): Pass dbx_lookup_type (typenums)
	to make_cv_type.

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

	* config/pa/tm-hppa.h (DEPRECATED_CLEAN_UP_REGISTER_VALUE): Rename
	CLEAN_UP_REGISTER_VALUE.
	* regcache.c (supply_register): Update only call.

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

	* configure.tgt: Mark a29k-*-aout*, a29k-*-coff*, a29k-*-elf*,
	a29k-*-ebmon*, a29k-*-kern*, a29k-*-none*, a29k-*-udi* and
	a29k-*-vxworks* targets as obsolete.

2002-01-14  Michael Snyder  <msnyder@redhat.com>

	* linux-proc.c (linux_do_thread_registers): Ignore fpxregs
	until we can resolve portability issues.
	* gregset.h: Remove references to fpxregs.
	* gcore.c (gcore_command): Initialize note_sec to NULL.

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

	* signals.c (target_signal_to_name): Rewrite.  Only use
	signals[].name when in bounds and non-NULL.

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

	From Petr Ledvina <ledvinap@kae.zcu.cz>:
	* signals.c (target_signal_to_name): Verify that SIG is within the
	bounds of the signals array.

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

	* MAINTAINERS: Remove arm-coff and arm-pe from target list.

2002-01-13  Keith Seitz  <keiths@redhat.com>

	* stack.c (print_frame_info_base): Print the frame's pc
	only if when print_frame_info_listing_hook is not defined.

2002-01-13  Keith Seitz  <keiths@redhat.com>

	* varobj.c (varobj_set_value): Make sure that there were no
	errors evaluating the object before attempting to set its
	value.
	value_cast now properly adjusts VALUE_ADDRESS for baseclasses,
	so this offset adjustment is no longer necessary.
	(create_child): Don't set the error flag if the child is
	a CPLUS_FAKE_CHILD.
	(value_of_child): If value_fetch_lazy fails, return NULL
	so that callers will be notified that an error occurred.
	(c_value_of_variable): Delay check of variable's validity
	until later. We actually want all structs and unions to have
	the value "{...}".
	Do not return "???" for variables which could not be evaluated.
	This error condition must be returned to the caller so that it
	can get the error condition from gdb.
	(cplus_name_of_child): Adjust index for vptr before figuring
	out the name of the child.
	(cplus_value_of_child): If a child's (real) parent is not valid,
	don't even bother trying to give a value for it. Just return
	an error. Change all instances in this function.
	(cplus_type_of_child): If our parent is one of the "fake"
	parents, we need to get at the type of the real parent, and
	derive the child's true type using this information.

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

	From 2002-01-09 John Marshall <johnm@falch.net>:
	* CONTRIBUTE, README, TODO: Change sourceware.cygnus.com to
	sources.redhat.com, and tweak some related URLs which had
	suffered from linkrot.

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

	From Jeff law:
	* hppa-tdep.c (hppa_push_arguments): Correct handling of 5-7 byte
	structures passed in registers.

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>.

2002-01-11  Michael Snyder  <msnyder@redhat.com>

	* symfile.c (build_section_addr_info_from_section_tab):
	Use bfd access method instead of manipulating bfd directly.
	(syms_from_objfile): Ditto.
	(simple_overlay_update_1): Ditto.
	(simple_overlay_update): Ditto.
	(generic_load): Ditto.
	(overlay_unmapped_address): FIXME comment, bfd access methods.
	(sections_overlap): FIXME comment, bfd access methods.
	(pc_in_mapped_range): FIXME comment, bfd access methods.
	(pc_in_unmapped_range): FIXME comment, bfd access methods.
	(section_is_mapped): FIXME comment, bfd access methods.
	(section_is_overlay): FIXME comment, bfd access methods.

	* symfile.c (generic_load): Whitespace and long line cleanups.
	Remove duplicate variable, change several local variables to
	more appropriate data types.
	(print_transfer_performance): Use %lu instead of %ld for ulongs.

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

	From Peter Schauer:
	* language.c (longest_local_hex_string_custom): Use phex_nz to
	convert NUM to a hex string.

2002-01-12  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_gdbarch_init): Move setting of long_bit earlier in
	the function.
	Update Copyright year.

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

	* language.c (longest_raw_hex_string): Delete unused function.

2002-01-11  Petr Sorfa  <petrs@caldera.com>

	* MAINTAINERS (write-after-approval): Add myself.
	* dwarf2read.c (read_tag_string_type): Handling of
	DW_AT_byte_size.
	(read_tag_string_type): FORTRAN fix to prevent propagation of
	first string size.
	(set_cu_language): Handling of DW_LANG_Fortran95

2002-01-11  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-nat.c (fetch_inferior_registers): Change inferior_pid ->
	GETPID(inferior_ptid).
	(store_inferior_registers): Likewise.

2002-01-10  Jason Merrill  <jason@redhat.com>

	* dwarf2read.c (decode_locdesc): Implement DW_OP_litn, DW_OP_dup.
	Fix DW_OP_minus.

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

	* config/djgpp/fnchange.lst: Add renames for bfd/ChangeLog-0001
	and bfd/elf32-sh-nbsd.c.

2002-01-10  Michael Snyder  <msnyder@redhat.com>

	* NEWS: Mention --pid and corefile/proc-id behavior change.

	* Makefile.in: Add rules for gcore.o and linux-proc.o.
	* gcore.c: Include cli/cli-decode.h instead of command.h.

	* main.c (captured_main): Add new command line option "--pid".
	If the second command line argument (following the symbol-file)
	begins with a digit, try to attach to it before trying to open
	it as a corefile.
	(print_gdb_help): Document the "--pid" argument.

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

	* completer.c (command_completer): New function.

	* completer.h <command_completer>: Add prototype.

	* cli/cli-cmds.c (init_cli_cmds): Make command_completer be the
	completer for the "help" command.

2002-01-09  Jason Merrill  <jason@redhat.com>

	* c-typeprint.c (is_type_conversion_operator): Fix thinko.

2002-01-09  Michael Snyder  <msnyder@redhat.com>

	* i386-linux-nat.c (fill_fpxregset): Make global.
	(store_fpxregset): Ditto.

	* gregset.h (gdb_fpxregset_t): Define.
	(supply_fpxregset): Prototype.
	(fill_fpxregset): Prototype.

	* exec.c (exec_make_note_section): Don't call elfcore_write_prpsinfo.

2002-01-09  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/arm-tdep.h (arm_software_single_step): Remove PARAMS.
	* config/arm/nm-nbsd.h (arm_register_u_addr): Likewise.
	* config/arm/tm-nbsd.h (get_longjmp_target): Likewise.

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

	* MAINTAINERS: Update target maintainer rules so that any
	Maintainer can approve a tested patch for a maintenance-only
	target.

2002-01-09  Richard Earnshaw  <rearnsha@arm.com>

	* MAINTAINERS (write-after-approval): Add myself.

	* arm-tdep.c (arm_init_extra_frame_info): Cast NULL argument to
	IN_SIGTRAMP.

2002-01-08  Michael Snyder  <msnyder@redhat.com>

	* linux-proc.c (child_pid_to_exec_file): Use readlink to get the
	real name of the executable, rather than the /proc name.

2002-01-03  Michael Snyder  <msnyder@redhat.com>

	Implement a "generate-core-file" command in gdb, save target state.
	* gcore.c: New file.  Implement new command 'generate-core-file'.
	Save a corefile image of the current state of the inferior.
	* linux-proc.c: Add linux-specific code for saving corefiles.
	* target.h (struct target_ops): Add new target vectors for saving
	corefiles; to_find_memory_regions and to_make_corefile_notes.
	(target_find_memory_regions): New macro.
	(target_make_corefile_notes): New macro.
	* target.c (update_current_target): Inherit new target methods.
	(dummy_find_memory_regions): New place-holder method.
	(dummy_make_corefile_notes): New place-holder method.
	(init_dummy_target): Initialize new dummy target vectors.
	* exec.c (exec_set_find_memory_regions): New function.
	Allow the exec_ops vector for memory regions to be taken over.
	(exec_make_note_section): New function, target vector method.
	* defs.h (exec_set_find_memory_regions): Export prototype.
	* procfs.c (proc_find_memory_regions): New function, corefile method.
	(procfs_make_note_section): New function, corefile method.
	(init_procfs_ops): Set new target vector pointers.
	(find_memory_regions_callback): New function.
	(procfs_do_thread_registers): New function.
	(procfs_corefile_thread_callback): New function.
	* sol-thread.c (sol_find_memory_regions): New function.
	(sol_make_note_section): New function.
	(init_sol_thread_ops): Initialize new target vectors.
	* inftarg.c (inftarg_set_find_memory_regions): New function.
	Allow to_find_memory_regions vector to be taken over.
	(inftarg_set_make_corefile_notes): New function.
	Allow to_make_corefile_notes vector to be taken over.
	* thread-db.c (thread_db_new_objfile): Don't activate thread-db
	interface layer if not target_has_execution (may be a corefile).
	* config/i386/linux.mh: Add gcore.o to NATDEPFILES.
	* config/sparc/sun4sol2.mh: Ditto.
	* config/alpha/alpha-linux.mh: Ditto.
	* config/arm/linux.mh: Ditto.
	* config/i386/x86-64linux.mh: Ditto.
	* config/ia64/linux.mh: Ditto.
	* config/m68k/linux.mh: Ditto.
	* config/mips/linux.mh: Ditto.
	* config/powerpc/linux.mh: Ditto.
	* config/sparc/linux.mh: Ditto.

2002-01-07  Michael Snyder  <msnyder@redhat.com>

	* arm-linux-nat.c: Remove references to regcache.c internal data
	(registers[] and register_valid[]).

2002-01-07  Michael Snyder  <msnyder@redhat.com>

	* linux-proc.c: New file.  Implement child_pid_to_exec_file,
	so that attaching to a pid will automatically read the process's
	symbol file and shlibs.
	* Makefile.in: Add rule for linux-proc.o.
	* config/nm-linux.h: Define CHILD_PID_TO_EXEC_FILE.
	* config/alpha/alpha-linux.mh: Add linux-proc.o to NATDEPFILES.
	* config/arm/linux.mh: Ditto.
	* config/i386/linux.mh: Ditto.
	* config/i386/x86-64linux.mh: Ditto.
	* config/ia64/linux.mh: Ditto.
	* config/m68k/linux.mh: Ditto.
	* config/mips/linux.mh: Ditto.
	* config/powerpc/linux.mh: Ditto.
	* config/sparc/linux.mh: Ditto.

2002-01-06  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c: Add i386-tdep.h dependency.

2002-01-07  Michael Snyder  <msnyder@redhat.com>

	* solib.c (info_sharedlibrary_command): Use TARGET_PTR_BIT
	instead of bfd_get_arch_size.  Don't bail out just because
	there's no exec_bfd.

	* cp-valprint.c (cp_print_value): FIXME comment, alloca size.
	* p-valprint.c (pascal_object_print_value): Ditto.
	* somread.c (som_symtab_read): Ditto.
	* symfile.c (simple_free_overlay_region_table): Ditto.
	* valops.c (value_assign): Ditto.

	* tracepoint.c (tracepoint_save_command): From Klee Dienes --
	use tilde_expand and strerror for opening save-tracepoints file.

	* thread-db.c (thread_db_new_objfile): Indendation fix.

	* infptrace.c (GDB_MAX_ALLOCA): New define.
	(child_xfer_memory): Use xmalloc/xfree instead of alloca if the
	size of the buffer exceeds GDB_MAX_ALLOCA (default 1 megabyte,
	can be overridden with whatever value is appropriate to the host).
	* infttrace.c (child_xfer_memory): Add FIXME warning about use of
	alloca to allocate potentially large buffer.
	* rs6000-nat.c (child_xfer_memory): Ditto.
	* symm-nat.c (child_xfer_memory): Ditto.
	* x86-64-linux-nat.c (child_xfer_memory): Ditto.

2002-01-07  Jackie Smith Cashion  <jsmith@redhat.com>

	From Nick Clifton  <nickc@redhat.com>
	* d10v-tdep.c: Set STACK_START to 0x200bffe.

2002-01-07  Michael Snyder  <msnyder@redhat.com>

	* solib-legacy.c (legacy_svr4_fetch_link_map_offsets):
	Don't use exec_bfd if it's NULL.

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

	* valops.c (value_arg_coerce): Fix formatting.

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

	* hp-psymtab-read.c: Include "gdb_string.h" instead of <string.h>.
	* gnu-nat.c: Ditto.

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

	* MAINTAINERS: Note that alpha-dec-osf4.0a, arc-elf, arm-coff,
	arm-elf, arm-pe, d30v-elf, fr30-elf, h8300hms, h8500hms,
	i960-coff, m32r-elf, m68k-elf, m88k, mcore-elf, mn10200-elf,
	ns32k-netbsd, hppa1.1-hp-proelf, v850-elf, vax-dec-vms5.5 and
	z8k-coff have not been multi-arched.  Update z8k-coff build
	status.

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

	* MAINTAINERS: Mark a29k target as obsolete.
	* Makefile.in (a29k-tdep.o, remote-adapt.o, remote-eb.o)
	(remote-mm.o, remote-udi.o): Obsolete.  Remove references in
	comments.
	* NEWS: Note that a29k targets are obsolete.
	* a29k-tdep.c: Mark as obsolete.
	* configure.tgt: Mark a29k-*-aout*, a29k-*-coff*, a29k-*-elf*,
	a29k-*-ebmon*, a29k-*-kern*, a29k-*-none*, a29k-*-udi* and
	a29k-*-vxworks* targets as obsolete.
	* remote-adapt.c: Obsolete.
	* remote-eb.c: Obsolete.
	* remote-mm.c: Obsolete.
	* remote-udi.c: Obsolete.
	* config/a29k/a29k-udi.mt: Obsolete.
	* config/a29k/a29k.mt: Obsolete.
	* config/a29k/tm-a29k.h: Obsolete.
	* config/a29k/tm-vx29k.h: Obsolete.
	* config/a29k/vx29k.mt: Obsolete.

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

	* rs6000-tdep.c (rs6000_do_registers_info): Replace BIG_ENDIAN
	with BFD_ENDIAN_BIG.

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

	* configure.in (AC_CHECK_HEADERS): Do not check for <endian.h>.
	* configure, config.in: Re-generate.
	* config/vax/xm-vaxbsd.h: Do not include <machine/endian.h>.
	* defs.h: Do not include <endian.h>.

2002-01-05  Jason Thorpe  <thorpej@wasabisystems.com>

	* acconfig.h (HAVE_PT_GETXMMREGS): New.
	* config.in: Regenerate.
	* configure.in: Update copyright years.
	Add test for PT_GETXMMREGS supplied by <sys/ptrace.h>.
	* configure: Regenerate.
	* i386bsd-nat.c: Update copyright years.
	(fill_gregset): Use regcache_collect.
	(fetch_inferior_registers): Only fetch integer registers
	if requested to do so.  Add support for XMM registers
	using PT_GETXMMREGS.
	(store_inferior_registers): Only store integer registers
	if requested to do so.  Add support for XMM registers
	using PT_SETXMMREGS.
	* i386nbsd-nat.c (fetch_inferior_registers): Remove.
	(store_inferior_registers): Remove.
	(fetch_core_registers): Use supply_gregset and i387_supply_fsave.
	(fetch_elfcore_registers): New function.
	(i386nbsd_elfcore_fns): New.
	(_initialize_i386nbsd_nat): Register i386nbsd_elfcore_fns.
	* config/i386/nbsd.mh (NATDEPFILES): Add i387-nat.o and
	i386bsd-nat.o.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/i386/nbsd.mt (TDEPFILES): Add i386bsd-nat.o.
	* config/i386/nbsdelf.mt (TDEPFILES): Likewise.
	* config/i386/tm-nbsd.h: Update copyright years.
	(HAVE_SSE_REGS): Define.
	(IN_SIGTRAMP): Define as i386bsd_in_sigtramp.
	(SIGTRAMP_START): Redefine as i386bsd_sigtramp_start.
	(SIGTRAMP_END): Redefine as i386bsd_sigtramp_end.
	(SIGCONTEXT_PC_OFFSET): Remove.
	(FRAME_SAVED_PC): Define as i386bsd_frame_saved_pc.

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

	* configure.tgt: Remove powerpc-*-macos* target.
	* config/m68k/xm-mpw.h: Delete file.
	* config/xm-mpw.h: Delete file.
	* ser-mac.c: Delete file.
	* mpw-make.sed: Delete file.
	* mpw-config.in: Delete file.
	* mac-xdep.c: Delete file.
	* mac-gdb.r: Delete file.
	* mac-defs.h: Delete file.
	* mac-nat.c: Delete file.
	* config/powerpc/macos.mh: Delete file.
	* config/powerpc/macos.mt: Delete file.
	* config/powerpc/nm-macos.h: Delete file.
	* config/powerpc/tm-macos.h: Delete file.
	* source.c (openp, open_source_file): Remove obsolete code.
	* top.c	(gdb_readline): Ditto.
	* utils.c (query): Ditto.
	* event-top.c (display_gdb_prompt): Ditto.
	* Makefile.in (ser-mac.o): Delete obsolete target.
	* NEWS: Update.

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

	* defs.h (BIG_ENDIAN): Delete macro definition.
	* a29k-tdep.c, arch-utils.c, arm-tdep.c, ax-gdb.c, ch-exp.c,
	coffread.c, cris-tdep.c, d10v-tdep.c, d30v-tdep.c, defs.h,
	findvar.c, infcmd.c, mem-break.c, mips-tdep.c, mn10300-tdep.c,
	printcmd.c, remote-os9k.c, remote-rdi.c, remote-rdp.c,
	remote-sim.c, remote.c, rs6000-tdep.c, sh-tdep.c, sparcl-tdep.c,
	stabsread.c, valops.c, valprint.c, config/a29k/tm-a29k.h,
	config/a29k/tm-vx29k.h, config/arm/tm-arm.h,
	config/d30v/tm-d30v.h, config/fr30/tm-fr30.h,
	config/h8300/tm-h8300.h, config/h8500/tm-h8500.h,
	config/m32r/tm-m32r.h, config/m68k/tm-m68k.h,
	config/m88k/tm-m88k.h, config/mips/tm-mips.h, config/pa/tm-hppa.h,
	config/sparc/tm-sparc.h, config/z8k/tm-z8k.h, mi/mi-cmd-disas.c,
	mi/mi-main.c: Replace BIG_ENDIAN with BFD_ENDIAN_BIG.
	* gdbarch.sh: Replace BIG_ENDIAN with BFD_ENDIAN_BIG.
	* gdbarch.c: Re-generate.

2002-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* thread-db.c (thread_db_new_objfile): Do not enable thread_db
	for core files.

2002-01-04  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/arm/nbsd.mh (XDEPFILES): Remove ser-tcp.o.

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

	* value.h (value_ptr): Delete typedef.

2002-01-04  Jason Thorpe  <thorpej@wasabisystems.com>

	* i386nbsd-nat.c: Update copyright years.
	Include i386-tdep.h.

2002-01-04  Elena Zannoni  <ezannoni@redhat.com>

	* stabsread.c: Update copyright years.

	From Debashis Mahata <debashis.mahata@wipro.com>:
	(read_struct_fields): Deal with Sun C compiler erroneous stab
	output for structs and unions.
        Fix PR gdb/269.

2002-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* p-valprint.c: Include "cp-abi.h" for baseclass_offset
	prototype.

2002-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* cp-abi.c: Fix whitespace.
	(baseclass_offset): New wrapper function.
	* cp-abi.h (baseclass_offset): Add prototype.
	(struct cp_abi_ops): Add baseclass_offset pointer.

	* valops.c (vb_match): Move to...
	* gnu-v2-abi.c (vb_match): here.
	* valops.c (baseclass_offset): Move to...
	* gnu-v2-abi.c (gnuv2_baseclass_offset): here, and rename.

	* gnu-v3-abi.c (gnuv3_baseclass_offset): New function.

	* gnu-v2-abi.c (init_gnuv2_ops): Initialize baseclass_offset.
	* gnu-v3-abi.c (init_gnuv3_ops): Likewise.
	* hpacc-abi.c (init_hpacc_ops): Likewise.

2002-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* valops.c (find_overload_match): Accept obj as a
	reference parameter.  Update it before returning.
	* value.h (find_overload_match): Update prototype.
	* eval.c (evaluate_subexp_standard): Pass object to
	find_overload_match by reference.

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

	* valarith.c: Replace value_ptr with struct value pointer.  Remove
	register attribute from value declarations.
	* valops.c: Ditto.
	* value.h: Ditto.
	* scm-lang.c (scm_lookup_name): Ditto.

2002-01-03  Michael Snyder  <msnyder@redhat.com>

	Abstract the functionality of iterating over mapped memory
	regions into a general purpose iterator function.
	* procfs.c (iterate_over_mappings): New function, general purpose
	iterator for memory sections.
	(proc_iterate_over_mappings): Reimplement using iterate_over_mappings.
	(solib_mappings_callback): New function, callback for above.
	(info_proc_mappings): Reimpliment using iterate_over_mappings.
	(info_mappings_callback): New function, callback for above.

	* procfs.c (proc_set_watchpoint): Add cast to suppress warning.

2002-01-01  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.h (struct gdbarch_tdep): Add `os_ident' member.
	* i386-tdep.c: Include "elf-bfd.h".
	(process_note_abi_tag_sections): New function.
	(i386_gdbarch_init): Add code to recognize various OS/ABI
	combinations.

	* maint.c (_initialize_maint_cmds): Add missing \ in
	string-literal.

For older changes see ChangeLog-2001

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
