2004-07-29  Andrew Cagney  <cagney@gnu.org>

	* version.in: Bump to version 6.2.

2004-07-29  Andrew Cagney  <cagney@gnu.org>

	* PROBLEMS (mips-irix): Note that it is broken.

2004-07-28  Andrew Cagney  <cagney@gnu.org>

	* version.in: Bump to version 6.1.92.

2004-07-28  Andrew Cagney  <cagney@gnu.org>

	* PROBLEMS: Mention threads/1650.
	* NEWS: Mention the NPTL fix.

2004-07-26  Andrew Cagney  <cagney@gnu.org>

	* gdb-mi.el: Move from here ...
	* mi/gdb-mi.el: ... to here.

2004-07-26  Andrew Cagney  <cagney@gnu.org>

	* MAINTAINERS: Mark the xstormy16, sh64, ns32k, mn10300, mcore,
	and h8300 as broken.
	* NEWS: END-OF-LIFE frame compatibility module.
	* PROBLEMS: For "Stack backtraces", remove powerpc, hppa and mips
	specific comments.

2004-07-21  Andrew Cagney  <cagney@gnu.org>

	* PROBLEMS: Mention breakpoints/1702.
	* NEWS: For signal trampolines, cite s390 GNU/Linux as a system
	that is known to work.

2004-07-18  Andrew Cagney  <cagney@gnu.org>

	* version.in: Bump to version 6.1.91.

2004-07-17  Andrew Cagney  <cagney@gnu.org>

	* README: Update to 6.2.

	* utils.c (xvasprintf): Call xstrvprintf.

	* parse.c: Update copyright.
	(null_post_parser): Eliminate ARGSUSED.

	* ppc-linux-nat.c (store_spe_registers): Eliminate K&R C.
	* tui/tui-win.c (tui_get_cmd_list): Ditto.
	* symfile-mem.c (_initialize_symfile_mem): Ditto.

	* ppc-linux-tdep.c (ppc_linux_init_abi): Add [sic] to Linux.
	* ppc-linux-nat.c: Use "Linux kernel".
	* hppa-linux-tdep.c: Use GNU/Linux.
	* hppa-linux-nat.c: Use GNU/Linux.
	* dwarfread.c: Add [sic] to use of Linux.

	* hppa-linux-nat.c: Do not include <string.h>.
	(supply_fpregset): Remove "register" attribute.

	* solib-frv.c (fetch_loadmap): Use xfree, not free.

2004-07-17  Mark Kettenis  <kettenis@gnu.org>

	* configure.in: Define _MSE_INT_H on Solaris 9 too.
	* configure, config.in: Regenerated.

2004-07-16  Andrew Cagney  <cagney@gnu.org>

	* defs.h (event_loop_p): Replace variable declaration with macro,
	always 1.
	* main.c (captured_main): Delete options "-async" and "-noasync".
	(event_loop_p): Delete variable.
	* NEWS: Mention that "-async" and "-noasync" were removed.

2004-07-16  Andrew Cagney  <cagney@gnu.org>

	* infrun.c (insert_step_resume_breakpoint): Delete gdb_assert
	calls, no longer applicable.  Update comments and rename parameter
	"step_frame" to "return_frame".

2004-07-16  Andrew Cagney  <cagney@gnu.org>

	* frame.c (fprint_field): New function.
	(fprint_frame_id): Use fprint_field.

2004-07-10  Mark Kettenis  <kettenis@gnu.org>

	* NEWS: Mention BSD libkvm interface.

2004-07-10  Andrew Cagney  <cagney@gnu.org>

	GDB 6.2 branch created.
	* version.in: Bump to version 6.1.90_0000-00-00-cvs.

2004-07-09  Paul N. Hilfinger  <Hilfinger@gnat.com>

	Remove ARI problems:
	
	* ada-exp.y (write_var_from_sym): Reformat to put operator at
	beginning of line.

	* ada-lang.c (MAX_OF_SIZE): Rename max_of_size.
	Add comment.
	Add comment concerning MAX_OF_TYPE and MIN_OF_TYPE.
	(MIN_OF_SIZE): Rename min_of_size.  Add comment.
	(UMAX_OF_SIZE): Renmae umax_of_size.  Add comment.
	(UMIN_OF_SIZE): Remove.
	(max_of_type): New function to replace orphan macro in gdbtypes.h
	(min_of_type): Ditto.
	(discrete_type_high_bound): Use max_of_type.
	(discrete_type_low_bound): Use min_of_type.
	(possible_user_operator_p): Move operator to beginning of line.
	(ada_is_variant_part): Ditto.
	(ensure_lval): Rewrite to avoid deprecated operations.
	(ada_finish_decode_line_1): Use gdbarch_convert_from_func_ptr_addr
	rather than adding DEPRECATED_FUNCTION_START_OFFSET.
	(ada_enum_name): Remove assignments in 'if' statements.
	(build_ada_types): Add gdbarch parameter.
	(_initialize_ada_language): Replace deprecated_register_gdbarch_swap
	with gdbarch_data_register_post_init.
	Use add_setshow_uinteger_cmd rather than add_set_cmd and 
	add_show_from_set.

	* ada-valprint.c (inspect_it): Remove declaration.
	(repeat_count_threshold): Remove declaration.
	(ada_print_floating): Remove assignments in 'if' statements.
	(print_str): Move operator to beginning of line.
	
2004-07-08  Jim Blandy  <jimb@redhat.com>

	* rs6000-tdep.c (registers_powerpc_nofp): Unused; deleted.

2004-07-08  Bob Rossi  <bob@brasko.net>

	* symtab.c (lookup_symtab): check return value of symtab_to_fullname

2004-07-06  Jeff Johnston <jjohnstn@redhat.com>

	* language.h (struct_language_defn): Add new function pointer:
	la_class_name_from_physname.  Also add new prototype for
	language_class_name_from_physname.
	* language.c (language_class_name_from_physname): New function.
	(unk_lang_class_name): Ditto.
	(unknown_language_defn, auto_language_defn): Change
	to add unk_lang_class_name function pointer for
	la_class_name_from_physname.
	(local_language_defn): Ditto.
	* dwarf2read.c (guess_structure_name): Change to call
	language_class_name_from_physname.
	(determine_class_name): Ditto.
	* cp-support.c (class_name_from_physname): Renamed.
	(cp_class_name_from_physname): New name of function.
	* cp-support.h: Ditto.
	* c-lang.c (c_language_defn): Change to add NULL
	for class_name_from_physname function pointer.
	(cplus_language_defn): Change to add cp_class_name_from_physname.
	* jv-lang.c (java_class_name_physname): New function.
	(java_find_last_component): New static routine.
	(java_language_defn): Add java_class_name_from_physname pointer.
	* ada-lang.c (ada_language_defn): Change to add NULL
	for class_name_from_physname function pointer.
	* f-lang.c (f_language_defn): Ditto.
	* m2-lang.c (m2_language_defn): Ditto.
	* objc-lang.c (objc_language_defn): Ditto.
	* p-lang.c (pascal_language_defn): Ditto.
	* scm-lang.c (scm_language_defn): Ditto. 

2004-07-06  Andrew Cagney  <cagney@gnu.org>

	Patch from Bart Robinson.
	* corelow.c (core_open): Add variable "flags", or in O_LARGEFILE.
	(O_LARGEFILE): Define to 0, if not defined.

2004-07-03  Mark Kettenis  <kettenis@gnu.org>

	* m68kbsd-nat.c: Include "gdbcore.h", <sys/types.h>,
	<machine/pcb.h> and "bsd-kvm.h".
	(PCB_REGS_FP, PCB_REGS_SP): Define if not already defined.
	(m68kbsd_supply_pcb): New function.
	(_initialize_m68kbsd_nat): New prototype and function.
	* Makefile.in (m68kbsd-nat.o): Update dependencies.
	* config/m68k/nbsdelf.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.
	* config/m68k/obsd.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.

	* bsd-kvm.c (bsd_kvm_cmdlist): Remove unecessary initialization.

2004-07-03  Mark Kettenis  <kettenis@gnu.org>

	* bsd-kvm.c: Include "cli/cli-cmds.h", "command.h", "value.h" and
	<sys/proc.h>.
	(bsd_kvm_cmdlist): New variable.
	(bsd_kvm_cmd, bsd_kvm_proc_cmd, bsd_kvm_pcb_cmd): New functions.
	(bsd_kvm_add_target): Register "kvm" command prefix, "kvm pcb"
	command and "kvm proc" command.
	* Makefile.in (bsd-kvm.o): Update dependencies.

2004-07-02  Mark Kettenis  <kettenis@gnu.org>

	* osabi.c: Update copyright year.
	(generic_elf_osabi_sniffer): Tweak comment.  Look for OS-specific
	notes if EI_OSABI is set to ELFOSABI_HPUX.

2004-07-01  Michael Snyder  <msnyder@redhat.com>

	* win32-nat.c (core_dll_symbols_add): Re-indent a small section
	that seems to have gotten whacked out of line.

2004-07-01  Mark Kettenis  <kettenis@gnu.org>

	* dbxread.c (process_one_symbol) [PCC_SOL_BROKEN]: Remove dead
	code.

2004-07-01  Paul N. Hilfinger  <Hilfinger@gnat.com>

	* ada-lang.c (decode_packed_array): Minor change to comment.
	(ada_value_slice_ptr): New function. 
	(ada_value_slice): New function. 
	(ada_evaluate_subexp): Remove XVS-suffix code from subscripting
	test.  Don't know why it is there.
	Change slice code to use ada_value_slice_ptr and ada_value_slice, and
	to avoid dereferencing huge arrays from which one is slicing.  
	(empty_array): Correct to return an array rather than
	a subrange value.
	* ada-valprint.c (print_optional_low_bound): Don't print lower bound
	on empty arrays (let'em use 'FIRST instead).

2004-07-01  Paul N. Hilfinger  <Hilfinger@gnat.com>

	Address complaints from gdb_ari.sh:
	
	* ada-exp.y: Include gdb_string.h rather than string.h.
	(convert_char_literal): Reformat declaration.
	* ada-lang.h: Include opaque struct declaration for struct frame_info.
	* ada-lex.l: Change use of free to xfree (the macro would do so
	anyway, but this is harmless).
	Include gdb_string.h rather than string.h.
	* ada-valprint.c (ada_val_print_stub): Change PTR => void*.
	
	* ada-lang.c (parse): Remove K&Rism in parameter list.
	(is_name_suffix): Correct Linux => GNU/Linux in comment.
	
2004-06-30  Mark Kettenis  <kettenis@gnu.org>

	* dbxread.c (process_one_symbol) [SUN_FIXED_LBRAC_BUG]: Remove
	dead code.

2004-06-30  Mark Kettenis  <kettenis@gnu.org>

	* alphabsd-nat.c: Update copyright year.
	(getregs_supplies): Use ALPHA_PC_REGNUM instead of PC_REGNUM.

2004-06-29  Joel Brobecker  <brobecker@gnat.com>

	* i386-cygwin-tdep.c (i386_cygwin_skip_trampoline_code): New function.
	(i386_cygwin_in_solib_call_trampoline): New function.
	(i386_cygwin_init_abi): Initialize the in_solib_call_trampoline
	and skip_trampoline_code gdbarch methods.

2004-06-29  Jim Blandy  <jimb@redhat.com>

	* Makefile.in (gdb_callback_h): Renamed from callback_h to the
	name actually used in the dependency lists.

2004-06-29  Randolph Chung  <tausq@debian.org>

	* NEWS (New native configurations): Mention GNU/Linux/hppa.

2004-06-29  Corinna Vinschen  <vinschen@redhat.com>

	* win32-nat.c (child_pid_to_exec_file): New function.
	(init_child_ops): Add child_pid_to_exec_file as to_pid_to_exec_file
	functionality.

2004-06-28  Andrew Cagney  <cagney@gnu.org>

	* defs.h (xstrvprintf): Declare.
	* utils.c (xstrvprintf): New function.
	(internal_vproblem, xstrprintf, xasprintf) 
	(vfprintf_maybe_filtered, vfprintf_unfiltered): Use xstrvprintf.
	* serial.c (serial_printf): Ditto.
	* complaints.c (vcomplaint): Ditto.

2004-06-29  Corinna Vinschen  <vinschen@redhat.com>

	* infcmd.c (attach_command): Move call to target_terminal_inferior
	behind loading symbol table.

2004-06-28  Andrew Cagney  <cagney@gnu.org>

	* rdi-share/ardi.c (angel_RDI_ExecuteOrStep): Revert 2004-06-24
	change - add back extern deprecated_ui_loop_hook declaration.

2004-06-28  Andrew Cagney  <cagney@gnu.org>

	* xcoffsolib.c (xcoff_solib_address): Replace xasprintf with
	xstrprintf.
	* varobj.c (varobj_gen_name, create_child, c_name_of_child)
	(c_value_of_variable): Ditto.
	* utils.c (internal_vproblem): Ditto.
	* solib-aix5.c (build_so_list_from_mapfile): Ditto.
	* remote.c (add_packet_config_cmd): Ditto.
	* remote-rdp.c (rdp_set_command_line): Ditto.
	* regcache.c (regcache_dump): Ditto.
	* frv-tdep.c (new_variant, new_variant): Ditto.
	* fbsd-proc.c (child_pid_to_exec_file): Ditto.
	(fbsd_find_memory_regions): Ditto.
	* breakpoint.c (create_thread_event_breakpoint) 
	(create_breakpoints): Ditto.
	* aix-thread.c (aix_thread_pid_to_str): Ditto.
	* ada-lang.c (is_package_name): Ditto.  Also delete xmalloc call.

2004-06-28  Joel Brobecker  <brobecker@gnat.com>

	* ada-lang.c: Re-indent file, with some massaging to help indent
	a bit when the result is otherwise really too ugly.

2004-06-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* frame.h (struct frame_id): Change bit field type of stack_addr_p, 
	code_addr_p and special_addr_p to 'unsigned int'.

2004-06-27  Mark Kettenis  <kettenis@gnu.org>

	* i386v4-nat.c: Update copyright year and tweak comment.
	(regmap): Remove trailing comma.
	(supply_gregset): Rename local variable i to regnum.  Call
	regcache_raw_supply instead of supply_register.
	(fill_gregset): Rename argument regno to regnum.  Call
	regcache_raw_collect instead of regcache_collect.

2004-06-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* frame.h (struct frame_id): New fields stack_addr_p, code_addr_p
	and special_addr_p.
	(frame_id_build, frame_id_build_special): Update comments.
	(frame_id_build_wild): New prototype.
	* frame.c (frame_id_build, frame_id_build_special): Fill in new
	struct frame_id fields.
	(frame_id_build_wild): New function.
	(frame_id_eq, frame_id_inner): Use new struct frame_id fields.

2004-06-27  Mark Kettenis  <kettenis@gnu.org>

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

2004-06-27  Joel Brobecker  <brobecker@gnat.com>

	* ada-lang.c: Minor reformatting to conform to GNU coding standards.

2004-06-27  Joel Brobecker  <brobecker@gnat.com>

	* ada-lang.c: Re-indent file.

2004-06-27  Joel Brobecker  <brobecker@gnat.com>

	* ada-lang.c (symtab_symbol_info): Remove unused declaration.
	(no_symtab_msg): Likewise.

2004-06-27  Andreas Schwab  <schwab@suse.de>

	* source.c: Fix whitespace.

2004-06-27  Mark Kettenis  <kettenis@gnu.org>

	* configure.in: Include <sys/param.h> for td_pcb test.
	* configure: Regenerated.

	* i386nbsd-nat.c: New file.
	* Makefile.in (ALLDEPFILES): Add i386nbsd-nat.c, i386nbsd-tdep.c,
	i386obsd-nat.c and i386obsd-tdep.c.
	(i386nbsd-nat.o): New dependency.
	* config/i386/obsd.mh (NATDEPFILES): Add i386nbsd-nat.o and
	bsd-kvm.o.
	(LOADLIBES): New variable.
	* config/i386/nbsdelf.mh (NATDEPFILES): Add i386nbsd-nat.o and
	bsd-kvm.o.
	(LOADLIBES): New variable.

	* config/i386/fbsd64.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.

	* bsd-kvm.c (bsd_kvm_fetch_registers): Directly return after
	fetching from BSD_KVM_PADDR.  Correctly lookup address for
	"_thread0".

	* amd64fbsd-nat.c: Include <sys/types.h, <machine/pcb.h> and
	"bsd-kvm.h".
	(amd64fbsd_supply_pcb): New funcion.
	(_initialize_amd64fbsd_nat): Enable libkvm interface.

2004-06-27    <david@streamline-computing.com>

	Partial fix for PR cli/1056.
	* valarith.c: Check for zero in division and remainder 
	evaluation.

2004-06-27  Mark Kettenis  <kettenis@gnu.org>

	* i387-tdep.c: Remove excessive whitespace.

2004-06-26  Andrew Cagney  <cagney@gnu.org>

	* gdb-events.sh (deprecated_set_gdb_event_hooks): Deprecated.
	* gdb-events.h, gdb-events.c: Re-generate.
	* tui/tui-hooks.c (tui_install_hooks): Update.
	(tui_remove_hooks): Update.
	* mi/mi-cmd-break.c (mi_cmd_break_insert): Update.

2004-06-26  Mark Kettenis  <kettenis@gnu.org>

	* amd64fbsd-nat.c: Don't include <sys/procfs.h> and "gregset.h".
	(gregset_t, fpregset_t): Remove typedefs.
	(REG_OFFSET): Rename argument.
	(amd64bsd_r_reg_offset): Rename from reg_offset.
	(supply_gregset, fill_gregset, supply_fpregset, fill_fpregset):
	Remove functions.
	(_initialize_amd64fbsd_nat): Use amd64fbsd64_r_reg_offset instead
	of reg_offset.
	* Makefile.in (amd64fbsd-nat.o): Update dependencies.

	* amd64-nat.c (amd64_supply_native_gregset): Fix comment.

	* vax-tdep.c: Tweak comment.

	Add OpenBSD/hppa support.
	* NEWS (New native configurations): Mention OpenBSD/hppa.
	* hppabsd-nat.c, hppabsd-tdep.c, config/pa/obsd.mh,
	config/pa/obsd.mt, config/pa/nm-obsd.h, config/pa/tm-bsd.h: New
	files.
	* Makefile.in (ALLDEPFILES): Add hppabsd-nat.c and hppabsd-tdep.c.
	(hppabsd-nat.o, hppabsd-tdep.c): New dependencies.
	* configure.host: Add hppa*-*-openbsd*.
	* configure.tgt: Add hppa*-*-openbsd*.

2004-06-25  Andrew Cagney  <cagney@gnu.org>

	* defs.h (deprecated_ui_loop_hook): Deprecated.
	* wince.c (child_wait): Update.
	* win32-nat.c (child_wait): Update.
	* v850ice.c (v850ice_wait): Update.
	* top.c (deprecated_ui_loop_hook): Update.
	* serial.h: Update.
	* ser-unix.c (do_hardwire_readchar, do_hardwire_readchar) 
	(do_unix_readchar): Update.
	* ser-tcp.c (net_open): Update.
	* remote-sim.c (gdb_os_poll_quit): Update.
	* rdi-share/ardi.c (angel_RDI_ExecuteOrStep): Update.

2004-06-24  Andrew Cagney  <cagney@gnu.org>

	* defs.h (deprecated_pre_add_symbol_hook)
	(deprecated_post_add_symbol_hook): Deprecated.
	* symfile.c (symbol_file_add_with_addrs_or_offsets) 
	(symbol_file_add_with_addrs_or_offsets): Update references.

2004-06-24  Andrew Cagney  <cagney@gnu.org>

	* defs.h (post_add_symbol_hook, pre_add_symbol_hook)
	(ui_loop_hook, selected_frame_level_changed_hook): Declare.
	* wince.c (ui_loop_hook): Delete extern declaration.
	* win32-nat.c (ui_loop_hook): Delete extern declaration..
	* v850ice.c (ui_loop_hook): Delete extern declaration..
	* ser-unix.c (ui_loop_hook): Delete extern declaration..
	* ser-tcp.c (ui_loop_hook): Delete extern declaration..
	* remote-sim.c (ui_loop_hook): Delete extern declaration..
	* rdi-share/ardi.c (angel_RDI_ExecuteOrStep): Delete extern.
	ui_loop_hook declaration.

2004-06-24  Andrew Cagney  <cagney@gnu.org>

	* objfiles.h (struct entry_info): Delete entry_func_lowpc and
	entry_func_highpc fields.
	* objfiles.c (init_entry_point_info): Do not clear
	entry_func_lowpc and entry_func_highpc.
	(objfile_relocate): Do not relocate entry_func_lowpc and
	entry_func_highpc.
	* dwarfread.c (read_func_scope): Do not set entry_func_lowpc and
	entry_func_highpc.
	* dwarf2read.c (read_func_scope): Do not set entry_func_lowpc and
	entry_func_highpc.
	* blockframe.c (legacy_frame_chain_valid): Replace tests against
	entry_func_lowpc and entry_func_highpc with call to
	inside_entry_func.

2004-06-24  Mark Kettenis  <kettenis@gnu.org>

	* sparc64-tdep.c (sparc64_store_arguments): Fix passing
	quad-precision floating point arguments in registers.

2004-06-24  Mark Kettenis  <kettenis@gnu.org>

	From Michael Mueller <m.mueller99@kay-mueller.de>:
	* sparc64-tdep.c (sparc64_frame_base_address): Take BIAS into
	account.

2004-06-22  Jeff Johnston  <jjohnstn@redhat.com>

	* infrun.c (handle_inferior_event): Initialize stopped_by_watchpoint
	to -1.
	* breakpoint.c (bpstat_stop_status): Move check for ignoring
	untriggered watchpoints to a separate if clause.  Update function
	comment regarding STOPPED_BY_WATCHPOINT argument.

2004-06-22  Jim Blandy  <jimb@redhat.com>

	* gdbarch.sh: Doc fix.

2004-06-21  Martin Hunt  <hunt@redhat.com>
	Kevin Buettner <kevinb@redhat.com>

        * config/mips/tm-mips.h (SP_REGNUM): Delete define.
	* mips-tdep.h (MIPS_SP_REGNUM): Define.
	* mips-tdep.c (mips_gdbarch_init): Set SP_REGNUM via call
	to set_gdbarch_sp_regnum().  Use cooked register number.
        (SP_REGNUM): Replace all occurrences with MIPS_SP_REGNUM.

2004-06-21  Andrew Cagney  <cagney@gnu.org>

	* gdbarch.sh: When the macro field is empty, do not generate a
	macro definition.  When the macro field is "=", generate the macro
	name from the upper-case function name.
	(NUM_REGS, NUM_PSEUDO_REGS, SP_REGNUM, PC_REGNUM, PS_REGNUM)
	(FP0_REGNUM, STAB_REG_TO_REGNUM, ECOFF_REG_TO_REGNUM)
	(DWARF_REG_TO_REGNUM, SDB_REG_TO_REGNUM, DWARF2_REG_TO_REGNUM)
	(REGISTER_NAME, DEPRECATED_REGISTER_VIRTUAL_TYPE)
	(DEPRECATED_REGISTER_BYTES, DEPRECATED_REGISTER_BYTE)
	(DEPRECATED_REGISTER_RAW_SIZE, DEPRECATED_REGISTER_VIRTUAL_SIZE)
	(DEPRECATED_SAVE_DUMMY_FRAME_TOS, DEPRECATED_FP_REGNUM)
	(DEPRECATED_TARGET_READ_FP, DEPRECATED_PUSH_ARGUMENTS)
	(DEPRECATED_PUSH_RETURN_ADDRESS, DEPRECATED_DUMMY_WRITE_SP)
	(DEPRECATED_REGISTER_SIZE, CALL_DUMMY_LOCATION)
	(DEPRECATED_DO_REGISTERS_INFO, REGISTER_SIM_REGNO)
	(REGISTER_BYTES_OK, CANNOT_FETCH_REGISTER, CANNOT_STORE_REGISTER)
	(GET_LONGJMP_TARGET, DEPRECATED_INIT_FRAME_PC)
	(BELIEVE_PCC_PROMOTION, DEPRECATED_GET_SAVED_REGISTER)
	(CONVERT_REGISTER_P, REGISTER_TO_VALUE, VALUE_TO_REGISTER)
	(POINTER_TO_ADDRESS, ADDRESS_TO_POINTER, INTEGER_TO_ADDRESS)
	(DEPRECATED_POP_FRAME, DEPRECATED_STORE_STRUCT_RETURN)
	(EXTRACT_RETURN_VALUE, STORE_RETURN_VALUE)
	(DEPRECATED_EXTRACT_RETURN_VALUE, DEPRECATED_STORE_RETURN_VALUE)
	(DEPRECATED_USE_STRUCT_CONVENTION)
	(DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS)
	(DEPRECATED_FRAME_INIT_SAVED_REGS)
	(DEPRECATED_INIT_EXTRA_FRAME_INFO, SKIP_PROLOGUE, INNER_THAN)
	(BREAKPOINT_FROM_PC, MEMORY_INSERT_BREAKPOINT)
	(MEMORY_REMOVE_BREAKPOINT, DECR_PC_AFTER_BREAK)
	(DEPRECATED_FUNCTION_START_OFFSET, FRAME_ARGS_SKIP)
	(DEPRECATED_FRAMELESS_FUNCTION_INVOCATION, DEPRECATED_FRAME_CHAIN)
	(DEPRECATED_FRAME_CHAIN_VALID, DEPRECATED_FRAME_SAVED_PC)
	(DEPRECATED_FRAME_ARGS_ADDRESS, DEPRECATED_FRAME_LOCALS_ADDRESS)
	(DEPRECATED_SAVED_PC_AFTER_CALL, FRAME_NUM_ARGS)
	(DEPRECATED_STACK_ALIGN, DEPRECATED_REG_STRUCT_HAS_ADDR)
	(FRAME_RED_ZONE_SIZE, ADDR_BITS_REMOVE, SMASH_TEXT_ADDRESS)
	(SOFTWARE_SINGLE_STEP, SKIP_TRAMPOLINE_CODE)
	(IN_SOLIB_CALL_TRAMPOLINE, IN_SOLIB_RETURN_TRAMPOLINE)
	(ELF_MAKE_MSYMBOL_SPECIAL, COFF_MAKE_MSYMBOL_SPECIAL)
	(NAME_OF_MALLOC, CANNOT_STEP_BREAKPOINT)
	(HAVE_NONSTEPPABLE_WATCHPOINT, ADDRESS_CLASS_TYPE_FLAGS)
	(FETCH_POINTER_ARGUMENT): Replace the macro name with "=".

2004-06-21  Andrew Cagney  <cagney@gnu.org>

	* gdbarch.sh: For gdbarch_dump, print the "function" rather than
	macro name, and the function rather than macro value.  Only wrap
	macro print statements in #ifdef.  Move format logic to where it
	is needed.
	* gdbarch.c: Re-generate.
	
	* gdbarch.sh (read): Delete "print_p" and "description", add
	"garbage_at_eol".  Check for non-empty garbage at end-of-line.
	Delete references to print_p.
	(TARGET_ARCHITECTURE): Delete print predicate.
	* gdbarch.c: Re-generate.
	
	* gdbarch.sh: Check that multi-arch methods do not provide a
	macro.
	(register_type, unwind_dummy_id, push_dummy_call, push_dummy_code)
	(print_registers_info, print_float_info, print_vector_info)
	(adjust_breakpoint_address, remote_translate_xfer_address)
	(construct_inferior_arguments, skip_solib_resolver, unwind_pc)
	(address_class_type_flags_to_name, unwind_sp): Remove the macro
	name from the multi-arch definition.
	
2004-06-20  Andrew Cagney  <cagney@gnu.org>

	* gdbarch.sh: Sort by the function, instead of macro name.
	* gdbarch.c: Re-generate.
	
2004-06-20  Andrew Cagney  <cagney@gnu.org>

	* gdbarch.sh: Use the function, instead of macro name in
	errors and the log file.
	(return_value): Remove stray ":" in spec.

	* gdbarch.sh (RETURN_VALUE): Default to legacy_return_value.
	* gdbarch.h, gdbarch.c: Re-generate.
	* Makefile.in (arch-utils.o): Update dependencies.
	* values.c (using_struct_return): Move code calling
	USE_STRUCT_CONVENTION to legacy_return_value, simplify.
	* stack.c (return_command): Move code calling STORE_RETURN_VALUE
	to legacy_return_value, simplify.
	* infcmd.c (print_return_value): Move code calling
	DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS and EXTRACT_RETURN_VALUE
	to legacy_return_value, simplify.
	* infcall.c (call_function_by_hand): Move code calling
	EXTRACT_RETURN_VALUE to legacy_return_value, simplify.
	* arch-utils.c: Update copyright.  Include "gdbcore.h".
	(legacy_return_value): New function.
	* arch-utils.h: Update copyright.
	(legacy_return_value): Declare.
	
2004-06-20  Andrew Cagney  <cagney@gnu.org>

	* gdbarch.sh (DEPRECATED_USE_STRUCT_CONVENTION): Deprecated.
	* gdbarch.h, gdbarch.c: Re-generate.
	* values.c (using_struct_return): Update call.
	* mcore-tdep.c: Update comment.
	* infcall.c (call_function_by_hand): Update comment.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
	* arch-utils.h (always_use_struct_convention): Update.
	* v850-tdep.c (v850_gdbarch_init): Update.
	* sh64-tdep.c (sh64_gdbarch_init): Update.
	* sh-tdep.c (sh_gdbarch_init): Update.
	* rs6000-tdep.c (rs6000_gdbarch_init): Update.
	* mips-tdep.c (mips_gdbarch_init): Update.
	* mcore-tdep.c (mcore_gdbarch_init): Update.
	* m32r-tdep.c (m32r_gdbarch_init): Update.
	* ia64-tdep.c (ia64_gdbarch_init): Update.
	* h8300-tdep.c (h8300_gdbarch_init): Update.
	* frv-tdep.c (frv_gdbarch_init): Update.
	* cris-tdep.c (cris_gdbarch_init): Update.
	* arm-tdep.c (arm_gdbarch_init): Update.
	* alpha-tdep.c (alpha_gdbarch_init): Update.

2004-06-18  Michael Chastain  <mec.gnu@mindspring.com>

	* PROBLEMS: Add more specific information, and a work-around,
	for PR gdb/1458.

2004-06-18  Andrew Cagney  <cagney@gnu.org>

	* gdbarch.sh (DEPRECATED_FUNCTION_START_OFFSET): Deprecated.
	* gdbarch.h, gdbarch.c: Re-generate.
	* ada-lang.c (ada_finish_decode_line_1): Update.
	* infrun.c (handle_inferior_event): Update.
	* infcall.c (find_function_addr): Update.
	* linespec.c (minsym_found): Update.
	* symtab.c (find_function_start_sal, skip_prologue_using_sal):
	Update.
	* blockframe.c (legacy_frameless_look_for_prologue): Update.
	* cli/cli-cmds.c (disassemble_command): Update.
	* vax-tdep.c (vax_gdbarch_init): Update.

2004-06-18  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_collect_fpregset): Fix comment.

2004-06-17  Andrew Cagney  <cagney@gnu.org>

	GDB 6.1.1 released from the GDB 6.1 branch.
	* NEWS: Merge in 6.1.1 NEWS from 6.1 branch.
	* PROBLEMS: Ditto.

2004-06-16  Daniel Jacobowitz  <dan@debian.org>

	PR gdb/1658
	* dwarf2read.c (dwarf_decode_lines): Read the length of the extended
	operation as a uleb128.  Found by Michael Coulter.

2004-06-16  Paul N. Hilfinger  <Hilfinger@gnat.com>
	
	* ada-tasks.c: Rename build_task_list to ada_build_task_list, and
	make it non-static.
	* ada-lang.h (task_control_block): declaration moved from ada-task.c
	to ada-lang.h; this is needed to be able to implement the kill command
	in multi-task mode.
	(task_ptid): Ditto.
	(task_entry): Ditto.
	(task_list): Ditto.
	(ada_build_task_list): Ditto.
	
	* ada-lang.c: Conditionalize routines and data structures related 
	to breakpoints, exceptions, completion, and symbol caching on 
	GNAT_GDB, since these are not yet used in the submitted public sources.
	(ada_main_name): Editorial: Move definition out of exception-related 
	code.

2004-06-15  Andrew Cagney  <cagney@gnu.org>

	* mips-tdep.c (non_heuristic_proc_desc): Delete call to
	deprecated_pc_in_call_dummy.

2004-06-15  Alan Modra  <amodra@bigpond.net.au>

	* dsrec.c (load_srec, make_srec): Use bfd_get_section_size instead of
	bfd_get_section_size_before_reloc or _raw_size.
	* dwarf2-frame.c (dwarf2_build_frame_info): Likewise.
	* dwarf2read.c (dwarf2_locate_sections): Likewise.
	(dwarf2_read_section): Likewise.
	* elfread.c (elf_locate_sections): Likewise.
	* gcore.c (derive_heap_segment): Likewise.
	* mipsread.c (read_alphacoff_dynamic_symtab): Likewise.
	* remote-e7000.c (e7000_load): Likewise.
	* remote-m32r-sdi.c (m32r_load): Likewise.
	* remote-mips.c (mips_load_srec): Likewise.
	(pmon_load_fast): Likewise.
	* remote.c (compare_sections_command): Likewise.
	* symfile.c (add_section_size_callback): Likewise.
	(load_section_callback): Likewise.
	(pc_in_unmapped_range): Likewise.
	(pc_in_mapped_range): Likewise.
	(sections_overlap): Likewise.
	(list_overlays_command): Likewise.
	(simple_overlay_update_1): Likewise.
	(simple_overlay_update): Likewise.
	* tracepoint.c (remote_set_transparent_ranges): Likewise.
	* win32-nat.c (core_section_load_dll_symbols): Likewise.

2004-06-14  Randolph Chung  <tausq@debian.org>

	* Makefile.in (hppa-hpux-tdep.o): Update dependency.
	* hppa-hpux-tdep.c (hp_cxx_exception_support_initialized): Make 
	static.
	(hppa_hpux_inferior_created): New function.
	(hppa_hpux_init_abi): Register observer.
	* symfile.c (hp_cxx_exception_support_initialized)
	(RESET_HP_UX_GLOBALS): Remove HPUXHPPA specific hacks.
	(symbol_file_add_main_1, symbol_file_clear): Likewise.

2004-06-14  Randolph Chung  <tausq@debian.org>

	* MAINTAINERS (Write After Approval): Alphabetize my entry
	correctly.

2004-06-14  Andrew Cagney  <cagney@gnu.org>

	* MAINTAINERS (testsuite): List Michael Chastain as the lead
	testsuite maintainer.

2004-06-13  Andrew Cagney  <cagney@gnu.org>

	* infcmd.c (print_return_value): Fix logic, allow
	DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS when struct_return.

	* gdbarch.sh: For predicates, do not check GDB_MULTI_ARCH when
	defining any macros.
	* gdbarch.h: Re-generate.

	* gdbarch.sh: Delete "level" attribute.  Only check for a macro
	redefinition when multi-arch greater than GDB_MULTI_ARCH_PARTIAL.
	* gdbarch.h: Re-generate.

	* values.c (generic_use_struct_convention): Don't check gcc_p.

	* gdbarch.sh (DEPRECATED_MAX_REGISTER_RAW_SIZE)
	(DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE): Delete.
	* gdbarch.h, gdbarch.c: Regenerate.
	* ns32k-tdep.h (NS32K_MAX_REGISTER_RAW_SIZE) 
	(NS32K_MAX_REGISTER_VIRTUAL_SIZE): Delete macros.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set
	deprecated_max_register_raw_size and
	deprecated_max_register_virtual_size.
	* v850-tdep.c (v850_gdbarch_init): Ditto.
	* ns32k-tdep.c (ns32k_gdbarch_init): Ditto.
	* mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
	* mcore-tdep.c (mcore_gdbarch_init): Ditto.
	* cris-tdep.c (cris_gdbarch_init): Ditto.

	* gdbarch.sh (RETURN_VALUE_ON_STACK): Delete method.
	* gdbarch.h, gdbarch.c: Re-generate.
	* m68hc11-tdep.c (m68hc11_return_value_on_stack): Delete function.
	(m68hc11_use_struct_convention): Delete function.
	(m68hc11_extract_struct_value_address): Delete function.
	(m68hc11_return_value): New function.
	(m68hc11_gdbarch_init): Instead of store_return_value,
	extract_return_value, return_value_on_stack,
	deprecated_extract_struct_value_address and use_struct_convention,
	set return_value.
	* values.c (using_struct_return): Do not call
	RETURN_VALUE_ON_STACK.
	* arch-utils.h (generic_return_value_on_stack_not): Delete
	declaration.
	* arch-utils.c (generic_return_value_on_stack_not): Delete
	function.
	
2004-06-12  Andrew Cagney  <cagney@gnu.org>

	* values.c (register_value_being_returned): Delete function.
	* infcmd.c (legacy_return_value): Delete function.
	* infcall.c (call_function_by_hand): Inline
	"register_value_being_returned", simplify.
	* values.c (using_struct_return): Update comment, refer to
	print_return_value instead of register_value_being_returned.
	* infcmd.c (print_return_value): Inline calls to
	register_value_being_returned and legacy_return_value.  Simplify.

2004-06-11  Randolph Chung  <tausq@debian.org>

	* somread.c (som_symtab_read): Exclude gcc local symbols.

2004-06-11  Randolph Chung  <tausq@debian.org>

	* infrun.c (handle_inferior_event): Handle the case when a
	trampoline ends up in the runtime resolver, and if the trampoline
	has no name.  Rearrange the code so that all the trampoline
	processing happens before other step-out-of-range handling.

2004-06-11  Martin Hunt  <hunt@redhat.com>

	* mips-tdep.c (mips_gdbarch_init): Recognize vr4120
	has no fpu.

2004-06-10  Andrew Cagney  <cagney@gnu.org>

	* blockframe.c (legacy_inside_entry_func): Delete.
	(legacy_frame_chain_valid): Inline call to
	legacy_inside_entry_func, simplify.

2004-06-10  Bob Rossi  <bob@brasko.net>

	* dbxread.c (read_dbx_symtab): Set pst->dirname when known.
	* dwarf2read.c (partial_die_info): Add dirname field.
	(dwarf2_build_psymtabs_hard): Set pst->dirname when known.
	(read_partial_die): Save away DW_AT_comp_dir.
	* defs.h (symtab_to_filename): Removed.
	* source.c (find_and_open_source): Added.
	(open_source_file): Just calls find_and_open_source.
	(symtab_to_filename): Removed.
	(symtab_to_fullname, psymtab_to_fullname): Added.
	* source.h (psymtab_to_fullname,symtab_to_fullname): Added.
	* symtab.c (lookup_symtab): Call symtab_to_fullname instead of
	symtab_to_filename.
	* symtab.h (partial_symtab): Add dirname field.
	* mi/mi-cmd-file.c (FILENAME,FULLNAME): Added.
	(mi_cmd_file_list_exec_source_file): Call new function
	symtab_to_fullname to find fullname.
	(mi_cmd_file_list_exec_source_files): Added.
	* mi/mi-cmds.c (mi_cmd_mi_cmds): Add -file-list-exec-source-files.
	* mi/mi-cmds.h (mi_cmd_file_list_exec_source_files): Added.

2004-06-10  Andrew Cagney  <cagney@gnu.org>

	* avr-tdep.c (avr_gdbarch_init): Do not set use_struct_convention
	to generic_use_struct_convention, the default value.

	* mn10300-tdep.c (mn10300_type_align): Call internal_error instead
	of abort.

	* ns32k-tdep.c (ns32k_push_arguments): New function.
	(ns32k_gdbarch_init): Set deprecated_push_arguments.
	* infcall.c (call_function_by_hand): Call error instead of
	legacy_push_arguments.
	* value.h (legacy_push_arguments): Delete declaration.
	* valops.c (legacy_push_arguments): Delete function.
	(value_push): Delete function.

2004-06-10  Brian Ford  <ford@vss.fsi.com>

	* coffread.c (coff_symfile_read): Prevent mixed debugging formats
	from corrupting/reinitializing the psymtab.  Support DWARF 2 frame
	info.
	* dbxread.c (elfstab_build_psymtabs): Remove bogus comment.

2004-06-10  Andrew Cagney  <cagney@gnu.org>

	* gdbarch.sh (DEPRECATED_PC_IN_CALL_DUMMY): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* frame.h (deprecated_pc_in_call_dummy): Delete "sp" and "fp"
	parameters.
	* dummy-frame.c (deprecated_pc_in_call_dummy): Update.
	* arm-tdep.c (arm_pc_is_thumb_dummy): Call
	deprecated_pc_in_call_dummy instead of
	DEPRECATED_PC_IN_CALL_DUMMY.
	(arm_skip_prologue): Ditto.
	* xstormy16-tdep.c (xstormy16_pop_frame, xstormy16_scan_prologue)
	(xstormy16_frame_saved_pc, xstormy16_frame_chain): Ditto.
	* v850-tdep.c (v850_find_callers_reg, v850_frame_chain)
	(v850_pop_frame, v850_frame_saved_pc, v850_frame_init_saved_regs):
	Ditto.
	* sh64-tdep.c (sh64_frame_chain, sh64_get_saved_pr) 
	(sh64_init_extra_frame_info, sh64_get_saved_register) 
	(sh64_pop_frame): Ditto.
	* mips-tdep.c (non_heuristic_proc_desc): Ditto.
	* mcore-tdep.c (mcore_find_callers_reg, mcore_frame_saved_pc) 
	(mcore_pop_frame, mcore_init_extra_frame_info): Ditto.
	* h8300-tdep.c (h8300_frame_chain, h8300_frame_saved_pc) 
	(h8300_pop_frame): Ditto.
	* blockframe.c (legacy_inside_entry_func) 
	(legacy_frame_chain_valid): Ditto.
	* frame.c (frame_type_from_pc, legacy_get_prev_frame): Update call
	to deprecated_pc_in_call_dummy.
	
2004-06-09  Andrew Cagney  <cagney@gnu.org>

	* gdbarch.sh (REGISTER_TO_VALUE, VALUE_TO_REGISTER): Do not
	provide a default value.
	(CONVERT_REGISTER_P): Default to generic_convert_register_p.
	* gdbarch.h, gdbarch.c: Re-generate.
	* arch-utils.c (generic_convert_register_p): Rename
	legacy_convert_register_p
	(legacy_register_to_value, legacy_value_to_register): Delete
	functions.
	* arch-utils.h (generic_convert_register_p): Rename
	legacy_convert_register_p.
	(legacy_register_to_value, legacy_value_to_register): Delete
	declarations.

	* gdbarch.sh (DEPRECATED_REGISTER_CONVERT_TO_RAW)
	(DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL)
	(DEPRECATED_REGISTER_CONVERTIBLE): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* infcmd.c (default_print_registers_info): Simplify.
	* findvar.c (value_of_register): Simplify.
	* mi/mi-main.c (get_register): Simplify.
	* arch-utils.c (legacy_convert_register_p): Always return 0.
	(legacy_register_to_value, legacy_value_to_register): Always call
	internal_error.

	* infptrace.c (child_xfer_memory) [CLEAR_INSN_CACHE]: Delete
	#ifdef CLEAR_INSN_CACHE code.
	* target.c (generic_mourn_inferior) [CLEAR_DEFERRED_STORES]:
	Delete #ifdef CLEAR_DEFERRED_STORES code.

	* solib-svr4.c [HANDLE_SVR4_EXEC_EMULATORS]: Delete #ifdef code.

	* config/ia64/tm-linux.h (TARGET_ELF64): Delete macro, Update
	copyright.
	* config/ia64/tm-aix.h (TARGET_ELF64): Ditto.

	* config/mips/mipsv4.mh: Delete file.

	* config/pa/tm-hppa64.h (HPREAD_ADJUST_STACK_ADDRESS): Delete
	unreferenced macro.
	(hpread_adjust_stack_address): Delete declaration.

2004-06-08  Andrew Cagney  <cagney@gnu.org>

	* infptrace.c [ATTACH_DETACH]: Remove #ifdef wrappers.
	(attach, detach): When neither PT_ATTACH / PT_DETACH nor
	PTRACE_ATTACH / PTRACE_DETACH available call error.
	(PT_ATTACH, PT_DETACH): Move definition to attach / detach.
	* infttrace.c (update_thread_state_after_attach, attach, detach):
	Remove #ifdef wrappers.
	* inftarg.c (child_attach, child_detach): Remove #ifdef wrappers.
	* gnu-nat.c [ATTACH_DETACH]: Remove #ifdef wrappers.
	* config/nm-bsd.h (ATTACH_DETACH): Delete.
	* config/nm-sysv4.h (ATTACH_DETACH): Delete.
	* config/nm-nbsd.h (ATTACH_DETACH): Delete.
	* config/nm-linux.h (ATTACH_DETACH): Delete.
	* config/rs6000/nm-rs6000.h (ATTACH_DETACH): Delete.
	* config/pa/nm-hppah.h (ATTACH_DETACH): Delete.
	* config/i386/nm-i386sco5.h (ATTACH_DETACH): Delete.
	* config/i386/nm-i386sco4.h (ATTACH_DETACH): Delete.
	* config/i386/nm-i386gnu.h (ATTACH_DETACH): Delete.

2004-06-08  Corinna Vinschen  <vinschen@redhat.com>

	* configure.in: Set $configdir to the right OS specific value.
	Use value when setting $tcldir and $tkdir.
	* configure: Regenerate.

2004-06-06  Paul Brook  <paul@codesourcery.com>

	* gdb/dwarf2-frame.c (decode_frame_entry_1): Decode version 3 CIE
	records.

2004-06-08  Paul N. Hilfinger  <Hilfinger@gnat.com>

	* ada-lang.c (lookup_symbol_in_language): New function to allow
	re-use of another language's symbol lookup code.  (Placed here
	temporarily while Ada support is being integrated into the public
	tree).  
	(restore_language): New auxiliary function for 
	lookup_symbol_in_language.
	* ada-lang.h (lookup_symbol_in_language): Declare (Placed here
	temporarily while Ada support is being integrated into the public
	tree).
	
2004-06-08  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (check//%): New.

	* mn10300-tdep.c (mn10300_extract_return_value): Rewrite.
	(mn10300_store_return_value): Rewrite.
	(mn10300_type_align): New.
	(mn10300_use_struct_convention): Rewrite.
	(mn10300_return_value): New, using all of the above.
	(mn10300_pop_frame_regular): Add saved_regs_size.
	(mn10300_gdbarch_init): Remove deprecated rewritten entry points.

	* mn10300-tdep.c (mn10300_analyze_prologue): Don't compute saved
	regs if PC is on movm.

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

	Add native Linux support for the PowerPC E500.
	* ppc-tdep.h (struct gdbarch_tdep): New member: 'ppc_gprs_pseudo_p'.
	* rs6000-tdep.c (rs6000_gdbarch_init): Initialize it to false on
	all architectures except the E500.
	* ppc-linux-nat.c: (PTRACE_GETEVRREGS, PTRACE_SETEVRREGS): New
	#definitions.
	(struct gdb_evrregset_t): New type.
	(have_ptrace_getsetevrregs): New variable.
	(get_spe_registers, read_spliced_spe_reg, fetch_spe_register, 
	fetch_spe_registers): New functions.
	(fetch_register): Call fetch_spe_register as appropriate.
	Assert that we're only passed raw register numbers.
	(fetch_ppc_registers): Call fetch_spe_registers as appropriate.
	Don't fetch gprs if they're pseudoregisters.
	(set_spe_registers, write_spliced_spe_reg, store_spe_register,
	store_spe_registers): New functions.
	(store_register): Call store_spe_register as appropriate.
	Assert that we're only passed raw register numbers.
	(store_ppc_registers): Call store_spe_registers as appropriate.
	Don't store gprs if they're pseudoregisters.
	
2004-06-07  Jeff Johnston  <jjohnstn@redhat.com>

	* thread-db.c (thread_get_info_callback): Fill in the thread_info
	struct if one exists, even if we are dealing with a zombie thread.

2004-06-07  Andrew Cagney  <cagney@gnu.org>

	* target.h (PC_REQUIRES_RUN_BEFORE_USE): Delete definition.
	* config/pa/tm-hppa.h (DEPRECATED_PC_REQUIRES_RUN_BEFORE_USE):
	Rename PC_REQUIRES_RUN_BEFORE_USE.
	* breakpoint.c (breakpoint_sals_to_pc): Update.  Wrap reference in
	#ifdef.

2004-06-07  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_frame_cache): Handle the cases when we start
	unwinding after sp has been saved to the stack but before the end
	of the prologue, and after the fp has been modified but before it has
	been saved to the stack.
	(hppa_frame_base_address, hppa_frame_base, hppa_frame_base_sniffer): 
	Remove superfluous definitions.
	(hppa_gdbarch_init): Remove superfluous frame base sniffer.

2004-06-07  Guy Martin  <gmsoft@gentoo.org>

	Committed by Randolph Chung.
	* hppa-linux-nat.c: Include the correct version of the header file
	depending on the kernel version.

2004-06-06  Randolph Chung  <tausq@debian.org>

	* infrun.c (trap_expected_after_continue): Remove HP_OS_BUG workaround.
	(proceed, init_wait_for_inferior, handle_inferior_event): Likewise.

2004-06-06  Randolph Chung  <tausq@debian.org>

	* hppa-hpux-tdep.c (hppa32_hpux_in_solib_call_trampoline) 
	(hppa_hpux_skip_trampoline_code): Don't cache symbol values.
	* hppa-linux-tdep.c (hppa_linux_in_dyncall): Likewise.
	* hppa-tdep.c (hppa_symbol_address): New function definition.
	* hppa-tdep.h (hppa_symbol_address): New function declaration.

2004-06-06  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.h (struct value): Forward declaration.
	(gdbarch_tdep): Define tdep find_global_pointer method.
	* hppa-tdep.c (hppa32_push_dummy_call): Find the global pointer
	associated with the function we are trying to call, and write it
	to the gp register.
	(hppa32_convert_from_funct_ptr_addr): New function.
	(hppa_find_global_pointer): New function.
	(hppa_gdbarch_init): Set default find_global_pointer method; set
	convert_from_func_ptr_addr method.
	* hppa-linux-tdep.c (hppa_linux_find_global_pointer): New function.
	(hppa_linux_init_abi): Set find_global_pointer method.
	* Makefile.in (hppa-linux-tdep.o): Add value.h dependency.

2004-06-06  Randolph Chung  <tausq@debian.org>

	* gdbarch.sh (PUSH_DUMMY_CALL): Change CORE_ADDR func_addr argument
	to struct value *function.
	* gdbarch.c: Regenerate.
	* gdbarch.h: Likewise.
	* infcall.c (call_function_by_hand): Pass entire function value
	to push_dummy_call.

	* Makefile.in (alpha-tdep.o, frv-tdep.o, ia64-tdep.o, mips-tdep.o)
	(ppc-sysv-tdep.o, rs6000-tdep.o): Update dependencies.
	* alpha-tdep.c (alpha_push_dummy_call): Update call signature.
	* amd64-tdep.c (amd64_push_dummy_call): Likewise.
	* arm-tdep.c (arm_push_dummy_call): Likewise.
	* avr-tdep.c (avr_push_dummy_call): Likewise.
	* cris-tdep.c (cris_push_dummy_call): Likewise.
	* d10v-tdep.c (d10v_push_dummy_call): Likewise.
	* frv-tdep.c (frv_push_dummy_call): Likewise.
	* h8300-tdep.c (h8300_push_dummy_call): Likewise.
	* hppa-tdep.c (hppa32_push_dummy_call)
	(hppa64_push_dummy_call): Likewise.
	* i386-tdep.c (i386_push_dummy_call): Likewise.
	* ia64-tdep.c (ia64_push_dummy_call): Likewise.
	* m32r-tdep.c (m32r_push_dummy_call): Likewise.
	* m68hc11-tdep.c (m68hc11_push_dummy_call): Likewise.
	* m68k-tdep.c (m68k_push_dummy_call): Likewise.
	* m88k-tdep.c (m88k_push_dummy_call): Likewise.
	* mips-tdep.c (mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call)
	(mips_o32_push_dummy_call, mips_o64_push_dummy_call): Likewise.
	* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call)
	(ppc64_sysv_abi_push_dummy_call): Likewise.
	* ppc-tdep.h (ppc_sysv_abi_push_dummy_call)
	(ppc64_sysv_abi_push_dummy_call): Likewise.
	* rs6000-tdep.c (rs6000_push_dummy_call): Likewise.
	* s390-tdep.c (s390_push_dummy_call): Likewise.
	* sh-tdep.c (sh_push_dummy_call_fpu)
	(sh_push_dummy_call_nofpu): Likewise.
	* sparc-tdep.c (sparc32_push_dummy_call): Likewise.
	* sparc64-tdep.c (sparc64_push_dummy_call): Likewise.
	* vax-tdep.c (vax_push_dummy_call): Likewise.

2004-06-04  Jim Blandy  <jimb@redhat.com>

	* ppc-linux-nat.c (fetch_register): Don't forget to pass the
	gdbarch argument to register_size.

	* rs6000-tdep.c (rs6000_store_return_value): Use
	regcache_cooked_write_part instead of
	deprecated_write_register_bytes.
	(rs6000_gdbarch_init): Register it for gdbarch_store_return_value,
	not gdbarch_deprecated_store_return_value.

	* ppc-linux-nat.c (store_register, fetch_register): Remove
	incorrect assertions.  Simplify and generalize handling of
	transfers whose sizes are not multiples of, or less than, sizeof
	(PTRACE_XFER_TYPE).

2004-06-04  Jeff Johnston  <jjohnstn@redhat.com>

	* infrun.c (handle_inferior_event): Don't treat an invalid ptid
	as a new thread event.
	* thread-db.c (thread_get_info_callback): If the thread is a
	zombie, return TD_THR_ZOMBIE.
	(thread_from_lwp): If thread_get_info_callback returns
	TD_THR_ZOMBIE, check if the thread is still on the thread list
	and return a -1 ptid if not found.
	(thread_db_wait): If thread_from_lwp returns a -1 ptid, then
	change the status to TARGET_WAITKIND_SPURIOUS.

2004-06-03  Corinna Vinschen  <vinschen@redhat.com>

	* sh-tdep.c (sh3e_sh4_store_return_value): Correctly store
	double values in little endian mode.

2004-06-02  Albert Chin-A-Young  <china@thewrittenword.com>

	Committed by Andrew Cagney.
	* gdb/dictionary.c, gdb/gdbtypes.h: Remove trailing comma
	after last enum constant to avoid error from IBM C
	compiler.

2004-06-02  Jim Blandy  <jimb@redhat.com>

	* ppc-linux-nat.c (store_register, fetch_register): Rename 'mess'
	to 'message', and make it local to the lone block that uses it.

	* ppc-linux-nat.c (store_register): Remove unused local 'offset'.

2004-06-02  Paul N. Hilfinger  <hilfinger@gnat.com>

	* ada-exp.y: Synchronize with current ACT sources.
	* ada-lang.c: Ditto.
	* ada-lang.h: Ditto.
	* ada-lex.l: Ditto.
	* ada-tasks.c: Ditto.
	* ada-typeprint.c: Ditto.
	* ada-valprint.c: Ditto.
	
2004-06-01  Jim Blandy  <jimb@redhat.com>

	* ppc-tdep.h: Delete unused 'regoff' member.
	* rs6000-tdep.c (rs6000_gdbarch_init): Don't initialize it.

2004-06-01  Michael Chastain  <mec.gnu@mindspring.com>

	Fix PR symtab/1661.
	* hpread.c (hpread_pxdb_needed): Call memset after alloca.
	(hpread_read_struct_type): Likewise.

2004-06-01  Andrew Cagney  <cagney@gnu.org>

	* mi/mi-cmd-env.c (env_execute_cli_command): Use xstrprintf
	instead of xasprintf.
	* mi/mi-main.c (mi_error_last_message, mi_cmd_exec_interrupt) 
	(mi_cmd_thread_select, mi_cmd_thread_list_ids) 
	(mi_cmd_data_list_register_names) 
	(mi_cmd_data_list_changed_registers) 
	(mi_cmd_data_list_register_values) 
	(get_register, mi_cmd_data_write_register_values) 
	(mi_cmd_data_write_register_values) 
	(mi_cmd_data_assign, mi_cmd_data_evaluate_expression) 
	(mi_cmd_target_download, mi_cmd_target_select) 
	(mi_cmd_data_read_memory, mi_cmd_data_write_memory) 
	(mi_execute_cli_command, mi_execute_async_cli_command) 
	(mi_execute_async_cli_command): Ditto.
	* mi/mi-interp.c (mi_cmd_interpreter_exec) Ditto.
	* mi/mi-cmd-var.c (mi_cmd_var_create): Ditto.

	* mi/mi-cmds.h (mi_error_last_message): Delete declaration.
	* mi/mi-interp.c (mi_cmd_interpreter_exec): Call
	error_last_message instead of mi_error_last_message.
	* mi/mi-main.c (mi_error_last_message): Delete function.

	* mi/mi-main.c (mi_cmd_data_read_memory): Add missing return for
	"invalid number of columns" error.  Delete redundant "out of
	memory" check.

2004-05-31  Mark Kettenis  <kettenis@gnu.org>

	* i386bsd-nat.c: Don't include <sys/procfs.h>.
	(gregset_t, fpregset_t): Remove typedefs.
	(CANNOT_FETCH_REGISTER, CANNOT_STORE_REGISTER): Remove macros.
	(REG_OFFSET): Rename argument.
	(i386bsd_r_reg_offset): Rename from reg_offset.
	(REG_ADDR): Remove macro.
	(cannot_fetch_register, supply_gregset, fill_gregset): Remove
	functions.
	(i386bsd_supply_gregset, i386bsd_collect_gregset): New functions.
	(fetch_inferior_registers): Use `struct reg' and `struct fpreg'
	instead of gregset_t and fpregset_t.  Use i386bsd_supply_gregset
	instead of supply_gregset.
	(store_inferior_registers): Use `struct reg' and `struct fpreg'
	instead of gregset_t and fpregset_t.  Use i386bsd_collect_gregset
	instead of fill_gregset.
	(register_u_addr): Use i386_r_reg_offset instead of REG_ADDR.

	* i386bsd-nat.c: Don't include "gregset.h".
	(supply_gregset, fill_gregset): Make static.
	(supply_fpregset, fill_fpregset): Remove.
	* Makefile.in (i386bsd-nat.o): Update dependencies.

2004-05-30  Mark Kettenis  <kettenis@gnu.org>

	* fbsd-proc.c: Include "regcache.h", "regset.h" and
	"gdb_assert.h".  Con't include "gregset.h".
	(fbsd_make_corefile_notes): Use regset-based core file support
	instead off fill_gregset and fill_fpregset.
	* Makefile.in (fbsd-proc.o): Update dependencies.

	* m88k-tdep.c (m88k_analyze_prologue): Fix handling of branch
	instructions.
	(m88k_frame_prev_register): Simplify code a bit.

	* amd64-tdep.c (amd64_supply_fpregset): Adjust comment.
	(amd64_collect_fpregset): New function.
	(amd64_regset_from_core_section): Use amd64_collect_fpregset.

	* hppa-tdep.h (hppa_regnum): Add HPPA_R31_REGNUM.

	* i386-tdep.c (i386_supply_gregset): Adjust comment.
	(i386_collect_gregset): New function.
	(i386_supply_fpregset): Adjust comment.
	(i386_collect_fpregset): New function.
	(i386_regset_from_core_section): Use i386_collect_gregset and
	i386_collect_fpregset.

	* hppa-tdep.c (hppa_frame_prev_register_helper): Reimplement to
	handle VALUEP being null.

	* regset.h (collect_regset_ftype): Unconstify fourth argument.

2004-05-29  Mark Kettenis  <kettenis@gnu.org>

	* MAINTAINERS: Undelete m88k.  Add myself as maintainer.

	* amd64obsd-tdep.c (amd64obsd_sigtramp_p): Adjust for new
	assembler in OpenBSD 3.5-current.
	(amd64obsd_sigcontext_addr): Likewise.

2004-05-28  Jim Blandy  <jimb@redhat.com>

	* rs6000-tdep.c: Use the modern gdbarch methods for handling the
	register set, so our regcache isn't declared "legacy" and our E500
	pseudoregister read and write functions aren't ignored.
	(rs6000_register_byte, rs6000_register_raw_size,
	rs6000_register_virtual_type, rs6000_register_convertible,
	rs6000_register_convert_to_virtual,
	rs6000_register_convert_to_raw): Deleted.
	(rs6000_register_type, rs6000_convert_register_p,
	rs6000_register_to_value, rs6000_value_to_register): New
	functions.
	(rs6000_gdbarch_init): Don't register
	gdbarch_deprecated_register_size,
	gdbarch_deprecated_register_bytes,
	gdbarch_deprecated_register_byte,
	gdbarch_deprecated_register_raw_size,
	gdbarch_deprecated_register_virtual_type,
	gdbarch_deprecated_register_convertible,
	gdbarch_deprecated_register_convert_to_virtual, or
	gdbarch_deprecated_register_convert_to_raw methods.  Instead,
	register gdbarch_register_type, gdbarch_convert_register_p,
	gdbarch_register_to_value, and gdbarch_value_to_register methods.

2004-05-26  Jim Blandy  <jimb@redhat.com>

	* rs6000-tdep.c (rs6000_dwarf2_stab_reg_to_regnum): Deleted.
        (rs6000_stab_reg_to_regnum, rs6000_dwarf2_reg_to_regnum): New
	functions, updated to match the register numberings used in GCC.
	(rs6000_gdbarch_init): Register rs6000_stab_reg_to_regnum and
	rs6000_dwarf2_reg_to_regnum as register number conversions
	functions for STABS and Dwarf2.

2004-05-26  Randolph Chung  <tausq@debian.org>

	* infttrace.h (target_waitkind): Forward declare type instead of pulling
	in header file.

2004-05-25  Joel Brobecker  <brobecker@gnat.com>

	* NEWS: Document new "start" command.

2004-05-25  Randolph Chung  <tausq@debian.org>

	* hppa-linux-tdep.c (hppa_linux_init_abi): sizeof(long double) == 8 on
	hppa-linux.

2004-05-25  Randolph Chung  <tausq@debian.org>

	* hppa-hpux-tdep.c (offsetof): Define.
	(hppa_hpux_pc_in_sigtramp, hppa32_hpux_frame_saved_pc_in_sigtramp)
	(hppa32_hpux_frame_base_before_sigtramp)
	(hppa32_hpux_frame_find_saved_regs_in_sigtramp)
	(hppa64_hpux_frame_saved_pc_in_sigtramp)
	(hppa64_hpux_frame_base_before_sigtramp)
	(hppa64_hpux_frame_find_saved_regs_in_sigtramp): Remove unused 
	functions.
	(struct hppa_hpux_sigtramp_unwind_cache, hppa_hpux_tramp_reg)
	(hppa_hpux_sigtramp_frame_unwind_cache)
	(hppa_hpux_sigtramp_frame_this_id)
	(hppa_hpux_sigtramp_frame_prev_register)
	(hppa_hpux_sigtramp_frame_unwind)
	(hppa_hpux_sigtramp_unwind_sniffer): New signal trampoline unwinder.
	(hppa_hpux_init_abi): Register sigtramp unwinder.
	* Makefile.in (hppa-hpux-tdep.o): Update dependencies.

2004-05-25  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_fallback_frame_cache): Handle stack adjustment,
	and multiple stack unwinds.
	(hppa_stub_unwind_sniffer): Handle unwind from pc == 0.

2004-05-25  Andrew Cagney  <cagney@gnu.org>

	* symfile.h (symbol_file_add_from_memory): Delete declaration.
	* symfile-mem.h: Delete file.
	* symfile-mem.c: Do not include "symfile-mem.h".
	(symbol_file_add_from_memory): Make static. Use "struct bfd" and
	"struct bfd_section".  When an error do not bother returning NULL.
	(add_symbol_file_from_memory_command): Use "struct bfd" and
	"struct bfd_section".
	* Makefile.in (symfile_mem_h): Delete.
	(symfile-mem.o): Update dependencies.

2004-05-25  Nick Roberts  <nickrob@gnu.org>

	* gdb-mi.el: New file.

2004-05-25  Andrew Cagney  <cagney@gnu.org>

	* inftarg.c: Include "observer.h".
	(child_attach, child_create_inferior): Notify inferior_created.
	* corelow.c: Include "observer.h".
	(core_open): Notify inferior_created.
	* Makefile.in (inftarg.o, corelow.o): Update dependencies.

2004-05-25  Andrew Cagney  <cagney@gnu.org>

	* target.h (struct target_ops): Add from_tty to
	to_create_inferior.
	(target_create_inferior, find_default_create_inferior): Update.
	* infcmd.c (run_command): Update.
	* wince.c (child_create_inferior): Update.
	* win32-nat.c (child_create_inferior): Update.
	* uw-thread.c (uw_thread_create_inferior): Update.
	* thread-db.c (thread_db_create_inferior): Update.
	* target.c (debug_to_create_inferior) 
	(find_default_create_inferior): Update.
	(maybe_kill_then_create_inferior): Update.
	* sol-thread.c (sol_thread_create_inferior): Update.
	* remote.c (extended_remote_async_create_inferior) 
	(extended_remote_create_inferior): Update.
	* remote-vx.c (vx_create_inferior): Update.
	* remote-st.c (st2000_create_inferior): Update.
	* remote-sim.c (gdbsim_create_inferior): Update.
	* remote-sds.c (sds_create_inferior): Update.
	* remote-rdp.c (remote_rdp_create_inferior): Update.
	* remote-rdi.c (arm_rdi_create_inferior): Update.
	* remote-m32r-sdi.c (m32r_create_inferior): Update.
	* remote-e7000.c (e7000_create_inferior): Update.
	* procfs.c (procfs_create_inferior): Update.
	* ocd.c (ocd_create_inferior): Update.
	* ocd.h (ocd_create_inferior): Update.
	* nto-procfs.c (procfs_create_inferior): Update.
	* monitor.c (monitor_create_inferior): Update.
	* lin-lwp.c (lin_lwp_create_inferior): Update.
	* inftarg.c (child_create_inferior): Update.
	* hpux-thread.c (hpux_thread_create_inferior): Update.
	* gnu-nat.c (gnu_create_inferior): Update.

2004-05-25  Andrew Cagney  <cagney@gnu.com>

	* MAINTAINERS: Update e-mail address.

2004-05-24  Randolph Chung  <tausq@debian.org>

	* thread.c (info_threads_command, thread_apply_all_command)
	(thread_apply_command, thread_command, do_captured_thread_select):
	Remove HPUXHPPA-specific code.

2004-05-24  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (SR4EXPORT_LDIL_OFFSET, SR4EXPORT_LDO_OFFSET): Remove
	unused symbols.
	* hppa-tdep.h (HPPA_INSTRUCTION_SIZE): Remove, since there are no more
	references.

2004-05-24  Joel Brobecker  <brobecker@gnat.com>

	* infcmd.c (kill_if_already_running): New function, extracted
	from run_command().
	(run_command): Replace extracted code by call to
	kill_if_already_running().
	(start_command): New function.
	(_initialize_infcmd): Add "start" command.

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

	Add OpenBSD/m88k support.
	* NEWS (New native configurations): Mention OpenBSD/m88k.
	* m88k-tdep.c, m88k-tdep.h, m88kbsd-nat.c, config/m88k/nm-obsd.h,
	config/m88k/obsd.mh, config/m88k/obsd.mt: New files.
	* Makefile.in (m88k_tdep_h): New variable.
	(ALLDEPFILES): Add m88k-tdep.c and m88kbsd-nat.c.
	(m88kbsd-nat.o, m88k-tdep.o): New dependencies.
	* configure.host: Add m88*-*-openbsd*.
	* configure.tgt: Add m88*-*-openbsd*.

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

	* MAINTAINERS (tracing bytecode stuff): Allow global maintainers
	to approve changes.

2004-05-24  Kevin Buettner  <kevinb@redhat.com>

	* symtab.c (fixup_section): Search section table when lookup by
	name fails.

2004-05-24  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c: Fix handling of 8-byte structures; they should not 
	be "small_struct".

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

	* m68kbsd-nat.c (m68kbsd_collect_gregset): Specify correct
	register number in regcache_raw_collect call.
	(m68kbsd_collect_fpregset): Likewise.
	* vaxbsd-nat.c (vaxbsd_collect_gregset): Likewise.

	* regset.h (struct regset): Add back `regset' member.

2004-05-23  Mark Kettenis  <kettenis@gnu.org>

	* configure.in: Check for td_pcb in `struct thread'.
	* configure, config.in: Regenerated.

	* dpx2-nat.c: Remove file.
	* Makefile.in (ALLDEPFILES): Remove dpx2-nat.c.
	(dpx2-nat.o): Remove dependencies.

	* amd64obsd-nat.c: Include "gdbcore.h", "regcache.h",
	<sys/types.h>, <machine/frame.h>, <machine/pcb.h> and "bsd-kvm.h".
	(amd64obsd_supply_pcb): New function.
	(_initialize_amd64obsd_nat): Enable libkvm interface.
	* Makefile.in (amd64obsd-nat.o): Update dependencies.
	* config/i386/obsd64.mh (NATDEPFILES): Add bsd-kvm.o
	(LOADLIBES): New variable.

	* sparcnbsd-nat.c: Include "gdbcore.h", "regcache.h",
	<sys/types.h>, <machine/pcb.h> and "bsd-kvm.h".
	(sparc32nbsd_supply_pcb): New function.
	(_initialize_sparcnbsd_nat): Enable libkvm interface.
	* Makefile.in (sparcnbsd-nat.o): Update dependencies.
	* config/sparc/nbsdelf.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.

2004-05-22  Mark Kettenis  <kettenis@gnu.org>

	* bsd-kvm.c, bsd-kvm.h: New files.
	* i386fbsd-nat.c: Include <sys/types.h>, <machine/pcb.h> and
	"bsd-kvm.h".
	(i386fbsd_supply_pcb): New function.
	* Makefile.in (ALLDEPFILES): Add bsd-kvm.c.
	(i386fbsd-nat.o): Update dependencies.
	(bsd_kvm_h): New variable.
	(bsd-kvm.o): New dependency.
	* config/i386/fbsd.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.

	* regset.c: Tweak comment.
	(regset_alloc): Remove descr argument.  Use GDBARCH_OBSTACK_ZALLOC
	macro.
	* regset.h: Update copyright year.
	(struct regset): Remove `descr' member, add `gdbarch' member.
	(regset_alloc): Adjust prototype and comment.
	* i386-tdep.c (i386_supply_gregset): Get TDEP from REGSET->arch.
	(i386_supply_fpregset): Likewise.
	(i386_regset_from_core_section): Update call to regset_alloc.
	* i386obsd-tdep.c (i386obsd_aout_supply_regset): Get TDEP from
	REGSET->arch.
	(i386obsd_aout_regset_from_core_section): Update call to
	regset_alloc.
	* i386nbsd-tdep.c (i386nbsd_aout_supply_regset): Get TDEP from
	REGSET->arch.
	(i386nbsd_aout_regset_from_core_section): Update call to
	regset_alloc.
	* amd64-tdep.c (amd64_supply_fpregset): Get TDEP from
	REGSET->arch.
	(amd64_regset_from_core_section): Update call to regset_alloc.
	* amd64obsd-tdep.c (amd64obsd_supply_regset): Get TDEP from
	REGSET->arch.
	(amd64obsd_regset_from_core_section): Update call to regset_alloc.
	* sparcnbsd-tdep.c (sparc32nbsd_supply_gregset): Directly pass
	&sparc32nbsd_gregset in sparc32_supply_gregset call.
	(sparc32nbsd_init_abi): Update call to regset_alloc.
	* sparc64obsd-tdep.c (sparc64obsd_supply_gregset): Directly pass
	&sparc64obsd_core_gregset in sparc64_supply_gregset call.
	(sparc64obsd_init_abi): Update call to regset_alloc.
	* sparc64nbsd-tdep.c (sparc64nbsd_supply_gregset): Directly pass
	&sparc64nbsd_gregset in sparc64_supply_gregset call.
	(sparc64nbsd_init_abi): Update call to regset_alloc.
	* sparc64fbsd-tdep.c (sparc64fbsd_supply_gregset): Directly pass
	&sparc64fbsd_gregset in sparc64_supply_gregset call.
	(sparc64fbsd_init_abi): Update call to regset_alloc.

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

	* ppc-tdep.h (spe_register_p): New declaration.
	(struct gdbarch_tdep): New members: ppc_acc_regnum and
	ppc_spefscr_regnum.
	* rs6000-tdep.c (spe_register_p): New function.
	(rs6000_dwarf2_stab_reg_to_regnum): Recognize numbers for acc and
	spefscr.
	(rs6000_gdbarch_init): Initialize the new members of the tdep
	structure.

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

	* ppc-linux-nat.c (fetch_register): Move code back to be next
	to the comment that describes it.  (Moved code, instead of
	comment, for symmetry with store_register.)

	Allocate regset structures in the gdbarch's obstack, not using
	xmalloc.
	* regset.c (regset_alloc): Renamed from regset_xmalloc.
	Add 'arch' argument.  Allocate the regset on arch's obstack, not
	using xmalloc.
	* regset.h (regset_alloc): Update declaration.
	* am64-tdep.c (amd64_regset_from_core_section): Update call; pass
	gdbarch argument.
	* amd64obsd-tdep.c (amd64obsd_regset_from_core_section): Same.
	* i386-tdep.c (i386_regset_from_core_section): Same.
	* i386nbsd-tdep.c (i386nbsd_aout_regset_from_core_section): Same.
	* i386obsd-tdep.c (i386obsd_aout_regset_from_core_section): Same.
	* sparc64fbsd-tdep.c (sparc64fbsd_init_abi): Same.
	* sparc64nbsd-tdep.c (sparc64nbsd_init_abi): Same.
	* sparc64obsd-tdep.c (sparc64obsd_init_abi): Same.
	* sparcnbsd-tdep.c (sparc32nbsd_init_abi): Same.

2004-05-21  Joel Brobecker  <brobecker@gnat.com>

	* config/djgpp/fnchange.lst: Undo previous change, was useless.

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

	* dwarf2expr.c (execute_stack_op): Add 'break' statements after
	cases for DW_OP_div and DW_OP_shr.  (Thanks to Reva Cuthbertson.)

2004-05-20  Jim Blandy  <jimb@redhat.com>

	* rs6000-tdep.c (rs6000_push_dummy_call): Formatting fixes.

2004-05-20  Mark Kettenis  <kettenis@gnu.org>

	* regset.h: Make prototype const-correct.
	* regset.c (regset_xmalloc): Make const-correct.

2004-05-20  Paul N. Hilfinger  <hilfinger@gnat.com>

	* symtab.h (SYMBOL_SEARCH_NAME): New definition.
	(SYMBOL_MATCHES_SEARCH_NAME): New definition.
	(symbol_search_name): Declare.
	
	* dictionary.c (iter_name_first_hashed): Match on SYMBOL_SEARCH_NAME.
	(iter_name_next_hashed): Ditto.
	(iter_name_next_linear): Ditto.
	(insert_symbol_hashed): Hash on SYMBOL_SEARCH_NAME.

	* symtab.c (lookup_partial_symbol): Assume symbols ordered by 
	search name, using SYMBOL_SEARCH_NAME and SYMBOL_MATCHES_SEARCH_NAME.
	(symbol_search_name): New function.
	
	* symfile.c (compare_psymbols): Order by SYMBOL_SEARCH_NAME.
	
	* minsyms.c (build_minimal_symbol_hash_tables): Change
	test for adding to demangled hash table to check for difference
	between SYMBOL_SEARCH_NAME and SYMBOL_LINKAGE_NAME.
	
2004-05-19  Jim Blandy  <jimb@redhat.com>

	Use a constructor function to create regset structures.
	* regset.h (supply_regset_ftype, collect_regset_ftype): New typedefs.
	(struct regset): Use supply_regset_ftype.  Add new
        'collect_regset' member.
	(regset_xmalloc): New declaration.
	* regset.c: New file.
	* am64-tdep.c (amd64_regset_from_core_section): Use
	regset_xmalloc to construct regset structures.
	* amd64obsd-tdep.c (amd64obsd_regset_from_core_section): Same.
	* i386-tdep.c (i386_regset_from_core_section): Same.
	* i386nbsd-tdep.c (i386nbsd_aout_regset_from_core_section): Same.
	* i386obsd-tdep.c (i386obsd_aout_regset_from_core_section): Same.
	* sparc64fbsd-tdep.c (sparc64fbsd_init_abi): Same.
	* sparc64nbsd-tdep.c (sparc64nbsd_init_abi): Same.
	* sparc64obsd-tdep.c (sparc64obsd_init_abi): Same.
	* sparcnbsd-tdep.c (sparc32nbsd_init_abi): Same.
	* Makefile.in (COMMON_OBS): Add regset.o.
	(regset.o): New rule.

2004-05-19  Joel Brobecker  <brobecker@gnat.com>

	* config/djgpp/fnchange.lst: Add entries for pthread_cond_wait.exp
	and pthread_cond_wait.c.

2004-05-18  Jim Blandy  <jimb@redhat.com>

	* rs6000-tdep.c (rs6000_gdbarch_init): Initialize tdep fields
	before the mach-specific switch, and then let the individual cases
	override the defaults, rather than leaving them uninitialized
	until the switch and then setting them in each case.

2004-05-18  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_frame_cache): Check for validity of r31 for
	millicode functions.

2004-05-18  Randolph Chung  <tausq@debian.org>

	* somsolib.c (som_solib_remove_inferior_hook): Make all the size
	references to dld_flags_buffer consistent.

2004-05-18  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_frame_cache): If a frame pointer is available, use
	it for unwinding the stack.

2004-05-18  Randolph Chung  <tausq@debian.org>

	* config/pa/tm-linux.h (IN_SOLIB_CALL_TRAMPOLINE, SKIP_TRAMPOLINE_CODE)
	Undefine these so we can overide them using gdbarch.

2004-05-18  Randolph Chung <tausq@debian.org>

	* hppa-tdep.c (hppa_stub_frame_unwind_cache): Don't do export stub
	handling for 64-bit HPUX (elf).

2004-05-18  Daniel Jacobowitz  <dan@debian.org>

	* alpha-tdep.c (alpha_gdbarch_init): Use LL suffix for large
	constants.
	* amd64-tdep.c (amd64_skip_prologue): Likewise.
	* ia64-tdep.c (examine_prologue): Likewise.
	* ns32k-tdep.c (ns32k_fix_call_dummy): Remove unused function.
	* v850-tdep.c (v850_fix_call_dummy): Likewise.

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

	* vax-tdep.c (vax_return_value): Implement
	RETURN_VALUE_ABI_RETURNS_ADDRESS.

2004-05-17  Mark Kettenis  <kettenis@gnu.org>

	* vax-tdep.c (vax_return_value): Fix typo.

2004-05-17  Andrew Cagney  <cagney@redhat.com>

	* MAINTAINERS: Mark Salter was also responsible for
	testsuite/config/

	* NEWS: Mention signal fixes.

2004-05-17  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_stub_frame_unwind_cache): For HPUX stub unwinding,
	check to see if we are unwinding an export stub.  Export stubs clobber
	the %rp in the call path and stores the original rp in a stack slot.

2004-05-17  Jim Blandy  <jimb@redhat.com>

	* MAINTAINERS: Update address for J.T. Conklin.

2004-05-17  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c: Remove superfluous #include's.
	* Makefile.in (hppa-tdep.o): Update dependencies.

2004-05-17  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (THREAD_INITIAL_FRAME_SYMBOL): Delete unused symbol.
	(THREAD_INITIAL_FRAME_SYM_LEN): Likewise.
	(unwind_command, hppa_alignof, prologue_inst_adjust_sp)
	(is_branch, inst_saves_gr, inst_saves_fr, compare_unwind_entries)
	(read_unwind_info, internalize_unwinds, record_text_segment_lowaddr):
	Remove static function declarations.

2004-05-17  Mark Kettenis  <kettenis@gnu.org>

	* alphabsd-nat.c: Update copyright year.
	(getregs_supplies): Replace PC_REGNUM with ALPHA_PC_REGNUM.

	* m68k-tdep.h (m68k_regnum): Add M68K_D2_REGNUM, M68K_D7_REGNUM
	and M68K_A2_REGNUM.

	* m68k-tdep.c (m68k_svr4_return_value): Implement
	RETURN_VALUE_ABI_RETURNS_ADDRESS.

2004-05-16  Mark Kettenis  <kettenis@gnu.org>

	* sol-thread.c Update copyright year.  Fix various coding
	standards violations.  Tweak a few comments.
	(td_err_string, td_state_string, thread_to_lwp, lwp_to_thread):
	Delete prototypes.

2004-05-15  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.h (hppa_frame_prev_register_helper): Pass save_regs
	as pointer instead of array reference since HPUX compiler does
	not accept unsized array arguments.
	* somsolib.c (dld_flags_buffer): Use constant array size.

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

	* amd64obsd-tdep.c (amd64obsd_sigtramp_p): Replace hexadecimal
	offset with decimal offset.
	(amd64obsd_sigcontext_addr): Return correct address for entire
	signal trampoline.

	* vax-tdep.c (vax_frame_num_args): Use get_frame_base_address
	instead of get_frame_base.

	* i386bsd-nat.c (supply_gregset): Use regcache_raw_supply.
	(fill_gregset): Use regcache_raw_collect.

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

	* config/sparc/tm-nbsd64.h: Remove file.
	* config/tm-sunos.h: Remove file.

2004-05-15  Joel Brobecker  <brobecker@gnat.com>

	* rs6000-tdep.c (store_param_on_stack_p): New function,
	an improved version of some code extracted from skip_prologue().
	(skip_prologue): Use store_param_on_stack_p() to detect
	instructions saving a parameter on the stack. Detect when r0
	is used to save a parameter.
	Do not mark "li rx, SIMM" instructions as part of the prologue,
	unless the following instruction is also part of the prologue.

2004-05-14  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (handle_inferior_event): Simplify
	STEP_OVER_UNDEBUGGABLE.

	* infrun.c (handle_step_into_function): Delete function.
	(handle_inferior_event): Inline calls to
	handle_step_into_function.

2004-05-14  Jerome Guitton  <guitton@rome.act-europe.fr>

	* rs6000-nat.c: Fix a comment.

2004-05-12  David Anderson <davea@sgi.com>

	Committed by Jim Blandy <jimb@redhat.com>:
	* regcache.c (struct regcache_descr): fix comment spelling.

2004-05-13  J. Brobecker  <brobecker@gnat.com>

	* aix-thread.c: s/ppc_floating_point_p/ppc_floating_point_unit_p/.
	Fixes a link link failure.

2004-05-13  J. Brobecker  <brobecker@gnat.com>

	* aix-thread.c (store_regs_kernel_thread): Fix a little obvious
	error that was causing the build to fail.

2004-05-13  J. Brobecker  <brobecker@gnat.com>

	* aix-thread.c: #include "gdb_string.h". Needed for memset and memcopy.
	* Makefile.in (aix-thread.o): Add dependency on gdb_string.h.

2004-05-13  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (handle_inferior_event): Check for
	STEP_OVER_UNDEBUGGABLE after signal trampolines and function
	calls.  Update comments.

2004-05-13  Jim Blandy  <jimb@redhat.com>

	* aix-thread.c (pdc_read_regs, supply_gprs64, supply_fprs)
	(fetch_regs_user_thread, fetch_regs_kernel_thread)
	(store_regs_user_thread, store_regs_kernel_thread): Use
	ppc_num_gprs and ppc_num_fprs instead of '32' and '31'.
	* ppc-linux-nat.c (fill_gregset): Same.
	* ppc-linux-tdep.c (ppc_linux_supply_gregset) 
	(ppc_linux_sigtramp_cache): Same.
	* ppcnbsd-tdep.c (ppcnbsd_supply_reg, ppcnbsd_fill_reg) 
	(ppcnbsd_sigtramp_cache_init): Same.
	* rs6000-nat.c (fetch_core_registers): Same.
	* rs6000-tdep.c (ppc_supply_gregset, ppc_collect_gregset) 
	(rs6000_frame_cache): Same.

	* aix-thread.c (supply_gprs64, fetch_regs_user_thread)
	(store_regs_user_thread): Use tdep->ppc_gp0_regnum, instead
	of assuming that the gprs are numbered starting with zero.
	* ppc-linux-nat.c (fill_gregset): Same.
	* ppc-linux-tdep.c (ppc_linux_supply_gregset): Same.
	* ppcnbsd-nat.c (getregs_supplies): Same.
	* ppcnbsd-tdep.c (ppcnbsd_supply_reg, ppcnbsd_fill_reg): Same.
	* rs6000-nat.c (fetch_core_registers): Same.
	* rs6000-tdep.c (ppc_supply_gregset, ppc_collect_gregset): Same.

2004-05-07  Michael Snyder  <msnyder@redhat.com>

	* tracepoint.c (scope_info): Add handling for LOC_COMPUTED,
	LOC_COMPUTED_ARG, and LOC_INDIRECT.

2004-05-13  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (handle_inferior_event): Use frame_unwind_id.

2004-05-13  Bryce McKinlay  <mckinlay@redhat.com>

	* dwarf2loc.c (find_location_expression): Use ANOFFSET to adjust
	base_address for shared libraries.

2004-05-13  Bryce McKinlay  <mckinlay@redhat.com>

	* MAINTAINERS (write after approval): Add myself.	

2004-05-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* breakpoint.c (bpstat_stop_status): Add new argument
	STOPPED_BY_WATCHPOINT.  Use it instead of testing
	target_stopped_data_address agaist 0 to check whether
	or not we stopped due to a hardware watchpoint.
	* breakpoint.h (bpstat_stop_status): Adapt prototype.
	* infrun.c (handle_inferior_event): Call bpstat_stop_status
	with new argument.

2004-05-12  Jim Blandy  <jimb@redhat.com>

	* configure.in: When checking whether we should use the -bbigtoc
	option, don't forget to restore the original value of LDFLAGS.
	* configure: Regenerated.

2004-05-12  Andrew Cagney  <cagney@redhat.com>

	* thread.c (load_infrun_state): Delete step_sp.
	* infrun.c (context_switch): Ditto.
	* inferior.h (step_sp): Ditto.
	* infcmd.c (step_sp, step_1, step_once, until_next_command): Ditto.
	* gdbthread.h (struct thread_info, save_infrun_state)
	(restore_infrun_state): Ditto.

2004-05-12  Ulrich Weigand  <uweigand@de.ibm.com>

	* MAINTAINERS (write after approval): Add myself.

2004-05-12  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (adjust_pc_after_break): Rewrite decr logic,
	eliminate reference to step_sp.
	(struct execution_control_state, init_execution_control_state)
	(handle_inferior_event, keep_going): Delete update_step_sp and
	step_sp.
	* infcmd.c (step_sp): Note that variable is unused.

2004-05-11  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (step_over_function): Delete function.
	(handle_step_into_function): Use insert_step_resume_breakpoint.
	(insert_step_resume_breakpoint): Fix assertion.

2004-05-11  Nick Roberts  <nickrob@gnu.org>

	* utils.c (defaulted_query): Just use the normal query input type
	when printing the annotations.

2004-05-11  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (handle_inferior_event): Simplify code handling
	step-into or return-from a signal trampoline.

2004-05-11  Andrew Cagney  <cagney@redhat.com>

	* ppcnbsd-tdep.c: Include "gdb_assert.h".
	* Makefile.in (ppcnbsd-tdep.o): Update dependencies.

2004-05-10  Jim Blandy  <jimb@redhat.com>

	* ppc-bdm.c (bdm_ppc_fetch_registers): Replace utterly broken code
	with a call to internal_error.

	* ppc-tdep.h (struct gdbarch_tdep): Change definition of
	ppc_fp0_regnum and ppc_fpscr_regnum: if they are -1, then this
	processor variant lacks those registers.
	(ppc_floating_point_unit_p): Change description to make it clear
	that this returns info about the ISA, not the ABI.
	* rs6000-tdep.c (ppc_floating_point_unit_p): Decide whether to
	return true or false by checking tdep->ppc_fp0_regnum and
	tdep->ppc_fpscr_regnum.  The original code replicated the BFD
	arch/mach switching done in rs6000_gdbarch_init; it's better to
	keep that logic there, and just check the results here.
	(rs6000_gdbarch_init): On the E500, set tdep->ppc_fp0_regnum and
	tdep->ppc_fpscr_regnum to -1 to indicate that we have no
	floating-point registers.
	(ppc_supply_fpregset, ppc_collect_fpregset)
	(rs6000_push_dummy_call, rs6000_extract_return_value)
	(rs6000_store_return_value): Assert that we have floating-point
	registers.
	(rs6000_dwarf2_stab_reg_to_regnum): Add FIXME.
	(rs6000_frame_cache): Don't note the locations at which
	floating-point registers were saved if we have no fprs.
	* aix-thread.c (supply_fprs, fill_fprs): Assert that we have FP
	registers.
	(fetch_regs_user_thread, fetch_regs_kernel_thread)
	(store_regs_user_thread, store_regs_kernel_thread): Only call
	supply_fprs / fill_fprs if we actually have floating-point
	registers.
	(special_register_p): Check ppc_fpscr_regnum before matching
	against it.
	(supply_sprs64, supply_sprs32, fill_sprs64, fill_sprs32): Don't
	supply / collect fpscr if we don't have it.
	* ppc-bdm.c: #include "gdb_assert.h".
	(bdm_ppc_fetch_registers, bdm_ppc_store_registers): Assert that we
	have floating-point registers, since I can't test this code on
	FP-free systems to adapt it.
	* ppc-linux-nat.c (ppc_register_u_addr): Don't match against the
	fpscr and floating point register numbers if they don't exist.
	(fetch_register): Assert that we have floating-point registers
	before we reach the code that handles them.
	(store_register): Same.  And use tdep instead of calling
	gdbarch_tdep again.
	(fill_fpregset): Don't try to collect FP registers and fpscr if we
	don't have them.
	(ppc_linux_sigtramp_cache): Don't record the saved locations of
	fprs and fpscr if we don't have them.
	(ppc_linux_supply_fpregset): Don't supply fp regs and fpscr if we
	don't have them.
	* ppcnbsd-nat.c: #include "gdb_assert.h".
	(getfpregs_supplies): Assert that we have floating-point registers.
	* ppcnbsd-tdep.c (ppcnbsd_supply_fpreg, ppcnbsd_fill_fpreg): Same.
	* ppcobsd-tdep.c: #include "gdb_assert.h".
	(ppcobsd_supply_gregset, ppcobsd_collect_gregset): Assert that we
	have floating-point registers.
	* rs6000-nat.c (regmap): Don't match against the fpscr and
	floating point register numbers if they don't exist.
	(fetch_inferior_registers, store_inferior_registers,
	fetch_core_registers): Only fetch / store / supply the
	floating-point registers and the fpscr if we have them.
	* Makefile.in (ppc-bdm.o, ppc-linux-nat.o, ppcnbsd-nat.o)
	(ppcobsd-tdep.o): Update dependencies.
	
2004-05-10  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (through_sigtramp_breakpoint): Delete variable.
	(context_switch): Do not switch through_sigtramp_breakpoint.
	* gdbthread.h (save_infrun_state, load_infrun_state)
	(struct thread_info): Delete through_sigtramp_breakpoint parameter
	and structure member.
	* thread.c (load_infrun_state, save_infrun_state): Update.

2004-05-10  Mark Kettenis  <kettenis@gnu.org>

	* m68kbsd-tdep.c (m68kbsd_elf_init_abi): Call m68k_svr4_init_abi.

2004-05-10  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* acinclude.m4: Quote macro names being defined by AC_DEFUN 
	throughout.
	* aclocal.m4: Regenerate.

2004-05-10  Nathan J. Williams  <nathanw@wasabisystems.com>

	* alphanbsd-tdep.c: Fix include of "gdb_string.h".

2004-05-10  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (check_sigtramp2): Delete function.
	(handle_inferior_event): When single stepping, and taking a
	signal, set a breakpoint at the signal return address.  Delete
	redundant calls to check_sigtramp2.
	(insert_step_resume_breakpoint): New function.
	(through_sigtramp_breakpoint, handle_inferior_event)
	(follow_exec, wait_for_inferior, fetch_inferior_event)
	(currently_stepping, keep_going): Delete most uses of
	through_sigtramp_breakpoint, not that it should be deleted.
	(delete_breakpoint_current_contents): Delete function.

2004-05-10  Randolph Chung  <tausq@debian.org>

	* config/pa/linux.mt (TM_FILE): Use new tm-linux.h for hppa-linux
	target.
	* config/pa/tm-linux.h: New file.

2004-05-10  Daniel Jacobowitz  <drow@mvista.com>

	* cli/cli-setshow.c (cmd_show_list): Check for "show" in the middle
	of prefixes.  Don't print the prefix twice in the CLI.

2004-05-10  Jim Blandy  <jimb@redhat.com>

	* rs6000-tdep.c (ppc_collect_gregset): When regnum == -1, do
	collect all the gprs.

	* rs6000-tdep.c (ppc_collect_gregset): Correct off-by-one error in
	loop collecting gprs.

2004-05-09  Andrew Cagney  <cagney@redhat.com>

	* remote-vx.c (net_step): Delete step-range code.
	* remote.c (remote_resume, init_all_packet_configs)
	(set_remote_protocol_E_packet_cmd)
	(show_remote_protocol_E_packet_cmd)
	(remote_protocol_E, show_remote_cmd, _initialize_remote)
	(remote_protocol_e, set_remote_protocol_e_packet_cmd)
	(show_remote_protocol_e_packet_cmd): Ditto.

2004-05-09  Mark Kettenis  <kettenis@gnu.org>

	* hppa-tdep.h (enum hppa_regnum): Name enum, add HPPA_R1_REGNUM.

	* hppa-tdep.h: Update copyright year.
	(struct trad_frame_saved_reg): Add opaque declaration.

	* amd64-tdep.c (amd64_return_value): Implement
	RETURN_VALUE_ABI_RETURNS_ADDRESS.

	* m68k-tdep.c (m68k_convert_register_p, m68k_register_to_value)
	(m68k_value_to_register): New functions.
	(m68k_gdbarch_init): Set convert_register_p, register_to_value and
	value_to_register.

	* defs.h (enum return_value_convention): Add
	RETURN_VALUE_ABI_RETURNS_ADDRESS and
	RETURN_VALUE_ABI_PRESERVES_ADDRESS.
	* infcmd.c (legacy_return_value): New function.
	(print_return_value): Rwerite to implement
	RETURN_VALUE_ABI_RETURNS_ADDRESS.
	* values.c (using_struct_return): Check for inequality to
	RETURN_VALUE_REGISTER_CONVENTION instead of equality to
	RETURN_VALUE_STRUCT_CONVENTION.
	* i386-tdep.c (i386_return_value): Implement
	RETURN_VALUE_ABI_RETURNS_ADDRESS.

	* vax-tdep.c: Tweak comments.  Reorder include files.  Don't
	include "symtab.h", "opcode/vax.h" and "inferior.h".
	(vax_skip_prologue): Replace calls to read_memory_integer by calls
	to read_memory_unsigned_integer.
	(vax_gdbarch_init): Reorder.
	(_initialize_vax_tdep): Spell out prototype.
	* Makefile.in (vax-tdep.o): Update dependencies.

2004-05-08  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (resume): Delete call to DO_DEFERRED_STORES.
	* target.c (target_detach, target_disconnect): Ditto.

	* infcall.c (call_function_by_hand): When no
	DEPRECATED_SAVE_DUMMY_FRAME_TOS call generic_save_dummy_frame_tos.
	* rs6000-tdep.c (rs6000_gdbarch_init): Do not set
	DEPRECATED_SAVE_DUMMY_FRAME_TOS.
	* mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
	* mcore-tdep.c (mcore_gdbarch_init): Ditto.
	
	* gdbarch.sh (DEPRECATED_FIX_CALL_DUMMY): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* ns32k-tdep.c (ns32k_gdbarch_init): Do not set
	deprecated_fix_call_dummy.
	* v850-tdep.c (v850_gdbarch_init): Ditto.
	* infcall.c (call_function_by_hand): Do not call
	DEPRECATED_FIX_CALL_DUMMY.

	* gdbarch.sh (DEPRECATED_CALL_DUMMY_WORDS)
	(DEPRECATED_SIZEOF_CALL_DUMMY_WORDS): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* arm-linux-tdep.c (arm_linux_call_dummy_words)
	(arm_linux_init_abi): Do not set deprecated_call_dummy_words or
	deprecated_sizeof_call_dummy_words.
	* arm-tdep.c (arm_call_dummy_words, arm_gdbarch_init): Ditto.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto.
	* v850-tdep.c (v850_gdbarch_init): Ditto.
	* sh64-tdep.c (sh64_gdbarch_init): Ditto.
	* ns32k-tdep.c (ns32k_call_dummy_words, ns32k_gdbarch_init): Ditto.
	* mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
	* mcore-tdep.c (mcore_gdbarch_init): Ditto.
	* arch-utils.h (legacy_call_dummy_words)
	(legacy_sizeof_call_dummy_words): Delete declarations.
	* arch-utils.c (legacy_call_dummy_words)
	(legacy_sizeof_call_dummy_words): Delete variables.

	* gdbarch.sh (DEPRECATED_PUSH_DUMMY_FRAME): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* inferior.h (PUSH_DUMMY_FRAME): Delete macro.
	* infcall.c (call_function_by_hand): Eliminate call to
	DEPRECATED_PUSH_DUMMY_FRAME.
	* ns32k-tdep.c (ns32k_gdbarch_init): Do not set deprecated
	push_dummy_frame.
	(ns32k_push_dummy_frame): Delete function.

	* ns32k-tdep.c (ns32k_gdbarch_init): Do not set
	deprecated_call_dummy_breakpoint_offset or
	deprecated_call_dummy_start_offset.
	* dummy-frame.c, arm-tdep.c: Update comments.
	* gdbarch.sh (DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET)
	(DEPRECATED_CALL_DUMMY_START_OFFSET): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	
	* infcall.c (legacy_push_dummy_code): Delete function.
	(push_dummy_code): Delete call.

	* gdbarch.sh (DEPRECATED_USE_GENERIC_DUMMY_FRAMES): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* blockframe.c (legacy_frame_chain_valid): Simplify by eliminating
	DEPRECATED_USE_GENERIC_DUMMY_FRAMES.
	* infcall.c (legacy_push_dummy_code, call_function_by_hand): Ditto.
	* frame.c (frame_type_from_pc, legacy_get_prev_frame): Ditto.

	* breakpoint.h (deprecated_frame_in_dummy): Delete declaration.
	(struct frame_info): Delete opaque declaration.
	* breakpoint.c (deprecated_frame_in_dummy): Delete function.
	* frame.c (get_frame_type): Delete call.

	* ns32k-tdep.c (ns32k_gdbarch_init): Do not set deprecated
	pc_in_call_dummy.
	* inferior.h (deprecated_pc_in_call_dummy_on_stack): Delete.
	* blockframe.c (deprecated_pc_in_call_dummy_on_stack): Delete.

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

	* alphanbsd-tdep.c: Include "gdb_string.h".
	* armnbsd-tdep.c: Update copyright year.
	Include "gdb_string.h".
	* Makefile.in (alphanbsd-tdep.o, armnbsd-tdep.o): Update
	dependencies.

	* delta68-nat.c: Remove file.
	* m68k-tdep.c (delta68_in_sigtramp, delta68_frame_args_address)
	(delta68_frame_saved_pc, delta68_frame_num_args): Remove functions.
	* Makefile.in (ALLDEPFILES): Remove delta68-nat.c.
	(delta68-nat.o): Remove dependency.

	* m68k-tdep.c (m68k_frameless_function_invocation): Remove
	function.
	(m68k_gdbarch_init): Don't set
	deprecated_frameless_function_invocation.

2004-05-07  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (skip_prologue_hard_way, hppa_frame_cache): Use 
	read_memory_nobpt for code reading when doing frame unwinding.
	* hppa-linux-tdep.c (insns_match_pattern): Likewise.

2004-05-07  Randolph Chung  <tausq@debian.org>

	* hppa-linux-tdep.c (hppa_linux_sigtramp_find_sigcontext): Pass in pc
	instead of sp, handle sigaltstack case.
	(hppa_linux_sigtramp_frame_unwind_cache): Adjust calls to 
	hppa_linux_sigtramp_find_sigcontext, and set base to the frame of the
	signal handler and not that of the caller.
	(hppa_linux_sigtramp_unwind_sniffer): Adjust calls to
	hppa_linux_sigtramp_find_sigcontext.

2004-05-07  Randolph Chung  <tausq@debian.org>

	* Makefile.in (ALLDEPFILES): Add hppa-linux-tdep.c and
	hppa-linux-nat.c.
	(hppa-linux-tdep.o, hppa-linux-nat.o): Define rules.
	* hppa-linux-nat.c (fetch_register, store_register): Define.
	(fetch_inferior_registers, store_inferior_registers): Define.
	(supply_gregset): Add comment and clean up some unneeded code.
	(fill_gregset): Add comment and fix so that it saves registers in
	the right place in the gregset.
	(fill_fpregset): Fix buffer overrun problem.
	* config/pa/nm-linux.h (FETCH_INFERIOR_REGISTERS): Define.

2004-05-07  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_frame_prev_register_helper): New function to 
	do common handling of the pcoqt register.
	(hppa_frame_prev_register, hppa_stub_frame_prev_register): Convert
	to use helper function.
	(hppa_frame_unwind_sniffer): Only use if unwind entry is present.
	(hppa_fallback_frame_cache, hppa_fallback_frame_this_id)
	(hppa_fallback_frame_prev_register, hppa_fallback_frame_unwind): New
	generic fallback unwinder when all else fails.
	(hppa_gdbarch_init): Add fallback sniffer.
	* hppa-tdep.h (hppa_frame_prev_register_helper): Prototype.
	* hppa-linux-tdep.c (hppa_linux_sigtramp_frame_prev_register): Convert
	to use helper function.

2004-05-08  Joel Brobecker  <brobecker@gnat.com>

	* config/djgpp/fnchange.lst: Add translation rules for
	gdb.arch/powerpc-aix-prologue.c and gdb.arch/powerpc-aix-prologue.exp.

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

	* frame.c (get_prev_frame_1): Work around GCC bug.
	* frame.h: Add comment about GCC bug.

2004-05-07  Andrew Cagney  <cagney@redhat.com>

	* observer.c: Include "commands.h" and "gdbcmd.h".
	(observer_debug, _initialize_observer): Add the
	command "set/show debug observer".
	* observer.sh: When observer debugging, log notify calls.
	* Makefile.in (observer.o): Update dependencies.

2004-05-07  Jason Molenda  (jmolenda@apple.com)

	* cli/cli-decode.c: Fix "SHOW_DOR" comment typeos.

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

	* aix-thread.c (fetch_regs_kernel_thread, fill_gprs64,
	fill_gprs32, store_regs_kernel_thread): Use tdep->ppc_gp0_regnum
	to recognize gpr regnums, instead of assuming that
	tdep->ppc_fp0_regnum marks the end of the general-purpose
	registers.

	* ppc-sysv-tdep.c (ppc64_sysv_abi_return_value): Assert that
	the given architecture has floating-point registers. 

2004-05-07  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (DEPRECATED_USE_GENERIC_DUMMY_FRAMES): Replace with
	macro defined to 1.
	* gdbarch.h, gdbarch.c: Re-generate.
	* ns32k-tdep.c (ns32k_gdbarch_init): Do not set
	deprecated_use_generic_dummy_frames.

2004-05-07  Brian Ford  <ford@vss.fsi.com>

	* NEWS: Mention Cygwin DWARF 2 support.

2004-05-07  Andrew Cagney  <cagney@redhat.com>

	* objfiles.h (struct entry_info): Delete unused fields
	deprecated_entry_file_lowpc and deprecated_entry_file_highpc.
	* objfiles.c (init_entry_point_info, objfile_relocate): Update.
	* mipsread.c (mipscoff_symfile_read): Update.
	* mdebugread.c (parse_partial_symbols): Update.
	* dwarfread.c (read_file_scope): Update.
	* dwarf2read.c (read_file_scope): Update.
	* dbxread.c (read_dbx_symtab, read_dbx_symtab): Update.
	* coffread.c (complete_symtab): Update.

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

	* infcall.c (_initialize_infcall): Fix typo.

2004-05-07  Andrew Cagney  <cagney@redhat.com>

	* cli/cli-decode.c (add_setshow_zinteger_cmd): New function.
	* command.h (add_setshow_zinteger_cmd): Declare.

2004-05-06  Randolph Chung  <tausq@debian.org>

	* config/pa/tm-hppa.h (RO_REGNUM, FLAGS_REGNUM, RP_REGNUM)
	(HPPA_FP_REGNUM, HPPA_SP_REGNUM, SAR_REGNUM, IPSW_REGNUM)
	(PCOQ_HEAD_REGNUM, PCSQ_HEAD_REGNUM, PCOQ_TAIL_REGNUM, PCSQ_TAIL_REGNUM)
	(EIEM_REGNUM, IIR_REGNUM, ISR_REGNUM, IOR_REGNUM, SR4_REGNUM)
	(RCR_REGNUM, PID0_REGNUM, PID1_REGNUM, PID2_REGNUM, PID3_REGNUM)
	(CCR_REGNUM, TR0_REGNUM, CR27_REGNUM, HPPA_FP0_REGNUM, FP4_REGNUM)
	(ARG0_REGNUM, ARG1_REGNUM, ARG2_REGNUM, ARG3_REGNUM): Move *_REGNUM 
	definitions ...
	* hppa-tdep.h: ... to here, with HPPA_ prefix.
	* Makefile.in (hppah-nat.o): Add $(hppa_tdep_h)
	* hppa-hpux-tdep.c (hppa32_hpux_frame_find_saved_regs_in_sig)
	(hppa64_hpux_frame_find_saved_regs_in_sig)
	(child_get_current_exception_event): Add HPPA_ prefix to *_REGNUM usage.
	* hppa-linux-nat.c (GR_REGNUM, TR_REGNUM, greg_map): Likewise.
	* hppa-linux-tdep.c (hppa_dwarf_reg_to_regnum)
	(hppa_linux_target_write_pc, hppa_linux_sigtramp_frame_unwind_cache)
	(hppa_linux_sigtramp_frame_prev_register): Likewise.
	* hppa-tdep.c (hppa32_return_value, hppa64_return_value)
	(hppa32_push_dummy_call, hppa64_push_dummy_call, hppa64_frame_align)
	(hppa_target_read_pc, hppa_target_write_pc, hppa_frame_cache)
	(hppa_frame_prev_register, hppa_stub_frame_unwind_cache)
	(hppa_stub_frame_prev_register, hppa_unwind_dummy_id)
	(hppa_skip_permanent_breakpoint, hppa_instruction_nullified)
	(hppa32_register_type, hppa_cannot_store_register)
	(hppa_fetch_pointer_argument, hppa_pseudo_register_read): Likewise.
	* hppah-nat.c (store_inferior_registers, fetch_register): Likewise.
	* hpread.c (hpread_process_one_debug_symbol): Likewise.
	* pa64solib.c (pa64_solib_have_load_event)
	(pa64_solib_have_unload_event, pa64_solib_loaded_library_pathname)
	(pa64_solib_unloaded_library_pathname): Likewise.
	* somsolib.c (som_solib_have_load_event, som_solib_have_unload_event)
	(som_solib_library_pathname): Likewise.

2004-05-05  Jim Ingham  <jingham@apple.com>
	
	* breakpoint.c (create_breakpoints): Copy the ignore count and
	thread id over from the pended breakpoint to the actual
	breakpoint.
	
2004-05-05  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (PARM_BOUNDARY): Delete.
	gdbarch.h, gdbarch.c: Re-generate.
	* valops.c (PARM_BOUNDARY): Delete macro.
	(value_push): Delete PARM_BOUNDARY code.
	* m68k-tdep.c (m68k_gdbarch_init): Do not set parm_boundary.

2004-05-04  Jim Blandy  <jimb@redhat.com>

	* ppc-linux-nat.c (fetch_ppc_registers, store_ppc_registers):
	Don't assume that the gprs, fprs, and UISA sprs are
	contiguous, start at register number zero, and end with fpscr.
	Instead, use the numbers from the tdep structure.

	* config/rs6000/tm-rs6000.h (FP0_REGNUM): Document that this
	should no longer be used in code specific to the RS6000 and its
	derivatives.
	* ppc-tdep.h (struct gdbarch_tdep): Add 'ppc_fp0_regnum' member.
	* rs6000-tdep.c (rs6000_gdbarch_init): Initialize
	tdep->ppc_fp0_regnum.
	(ppc_supply_fpregset, ppc_collect_fpregset)
	(rs6000_push_dummy_call, rs6000_extract_return_value)
	(rs6000_dwarf2_stab_reg_to_regnum, rs6000_store_return_value)
	(rs6000_frame_cache): Use tdep->ppc_fp0_regnum instead of
	FP0_REGNUM. 
	* aix-thread.c (supply_fprs, fetch_regs_kernel_thread)
	(fill_gprs64, fill_gprs32, fill_fprs, store_regs_kernel_thread):
	Same.
	* ppc-bdm.c (bdm_ppc_fetch_registers, bdm_ppc_fetch_registers,
	bdm_ppc_store_registers): Same.
	* ppc-linux-nat.c (ppc_register_u_addr, fetch_register) 
	(store_register, fill_fpregset): Same.
	* ppc-linux-tdep.c (ppc_linux_sigtramp_cache) 
	(ppc_linux_supply_fpregset): Same.
	* ppcnbsd-nat.c (getfpregs_supplies): Same.
	* ppcnbsd-tdep.c (ppcnbsd_supply_fpreg, ppcnbsd_fill_fpreg):
	Same.
	* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call,
	do_ppc_sysv_return_value, ppc64_sysv_abi_push_dummy_call,
	ppc64_sysv_abi_return_value): Same.
	* rs6000-nat.c (regmap, fetch_inferior_registers) 
	(store_inferior_registers, fetch_core_registers): Same.

2004-05-01  Mark Kettenis  <kettenis@gnu.org>

	* m68knbsd-nat.c: Remove file.
	* m68knbsd-tdep.c: Remove file.
	* Makefile.in: (m68knbsd-nat.o, m68knbsd-tdep.o): Remove
	dependencies.
	* configure.host: Add m68k-*-netbsdelf*.
	* configure.tgt (m68k-*-netbsd*): Set gdb_target to nbsd.
	* config/m68k/nbsdaout.mh (NATDEPFILES): Add m68kbsd-nat.o,
	solib.o and solib-sunos.o.  Remove m68knbsd-nat.o, corelow.o.
	(XM_FILE): Remove.
	* config/m68k/nbsdelf.mh: New file.
	* config/m68k/nbsd.mt: New file.
	* config/m68k/nbsdaout.mt: Remove file.
	* config/m68k/tm-nbsd.h: Don't include <sys/param.h>,
	<machine/vmparam.h> and "m68k/tm-m68k.h".  Include "solib.h".
	(BPT_VECTOR, STACK_END_ADDR): Remove defines.
	(DEPRECATED_SIGTRAMP_START, DEPRECATED_SIGTRAMP_END): Likewise.
	(use_struct_convention): Remove prototype.
	(USE_STRUCT_CONVENTION): Remove define.
	* config/m68k/xm-nbsd.h: Remove file.

2004-05-04  Michael Snyder  <msnyder@redhat.com>

	* m68k-tdep.c (m68k_gdbarch_init): Default to using 
	reg_struct_return method (as gcc usually does for cross targets).

2004-05-04  Ulrich Weigand <Ulrich.Weigand@de.ibm.com>

	Committed by Andrew Cagney.
	* s390-tdep.c (s390_sigtramp_frame_unwind_cache): Account for
	alignment padding when accessing ucontext struct members.

2004-05-04  Jim Blandy  <jimb@redhat.com>

	* config/ppc-tdep.h (struct gdbarch_tdep): Delete
	'ppc_gplast_regnum' member.
	(ppc_num_gprs): New enum constant.
	* ppc-linux-nat.c (ppc_register_u_addr): Use tdep->ppc_gp0_regnum
	and ppc_num_gprs instead of tdep->ppc_gplast_regnum.
	* rs6000-nat.c (regmap, fetch_inferior_registers,
	store_inferior_registers): Same.
	* rs6000-tdep.c (e500_pseudo_register_read)
	(e500_pseudo_register_write): Same.
	(rs6000_gdbarch_init): Don't initialize tdep->ppc_gplast_regnum.

	* config/rs6000/tm-rs6000.h (FPLAST_REGNUM): Delete #definition.
	* ppc-tdep.h (ppc_num_fprs): New enum constant.
	* aix-thread.c (fetch_regs_kernel_thread, fill_fprs,
	store_regs_kernel_thread): Use FP0_REGNUM + ppc_num_fprs, not
	FPLAST_REGNUM.
	* ppc-bdm.c (bdm_ppc_fetch_registers, bdm_ppc_store_registers):
	Same.
	* ppc-linux-nat.c (ppc_register_u_addr): Same.
	* rs6000-nat.c (regmap, fetch_inferior_registers) 
	(store_inferior_registers): Same.

	* aix-thread.c (fill_fprs): Fix off-by-one error comparing regno
	with FPLAST_REGNUM.

2004-05-03  Joel Brobecker  <brobecker@gnat.com>

	* dwarf2read.c (dwarf2_create_include_psymtab): Fix build
	failure detected by recent versions of GCC.
	(psymtab_to_symtab_1): No longer use the PST_PRIVATE macro
	to be consistent with the usage in dwarf2_create_include_psymtab.

2004-05-03  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_gdbarch_init): Fix typo in comment.
	(heuristic_proc_start): Whitespace cleanup.

2004-05-04  Mark Kettenis  <kettenis@gnu.org>

	* sun3-nat.c: Remove file.
	* Makefile.in (tm-sun3.h tm-altos.h tm-sun2.h tm-3b1.h): Remove
	dependencies.
	(ALLDEPFILES): Remove sun3-nat.c.
	(sun3-nat.o): Remove dependencies.

	* i386-interix-nat.c, i386-interix-tdep.c,
	config/i386/nm-interix.h, config/i386/interix.mh,
	config/i386/interix.mt: Remove files.
	* Makefile.in (i386-interix-nat.o, i386-interix-tdep.o): Remove
	dependencies.

2004-05-03  Mark Kettenis  <kettenis@gnu.org>

	* m68k-tdep.h (struct gdbarch_tdep): Add member
	struct_value_regnum.
	(m68k_svr4_init_abi): New prototype.
	* m68k-tdep.c: Include "floatformat.h".  Add comment about all the
	different calling conventions.
	(m68k_extract_return_value): Remove code dealing with single-field
	structs.
	(m68k_store_return_value): Remove code dealing with single-field
	structs.  Correctly store return values of 5, 6, 7 or 8 bytes.
	(m68k_extract_struct_value_address): Remove function.
	(m68k_svr4_extract_return_value,m68k_svr4_store_return_value)
	(m68k_reg_struct_return_p, m68k_return_value)
	(m68k_svr4_return_value): New functions.
	(m68k_use_struct_convention): Remove function.
	(m68k_push_dummy_call): Use new struct_value_regnum member of
	`struct gdbarch_tdep' instead of hardcoded register number to
	store STRUCT_ADDR.
	(m68k_svr4_init_abi): New function.
	(m68k_gdbarch_init): Don't set extract_return_value,
	store_return_values, deprecated_extract_struct_value_address and
	use_struct_convention.  Set return_value instead.  Initialize new
	struct_value_regnum member of `struct gdbarch_tdep'.
	* m68klinux-tdep.c: Update copyright year.
	(m68k_linux_extract_return_value, m68k_linux_store_return_value)
	(m68k_linux_extract_struct_value_address): Remove function.
	(m68k_linux_init_abi): Don't set extract_return_value,
	store_return_values, deprecated_extract_struct_value_address and
	use_struct_convention.  Call m68k_svr4_init_abi but override the
	new struct_value_regnum member of `struct gdbarch_tdep'.
	* Makefile.in (m68k-tdep.o): Update dependencies.

2004-05-03  J. Brobecker  <brobecker@gnat.com>

	* dwarf2read.c (line_header): Add new included_p field in
	field file_names.
	(partial_die_info): New field has_stmt_list. New field line_offset.
	(dwarf2_create_include_psymtab): New function.
	(dwarf2_build_include_psymtabs): New function.
	(add_file_name): Add forward declaration. Initialize new field.
	(dwarf_decode_lines): Add new parameter. Enhance this procedure
	to be able to determine the list of files included by the
	given unit, and build their associated psymtabs.
	(dwarf2_build_psymtabs_hard): Build the psymtabs for the included
	files as well.
	(psymtab_to_symtab_1): Build the symtabs of all dependencies as well.
	(read_file_scope): Update call to dwarf_decode_lines.
	(read_partial_die): Handle DW_AT_stmt_list attributes.

2004-05-02  Michael Chastain  <mec.gnu@mindspring.com>

	Unfix PR gdb/1626.
	* configure.in: Revert special case for osf5.*.
	* configure: Regenerate.

2004-05-02  Jim Blandy  <jimb@redhat.com>

	Move the symbol-file-from-memory functions into their own file.
	* symfile-mem.c, symfile-mem.h: New files.
	* symfile.c (symbol_file_add_from_bfd): New function.
	(symbol_file_add): Call symbol_file_add_from_bfd.
	(symbol_file_add_from_memory, add_symbol_file_from_memory_command):
	Moved to symfile-mem.c.
	(_initialize_symfile): Move definition of
	add-symbol-file-from-memory command to symfile-mem.c.
	* symfile.h (symbol_file_add_from_bfd): New declaration.
	* config/i386/linux.mt (TDEPFILES): Add symfile-mem.o.
 	* config/powerpc/linux.mt (TDEPFILES): Same.
	* Makefile.in (SFILES): Add symfile-mem.c.
	(symfile_mem_h): New variable.
	(HFILES_NO_SRCDIR): Add symfile-mem.h.
	(symfile-mem.o): New rule.

2004-05-01  Andrew Cagney  <cagney@redhat.com>

	* breakpoint.c (insert_bp_location): Use get_frame_id, and
	frame_find_by_id instead of frame_relative_level.
	(do_enable_breakpoint): Ditto.
	* thread.c: Update copyright.
	(info_threads_command): Ditto, simplify.

	* frame.c (deprecated_generic_get_saved_register): Delete
	function, moved to "xstormy16-tdep.c".
	* xstormy16-tdep.c (xstormy16_get_saved_register): Inline
	deprecated_generic_get_saved_register from "frame.c".
	(xstormy16_frame_saved_register): Call
	xstormy16_get_saved_register.
	* dummy-frame.c (deprecated_find_dummy_frame_regcache): Make
	static.
	* dummy-frame.h (deprecated_find_dummy_frame_regcache): Delete.
	* frame.h (deprecated_generic_get_saved_register): Delete.

2004-05-01  Michael Chastain  <mec.gnu@mindspring.com>

	* dwarfread.c: Update documentation on the state of dwarf-1.

2004-05-01  Andrew Cagney  <cagney@redhat.com>

	* stack.c (select_frame_command): Delete call to
	frame_relative_level.
	(print_frame, set_backtrace_limit_command, backtrace_limit_info):
	Delete #if0 code.
	(frame_info): Do not print FRAMELESS.
	(print_block_frame_labels): Replace DEPRECATED_STREQ.
	(catch_info): Delete #if0 code.

	* frame.c (create_sentinel_frame): Set type to SENTINEL_FRAME.
	* dummy-frame.c (dummy_frame_this_id): Use get_frame_type, instead
	of frame_relative_level.
	* sentinel-frame.c (sentinel_frame_unwinder): Set unwinder's type
	to SENTINEL_FRAME.
	* frame.h (enum frame_type): Add SENTINEL_FRAME.
	* s390-tdep.c (s390_prologue_frame_unwind_cache): Delete calls to
	frame_relative_level.

	* frame.h (deprecated_set_frame_type): Delete declaration.
	* frame.c (deprecated_set_frame_type): Delete function, update
	comments.

	* gdbarch.sh (DEPRECATED_PC_IN_SIGTRAMP): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* shnbsd-tdep.c (shnbsd_init_abi): Do not set pc_in_sigtramp.
	(shnbsd_pc_in_sigtramp): Delete.
	* i386-interix-tdep.c (i386_interix_init_abi): Do not set
	pc_in_sigtramp.
	* hppa-hpux-tdep.c (hppa_hpux_init_abi): Do not set
	pc_in_sigtramp.
	* frame.h: Update comments.
	* ppc-linux-tdep.c: Update comments.
	* breakpoint.c (bpstat_what): Update comments.

	* Makefile.in (m68klinux-tdep.o, m68klinux-nat.o): Fix
	m68klinux-tdep.o's dependencies, were previously added to
	m68klinux-nat.o.

	* alpha-tdep.c (alpha_sigtramp_frame_sniffer): Use pc_in_sigtramp.
	* alpha-tdep.h (struct gdbarch_tdep): Add pc_in_sigtramp.
	* alphafbsd-tdep.c (alphafbsd_init_abi): Update.
	* alpha-osf1-tdep.c (alpha_osf1_init_abi): Update.
	* alpha-linux-tdep.c (alpha_linux_init_abi): Update.

	* Makefile.in (m68klinux-nat.o): Update dependencies.
	* m68klinux-tdep.c: Include "trad-frame.h" and "frame-unwind.h".
	(m68k_linux_sigtramp_frame_cache)
	(m68k_linux_sigtramp_frame_this_id)
	(m68k_linux_sigtramp_frame_prev_register)
	(m68k_linux_sigtramp_frame_unwind)
	(m68k_linux_sigtramp_frame_sniffer)
	(struct m68k_linux_sigtramp_info, m68k_linux_init_abi): Code from
	m68k-tdep.h and m68k-tdep.c, add "linux" to function and variable
	names, use trad-frame.h.
	* m68k-tdep.h (struct gdbarch_tdep): Delete get_sigtramp_info.
	(struct m68k_sigtramp_info): Delete.
	* m68k-tdep.c (m68k_sigtramp_frame_cache)
	(m68k_sigtramp_frame_this_id, m68k_sigtramp_frame_prev_register)
	(m68k_sigtramp_frame_unwind, m68k_sigtramp_frame_sniffer)
	(m68k_gdbarch_init): Delete all the sigtramp code, moved to
	"m68klinux-tdep.c".

	* infrun.c (check_sigtramp2): Delete check for
	DEPRECATED_PC_IN_SIGTRAMP and INNER_THAN.

2004-05-01  Mark Kettenis  <kettenis@gnu.org>

	* m68k-tdep.h (m68kbsd_fpreg_offset): New prototype.

2004-05-01  Andrew Cagney  <cagney@redhat.com>

	* frv-linux-tdep.c: Include "trad-frame.h" and "frame-unwind.h".
	(frv_linux_sigtramp_frame_cache)
	(frv_linux_sigtramp_frame_this_id)
	(frv_linux_sigtramp_frame_prev_register)
	(frv_linux_sigtramp_frame_unwind)
	(frv_linux_sigtramp_frame_sniffer): Copied from frv-tdep.c,
	include "linux" in function and variable names, directly call
	frv_linux_pc_in_sigtramp and frv_linux_sigcontext_reg_addr, use
	the latest trad-frame code.
	(frv_linux_init_abi): Append frv_linux_sigtramp_frame_sniffer, do
	not set frv_sigcontext_reg_addr or deprecated_pc_in_sigtramp
	* Makefile.in (frv-linux-tdep.o): Update dependencies.
	* frv-tdep.h (frv_set_sigcontext_reg_addr): Delete declaration.
	* frv-tdep.c (frv_sigtramp_frame_cache)
	(frv_sigtramp_frame_this_id, frv_sigtramp_frame_prev_register)
	(frv_sigtramp_frame_unwind, frv_sigtramp_frame_sniffer): Moved to
	frv-linux-tdep.c.
	(frv_gdbarch_init): Do not append a sigtramp sniffer.
	(struct gdbarch_tdep): Delete sigcontext_reg_addr.
	(frv_set_sigcontext_reg_addr): Delete function.

	* gdbarch.sh (DEPRECATED_SIGTRAMP_START)
	(DEPRECATED_SIGTRAMP_END): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* arch-utils.c (legacy_pc_in_sigtramp): Simplify.
	* config/vax/tm-vaxbsd.h: Update copyright.
	(DEPRECATED_SIGTRAMP_START, DEPRECATED_SIGTRAMP_END): Delete.
	(DEPRECATED_IN_SIGTRAMP): Define.
	* config/m68k/tm-nbsd.h: Update copyright.
	(DEPRECATED_SIGTRAMP_START, DEPRECATED_SIGTRAMP_END): Delete.
	(DEPRECATED_IN_SIGTRAMP): Define.

2004-05-01  Mark Kettenis  <kettenis@gnu.org>

	* dwarf2-frame.c (read_encoded_value): Handle DW_EH_PE_funcrel
	encondings.  Fixes PR gdb/1628.

	* dwarf2-frame.c (execute_cfa_program): Complain if we encounter a
	DW_CFA_restore state without a matching DW_CFA_remember_state
	instead of aborting.  Fixes PR backtrace/1589.

2004-04-30  Joel Brobecker  <brobecker@gnat.com>

	* MAINTAINERS: Add self as AIX maintainer.
	Update my e-mail address in write-after-approval section.

2004-04-30  Andrew Cagney  <cagney@redhat.com>

	* frame.c (frame_type_from_pc): Delete call to PC_IN_SIGTRAMP.
	(legacy_get_prev_frame): Ditto.

	* mips-tdep.c (mips_pc_in_sigtramp): Delete.
	(mips_gdbarch_init): Do not set pc_in_sigtramp.
	* mipsread.c (sigtramp_address): Delete extern variable.
	(mipscoff_new_init): Delete reference.
	* mdebugread.c (sigtramp_address, sigtramp_end): Delete variables.
	(fixup_sigtramp): Delete function.
	* config/mips/tm-mips.h (sigtramp_address, sigtramp_end)
	(fixup_sigtramp): Delete declarations.

	* ppcnbsd-tdep.c (ppcnbsd_init_abi): Do not set
	deprecated_pc_in_sigtramp.
	(ppcnbsd_pc_in_sigtramp): Delete function.

2004-05-01  Mark Kettenis  <kettenis@gnu.org>

	* config/m68k/nm-nbsd.h: Tweak comments.
	* config/m68k/nm-nbsdaout.h: Likewise.

2004-04-30  Andrew Cagney  <cagney@redhat.com>

	* arm-tdep.c (arm_sigtramp_unwind_sniffer): Call
	legacy_pc_in_sigtramp.
	* ia64-tdep.c (ia64_sigtramp_frame_sniffer): Ditto.

2004-05-01  Mark Kettenis  <kettenis@gnu.org>

	Add OpenBSD/m68k support.
	* NEWS (New native configurations): Mention OpenBSD/m68k.
	* m68kbsd-tdep.c: New file.
	* m68kbsd-nat.c: New file.
	* Makefile.in (ALLDEPFILES): Add m68kbsd-nat.c and m68kbsd-tdep.c.
	(m68kbsd-nat.o, m68kbsd-tdep.o): New dependencies.
	* configure.host: Add m68k-*-openbsd.
	* configure.tgt: Add m68k-*-openbsd.
	* config/m68k/tm-obsd.h: New file.
	* config/m68k/obsd.mt: New file.
	* config/m68k/obsd.mh: New file.
	* config/djgpp/fnchange.lst: Add entries for m68kbsd-nat.c and
	m68kbsd-tdep.c.

2004-04-30  Andrew Cagney  <cagney@redhat.com>

	* mipsnbsd-tdep.c (mipsnbsd_pc_in_sigtramp): Delete function.
	(mipsnbsd_init_abi): Do not set pc_in_sigtramp.

2004-04-30  Mark Kettenis  <kettenis@gnu.org>

	* m68k-tdep.c (REMOTE_BPT_VECTOR): Remove define.
	* config/m68k/tm-nbsd.h (REMOTE_BPT_VECTOR): Remove define.

2004-04-30  Brian Ford  <ford@vss.fsi.com>

	Revert 2004-04-16 change.
	* i386-tdep.c (i386_gdbarch_init): Fix comment typos.
	(i386_coff_init_abi): Remove.
	* i386-tdep.h (i386_coff_init_abi): Remove.
	* i386-cygwin-tdep.c (i386_cygwin_init_abi): Remove call to above.

2004-04-30  Andrew Cagney  <cagney@redhat.com>

	* blockframe.c (find_pc_partial_function): Delete use of
	DEPRECATED_PC_IN_SIGTRAMP, DEPRECATED_SIGTRAMP_START and
	DEPRECATED_SIGTRAMP_END.

	* config/mips/tm-linux.h (DEPRECATED_IN_SIGTRAMP): Delete.
	* config/mips/tm-irix6.h (DEPRECATED_IN_SIGTRAMP): Delete.
	* config/mips/tm-nbsd.h: Delete undef DEPRECATED_IN_SIGTRAMP.
	* config/mips/tm-irix5.h (DEPRECATED_IN_SIGTRAMP): Delete.
	* config/arm/tm-embed.h (DEPRECATED_IN_SIGTRAMP): Delete.

	* defs.h (deprecated_inside_entry_file): Delete declaration.
	* blockframe.c (deprecated_inside_entry_file): Delete function.
	(legacy_frame_chain_valid): Delete call.
	* sh64-tdep.c (sh64_frame_chain): Delete call.
	* objfiles.h: Update comments.
	* i386-interix-tdep.c (i386_interix_frame_chain_valid): Delete
	call.
	* frame.c (get_prev_frame): Delete call, update comments.

2004-04-30  Brian Ford  <ford@vss.fsi.com>

	* MAINTAINERS (Write After Approval): Add myself.

2004-04-30  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (BELIEVE_PCC_PROMOTION_TYPE): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* stabsread.c (define_symbol): Delete BELIEVE_PCC_PROMOTION_TYPE
	code.

2004-04-30  Andrew Cagney  <cagney@redhat.com>

	* gdb-events.sh (selected_thread_changed)
	(selected_frame_level_changed, target_changed): Delete.
	* gdb-events.h, gdb-events.c: Re-generate.
	* valops.c (value_assign): Update.
	* stack.c (select_frame_command, up_silently_base)
	(down_silently_base): Update.

2004-04-29  Andrew Cagney  <cagney@redhat.com>

	* mips-tdep.c (mips_register_type): Re-write, handle 32-bit ABI
	registers correctly.
	(print_gp_register_row, mips32_heuristic_proc_desc)
	(mips_n32n64_push_dummy_call, mips_o32_push_dummy_call)
	(mips_o64_push_dummy_call, mips_eabi_push_dummy_call): Eliminate
	references to mips_isa_regsize.

2004-04-29  Andrew Cagney  <cagney@redhat.com>

	* mips-tdep.c (struct gdbarch_tdep): Delete
	mips_fp_register_double.
	(FP_REGISTER_DOUBLE): Delete macro, replace with test for
	mips_abi_regsize.
	(mips_gdbarch_init): Do not set mips_fp_register_double.
	(mips_dump_tdep): Do not print FP_REGISTER_DOUBLE.

2004-04-29  Joel Brobecker  <brobecker@gnat.com>

	Committed by Andrew Cagney.
        * infrun.c (handle_inferior_event): Rely on frame IDs to detect
        function calls.

2004-04-29  Andrew Cagney  <cagney@redhat.com>

	* mips-tdep.c (mips_abi_regsize): Replace tdep parameter with
	gdbarch, use mips_abi, update callers.
	(mips_stack_argsize): Replace tdep parameter with gdbarch, use
	mips_abi_regsize, update callers.
	(struct gdbarch_tdep): Delete mips_default_stack_argsize and
	mips_default_abi_regsize.
	(mips_gdbarch_init): Do not set mips_default_stack_argsize and
	mips_default_abi_regsize.

2004-04-29  Andrew Cagney  <cagney@redhat.com>

	* mips-tdep.c (mips_abi_regsize): Rename mips_saved_regsize.
	(mips_abi_regsize_string): Rename mips_saved_regsize_string.
	(struct gdbarch_tdep): Rename mips_default_saved_regsize to
	mips_default_abi_regsize.
	(mips_isa_regsize): Rename mips_regisze.
	* mipsnbsd-tdep.c: Update.
	* mips-linux-tdep.c: Update.
	* irix5-nat.c: Update.
	* mips-tdep.h (mips_isa_regsize): Update.

	* gdb-events.sh (WITH_GDB_EVENTS): Delete macro and references.
	Delete all disabled code.
	* gdb-events.h, gdb-events.c: Re-generate.
	
2004-04-19  Jerome Guitton  <guitton@gnat.com>
	    Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_skip_prologue): follow the last jump only if
	the function begins with a branch instruction.

2004-04-29  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c: Fix spelling mistakes.

2004-04-28  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
	    Andrew Cagney  <cagney@redhat.com>

	* configure.in (mips-sgi-irix5*): Define _KMEMUSER for
	<sys/proc.h>.
	* acconfig.h: Provide default _KMEMUSER value.
	* config.in, configure: Re-generate.
	* NEWS: Mention fix.

2004-04-24  Randolph Chung  <tausq@debian.org>

	* configure.host (hppa*-*-linux*): New target.
	* configure.tgt (hppa*-*-linux*): Likewise.
	* hppa-tdep.c (hppa_gdbarch_init): Set cannot_fetch_register, move
	gdbarch_init_osabi() call earlier so that osabi-specific frame
	unwinders can be registered first.
	* config/djgpp/fnchange.lst: Add entries for hppa-linux-tdep.c and
	hppa-linux-nat.c.
	* config/pa/tm-hppa.h (ISR_REGNUM, PID0_REGNUM, PID1_REGNUM)
	(PID2_REGNUM, PID3_REGNUM): Add definitions of some register numbers.
	* config/pa/linux.mh: New file.
	* config/pa/linux.mt: New file.
	* config/pa/nm-linux.h: New file.
	* config/pa/xm-linux.h: New file.
	* hppa-linux-nat.c: New file.
	* hppa-linux-tdep.c: New file.

2004-04-28  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa32_return_value): Handle both 4- and 8-byte fp
	return values.
	(hppa32_push_dummy_call): Fix small struct and floating point argument 
	passing, and make sure the stack frame is properly aligned.

2004-04-28  Andrew Cagney  <cagney@redhat.com>

	* stack.c (print_stack_frame): Fix description.

	* NEWS: Mention gdb/gdbserver/configure execute permission
	changed.  PR server/519.

2004-04-28  Andrew Cagney  <cagney@redhat.com>

	* stack.c (print_stack_frame_stub): Delete declaration.
	(struct print_stack_frame_args, print_stack_frame)
	(print_frame_info, print_frame): Replace "source" with print what.
	Replace "print" with "print_level".  Replace "args" with
	"print_args".
	* frame.h (show_and_print_stack_frame, print_stack_frame)
	(print_frame_info): Update declarations.
	* stack.c (select_and_print_frame, frame_command)
	(current_frame_command, up_command, down_command): Update calls -
	use get_selected_frame, pass "enum print_what" for source, do not
	call frame_relative_level.
	* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Ditto.
	* remote-rdp.c (remote_rdp_open): Ditto.
	* remote-mips.c (common_open): Ditto.
	* remote-e7000.c (e7000_start_remote): Ditto.
	* ocd.c (ocd_start_remote): Ditto.
	* mi/mi-main.c (mi_cmd_exec_return): Ditto.
	* infrun.c (normal_stop): Ditto.
	* inflow.c (kill_command): Ditto.
	* infcmd.c (finish_command): Ditto.
	* corelow.c (core_open): Ditto.
	* tracepoint.c (finish_tfind_command): Ditto.
	* thread.c (info_threads_command, info_threads_command) 
	(restore_current_thread, do_captured_thread_select): Ditto.
	* ada-tasks.c (task_command): Ditto.

2004-04-26  Orjan Friberg <orjanf@axis.com>

	* frame.c: Include "observer.h".
	(frame_observer_target_changed): New function.
	(_initialize_frame): Attach target_changed observer.
	* regcache.c: Include "observer.h".
	(regcache_observer_target_changed): New function.
	(_initialize_regcache): Attach target_changed observer.
	* valops.c: Include "observer.h".
	(value_assign): Notify target_changed event when modifying register.
	* Makefile.in (frame.o, regcache.o, valops.o): Add $(observer_h).

2004-04-26  Orjan Friberg <orjanf@axis.com>

	From Paul Koning <pkoning@equallogic.com>:
	* breakpoint.c (free_valchain): New function.
	(insert_bp_location, delete_breakpoint): Use free_valchain.
	(remove_breakpoint): Do not remove the valchain.
	(bpstat_stop_status): If not stopped by watchpoint, skip
	watchpoints when generating stop status list.
	* infrun.c (handle_inferior_event): Make
	stepped_after_stopped_by_watchpoint a global variable.
	* remote.c (remote_stopped_data_address): Return watch data
	address rather than zero if stepped_after_stopped_by_watchpoint is
	set.

2004-04-25  Michael Chastain  <mec.gnu@mindspring.com>

	Fix PR gdb/1626.
	* configure.in: Check for curses after termcap.
	On osf5.*, do not check for ncurses.
	* configure: Regenerate.

2004-04-25  Mark Kettenis  <kettenis@gnu.org>

	* ppcobsd-nat.c: Include "ppc-tdep.h".
	* Makefile.in (ppcobsd-nat.o): Update dependencies.

	* stack.c (return_command): Use CHECK_TYPEDEF on the return type.
	Fixes PR tdep/1623 and PR tdep/1624.

2004-04-24  Michael Chastain  <mec.gnu@mindspring.com>

	* xmodem.h, xmodem.c: Remove files.
	* Makefile.in: Remove references to xmodem.h, xmodem.c.

2004-04-23  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_stub_unwind_cache, hppa_stub_frame_unwind_cache)
	(hppa_stub_frame_this_id, hppa_stub_frame_prev_register)
	(hppa_stub_frame_unwind, hppa_stub_unwind_sniffer): New stub unwinder
	for handling stackless frames.
	(hppa_gdbarch_init): Link in hppa_stub_unwind_sniffer. 

2004-04-23  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_frame_cache): Handle the case when frame unwind
	starts at a pc before the frame is created.

2004-04-23  Joel Brobecker  <brobecker@gnat.com>

	* ChangeLog-2002: Fix year in one of the ChangeLog entries.

2004-04-23  Jerome Guitton  <guitton@gnat.fr>

	* rs6000-tdep.c (rs6000_extract_return_value): When extracting a float,
	use convert_typed_floating to get the appropriate format.

2004-04-22  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.h (find_unwind_entry, hppa_get_field, hppa_extract_5_load)
	(hppa_extract_5R_store, hppa_extract_5r_store, hppa_extract_17)
	(hppa_extract_21, hppa_extract_14, hppa_low_sign_extend)
	(hppa_sign_extend): Add prototype.
	* hppa-tdep.c (get_field, extract_5_load, extract_5R_store)
	(extract_5r_store, extract_17, extract_21, extract_14, low_sign_extend)
	(sign_extend): Rename with hppa_ prefix and make non-static.  Other
	hppa targets will also use these functions.
	(find_unwind_entry): Remove prototype (moved to hppa-tdep.h).
	(hppa_in_solib_call_trampoline, hppa_in_solib_return_trampoline)
	(hppa_skip_trampoline_code): Move to hppa-hpux-tdep.c
	(hppa_gdbarch_init): Remove gdbarch setting of 
	skip_trampoline_code, in_solib_call_trampoline and
	in_solib_return_trampoline.
	* hppa-hpux-tdep.c (hppa32_hpux_in_solib_call_trampoline)
	(hppa64_hpux_in_solib_call_trampoline): New functions, split from
	hppa_in_solib_call_trampoline.
	(hppa_hpux_in_solib_return_trampoline, hppa_hpux_skip_trampoline_code):
	Moved from hppa-tdep.c.
 	(hppa_hpux_init_abi): Set gdbarch for skip_trampoline_code, 
	in_solib_call_trampoline and in_solib_return_trampoline.

2004-04-22  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_debug): New variable.
	(find_unwind_entry, hppa_frame_cache): Add debug output.
	(_initialize_hppa_tdep): Add command to set debug flag.

2004-04-22  Andrew Cagney  <cagney@redhat.com>

	* ppcnbsd-tdep.c: Update copyright.  Include "tramp-frame.h" and
	"trad-frame.h".
	(ppcnbsd_sigtramp_cache_init, ppcnbsd_sigtramp): Implement a NetBSD
	signal trampoline unwinder.
	(ppcnbsd_init_abi): Register ppcnbsd_sigtramp.

2004-04-22  Mark Kettenis  <kettenis@gnu.org>

	Add OpenBSD/powerpc support.
	* NEWS (New native configurations): Mention OpenBSD/powerpc.
	* ppc-tdep.h (struct ppc_reg_offsets): New structure.
	(ppc_supply_gregset, ppc_supply_fpregset, ppc_collect_gregset)
	(ppc_collect_fpregset): New prototypes.
	* ppcobsd-nat.c: New file.
	* ppcobsd-tdep.c: New file.
	* ppcobsd-tdep.h: New file.
	* rs6000-tdep.c: Include "regset.h".
	(ppc_supply_reg, ppc_collect_reg, ppc_supply_gregset)
	(ppc_supply_fpregset, ppc_collect_gregset, ppc_collect_fpregset):
	New functions.
	* Makefile.in (ALLDEPFILES): Add pccobsd-nat.c and ppcobsd-tdep.c.
	(ppcobsd-nat.o, ppcobsd-tdep.o): New dependencies.
	(rs6000-tdep.o): Update dependencies.
	* configure.host: Add powerpc-*-openbsd.
	* configure.tgt: Add powerpc-*-openbsd.
	* config/powerpc/obsd.mh: New file.
	* config/powerpc/nm-obsd.h: New file.
	* config/powerpc/obsd.mt: New file.

2004-04-22  Andrew Cagney  <cagney@redhat.com>

	* frame.h (show_frame_info): Delete declaration.

	* arm-tdep.c (arm_prologue_this_id): Delete redundant cycle test.
	* m68hc11-tdep.c (m68hc11_frame_this_id): Ditto.
	* m32r-tdep.c (m32r_frame_this_id): Ditto.
	* frv-tdep.c (frv_frame_this_id): Ditto.
	* avr-tdep.c (avr_frame_this_id): Ditto.

2004-04-22  Elena Zannoni  <ezannoni@redhat.com>

	* MAINTAINERS: Drop maintenance of gdb.stabs, and linespec.c.

2004-04-22  Jim Blandy  <jimb@redhat.com>

	* ppc-linux-nat.c (ppc_register_u_addr): Don't assume that r0 is
	register number zero.

2004-04-21  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (heuristic_proc_start): 
	Warning() already prefixes "Warning: ".

2004-04-21  Andrew Cagney  <cagney@redhat.com>

	* annotate.h (deprecated_annotate_starting_hook)
	(deprecated_annotate_stopped_hook)
	(deprecated_annotate_exited_hook)
	(deprecated_annotate_signal_hook)
	(deprecated_annotate_signalled_hook): Deprecate.
	* tracepoint.h (deprecated_create_tracepoint_hook)
	(deprecated_delete_tracepoint_hook)
	(deprecated_modify_tracepoint_hook)
	(deprecated_trace_find_hook)
	(deprecated_trace_start_stop_hook): Deprecate.
	* target.h (deprecated_target_new_objfile_hook): Deprecate.
	* remote.h (deprecated_target_resume_hook)
	(deprecated_target_wait_loop_hook): Deprecate.
	* gdbcore.h (deprecated_exec_file_display_hook)
	(deprecated_file_changed_hook): Deprecate.
	* frame.h (deprecated_selected_frame_level_changed_hook): Deprecate.
	* defs.h (deprecated_modify_breakpoint_hook)
	(deprecated_command_loop_hook, deprecated_show_load_progress)
	(deprecated_print_frame_info_listing_hook)
	(deprecated_query_hook, deprecated_warning_hook)
	(deprecated_flush_hook, deprecated_create_breakpoint_hook)
	(deprecated_delete_breakpoint_hook)
	(deprecated_interactive_hook, deprecated_registers_changed_hook)
	(deprecated_readline_begin_hook, deprecated_readline_hook)
	(deprecated_readline_end_hook, deprecated_register_changed_hook)
	(deprecated_memory_changed_hook, deprecated_init_ui_hook)
	(deprecated_context_hook, deprecated_target_wait_hook)
	(deprecated_attach_hook, deprecated_detach_hook)
	(deprecated_call_command_hook, deprecated_set_hook)
	(deprecated_error_hook, deprecated_error_begin_hook)
	(deprecated_ui_load_progress_hook): Deprecate.
	* valops.c, uw-thread.c, utils.c, tui/tui-io.c: Update.
	* tui/tui-hooks.c, tracepoint.c, top.c, thread-db.c: Update.
	* target.c, symfile.c, stack.c, sol-thread.c, rs6000-nat.c: Update.
	* remote.c, remote-mips.c, regcache.c, mi/mi-interp.c: Update.
	* main.c, interps.c, infcmd.c, hpux-thread.c, frame.c: Update.
	* exec.c, dsrec.c, d10v-tdep.c, corefile.c, complaints.c: Update.
	* cli/cli-script.c, cli/cli-setshow.c, breakpoint.c: Update.
	* annotate.c, aix-thread.c: Update.

2004-04-21  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (vaxnbsd-tdep.o): Update dependencies.
	* vaxnbsd-tdep.c: Include "gdb_string.h".

	* symfile.c (symbol_file_add_from_memory): #if 0 function.
	(add_symbol_file_from_memory_command): #if 0 function body, call
	error instead.

2004-04-21  Andrew Cagney  <cagney@redhat.com>

	* gdbcore.h: Update copyright.
	(deprecated_add_core_fns): Rename add_core_fns.
	* win32-nat.c (_initialize_core_win32): Update.
	* sun3-nat.c (_initialize_core_sun3): Update.
	* shnbsd-tdep.c (_initialize_shnbsd_tdep): Update.
	* rs6000-nat.c (_initialize_core_rs6000): Update.
	* ppcnbsd-tdep.c (_initialize_ppcnbsd_tdep): Update.
	* nto-tdep.c (_initialize_nto_tdep): Update.
	* ns32knbsd-nat.c (_initialize_ns32knbsd_nat): Update.
	* mipsnbsd-tdep.c (_initialize_mipsnbsd_tdep): Update.
	* mips-nat.c (_initialize_core_mips): Update.
	* mips-linux-tdep.c (_initialize_mips_linux_tdep): Update.
	* m68knbsd-nat.c (_initialize_m68knbsd_nat): Update.
	* m68klinux-nat.c (_initialize_m68k_linux_nat): Update.
	* lynx-nat.c (_initialize_core_lynx): Update.
	* irix5-nat.c (_initialize_core_irix5): Update.
	* i386-interix-nat.c (_initialize_core_interix): Update.
	* cris-tdep.c (_initialize_cris_tdep): Update.
	* corelow.c (deprecated_add_core_fns): Update.
	* core-regset.c (_initialize_core_regset): Update.
	* core-aout.c (_initialize_core_aout): Update.
	* armnbsd-nat.c (_initialize_arm_netbsd_nat): Update.
	* alphanbsd-tdep.c (_initialize_alphanbsd_tdep): Update.
	* alpha-nat.c (_initialize_core_alpha): Update.

2004-04-21  Jim Blandy  <jimb@redhat.com>

	* rs6000-tdep.c (registers_e500, registers_7400): Doc fixes.

2004-04-19  Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2read.c (dwarf2_tmp_obstack, dwarf2_free_tmp_obstack):
	Delete.
	(dwarf_alloc_block): Take a CU argument.  Use the comp_unit_obstack.
	(read_attribute_value): Update calls to dwarf_alloc_block.
	(dwarf2_build_psymtabs_hard): Don't initialize or clean up
	dwarf2_tmp_obstack.
	(psymtab_to_symtab_1): Likewise.  Clean up using
	free_stack_comp_unit.
	(add_to_cu_func_list): Use the comp_unit_obstack.

2004-04-19  Joel Brobecker  <brobecker@gnat.com>

	* dwarf2read.c (dwarf2_flag_true_p): New function.
	(die_is_declaration): Use the function above. Add some comments.

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

	* sparcnbsd-tdep.c (_initialize_sparnbsd_tdep): Specify
	architecture when registering sparcnbsd_core_osabi_sniffer.
	Adjust comment.

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

	* infcall.c (find_function_addr): Add FUNCTION_START_OFFSET to
	return value.

	Based on a patch from Brian Ford <ford@vss.fsi.com>:
	* i386-tdep.c: Correct register numbering scheme comments
	throughout.
	(i386_stab_reg_to_regnum): Rename to i386_dbx_reg_to_regnum.
	(i386_dwarf_reg_to_regnum): Rename to i386_svr4_reg_to_regnum.
	(i386_coff_init_abi, i386_elf_init_abi): Accomodate renames above.
	(i386_gdb_arch_init): Likewise.

	* Makefile.in (ALLDEPFILES): List ppc-sysv-tdep.c, ppcnbsd-nat.c
	and ppcnbsd-tdep.c instead of ppc-sysv-tdep.o, ppcnbsd-nat.o and
	ppcnbsd-tdep.o.

	* m68k-tdep.h: Tweak comments.
	* m68k-tdep.c: Tweak comment.

2004-04-17  Randolph Chung  <tausq@debian.org>

	* Makefile.in (hppa-hpux-tdep.o): Add $(hppa_tdep_h).
	* hppa-hpux-tdep.c (hppa-tdep.h): Include.
 	(hppa_hpux_som_init_abi): Set is_elf to 0.
 	(hppa_hpux_elf_init_abi): Set is_elf to 1.
	* hppa-tdep.c (low_text_segment_address): Remove global.
	(record_text_segment_lowaddr): Pass in low address as parameter. Use
	section offset to calculate segment address.
	(internalize_unwinds): Define low_text_segment_address as local and
	pass to record_text_segment_lowaddr for ELF targets.
	(hppa_gdbarch_init): Zero fill tdep structure.
	(hppa_dump_tdep): Print tdep structure.
	* hppa-tdep.h (gdbarch_tdep): Add is_elf member to tdep structure.

2004-04-17  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_pseudo_register_read): Define.
	(hppa_gdbarch_init): Set pseudo_register_read.
	* config/pa/tm-hppa.h (DEPRECATED_CLEAN_UP_REGISTER_VALUE): Remove.
	* regcache.c (supply_register): Remove check for
	DEPRECATED_CLEAN_UP_REGISTER_VALUE since we've removed the last user.

2004-04-17  Randolph Chung  <tausq@debian.org>

	* Makefile.in (hpread.o, pa64solib.o, somsolib.o): Add $(hppa_tdep_h)
	* hppa-tdep.h (INSTRUCTION_SIZE): Move from tm-hppa.h.
	(hpread_adjust_stack_address): Move to hpread.c.
	* hppa-tdep.h (unwind_table_entry, unwind_stub_types, obj_unwind_info,
	obj_private_struct): Move from tm-hppa.h.
	* hpread.c (hppa-tdep.h): Include.
	(hpread_adjust_stack_address): Move from hppa-tdep.c.
	(hpread_read_function_type, hpread_read_doc_function_type)
	(hpread_process_one_debug_symbol): Call hpread_adjust_stack_address 
	directly.
	* pa64solib.c (hppa-tdep.h): Include.
	* somsolib.c (hppa-tdep.h): Include.
	* config/pa/tm-hppa.h (frame_info, frame_saved_regs, value, type,
	inferior_status): Remove unused forward declarations.
	(INSTRUCTION_SIZE): Move to hppa-tdep.c.
	(unwind_table_entry, unwind_stub_types, obj_unwind_info, 
	obj_private_struct): Move to hppa-tdep.h.
	(HPREAD_ADJUST_STACK_ADDRESS): Remove.

2004-04-17  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_reg_struct_has_addr, hppa_skip_prologue)
	(hppa_skip_trampoline_code, hppa_in_solib_call_trampoline)
	(hppa_in_solib_return_trampoline, hppa_cannot_store_register)
	(hppa_smash_text_address, hppa_target_read_pc, hppa_target_write_pc):
	Remove forward declaration and make static.
	(hppa_reg_struct_has_addr): Remove.

2004-04-16  Joel Brobecker  <brobecker@gnat.com>

	* observer.sh: Move comments in sed command to first column.

2004-04-16  Jason Molenda  (jmolenda@apple.com)

	* frame.c: Minor typeo corrections in comments.

2004-04-16  Joel Brobecker  <brobecker@gnat.com>

	* observer.c (observer_test_first_notification_function): Update
	function profile.
	(observer_test_second_notification_function): Likewise.
	(observer_test_third_notification_function): Likewise.

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

	From Brian Ford <ford@vss.fsi.com>:
	* i386-tdep.c (i386_coff_init_abi): New function.
	* i386-tdep.h (i386_coff_init_abi): New prototype.	
	* i386-cygwin-tdep.c (i386_cygwin_init_abi): Call it.  Use correct
	register number translation functions for DWARF and DWARF 2.

2004-04-16  Joel Brobecker  <brobecker@gnat.com>

        * dwarf2read.c: Back out my previous change, it was incorrect.

2004-04-16  Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2read.c: Include "hashtab.h".
	(struct dwarf2_cu): Add partial_dies, comp_unit_obstack,
	has_namespace_info.
	(struct partial_die_info): Add comments.  Use bitfields to reduce
	memory footprint.  Add scope, scope_set, has_specification,
	spec_offset, die_parent, die_child, and die_sibling.
	(peek_die_abbrev): Add prototype.
	(partial_read_comp_unit_head): New function, broken out from
	dwarf2_build_psymtabs_hard.
	(dwarf2_build_psymtabs_hard): Remove unused variable abbrev_ptr.
	Use partial_read_comp_unit_head.  Initialize the CU and
	comp_unit_obstack.  Update calls to read_partial_die and
	scan_partial_symbols.  Use free_stack_comp_unit and
	load_partial_dies.
	(scan_partial_symbols): Change PDI to a pointer.  Use the child and
	sibling pointers to walk partial DIEs.  Call fixup_partial_die.
	Update calls to helper functions.  Remove NAMESPACE argument.
	Update comments.
	(partial_die_parent_scope, partial_die_full_name): New functions.
	(add_partial_symbol): Remove namespace argument.  Update call to
	pdi_needs_namespace.  Use partial_die_full_name.  Handle
	DW_TAG_namespace.  Check has_namespace_info flag.
	(pdi_needs_namespace): Remove NAMESPACE argument.  Just check the
	tag.  Handle namespaces.
	(add_partial_namespace, add_partial_enumeration): Simplify.
	(guess_structure_name): New function, derived from
	add_partial_structure.
	(add_partial_structure): Remove.
	(determine_class_name): Update comment.
	(dwarf2_read_abbrevs): Set has_namespace_info flag.
	(is_type_tag_for_partial, load_partial_dies): New functions.
	(read_partial_die): Pass abbrev and abbrev_len as arguments.
	Record specifications instead of following them immediately.
	(find_partial_die_in_comp_unit, find_partial_die)
	(fixup_partial_die, free_stack_comp_unit)
	(hashtab_obstack_allocate, dummy_obstack_deallocate)
	(partial_die_hash, partial_die_eq): New functions.
	* Makefile.in (hashtab_h): Define.
	(dwarf2read.o): Update dependencies.
	(observer_inc, observer_h): Move to the correct section.

2004-04-15  Joel Brobecker  <brobecker@gnat.com>

	* dwarf2read.c (dwarf2_attribute_true_p): New function.
	(die_is_declaration): Use the function above. Add comment.

2004-04-15  Joel Brobecker  <brobecker@gnat.com>

	* dwarf2read.c (read_structure_scope): Identify stub types
	using die_is_declaration() only.

2004-04-15  Roland McGrath  <roland@redhat.com>

	* symfile.c (symbol_file_add_with_addrs_or_offsets): Take ABFD as
	argument instead of NAME.
	(symbol_file_add, reread_separate_symbols): Call symfile_bfd_open
	in call to symbol_file_add_with_addrs_or_offsets.
	(build_addr_info): New function, helper for ...
	(symbol_file_add_from_memory): New function.
	(add_symbol_file_from_memory_command): New function using that.
	(_initialize_symfile): Register it for add-symbol-file-from-memory.
	(pre_add_symbol_hook): Add const to argument type.
	* symfile.h (symbol_file_add_from_memory): Declare it.

2004-04-15  Mark Kettenis  <kettenis@gnu.org>

	* NEWS (New native configurations): Mention OpenBSD/vax.
	* configure.host: Add vax-*-openbsd*.
	* config/vax/obsd.mh: New file.
	* config/vax/nm-obsd.h: New file.

	* vax-tdep.c: Include "regset.h".
	(vax_supply_gregset): New function.
	(vax_gregset): New variable.
	(vax_regset_from_core_section): New function.
	(vax_gdbarch_init): Set regset_from_core_section.
	* Makefile.in (vax-tdep.o): Update dependencies.

2004-04-15  Andrew Cagney  <cagney@redhat.com>

	* observer.c (normal_stop_subject, observer_notify_normal_stop)
	(observer_normal_stop_notification_stub)
	(observer_attach_normal_stop, observer_detach_normal_stop):
	Delete, replaced by #include "observer.inc".
	* infrun.c (normal_stop): Pass "stop_bpstat" to
	observer_notify_normal_stop.
	* Makefile.in (observer_inc): Define.
	(observer.o): Update dependencies.
	(observer.h, observer.inc): New rules.
	* observer.h: Delete file.
	* observer.sh: New file.

2004-04-15  Mark Kettenis  <kettenis@gnu.org>

	* vax-tdep.c (vax_frame_cache): Fix typo.

2004-04-14  Mark Kettenis  <kettenis@gnu.org>

	* NEWS (New native configurations): Mention NetBSD/vax.
	* configure.host: Add vax-*-netbsdelf* and vax-*-netbsd*.
	* config/vax/nbsdelf.mh: New file.
	* config/vax/nbsdaout.mh: New file.
	* config/vax/nm-nbsd.h: New file.
	* config/vax/nm-nbsdaout.h: New file.

	* vaxnbsd-tdep.c: New file.
	* Makefile.in (vaxnbsd-tdep.o): New dependency.
	* configure.tgt: Add vax-*-netbsd* and vax-*-openbsd*.
	* config/vax/nbsd.mt: New file.
	* config/vax/tm-nbsd.h: New file.

	* Makefile.in (vaxbsd-nat.o): New dependency.

	* vax-tdep.h (vax_regnum): Add VAX_R0_REGNUM and VAX_R1_REGNUM.
	* vax-tdep.c (vax_store_arguments): Remove struct_return and
	struct_addr arguments.  Don't push return value address.
	(vax_push_dummy_call): Don't pass STRUCT_RETURN and STRUCT_ADDR as
	arguments to vax_store_arguments.  Store return value address in
	R1.
	(vax_store_struct_return, vax_extract_return_value)
	(vax_store_return_value): Remove functions.
	(vax_return_value): New function.
	(vax_gdbarch_init): Set return value.  Don't set
	deprecated_store_struct_return, deprecated_extract_struct_return
	and deprecated_store_return_value.

2004-04-14  Andreas Schwab  <schwab@suse.de>

	* ia64-tdep.c (ia64_libunwind_frame_prev_register): Handle null
	value buffer.
	* libunwind-frame.c (libunwind_frame_prev_register): Likewise.

2004-04-14  Mark Kettenis  <kettenis@gnu.org>

	* vax-tdep.c (vax_store_arguments, vax_push_dummy_call)
	(vax_unwind_dummy_id): New functions.
	(vax_push_dummy_frame, vax_pop_frame): Remove functions.
	(vax_call_dummy_words, sizeof_vax_call_dummy_words): Remove
	variables.
	(vax_fix_call_dummy): Remove function.
	(vax_gdbarch_init): Set push_dummy_call and unwind_dummy_id.
	Don't set deprecated_push_dummy_frame, deprecated_pop_frame,
	call_dummy_location, deprecated_call_dummy_words,
	deprecated_sizeof_call_dummy_words,
	deprecated_call_dummy_breakpoint_offset,
	deprecated_use_generic_dummy_frames, deprecated_pc_in_call_dummy,
	and deprecated_dummy_write_sp.

2004-04-13  David Carlton  <carlton@kealia.com>

	* MAINTAINERS: Move myself to "paper trail" section.

2004-04-12  Mark Kettenis  <kettenis@gnu.org>

	* vax-tdep.c: Include "frame-base.h", "frame-unwind.h" and
	"trad-frame.h".
	(vax_frame_init_saved_regs): Remove function.
	(vax_sigtramp_saved_pc): Remove function.
	(vax_frame_saved_pc): Remove function.
	(vax_frame_args_address): Remove function.
	(vax_frame_num_args): Rewrite.
	(vax_frame_chain): Remove function.
	(vax_push_dummy_frame): Replace DEPRECATED_FP_REGNUM with
	VAX_FP_REGNUM.
	(vax_pop_frame): Likewise.
	(vax_saved_pc_after_call): Remove function.
	(struct vax_frame_cache): New structure.
	(vax_frame_cache): New function.
	(vax_frame_this_id): New function.
	(vax_frame_prev_register): New function.
	(vax_frame_unwind): New variable.
	(vax_frame_sniffer): New function.
	(vax_frame_base_address): New function.
	(vax_frame_args_address): New function.
	(vax_frame_base): New variable.
	(vax_unwind_pc): New function.
	(vax_gdbarch_init): Don't set deprecated_init_frame_pc,
	deprecated_fp_regnum, deprecated_saved_pc_after_call,
	deprecated_frame_chain, deprecated_frame_saved_pc,
	deprecated_frame_args_address and
	deprecated_frame_init_saved_regs.
	* Makefile.in (vax-tdep.o): Update dependencies.

	* vaxbsd-nat.c: New file.

	* vax-tdep.h: Update copyright year.  Adjust comments.
	(VAX_REGISTER_SIZE, VAX_REGISTER_BYTES, VAX_MAX_REGISTER_RAW_SIZE,
	VAX_MAX_REGISTER_VIRTUAL_SIZE): Remove macros.
	(vax_regnum): New enum.  Replacing...
	(VAX_AP_REGNUM, VAX_FP_REGNUM, VAX_SP_REGNUM, VAX_PC_REGNUM)
	(VAX_PS_REGNUM): ... these removed macros.
	* vax-tdep.c (vax_register_name): Remove prototype.
	(vax_register_name): Reorganize somewhat.  Use ARRAY_SIZE.
	(vax_register_byte, vax_register_raw_size,
	vax_register_virtual_size, vax_register_virtual_type): Remove
	functions.
	(vax_register_type): New function.
	(vax_breakpoint_from_pc): Reorganize.
	(vax_gdbarch_init): Set register_type.  Don't set
	deprecated_register_size, deprecated_register_bytes,
	deprecated_register_byte, deprecated_register_raw_size,
	deprecated_max_register_raw_size,
	deprecated_register_virtual_size,
	deprecated_max_register_virtual_size and
	deprecated_register_virtual_type.  Add comment on stack direction.

2004-04-11  Mark Kettenis  <kettenis@gnu.org>

	* amd64-tdep.h (amd64_regnum): Add AMD64_CS_REGNUM,
	AMD64_SS_REGNUM, AMD64_DS_REGNUM, AMD64_ES_REGNUM,
	AMD64_FS_REGNUM and AMD64_GS_REGNUM.

2004-04-10  Randolph Chung  <tausq@debian.org>

	* MAINTAINERS (write after approval): Add myself.

2004-04-07  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_inner_than): Remove.
	(is_pa_2): Remove unused static variable.
	(hppa_gdbarch_init): Use core_addr_greaterthan instead of own version.

2004-03-10  Paul N. Hilfinger  <Hilfinger@gnat.com>

	* language.h (language_defn): Add new la_post_parser field.
	* parser-defs.h (null_post_parser): New declaration (default for
	la_post_parser).

	* parse.c (parse_exp_1): Move code to parse_exp_in_context and
	insert call to that function.
	(parse_exp_in_context): New function, including code formerly in
	parse_exp_1.  Calls language-dependent post-parser after
	prefixification.
	(parse_expression_in_context): New exported function.
	(null_post_parser): New definition.
	* expression.h (parse_expression_in_context): Add declaration.

	* p-lang.c (pascal_language_defn): Add trivial post-parser.
	* c-lang.c (c_language_defn): Ditto.
	(cplus_language_defn): Ditto.
	(asm_language_defn): Ditto.
	(minimal_language_defn): Ditto.
	* f-lang.c (f_language_defn): Ditto.
	* jv-lang.c (java_language_defn): Ditto.
	* language.c (unknown_language_defn): Ditto.
	(auto_language_defn): Ditto.
	(local_language_defn): Ditto.
	* m2-lang.c (m2_language_defn): Ditto.
	* scm-lang.c (scm_language_defn): Ditto.
	* obj-lang.c (objc_language_defn): Ditto.

2004-04-10  Mark Kettenis  <kettenis@gnu.org>

	* amd64nbsd-tdep.c (amd64nbsd_sigcontext_addr): Remove function.
	(amd64nbsd_mcontext_addr): New function.
	(amd64nbsd_init_abi): Initialize TDEP->sigcontext_addr as
	amd64nbsd_mcontext_addr.  Directly initialize TDEP->sc_reg_offset
	with amd64nbsd_r_reg_offset, instead of building it on the fly.

	* corelow.c (core_xfer_partial): Fix coding standards violation.
	Add support for TARGET_OBJECT_WCOOKIE.

	* sparc-linux-tdep.c (sparc32_linux_init_abi): Don't set
	deprecated_pc_in_sigtramp.
	* sparc-sol2-tdep.c (sparc32_sol2_init_abi): Likewise.
	* sparc64-sol2-tdep.c (sparc64_sol2_init_abi): Likewise.
	* sparc64fbsd-tdep.c (sparc64fbsd_init_abi): Likewise.
	* sparc64nbsd-tdep.c (sparc64nbsd_init_abi): Likewise.
	* sparc64obsd-tdep.c (sparc64obsd_init_abi): Likewise.
	* sparcnbsd-tdep.c (sparc32nbsd_init_abi): Likewise.
	* sparcobsd-tdep.c (sparc32obsd_init_abi): Likewise.

	* amd64-linux-tdep.c, amd64nbsd-tdep.c, amd64obsd-tdep.c,
	i386-linux-tdep.c, i386-tdep.c, i386nbsd-tdep.c, i386obsd-tdep.c:
	Fix typo.

	* amd64-tdep.c (amd64_supply_fxsave): Only fiddle with
	I387_FISEG_REGNUM and I387_FOSEG_REGNUM in 64-bit mode.
	(amd64_collect_fxsave): Likewise.

	* i386-sol2-tdep.c: Include "gdb_string.h".
	(i386_sol2_sigtramp_p): Recognize signal trampoline based on its
	name.
	* Makefile.in (i386-sol2-tdep.o): Update dependencies.

2004-04-10  Mark Kettenis  <kettenis@gnu.org>

	* i386-sol2-tdep.c: Include "solib-svr4.h".
	(i386_sol2_init_abi): Set solib_svr4_fetch_link_map_offsets.
	* Makefile.in (i386-sol2-tdep.o): Update dependencies.
	* config/i386/tm-i386sol2.h: Include :solib.h".
	* config/i386/i386sol2.mh (NATDEPFILES): Remove solib.o,
	solib-svr4.o and solib-legacy.o.
	* config/i386/i386sol2.mt (TDEPFILES): Add solib.o and
	solib-svr4.o.

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

	* amd64-linux-nat.c (fetch_inferior_registers): Correctly check
	whether a register is supplied by PTRACE_GETFPREGS.
	(store_inferior_registers): Likewise.
	* amd64bsd-nat.c (fetch_inferior_registers): Correctly check
	whether a register is supplied by PT_GETFPREGS.
	(store_inferior_registers): Likewise.

	* config/i386/linux.mt (TDEPFILES): Remove solib-legacy.o.
	* config/i386/linux64.mt (TDEPFILES): Likewise.

	* i386-linux-nat.c: Update copyrigth year.  Tweak comment.

	* amd64-tdep.c (amd64_sigtramp_frame_sniffer): Rewrite to use new
	sigtramp_p member of `struct gdbarch_tdep'.  Also check whether
	the program counter is in the range specified by `struct
	gdbarch_tdep'.
	* amd64-linux-tdep.c: Include "symtab.h".
	(amd64_linux_pc_in_sigtramp): Remove function.
	(amd64_linux_sigtramp_p): New function.
	(amd64_linux_init_abi): Initialize TDEP->sigtramp_p.  Don't set
	deprecated_pc_in_sigtramp.
	* amd64nbsd-tdep.c: Include "symtab.h".
	(amd64nbsd_sigtramp_p): New function.
	(amd64nbsd_init_abi): Initialize TDEP->sigtramp_p.  Don't set
	deprecated_pc_in_sigtramp.
	* amd64obsd-tdep.c: Include "symtab.h" and "objfiles.h".  Add a
	few comments.
	(amd64obsd_pc_in_sigtramp): Remove function.
	(amd64obsd_sigtramp_p): New function.
	(amd64obsd_init_abi): Initialize TDEP->sigtramp_p.  Don't set
	deprecated_pc_in_sigtramp.
	* i386-tdep.h (struct gdbarch_tdep): Add sigtramp_p member.
	(i386bsd_pc_ins_sigtramp): Remove prototype.
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove prototypes.
	* i386-tdep.c (i386_sigtramp_frame_sniffer): Rewrite to use new
	sigtramp_p member of `struct gdbarch_tdep'.  Also check whether
	the program counter is in the range specified by `struct
	gdbarch_tdep'.
	(i386_pc_in_sigtramp, i386_svr4_pc_in_sigtramp): Remove functions.
	(i386_sigtramp_p, i386_svr4_sigtramp_p): New functions.
	(i386_go32_pc_in_sigtramp): Remove function.
	(i386_svr4_init_abi): Don't set deprecated_pc_in_sigtramp.
	Initialize TDEP->sigtramp_p.
	(i386_go32_init_abi): Initialize TDEP->sigtramp_p to NULL.
	(i386_gdbarch_init): Initialize TDEP->sigtramp_p.  Don't set
	deprecated_pc_in_sigtramp.
	* i386-linux-tdep.c: Adjust comments.
	(i386_linux_pc_in_sigtramp): Remove function.
	(i386_linux_sigtramp_p): New function.
	(i386_linux_init_abi): Initialize TDEP->sigtramp_p.  Don't set
	deprecated_pc_in_sigtramp.
	* i386-nto-tdep.c: Update copyright year.
	(i386nto_pc_in_sigtramp): Remove function.
	(i386nto_sigtramp_p): New function.
	(i386nto_sigcontext_addr): Use I386_ESP_REGNUM instead of
	SP_REGNUM.
	(i386nto_init_abi): Initialize TDEP->sigtramp_p.  Don't set
	deprecated_pc_in_sigtramp.
	* i386-sol2-tdep.c: Update copyright year.
	(i386_sol2_pc_in_sigtramp): Remove function.
	(i386_sol2_sigtramp_p): New function.
	(i386_sol2_init_abi): Initialize TDEP->sigtramp_p.  Don't set
	deprecated_pc_in_sigtramp.
	* i386bsd-tdep.c (i386bsd_pc_in_sigtramp): Remove function.
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove functions.
	(i386bsd_init_abi): Don't set deprecated_pc_in_sigtramp,
	deprecated_sigtramp_start and deprecated_sigtramp_end.
	* i386nbsd-tdep.c: Include "frame.h" and "symtab.h".
	(i386nbsd_pc_in_sigtramp): Remove function.
	(i386nbsd_sigtramp_p): New function.
	(i386nbsd_init_abi): Don't set deprecated_pc_in_sigtramp,
	deprecated_sigtramp_start, deprecated_sigtramp_end.  Initialize
	TDEP->sigtramp_start, TDEP->sigtramp_end and TDEP->sigtramp_p.
	* i386obsd-tdep.c: Include "frame.h", "symtab.h" and "objfiles.h".
	(i386obsd_pc_in_sigtramp): Remove function.
	(i386obsd_sigtramp_p): New function.
	(i386obsd_sigtramp_start, i386obsd_sigtramp_end): Remove
	functions.
	(i386bsd_init_abi): Don't set deprecated_pc_in_sigtramp,
	deprecated_sigtramp_start, deprecated_sigtramp_end.  Initialize
	TDEP->sigtramp_p.
	* Makefile.in (amd64-linux-tdep.o, amd64nbsd-tdep.o,
	amd64obsd-tdep.o, i386nbsd-tdep.o, i386obsd-tdep.o): Update
	dependencies.

	* config/i386/i386aout.mt: Remove file.

	* configure.tgt: Remove i[34567]86-*-go32*,
	i[34567]86-*-msdosdjgpp*, i[34567]86-*-sco*, i[34567]86-*-sysv*
	and i[34567]86-*-isc*.  Set gdb_target to i386 for
	i[34567]86-*-netware* and i[34567]86-*-*.
	* config/i386/i386.mt: New file.
	* config/i386/embed.mt: Remove file.
	* config/i386/go32.mt: Remove file.
	* config/i386/i386nw.mt: Remove file.
	* config/i386/i386v.mt: Remove file.
	* config/i386/tm-go32.h: Remove file.

	* tui/tui-hooks.c: Include "readline/readline.h" after
	"gdb_curses.h" instead of before.
	* tui/tui-io.c: Likewise.

	* tui/tui.c: Fix typo in comment.

	* sparc64-tdep.c (sparc_address_from_register): Remove function.

2004-04-08  Andrew Cagney  <cagney@redhat.com>

	* breakpoint.h (deprecated_exception_catchpoints_are_fragile)
	(deprecated_exception_support_initialized): Declare.
	* hppa-hpux-tdep.c (initialize_hp_cxx_exception_support)
	(initialize_hp_cxx_exception_support)
	(child_enable_exception_callback): Update.
	* breakpoint.c (deprecated_exception_catchpoints_are_fragile)
	(deprecated_exception_support_initialized): Rename
	deprecated_exception_catchpoints_are_fragile and
	deprecated_exception_support_initialized.
	(breakpoint_init_inferior, breakpoint_init_inferior): Update.

	* symtab.c (deprecated_hp_som_som_object_present): Rename
	hp_som_som_object_present.
	* symtab.h (deprecated_hp_som_som_object_present): Declare.
	* symfile.c (hp_som_som_object_present, RESET_HP_UX_GLOBALS):
	Update.  Delete extern declaration.
	* valops.c (hp_som_som_object_present): Ditto.
	* parse.c (deprecated_hp_som_som_object_present)
	(parse_nested_classes_for_hpacc): Ditto.
	* hpread.c (hp_som_som_object_present, hpread_expand_symtab): Ditto.
	* hppa-hpux-tdep.c (hp_som_som_object_present)
	(initialize_hp_cxx_exception_support): Ditto.
	* eval.c (hp_som_som_object_present, evaluate_subexp_standard): Ditto.
	* cp-valprint.c (hp_som_som_object_present)
	(cp_print_class_method): Ditto.
	* c-typeprint.c (hp_som_som_object_present):
	(c_type_print_base): Ditto.
	* c-exp.y (hp_som_som_object_present): Ditto.

2004-04-08  Andrew Cagney  <cagney@redhat.com>

	* frame-unwind.c (struct frame_unwind_table, frame_unwind_init)
	(frame_unwind_prepend_unwinder, frame_unwind_append_sniffer)
	(frame_unwind_find_by_frame): Re-implement the unwind code so
	that it can both prepend and append sniffers.  Replace
	frame_unwind_register_unwinder with frame_unwind_prepend_unwinder.
	* tramp-frame.c (tramp_frame_append): Use
	frame_unwind_prepend_unwinder.
	* frame-unwind.h (frame_unwind_prepend_unwinder): Replace
	frame_unwind_register_unwinder.
	* tramp-frame.h (tramp_frame_prepend_unwinder): Rename
	tramp_frame_append.
	* tramp-frame.c (tramp_frame_prepend_unwinder): Update.
	* mips-linux-tdep.c (mips_linux_init_abi, mips_linux_init_abi)
	(mips_linux_init_abi): Update.

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

	* ppc-linux-tdep.c (ELF_NREG, ELF_NFPREG, ELF_NVRREG)
	(ELF_FPREGSET_SIZE):  Delete constants formerly used in core
	file support.

2004-04-07  Kevin Buettner  <kevinb@redhat.com>

	* ia64-tdep.c (elf.h): Don't include.
	(elf/ia64.h) [HAVE_LIBUNWIND_IA64_H]: Include.

2004-04-07  Jason Molenda  (jmolenda@apple.com)

	* frame.h: Typeo corrections in comments.

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

	* i386-tdep.c (i386_stab_reg_to_regnum): Correct numbering for
	%esp and %ebp

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

	* config/sparc/linux.mt (TDEPFILES): Remove solib-legacy.o.
	* config/sparc/linux64.mt (TDEPFILES): Likewise.
	* config/sparc/sol2.mt (TDEPFILES): Add solib.o and solib-svr4.o.
	* config/sparc/sol2.mh (NATDEPFILES): Remove solib.o, solib-svr4.o
	and solib-legacy.o.
	* config/sparc/sol2-64.mt (TDEPFILES): Add solib.o and
	solib-svr4.o.
	* config/sparc/tm-sol2.h: Update copyright year.  Include
	"solib.h".

	* sparc-sol2-tdep.c: Update copyright year.  Include
	"solib-svr4.h".
	(sparc32_sol2_init_abi): Set solib_svr4_fetch_link_map_offsets.
	* sparc64-sol2-tdep.c: Include "solib-svr4.h".
	(sparc64_sol2_init_abi): Set solib_svr4_fetch_link_map_offsets.
	* Makefile.in (sparc-sol2-tdep.o, sparc64-sol2-tdep.o): Update
	dependencies.

2004-04-06  Andrew Cagney  <cagney@redhat.com>

	* infttrace.c: Include "infttrace.h".
	* infttrace.h: Include "target.h".
	* Makefile.in (infttrace_h): Update.
	(infttrace.o): Update.

2004-04-06  Andrew Cagney  <cagney@redhat.com>

	* hppah-nat.c (hpux_has_forked, hpux_has_vforked)
	(hpux_has_execd, hpux_has_syscall_event): Include "infttrace.h",
	move extern declarations from here ...
	* infttrace.h: ... to here.
	* Makefile.in (hppah-nat.o): Update dependencies.

	* hppa-tdep.c (hppa_breakpoint_from_pc): Make static.
	(hppa_gdbarch_init): Set gdbarch_breakpoint_from_pc
	* config/pa/tm-hppa.h (BREAKPOINT_FROM_PC, BREAKPOINT32):
	(hppa_breakpoint_from_pc): Delete.

	* MAINTAINERS: Mark hppa-elf as buildable with -Werror.

2004-04-05  Andrew Cagney  <cagney@redhat.com>

	* hppa-tdep.c: Do not include <sys/types.h>, <sys/param.h>,
	<signal.h>, <sys/ptrace.h>, #include "a.out.encap.h",
	<sys/file.h>.

2004-04-06  Randolph Chung  <tausq@debian.org>

	Committed by Andrew Cagney (mechanical change).
	* hppa-tdep.c: (args_for_find_stub, hp_som_som_object_present,
	exception_catchpoints_are_fragile, find_stub_with_shl_get,
	cover_find_stub_with_shl_get, initialize_hp_cxx_exception_support,
	child_enable_exception_callback, current_ex_event,
	null_symtab_and_line, child_get_current_exception_event,
	HP_ACC_EH_notify_hook, HP_ACC_EH_set_hook_value,
	HP_ACC_EH_notify_callback, HP_ACC_EH_break, HP_ACC_EH_catch_throw,
	HP_ACC_EH_catch_catch, __eh_notification, hp_cxx_exception_support,
	hp_cxx_exception_support_initialized, eh_notify_hook_addr,
	eh_notify_callback_addr, eh_break_addr, eh_catch_catch_addr,
	eh_catch_throw_addr, break_callback_sal, setup_d_pid_in_inferior):
	Move hpux-specific definitions ...
	* hppa-hpux-tdep.c: ... to here.

2004-04-05  Andrew Cagney  <cagney@redhat.com>

	* hppa-tdep.c (hppa_frame_cache): Pass the frame's func to
	skip_prologue_using_sal.

2004-04-05  Andrew Cagney  <cagney@redhat.com>

	* config/i386/tm-i386.h: Delete file.
	* config/i386/tm-vxworks.h: Update copyright, do not include
	"tm-i386.h".
	* config/i386/tm-nto.h, config/i386/tm-linux.h: Ditto.
	* config/i386/tm-i386sol2.h, config/i386/tm-i386lynx.h: Ditto.
	* config/i386/tm-go32.h, config/i386/tm-cygwin.h: Ditto.
	* config/i386/ncr3000.mt (TM_FILE): Delete.
	* config/i386/interix.mt (TM_FILE): Delete.
	* config/i386/i386v.mt (TM_FILE): Delete.
	* config/i386/i386nw.mt (TM_FILE): Delete.
	* config/i386/i386gnu.mt (TM_FILE): Delete.
	* config/i386/i386aout.mt (TM_FILE): Delete.
	* config/i386/embed.mt (TM_FILE): Delete.

2004-04-05  Kevin Buettner  <kevinb@redhat.com>

	* frv-tdep.h (fsr0_regnum, acc0_regnum, acc7_regnum, accg0123_regnum)
	(accg4567_regnum, msr0_regnum, msr1_regnum, gner0_regnum)
	(gner1_regnum, fner0_regnum, fner1_regnum, accg0_regnum)
	(accg7_regnum): New constants.
	(last_spr_regnum, last_pseudo_regnum): Update.
	* frv-tdep.c (new_variant): Initialize names for fsr0, acc0-acc7,
	accg0-accg7, msr0, msr1, gner0, gner1, fner0, and fner1.
	(frv_pseudo_register_read, frv_pseudo_register_write): Add support
	for accg registers.
	(frv_register_sim_regno): Update spr_map[].

2004-04-04  Andrew Cagney  <cagney@redhat.com>

	* config/mips/xm-riscos.h: Delete.
	* config/mips/xm-mipsv4.h, config/mips/xm-mips.h: Delete.
	* config/mips/tm-mipsv4.h, config/mips/riscos.mh: Delete.
	* config/mips/nm-riscos.h, config/mips/nm-news-mips.h: Delete.
	* config/mips/nm-mips.h, config/mips/news-mips.mh: Delete.
	* config/mips/news-mips.mh, config/m68k/tm-m68kv4.h: Delete.
	* config/mips/decstation.mh, config/mips/littlemips.mh: Delete.
	* config/mips/mipsv4.mt, config/m68k/tm-sun3.h: Delete.
	* config/m68k/xm-sun3os4.h, config/m68k/xm-sun3.h: Delete.
	* config/m68k/xm-sun2.h, config/m68k/xm-m68kv4.h: Delete.
	* config/m68k/xm-dpx2.h, config/m68k/xm-delta68.h: Delete.
	* config/m68k/xm-3b1.h, config/m68k/tm-sun3os4.h: Delete.
	* config/m68k/tm-m68klynx.h, config/m68k/tm-dpx2.h: Delete.
	* config/m68k/tm-delta68.h, config/m68k/tm-3b1.h: Delete.
	* config/m68k/sun3os4.mt, config/m68k/nm-sysv4.h: Delete.
	* config/m68k/nm-sun3.h, config/m68k/sun3os4.mh: Delete.
	* config/m68k/sun2os3.mh, config/m68k/nm-sun2.h: Delete.
	* config/m68k/nm-m68klynx.h, config/m68k/sun3os3.mt: Delete.
	* config/m68k/nm-dpx2.h, config/m68k/sun2os3.mt: Delete.
	* config/m68k/dpx2.mh, config/m68k/sun3os3.mh: Delete.
	* config/m68k/sun2os4.mh, config/m68k/nm-delta68.h: Delete.
	* config/m68k/m68kv4.mt, config/m68k/m68klynx.mt: Delete.
	* config/m68k/3b1.mt, config/m68k/m68klynx.mh: Delete.
	* config/m68k/m68kv4.mh, config/m68k/sun2os4.mt: Delete.
	* config/m68k/tm-sun2os4.h, config/m68k/3b1.mh: Delete.
	* config/m68k/dpx2.mt, config/m68k/delta68.mt: Delete.
	* config/m68k/tm-sun2.h, config/m68k/delta68.mh: Delete.

	* configure.tgt: Remove m68000-*-sunos3*, m68000-*-sunos4*,
	m68*-bull-sysv*, m68*-att-*, m68*-motorola-*, m68*-*-lynxos*,
	m68*-*-sunos3*, m68*-*-sunos4*, m68*-*-sysv4*, mips*-*-sysv4*.
	* configure.host: Remove m680[01]0-sun-sunos3*,
	m680[01]0-sun-sunos4*, m68*-att-*, m68*-bull*-sysv*,
	m68*-*-lynxos*, m68*-*-sysv4*, m68*-motorola-*, m68*-sun-sunos3*,
	m68*-sun-sunos4*, m68*-sun-*, mips-dec-*, mips-little-*,
	mips-sony-*, mips-*-mach3*, mips-*-sysv4*, mips-*-sysv*,
	mips-*-riscos*.
	* NEWS: Mention removed systems.

2004-04-04  Andrew Cagney  <cagney@redhat.com>

	GDB 6.1 release created from 6.1 branch.

2004-04-04  Andrew Cagney  <cagney@redhat.com>

	* gnu-nat.c (gnu_wait): Use memcpy instead of bcopy.
	* remote-vxmips.c (vx_read_register, vx_write_register): Ditto.
	* remote-vx68.c (vx_read_register, vx_write_register): Ditto.

	* config/vax/xm-vax.h (FAULT_CODE_ORIGIN, INIT_STACK): Delete.
	* config/alpha/xm-alphaosf.h (NO_SIGINTERRUPT): Delete.
	* config/alpha/xm-alphalinux.h (NO_SIGINTERRUPT): Delete.

2004-04-03  Jim Blandy  <jimb@redhat.com>

	* MAINTAINERS: Chris Faylor has changed employers; add him to
	"paper trail" section, and update his E-mail address.

2004-04-03  Andrew Cagney  <cagney@redhat.com>

	* frame-unwind.c (frame_unwind_find_by_frame): Delete check for
	generic dummy frames.
	* dummy-frame.c: Update copyright.
	(dummy_frame_sniffer): Delete check for generic dummy frames.

	* config/pa/tm-hppa.h (REG_PARM_STACK_SPACE): Delete.
	* config/pa/tm-hppa64.h (PA20W_CALLING_CONVENTIONS)
	(REG_PARM_STACK_SPACE): Delete.
	* hppa-tdep.c (hppa64_push_dummy_call, hppa32_push_dummy_call):
	Inline reference to REG_PARM_STACK_SPACE.

	* config/pa/tm-hppah.h (FRAME_SAVED_PC_IN_SIGTRAMP)
	(FRAME_FIND_SAVED_REGS_IN_SIGTRAMP)
	(hppa32_hpux_frame_find_saved_regs_in_sigtramp)
	(FRAME_BASE_BEFORE_SIGTRAMP)
	(hppa32_hpux_frame_base_before_sigtramp)
	(hppa32_hpux_frame_saved_pc_in_sigtramp): Delete.
	* config/pa/tm-hppa64.h (hppa64_hpux_frame_saved_pc_in_sigtramp)
	(hppa64_hpux_frame_find_saved_regs_in_sigtramp)
	(FRAME_FIND_SAVED_REGS_IN_SIGTRAMP)
	(FRAME_BASE_BEFORE_SIGTRAMP)
	(hppa64_hpux_frame_base_before_sigtramp)
	(FRAME_SAVED_PC_IN_SIGTRAMP): Delete.

2004-04-03  Andrew Cagney  <cagney@redhat.com>

	* PROBLEMS: Mention that GDB doesn't build on HP/UX 11.00.

2004-04-02  Andrew Cagney  <cagney@redhat.com>

	* sh64-tdep.c (sh64_init_extra_frame_info): Replace
	DEPRECATED_CALL_DUMMY_LENGTH with 0, simplify.
	* dummy-frame.h: Delete out-of-date comments.
	* gdbarch.sh (DEPRECATED_CALL_DUMMY_LENGTH): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.

2004-04-02  Joel Brobecker  <brobecker@gnat.com>

	Committed by Andrew Cagney <cagney@redhat.com>.
        * alpha-tdep.c (alpha_heuristic_frame_unwind_cache): Do not take
        into account an instruction saving a register if we have already
        seen an earlier instruction saving that same register.

2004-04-02  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (DEPRECATED_INIT_FRAME_PC_FIRST): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* frame.c (legacy_get_prev_frame): Delete references to
	DEPRECATED_INIT_FRAME_PC_FIRST.

	* infrun.c (pc_in_sigtramp): Delete function.
	(check_sigtramp2): Inline call to pc_in_sigtramp, use
	get_frame_type.

2004-04-02  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (handle_step_into_function): Delete code conditional on
	legacy_frame_p.
	(handle_inferior_event, step_over_function): Ditto.

2004-04-02  Andrew Cagney  <cagney@redhat.com>

	* frame.c (get_prev_frame_1): Exclude signal trampolines from the
	"previous frame inner to this frame" test.

2004-04-02  Andrew Cagney  <cagney@redhat.com>

	* frame.c (safe_frame_unwind_memory): New function.
	* frame.h (safe_frame_unwind_memory): Declare.  Update description
	of /safe_/ methods.
	* tramp-frame.c (tramp_frame_start): Re-order parmeters, add
	"next_frame".  Use safe_frame_unwind_memory.
	(tramp_frame_sniffer): Update call to tramp_frame_start.

2004-04-01  Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2read.c (dwarf2_objfile_data_key): New.
	(struct dwarf2_per_objfile, dwarf2_per_objfile): New.
	(dwarf_info_size, dwarf_abbrev_size, dwarf_line_size)
	(dwarf_pubnames_size, dwarf_aranges_size, dwarf_loc_size)
	(dwarf_macinfo_size, dwarf_str_size, dwarf_ranges_size)
	(dwarf_frame_size, dwarf_eh_frame_size, dwarf_info_buffer)
	(dwarf_abbrev_buffer, dwarf_line_buffer, dwarf_str_buffer)
	(dwarf_macinfo_buffer, dwarf_ranges_buffer, dwarf_loc_buffer):
	Remove variables.
	(struct dwarf2_pinfo): Remove per-objfile members.  Update comments.
	(DWARF_ABBREV_SIZE, DWARF_LINE_SIZE)
	(DWARF_LOC_SIZE, DWARF_MACINFO_SIZE, DWARF_STR_SIZE)
	(DWARF_RANGES_SIZE, DWARF_INFO_BUFFER)
	(DWARF_ABBREV_BUFFER, DWARF_LINE_BUFFER, DWARF_STR_BUFFER)
	(DWARF_MACINFO_BUFFER, DWARF_RANGES_BUFFER, DWARF_LOC_BUFFER):
	Remove macros.
	(dwarf2_has_info): Take an objfile argument.  Allocate per-objfile
	data.
	(dwarf2_locate_sections, dwarf2_build_psymtabs)
	(dwarf2_build_psymtabs_easy, dwarf2_build_psymtabs_hard)
	(skip_one_die, dwarf2_get_pc_bounds, dwarf2_read_abbrevs)
	(read_partial_die, read_full_die, read_indirect_string)
	(dwarf_decode_line_header, dwarf_decode_macros)
	(dwarf2_symbol_mark_computed): Remove use of removed macros.
	Update uses of removed variables.
	(psymtab_to_symtab_1): Restore per-objfile data pointer.  Remove use
	of removed macros.
	(_initialize_dwarf2_read): New function.
	* symfile.h (dwarf2_has_info): Update prototype.
	* coffread.c (coff_symfile_read): Update call to dwarf2_has_info.
	* elfread.c (elf_symfile_read): Likewise.

2004-04-01  Jim Blandy  <jimb@redhat.com>

	* rs6000-tdep.c (rs6000_dwarf2_stab_reg_to_regnum): New, unified
	function for register numbers on all the rs6000-derived targets.
	(rs6000_gdbarch_init): Don't register a separate
	gdbarch_dwarf2_reg_to_regnum function for the E500.  Use
	rs6000_dwarf2_stab_reg_to_regnum for both Dwarf 2 and stabs on all
	variants.

	* i386-tdep.c: Add FIXME regarding STABS vs. Dwarf 2 register
	numbering.

2004-04-01  Paul N. Hilfinger  <Hilfinger@gnat.com>

	* valarith.c: Update copyright notice.
	(value_add): Handle range types.
	(value_sub): Ditto.
	(value_equal): Ditto.
	(value_less): Ditto.
	(value_neg): Ditto.
	(value_complement): Ditto.
	(value_binop): Simplify slightly by using is_integral_type and
	eliminiating unnecessary COERCE_ENUMs.

2004-03-31  Andrew Cagney  <cagney@redhat.com>

	* frame.h (frame_unwind_id): Declare.
	* frame.c (frame_unwind_id): New function.
	(get_prev_frame_1): New function.
	(frame_debug_got_null_frame): New function.
	(get_prev_frame): Use frame_debug_got_null_frame.  Move unwind
	code proper to prev_frame, update description.
	* infrun.c (step_over_function): Use frame_unwind_id.

2004-04-31  J. Brobecker  <brobecker@gnat.com>

	* hppa-tdep.c (hppa32_push_dummy_call): Set the Stack Pointer.
	(hppa64_push_dummy_call): Likewise.

2004-03-30  Jim Blandy  <jimb@redhat.com>

	From Ulrich Weigand:
 	* utils.c (query): Do not use a va_list variable multiple times.

2004-03-29  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (linux_nat_h): Update dependencies.
	* configure.in: Check for <gnu/libc-version.h>.
	* configure: Regenerate.
	* config.in: Regenerate.
	* linux-nat.h: Include "target.h".  Add waitstatus field to
	struct lwp_info.
	* lin-lwp.c (add_lwp): Initialize waitstatus.kind.
	(lin_lwp_attach_lwp): Don't attach to LWPs we have already attached
	to.
	(lin_lwp_handle_extended): New function.  Handle clone events.
	(wait_lwp): Use lin_lwp_handle_extended.  Update comment about
	thread exit events.
	(child_wait): Handle clone events.
	(lin_lwp_wait: Use lin_lwp_handle_extended and handle clone events.
	* linux-nat.c (linux_enable_event_reporting): Turn on
	PTRACE_O_TRACECLONE.
	(linux_handle_extended_wait): Handle clone events.
	* thread-db.c: Include <gnu/libc-version.h>.
	(struct private_thread_info): Add dying flag.
	(enable_thread_event_reporting): Enable TD_DEATH for glibc 2.2 and
	higher.
	(attach_thread): Update comments.  Handle dying threads.
	(detach_thread): Set the dying flag.
	(check_event): Always call attach_thread.

2004-03-29  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (mips_pdr_data): New.
	(non_heuristic_proc_desc): Use objfile_data and set_objfile_data.
	(_initialize_mips_tdep): Initialize mips_pdr_data.

2004-03-29  Corinna Vinschen  <vinschen@redhat.com>

	* minsyms.c (install_minimal_symbols): Move dropping leading
	char from linkage name from here...
	(prim_record_minimal_symbol_and_info): ...to here.  Simplify
	test for "__gnu_compiled*" symbols.

2004-03-28  Jim Blandy  <jimb@redhat.com>

	* rs6000-tdep.c (skip_prologue): Recognize moves from argument
	registers to temp register r0 and byte stores as prologue
	instructions.

2004-03-28  Andrew Cagney  <cagney@redhat.com>

	* PROBLEMS (Stack backtraces): Rewrite.  Remove reference to
	arm*-*-*.

2004-03-28  Stephane Carrez  <stcarrez@nerim.fr>

	* tui/tui-regs.c (tui_show_registers): Make sure the TUI is active
	and switch the layout to force a display of register window.

2004-02-26  J. Brobecker  <brobecker@gnat.com>

	* amd64-tdep.c (amd64_classify): make RANGE_TYPE objects be part
	of the INTEGER class.

2004-03-26  Jim Blandy  <jimb@redhat.com>

	* ppc-linux-tdep.c (ppc_linux_init_abi): Long doubles are eight
	bytes long on PPC GNU/Linux.

2004-03-26  David Carlton  <carlton@kealia.com>

	* PROBLEMS: Refer to gdb/1588 instead of gdb/826.

2004-03-25  Andrew Cagney  <cagney@redhat.com>

	* PROBLEMS: Add general section titles, remove references to
	specific releases.

2004-03-25  Daniel Jacobowitz  <drow@mvista.com>

	* arm-linux-tdep.c (ARM_LINUX_JB_ELEMENT_SIZE): Define to
	INT_REGISTER_SIZE.
	(arm_linux_push_arguments): Use TARGET_DOUBLE_BIT instead of
	FP_REGISTER_VIRTUAL_SIZE.
	* arm-tdep.c (arm_make_sigtramp_cache): Use register_size instead
	of DEPRECATED_REGISTER_RAW_SIZE.
	(arm_register_type): Add gdbarch argument.
	(arm_register_raw_size, arm_register_virtual_size): Delete.
	(arm_register_byte, arm_extract_return_value)
	(arm_store_return_value, arm_get_longjmp_target): Update references
	to INT_REGISTER_RAW_SIZE and FP_REGISTER_RAW_SIZE.
	(arm_gdbarch_init): Likewise.  Don't set
	deprecated_register_raw_size, deprecated_register_virtual_size,
	deprecated_max_register_raw_size,
	deprecated_max_register_virtual_size, or
	deprecated_max_register_virtual_type.  Do set register_type.
	* arm-tdep.h (ARM_MAX_REGISTER_RAW_SIZE)
	(ARM_MAX_REGISTER_VIRTUAL_SIZE, INT_REGISTER_VIRTUAL_SIZE)
	(FP_REGISTER_VIRTUAL_SIZE): Delete.
	(INT_REGISTER_RAW_SIZE): Rename to INT_REGISTER_SIZE.
	(FP_REGISTER_RAW_SIZE): Rename to FP_REGISTER_SIZE.
	* arm-linux-tdep.c (ARM_NBSD_JB_ELEMENT_SIZE): Define to
	INT_REGISTER_SIZE.
	* remote-rdp.c (remote_rdp_fetch_register): Use MAX_REGISTER_SIZE.
	(remote_rdp_store_register): Likewise.

2004-03-24  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (mips-linux-tdep.o): Update dependencies.
	* mips-tdep.c (mips_gdbarch_init): Move frame predicates
	to after osabi initialization.
	* mips-linux-tdep.c: Include "trad-frame.h" and "tramp-frame.h".
	(mips_linux_o32_sigframe_init, mips_linux_n32n64_sigframe_init): New
	functions.
	(mips_linux_o32_sigframe, mips_linux_o32_rt_sigframe)
	(mips_linux_n32_rt_sigframe, mips_linux_n64_rt_sigframe): New
	variables.
	(mips_linux_init_abi): Append signal trampoline unwinders.

2004-03-24  Andrew Cagney  <cagney@redhat.com>

	* tramp-frame.h (TRAMP_SENTINEL_INSN): Define, document.
	* tramp-frame.c: Include "gdb_assert.h".
	(tramp_frame_start): Use TRAMP_SENTINEL_INSN.  Use ULONGEST and
	correct sizeof.
	(tramp_frame_append): Validate the tramp frame's instructions.
	* Makefile.in (tramp-frame.o): Update dependencies.

2004-03-23  Andrew Cagney  <cagney@redhat.com>

	* trad-frame.h (trad_frame_set_reg_addr): Declare.

2004-03-23  Andrew Cagney  <cagney@redhat.com>

	* MAINTAINERS (Past Maintainers): Add Mark Salter and Fernando
	Nasser as past testsuite/lib/ (and other) maintainers.

2004-03-23  Daniel Jacobowitz  <drow@mvista.com>

	* infcmd.c (attach_command): Reread symbols if we already have
	an exec file.

2004-03-23  Andrew Cagney  <cagney@redhat.com>

	* rs6000-tdep.c (frame_get_saved_regs): Delete unused function.

2004-03-23  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (SIGTRAMP_START, SIGTRAMP_END): Deprecate.
	* gdbarch.h, gdbarch.c: Re-generate.
	* i386obsd-tdep.c (i386obsd_init_abi): Update.
	* i386nbsd-tdep.c (i386nbsd_init_abi): Update.
	* i386bsd-tdep.c (i386bsd_init_abi): Update.
	* config/vax/tm-vaxbsd.h (DEPRECATED_SIGTRAMP_END)
	(DEPRECATED_SIGTRAMP_START): Update.
	* config/m68k/tm-nbsd.h (DEPRECATED_SIGTRAMP_END)
	(DEPRECATED_SIGTRAMP_START): Update.
	* blockframe.c (find_pc_sect_partial_function): Update.
	* arch-utils.c (legacy_pc_in_sigtramp): Update.

2004-03-23  Daniel Jacobowitz  <drow@mvista.com>

	* remote.c (remote_open_1): Reopen the exec file and reread symbols
	if necessary.

2004-03-23  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (PC_IN_SIGTRAMP): Change to a function with
	predicate, deprecate.
	* gdbarch.h, gdbarch.c: Re-generate.
	* alpha-linux-tdep.c (alpha_linux_init_abi): Update.
	* alpha-osf1-tdep.c (alpha_osf1_init_abi): Update.
	* alpha-tdep.c (alpha_sigtramp_frame_sniffer): Update.
	* alphafbsd-tdep.c (alphafbsd_init_abi): Update.
	* alphanbsd-tdep.c (alphanbsd_init_abi): Update.
	* amd64-linux-tdep.c (amd64_linux_init_abi): Update.
	* amd64-tdep.c (amd64_sigtramp_frame_sniffer): Update.
	* amd64nbsd-tdep.c (amd64nbsd_init_abi): Update.
	* amd64obsd-tdep.c (amd64obsd_init_abi): Update.
	* arm-tdep.c (arm_sigtramp_unwind_sniffer): Update.
	* blockframe.c (find_pc_partial_function): Update.
	* breakpoint.c (bpstat_what): Update.
	* frame.c (frame_type_from_pc, legacy_get_prev_frame): Update.
	* frv-linux-tdep.c (frv_linux_init_abi): Update.
	* frv-tdep.c (frv_sigtramp_frame_sniffer): Update.
	* hppa-hpux-tdep.c (hppa_hpux_init_abi): Update.
	* i386-interix-tdep.c (i386_interix_init_abi): Update.
	* i386-linux-tdep.c (i386_linux_init_abi): Update.
	* i386-nto-tdep.c (i386nto_init_abi): Update.
	* i386-sol2-tdep.c (i386_sol2_init_abi): Update.
	* i386-tdep.c (i386_sigtramp_frame_sniffer)
	(i386_svr4_init_abi, i386_go32_init_abi, i386_gdbarch_init): Update.
	* i386bsd-tdep.c (i386bsd_init_abi): Update.
	* i386nbsd-tdep.c (i386nbsd_init_abi): Update.
	* i386obsd-tdep.c (i386obsd_init_abi): Update.
	* ia64-tdep.c (ia64_sigtramp_frame_sniffer): Update.
	* infrun.c (pc_in_sigtramp): Update.
	* m68k-tdep.c (m68k_sigtramp_frame_sniffer): Update.
	* m68klinux-tdep.c (m68k_linux_init_abi): Update.
	* mips-tdep.c (mips_gdbarch_init): Update.
	* mipsnbsd-tdep.c (mipsnbsd_init_abi): Update.
	* ppc-linux-tdep.c: Update comment.
	* ppcnbsd-tdep.c (ppcnbsd_init_abi): Update.
	* shnbsd-tdep.c (shnbsd_init_abi): Update.
	* sparc-linux-tdep.c (sparc32_linux_init_abi): Update.
	* sparc-sol2-tdep.c (sparc32_sol2_init_abi): Update.
	* sparc64-sol2-tdep.c (sparc64_sol2_init_abi): Update.
	* sparc64fbsd-tdep.c (sparc64fbsd_init_abi): Update.
	* sparc64nbsd-tdep.c (sparc64nbsd_init_abi): Update.
	* sparc64obsd-tdep.c (sparc64obsd_init_abi): Update.
	* sparcnbsd-tdep.c (sparc32nbsd_init_abi): Update.
	* sparcobsd-tdep.c (sparc32obsd_init_abi): Update.

2004-03-23  Andrew Cagney  <cagney@redhat.com>

	* tramp-frame.h, tramp-frame.h: New files.
	* Makefile.in (SFILES, tramp_frame_h, COMMON_OBS, tramp-frame.o):
	Update rules to include "tramp-frame.h" and "tramp-frame.c".

	* Makefile.in: Update all dependencies.

2004-03-23  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (trad_frame_h): Add $(frame_h).
	* trad-frame.h: Update copyright.  Include "frame.h".
	(struct trad_frame_cache, trad_frame_cache_zalloc): Declare.
	(trad_frame_set_id, trad_frame_get_id): Declare.
	(trad_frame_set_reg_addr, trad_frame_get_register): Declare.
	* trad-frame.c: Update copyright.
	(struct trad_frame_cache): Define.
	(trad_frame_cache_zalloc): New function.
	(trad_frame_set_id, trad_frame_get_id): New functions.
	(trad_frame_set_reg_addr, trad_frame_get_register): New functions.

2004-03-22  Andrew Cagney  <cagney@redhat.com>

	* s390-tdep.c (struct s390_stub_unwind_cache): Rename
	s390_pltstub_unwind_cache.
	(s390_stub_frame_unwind_cache): Rename
	s390_pltstub_frame_unwind_cache.
	(s390_stub_frame_this_id): Rename s390_pltstub_frame_this_id.
	(s390_stub_frame_prev_register): Rename
	s390_pltstub_frame_prev_register.
	(s390_stub_frame_unwind): Rename s390_pltstub_frame_unwind.
	(s390_stub_frame_sniffer): Rename s390_stub_frame_sniffer.

	From Ulrich Weigand:
	* s390-tdep.c (s390_pltstub_frame_sniffer): Handle invalid function
	pointer calls like PLT calls.

2004-03-22  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (non_heuristic_proc_desc): Search using the specified
	PC rather than the partial function start address.  Use the start
	address to sanity check the found PDR.

2004-03-22  Daniel Jacobowitz  <drow@mvista.com>

	* lin-lwp.c (lin_lwp_wait): Pass the LWP ID to
	linux_handle_extended_wait.

2004-03-22  Andrew Cagney  <cagney@redhat.com>

	* rs6000-tdep.c (frame_initial_stack_address): Delete unused
	function.

	* frame.h (generic_pop_current_frame): Delete declaration.
	(deprecate_pop_dummy_frame): Deprecate
	generic_pop_dummy_frame.
	* dummy-frame.c (deprecated_pop_dummy_frame): Update.
	(generic_pop_current_frame): Delete function.
	* mn10300-tdep.c (mn10300_pop_frame): Eliminate call to
	generic_pop_current_frame.
	* v850-tdep.c (v850_pop_frame): Update.
	* mcore-tdep.c (mcore_pop_frame): Update.
	* sh64-tdep.c (sh64_pop_frame): Update.
	* h8300-tdep.c (h8300_pop_frame): Update.

2004-03-22  Andrew Cagney  <cagney@redhat.com>

	* frame.h (deprecated_pc_in_call_dummy): Rename
	generic_pc_in_call_dummy.
	* dummy-frame.h (pc_in_dummy_frame): Delete declaration.
	* dummy-frame.c (deprecated_pc_in_call_dummy): Rename
	generic_pc_in_call_dummy.
	(pc_in_dummy_frame): Make static.
	* gdbarch.sh (DEPRECATED_PC_IN_CALL_DUMMY): Update.
	* gdbarch.h, gdbarch.c: Re-generate.
	* dummy-frame.c (dummy_frame_sniffer): Simplify.
	* frame.c (frame_type_from_pc): Call deprecated_pc_in_call_dummy.
	(legacy_get_prev_frame): Ditto.
	* inferior.h: Delete reference to generic_pc_in_call_dummy in
	comment.

2004-03-21  Andrew Cagney  <cagney@redhat.com>

	* inferior.h (deprecated_pc_in_call_dummy_at_entry_point): Delete
	declaration and out-of-date comment.
	* blockframe.c (deprecated_pc_in_call_dummy_at_entry_point):
	Delete function.
	* mn10300-tdep.c (mn10300_gdbarch_init): Do not set
	deprecated_pc_in_call_dummy.

	* infrun.c (handle_inferior_event): For non legacy frames, use the
	frame ID and frame type to identify a signal trampoline.  Update
	comments.

2004-03-21  Nathan J. Williams  <nathanw@wasabisystems.com>

	* mipsnbsd-tdep.c: Update copyright. Include "mips-tdep.h".
	* Makefile.in (mipsnbsd-tdep.o): Update dependencies.

2004-03-21  Andrew Cagney  <cagney@redhat.com>

	* frame-unwind.h: Update copyright.
	(struct frame_data): Add opaque declaration.
	(frame_sniffer_ftype): Declare.
	(struct frame_unwind): Add "unwind_data" and "sniffer".
	(frame_unwind_register_unwinder): Declare.
	(frame_unwind_find_by_frame): Add parameter "this_cache".
	* frame.c (get_frame_id, create_new_frame, legacy_get_prev_frame)
	(legacy_get_prev_frame, legacy_get_prev_frame)
	(get_frame_type): Pass the prologue_cache to
	frame_unwind_find_by_frame.
	* frame-unwind.c (struct frame_unwind_table_entry): Add field
	"unwinder".
	(frame_unwind_register_unwinder): New function.
	(frame_unwind_find_by_frame): Handle an unwind sniffer.

2004-03-20  Paul Hilfinger  <hilfingr@nile.gnat.com>

	* bcache.c (print_percentage): Use floating point to avoid
	incorrect results when portion*100 overflows.

2004-03-19  Kevin Buettner  <kevinb@redhat.com>

	* ppc_tdep.h (ppc_linux_frame_saved_pc)
	(ppc_linux_init_extra_frame_info)
	(ppc_linux_frameless_function_invocation)
	(ppc_linux_frame_init_saved_regs, ppc_linux_frame_chain)
	(rs6000_frame_saved_pc, rs6000_init_extra_frame_info)
	(rs6000_frameless_function_invocation, rs6000_frame_init_saved_regs)
	(rs6000_frame_chain): Delete declarations.
	* ppc-linux-tdep.c (ppc_linux_frame_saved_pc)
	(ppc_linux_init_extra_frame_info)
	(ppc_linux_frameless_function_invocation)
	(ppc_linux_frame_init_saved_regs, ppc_linux_frame_chain): Delete.
	(ppc_linux_init_abi): Remove registration of above deleted functions.
	* rs6000-tdep.c (rs6000_init_extra_frame_info)
	(rs6000_frame_init_saved_regs, rs6000_init_frame_pc_first)
	(rs6000_frame_args_address, rs6000_saved_pc_after_call)
	(rs6000_pop_frame, rs6000_frameless_function_invocation)
	(rs6000_frame_saved_pc, rs6000_frame_chain): Delete.
	(rs6000_gdbarch_init): Remove registration of above deleted functions.
	Use rs6000_unwind_pc(), rs6000_frame_sniffer(),
	rs6000_unwind_dummy_id(), and rs6000_frame_base_sniffer() for
	frame management for all OSABIs.

2004-03-19  Andrew Cagney  <cagney@redhat.com>

	Committed by Kevin Buettner <kevinb@redhat.com>.

	* ppc-linux-tdep.c: Include "trad-frame.h", and "frame-unwind.h".
	Update copyright.
	(struct ppc_linux_sigtramp_cache, ppc_linux_sigtramp_cache)
	(ppc_linux_sigtramp_this_id, ppc_linux_sigtramp_prev_register)
	(ppc_linux_sigtramp_unwind, ppc_linux_sigtramp_sniffer)
	(ppc_linux_init_abi): Add both 32- and 64-bit signal trampoline
	unwinders.  #ifdef legacy frame code.
	* rs6000-tdep.c: Include "trad-frame.h", "frame-unwind.h", and
	"frame-base.h".
	(rs6000_unwind_pc, rs6000_unwind_dummy_id)
	(struct rs6000_frame_cache, rs6000_frame_cache)
	(rs6000_frame_this_id, rs6000_frame_prev_register)
	(rs6000_frame_sniffer, rs6000_frame_unwind)
	(rs6000_frame_base_address, rs6000_frame_base_sniffer)
	(rs6000_frame_base): Implement a traditional frame unwinder.
	(rs6000_gdbarch_init): When unknown, NetBSD, or GNU/Linux use the
	frame unwinder.

2004-03-19  Kevin Buettner  <kevinb@redhat.com>

	* breakpoint.c (adjust_breakpoint_address): Don't adjust
	breakpoint address for watchpoints or the catch eventpoints.
	Add new paramter ``bptype''.  Adjust all callers.

2004-03-19  Andrew Cagney  <cagney@redhat.com>

	* config/pa/tm-hppa.h (GDB_TARGET_IS_HPPA): Delete unused macro.

	* PROBLEMS: Delete note that ARM does not use frame code, problem
	fixed.

2004-03-18  Andrew Cagney  <cagney@redhat.com>

	* stack.c (return_command): Delete code wrapped in #ifdef
	DEPRECATED_CALL_DUMMY_HAS_COMPLETED, macro no longer defined.

	* rs6000-tdep.c (skip_prologue): Record only the first LR save.

2004-03-18  Andrew Cagney  <cagney@redhat.com>

	* config/mips/tm-nbsd.h: Replace IN_SIGTRAMP with
	DEPRECATED_IN_SIGTRAMP.
	* config/powerpc/tm-linux.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* config/mips/tm-linux.h (DEPRECATED_IN_SIGTRAMP) Ditto.
	* config/mips/tm-irix6.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* config/mips/tm-irix5.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* config/ia64/tm-linux.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* config/ia64/tm-aix.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* config/arm/tm-linux.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* config/arm/tm-embed.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* arch-utils.c (legacy_pc_in_sigtramp): Ditto.
	* arch-utils.h: Remove reference to IN_SIGTRAMP in comment.

2004-03-18  Andrew Cagney  <cagney@redhat.com>

	* frame-base.c: Update copyright.  Include "gdb_obstack.h".
	(struct frame_base_table_entry): Define.
	(struct frame_base_table): Re-implement as a linked list.
	(frame_base_init): Re-implement.
	(frame_base_table): Delete function.
	(append_predicate): Delete function.
	(frame_base_append_sniffer): Update.
	(frame_base_set_default): Update.
	(frame_base_find_by_frame): Update.
	(_initialize_frame_base): Use gdbarch_data_register_pre_init.
	* Makefile.in (frame-base.o): Update dependencies.

2004-03-17  Andrew Cagney  <cagney@redhat.com>

	* frame.c (legacy_get_prev_frame): Pass correct frame to
	frame_unwind_find_by_frame.

2004-03-17  David Carlton  <carlton@kealia.com>

	* NEWS: Mention C++ nested types and namespaces

2004-03-16  Michael Chastain  <mec.gnu@mindspring.com>

	* PROBLEMS: Add section headers, "Regressions since gdb 6.0"
	and "Regressions since gdb 5.3.".  Add known regressions since
	gdb 6.0.

2004-03-16  David Carlton  <carlton@kealia.com>

	* dwarf2read.c (process_structure_scope): Process children even
	when we're a declaration.

2004-03-16  Andrew Cagney  <cagney@redhat.com>

	* symtab.h (find_pc_sect_partial_function): Delete declaration.
	* blockframe.c (find_pc_partial_function)
	(find_pc_sect_partial_function): Merge into a single
	find_pc_partial_function.

2004-03-16  Mark Kettenis  <kettenis@gnu.org>

	* i386bsd-nat.c: s/regno/regnum/g.
	(fetch_inferior_registers): Use I386_ST0_REGNUM instead of
	FP0_REGNUM.
	(store_inferior_registers): Likewise.

2004-03-16  Mark Kettenis  <kettenis@gnu.org>

	* i386bsd-nat.c (fill_fpregset): Call i387_collect_fsave instead
	of i387_fill_fsave.
	(store_inferior_registers): Call i387_collect_fsave and
	i387_collect_fxsave instead of i387_fill_fsave and
	i387_fill_fxsave.

2004-03-15  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (frame-unwind.o): Update dependencies.
	* frame-unwind.c: Include "gdb_obstack.h".
	(frame_unwind_init): Replace "gdbarch" parameter with an "obstack"
	parameter.
	(append_predicate): Delete function.
	(struct frame_unwind_table_entry): New structure.
	(struct frame_unwind_table): Replace "sniffer" with "head" and
	"tail".
	(frame_unwind_append_sniffer): Update.
	(frame_unwind_find_by_frame): Update.
	(_initialize_frame_unwind): Registe frame_unwind_init using
	gdbarch_data_register_pre_init.

2004-03-15  Mark Kettenis  <kettenis@gnu.org>

	* i386bsd-nat.c: Update copyright year.
	(CANNOT_FETCH_REGISTER, CANNOT_STORE_REGISTER): Undefine and then
	define unconditionally.

2004-03-15  Mark Kettenis  <kettenis@gnu.org>

	* i387-tdep.h (i387_collect_fsave): New prototype.
	* i387-tdep.c (i387_collect_fsave): New function containing most
	of the code from i387_fill_fsave.
	(i387_fill_fsave): Call i387_collect_fsave.

2004-03-15  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-tdep.c: Update copyright year.
	(i386_linux_svr4_fetch_link_map_offsets): Remove function.
	(i386_linux_init_abi): Set solib_svr4_fetch_link_maop_offsets to
	svr4_ilp32_link_map_offsets instead of
	i386_linux_svr4_fetch_link_map_offsets.

2004-03-15  David Carlton  <carlton@kealia.com>

	Fix for PR c++/1553:
	* dwarf2read.c (read_structure_type): Determine type name by
	calling determine_class_name.
	(determine_class_name): New.
	(determine_prefix): Look at TYPE_TAG_NAME and call
	determine_class_name when appropriate.
	(determine_prefix_aux, class_name): Delete.
	(read_namespace): Set die->type.

2004-03-15  Kevin Buettner  <kevinb@redhat.com>

	* breakpoint.c (TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Delete
	unused macro definition.  The definition in target.h (or perhaps
	elsewhere) takes precedence.

2004-03-15  Andrew Cagney  <cagney@redhat.com>

	* ppc-tdep.h: Update copyright.
	(ppc_linux_supply_gregset, ppc_linux_supply_fpregset): Change
	function signatures to match "regsets.h".
	* ppc-linux-tdep.c: Include "regset.h".
	(ELF_GREGSET_SIZE): Delete.
	(right_supply_register): New function.
	(ppc_linux_supply_fpregset, ppc_linux_supply_gregset): Rewrite
	using right_supply_register.
	(ppc32_linux_supply_gregset, ppc64_linux_supply_gregset): New
	functions.
	(ppc64_linux_gregset, ppc32_linux_gregset): Define.
	(ppc_linux_init_abi): Register ppc_linux_regset_from_core_section.
	(_initialize_ppc_linux_tdep): Do not register
	ppc_linux_regset_core_fns.
	(ppc_linux_regset_from_core_section): Replace
	fetch_core_registers.
	(ppc_linux_regset_core_fns): Delete.
	* ppc-linux-nat.c: (right_fill_reg): New function.
	(supply_gregset): Update call to ppc_linux_supply_gregset.
	(fill_gregset): Clear the register set, use right_fill_reg.
	(supply_fpregset): Update call to ppc_linux_supply_fpregset.
	(fill_fpregset): Use right_fill_reg, correctly compute FP offsets.

	* rs6000-tdep.c (rs6000_register_virtual_type): Make registers
	unsigned.

2004-03-15  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (gdbarch_data_pre_init_fytpe)
	(gdbarch_data_register_pre_init, gdbarch_data_post_init_fytpe)
	(gdbarch_data_register_post_init): Replace gdbarch_data_init_ftype
	and register_gdbarch_data.
	(deprecated_set_gdbarch_data): Rename set_gdbarch_data.
	(struct gdbarch_data): Replace "init" by "pre_init" and
	"post_init".
	* gdbarch.h, gdbarch.c: Re-generate.
	* dwarf2-frame.c (dwarf2_frame_init): Replace "gdbarch" paramter
	with"obstack", use OBSTACK_ZALLOC.
	(dwarf2_frame_ops): Delete.
	(dwarf2_frame_set_init_reg): Use gdbarch_data.
	(dwarf2_frame_init_reg): Use gdbarch_data.
	(_initialize_dwarf2_frame): Use gdbarch_data_register_pre_init.
	* solib-svr4.c (set_solib_svr4_fetch_link_map_offsets)
	(_initialize_svr4_solib): Update.
	* user-regs.c (_initialize_user_regs): Update.
	* reggroups.c (_initialize_reggroup): Update.
	* regcache.c (_initialize_regcache): Update.
	* mips-linux-tdep.c (_initialize_mips_linux_tdep): Update.
	* libunwind-frame.c (_initialize_libunwind_frame): Update.
	* gnu-v3-abi.c (init_gnuv3_ops): Update.
	* frame-unwind.c (_initialize_frame_unwind): Update.
	* frame-base.c (_initialize_frame_base): Update.
	* user-regs.c (user_reg_add): Update.
	* reggroups.c (reggroup_add): Update.
	* mips-linux-tdep.c (set_mips_linux_register_addr): Update.
	* libunwind-frame.c (libunwind_frame_set_descr): Update.
	* frame-unwind.c (frame_unwind_append_sniffer): Update.
	* frame-base.c (frame_base_table): Update.
	* remote.c (_initialize_remote): Update.
	* gdb_obstack.h (OBSTACK_ZALLOC, OBSTACK_CALLOC): Define.

2004-03-15  Andrew Cagney  <cagney@redhat.com>

	* cris-tdep.c (bfd_lookup_symbol): Delete unused function.

2004-03-15  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (frv-linux-tdep.o): Add dependencies.
	* frv-linux-tdep.c: New file.
	* frv-tdep.c (struct gdbarch_tdep): Add new field
	``sigcontext_reg_addr''.
	(frv_set_sigcontext_reg_addr, frv_sigtramp,frame_cache)
	(frv_sigtramp_frame_this_id, frv_sigtramp_frame_prev_register)
	(frv_sigramp_frame_sniffer): New functions.
	(frv_sigtramp_frame_unwind): New static global.
	(frv_gdbarch_init): Hook in ABI-specific overrides.  Hook up frame
	sniffers.
	* frv-tdep.h (frv_set_sigcontext_reg_addr): New function.
	* config/frv/frv.mt (TDEPFILES): Add frv-linux-tdep.o.

2004-03-15  Kevin Buettner  <kevinb@redhat.com>

	* frv-tdep.c (frv_analyze_prologue): Terminate prologue scan,
	but not via a call to error(), when unable to read memory.

2004-03-15  Kevin Buettner  <kevinb@redhat.com>

	* frv-tdep.c (frv_call_dummy_words): Delete.
	(frv_frame_unwind_cache): Delete unused variable, ``prev_sp''.

2004-03-15  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (handle_step_into_function, step_over_function): Only
	update and use STEP_FRAME_ID when the system is using legacy
	frames.  Update comments.

2004-03-14  Mark Kettenis  <kettenis@gnu.org>

	* amd64-linux-tdep.h: Remove file.
	* amd64-linux-tdep.c: Don't include "inferior.h" and
	"amd64-linux-tdep.h".  Include "frame.h" and "solib-svr4.h".
	(USER_R15, USER_R14, USER_R13, USER_R12, USER_RBP, USER_RBX)
	(USER_R11, USER_R10, USER_R9, USER_R8, USER_RAX, USER_RCX)
	(USER_RDX, USER_RSI, USER_RDI, USER_RIP, USER_CS, USER_EFLAGS)
	(USER_RSP, USER_SS, USER_DS, USER_ES, USER_FS, USER_GS): Remove
	macros.
	(user_to_gdb_regmap): Remove variable.
	(amd64_linux_gregset_reg_offset): New variable.
	(amd64_core_fns): Remove variable.
	(fetch_core_registers): Remove function.
	(amd64_linux_supply_gregset, amd64_linux_fill_gregset): Remove
	functions.
	(_initialize_amd64_linux_tdep): Don't set add_core_fns.
	* amd64-linux-nat.c: Don't include "amd64-linux-tdep.h".
	* Makefile.in (amd64_linux_tdep_h): Remove.
	(amd64-linux-nat.o): Update dependencies.
	(amd64-linux-tdep.o): Update dependencies.

	* amd64-linux-nat.c (GETFPREGS_SUPPLIES): Remove macro.
	(fetch_regs, fetch_fpregs, store_regs, store_fpregs): Remove
	functions.
	(fetch_inferior_registers, store_inferior_registers): Rewrite.

	* amd64-tdep.h (amd64_fill_fxsave): Remove prototype.
	* amd64-tdep.c (amd64_fill_fxsave): Remove function.

2004-03-14  Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2read.c (read_structure_type): Rename from
	read_structure_scope.  Don't create a symbol or call process_die.
	Return immediately if die->type is set.  Call read_type_die before
	dwarf2_add_member_fn.
	(process_structure_scope): New function.
	(read_enumeration_type, process_enumeration_scope): New functions,
	broken out from read_enumeration.  Don't create the enumeration
	type if it has already been created.
	(read_enumeration): Removed.
	(process_die): Call read_structure_type, process_structure_scope,
	read_enumeration_type, and process_enumeration_scope.  Just call
	new_symbol for base and subrange types.  Add a comment about other
	type dies.
	(read_type_die): Call read_enumeration_type.
	(add_partial_structure, new_symbol): Update comments.

2004-03-13  Stephane Carrez  <stcarrez@nerim.fr>

	* m68hc11-tdep.c (m68hc11_register_name): Get soft reg information.

2004-03-13  Stephane Carrez  <stcarrez@nerim.fr>

	* tui/tui-win.h (tui_get_cmd_list): Declare.
	* tui/tui-win.c (tui_command): New function.
	(tui_get_cmd_list): New function.
	(_initialize_tui_win): Moved initialization of tui command in
	tui_get_cmd_list.

	* tui/tui-data.c (init_content_element): Setup new data members.
	(init_win_info): Likewise.
	(free_content_elements): Free it.
	* tui/tui-data.h (struct tui_data_element): Store the register
	content to print.
	(struct tui_data_info): Keep the current register group.

	* tui/tui-layout.c (tui_set_layout): Update call to tui_show_registers.

	* tui/tui-regs.h (tui_show_registers): Update prototype.
	(tui_toggle_float_regs, tui_calculate_regs_column_count): Remove.
	(tui_resize_all): No need to calculate anything for register window.
	* tui/tui-regs.c (tui_calculate_regs_column_count): Remove.
	(tui_set_register_element, tui_set_general_regs_content): Remove.
	(tui_set_special_regs_content): Remove.
	(tui_set_general_and_special_regs_content): Remove.
	(tui_set_float_regs_content): Remove.
	(tui_reg_value_has_changed, tui_get_register_raw_value): Remove.
	(tui_set_regs_content): Remove.
	(tui_toggle_float_regs, _tui_toggle_float_regs_command): Remove.
	(tui_v_show_registers_command_support): Remove.
	(tui_show_registers): Use a reggroup to specify the registers to show.
	(tui_show_register_group): New function.
	(tui_display_registers_from): Compute the layout of register window
	and refresh with new API; be sure to delete old register windows.
	(tui_check_register_values): Update to use tui_get_register and
	tui_display_data.
	(tui_display_register): Just refresh the register window part.
	(tui_register_format): Format registers and save in tui_data_element.
	(tui_get_register): New to combine tui_reg_value_has_changed and
	tui_get_register_raw_value; fix to use the new gdb API.
	(tui_show_float_command): Renamed tui_reg_float_command.
	(tui_show_general_command): Renamed tui_reg_general_command.
	(tui_show_special_command): Renamed tui_reg_system_command.
	(_initialize_tui_regs): Remove unused commands.

2004-03-13  Mark Kettenis  <kettenis@gnu.org>

	* NEWS (New native configurations): Mention OpenBSD/amd64.

	* config/i386/nm-fbsd.h: Include "config/nm-bsd.h".
	(PTRACE_ARG3_TYPE, FETCH_INFERIOR_REGISTERS, ATTACH_DETACH):
	Remove defines.
	* config/i386/nm-fbsd64.h: Likewise.
	* config/i386/nm-obsd.h: Likewise.
	* config/sparc/nm-fbsd.h: Likewise.  Update copyright year.
	* config/alpha/nm-fbsd.h: Likewise.  Update copyright year.

2004-03-12  Kevin Buettner  <kevinb@redhat.com>

	* frv-tdep.c (set_variant_scratch_registers): New function.
	* frv-tdep.h (scr0_regnum, scr1_regnum, scr2_regnum, scr3_regnum):
	New constants.

	From Richard Sandiford  <rsandifo@redhat.com>:
	* frv-tdep.c (frv_gdbarch_init): Add FR450 support.

2004-03-12  Kevin Buettner  <kevinb@redhat.com>

	* frv-tdep.c, frv-tdep.h  (first_gpr_regnum, sp_regnum, fp_regnum)
	(struct_return_regnum, last_gpr_regnum, first_fpr_regnum)
	(last_fpr_regnum, pc_regnum, first_spr_regnum, psr_regnum, ccr_regnum)
	(cccr_regnum, fdpic_loadmap_exec_regnum, fdpic_loadmap_interp_regnum)
	(tbr_regnum, brr_regnum, dbar0_regnum, dbar1_regnum, dbar2_regnum)
	(dbar3_regnum, lr_regnum, lcr_regnum, iacc0h_regnum, iacc0l_regnum)
	(last_spr_regnum, frv_num_regs, first_pseudo_regnum, iacc0_regnum)
	(last_pseudo_regnum, frv_num_pseudo_regs): Move constant (enum)
	definitions from frv-tdep.c to frv-tdep.h.

2004-03-12  Kevin Buettner  <kevinb@redhat.com>

	Add shared library support for FR-V FDPIC ABI:
	* Makefile.in (solib-frv.o): Add dependencies.
	* frv-tdep.c (find_func_descr, frv_convert_from_func_ptr_addr):
	New functions.
	(frv_push_dummy_call): Add support for FDPIC ABI.
	(frv_gdbarch_init): Call set_gdbarch_convert_from_func_ptr_addr()
	for FDPIC ABI.
	* frv-tdep.h (frv_fdpic_find_global_pointer): Declare.
	(frv_fdpic_find_canonical_descriptor): Declare.
	* solib-frv.c: New file.
	* config/frv/frv.mt (TDEPFILES): Add solib.o and solib-frv.o.
	* config/frv/tm-frv.h (solib.h): Include.

2004-03-12  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (elf_frv_h, frv_tdep_h): Define.
	(frv-tdep.o): Update dependencies.
	* frv-tdep.h: New file.
	* frv-tdep.c (elf-bfd.h, elf/frv.h, osabi.h, frv-tdep.h): Include.
	(fdpic_loadmap_exec_regnum, fdpic_loadmap_interp_regnum): New
	constants.
	(struct gdbarch_tdep): Add new member ``frv_abi''.
	(frv_abi, frv_fdpic_loadmap_addresses, set_variant_abi_fdpic): New
	functions.
	(new_variant): Set ``frv_abi'' field.
	(gdb_arch_init): Detect FDPIC executables.

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

	* solib-svr4.h: Change SOLIB_SVR4 wrapper into SOLIB_SVR4_H
	wrapper.

2004-03-11  Andrew Cagney  <cagney@redhat.com>

	* solib-svr4.h: Add #ifndef SOLIB_SVR4 wrapper.

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

	* solist.h (master_so_list): New function.
	* solib.c (master_so_list): Likewise.
	* solib-svr4.c (enable_break): Iterate over so_list entries
	obtained from master list instead of entries obtained directly
	via svr4_current_sos().

2004-03-10  Ben Elliston  <bje@gnu.org>

	* MAINTAINERS: Update my mail address.

2004-03-10  Kei Sakamoto  <sakamoto.kei@renesas.com>

	* remote-m32r-sdi.c: Support hardware watchpoint.

2004-03-09  Daniel Jacobowitz  <drow@mvista.com>

	* user-regs.c: Update copyright years.
	(struct user_regs): Rename to gdb_user_regs.
	(append_user_reg, builtin_user_regs, user_regs_init)
	(user_reg_add, user_reg_map_name_to_regnum)
	(usernum_to_user_reg): Update.

2004-03-09  Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2read.c (skip_leb128, peek_die_abbrev, skip_one_die)
	(skip_children): New functions.
	(locate_pdi_sibling): Call skip_children.

2004-03-09  Daniel Jacobowitz  <drow@mvista.com>

	* arm-tdep.c (arm_use_struct_convention): Look through typedefs.
	* gdbtypes.c (check_typedef): Update comments.

2004-03-09  Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2read.c (struct comp_unit_head): Remove dwarf2_abbrevs array.
	(struct dwarf2_cu): Add abbrev_obstack and dwarf2_abbrevs
	pointer.  Update comment about comp_unit_head.
	(struct abbrev_info): Shorten two int flags.
	(dwarf_alloc_abbrev): Take a CU argument.
	(dwarf2_build_psymtabs_hard): Call dwarf2_free_abbrev_table
	each time through the loop.  Update cleanup argument.
	(psymtab_to_symtab_1): Update cleanup call.
	(dwarf2_read_abbrevs, dwarf2_alloc_abbrev): Allocate on the
	abbrev_obstack.
	(dwarf2_free_abbrev_table): Renamed from dwarf2_empty_abbrev_table.
	Just call obstack_free and clear the pointer.

2004-03-09  Daniel Jacobowitz  <drow@mvista.com>

	* infrun.c (handle_inferior_event): Remove short-circuit code for
	events in a different thread.

2004-03-09  Daniel Jacobowitz  <drow@mvista.com>

	* target.c (debug_to_xfer_memory): If targetdebug is 1, don't
	print the whole transfer.
	(initialize_targets): Update description of "set debug target".

2004-03-09  Daniel Jacobowitz  <drow@mvista.com>

	* arm-tdep.c (thumb_get_next_pc): Handle Thumb BLX.

2004-03-08  Nathan J. Williams  <nathanw@wasabisystems.com>

	* MAINTAINERS (write after approval): Add myself.

2004-03-08  Corinna Vinschen  <vinschen@redhat.com>

	* sh-tdep.c (sh_print_registers_info): Use for loop.
	Don't skip multiple registers when a float register is encountered.

2004-03-08  Corinna Vinschen  <vinschen@redhat.com>

	Fix PR tdep/1291.
	* sh-tdep.c (sh_analyze_prologue): Align PC relative addressing
	to official SH documentation.

2004-03-07  Andrew Cagney  <cagney@redhat.com>

	* ppc-linux-nat.c (ppc_ptrace_cannot_fetch_store_register): Delete
	unused function.

2004-03-07  Daniel Jacobowitz  <drow@mvista.com>

	* arm-tdep.c (thumb_get_next_pc): Handle BX.
	(arm_get_next_pc): Handle BX and BLX.

2004-03-07  Andrew Cagney  <cagney@redhat.com>

	* hppa-tdep.c: Replace DEPRECATED_FP_REGNUM with HPPA_FP_REGNUM,
	FP0_REGNUM with HPPA_FP0_REGNUM, and SP_REGNUM with
	HPPA_SP_REGNUM.
	(hppa_register_raw_size, hppa_register_byte, hppa_read_fp)
	(hppa_target_read_fp): Delete.
	(hppa_gdbarch_init): Do not set deprecated register_raw_size,
	register_virtual_size, max_register_raw_size,
	max_register_virtual_size, register_byte, register_size,
	target_read_fp, fp_regnum, and register_bytes.  Set register_type
	instead of register_virtual_type.
	(hppa32_register_type, hppa64_register_type): Replace
	hppa32_register_virtual_type and hppa64_register_virtual_type.
	* config/pa/tm-hppa.h (HPPA_FP0_REGNUM, HPPA_SP_REGNUM)
	(HPPA_FP_REGNUM): Define.

	* hppa-tdep.c (hppa_gdbarch_init): Add missing "break".

	* config/pa/tm-hppa.h (DEPRECATED_DO_REGISTERS_INFO)
	(pa_do_registers_info): Delete.
	* hppa-tdep.c (pa_do_registers_info, pa_do_strcat_registers_info)
	(pa_print_registers, pa_print_fp_reg, pa_strcat_registers)
	(pa_strcat_fp_reg, pa_register_look_aside): Delete.

	* infcall.c (legacy_push_dummy_code): Delete #ifdef
	GDB_TARGET_IS_HPPA code.
	* config/pa/tm-hppa.h (DEPRECATED_FIX_CALL_DUMMY)
	(hppa_fix_call_dummy, DEPRECATED_CALL_DUMMY_HAS_COMPLETED)
	(DEPRECATED_DUMMY_WRITE_SP, CALL_DUMMY): Delete.
	* config/pa/tm-hppa64.h (CALL_DUMMY): Delete.
	* hppa-tdep.c (hppa_frame_chain, hppa_frame_chain_valid)
	(hppa_push_dummy_frame, hppa_pop_frame, hppa_push_arguments)
	(hppa_fix_call_dummy, hppa64_stack_align, hppa_frame_saved_pc)
	(hppa_init_extra_frame_info, hppa_saved_pc_after_call)
	(hppa64_call_dummy_breakpoint_offset, hppa_frame_init_saved_regs)
	(hppa_frameless_function_invocation, hppa64_store_return_value)
	(hppa_store_struct_return, hppa64_extract_return_value)
	(hppa64_use_struct_convention, hppa_frame_find_saved_regs)
	(hppa32_call_dummy_length, hppa64_call_dummy_length)
	(find_dummy_frame_regs, FUNC_LDIL_OFFSET, FUNC_LDO_OFFSET)
	(find_proc_framesize, deposit_21, restore_pc_queue)
	(find_return_regnum, pc_in_interrupt_handler, deposit_14)
	(rp_saved, pc_in_linker_stub): Delete.

	Unconditionally enable 64-bit frame and ABI code.
	* hppa-tdep.c (hppa_gdbarch_init): Do not set deprecated
	call_dummy_breakpoint_offset, call_dummy_length, stack_align,
	push_dummy_frame, fix_call_dummy, push_arguments,
	call_dummy_location, extract_return_value, use_struct_convention,
	store_return_value, store_struct_return, saved_pc_after_call,
	init_frame_pc, frame_init_saved_regs, init_extra_frame_info,
	frame_chain, frame_chain_valid, frameless_function_invocation,
	frame_saved_pc, and pop_frame.

	* hppa-tdep.c: Replace PC_REGNUM with PCOQ_HEAD_REGNUM.
	(hppa64_return_value, hppa64_push_dummy_call): Rewrite.
	(hppa_gdbarch_init): Do not set PC_REGNUM.

2004-03-06  Mark Kettenis  <kettenis@gnu.org>

	* config/alpha/tm-fbsd.h: Remove file.
	* config/alpha/fbsd.mt: Tweak comment.
	(TM_FILE): Set to tm-alpha.h.

2004-03-05  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (step_over_function): When non-legacy code, and no
	step_frame_id, use the unwinder to get the caller's frame ID.

2004-03-05  Mark Kettenis  <kettenis@gnu.org>

	* i386bsd-tdep.c (_initialize_i386bsd_tdep): Register
	i386bsd_core_osabi_sniffer for bfd_arch_i386 instead of
	bfd_arch_unknown.  Adjust comment.

	* i386-nat.c: Fix typo in comment.  Re-introduce paranoiac.
	* i386obsd-tdep.c: Correct spelling in comment.
	* i386nbsd-tdep.c: Correct spelling in comment.
	* sparc-tdep.c: Correct spelling in comments.

2004-03-05  David Carlton  <carlton@kealia.com>

	* cp-namespace.c (cp_lookup_transparent_type_loop): Fix recursion
	bug.

2004-03-05  Mark Kettenis  <kettenis@gnu.org>

	* sparc-tdep.c: Fix typo in comment.

2004-03-04  J. Brobecker  <brobecker@gnat.com>

	* hppa-tdep.c (hppa_frame_cache): Avoid undefined return value.

2004-03-04  Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2read.c: Add comment describing memory lifetimes.
	(struct dwarf2_pinfo): Update comment.
	(dwarf2_add_field, dwarf2_add_member_fn, read_structure_scope)
	(read_enumeration, new_symbol): Don't use obsavestring.

2004-03-04  Mark Kettenis  <kettenis@gnu.org>

	* amd64-linux-nat.c (fill_fpregset): Call amd64_colletc_fxsave
	instead of amd64_fill_fxsave.
	* amd64bsd-nat.c (store_inferior_registers): Likewise.
	* amd64fbsd-nat.c (fill_fpregset): Likewise.

	* sparc-tdep.c (sparc_frame_cache): Don't bail out if %fp is zero.
	Reorganize code a bit.

2004-03-04  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (cris_scan_prologue): Save the frame pointer's offset
	when the frame pointer is pushed.  Don't set the frame pointer's
	address on the stack unless it's actually located there.
	Set the SRP's address on the stack correctly when the PC is still in
	the prologue.
	(cris_return_value): New function.
	(cris_gdbarch_init): Clear deprecated store_return_value,
	extract_return_value.

2004-03-02  Jim Blandy  <jimb@redhat.com>

	* stabsread.c (reg_value_complaint): The maximum register number
	is one less than the number of registers.

2004-03-02  Andrew Cagney  <cagney@redhat.com>

	* i386-tdep.h (enum i386_regnum): Add I386_DS_REGNUM,
	I386_ES_REGNUM, I386_FS_REGNUM, and I386_GS_REGNUM.  Remove
	trailing comma and redundant assignment of I386_ST0_REGNUM.
	* amd64-nat.c (amd64_collect_native_gregset): Zero-extend the
	32-bit segment registers.

2004-03-01  Andrew Cagney  <cagney@redhat.com>

	* rs6000-tdep.c (rs6000_init_frame_pc_first): Fix compiler error,
	use frame_relative_level and get_next_frame.

2004-02-29  Andrew Cagney  <cagney@redhat.com>

	* rs6000-tdep.c (rs6000_init_frame_pc_first): New function.
	(rs6000_gdbarch_init): Set deprecated_init_frame_pc_first.
	* config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC_FIRST):
	Delete macro.

2004-02-29  Daniel Jacobowitz  <drow@mvista.com>

	* inflow.c (terminal_inferior): Don't give up the terminal if we
	previously couldn't get the inferior's terminal state.

2004-02-29  Daniel Jacobowitz  <drow@mvista.com>

	* regcache.c (read_pc_pid): Restore inferior_ptid after reading
	PC_REGNUM.

2004-02-28  Andrew Cagney  <cagney@redhat.com>

	* NEWS: Refer to GDB 6.1.
	* README: Refer to GDB 6.1.
	* PROBLEMS: Refer to GDB 6.1.

2004-02-28  Daniel Jacobowitz  <drow@mvista.com>

	* thread-db.c (disable_thread_signals): Remove unused function.

2004-02-28  Mark Kettenis  <kettenis@gnu.org>

	* amd64-nat.c: Include "gdb_string.h".
	(amd64_collect_native_gregset): Zero-extend the 32-bit
	general-purpose registers and %eip.

	* amd64-tdep.h: (amd64_collect_fxsave): New prototype.
	* amd64-tdep.c (amd64_collect_fxsave): New function.
	(amd64_fill_fxsave): Simply call amd64_collect_fxsave.

	* i387-tdep.h: Update copyright year.
	(i387_collect_fxsave): New prototype.
	* i387-tdep.c: Update copyright year.
	(i387_collect_fxsave): New function containing most of the code
	from i387_fill_fxsave.
	(i387_fill_fxsave): Call i387_collect_fxsave.

2004-02-28  Andrew Cagney  <cagney@redhat.com>

        * amd64-linux-nat.c (ps_get_thread_area): When architecture is
	i386 use PTRACE_GET_THREAD_AREA.  Suggested by Roland McGrath.

2004-02-28  Mark Kettenis  <kettenis@gnu.org>

	* amd64-tdep.c (amd64_frame_cache): Fix comment.

2004-02-28  Andrew Cagney  <cagney@redhat.com>

	* utils.c: Use "", instead of <>, to include readline.
	tui/tui-win.c, tui/tui.c, tui/tui-hooks.c: Ditto.
	* tracepoint.c, top.c, symmisc.c, symfile.c: Ditto.
	* source.c, solib.c, exec.c, event-top.c: Ditto.
	* corelow.c, completer.c, cli/cli-setshow.c: Ditto.
	* cli/cli-dump.c, cli/cli-cmds.c: Ditto.
	* Makefile.in: Update all dependencies.
	(readline_tilde_h, readline_history_h): Define.
	(readline_headers): Delete.

2004-02-28  Mark Kettenis  <kettenis@gnu.org>

	* config/djgpp/fnchange.lst: Rename "config/i386/nm-linux64.h" to
	"config/i386/nm-lx64.h" and "config/i386/tm-linux64.h" to
	"config/i386/tm-lx64.h".

	* config/djgpp/fnchange.lst: Rename "amd64-linux-tdep.c" to
	"amd64-ltdep.c" and "amd64-linux-nat.c" to "amd64-lnat.c".  Remove
	rules for "x86-64-linux-tdep.c" and "x86-64-linux-nat.c".

2004-02-28  Andrew Cagney  <cagney@redhat.com>

	* dwarf2-frame.h (struct gdbarch): Add opaque declaration.

	* breakpoint.c (_initialize_breakpoint): Use
	"add_setshow_auto_boolean_cmd.  Better word-wrap help messages.
	Add help to show command.

2004-02-28  Mark Kettenis  <kettenis@gnu.org>

	* i386-nat.c: Reformat to be closer to coding standards.
	(i386_handle_nonaligned_watchpoint): Rename local variable `rv' to
	`retval'.  Make variables `align' and `size' local to while-loop.
	(i386_stopped_data_address): Rename local variable `ret' to `addr'.
	(_initialize_i386_nat): New prototype.

	* tui/tui.c: Include <readline/readline.h> instead of
	"readline/readline.h".  Include it after <term.h> and
	"gdb_curses.h".

2004-02-27  Andrew Cagney  <cagney@redhat.com>

	* hppa-tdep.c (hppa_gdbarch_init): On 32-bit systems always use
	the new frame unwind code.
	(hppa_frame_cache): Use PCOQ_HEAD_REGNUM instead of PC_REGNUM.
	(hppa_frame_prev_register): Compute PCOQ_TAIL_REGNUM from
	PCOQ_HEAD_REGNUM.

	* hppa-tdep.c (hppa_gdbarch_init): On 32-bit systems always
	"return_value" and "push_dummy_call".
	(hppa32_use_struct_convention): Delete unused function.
	(hppa32_store_return_value): Delete unused function.
	(hppa32_extract_return_value): Delete unused function.
	(hppa32_stack_align): Delete function.

2004-02-27  Eli Zaretskii  <eliz@elta.co.il>

	* coffread.c (enter_linenos): Don't let rawptr reference memory
	outside linetab[]'s limits.

2004-02-27  Andrew Cagney  <cagney@redhat.com>

	* hppa-tdep.c (hppa32_push_dummy_call): Fix code reserving
	inferior stack space - the stack needs to grow upwards.
	(hppa32_frame_align): New function.
	(hppa64_frame_align): Replace hppa_frame_align.
	(hppa_gdbarch_init): Update.

2004-02-26  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (frame_unwind.h, frame-base.h, trad-frame.h)
	(dwarf2-frame.h): Include.
	(enum cris_regnums): New enum CRIS_FP_REGNUM.
	Remove static variables related to ABI setting.
	(struct gdbarch_tdep): Remove cris_abi member.
	(struct frame_extra_info): Remove.
	(cris_unwind_cache, stack_item): New structs.
	(cris_frame_unwind, cris_frame_base): New variables.
	(push_stack_item, pop_stack_item)
	(cris_frame_unwind_cache, cris_frame_this_id)
	(cris_frame_prev_register, cris_unwind_dummy_id, cris_frame_align)
	(cris_push_dummy_code, cris_push_dummy_call, cris_frame_sniffer)
	(cris_frame_base_address, cris_scan_prologue, cris_unwind_pc)
	(cris_unwind_sp, cris_store_return_value, cris_extract_return_value)
	(cris_reg_struct_has_addr): New functions.
	(cris_examine, cris_frame_init_saved_regs, cris_frame_chain)
	(cris_frame_saved_pc, cris_saved_pc_after_call,
	(cris_store_struct_return, cris_frameless_function_invocation)
	(cris_pop_frame, cris_skip_prologue_main)
	(cris_abi_original_store_return_value)
	(cris_abi_v2_store_return_value)
	(cris_abi_original_extract_return_value)
	(cris_abi_v2_extract_return_value)
	(cris_abi_original_reg_struct_has_addr)
	(cris_abi_v2_reg_struct_has_addr)
	(cris_abi_original_push_arguments, cris_abi_v2_push_arguments)
	(cris_push_return_address, cris_abi_update): Remove.
	(_initialize_cris_tdep): Remove ABI command.
	(cris_dump_tdep): Ditto.
	(cris_gdbarch_init): Remove ABI command.
	Set store_return_value, extract_return_value, push_dummy_code,
	push_dummy_call, frame_align, unwind_pc, unwind_sp, unwind_dummy_id,
	frame_unwind_append_sniffer, frame_base_set_default.
	Clear deprecated init_frame_pc, push_arguments, store_return_value,
	extract_return_value, fp_regnum, pc_in_call_dummy, call_dummy_words,
	sizeof_call_dummy_words, get_saved_register, push_return_address,
	pop_frame, store_struct_return, frame_init_saved_regs,
	init_extra_frame_info, frameless_function_invocation, frame_chain,
	frame_saved_pc, saved_pc_after_call, save_dummy_frame_tos,
	dummy_write_sp.

2004-02-26  Jeff Johnston  <jjohnstn@redhat.com>

	* valprint.h (print_hex_chars, print_char_chars): New prototypes.
	* valprint.c (print_hex_chars): Change from static to external.
	(print_char_chars): New function.
	* printcmd.c (print_scalar_formatted): For integer and enum types
	that are longer than LONGEST, perform processing via appropriate
	print_*_chars routines.

2004-02-26  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in: Update dependencies.
	Changes from Ulrich Weigand,
	* s390-tdep.c: Include "dwarf2-frame.h".
	(s390_dwarf2_frame_init_reg): New function.
	(s390_gdbarch_init): Install dwarf2_frame_sniffer and
	dwarf2_frame_base_sniffer.  Call dwarf2_frame_set_init_reg.

2004-02-26  Jeff Johnston  <jjohnstn@redhat.com>

	* breakpoint.c (pending_break_support): New setting variable.
	(break_command_1): Account for pending_break_support setting
	when creating pending breakpoints.
	(set_breakpoint_cmd, show_breakpoint_cmd): New functions.
	(_initialize_breakpoint): Add "set breakpoint pending" and
	"show breakpoint pending" commands.

2004-02-26  Andrew Cagney  <cagney@redhat.com>

	Fix PR i18n/1570.
	* charset.c (backslashable, backslashed, represented): Remove 'e'
	from list of escaped characters, not part of ISO-C.

2004-02-25  J. Brobecker  <brobecker@gnat.com>

	From Peter Schauer <schauer@pdf.de>:
	* tui/tui.c: Move system header includes after local includes.
	Fixes a build failure on solaris systems.

2004-02-25  J. Brobecker  <brobecker@gnat.com>

	* configure.in: Refine the previous change.
	* configure: Regenerate.

2004-02-25  Mark Kettenis  <kettenis@gnu.org>

	* amd64-tdep.h: Renamed from x86-64-tdep.h.
	* amd64-tdep.c: Renamed from x86-64-tdep.c.  Include
	"amd64-tdep.h" instead of "x86-64-tdep.h".
	* amd64-nat.c: Include "amd64-tdep.h" instead of "x86-64-tdep.h".
	* amd64-linux-tdep.h: Renamed from x86-64-linux.h.
	* amd64-linux-tdep.c: Renamed from x86-64-linux-tdep.c.  Include
	"amd64-tdep.h" and "amd64-linux-tdep.h" instead of "x86-64-tdep.h"
	and "x86-64-tdep.c".
	* amd64-linux-nat.c: Renamed from x86-64-linux-nat.c.  Include
	"amd64-tdep.h" and "amd64-linux-tdep.h" instead of "x86-64-tdep.h"
	and "x86-64-tdep.c".
	* amd64bsd-nat.c: Update copyright year.
	Include "amd64-tdep.h" instead of "x86-64-tdep.h".
	* amd64fbsd-tdep.c: Include "amd64-tdep.h" instead of
	"x86-64-tdep.h".
	* amd64fbsd-nat.c: Include "amd64-tdep.h" instead of
	"x86-64-tdep.h".
	* amd64nbsd-tdep.c: Include "amd64-tdep.h" instead of
	"x86-64-tdep.h".
	* amd64nbsd-nat.c: Include "amd64-tdep.h" instead of
	"x86-64-tdep.h".
	* amd64obsd-tdep.c: Include "amd64-tdep.h" instead of
	"x86-64-tdep.h".
	* amd64obsd-nat.c: Include "amd64-tdep.h" instead of
	"x86-64-tdep.h".
	* configure.host: (x86_64-*-linux*): Set gdb_target to linux64.
	* configure.tgt (x86_64-*-linux*): Set gdb_target to linux64.
	* Makefile.in (amd64_linux_tdep_h): Renamed from
	x86_64_linux_tdep_h.
	(amd64_tdep_h): Renamed from x86_64_tdep_h.
	(amd64bsd-nat.o, amd64fbsd-nat.o, amd64fbsd-tdep.o, amd64-nat.o)
	(amd64nbsd-nat.o, amd64nbsd-tdep.o, amd64obsd-nat.o)
	(amd64obsd-tdep.o): Update dependencies.
	(amd64-tdep.o, amd64-linux-nat.o, amd64-linux-tdep.o): New
	dependencies.
	(x86-64-linux-nat.o, x86-64-linux-tdep.o, x86-64-tdep.o): Remove
	dependencies.
	(ALLDEPFILES): Add amd64-tdep.c, amd64obsd-nat.c, amd64obsd-nat.c,
	amd64-linux-nat.c amd64-linux-tdep.c.
	* config/i386/tm-linux64.h: Renamed from tm-x86-64linux.h
	* config/i386/nm-linux64.h: Renamed from nm-x86-64linux.h.
	* config/i386/linux64.mt: Renamed from x86-64linux.mt.
	(TDEPFILES): Replace x86-64-tdep.o and x86-64-linux-tdep.o with
	amd64-tdep.o and amd64-linux-tdep.o.
	(TM_FILE): Set to tm-linux64.h.
	* config/i386/linux64.mh: Renamed from x86-64linux.mh.
	(NAT_FILE): Set to nm-linux64.h.
	(NATDEPFILES): Replace x86-64-linux-nat.o with amd64-linux-nat.o.
	* config/i386/fbsd64.mt (TDEPFILES): Replace x86-64-tdep.o with
	amd64-tdep.o.
	* config/i386/nbsd64.mt (TDEPFILES): Replace x86-64-tdep.o with
	amd64-tdep.o.
	* config/i386/obsd64.mt (TDEPFILES): Replace x86-64-tdep.o with
	amd64-tdep.o.

2004-02-25  Roland McGrath  <roland@redhat.com>

	* remote.c (remote_protocol_qPart_auxv): New variable.
	(init_all_packet_configs): Initialize it.
	(set_remote_protocol_qPart_auxv_packet_cmd): New function.
	(show_remote_protocol_qPart_auxv_packet_cmd): New function.
	(show_remote_cmd): Call it.
	(_initialize_remote): Initialize commands.
	(remote_xfer_partial): If enabled, use qPart:auxv:read:... query to
	service TARGET_OBJECT_AUXV requests.

2004-02-25  J. Brobecker  <brobecker@gnat.com>

	* configure.in: Make sure that the wborder function is available.
	Otherwise, search for it in the cur_colr library.
	* configure: Regenerate.

2004-02-25  Andrew Cagney  <cagney@redhat.com>

	* hppa-tdep.c (hppa32_push_dummy_call): Rewrite.

2004-02-25  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-x86-64linux.h: Tweak comments.

2004-02-25  Richard Sandiford  <rsandifo@redhat.com>

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

2004-02-25  Andrew Cagney  <cagney@redhat.com>

	PR cli/1566.  Problem found, and fix suggested by David Allan.
	* cli/cli-script.c (execute_control_command): Unconditionally
	install a cleanup.  Default "ret" to "invalid_control".  Use
	"break" instead of "return" to escape from the switch.

2004-02-24  J. Brobecker  <brobecker@gnat.com>

	* tui/tui-disasm.c: %s/lines/asm_lines/g to avoid a collision
	with the lines macro defined in term.h on AiX.
	* tui/tui-regs.c: %s/label_width/tui_label_width/g, to avoid
	a collision with the label_width macro defined in term.h on AiX.

2004-02-23  David Mosberger  <davidm@hpl.hp.com>

	Committed by Kevin Buettner <kevinb@redhat.com>.

	* ia64-tdep.h (ia64_write_pc, ia64_linux_write_pc): Declare.
	* ia64-tdep.c (ia64_write_pc): Make it a global function.
	(ia64_gdbarch_init): For Linux targets, use ia64_linux_write_pc()
	instead of ia64_write_pc().
	* ia64-linux-tdep.c (regcache.h): Include.
	(ia64_linux_write_pc): New function.

2004-02-23  Roland McGrath  <roland@redhat.com>

	* auxv.c (info_auxv_command): Fix typos in error messages.

2004-02-23  Mark Kettenis  <kettenis@gnu.org>

	* x86-64-tdep.h: Tweak comment.
	(enum amd64_regnum): New.
	(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM)
	(X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM)
	(X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM)
	(X86_64_XMM1_REGNUM): Removed.
	(AMD64_NUM_GREGS): Renamed from X86_64_NUM_GREGS.
	(amd64_init_abi, amd64_supply_fxsave, amd64_fill_fxsave): Adjust
	prototypes for renamed functions.
	* x86-64-tdep.c: Fix typo.
	(amd64_dwarf_regmap): Use constants from `enum amd64_regnum' for
	register numbers.
	(amd64_return_value, amd64_push_arguments, amd64_push_dummy_call):
	Use constants from `enum amd64_regnum' for register numbers.
	(AMD64_NUM_SAVED_REGS): Adjust for renamed macros.
	(amd64_analyze_prologue, amd64_frame_cache,
	amd64_sigtramp_frame_cache): Use constants from `enum
	amd64_regnum' for register numbers.
	(amd64_supply_fpregset): Adjust for renamed functions.
	(amd64_init_abi): Rename from x86_64_init_abi.  Use constants from
	`enum amd64_regnum' for register numbers.
	(I387_ST0_REGNUM): Use constant from `enum amd64_regnum'.
	(amd64_supply_fxsave): Rename from x86_64_supply_fxsave.
	(amd64_fill_fxsave): Rename fro x86_64_fill_fxsave.
	* x86-64-linux-tdep.c (amd64_linux_supply_gregset)
	(amd64_linux_fill_gregset): Adjust for renamed macros.
	(fetch_core_registers): Adjust for renamed functions.
	(amd64_linux_init_abi): Adjust for renamed functions.
	* x86-64-linux-nat.c (supply_gregset, fill_gregset): Adjust for
	renamed functions.
	* amd64-nat.c: Adjust for renamed macros.
	* amd64bsd-nat.c (fetch_inferior_registers)
	(store_inferior_registers): Use constants from `enum amd64_regnum'
	for register numbers.  Adjust for renamed variables.
	* amd64fbsd-nat.c (supply_gregset, fill_gregset): Adjust for
	renamed variables.
	(_initialize_amd64fbsd_nat): Use constants from `enum
	amd64_regnum' for register numbers.
	* amd64fbsd-tdep.c (amd64fbsd_sigcontext_addr): Use constants from
	`enum amd64_regnum' for register numbers.
	(amd64fbsd_init_abi): Adjust for renamed functions.
	* amd64nbsd-tdep.c (amd64nbsd_sigcontext_addr): Use constants from
	`enum amd64_regnum' for register numbers.
	(amd64nbsd_init_abi): Adjust for renamed functions.
	(_initialize_amd64nbsd_ndep): Adjust for renamed macros.
	* amd64obsd-tdep.c (amd64obsd_sigcontext_addr): Use constants from
	`enum amd64_regnum' for register numbers.
	(amd64obsd_init_abi): Adjust for renamed functions.
	(_initialize_amd64obsd_ndep): Adjust for renamed macros.

2004-02-23  Jeff Johnston  <jjohnstn@redhat.com>

	* breakpoint.c (print_one_breakpoint): Do not output spaces
	after printing <PENDING> for a pending breakpoint.

2004-02-23  Jeff Johnston  <jjohnstn@redhat.com>

	* printcmd.c (print_scalar_formatted): Initialize val_long
	to remove compiler warning message.

2004-02-23  Jeff Johnston  <jjohnstn@redhat.com>

	* defs.h (nquery, yquery): New prototypes.
	* breakpoint.c (break_command_1): Use new nquery interface.
	* utils.c (defaulted_query, nquery, yquery): New functions.

2004-02-23  Andrew Cagney  <cagney@redhat.com>

	* hppa-tdep.c (hppa_frame_align): New function.
	(hppa32_push_dummy_call): New function.
	(hppa64_push_dummy_call): New function.
	(hppa_gdbarch_init): Set frame_align and push_dummy_call; keep
	disabled.

	* infcall.c (legacy_push_dummy_code): Don't call deprecated
	FIX_CALL_DUMMY when push_dummy_call is available.
	(call_function_by_hand, push_dummy_code): Ditto.

2004-02-22  Andrew Cagney  <cagney@redhat.com>

	* config/pa/tm-hppa.h (CALL_DUMMY_LOCATION): Delete macro.
	(DEPRECATED_PC_IN_CALL_DUMMY): Delete macro.
	(DEPRECATED_USE_GENERIC_DUMMY_FRAMES): Delete macro.
	* hppa-tdep.c (hppa_gdbarch_init): Clear deprecated
	use_generic_dummy_frames, set deprecated pc_in_call_dummy, set
	call_dummy_location to ON_STACK.

2004-02-22  Mark Kettenis  <kettenis@gnu.org>

	* x86-64-linux-tdep.c: Tweak comment.
	(amd64_linux_supply_gregset): Renamed from
	x86_64_linux_supply_gresget.
	(amd64_linux_fill_gregset): Renamed from
	x86_64_linux_fill_gregset.
	(fetch_core_registers): Adjust for renamed functions.
	(amd64_core_fns): Renamed from x86_64_core_fns.
	(amd64_linux_sigtramp_start): Renamed from
	x86_64_linux_sigtramp_start.
	(amd64_linux_pc_in_sigtramp): Renamed from
	x86_64_linux_pc_in_sigtramp.  Adjust for renamed functions.
	(AMD64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Renamed from
	X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET.
	(amd64_linux_sigcontext_addr): Renamed from
	x86_64_linux_sigcontext_addr.
	(amd64_linux_sc_reg_offset): Renamed from
	x86_64_linux_sc_reg_offset.
	(amd64_linux_init_abi): Renamed from x86_64_linux_init_abi.
	Adjust for renamed functions and variables.
	(_initialize_amd64_linux_tdep): Renamed from
	_initialize_x86_64_linux_tdep.  Adjust for renamed functions and
	variables.
	* x86-64-linux-tdep.h: Update copyright year.  Tweak comment.
	Adjust for renamed functions.

	* x86-64-linux-nat.c (amd64_linux_gregset64_reg_offset): Rename
	from x86_64_linux_gregset64_reg_offset.
	(amd64_linux_gregset32_reg_offset): Rename from
	x86_64_linux_gregset64_reg_offset.
	(amd64_linux_dr_get): Renamed from x86_64_linux_dr_get.
	(amd64_linux_dr_set): Renamed from x86_64_linux_dr_set.
	(amd64_linux_dr_set_control): Renamed from
	x86_64_linux_dr_set_control.  Adjust for renamed functions.
	(amd64_linux_dr_set_addr): Renamed from x86_64_linux_dr_set_addr.
	Adjust for renamed functions.
	(amd64_linux_dr_reset_addr): Renamed from
	x86_64_linux_dr_reset_addr. Adjust for renamed functions.
	(amd64_linux_dr_get_status): Renamed from
	x86_64_linux_dr_get_status.  Adjust for renamed functions.
	(_initialize_amd64_linux_nat): Renamed from
	_initialize_x86_64_linux_nat.  Adjust for renamed variables and
	functions.
	* config/i386/nm-x86-64linux.h: Update copyright year.
	Adjust for renamed functions.

	* amd64fbsd-tdep.c (amd64fbsd_sigtramp_start_addr): Renamed from
	amd64fbsd_sigtramp_start.
	(amd64fbsd_sigtramp_end_addr): Renamed from
	amd64fbsd_sigtramp_end.
	(amd64fbsd_init_abi): Adjust for renamed variables.
	* amd64fbsd-nat.c (_initialize_amd64fbsd_nat): Adjust for renamed
	variables.
	* x86-64-tdep.h (amd64fbsd_sigtramp_start_addr): Renamed from
	amd64fbsd_sigtramp_start.
	(amd64fbsd_sigtramp_end_addr): Renamed from
	amd64fbsd_sigtramp_end.

2004-02-22  Andrew Cagney  <cagney@redhat.com>

	* hppa-tdep.c (hppa32_return_value): New function.
	(hppa64_return_value): New function.
	(hppa_gdbarch_init): Set return_value; keep disabled.

	* hppa-tdep.c (hppa_gdbarch_init): Re-order separating
	struct-return and inferior function call methods.

	* hppa-tdep.c: Include "trad-frame.h", "frame-unwind.h", and
	"frame-base.h".
	(struct hppa_frame_cache): Define.
	(hppa_frame_cache, hppa_frame_this_id): New functions.
	(hppa_frame_prev_register): New function.
	(hppa_frame_unwind, hppa_frame_base): New variables.
	(hppa_frame_unwind_sniffer): New function.
	(hppa_frame_base_address, hppa_unwind_pc): New function.
	(hppa_gdbarch_init): Set unwind_dummy_id, unwind_pc, frame unwind
	sniffer, and frame base sniffer; keep disabled.
	(hppa_frame_base_sniffer, hppa_unwind_dummy_id): New functions.
	* Makefile.in: Update dependencies, fix s/nbsd/obsd/ typo.

	* frame-unwind.c (frame_unwind_find_by_frame): Add legacy_frame_p
	to predicates for "seriously old code".

	* hppa-tdep.c (hppa_gdbarch_init): Convert compile time #if0s into
	runtime if(0).

	* hppa-tdep.c (hppa_breakpoint_from_pc): Make "breakpoint"
	unsigned.
	(hppa_frame_find_saved_regs): Fix "std" instruction pattern

	* config/pa/tm-hppa.h: Update copyright.
	(DEPRECATED_INIT_FRAME_PC): Delete macro.
	(deprecated_init_frame_pc_default): Delete declaration.
	(hppa_frame_init_saved_regs): Delete declaration.
	(DEPRECATED_FRAME_INIT_SAVED_REGS): Delete macro.
	* hppa-tdep.c: Include "arch-utils.h".
	(hppa_gdbarch_init): Set deprecated init_frame_pc
	and deprecated frame_init_saved_regs.
	(hppa_frame_init_saved_regs): Make static.

2004-02-22  Mark Kettenis  <kettenis@gnu.org>

	Remove old 386BSD support.
	* NEWS (REMOVED configurations and files): Add i[3456]86-*-bsd*.
	* configure.host: Remove i[34567]86-*-bsd*.
	* configure.tgt: Remove i[34567]86-*-bsd*.
	* i386b-nat.c: Removed.
	* Makefile.in (ALLDEPFILES): Remove i386b-nat.c.
	(i386b-nat.o): Remove dependencies.

	* config/i386/i386bsd.mh: Removed.
	* config/i386/i386bsd.mt: Removed.
	* config/i386/nm-i386bsd.h: Removed.
	* config/i386/tm-i386bsd.h: Removed.
	* config/i386/xm-i386bsd.h: Removed.

	* x86-64-tdep.h (amd64obsd_r_reg_offset): New extern declaration.

	* amd64fbsd-tdep.c: Include "solib-svr4.h".
	(amd64fbsd_init_abi): Set link map offsets.
	* amd64nbsd-tdep.c: Include "slib-svr4.h".
	(amd64nbsd_init_abi): Set link map offsets.
	* amd64obsd-tdep.c: Include "solib-svr4.h".
	(amd64obsd_init_abi): Set link map offsets.
	* i386fbsd-tdep.c: Include "solib-svr4.h".
	(i386fbsd_init_abi): Set link map offsets.
	* i386nbsd-tdep.c: Include "solib-svr4.h".
	(i386nbsdelf_init_abi): Set link map offsets.
	* Makefile.in (amd64fbsd-tdep.o, amd64nbsd-tdep.o)
	(amd64obsd-tdep.o, i386fbsd-tdep.o): Update dependencies.
	* config/i386/fbsd.mh (NATDEPFILES): Remove solib.o, solib-svr4.o,
	solib-legacy.o and core-aout.o. Reformat.
	* config/i386/fbsd64.mh (NATDEPFILES): Remove solib.o,
	solib-svr4.o, solib-legacy.o.  Reformat.
	* config/i386/nbsdaout.mh (NATDEPFILES): Add solib.o.  Reformat.
	* config/i386/nbsdelf.mh: Reformat.
	* config/i386/nbsd64.mh (NATDEPFILES): Remove solib.o,
	solib-svr4.o, solib-legacy.o and corelow.o.
	* config/i386/obsd.mh, config/i386/obsdaout.mh: Reformat.
	* config/i386/obsd64.mh (NATDEPFILES): Remove solib.o,
	solib-svr4.o, solib-legacy.o and corelow.o.  Reformat.
	* config/i386/fbsd.mt (TDEPFILES): Add solib.o, solib-svr4.o.
	* config/i386/fbsd64.mt (TDEPFILES): Add solib.o, solib-svr4.o.
	(TM_FILE): Set to tm-fbsd.h.
	* config/i386/nbsd.mt (TDEPFILES): Reformat.
	* config/i386/nbsd64.mt (TDEPFILES): Add corelow.o, solib.o and
	solib-svr4.o.
	* config/i386/obsd.mt (TDEPFILES): Add corelow.o, solib.o and
	solib-svr4.o.
	(TM_FILE): Set to nm-nbsd.h.
	* config/i386/nm-fbsd.h: Update copyright year.  Tweak comments.
	Simplify shared library support.  Don't include "elf/common.h".
	(SVR4_SHARED_LIBS): Don't define.
	* config/i386/nm-fbsd64.h: Update copyright year.  Don't include
	"solib.h".
	* config/i386/nm-nbsd.h, config/i386/nm-nbsdaout.h,
	config/i386/nm-obsd.h: Update copyright year.  Tweak comments.
	* config/i386/tm-fbsd.h: Update copyright tear.  Tweak comments.
	Don't include "i386/tm-i386.h".  Include "solib.h".
	* config/i386/tm-nbsd.h: Update copyright year.  Tweak comments.
	Don't include "i386/tm-i386.h".
	* config/i386/xm-i386.h: Update copyright year.  Tweak comments.
	* config/i386/xm-nbsd.h: Update copyright year.  Tweak comments.
	Include "i386/xm-i386.h".
	(HOST_LONG_DOUBLE_FORMAT): Remove.

	Fix OpenBSD/i386 sigtramp recognition.
	* i386-tdep.h: Update copyright year.
	(i386bsd_pc_in_sigtramp, i386bsd_sigtramp_start)
	(i386bsd_sigtramp_end): New prototypes.
	(i386fbsd_sigtramp_start_addr): Renamed from
	i386fbsd_sigtramp_start.
	(i386fbsd_sigtramp_end_addr): Renamed from i386fbsd_sigtramp_end.
	(i386obsd_sigtramp_start_addr): Renamed from
	i386obsd_sigtramp_start.
	(i386obsd_sigtramp_end_addr): Renamed from i386obsd_sigtramp_end.
	* i386bsd-tdep.c: Update copyright year.
	(i386bsd_pc_in_sigtramp): Make public.
	* i386fbsd-nat.c: Update copyright year.
	(_initialize_i386fbsd_nat): Adjust for renamed variables.
	* i386fbsd-tdep.c: Update copyright year.
	(i386fbsd_sigtramp_start_addr): Renamed from
	i386fbsd_sigtramp_start.
	(i386fbsd_sigtramp_end_addr): Renamed from i386fbsd_sigtramp_end.
	(i386fbsdaout_init_abi): Adjust for renamed variables.
	* i386obsd-nat.c: Update copyright year.
	(_initialize_i386obsd_nat): Adjust for renamed variables.
	* i386obsd-tdep.c: Include "target.h".
	(i386obsd_page_size): New variable.
	(i386obsd_pc_in_sigtramp, i386obsd_sigtramp_start)
	(i386obsd_sigtramp_end): New functions.
	(i386obsd_sigtramp_start_addr): Renamed from
	i386obsd_sigtramp_start.
	(i386obsd_sigtramp_end_addr): Renamed from i386obsd_sigtramp_end.
	(i386obsd_init_abi): Adjust for renamed variables.  Set
	pc_in_sigtramp, sigtramp_start and sigtramp_end.
	* Makefile.in (i386obsd-tdep.o): Update dependencies.

	* amd64obsd-tdep.c (amd64obsd_pc_in_sigtramp): Adjust for signal
	trampoline change in OpenBSD kernel.

	* amd64-nat.c: Update copyright year.
	(amd64_supply_native_gregset, amd64_collect_native_gregset): Use
	architecture from REGCACHE.

	* x86-64-linux-nat.c (x86_64_linux_gregset32_reg_offset): Use
	symbolic constants from <sys/reg.h> instead of hard-coded numbers.

2004-02-21  Mark Kettenis  <kettenis@gnu.org>

	* configure.host: Add i[34567]86-*-openbsd[0-2].* and
	i[34567]86-*-openbsd3.[0-3].
	* config/i386/obsdaout.mh: New file.

	* config/i386/obsd.mh (MH_FLAGS): Remove.

	Fix PR build/1549.
	* i386obsd-tdep.c: Update copyright years.  Include
	"solib-svr4.h".
	(i386obsd_init_abi): Don't set regset_from_core_section here.
	(i386obsd_aout_init_abi): New function.  Set
	regset_from_core_section here.
	(i386obsd_elf_init_abi): New function.
	(_initialize_i386obsd_tdep): Register OS/ABI for OpenBSD ELF.
	* Makefile.in (i386obsd-tdep.o): Update dependecies.
	* config/i386/obsd.mt (TDEPFILES): Add solib.o and solib-svr4.o.
	(TM_FILE): Set to tm-nbsd.h.

	* config/i386/obsd.mh (NATDEPFILES): Remove solib.o and
	solib-sunos.o.

	* solib-svr4.h: Update copyright year.
	(svr4_ilp32_fetch_link_map_offsets)
	(svr4_lp64_fetch_link_map_offsets): New prototype.
	* solib-svr4.c: Update copyright year.
	(svr4_ilp32_fetch_link_map_offsets)
	(svr4_lp64_fetch_link_map_offsets): New function.

2004-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2read.c (add_partial_symbol): Fix typo in adding enumerators
	to the partial symbol table.

2004-02-20  J. brobecker  <brobecker@gnat.com>

	* PROBLEMS: Add description of problem documented under gdb/1560.

2004-02-20  Mark Kettenis  <kettenis@gnu.org>

	* amd64obsd-tdep.c: Include "regset.h" and "i387-tdep.h".  Fix
	comments.
	(amd64obsd_supply_regset, amd64obsd_regset_from_core_section): New
	functions.
	(amd64obsd_init_abi): Reorder initializations.  Use
	amd64obsd_r_reg_offset to initialize the general-purpose register
	set details.  Set regset_from_core_section.
	(_initialize_amd64obsd_tdep): Rename from
	_initialize_amd64obsd_ndep.  Add OS ABI handler for core dumps.
	* Makefile.in (amd64obsd-tdep.o): Update dependencies.
	* config/i386/obsd64.mt (TDEPFILES): Add i386-tdep.o.

	* NEWS (New native configurations): Mention OpenBSD/alpha.
	* configure.tgt: Add alpha*-*-openbsd*.
	* configure.host: Add alpha*-*-openbsd*.
	* alphanbsd-tdep.c: Update copyright year.
	(_initialize_alphanbsd_tdep): Register OS ABI for OpenBSD ELF.

2004-02-20  Andrew Cagney  <cagney@redhat.com>

	Fix PR tdep/1372.
	* configure.tgt: Delete target "none-*-*".
	* configure.host: Delete host "none-*-*".
	* config/none/none.mh: Delete file.
	* config/none/none.mt: Delete file.
	* config/none/xm-none.h: Delete file.
	* config/none/tm-none.h: Delete file.
	* config/none/nm-none.h: Delete file.

2004-02-19  Fred Fish  <fnf@redhat.com>

	* sh-tdep.c (sh_analyze_prologue): Eliminate useless test of
	cache->uses_fp prior to setting it.

2004-02-19  Fred Fish  <fnf@redhat.com>

	Fix for PR breakpoint/1558.
	* sh-tdep.c (IS_JSR): New macro.
	(sh_analyze_prologue): Use IS_JSR to terminate prologue scan.

2004-02-19  Jim Blandy  <jimb@redhat.com>

	* findvar.c (value_from_register): Doc fix.

2004-02-19  Jeff Johnston  <jjohnstn@redhat.com>

	* printcmd.c (print_scalar_formatted): Do not check for sizeof
	type being greater than sizeof of host's LONGEST.  Always use
	unpack_long() unless format 'f' chosen.

2004-02-19  Joel Brobecker  <brobecker@gnat.com>

	Committed by Elena Zannoni  <ezannoni@redhat.com>

	* symtab.c (find_pc_sect_psymtab): Return the psymtab that
	contains a symbol wich is the best, non-exact match for the given
	pc.  Update comments.

2004-02-19  Elena Zannoni  <ezannoni@redhat.com>

	* event-top.c (async_request_quit): Remove uses of REQUEST_QUIT
	macro, which was part of the now removed Mach 3 port.
	* utils.c (request_quit): Ditto.

2004-02-18  Mark Kettenis  <kettenis@gnu.org>

	* config/djgpp/fnchange.lst: Rename "amd64obsd-tdep.c" and
        "amd64obsd-nat.c" to "a64ob-tdep.c" and "a64ob-nat.c".

2004-02-18  Ulrich Weigand <Ulrich.Weigand@de.ibm.com>

	Committed by Mark Kettenis  <kettenis@gnu.org>.

	* config/s390/nm-linux.h (TARGET_REGION_OK_FOR_HW_WATCHPOINT):
	Define.

2004-02-18  Andrew Cagney  <cagney@redhat.com>

	* configure.in: Add a TUI target to CONFIG_ALL, CONFIG_CLEAN,
	CONFIG_INSTALL and CONFIG_UNINSTALL.
	* configure: Re-generate.
	* interps.h (INTERP_TUI): Define.
	* Makefile.in: Update dependencies.
	(TUI): New macro.
	(tui-main.o): Specify dependencies.
	(install-tui, uninstall-tui, clean-tui, all-tui): New rules.
	* tui/tui-main.c: New file.

2004-02-18  Mark Kettenis  <kettenis@gnu.org>

	* amd64obsd-tdep.c, amd64obsd-nat.c: New files.
	* Makefile.in (amd64obsd-nat.o, amd64obsd-tdep.o): New
	dependencies.
	* configure.host: Add x86_64-*-openbsd*.
	* configure.tgt: Add x86_64-*-openbsd*.
	* config/i386/obsd64.mt, config/i386/obsd64.mh: New files.

	* tui/tui.c: Don't include <malloc.h>.

	* Makefile.in (ALLDEPFILES): Add amd64-nat.c, amd64bsd-nat.c,
	amdfbsd-nat.c, amd64-fbsd-tdep.c, amd64nbsd-nat.c and
	amd64nbsd-tdep.c.

	* i386obsd-tdep.c (i386obsd_aout_regset_from_core_section): Make
	static.  Remove extraneous whitespace.
	* i386nbsd-tdep.c (i386nbsd_aout_regset_from_core_section): Make
	static.

2004-02-17  Jim Blandy  <jimb@redhat.com>

	* findvar.c (value_from_register): Doc fix.

2004-02-17  Ulrich Weigand <Ulrich.Weigand@de.ibm.com>

	Committed by Jim Blandy  <jimb@redhat.com>.

	* eval.c (evaluate_subexp_standard, case OP_OBJC_MSGCALL): Use
	CORE_ADDR as type for selectors.  Correct types for GNU run time
	message lookup function to use double indirection.
	* objc-lang.c (lookup_child_selector): Use CORE_ADDR as return type.
	* objc-lang.h (lookup_child_selector): Adapt prototype.

	* s390-nat.c (SUBOFF): New macro.
	(supply_gregset, fill_gregset): Use it to handle debugging
	of 32-bit exectuables running under a 64-bit kernel.
	* s390-tdep.c: Include "solib-svr4.h".
	(s390_svr4_fetch_link_map_offset): New function.
	(s390x_svr_fetch_link_map_offset): Likewise.
	(s390_gdbarch_init): Call set_solib_svr4_fetch_link_map_offsets.
	* Makefile.in (s390-tdep.o): Update dependencies.

	* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
	"frame-unwind.h".
	(s390_readinstruction): Reformat.  Use read_memory_nobpt.
	(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
	(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
	(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
	S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
	S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
	S390_SIGNAL_FRAMESIZE,
	s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
	(struct frame_extra_info): Remove.
	(s390_memset_extra_info): Remove.
        (op1_ag, op1_ay, op1_brasl, op1_brc, op1_brcl, op1_lay, op1_lg)
        (op1_lmy, op1_ly, op1_sg, op1_stmy, op1_sty, op1_sy, op_a)
        (op_agr, op_bas, op_bc, op_bcr, op_sgr, op_sr): New opcodes.
	(is_rse): Renamed to ...
	(is_rsy): ... this.  Support long displacements.
	(is_rxe): Renamed to ...
	(is_rxy): ... this.  Support long displacements.
	(compute_x_addr): Support long displacements.
	(struct s390_prologue_data): New data type.
	(s390_on_stack): Change API to use struct s390_prologue_data.
	(s390_store): Reimplement.
	(s390_load): New function.
	(s390_get_signal_frame_info): Remove.
	(s390_get_frame_info): Remove, replace by ...
	(s390_analyze_prolog): ... this new function.
	(s390_check_function_end): Remove.
	(s390_function_start): Remove.
	(s390_frameless_function_invokation): Remove.
	(s390_is_sigreturn): Remove.
	(s390_init_frame_pc_first): Remove.
	(s390_init_frame_extra_info): Remove.
	(s390_frame_init_saved_regs): Remove.
	(s390_frame_saved_pc_nofix): Remove.
	(s390_frame_saved_pc): Remove.
	(s390_frame_chain): Remove.
	(s390_fp_regnum, s390_read_fp): Remove.
	(s390_pop_frame_regular, s390_pop_frame): Remove.
	(s390_saved_pc_after_call): Remove.
	(s390_skip_prologue): Reimplement.
	(s390_in_function_epilogue_p): Support long displacements.
	(struct s390_unwind_cache): New data structure.
	(s390_frame_unwind_cache): New function.
	(s390_prologue_frame_unwind_cache): Likewise.
	(s390_backchain_frame_unwind_cache): Likewise.
	(s390_frame_this_id, s390_frame_prev_register): Likewise.
	(s390_frame_unwind): Define.
	(s390_frame_sniffer): New function.
	(struct s390_pltstub_unwind_cache): New data structure.
	(s390_pltstub_frame_unwind_cache): New function.
	(s390_pltstub_frame_this_id): Likewise.
	(s390_pltstub_frame_prev_register): Likewise.
	(s390_pltstub_frame_unwind): Define.
	(s390_pltstub_frame_sniffer): New function.
	(struct s390_sigtramp_unwind_cache): New data structure.
	(s390_sigtramp_frame_unwind_cache): New function.
	(s390_sigtramp_frame_this_id): Likewise.
	(s390_sigtramp_frame_prev_register): Likewise.
	(s390_sigtramp_frame_unwind): Define.
	(s390_sigtramp_frame_sniffer): New function.
	(s390_frame_base_address, s390_local_base_address): New functions.
	(s390_frame_base): Define.
	(s390_unwind_pc, s390_unwind_sp): New function.
	(s390_push_dummy_call): Use new frame base location.
	(s390_unwind_dummy_id): Likewise.
	(s390_gdbarch_init): Remove calls to:
	set_gdbarch_frameless_function_invocation,
	set_gdbarch_deprecated_init_frame_pc,
	set_gdbarch_deprecated_frame_chain,
	set_gdbarch_deprecated_frame_init_saved_regs,
	set_gdbarch_deprecated_pop_frame,
	set_gdbarch_deprecated_init_extra_frame_info,
	set_gdbarch_deprecated_init_frame_pc_first,
	set_gdbarch_deprecated_target_read_fp,
	set_gdbarch_deprecated_frame_saved_pc,
	set_gdbarch_deprecated_saved_pc_after_call,
	set_gdbarch_deprecated_fp_regnum.
	Add calls to:
	set_gdbarch_in_solib_call_trampoline,
	frame_unwind_append_sniffer,
	frame_base_set_default,
	set_gdbarch_unwind_pc,
	set_gdbarch_unwind_sp.
	* Makefile.in (s390-tdep.o): Update dependencies.

	* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
	(S390_STACK_FRAME_OVERHEAD): Remove.
	(S390_STACK_PARAMETER_ALIGNMENT): Remove.
	(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
	(s390_promote_integer_argument): Remove.
	(s390_cannot_extract_struct_value_address): Remove.
	(s390_use_struct_convention, s390_store_struct_return): Remove.
	(s390_extract_return_value, s390_store_return_value): Remove.
	(s390_return_value_convention, s390_return_value): New functions.
	(is_float_singleton): Handle typedefs.
	(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
	Remove, replace by ...
	(s390_function_arg_pass_by_reference, s390_function_arg_float,
	s390_function_arg_integer): ... these new functions.
	(s390_push_arguments, s390_push_return_address): Remove, replace by ...
	(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
	(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
	Fill in tdep->abi.
	Remove calls to:
	set_gdbarch_deprecated_store_struct_return,
	set_gdbarch_deprecated_extract_return_value,
	set_gdbarch_deprecated_store_return_value,
	set_gdbarch_use_struct_convention,
	set_gdbarch_extract_struct_value_address,
	set_gdbarch_deprecated_pc_in_call_dummy,
	set_gdbarch_deprecated_push_arguments,
	set_gdbarch_deprecated_save_dummy_frame_tos,
	set_gdbarch_deprecated_push_return_address,
	set_gdbarch_deprecated_sizeof_call_dummy_words,
	set_gdbarch_deprecated_call_dummy_words,
	set_gdbarch_deprecated_dummy_write_sp.
	Add calls to:
	set_gdbarch_push_dummy_call,
	set_gdbarch_unwind_dummy_id,
	set_gdbarch_return_value.

	* config/s390/nm-linux.h: Update comments.
	(target_insert_watchpoint, target_remove_watchpoint): Redefine.
	(STOPPED_BY_WATCHPOINT): Redefine.
	(TARGET_CAN_USE_HARDWARE_WATCHPOINT): Redefine to 1.
	(s390_insert_watchpoint, s390_remove_watchpoint): Update prototype.
	(s390_stopped_by_watchpoint): Likewise.
	(watch_area_cnt): Remove.
	* s390-nat.c: Update comments.
	(watch_area): Remove typedef.
	Global replace watch_area by struct watch_area.
	(watch_area_cnt, watch_lo_addr, watch_hi_addr): Remove.
	(s390_stopped_by_watchpoint): Remove pid argument,
	use s390_inferior_tid.  Add short-cut for the no watchpoint case.
	(s390_fix_watch_points): Remove pid argument,
	use s390_inferior_tid.  Recompute area spanned by watchpoints.
	(s390_insert_watchpoint, s390_remove_watchpoint): Remove pid
	argument.  Reimplement.

	* config/s390/nm-linux.h: Update comments.  Do not include "solib.h".
	(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
	(FETCH_INFERIOR_REGISTERS): Define.
	* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
	core-regset.o.
	* config/s390/s390x.mt: Remove.
	* config/s390/tm-s390.h: Remove.
	* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
	(TARGET_ELF64): Remove.
	(SKIP_TRAMPOLINE_CODE): Do not undefine.
	* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
	s390*-*-* case; always set gdb_target to s390.
	* regformats/reg-s390.dat: Remove control registers.
	* regformats/reg-s390x.dat: Likewise.
	* s390-tdep.h: New file.
	* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
	Include "inferior.h" and "s390-tdep.h".
	Remove private definition of offsetof.
	(s390_register_u_addr): Remove.
	(regmap_gregset, regmap_fpregset): Define.
	(supply_gregset, fill_gregset): Reimplement.
	(supply_fpregset, fill_fpregset): Likewise.
	(s390_inferior_tid): New function.
	(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
	(fetch_inferior_registers, store_inferior_registers): Likewise.
	* s390-tdep.c: Do not define S390_TDEP.  Include "defs.h" instead
	of <defs.h>.  Include "reggroups.h", "regset.h", and "s390-tdep.h".
	Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
	Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
	(struct gdbarch_tdep): Define.
	(struct s390_register_info): Define.
	(s390_register_info): New variable.
	(s390_register_name): Reimplement.
	(s390_register_type): New function.
	(s390_register_raw_size, s390x_register_raw_size): Remove.
	(s390_cannot_fetch_register): Remove.
	(s390_register_byte): Remove.
	(s390_register_virtual_type, s390x_register_virtual_type): Remove.
	(s390_dwarf_regmap): New variable.
	(s390_dwarf_reg_to_regnum): New function.
	(s390_stab_reg_to_regnum): Remove.
	(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
	(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
	(s390_convert_register_p): Likewise.
	(s390_register_to_value, s390_value_to_register): Likewise.
	(s390_register_reggroup_p): Likewise.
	(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
	s390_gregset, s390x_gregset, s390_fpregset): New variables.
	(s390_supply_regset, s390_regset_from_core_section): New functions.
	(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
	(S390_FPR_SIZE): Likewise.
	(S390_GPR_SIZE): Likewise.  Redefine in terms of GDB_TARGET_IS_ESAME.
	Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
	(S390_NUM_GPRS): Move here from tm-s390.h.
	(S390_NUM_FPRS): Likewise.
	(s390_in_function_epilogue_p): New function.
	(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
	Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
	(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
	Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
	Replace S390_FP_REGNUM by S390_SP_REGNUM.
	Remove calls to:
	set_gdbarch_deprecated_max_register_raw_size,
	set_gdbarch_deprecated_max_register_virtual_size,
	set_gdbarch_deprecated_register_byte,
	set_gdbarch_cannot_fetch_register,
	set_gdbarch_cannot_store_register,
	set_gdbarch_deprecated_register_size,
	set_gdbarch_deprecated_register_raw_size,
	set_gdbarch_deprecated_register_virtual_size,
	set_gdbarch_deprecated_register_virtual_type,
	set_gdbarch_deprecated_register_bytes.
	Add calls to:
	set_gdbarch_num_pseudo_regs,
	set_gdbarch_register_type,
	set_gdbarch_convert_register_p,
	set_gdbarch_register_to_value,
	set_gdbarch_value_to_register,
	set_gdbarch_register_reggroup_p,
	set_gdbarch_regset_from_core_section,
	set_gdbarch_pseudo_register_read,
	set_gdbarch_pseudo_register_write,
	set_gdbarch_in_function_epilogue_p.
	* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
	(s390_tdep_h): New variable.

2004-02-17  Jim Blandy  <jimb@redhat.com>

	* findvar.c (value_from_register): If the type has no length, just
	return an acceptable value --- don't report an internal error.

	* stabsread.c (read_type): If we find any type numbers that are
	forward references, complain if the references aren't resolved by
	the time we're finished reading.
	(cleanup_undefined_types): Make error message more appropriate for
	a complaint.

2004-02-17  Elena Zannoni  <ezannoni@redhat.com>

	* Makefile.in (defs_h): Remove dependency on progress_h.
	* defs.h (QUIT): Remove use of PROGRESS macro. Remove include of
	progress.h.
	* main.c (captured_main): Delete use of START_PROGRESS and
	END_PROGRESS.

2004-02-17  Elena Zannoni  <ezannoni@redhat.com>

	* objfiles.c (terminate_minimal_symbol_table): Add back
	initialization of MSYMBOL_TYPE.

2004-02-17  David Mosberger  <davidm@hpl.hp.com>

	Committed by Andrew Cagney.
	* Makefile.in (ia64_tdep_h): New macro.
	(ia64-linux-tdep.o): Mention $(ia64_tdep_h).
	(ia64-tdep.o): Likewise.
	* ia64-tdep.h: New file.
	* ia64-tdep.c: Update copyright notice.  Include "ia64-tdep.h".
	(ia64_linux_sigcontext_register_address): Move decl to ia64-tdep.h.
	(ia64_aix_sigcontext_register_address): Likewise.
	(ia64_linux_getunwind_table): Delete declaration.
	* ia64-linux-tdep.c: Likewise.

2004-02-17  Corinna Vinschen  <vinschen@redhat.com>

	* sh-tdep.c (sh_dsp_register_sim_regno): Use DSP_Rx_BANK_REGNUM.
	* sh-tdep.h: Rename R0_BANK_REGNUM and R7_BANK_REGNUM to
	DSP_R0_BANK_REGNUM and DSP_R7_BANK_REGNUM.

2004-02-17  Andrew Cagney  <cagney@redhat.com>

	* symtab.c (skip_prologue_using_sal): New function.
	* symtab.h (skip_prologue_using_sal): Declare.
	* frv-tdep.c: Include "symtab.h".
	(skip_prologue_using_sal): Delete function.
	* mips-tdep.c (skip_prologue_using_sal): Delete function.
	* rs6000-tdep.c (refine_prologue_limit): Mention
	skip_prologue_using_sal.
	* ia64-tdep.c (refine_prologue_limit): Ditto.
	* Makefile.in: Update dependencies.

2004-02-16  Andrew Cagney  <cagney@redhat.com>

	* config/alpha/tm-nbsd.h: Update copyright, delete #undef
	START_INFERIOR_TRAPS_EXPECTED.
	* config/alpha/tm-fbsd.h: Update copyright, delete #undef
	START_INFERIOR_TRAPS_EXPECTED.
	* config/alpha/tm-alphalinux.h (START_INFERIOR_TRAPS_EXPECTED):
	Delete macro.
	* config/alpha/tm-alpha.h (START_INFERIOR_TRAPS_EXPECTED): Delete
	macro, moved to "nm-osf.h".  Update copyright.
	* config/alpha/nm-osf.h (START_INFERIOR_TRAPS_EXPECTED): Define,
	update copyright.

	* gdbarch.sh (DEPRECATED_FRAMELESS_FUNCTION_INVOCATION): Predicate
	and function replacing FRAMELESS_FUNCTION_INVOCATION.
	* blockframe.c (legacy_frameless_look_for_prologue): Rename
	frameless_look_for_prologue.
	* frame.h (legacy_frameless_look_for_prologue): Rename
	frameless_look_for_prologue.
	* gdbarch.h, gdbarch.c: Re-generate.
	* sh64-tdep.c (sh64_gdbarch_init): Update.
	* sh-tdep.c (sh_gdbarch_init): Update.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* rs6000-tdep.c (rs6000_gdbarch_init): Update.
	* ppc-linux-tdep.c (ppc_linux_init_abi): Update.
	* m68k-tdep.c (m68k_gdbarch_init): Update.
	(delta68_frame_args_address): Update.
	* m32r-tdep.c (m32r_gdbarch_init): Update.
	* hppa-tdep.c (hppa_gdbarch_init): Update.
	* h8300-tdep.c (h8300_gdbarch_init): Update.
	* frv-tdep.c (frv_gdbarch_init): Update.
	(frv_frameless_function_invocation): Update.
	* cris-tdep.c (cris_gdbarch_init): Update.
	(cris_frameless_function_invocation): Update.
	* avr-tdep.c (avr_gdbarch_init): Update.
	* arm-tdep.c (arm_gdbarch_init): Update.
	* stack.c (frame_info): Update, call predicate.
	* rs6000-tdep.c (rs6000_frame_chain): Update, call predicate..
	* frame.c (legacy_get_prev_frame): Update, call predicate..
	* arch-utils.c (generic_frameless_function_invocation_not): Delete.
	* arch-utils.h (generic_frameless_function_invocation_not): Delete.
	* alpha-tdep.c (alpha_gdbarch_init): Do not set frameless function
	invocation.
	* d10v-tdep.c (d10v_gdbarch_init): Ditto.
	* ns32k-tdep.c (ns32k_gdbarch_init): Ditto.
	* vax-tdep.c (vax_gdbarch_init): Ditto.

	* arm-tdep.c (arm_set_call_dummy_breakpoint_offset): Delete unused
	function.

2004-02-16  Daniel Jacobowitz  <drow@mvista.com>

	* objfiles.c (terminate_minimal_symbol_table): Remove unnecessary
	initializations.

2004-02-16  Andrew Cagney  <cagney@redhat.com>

	* tui/tui-windata.c: Include "gdb_string.h".
	* tui/tui-source.c, tui/tui-winsource.c: Ditto.
	* tui/tui-layout.c, tui/tui-command.c: Ditto.
	* Makefile.in: Update dependencies.

2004-02-16  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (infrun.o): Add $(gdb_assert_h).
	* infrun.c: Include "gdb_assert.h".
	(singlestep_ptid, saved_singlestep_ptid)
	(stepping_past_singlestep_breakpoint): New variables.
	(resume): Set singlestep_ptid.  Check for singlestep thread
	hop.
	(init_wait_for_inferior): Clear stepping_past_singlestep_breakpoint.
	(handle_inferior_event): Handle singlestep thread hop.

2004-02-16  Andrew Cagney  <cagney@redhat.com>

	* dwarf2-frame.c (dwarf2_frame_ops): New function.
	(dwarf2_frame_set_init_reg): Use, instead of gdbarch_data.
	(dwarf2_frame_init_reg): Ditto.

	* printcmd.c (display_command): Check that EXP isn't NULL.  Fix
	suggested by Joshua Neuheisel

	* configure.in: Always check for curses, including pdcurses.
	Warn, instead of error, when no curses are found.  Enable TUI when
	curses is available.
	* configure: Re-generate.

2004-02-16  Corinna Vinschen  <vinschen@redhat.com>

	* sh-tdep.c (sh_register_convert_to_virtual): Rename from
	sh_sh4_register_convert_to_virtual.
	(sh_register_convert_to_raw): Rename from
	sh_sh4_register_convert_to_raw.
	(sh_pseudo_register_read): Accomodate above name change.
	(sh_pseudo_register_write): Ditto.

2004-02-16  Corinna Vinschen  <vinschen@redhat.com>

	* sh-tdep.c (sh_generic_register_name): Remove.
	(sh_gdbarch_init): Use sh_sh_register_name in default case.

2004-02-15  Andrew Cagney  <cagney@redhat.com>

	* configure.in (build_warnings): Add -Wunused-function.
	* configure: Re-generate.

	* config/tm-lynx.h (START_INFERIOR_TRAPS_EXPECTED): Delete macro.
	* config/rs6000/tm-rs6000.h (START_INFERIOR_TRAPS_EXPECTED): Ditto.

	* procfs.c (procfs_init_inferior): Assume that
	START_INFERIOR_TRAPS_EXPECTED is defined.
	* config/ns32k/nbsdaout.mt (TM_FILE): Set to tm-ns32k.h.
	* config/ns32k/tm-nbsd.h: Delete file,
	START_INFERIOR_TRAPS_EXPECTED already defined as 2.

	* config/vax/tm-vaxbsd.h: Do not include "tm-vax.h".
	* config/vax/tm-vax.h: Delete file.

	* config/mips/tm-nbsd.h (SIGCONTEXT_PC_OFFSET): Delete macro.
	* config/i386/tm-i386bsd.h (SIGCONTEXT_PC_OFFSET): Delete macro.
	* config/arm/tm-linux.h (SIGCONTEXT_PC_OFFSET): Delete macro.
	* config/vax/tm-vaxbsd.h (SIGCONTEXT_PC_OFFSET): Delete macro.
	* vax-tdep.c (vax_sigtramp_saved_pc): Inline only reference.
	* config/ns32k/tm-nbsd.h (SIGCONTEXT_PC_OFFSET): Delete macro.
	* ns32k-tdep.c (ns32k_sigtramp_saved_pc): Inline only reference.

2004-02-15  Mark Kettenis  <kettenis@gnu.org>

	* dwarf2-frame.h (dwarf2_frame_set_init_reg): New prototype.
	* dwarf2-frame.c (dwarf2_frame_data): New variable.
	(struct dwarf2_frame_ops): New.
	(dwarf2_frame_default_init_reg): New function, based on
	dwarf2_frame_init_reg.
	(dwarf2_frame_init, dwarf2_frame_set_init_reg): New function.
	(dwarf2_frame_init_reg): Call architecture-specific function.
	(dwarf2_frame_objfile_data): Renamed from dwarf2_frame_data.
	(dwarf2_frame_find_fde, add_fde): Use dwarf2_frame_objfile_data
	instead of dwarf2_frame_data.
	(_initialize_dwarf2_frame): Initailize new dwarf2_frame_data.
	Initialize dwarf2_frame_objfile instead of old dwarf2_frame_data.

2004-02-15  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (deprecated_register_gdbarch_swap): Rename
	register_gdbarch_swap.
	(DEPRECATED_REGISTER_GDBARCH_SWAP): Rename REGISTER_GDBARCH_SWAP.
	* f-lang.c (_initialize_f_language): Update, use
	DEPRECATED_REGISTER_GDBARCH_SWAP.
	* remote.c (_initialize_remote): Ditto.
	* regcache.c (_initialize_regcache): Ditto.
	* parse.c (_initialize_parse): Ditto.
	* infrun.c (_initialize_infrun): Ditto.
	* mi/mi-main.c (_initialize_mi_main): Ditto.
	* gdbtypes.c (_initialize_gdbtypes): Ditto.

	* solib.c (solib_map_sections): Use bfd_set_cacheable instead of
	poking .cacheable directly.
	* symfile.c (symfile_bfd_open): Ditto.

	* Makefile.in: Update all dependencies.

	* Makefile.in: (.SUFFIXES): Add ".l" and ".y".
	(.y.c, .l.c): Specify implicit rule.  Instead of .tab.c, generate
	.c.  Update references.  Delete unnecessary .tab.c and -lex.c rules.
	(ada-exp.o, c-exp.o, f-exp.o): Replace ada-exp.tab.o et.al. rule.
	(jv-exp.o, m2-exp.o, objc-exp.o, p-exp.o): Similar.

2004-02-14  Andrew Cagney  <cagney@redhat.com>

	* arch-utils.c (legacy_convert_register_p): Check
	DEPRECATED_REGISTER_CONVERTIBLE_P.
	* findvar.c (value_of_register): Ditto.

	* gdbarch.sh (DEPRECATED_REGISTER_CONVERTIBLE): Add predicate.
	* gdbarch.h, gdbarch.c: Re-generate.
	* arch-utils.c (deprecated_register_convertible_not): Delete.
	* arch-utils.h (deprecated_register_convertible_not): Delete.
	* mi/mi-main.c (get_register): Update.  Update copyright.
	* infcmd.c (default_print_registers_info): Update.

	* gdbarch.sh (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED): Delete.
	(DEPRECATED_CALL_DUMMY_STACK_ADJUST): Delete.
	(DEPRECATED_CALL_DUMMY_ADDRESS): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* frame.c (deprecated_get_next_frame_hack): Delete function.
	* frame.h (deprecated_get_next_frame_hack): Delete declaration.
	* blockframe.c (deprecated_pc_in_call_dummy_at_entry_point):
	Update.
	* infcall.c (call_function_by_hand): Update.

2004-02-14  Elena Zannoni  <ezannoni@redhat.com>

	* symfile.c (init_entry_point_info, entry_point_address): Move
	from here...
	* objfiles.c (init_entry_point_info, entry_point_address):..to
	here.
	* symfile.h (init_entry_point_info, entry_point_address): Remove
	prototypes.
	* objfiles.h (init_entry_point_info, entry_point_address):Add
	prototypes.
	* cris-tdep.c: Remove include of symfile.h. Add include of
	objfiles.h.
	* infcall.c: Ditto.
	* mcore-tdep.c: Ditto.
	* mn10300-tdep.c: Ditto.
	* sh64-tdep.c: Ditto.
 	* v850-tdep.c: Ditto.
	* arm-tdep.c: Remove include of symfile.h.
	* blockframe.c: Ditto.
	* coffread.c: Ditto.
	* dbxread.c: Ditto.
	* dwarf2read.c: Ditto.
	* dwarfread.c: Ditto.
	* frv-tdep.c: Ditto.
	* ia64-tdep.c: Ditto.
	* mdebugread.c: Ditto.
	* mipsread.c: Ditto.
	* rs6000-tdep.c: Ditto.
	* s390-tdep.c: Ditto.
	* sh-tdep.c: Ditto.
	* xstormy16-tdep.c: Ditto.
	* gdbarch.sh: Remove include of symfile.h.
	* gdbarch.c: Regenerate.
	* solib-irix.c (enable_break): Use entry_point_address().
	Add comment about include file.
	* xcoffread.c: Add comment about include file.
	* Makefile.in (arm-tdep.o, blockframe.o, coffread.o, cris-tdep.o)
	(dbxread.o, dwarf2read.o, dwarfread.o, frv-tdep.o, gdbarch.o)
	(ia64-tdep.o, infcall.o, mcore-tdep.o, mdebugread.o, mipsread.o)
	(mn10300-tdep.o, rs6000-nat.o, s390-tdep.o, sh64-tdep.o)
	(sh-tdep.o, v850-tdep.o, xstormy16-tdep.o): Update dependencies.

2004-02-13  Andrew Cagney  <cagney@redhat.com>

	* corelow.c (core_xfer_partial): Use "struct bfd_section".
	* config/sparc/nm-nbsd.h (struct target_ops): Declare, update
	copyright.
	* mips-linux-tdep.c: Use "GNU/Linux", update copyright.

2004-02-12  Fred Fish  <fnf@redhat.com>

	* m68hc11-tdep.c (m68hc11_gdbarch_init): Remove duplicate call to
	 set_gdbarch_store_return_value.

2004-02-12  Andrew Cagney  <cagney@redhat.com>

	* remote-rdi.c (arm_rdi_start_remote): Delete unused function.
	(arm_rdi_interrupt, arm_rdi_interrupt_twice): Ditto.
	(interrupt_query): Ditto.
	(ofunc): Delete unused variable.
	* cris-tdep.c (cris_abi): Delete unused function.
	(reg_pop_op, move_reg_to_mem_index_inc_op): Ditto.
	(cris_get_wide_opcode, cris_get_short_size): Ditto.
	(cris_get_asr_quick_shift_steps): Ditto.
	(cris_skip_prologue_frameless_p): Ditto.
	* arm-tdep.c (arm_push_return_address): Delete unused function.
	(arm_push_dummy_frame, arm_fix_call_dummy): Ditto.
	* rs6000-tdep.c (rs6000_pc_in_call_dummy): Delete unused function.
	* s390-tdep.c (s390_function_start): Delete unused function.

2004-02-12  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (PROLOGUE_FRAMELESS_P): Delete.
	gdbarch.h, gdbarch.c: Re-generate.
	* cris-tdep.c (cris_gdbarch_init): Do not set prologue_frameless_p
	to generic_prologue_frameless_p.
	* arch-utils.h (generic_prologue_frameless_p): Delete declaration.
	* arch-utils.c (generic_prologue_frameless_p): Delete function.

2004-02-11  Daniel Jacobowitz  <drow@mvista.com>

	* mips-linux-tdep.c: Include "frame.h".
	(mips_linux_in_dynsym_stub, mips_linux_in_dynsym_resolve_code)
	(mips_linux_skip_resolver): New functions.
	(mips_linux_init_abi): Call set_gdbarch_skip_solib_resolver
	and set_gdbarch_in_solib_call_trampoline.
	* mips-tdep.c (mips_gdbarch_init): Move gdbarch_init_osabi call
	to after set_gdbarch_in_solib_return_trampoline.  Only set the
	solib hooks to mips16 functions if the OS ABI is unknown.
	* config/mips/tm-linux.h (IN_SOLIB_CALL_TRAMPOLINE): Undefine after
	including "config/tm-linux.h".
	(IN_SOLIB_DYNSYM_RESOLVE_CODE): Define.
	* Makefile.in (mips-linux-tdep.o): Update.

2004-02-11  David Carlton  <carlton@kealia.com>

	* linespec.c (decode_compound): Only look for a class symbol when
	considering all but the rightmost component.

2004-02-11  Andrew Cagney  <cagney@redhat.com>

	* hppa-tdep.c (hppa_gdbarch_init): Re-order so that the frame and
	abi code are are separatly grouped.

2004-02-11  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (FRAME_ARGS_SKIP): Default to 0.
	* gdbarch.h, gdbarch.c: Re-generate.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
	* v850-tdep.c (v850_gdbarch_init): Update.
	* sh64-tdep.c (sh64_gdbarch_init): Update.
	* sh-tdep.c (sh_gdbarch_init): Update.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* mn10300-tdep.c (mn10300_gdbarch_init): Update.
	* mips-tdep.c (mips_gdbarch_init): Update.
	* mcore-tdep.c (mcore_gdbarch_init): Update.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
	* m32r-tdep.c (m32r_gdbarch_init): Update.
	* ia64-tdep.c (ia64_gdbarch_init): Update.
	* hppa-tdep.c (hppa_gdbarch_init): Update.
	* h8300-tdep.c (h8300_gdbarch_init): Update.
	* frv-tdep.c (frv_gdbarch_init): Update.
	* d10v-tdep.c (d10v_gdbarch_init): Update.
	* cris-tdep.c (cris_gdbarch_init): Update.
	* avr-tdep.c (avr_gdbarch_init): Update.
	* arm-tdep.c (arm_gdbarch_init): Update.
	* alpha-tdep.c (alpha_gdbarch_init): Update.

2004-02-11  Corinna Vinschen  <vinschen@redhat.com>

	* sh-tdep.c (sh_sh3_dsp_register_name): Fix formatting. Add missing
	comma.
	(sh_sh4al_dsp_register_name): Ditto.

2004-02-10  Andrew Cagney  <cagney@redhat.com>

	* mips-tdep.c (mips_gdbarch_init): Delete deprecated frame code.
	(mips_init_frame_pc_first): Delete function.
	(mips_frame_saved_pc): Delete function.
	(mips_frame_chain): Delete function.
	(mips_init_extra_frame_info): Delete function.
	(mips_xfer_register): Delete unused variable "reg".
	(mips_n32n64_push_dummy_call): Delete unused variable "valbuf".
	(mips_n32n64_return_value): Delete unused variable "reg".
	(mips_n32n64_return_value): Delete unused variable "pos".
	(mips_o32_push_dummy_call): Delete unused variable "valbuf".
	(mips_o32_return_value): Delete unused variable "pos".
	(mips_o64_push_dummy_call): Delete unused variable "valbuf".
	(mips_print_fp_register): Delete unused variable "namelen"
	(mips_print_fp_register): Delete unused variable "flt2"
	(get_frame_pointer): Delete function.
	(cached_proc_desc): Delete static variable.
	(mips_pop_frame): Delete function.
	(mips_find_saved_regs): Delete function.
	(mips_get_saved_register): Delete function.
	(mips_saved_pc_after_call): Delete function.
	(SIGFRAME_BASE): Delete macro.
	(SIGFRAME_FPREGSAVE_OFF): Delete macro.
	(SIGFRAME_PC_OFF): Delete macro.
	(SIGFRAME_REGSAVE_OFF): Delete macro.
	(mips_dump_tdep): Do not print deleted macro definitions.

2004-02-10  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (SFILES): Remove explictly listed tui files.
	(SUBDIR_GDBTK_SRCS): Fix path to gdbtk-interp.c.

2004-02-10  Jeff Johnston  <jjohnstn@redhat.com>

	* ia64-tdep.c (ia64_frame_this_id): Fix tracing print statement
	to use paddr functions to format ia64 addresses and long values.
	(ia64_frame_prev_register, ia64_sigtramp_frame_this_id): Ditto.
	(ia64_sigtramp_frame_prev_register, ia64_access_reg): Ditto.
	(get_kernel_table, ia64_find_proc_info_x): Ditto.
	(ia64_get_dyn_info_list, ia64_libunwind_this_frame_id): Ditto.
	(ia64_libunwind_frame_prev_register, ia64_unwind_dummy_id): Ditto.

2004-02-10  Andrew Cagney  <cagney@redhat.com>

	* defs.h: Do not include "tui.h".
	* gdb_curses.h: New file.
	* tui/tui-hooks.h: New file.
	* tui/tui.h (tui_update_all_exec_infos): Delete declaration.
	(tui_install_hooks, tui_remove_hooks): Delete declarations.
	(tui_initialize_io): Delete declaration.
	(tui_initialize_readline: Delete redundant declaration.
	(struct tui_point): Delete definition.
	* tui/tui-data.h (struct tui_point): Define.
	* cli/cli-decode.c [TUI]: Include "tui/tui.h".
	* utils.c: Include "tui/tui.h".
	* tui/tui-data.h: Include "tui/tui.h" and "gdb_curses.h".
	* printcmd.c [TUI]: Include "tui/tui.h".
	* cli/cli-cmds.c [TUI]: Include "tui/tui.h".
	* tui/tui-command.c: Include "gdb_curses.h".
	* tui/tui.c, tui/tui-winsource.c, tui/tui-wingeneral.c: Ditto.
	* tui/tui-windata.c, tui/tui-win.c, tui/tui-stack.c: Ditto.
	* tui/tui-source.c, tui/tui-regs.c, tui/tui-layout.c: Ditto.
	* tui/tui-io.c, tui/tui-disasm.c, tui/tui-data.c: : Ditto.
	* tui/tui-hooks.c: Include "tui-hooks.h" and "gdb_curses.h".
	* Makefile.in: Update all dependencies.
	(tui_hooks_h, gdb_curses_h): Define.
	(SUBDIR_TUI_CFLAGS): Remove -I${srcdir}/tui.

2004-02-10  Elena Zannoni  <ezannoni@redhat.com>

	* objfiles.h (struct objfile): Remove unused fields auxf1 and
	auxf2. Add comments about some other rarely used fields.

2004-02-10  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (init.c): Fix script removing duplicates. Problem
	reported by Peter Schauer.

2004-02-09  Elena Zannoni  <ezannoni@redhat.com>

	* bcache.c (bcache_xmalloc): Use obstack_init instead of
	obstack_specify_allocation.
	* objfiles.c (allocate_objfile): Ditto.
	* solib-sunos.c (solib_add_common_symbols)
	(allocate_rt_common_objfile): Ditto.
	* symfile.c (reread_symbols): Ditto.
	* gdb_obstack.h: Add comment.

2004-02-09  Elena Zannoni  <ezannoni@redhat.com>

	* linespec.c (decode_line_1, locate_first_half)
	(decode_compound, lookup_prefix_sym): Update comments. Delete old
	commented out code.

2004-02-09  Daniel Jacobowitz  <drow@mvista.com>

	* cp-namespace.c (check_one_possible_namespace_symbol): Don't use
	obstack_free.

2004-02-09  Andrew Cagney  <cagney@redhat.com>

	* blockframe.c (find_pc_partial_function): If find_pc_overlay
	fails, try find_pc_section.  Fix PR c++/1267.
	* minsyms.c (lookup_minimal_symbol_by_pc): Use find_pc_section
	instead of find_pc_mapped_section.
	(lookup_minimal_symbol_by_pc_section): If the SECTION is NULL, do
	not default to the section containing PC.  Fix PR symtab/1519.

2004-02-09  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (mips-tdep.o): Update dependencies.
	* mips-tdep.c: Include "frame-unwind.h", "frame-base.h" and
	"trad-frame.h".
	(mips_unwind_pc): Return the pseudo PC register.
	(mips_unwind_dummy_id): New function.
	(mips16_fetch_instruction): New function.
	(mips32_fetch_instruction): New function.
	(struct mips_frame_cache): Define.
	(mips_mdebug_frame_cache): New function.
	(mips_mdebug_frame_this_id): New function.
	(mips_mdebug_frame_prev_register): New function.
	(mips_mdebug_frame_unwind): Define.
	(mips_mdebug_frame_sniffer): New function.
	(mips_mdebug_frame_base_address): New function.
	(mips_mdebug_frame_base): Define.
	(mips_mdebug_frame_base_sniffer): New function.
	(mips_gdbarch_init): Append unwind and base sniffers.  Set
	unwind_dummy_id.

2004-02-08  Andrew Cagney  <cagney@redhat.com>

	* frame.c: Print both the register number and name.

	* Makefile.in (init.c): Eliminate duplicates.  Combine two greps
	and a sed into a single sed.  Make .c and .o patterns more robust.
	(OBS): Delete.
	(INIT_FILES): Replace OBS with COMMON_OBS.
	(COMMON_OBS): Move DEPFILES and YYOBJ to start of definition.

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

	* sparc-nat.c (sparc_xfer_wcookie): Try to fetch the cookie using
	the PT_WCOOKIE request.

2004-02-08  Andrew Cagney  <cagney@redhat.com>

	* mips-tdep.c (mips_unwind_pc): New function.
	(mips_gdbarch_init): Set mips_unwind_pc.

	* frame.c (legacy_saved_regs_this_id): Return a null frame ID.
	(get_frame_id): Allow the UNKNOWN_FRAME.
	(frame_register_unwind, get_frame_type): Ditto.

	* frame.c (legacy_frame_p): Check for DEPRECATED_TARGET_READ_FP_P
	and DEPRECATED_FP_REGNUM.  Don't assume that the lack of
	unwind_dummy_id indicates a legacy frame.

	* configure.in (CONFIG_LIB_OBS): Replace with CONFIG_OBS.
	* configure: Re-generate.

	* mips-tdep.c (mips_gdbarch_init): Group deprecated frame unwind
	methods.

2004-02-08  Andrew Cagney  <cagney@redhat.com>

	* configure.in (CONFIG_ALL): Set to Makefile target, and not
	makefile macro.
	* configure: Re-generate.
	(CONFIG_CLEAN, CONFIG_INSTALL, CONFIG_UNINSTALL): Ditto.
	* Makefile.in (SUBDIR_CLI_CLEAN): Delete.
	(SUBDIR_CLI_INSTALL, SUBDIR_CLI_UNINSTALL): Delete.
	(SUBDIR_CLI_ALL, SUBDIR_GDBTK_ALL): Delete.
	(SUBDIR_GDBTK_CLEAN, SUBDIR_GDBTK_INSTALL): Delete.
	(SUBDIR_GDBTK_UNINSTALL, SUBDIR_MI_ALL): Delete.
	(SUBDIR_MI_CLEAN, SUBDIR_MI_INSTALL): Delete.
	(SUBDIR_MI_UNINSTALL, SUBDIR_TUI_ALL): Delete.
	(SUBDIR_TUI_CLEAN, SUBDIR_TUI_INSTALL): Delete.
	(SUBDIR_TUI_UNINSTALL, SUBDIR_CLI_CLEAN): Delete.

2004-02-07  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in: Update all dependencies.

	* configure.in (CONFIG_INITS, CONFIG_LIB_OBS): Delete.
	* configure: Re-generate.
	* Makefile.in (INIT_FILES): Replace CONFIG_INITS with CONFIG_SRCS.
	(CONFIG_LIB_OBS, CONFIG_INITS): Delete.
	(COMMON_OBS): Add "main.o" and "annotate.o".
	(ANNOTATE_OBS): Delete.
	(OBS): Remove ANNOTATE_OBS.
	(DEPFILES): Replace CONFIG_LIB_OBS with CONFIG_LIB_OBS, remove
	CONFIG_INITS.
	(gdb$(EXEEXT), insight$(EXEEXT)): Do not depend on, or link
	against CONFIG_OBS and "main.o".
	(SUBDIR_CLI_INITS, SUBDIR_MI_INITS): Delete.
	(SUBDIR_TUI_INITS, SUBDIR_GDBTK_INITS): Delete.

	* tui/tui-command.c: Include "gdb_string.h", delete register
	attribute, use ISO-C function signatures.
	* tui/tui-disasm.c, tui/tui-file.c, tui/tui-io.c: Ditto.
	* tui/tui-layout.c, tui/tui-regs.c, tui/tui-source.c: Ditto.
	* tui/tui-stack.c, tui/tui-win.c, tui/tui-winsource.c: Ditto.
	* tui/tui.c: Ditto.

	* tui/tui-command.c: Change variable and function names to lower
	case.
	* tui/tui-data.c, tui/tui-disasm.c: Ditto.
	* tui/tui-hooks.c, tui/tui-io.c, tui/tui-layout.c: Ditto.
	* tui/tui-regs.c, tui/tui-source.c, tui/tui-stack.c: Ditto.
	* tui/tui-win.c, tui/tui-windata.c, tui/tui-wingeneral.c: Ditto.
	* tui/tui-winsource.c, tui/tui.c: Ditto.

2004-02-07  Elena Zannoni  <ezannoni@redhat.com>

	* buildsym.c (free_pending_blocks, finish_block)
	(record_pending_block, make_blockvector, end_symtab): Replace
	symbol_obstack with objfile_obstack.
	* coffread.c (process_coff_symbol, coff_read_struct_type)
	(coff_read_enum_type): Ditto.
	* cp-namespace.c (initialize_namespace_symtab)
	(check_one_possible_namespace_symbol): Ditto.
	* dwarf2read.c (new_symbol, dwarf2_const_value, macro_start_file)
	(dwarf2_symbol_mark_computed): Ditto.
	* dwarfread.c (enum_type, new_symbol, synthesize_typedef): Ditto.
	* elfread.c (elf_symtab_read): Ditto.
	* hpread.c (hpread_symfile_init, hpread_symfile_init)
	(hpread_read_enum_type, hpread_read_function_type)
	(hpread_read_doc_function_type, hpread_process_one_debug_symbol):
	Ditto.
	* jv-lang.c (get_java_class_symtab, add_class_symbol)
	(java_link_class_type): Ditto.
	* mdebugread.c (parse_symbol, psymtab_to_symtab_1, new_symtab)
	(new_symbol): Ditto.
	* minsyms.c (install_minimal_symbols): Ditto.
	* objfiles.c (allocate_objfile): Remove init of symbol_obstack.
	(terminate_minimal_symbol_table): Replace symbol_obstack with
	objfile_obstack.
	(free_objfile): Remove freeing of symbol_obstack.
	* objfiles.h: Remove symbol_obstack field.
	* pa64solib.c (add_to_solist): Replace symbol_obstack with
	objfile_obstack.
	* solib-sunos.c (allocate_rt_common_objfile): Remove init of
	symbol_obstack.
	(solib_add_common_symbols): Replace symbol_obstack with
	objfile_obstack.
	* somsolib.c (som_solib_add): Ditto.
	* stabsread.c (patch_block_stabs, define_symbol, read_enum_type)
	(common_block_start, common_block_end): Ditto.
	* symfile.c (reread_symbols): Remove freeing and init of
	symbol_obstack.
	(allocate_symtab): Rename symbol_obstack to objfile_obstack.
	* symfile.h: Update comment.
	* symmisc.c (print_objfile_statistics): Remove symbol_obstack
	stats printing.
	* symtab.c (symbol_set_names): Replace symbol_obstack with
	objfile_obstack.
	* symtab.h (struct general_symbol_info, struct minimal_symbol):
	Update comments.
	* xcoffread.c (read_xcoff_symtab, SYMBOL_DUP, SYMNAME_ALLOC)
	(init_stringtab, xcoff_initial_scan): Replace symbol_obstack with
	objfile_obstack.

2004-02-07  Andrew Cagney  <cagney@redhat.com>

	* tui/tui.h: Do not include <stdarg.h>, <string.h>, and
	"ansidecl.h".  Do not undef "reg" and "chtype".  Fix case of
	fields and variables.
	* tui/tui-wingeneral.h (m_beVisible): Delete macro.
	(m_beInvisible): Delete macro.
	* tui/tui-data.h: Fix case case fields and variables.
	(m_genWinPtrIsNull): Delete macro.
	(tui_win_list): Rename winList.
	(TUI_SRC_WIN): Rename srcWin.
	(TUI_DISASM_WIN): Rename disassemWin.
	(TUI_DATA_WIN): Rename dataWin.
	(TUI_CMD_WIN): Rename cmdWin.
	(m_genWinPtrNotNull): Delete macro.
	(m_winPtrIsNull): Delete macro.
	(m_winPtrNotNull): Delete macro.
	(tui_win_is_source_type): Replace m_winIsSourceType
	(tui_win_is_auxillary): Replace m_winIsAuzillary.
	(tui_win_has_locator): Replace m_hasLocator.
	(tui_set_win_highlight): Replace m_setWinHighlightOn and
	m_setWinHighlightOff.
	* tui/tui-data.c: Update references.
	(tui_win_is_source_type, tui_set_win_highlight): New functions.
	(tui_win_has_locator, tui_win_is_auxillary): New functions.
	* tui/tui-command.c, tui/tui-disasm.c: Update references.
	* tui/tui-io.c, tui/tui-layout.c, tui/tui-regs.c: Ditto.
	* tui/tui-regs.h, tui/tui-source.c, tui/tui-stack.c: Ditto.
	* tui/tui-win.c, tui/tui-windata.c, tui/tui-wingeneral.c: Ditto.
	* tui/tui-winsource.c, tui/tui.c: Ditto.

2004-02-07  Mark Kettenis  <kettenis@gnu.org>

	* sparc-tdep.h (sparc_fetch_wcookie): New prototype.
	* sparcnbsd-tdep.c (sparc32nbsd_sigcontext_saved_regs): Handle
	StackGhost.

	* sparc-tdep.c (sparc32_frame_prev_register): Rename local
	variable `i6' to `i7'.
	(sparc_supply_rwindow, sparc_collect_rwindow): Likewise.

2004-02-07  Andrew Cagney  <cagney@redhat.com>

	* tui/tui.h (Opaque, OpaquePtr OpaqueList): Delete definition.
	(TuiPoint, TuiPointPtr): Ditto.
	(TuiStatus, TuiStatusPtr): Ditto.
	(TuiWinType, TuiWinTypePtr): Ditto.
	(struct tui_point): Rename _TuiPoint.
	(tui_get_low_disassembly_address): Rename
	tuiGetLowDisassemblyAddress.
	(tui_update_all_exec_infos): Rename tuiUpdateAllExecInfos.
	(tuiFree): Delete declaration.
	(OpaqueFuncPtr, TuiOpaqueFuncPtr): Delete definitions.
	(TuiVoidFuncPtr, TuiIntFuncPtr): Delete definitions.
	* tui/tui.c (tuiFree): Delete function.
	* cli/cli-cmds.c (disassemble_command): Update references.
	* tui/tui-data.c, tui/tui-data.h, tui/tui-disasm.c: Ditto.
	* tui/tui-layout.c, tui/tui-regs.c, tui/tui-source.c: Ditto.
	* tui/tui-stack.c, tui/tui-win.c, tui/tui-wingeneral.c: Ditto.
	* tui/tui-winsource.c: Ditto.

2004-02-07  Elena Zannoni  <ezannoni@redhat.com>

	* dbxread.c (dbx_symfile_init, start_psymtab, end_psymtab,
	coffstab_build_psymtabs, elfstab_build_psymtabs)
	(stabsect_build_psymtabs): Replace psymbol_obstack with
	objfile_obstack.
	* dwarf2-frame.c (decode_frame_entry_1): Ditto.
	* dwarf2read.c (dwarf2_build_psymtabs_hard, dwarf2_read_section):
	Ditto.
	* dwarfread.c (scan_compilation_units): Ditto.
	* elfread.c (elfstab_offset_sections): Ditto.
	* hppa-tdep.c (read_unwind_info): Ditto.
	* hpread.c (hpread_build_psymtabs, hpread_start_psymtab)
	(hpread_end_psymtab): Ditto.
	* mdebugread.c (mdebug_build_psymtabs, add_pending)
	(parse_partial_symbols, new_psymtab, elfmdebug_build_psymtabs):
	Ditto.
	* mips-tdep.c (non_heuristic_proc_desc): Ditto.
	* objfiles.c (add_to_objfile_sections)
	(build_objfile_section_table): Ditto.
	(allocate_objfile): Remove init of psymbol_obstack.
	(free_objfile): Remove freeing of psymbol_obstack.
	* objfiles.h (struct objfile): Remove field
	psymbol_obstack. Update comments.
	* pa64solib.c (pa64_solib_add_solib_objfile): Replace
	psymbol_obstack with objfile_obstack.
	* solib-sunos.c (allocate_rt_common_objfile): Remove init of
        psymbol_obstack.
	* somread.c (som_symfile_offsets, init_import_symbols)
	(init_export_symbols): Replace psymbol_obstack with
	objfile_obstack.
	* somsolib.c (som_solib_add_solib_objfile): Ditto.
	* symfile.c (default_symfile_offsets, syms_from_objfile)
	(reread_symbols): Remove freeing and init of psymbol_obstack.
	(cashier_psymtab): Update comment.
	* symmisc.c (print_objfile_statistics): Don't report stats for
	psymbol obstack.
	* symtab.h (struct general_symbol_info, struct partial_symtab):
	Update comments.
	* xcoffread.c (xcoff_start_psymtab, xcoff_end_psymtab, swap_sym)
	(xcoff_symfile_offsets): Replace psymbol_obstack with
	objfile_obstack.

2004-02-07  Elena Zannoni  <ezannoni@redhat.com>

	* objfiles.h (struct objfile): Add objfile_obstack field.
	Remove type_obstack field.

	* dwarf2read.c (dwarf2_add_field,dwarf2_add_member_fn,
	read_structure_scope read_enumeration, new_symbol): Replace
	type_obstack with objfile_obstack.
	* dwarfread.c (struct_type, enum_type): Ditto.
	* gdbtypes.c (alloc_type, alloc_type_instance, init_type)
	(lookup_fundamental_type): Ditto.
	* gdbtypes.h (TYPE_ALLOC): Ditto.
	* hpread.c (hpread_read_enum_type, hpread_read_function_type)
	(hpread_read_doc_function_type, hpread_read_struct_type)
	(fix_static_member_physnames, hpread_read_array_type)
	(hpread_read_subrange_type, hpread_type_lookup): Ditto.
	* jv-lang.c (java_lookup_class, type_from_class, type_from_class)
	(java_link_class_type): Ditto.
	* mdebugread.c (parse_type): Ditto.
	* objfiles.c (allocate_objfile, free_objfile): Ditto.
	* solib-sunos.c (solib_add_common_symbols): Ditto.
	* stabsread.c (define_symbol, read_type, read_member_functions,
	read_cpp_abbrev, read_one_struct_field): Ditto.
	* symfile.c (reread_symbols): Ditto.
	* symmisc.c (print_objfile_statistics): Ditto.

2004-02-07  Andrew Cagney  <cagney@redhat.com>

	* tui/tui-data.h (tui_win_element): Rename TuiWinElement.
	(tui_exec_info_content): Rename TuiExecInfoContent.
	(TuiGenWinInfo, TuiGenWinInfoPtr): Delete definitions.
	(TuiWinInfo, TuiWinInfoPtr): Ditto.
	(TuiScrollDirection, TuiScrollDirectionPtr): Ditto.
	(TuiList, TuiListPtr): Ditto.
	(TuiLayoutType, TuiLayoutTypePtr): Ditto.
	(TuiDataType, TuiDataTypePtr): Ditto.
	(TuiRegisterDisplayType, TuiRegisterDisplayTypePtr): Ditto.
	(TuiLineOrAddress, TuiLineOrAddressPtr): Ditto.
	(TuiLayoutDef, TuiLayoutDefPtr): Ditto.
	(TuiSourceElement, TuiSourceElementPtr): Ditto.
	(TuiDataElement, TuiDataElementPtr): Ditto.
	(TuiWinElement, TuiWinElementPtr): Ditto.
	(TuiDataInfo, TuiDataInfoPtr): Ditto.
	(TuiCommandElement, TuiCommandElementPtr): Ditto.
	(TuiLocatorElement, TuiLocatorElementPtr): Ditto.
	(TuiWhichElement, TuiWhichElementPtr): Ditto.
	(TuiSourceInfo, TuiSourceInfoPtr): Ditto.
	(TuiCommandInfo, TuiCommandInfoPtr): Ditto.
	* tui/tui-command.c, tui/tui-data.c: Update references.
	* tui/tui-data.h, tui/tui-disasm.c, tui/tui-layout.c: Ditto.
	* tui/tui-regs.c, tui/tui-source.c, tui/tui-stack.c: Ditto.
	* tui/tui-win.c, tui/tui-windata.c, tui/tui-wingeneral.c: Ditto.
	* tui/tui-winsource.c, tui/tui.c: Ditto.

2004-02-07  Mark Kettenis  <kettenis@gnu.org>

	* dwarf2-frame.h: Update copyright.
	(enum dwarf2_frame_reg_rule): New.
	(struct dwarf2_frame_state_reg): New.
	(dwarf2_frame_sniffer, dwarf2_frame_base_sniffer): Make extern.
	* dwarf2-frame.c: Update copyright.
	(enum dwarf2_reg_rule): Remove.
	(struct dwarf2_frame_state): Remove defenition of `struct
	dwarf2_frame_state_reg'.
	(read_reg): Call get_frame_arch to get the architecture instead of
	using CURRENT_GDBARCH.
	(execute_cfa_program): Prefix old `enum dwarf2_reg_rule' tags with
	DWARF2_FRAME_.
	(dwarf2_frame_init_reg): New function.
	(dwarf2_frame_cache): Call get_frame_arch to get the architecture
	instead of using CURRENT_GDBARCH.  Call dwarf2_frame_init_reg to
	initialize the register state.  Prefix old `enum dwarf2_reg_rule'
	tags with DWARF2_FRAME_.
	(dwarf2_frame_prev_register): Call get_frame_arch to get the
	architecture instead of using CURRENT_GDBARCH.  Prefix old `enum
	dwarf2_reg_rule' tags with DWARF2_FRAME_.

2004-02-06  Andrew Cagney  <cagney@redhat.com>

	* tui/tui-data.h (struct tui_list): Rename _TuiList.
	(enum tui_data_type): Rename _TuiDataType.
	(struct tui_layout_def): Rename _TuiLayoutDef.
	(struct tui_source_element): Rename _TuiSourceElement.
	(struct tui_data_element): Rename _TuiDataElement.
	(struct tui_command_element): Rename _TuiCommandElement.
	(struct tui_locator_element): Rename _TuiLocatorElement.
	(union tui_which_element): Define.
	(struct tui_win_element): Rename _TuiWinElement.
	(struct tui_data_info): Rename _TuiDataInfo.
	(struct tui_source_info): Rename _TuiSourceInfo.
	(struct tui_command_info): Rename _TuiCommandInfo.
	(tui_initialize_static_data): Rename initializeStaticData.
	(tui_alloc_generic_win_info): Rename allocGenericWinInfo.
	(tui_alloc_win_info): Rename allocWinInfo.
	(tui_init_generic_part): Rename initGenericPart.
	(tui_init_win_info): Rename initWinInfo.
	(tui_alloc_content): Rename allocContent.
	(tui_add_content_elements): Rename addContentElements.
	(tui_init_content_element): Rename initContentElement.
	(tui_free_window): Rename freeWindow.
	(tui_free_win_content): Rename freeWinContent.
	(tui_free_data_content): Rename freeDataContent.
	(tui_free_all_source_wins_content): Rename
	freeAllSourceWinsContent.
	(tui_del_window): Rename tuiDelWindow.
	(tui_del_data_windows): Rename tuiDelDataWindows.
	(tui_partial_win_by_name): Rename partialWinByName.
	(tui_win_name): Rename winName.
	(tui_current_layout): Rename currentLayout.
	(tui_set_current_layout_to): Rename setCurrentLayoutTo.
	(tui_term_height): Rename termHeight.
	(tui_set_term_height_to): Rename setTermHeightTo.
	(tui_term_width): Rename termWidth.
	(tui_set_term_width_to): Rename setTermWidthTo.
	(tui_set_gen_win_origin): Rename setGenWinOrigin.
	(tui_locator_win_info_ptr): Rename locatorWinInfoPtr.
	(tui_source_exec_info_win_ptr): Rename tui_gen_win_info.
	(tui_disassem_exec_info_win_ptr): Rename disassemExecInfoWinPtr.
	(tui_source_windows): Rename sourceWindows.
	(tui_clear_source_windows): Rename clearSourceWindows.
	(tui_clear_source_windows_detail): Rename
	clearSourceWindowsDetail.
	(tui_clear_win_detail): Rename clearWinDetail.
	(tui_add_to_source_windows): Rename tuiAddToSourceWindows.
	(tui_default_tab_len): Rename tuiDefaultTabLen.
	(tui_set_default_tab_len): Rename tuiSetDefaultTabLen.
	(tui_win_with_focus): Rename tuiWinWithFocus.
	(tui_set_win_with_focus): Rename tuiSetWinWithFocus.
	(tui_layout_def): Rename tuiLayoutDef.
	(tui_win_resized): Rename tuiWinResized.
	(tui_set_win_resized_to): Rename tuiSetWinResizedTo.
	(tui_next_win): Rename tuiNextWin.
	(tui_prev_win): Rename tuiPrevWin.
	(tui_add_to_source_windows): Rename addToSourceWindows.
	* tui/tui-winsource.c, tui/tui-win.c: Update references.
	* tui/tui-layout.c, tui/tui-source.c: Ditto.
	* tui/tui-stack.c, tui/tui-io.c: Ditto.
	* tui/tui.c, tui/tui-data.c: Ditto.
	* tui/tui-interp.c, tui/tui-data.c: Ditto.
	* tui/tui-disasm.c, tui/tui-command.c: Ditto.

	* tui/tui-source.h: Update copyright.  Include "tui-data.h".
	(struct symtab): Declare.
	(tui_set_source_content): Rename tuiSetSourceContent.
	(tui_show_symtab_source): Rename tuiShowSource.
	(tui_source_is_displayed): Rename tuiSourceIsDisplayed.
	(tui_vertical_source_scroll): Rename tuiVerticalSourceScroll.
	* tui/tui-source.c: Update copyright.  Update references.
	* tui/tui-win.c, tui/tui-winsource.c: Update references.
	* tui/tui-stack.c: Update references.

	* tui/tui-win.h: Update copyright.  Include "tui-data.h".
	(struct tui_win_info): Declare.
	(tui_scroll_forward): Rename tuiScrollForward.
	(tui_scroll_backward): Rename tuiScrollBackward.
	(tui_scroll_left): Rename tuiScrollLeft.
	(tui_scroll_right): Rename tuiScrollRight.
	(tui_set_win_focus_to): Rename tuiSetWinFocusTo.
	(tui_resize_all): Rename tuiResizeAll.
	(tui_refresh_all_win): Rename tuiRefreshAll.
	(tui_sigwinch_handler): Rename tuiSigwinchHandler.
	* tui/tui-layout.c, * tui/tui-io.c: Update references.
	* tui/tui-wingeneral.h, * tui/tui.c: Update references.
	* tui/tui-disasm.c, * tui/tui-command.c: Update references.

	* tui/tui-windata.h: Update copyright.  Include "tui-data.h".
	(tui_erase_data_content): Rename tuiEraseDataContent.
	(tui_display_all_data): Rename tuiDisplayAllData.
	(tui_check_data_values): Rename tuiCheckDataValues.
	(tui_display_data_from_line): Rename tuiDisplayDataFromLine.
	(tui_first_data_item_displayed): Rename tuiFirstDataItemDisplayed.
	(tui_first_data_element_no_in_line): Rename
	tuiFirstDataElementNoInLine.
	(tui_delete_data_content_windows): Rename
	tuiDeleteDataContentWindows.
	(tui_refresh_data_win): Rename tuiRefreshDataWin.
	(tui_display_data_from): Rename tuiDisplayDataFrom.
	(tui_vertical_data_scroll): Rename tuiVerticalDataScroll.
	* tui/tui-windata.c, tui/tui-hooks.c: Update references.
	* tui/tui-win.c, tui/tui-regs.c: Update references.
	* tui/tui-layout.c, tui/tui.c: Update references.

	* tui/tui-wingeneral.h: Update copyright.
	(m_allBeVisible): Delete macro.
	(m_allBeInvisible): Delete macro.
	(struct tui_gen_win_info): Declare.
	(struct tui_win_info): Declare.
	(tui_unhighlight_win): Rename unhighlightWin.
	(tui_make_visible, tui_make_invisible): Replace makeVisible.
	(tui_make_all_visible, tui_make_all_invisible): Replace makeAllVisible.
	(tui_make_window): Rename makeWindow.
	(tui_copy_win): Rename copyWin.
	(tui_box_win): Rename boxWin.
	(tui_highlight_win): Rename highlightWin.
	(tui_check_and_display_highlight_if_needed): Rename
	checkAndDisplayHighlightIfNeeded.
	(tui_refresh_all): Rename refreshAll.
	(tui_delete_win): Rename tuiDelwin.
	(tui_refresh_win): Rename tuiRefreshWin.
	* tui/tui-wingeneral.c (make_visible): Rename makeVisible.
	(tui_make_visible, tui_make_invisible): New functions.
	(tui_make_all_visible, tui_make_all_invisible): New functions.
	(make_all_visible): Rename makeAllVisible.
	* tui/tui-winsource.c, tui/tui-windata.c: Update references.
	* tui/tui-data.c, tui/tui-winsource.c: Update references.
	* tui/tui-windata.c, tui/tui-win.c: Update references.
	* tui/tui-regs.c, tui/tui-layout.c: Update references.
	* tui/tui-data.h (struct tui_gen_win_info): Rename _TuiGenWinInfo.

2004-02-06  Mark Kettenis  <kettenis@gnu.org>

	* proc-api.c (write_with_trace): Initialize local variable to
	silence compiler warning.

2004-02-06  Andrew Cagney  <cagney@redhat.com>

	* tui/tui-source.h: Do not include "defs.h".
	(struct tui_win_info): Declare.
	(tui_set_source_content_nil): Declare.
	* tui/tui-data.h (struct tui_win_info): Rename _TuiWinInfo.
	(union tui_line_or_address): Rename _TuiLineOrAddress.
	* tui/tui-winsource.h: Update copyright.  Include "tui-data.h".
	(tui_update_source_window): Rename tuiUpdateSourceWindow.
	(tui_update_source_window_as_is): Rename
	tuiUpdateSourceWindowAsIs.
	(tui_update_source_windows_with_addr): Rename
	tuiUpdateSourceWindowsWithAddr.
	(tui_update_source_windows_with_line): Rename
	tuiUpdateSourceWindowsWithLine.
	(tui_clear_source_content): Rename tuiClearSourceContent.
	(tui_erase_source_content): Rename tuiEraseSourceContent.
	(tui_set_source_content_nil): Rename tuiSetSourceContentNil.
	(tui_show_source_content): Rename tuiShowSourceContent.
	(tui_horizontal_source_scroll): Rename tuiHorizontalSourceScroll.
	(tui_set_exec_info_content): Rename tuiSetExecInfoContent.
	(tui_show_exec_info_content): Rename tuiShowExecInfoContent.
	(tui_erase_exec_info_content): Rename tuiEraseExecInfoContent.
	(tui_clear_exec_info_content): Rename tuiClearExecInfoContent.
	(tui_update_exec_info): Rename tuiUpdateExecInfo.
	(tui_set_is_exec_point_at): Rename tuiSetIsExecPointAt.
	(tui_alloc_source_buffer): Rename tuiAllocSourceBuffer.
	(tui_line_is_displayed): Rename tuiLineIsDisplayed.
	(tui_addr_is_displayed): Rename tuiAddrIsDisplayed.
	(struct tui_win_info): Declare.
	* tui/tui-stack.c: Update references.
	* tui/tui-layout.c, tui/tui-winsource.c: Ditto.
	* tui/tui-win.c, tui/tui-source.c: Ditto.
	* tui/tui.c, tui/tui-disasm.c: Ditto.

2004-02-06  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-tdep.c (i386_linux_sigcontext_addr): Fix calculation
	of UCONTEXT_ADDR.  Fixes PR backtrace/1545.

2004-02-05  Mark Kettenis  <kettenis@gnu.org>

	* infrun.c (handle_inferior_event): Allow for breakpoint
	instructions to generate a SIGSEGV in addition to SIGTRAP, SIGILL
	and SIGEMT.  Update comments.
	* NEWS (Revised SPARC target): Mention support for non-executable
	stack.

2004-02-04  Mark Kettenis  <kettenis@gnu.org>

	* target.h (target_object): Add TARGET_OBJECT_WCOOKIE.
	* inftarg.c: Update copyright year.
	(child_xfer_partial): Add support for TARGET_OBJECT_WCOOKIE.
	* sparc-nat.c: Include "target.h" and "gdb_assert.h".
	(sparc_xfer_wcookie): New function.
	* sparc-tdep.c (sparc_fetch_wcookie): New function.
	* Makefile.in (sparc-nat.o): Update dependencies.
	* config/sparc/nm-nbsd.h: Include "target.h".
	(NATIVE_XFER_WCOOKIE): New define.
	(sparc_xfer_wcookie): New prototype.

2004-02-04  Andrew Cagney  <cagney@redhat.com>

	* m68k-tdep.c (m68k_saved_pc_after_call): Delete #ifdef
	SYSCALL_TRAP function.
	(m68k_gdbarch_init): Delete #ifdef SYSCALL_TRAP code.

2004-02-04  Andrew Cagney  <cagney@redhat.com>
	    Daniel Jacobowitz  <drow@mvista.com>

	* objfiles.h: Delete comments refering to inside_entry_func and
	DEPRECATED_FRAME_CHAIN_VALID.
	* defs.h (inside_entry_func): Update prototype..
	* blockframe.c (inside_entry_func): Rename to
	legacy_inside_entry_func.  Add new inside_entry_func taking a frame.
	* frame.c (get_prev_frame): Pass the frame to inside_entry_func.

2004-02-03  Jeff Johnston  <jjohnstn@redhat.com>

	* breakpoint.c (struct captured_parse_breakpoint_args):  Move
	outside of #ifdef SOLIB_ADD region.
	(do_restore_lang_radix_cleanup): Ditto.
	(resolve_pending_breakpoint): Ditto.

2004-02-03  Andrew Cagney  <cagney@redhat.com>

	* ia64-tdep.c (read_sigcontext_register): Delete unused function.
	(process_note_abi_tag_sections): Delete unused function.
	(ia64_read_fp): Delete unused function.
	(gdbarch_extract_struct_value_address): Delete declaration.

2004-02-02  Andrew Cagney  <cagney@redhat.com>

	* vax-tdep.c (vax_frame_chain): Delete call to
	deprecated_inside_entry_file.
	* ns32k-tdep.c (ns32k_frame_chain): Ditto.

2004-02-02  Mark Kettenis  <kettenis@gnu.org>

	* dwarf2-frame.c (dwarf2_frame_cache): Deal with a return address
	column that's "empty" or "same value" when eliminating REG_RA
	rules.

2004-02-02  Jeff Johnston  <jjohnstn@redhat.com>

	* NEWS: Add information about new pending breakpoint support.

2004-02-02  Jeff Johnston  <jjohnstn@redhat.com>

	* breakpoint.h (struct breakpoint): Add new flag, from_tty,
	and pending fields for pending breakpoint support.
	* breakpoint.c (breakpoint_enabled): Add check for not pending.
	(condition_command): Only parse condition if not a pending
	breakpoint.
	(print_one_breakpoint): Add support for pending breakpoints.
	(describe_other_breakpoints): Add checks to verify we are not
	dealing with pending breakpoints.
	(check_duplicates): Don't check pending breakpoints.
	(set_raw_breakpoint): Initialize pending flag.
	(do_restore_lang_radix_cleanup): New cleanup routine.
	(resolve_pending_breakpoint): New function.
	(re_enable_breakpoints_in_shlibs): Try and resolve any
	pending breakpoints via resolve_pending_breakpoint.
	(mention): Add pending breakpoint support.
	(parse_breakpoint_sals): Add new parameter to pass to
	decode_line_1 to indicate silent errors when files or functions
	are not found.  Change all callers.
	(do_captured_parse_breakpoint): New function.
	(break_command_1): Change prototype to return an rc value and to
	take an optional pending breakpoint pointer.  Support creating
	a pending breakpoint if a "not found" form of error occurs when
	parsing the breakpoint.  Also support resolving an existing pending
	breakpoint and be silent if the resolution fails.
	(create_breakpoints): Change prototype to take pending breakpoint
	pointer.  When resolving a pending breakpoint, use the new pointer
	to provide a conditional or commands added by the end-user.
	(delete_breakpoint): Add appropriate check for pending.
	(breakpoint_re_set_one): Ditto.
	(do_enable_breakpoint): Ditto.

2004-02-02  David Carlton  <carlton@kealia.com>

	* valops.c (enum oload_classification): New.
	(find_overload_match): Break implementation into separate
	functions; delete #if 0'd code; look for symbols within
	namespaces.
	(find_oload_champ_namespace,find_oload_champ_namespace_loop)
	(find_oload_champ,oload_method_static,classify_oload_match): New.
	* cp-support.h: Add declaration for cp_func_name; update
	declaration for make_symbol_overload_list.
	* cp-support.c (cp_func_name): New.
	(overload_list_add_symbol): Fix comment, use
	SYMBOL_LINKAGE_NAME and SYMBOL_NATURAL_NAME.
	(make_symbol_overload_list): Take a function name and a namespace
	instead of a symbol; change implementation.
	(make_symbol_overload_list_using): New.
	(make_symbol_overload_list_qualified, read_in_psymtabs): New.

2004-02-02  Fred Fish  <fnf@redhat.com>

	* main.c (gdb_stdtarg): Move definition to group with other
	gdb_stdtarg definitions and update copyright years.
	* remote-sim.c (gdb_os_write_stderr): Write output to
	gdb_stdtargerr stream instead of gdb_stdtarg stream.
	(gdb_os_flush_stderr): Flush gdb_stdtargerr steam instead of
	gdb_stderr stream and update copyright years.

2004-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (mips-linux-nat.o): Update dependencies.
	* mips-linux-nat.c: Include mips-tdep.h.

2004-02-01  Roland McGrath  <roland@redhat.com>

	* sol-thread.c (sol_thread_xfer_partial): New function.
	(init_sol_thread_ops): Use that for to_xfer_partial hook.
	(init_sol_core_ops): Likewise.

	* procfs.c (procfs_xfer_partial): New function.
	(init_procfs_ops): Use that for procfs_ops.to_xfer_partial.
	* Makefile.in (procfs.o): Add $(auxv_h) dep.

	* config/nm-linux.h (NATIVE_XFER_AUXV): New macro, uses auxv.c's
	procfs_xfer_auxv function.

	* procfs.c (procfs_make_note_section): If we can read
	TARGET_OBJECT_AUXV data, add an NT_AUXV note containing it.
	* linux-proc.c (linux_make_note_section): Likewise.

	* auxv.h: New file.
	* auxv.c: New file.
	* Makefile.in (auxv_h): New variable.
	(COMMON_OBS): Add auxv.o here.
	(auxv.o): New target.

	* corelow.c (core_xfer_partial): New function.
	(init_core_ops): Use it for core_ops.to_xfer_partial.

	* target.h (enum target_object): Add TARGET_OBJECT_AUXV.
	* inftarg.c (child_xfer_partial): Support it using NATIVE_XFER_AUXV
	macro if that is defined.

2004-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* breakpoint.c (bpstat_stop_status): Take a ptid_t argument,
	and check the specified thread for each breakpoint.
	* breakpoint.h (bpstat_stop_status): Update prototype.
	* infrun.c (handle_inferior_event): Update calls to
	bpstat_stop_status.

2004-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (cli-cmds.o): Add $(readline_h).

2004-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* cli/cli-cmds.c: Include readline.h.
	(complete_command): Pass the start of the last word to
	complete_line.

2004-01-31  Daniel Jacobowitz  <drow@mvista.com>

	* breakpoint.c (bpstat_stop_status): Remove not_a_sw_breakpoint
	argument, and change first argument to a CORE_ADDR.
	* breakpoint.h (bpstat_stop_status): Update prototype.
	* infrun.c (adjust_pc_after_break): Add a new comment.
	(handle_inferior_event): Update calls to bpstat_stop_status.

2004-01-31  Daniel Jacobowitz  <drow@mvista.com>

	* breakpoint.h: Update copyright years.

2004-01-31  Daniel Jacobowitz  <drow@mvista.com>

	* breakpoint.c (software_breakpoint_inserted_here_p): New function.
	(bpstat_stop_status): Don't decrement PC.
	* breakpoint.h (software_breakpoint_inserted_here_p): Add
	prototype.
	* infrun.c (adjust_pc_after_break): New function.
	(handle_inferior_event): Call it, early.  Remove later references
	to DECR_PC_AFTER_BREAK.
	(normal_stop): Add commentary.

2004-01-31  Daniel Jacobowitz  <drow@mvista.com>

	* breakpoint.c (breakpoint_re_set_one): Add missing chunk of
	2004-01-27 double-free fix.

2004-01-31  Mark Kettenis  <kettenis@gnu.org>

	* sparc-tdep.c (sparc_fetch_wcookie): New function.
	(sparc32_frame_prev_register): Handle StackGhost.
	(sparc_supply_rwindow, sparc_collect_rwindow): Likewise.

2004-01-29  Roland McGrath  <roland@redhat.com>

	* configure.in (NEW_PROC_API): Also match solaris2.9 for this test.
	* configure: Regenerated.

	* procfs.c: Include gdb_string.h for str* decls, otherwise warnings.
	* Makefile.in (procfs.o): Add dep.

2004-01-28  Andrew Cagney  <cagney@redhat.com>

	* tui/tui-stack.h: Update copyright.
	(struct frame_info): Add opaque declaration.
	(tui_update_locator_filename): Rename tuiUpdateLocatorFilename.
	(tui_show_locator_content): Rename tuiShowLocatorContent.
	(tui_show_frame_info): Rename tuiShowFrameInfo.
	* tui/tui-stack.c: Update copyright.  Update references.
	* tui/tui-winsource.c: Update references.
	* tui/tui-win.c: Update references.
	* tui/tui-layout.c: Update references.
	* tui/tui-hooks.c: Update copyright, update references.
	* tui/tui.c: Update copyright, update references.
	* tui/tui-disasm.c: Update references.

2004-01-28  David Carlton  <carlton@kealia.com>

	* dwarf2read.c (add_partial_structure): Use demangled name if
	namespace equals "".

2004-01-27  Jim Blandy  <jimb@redhat.com>

	Clean up misapplied patch:
	* dwarf2read.c (determine_prefix): Change one of the two forward
	declarations for 'determine_prefix_aux' to a declaration for this.
	(read_func_scope): Use cu->language, not cu_language.  Pass 'cu'
	argument to 'die_specification'.

	* dwarf2read.c (read_func_scope): Re-indent comment.

2004-01-27  Paul N. Hilfinger  <hilfinger@gnat.com>

	* breakpoint.c (breakpoint_re_set_one): Set b->cond, b->val, and
	b->exp to NULL after freeing so that error during re-parsing or
	evaluation of expressions associated with breakpoint don't
	eventually lead to re-freeing of storage.
	Committed by Andrew Cagney.

2004-01-27  Andrew Cagney  <cagney@redhat.com>

	* source.c (ambiguous_line_spec): Delete undefined declaration.
	* m32r-rom.c (m32r_set_board_address): Delete unused function.
	(m32r_set_server_address, m32r_set_download_path): Ditto.
	* remote-fileio.c (remote_fileio_to_fio_int): Ditto.

2004-01-27  Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2read.c: Update calls to changed and renamed functions, and
	references to moved variables.

	(struct dwarf2_cu): Add first_fn, last_fn, cached_fn,
	language, language_defn, list_in_scope, and ftypes members.
	(cu_first_fn, cu_last_fn, cu_cached_fn, cu_language)
	(cu_language_defn, list_in_scope, ftypes, cu_header_offset)
	(baseaddr): Remove globals.

	(dwarf_attr): Renamed to dwarf2_attr.  Add CU argument.
	(set_cu_language, die_is_declaration, die_specification)
	(determine_prefix, determin_prefix_aux, class_name, namespace_name)
	(dwarf2_linkage_name, dwarf2_name, dwarf2_extension)
	(dwarf2_get_ref_die_offset, dwarf2_fundamental_type)
	(initialize_cu_func_list, add_to_cu_func_list): Add CU argument.

	(dwarf2_build_psymtabs_hard): Add local baseaddr.  Initialize
	cu.list_in_scope.  Don't initialize cu_header_offset.
	(add_partial_symbol): Add local baseaddr.
	(psymtab_to_symtab_1): Add local baseaddr.  Use
	objfile->section_offsets for consistency.  Don't initialize
	cu_header_offset; do initialize cu.header.offset and
	cu.list_in_scope.
	(read_file_scope, read_func_scope, read_lexical_block_scope)
	(dwarf_decode_lines, new_symbol): Add local baseaddr.

2004-01-27  Michael Chastain  <mec.gnu@mindspring.com>

	* PROBLEMS: Add gdb/1516.

2003-12-29  Robert Millan  <robertmh@gnu.org>

	Patch committed by Andrw Cagney.
	* configure.host: Match knetbsd*-gnu and kfreebsd*-gnu.
	* configure.tgt: Match knetbsd*-gnu.

2004-01-26  Andrew Cagney  <cagney@redhat.com>

	* breakpoint.c (catch_command_1): Delete #ifdef code.
	(catch_fork_command_1): Delete #ifdef wrapper.
	(catch_exec_command_1): Ditto.
	(catch_load_command_1): Ditto.
	(catch_unload_command_1): Ditto.

	* breakpoint.c (watchpoint_check): Delete #if0ed variable.
	(catch_breakpoint): Delete #if0ed function.
	(disable_catch_breakpoint): Ditto.
	(delete_catch_breakpoint, enable_catch_breakpoint): Ditto.
	(disable_catch, enable_catch, delete_catch): Ditto.

2004-01-26  Andrew Cagney  <cagney@redhat.com>

	* remote.c (echo_check, quit_flag): Delete variables.
	(cisco_kernel_mode): Delete variable.
	(minitelnet_return, tty_input, escape_count): Delete variables.
	(remote_cisco_mode): Delete variable.
	(remote_cisco_open, remote_cisco_close): Delete function.
	(remote_cisco_mourn, remote_cisco_wait): Delete function.
	(init_remote_cisco_ops): Delete function.
	(_initialize_remote): Do not install "remote cisco" code.
	(read_frame): Delete cisco specific code.
	(remote_info_process): Delete function.
	(remote_wait): Delete cisco specific code.
	(remote_cisco_section_offsets): Delete function.
	(remote_cisco_objfile_relocate): Delete function.
	(remote_async_wait): Delete cisco specific code.
	(minitelnet, readtty, readsocket): Delete function.

2004-01-26  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (EXTRACT_STRUCT_VALUE_ADDRESS): Deprecate.  Add
	comments mentioning extract_returned_value_address.
	* infcmd.c (print_return_value): Update.  Add comments on
	extract_returned_value_address.
	* stack.c (return_command): Add comments on
	extract_returned_value_address.
	* values.c: Update comment.
	* m32r-tdep.c: Update comment.
	* sparc-tdep.c: Update comment.
	* ia64-tdep.c (ia64_use_struct_convention): Update comment.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
	* sh64-tdep.c (sh64_gdbarch_init): Update.
	* sh-tdep.c (sh_gdbarch_init): Update.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* rs6000-tdep.c (rs6000_gdbarch_init): Update.
	* m68klinux-tdep.c (m68k_linux_init_abi): Update.
	* m68k-tdep.c (m68k_gdbarch_init): Update.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
	* m32r-tdep.c (m32r_gdbarch_init): Update.
	* ia64-tdep.c (ia64_gdbarch_init): Update.
	* h8300-tdep.c (h8300_gdbarch_init): Update.
	* frv-tdep.c (frv_gdbarch_init): Update.
	* arm-tdep.c (arm_gdbarch_init): Update.
	* alpha-tdep.c (alpha_gdbarch_init): Update.

2004-01-26  Andrew Cagney  <cagney@redhat.com>

	* dwarf2loc.c (dwarf_expr_frame_base): Use SYMBOL_OPS instead of
	SYMBOL_LOCATION_FUNCS
	(dwarf2_loclist_funcs, dwarf2_locexpr_funcs): Change type to
	"struct symbol_ops".
	* dwarf2loc.h (dwarf2_locexpr_funcs, dwarf2_loclist_funcs): Change
	type to "struct symbol_ops".
	* symtab.h (struct symbol_ops): Rename "struct location_funcs".
	(struct symbol): Replace ".aux_value.loc.funcs" and
	".aux_value.loc.baton" with ".ops" and ".aux_value.ptr".
	(SYMBOL_OBJFILE): Delete macro.
	(SYMBOL_LOCATION_FUNCS): Delete macro.
	(SYMBOL_LOCATION_BATON): Update.
	* dwarf2read.c (dwarf2_symbol_mark_computed): Set SYMBOL_OPS
	intead of SYMBOL_LOCATION_FUNCS.
	* ax-gdb.c (gen_var_ref): Ditto.
	* printcmd.c (address_info): Ditto.
	* findvar.c (read_var_value): Ditto.
	(symbol_read_needs_frame): Ditto.

2004-01-26  Andrew Cagney  <cagney@redhat.com>

	* dwarf2read.c (read_func_scope): Document frame-base hack.

2004-01-25  Mark Kettenis  <kettenis@gnu.org>

	* infcmd.c (print_return_value): Plug memory leak; delete
	ui_stream object.  Rename argument `structure_return' to
	`struct_return'.

2004-01-25  Mark Kettenis  <kettenis@gnu.org>

	* infcmd.c (print_return_value): Wrap long lines.
	(finish_command_continuation, finish_command): Remove unused
	variable `funcaddr'.  Fix some coding-standards problems.

	* sparc-tdep.c (sparc_regset_from_core_section): Check whether
	SECT_SIZE is large enough, not whether it's exactly the right size.
	(sparc32_gdbarch_init): Initialize TDEP->sizeof_gregset and
	TDEP->fpregset to zero.

	* sparcnbsd-tdep.c (sparc32nbsd_supply_gregset): Also supply the
	floating-point registers for traditional NetBSD core files.
	(sparc32nbsd_init_abi): Initialize TDEP->sizeof_gregset and
	TDEP->sizeof_fpregset here.

2004-01-25  Mark Kettenis  <kettenis@gnu.org>

	* sparc-tdep.h (sparc32nbsd_sigcontext_saved_regs): New prototype.
	* sparcnbsd-tdep.c (sparc32nbsd_sigcontext_saved_regs): New
	function with code split out from
	sparc32nbsd_sigcontext_frame_cache.
	(sparc32nbsd_sigcontext_frame_cache): Use
	sparc32nbsd_sigcontext_saved_regs.
	(_initialize_sparc32nbsd_tdep): Don't register OS ABI handler for
	OpenBSD.
	* sparcobsd-tdep.c: New file.
	* Makefile.in (ALLDEPFILES): Add sparcobsd-tdep.c.
	(sparcobsd-tdep.o): New dependency.
	* configure.tgt (sparc-*-openbsd*): Set gdb_target to obsd.
	* config/sparc/obsd.mt: New file.

	* sparc-tdep.c (sparc32_gdbarch_init): Don't require
	TDEP->fpregset to be initialized to enable core file register
	sets.

2004-01-24  Mark Kettenis  <kettenis@gnu.org>

	* sparc64-tdep.h (struct frame_info, struct trad_frame_saved_reg):
	Add opaque declarations.
	(sparc64nbsd_sigcontext_saved_regs): New prototype.
	* sparc64nbsd-tdep.c (sparc64nbsd_sigcontext_saved_regs): New
	function with code split out from
	sparc64nbsd_sigcontext_frame_cache.
	(sparc64nbsd_sigcontext_frame_cache): Use
	sparc64nbsd_sigcontext_saved_regs.
	(_initialize_sparc64nbsd_tdep): Don't register OS ABI handler for
	OpenBSD.
	* sparc64obsd-tdep.c: New file.
	* Makefile.in (ALLDEPFILES): Add sparc64obsd-tdep.c.
	(sparc64obsd-tdep.o): New dependency.
	* configure.tgt (sparc64-*-openbsd*): Set gdb_target to obsd64 and
	gdb_osabi to GDB_OSABI_OPENBSD_ELF.
	* config/sparc/obsd64.mt: New file.

	* sparc-tdep.c (sparc_fetch_instruction): Return zero if we can't
	read the instruction at PC.

	* sparcnbsd-tdep.c (GDB_OSABI_NETBSD_CORE): Define, based on the
	value of GDB_OSABI_DEFAULT.
	(sparcnbsd_core_osabi_sniffer): Return GDB_OSABI_NETBSD_CORE
	instead of GDB_OSABI_NETBSD_AOUT.

2004-01-24  Nick Roberts  <nick@nick.uklinux.net>

	* mi/mi-cmd-stack.c, mi/mi-cmd-var.c, mi/mi-cmds.h: Update
	copyright.

2004-01-23  Andrew Cagney  <cagney@redhat.com>

	* printcmd.c (display_command): Replace tui_set_display call with
	tui_set_layout_for_display_command.
	* tui/tui.h (enum tui_win_type): Define.
	(tui_set_layout): Delete declaration.
	(tui_set_layout_for_display_command): Rename set_tui_layout.
	* tui/tui-data.h (enum tui_layout_type): Define.
	* tui/tui-layout.h: Update copyright.  Include "tui-data.h" and
	"tui.h".
	(tui_add_win_to_layout): Rename tuiAddWinToLayout.
	(tui_default_win_height): Rename tuiDefaultWinHeight.
	(tui_default_win_viewport_height): Rename
	tuiDefaultWinViewportHeight.
	(tui_set_layout): RenametuiSetLayout.
	* tui/tui-layout.c: Update references.
	* tui/tui.c: Update references.
	* tui/tui-disasm.c: Update references.

2004-01-23  David Carlton  <carlton@kealia.com>

	Partial workaround for PR c++/1511:
	* cp-namespace.c: Include frame.h.
	(cp_lookup_transparent_type): New
	(cp_lookup_transparent_type_loop): New.
	* cp-support.h: Declare cp_lookup_transparent_type.
	* symtab.c (basic_lookup_transparent_type): Renamed from
	lookup_transparent_type.
	(lookup_transparent_type): Replace old body by a call to
	current_language->la_lookup_transparent_type.
	* symtab.h: Update copyright.  Declare
	basic_lookup_transparent_type.
	* language.h: Update copyright.
	(struct language_defn): Add la_lookup_transparent_type.
	* language.c: Update copyright.
	(unknown_language_defn): Add basic_lookup_transparent_type.
	(auto_language_defn): Add basic_lookup_transparent_type.
	(local_language_defn): Add basic_lookup_transparent_type.
	* ada-lang.c: Update copyright.
	(ada_language_defn): Add basic_lookup_transparent_type.
	* c-lang.c: Update copyright.
	(c_language_defn): Add basic_lookup_transparent_type.
	(cplus_language_defn): Add basic_lookup_transparent_type.
	(asm_language_defn): Add basic_lookup_transparent_type.
	(minimal_language_defn): Add basic_lookup_transparent_type.
	* f-lang.c: Update copyright.
	(f_language_defn): Add basic_lookup_transparent_type.
	* jv-lang.c: Update copyright.
	(java_language_defn): Add basic_lookup_transparent_type.
	* m2-lang.c: Update copyright.
	(m2_language_defn): Add basic_lookup_transparent_type.
	* objc-lang.c: Update copyright.
	(objc_language_defn): Add basic_lookup_transparent_type.
	* p-lang.c: Update copyright.
	(p_language_defn): Add basic_lookup_transparent_type.
	* scm-lang.c: Update copyright.
	(scm_language_defn): Add basic_lookup_transparent_type.
	* Makefile.in (cp-namespace.o): Depend on frame.h.

2004-01-23  David Carlton  <carlton@kealia.com>

	Patch for PR c++/1520:
	* dwarf2read.c (read_func_scope): Set processing_current_prefix
	properly if we have a specification die.
	(determine_prefix_aux): Rename from determine_prefix.
	(determine_prefix): Like the old determine_prefix, but never
	returns NULL.

2004-01-23  Theodore A. Roth  <troth@openavr.org>

	* avr-tdep.c: Update copyright.
	(avr_iaddr_p): Delete unused function.
	(avr_saddr_p): Delete unused function.

2004-01-23  David Carlton  <carlton@kealia.com>

	* symfile.c (reread_symbols): Clear objfile->cp_namespace_symtab.
	Fix for PR symtab/1534.

2004-01-23  Mark Kettenis  <kettenis@gnu.org>

	* NEWS (New native configurations): Mention OpenBSD/sparc and
	OpenBSD/sparc64.
	* configure.tgt: Add sparc-*-openbsd* and sparc64-*-openbsd*.
	* configure.host: Likewise.
	* sparcnbsd-tdep.c (_initialize_sparnbsd_tdep): Register OS ABI
	handler for OpenBSD.
	* sparc64nbsd-tdep.c (_initialize_sparc64nbsd_tdep): Likewise.

2004-01-22  Mark Kettenis  <kettenis@gnu.org>

	* sparcnbsd-tdep.c (sparcnbsd_core_osabi_sniffer): New function.
	(_initialize_sparnbsd_tdep): Register sparcnbsd_core_osabi_sniffer.

	* ser-pipe.c (pipe_open): Use proper null pointer in execl call.
	* cli/cli-cmds.c (shell_escape): Likewise.

	* osabi.c (generic_elf_osabi_sniff_abi_tag_sections): Recognize
	OpenBSD .note.openbsd.ident sections.

2004-01-22  David Carlton  <carlton@kealia.com>

	* dwarf2read.c (psymtab_to_symtab_1): Calculate lowpc, highpc via
	get_scope_pc_bounds.
	(read_file_scope): Ditto.
	(get_scope_pc_bounds): New function, produced by extracting code
	from the above two functions, consolidating it, and adding support
	for DW_TAG_namespace.

2004-01-22  Mark Kettenis  <kettenis@gnu.org>

	* osabi.c (MAX_NOTESZ): New define.
	(check_note): New function.
	(generic_elf_osabi_sniff_abi_tag_sections): Reorganize code using
	check_note.

2004-01-21  Roland McGrath  <roland@redhat.com>

	* MAINTAINERS (write after approval): Add myself.

2004-01-21  Eli Zaretskii  <eliz@gnu.org>

	* utils.c (init_page_info): Move declarations of `rows' and
	`cols' before the __GO32__-specific code.  Move the closing brace
	outside the #ifdef __GO32__..#endif block.
	[__GO32__]: Use `rows' and `cols' to avoid compiler warnings.

2004-01-21  Paul Brook  <paul@codesourcery.com>

	* infrun.c (handle_inferior_event): Check stop_stack_dummy if handling
	BPSTAT_WHAT_CHECK_SHLIBS.

2004-01-21  Paul Brook  <paul@codesourcery.com>

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

2004-01-20  Andrew Cagney  <cagney@redhat.com>

	* ax-gdb.c (print_axs_value): Delete unused function.
	* jv-lang.c (java_lookup_type): Delete unused function.
	* cli/cli-dump.c (dump_filetype): Delete unused function.
	* remote-mips.c (remote_mips_insert_hw_breakpoint)
	(remote_mips_remove_hw_breakpoint): Delete unused functions.
	(mips_getstring): Delete unused function.
	(pmon_insert_breakpoint): Delete #if0ed function.
	(PMON_MAX_BP): Delete #if0ed MACRO.
	(mips_pmon_bp_info): Delete #if0ed variable.
	(pmon_remove_breakpoint): Delete #if0ed function.
	* monitor.c (monitor_write_even_block): Delete unused function.
	(monitor_write_memory_block): Delete #if0ed code.
	* dink32-rom.c (dink32_load): Delete unused function.
	(_initialize_dink32_rom): Delete #if0ed code.
	* d10v-tdep.c (d10v_daddr_p): Delete unused function.

	* tui/tui-command.c: Update references.
	* tui/tui-io.c: Update references.
	* tui/tui-command.h: Update copyright.
	(tui_dispatch_ctrl_char): Rename tuiDispatchCtrlChar.

	* source.c (ambiguous_line_spec): Delete never-defined function.
	* remote-rdi.c (arm_rdi_mourn, arm_rdi_send): Ditto.
	* gdbtypes.c (add_name, add_mangled_type): Ditto.
	* cli/cli-cmds.c (validate_comname): Ditto.

	* tui/tui-disasm.h: Update copyright.  Include "tui.h" and
	"tui-data.h".
	(tui_set_disassem_content): Rename tuiSetDisassemContent.
	(tui_show_disassem): Rename tuiShowDisassem.
	(tui_show_disassem_and_update_source): Rename
	tuiVerticalDisassemScroll.
	(tui_vertical_disassem_scroll): Rename tuiVerticalDisassemScroll.
	(tui_get_begin_asm_address): Rename tuiGetBeginAsmAddress.
	* tui/tui.h: Update copyright.
	(enum tui_status): Define.
	* tui/tui-data.h (enum tui_scroll_direction): Define.
	* tui/tui-disasm.c: Update copyright.  Update references.
	* tui/tui-winsource.c: 	Update copyright.  Update references.
	* tui/tui-win.c: Update references.
	* tui/tui-layout.c: Update references.

2004-01-20  Andrew Cagney  <cagney@redhat.com>

	* mi/mi-cmd-stack.c (list_args_or_locals): Move declaration of
	sym2 to start of block.

2004-01-19  Michael Chastain  <mec.gnu@mindspring.com>

	* MAINTAINERS: Delete mmalloc.
	* Makefile.in: Delete MMALLOC, MMALLOC_CFLAGS, -lmmalloc, mmalloc_h.
	* NEWS: Mention removal of --with-malloc.
	* acconfig.h: Delete USE_MMALLOC, MMCHECK_FORCE.
	* config.in: Regenerate.
	* configure: Regenerate.
	* configure.in: Delete MMALLOC_CFLAGS, MMALLOC, --with-mmalloc,
	USE_MMALLOC, MMCHECK_FORCE.
	* gdbinit.in: Remove mmalloc.
	* utils.c: Delete USE_MMALLOC, NO_MMCHECK, MMCHECK_FORCE, malloc_botch.
	* config/alpha/alpha-linux.mh: Delete MMALLOC, MMALLOC_CFLAGS.
	* config/i386/go32.mh: Likewise.
	* config/i386/interix.mh: Likewise.
	* config/powerpc/xm-linux.h: Delete MMAP_BASE_ADDRESS, MMAP_INCREMENT.

2004-01-19  Jeff Johnston  <jjohnstn@redhat.com>

	* linespec.c (decode_variable, symtab_from_filename):  Call
	error_silent with error message instead of throwing an exception
	directly.
	* defs.h (error_silent, error_output_message): Add prototypes.
	(catch_exceptions_with_msg): Ditto.
	* utils.c (error_silent, error_output_message): New functions.
	* top.c (catch_exceptions_with_msg): New function.

2004-01-20  Nick Roberts  <nick@nick.uklinux.net>

	* mi/mi-cmds.h (enum print_values): Add definition.

	* mi/mi-cmd-stack.c (mi_cmd_stack_list_locals): Print the name,
	type and value for simple data types and just the name and type
	for complex ones, if required.

	* mi/mi-cmd-var.c (mi_cmd_var_list_children): Print the values of the
	children, if required.

2004-01-19  Kevin Buettner  <kevinb@redhat.com>

	* frv-tdep.c (frv_push_arguments, frv_saved_pc_after_call): Delete
	unused declarations.

2004-01-19  Andrew Cagney  <cagney@redhat.com>

	* top.h (mapped_symbol_files): Delete declaration.
	* main.c (captured_main): Delete option "m" and "mapped".
	* objfiles.c (mapped_symbol_files): Delete variable.
	* symfile.c (symbol_file_command): Delete mmap code.
	(symbol_file_add_with_addrs_or_offsets): Ditto.
	(add_symbol_file_command, reread_separate_symbols): Ditto.
	* objfiles.h (OBJF_MAPPED): Delete.
	* objfiles.c (allocate_objfile) [USE_MMALLOC]: Delete.
	(free_objfile) [USE_MMALLOC]: Ditto.
	(open_existing_mapped_file): Delete function.
	(open_mapped_file): Delete function.
	(map_to_file): Delete function.

2004-01-19  Kevin Buettner  <kevinb@redhat.com>

	* infrun.c (step_into_function): Account for possible breakpoint
	adjustment when computing ``stop_func_start''.

2004-01-19  Kevin Buettner  <kevinb@redhat.com>

	* target.c (default_region_size_ok_for_hw_watchpoint): Compare
	the region size against the size of a pointer, not the size of
	a register as given by DEPRECATED_REGISTER_SIZE.

2004-01-19  Andrew Cagney  <cagney@redhat.com>

	* tui/tui-regs.h: Include "tui-data.h".
	(tuiFirstRegElementNoInLine): Delete declaration.
	(tui_display_registers_from): Rename tuiDisplayRegistersFrom.
	(tui_last_regs_line_no): Rename tuiLastRegsLineNo.
	(tui_line_from_reg_element_no): Rename tuiLineFromRegElementNo.
	(tui_calculate_regs_column_count): Rename
	tuiCalculateRegsColumnCount.
	(tui_check_register_values): Rename tuiCheckRegisterValues.
	(tui_show_registers): Rename tuiShowRegisters.
	(tui_display_registers_from_line): Rename
	tuiDisplayRegistersFromLine.
	(tui_first_reg_element_inline): Rename tuiFirstRegElementInLine.
	(tui_toggle_float_regs): Rename tuiToggleFloatRegs.
	(tui_first_reg_element_no_inline): Rename
	tuiFirstRegElementNoInLine.
	* tui/tui-data.h: Update copyright.
	(enum tui_register_display_type): Rename _TuiRegisterDisplayType.
	* tui/tui-windata.c: Update copyright, update references.
	* tui/tui-regs.c: Update copyright, update references.
	* tui/tui-win.c: Update copyright, update references.
	* tui/tui-layout.c: Update copyright, update references.

2004-01-18  Andrew Cagney  <cagney@redhat.com>

	* tui/tui-io.c: Update copyright.
	(key_is_end_sequence, key_is_backspace): New functions.
	(key_is_command_char, key_is_start_sequence): New function.
	(tui_getc): Update references.
	* tui/tui-io.h: Update copyright.
	(m_tuiStartNewLine): Delete macro.
	(m_isBackspace, m_isDeleteChar): Delete macros.
	(m_isDeleteLine, m_isDeleteToEol): Delete macros.
	(m_isNextPage, m_isPrevPage): Delete macros.
	(m_isLeftArrow, m_isRightArrow): Delete macros.
	(m_isXdbStyleCommandChar): Delete macro.
	(key_is_start_sequence): Declare, replace m_isStartSequence.
	(key_is_end_sequence): Declare, replace m_isEndSequence.
	(key_is_backspace): Declare ,replace m_isBackspace.
	(key_is_command_char): Declare, replace m_isCommandChar.
	* tui/tui-command.c: Update copyright.
	(tuiDispatchCtrlChar): Update references.

	* config/djgpp/fnchange.lst: Delete tui/tuiSourceWin.c and
	tuiSourceWin.h.

	* tui/tui-command.c: Rename tui/tuiCommand.c.
	* tui/tui-command.h: Rename tui/tuiCommand.h.
	* tui/tui-data.c: Rename tui/tuiData.c.
	* tui/tui-data.h: Rename tui/tuiData.h.
	* tui/tui-disasm.c: Rename tui/tuiDisassem.c.
	* tui/tui-disasm.h: Rename tui/tuiDisassem.h.
	* tui/tui-io.c: Rename tui/tuiIO.c.
	* tui/tui-io.h: Rename tui/tuiIO.h.
	* tui/tui-layout.c: Rename tui/tuiLayout.c.
	* tui/tui-layout.h: Rename tui/tuiLayout.h.
	* tui/tui-regs.c: Rename tui/tuiRegs.c.
	* tui/tui-regs.h: Rename tui/tuiRegs.h.
	* tui/tui-source.c: Rename tui/tuiSource.c.
	* tui/tui-source.h: Rename tui/tuiSource.h.
	* tui/tui-stack.c: Rename tui/tuiStack.c.
	* tui/tui-stack.h: Rename tui/tuiStack.h.
	* tui/tui-win.c: Rename tui/tuiWin.c.
	* tui/tui-win.h: Rename tui/tuiWin.h.
	* tui/tui-windata.c: Rename tui/tuiDataWin.c.
	* tui/tui-windata.h: Rename tui/tuiDataWin.h.
	* tui/tui-wingeneral.c: Rename tui/tuiGeneralWin.c.
	* tui/tui-wingeneral.h: Rename tui/tuiGeneralWin.h.
	* tui/tui-winsource.c: Rename tui/tuiSourceWin.c.
	* tui/tui-winsource.h: Rename tui/tuiSourceWin.h.
	* tui/tui-file.c: Update includes.
	* tui/tui-hooks.c: Update includes.
	* tui/tui-interp.c: Update includes.
	* tui/tui.c: Update includes.
	* Makefile.in: Update all tui/ dependencies.
	(SUBDIR_TUI_OBS, SUBDIR_TUI_SRCS): Update file names.

	* Makefile.in: Update copyright.  Update dependencies.

	* tui/tuiSourceWin.c (tui_update_breakpoint_info): Fix compile
	problem.

2004-01-18  Andrew Cagney  <cagney@redhat.com>

	* mn10300-tdep.c (_initialize_mn10300_tdep): Call gdbarch_register
	instead of register_gdbarch_init.

	* remote-sds.c (tohex): Delete unused function.  Update copyright.
	* xstormy16-tdep.c (xstormy16_register_virtual_size): Ditto.
	* v850-tdep.c (v850_register_virtual_size): Ditto.
	* target.c (normal_target_post_startup_inferior): Ditto.
	* source.c (ambiguous_line_spec): Ditto.
	* remote.c (adapt_remote_get_threadinfo): Ditto.
	* mi/mi-out.c (out_field_fmt): Ditto.
	* mi/mi-interp.c (mi_interp_read_one_line_hook): Ditto.
	(output_control_change_notification): Ditto.
	* m68k-tdep.c (m68k_register_byte): Ditto.
	(m68k_remote_breakpoint_from_pc): Ditto.
	* ui-out.c (init_ui_out_state): Delete unused declaration.
	* stabsread.c (search_value): Ditto.
	* mi/mi-cmd-env.c (env_cli_command): Ditto.
	* maint.c (print_section_table): Ditto.
	* infrun.c (set_follow_fork_mode_command): Ditto.

2004-01-18  Mark Kettenis  <kettenis@gnu.org>

	* dwarf2-frame.c (execute_cfa_program): Move DWA_CFA_nop before
	DW_CFA_def_cfa_exporession.  Add support for
	DW_CFA_offset_extendend_sf, DW_CFA_def_cfa_sf and
	DW_CFA_def_cfa_offset_sf.  This should fix PR backtrace/1391.

2004-01-18  Andrew Cagney  <cagney@redhat.com>

	* ocd.c: Update copyright.
	(bdm_read_register_command): Delete unused function.
	(_initialize_remote_ocd): Delete commented out reference.
	(get_quoted_char, reset_packet): Delete #if0ed function.
	(output_packet, put_quoted_char): Delete #if0ed function.
	(stu_put_packet, stu_get_packet): Delete #if0ed function.
	(ocd_start_remote): Delete #if0ed code, remove #if1 wrapper.
	(BDM_BREAKPOINT): Delete #if0ed macro.
	(remote_timeout): Delete #if0ed variable.

2004-01-18  Mark Kettenis  <kettenis@gnu.org>

	* Makefile.in (ALLDEPFILES): Remove core-sol2.c.
	(core-sol2.o): Remove dependency.
	* core-sol2.c: Remove file.

2004-01-17  Andrew Cagney  <cagney@redhat.com>

	* mdebugread.c (compare_blocks): Make addr_diff a LONGEST.
	* block.h: Make GLOBAL_BLOCK, STATIC_BLOCK, FIRST_LOCAL_BLOOCK
	enums.

2004-01-17  Daniel Jacobowitz  <drow@mvista.com>

	* remote.c: Update copyright years.

2004-01-17  Daniel Jacobowitz  <drow@mvista.com>

	* remote.c (remote_vcont_resume): Use xstrprintf instead of sprintf.

2004-01-17  Andrew Cagney  <cagney@redhat.com>

	* mdebugread.c: Update copyright.
	(parse_symbol): Replace DEPRECATED_STREQ with strcmp.
	(parse_type, parse_procedure): Ditto.
	(parse_partial_symbols, psymtab_to_symtab_1): Ditto.

	* cris-tdep.c (cris_store_struct_return): Put back accidently
	deleted function.

	* gdbarch.sh: Update copyright year.
	* gdbarch.h, gdbarch.c: Re-generate.

2004-01-17  Daniel Jacobowitz  <drow@mvista.com>

	Suggested by George Anzinger.
	* dwarf2expr.c (execute_stack_op): Fetch the second item from the
	correct stack offset.  Include unknown opcode numbers in the error
	message.

2004-01-17  Andrew Cagney  <cagney@redhat.com>

	* x86-64-tdep.c (x86_64_init_abi): No need to clear
	extract_struct_value_address, i386 does not set it.
	* sparc64-tdep.c (sparc64_init_abi): Do not set
	extract_struct_value_address, never called.
	(sparc64_extract_struct_value_address): Delete function.
	* m68hc11-tdep.c: Update copyright.
	(m68hc11_gdbarch_init): Delete redundant assignment of
	extract_struct_value_address.
	* i386-tdep.c: Update copyright.
	(i386_gdbarch_init): Do not set extract_struct_value_address,
	never called.
	(i386_extract_struct_value_address): Delete function.
	* sparc-tdep.c (sparc32_gdbarch_init): Do not set
	extract_struct_value_address, never called.
	(sparc32_extract_struct_value_address): #if 0 function.  Add
	comments explaining its future.

2004-01-17  Daniel Jacobowitz  <drow@mvista.com>

	* arm-tdep.c (arm_write_pc): New function.
	(arm_gdbarch_init): Call set_gdbarch_write_pc.

2004-01-17  Daniel Jacobowitz  <drow@mvista.com>

	* breakpoint.c (must_shift_inst_regs): Delete.
	(bpstat_stop_status): Delete references to DECR_PC_AFTER_HW_BREAK
	and SHIFT_INST_REGS.
	* infcmd.c (step_1, step_1_continuation): Delete references to
	SHIFT_INST_REGS.
	* infrun.c (keep_going): Likewise.
	* target.h (DECR_PC_AFTER_HW_BREAK): Don't define.
	* config/i386/nm-i386.h (DECR_PC_AFTER_HW_BREAK): Likewise.

2004-01-17  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* infcmd.c (print_return_value): Delete reference to
	DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS.

	* cris-tdep.c (cris_gdbarch_init): Do not set
	deprecated_extract_struct_value_address.

	* xstormy16-tdep.c: Update copyright.
	(xstormy16_extract_struct_value_address): Update to current
	extract struct value address interface.
	(xstormy16_gdbarch_init): Set extract_struct_value_address.
	* sh64-tdep.c (sh64_extract_struct_value_address): Update to
	current extract struct value address interface.
	(sh64_gdbarch_init): Set extract_struct_value_address.

	* cris-tdep.c: Update copyright.
	(cris_extract_struct_value_address): Delete function.
	(struct_return_address): Delete variable.
	(cris_store_struct_return): Do not set struct_return_address.

	* mcore-tdep.c: Update copyright.
	(mcore_extract_struct_value_address): Delete function.  Update
	comments.
	(mcore_gdbarch_init): Update.
	* mn10300-tdep.c: Update copyright.
	(mn10300_extract_struct_value_address): Delete function.
	(mn10300_gdbarch_init): Update.
	* v850-tdep.c: Update copyright.
	(v850_extract_struct_value_address): Delete.
	(v850_gdbarch_init): Update.
	* ns32k-tdep.c: Update copyright.
	(ns32k_extract_struct_value_address): Delete.
	(ns32k_gdbarch_init): Update.
	* hppa-tdep.c (hppa_extract_struct_value_address): Delete.
	(hppa_gdbarch_init): Update.
	* vax-tdep.c: Update copyright.
	(vax_extract_struct_value_address): Delete.
	(vax_gdbarch_init): Update.

	* gdbarch.sh (DEPRECATED_NPC_REGNUM): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* procfs.c (procfs_fetch_registers): Delete reference to
	DEPRECATED_NPC_REGNUM.
	(procfs_store_registers): Ditto.
	* regcache.c (generic_target_write_pc): Simplify.
	* lynx-nat.c: Delete #ifdef SPARC code.  Not used.

	* core-sol2.c (fetch_core_registers): Replace
	DEPRECATED_NPC_REGNUM with equivalent tdep value.

	* hppa-tdep.c: Update copyright year.
	(hppa_target_write_pc): Use PCOQ_TAIL_REGNUM instead of
	NPC_REGNUM.
	(hppa_gdbarch_init): Do not set deprecated_npc_regnum.

	* mips-tdep.c (mips_write_pc): New function.
	(mips_gdbarch_init): Set "write_pc" to "mips_write_pc".
	(mips_read_pc): Use mips_regnum instead of PC_REGNUM.
	(mips_find_saved_regs, mips_software_single_step: Ditto.
	(mips_frame_saved_pc, mips_frame_saved_pc): Ditto.
	mips_init_extra_frame_info, mips_pop_frame): Ditto.

2004-01-17  Andrew Cagney  <cagney@redhat.com>

	* mips-tdep.c: Re-indent.  Group functions by ABI.

2004-01-17  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (DECR_PC_AFTER_BREAK): Make zero the default.
	* gdbarch.c: Re-generate.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set
	DECR_PC_AFTER_BREAK to zero.
	* vax-tdep.c (vax_gdbarch_init): Ditto.
	* v850-tdep.c (v850_gdbarch_init): Ditto.
	* sparc-tdep.c (sparc32_gdbarch_init): Ditto.
	* sh64-tdep.c (sh64_gdbarch_init): Ditto.
	* sh-tdep.c (sh_gdbarch_init): Ditto.
	* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
	* ns32k-tdep.c (ns32k_gdbarch_init): Ditto.
	* mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
	* mips-tdep.c (mips_gdbarch_init): Ditto.
	* mcore-tdep.c (mcore_gdbarch_init): Ditto.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
	* m32r-tdep.c (m32r_gdbarch_init): Ditto.
	* ia64-tdep.c (ia64_gdbarch_init): Ditto.
	* i386-interix-tdep.c (i386_interix_init_abi): Ditto.
	* hppa-tdep.c (hppa_gdbarch_init): Ditto.
	* h8300-tdep.c (h8300_gdbarch_init): Ditto.
	* frv-tdep.c (frv_gdbarch_init): Ditto.
	* cris-tdep.c (cris_gdbarch_init): Ditto.
	* avr-tdep.c (avr_gdbarch_init): Ditto.
	* arm-tdep.c (arm_gdbarch_init): Ditto.
	* i386-nto-tdep.c (i386nto_init_abi): Add comment.

2004-01-17  J. Brobecker  <brobecker@gnat.com>

	* dwarf2read.c (dwarf2_non_const_array_bound_ignored_complaint):
	Delete, no longer used.
	(read_subrange_type): New function, mostly extracted from
	read_array_type().
	(read_array_type): Replace extracted code by call to
	read_subrange_type().
	(dwarf2_get_attr_constant_value): New function.
	(scan_partial_symbols): Add handling for DW_TAG_subrange_type.
	(add_partial_symbol): Likewise.
	(process_die): Likewise.
	(new_symbol): Likewise.
	(read_type_die): Likewise.

2004-01-16  Andrew Cagney  <cagney@redhat.com>

	* symfile.c: Update copyright year.
	(compare_symbols): Delete unused function.
	* stabsread.c: Update copyright year.
	(lrs_general_complaint): Delete unused function.
	(ref_search_value): Ditto.
	(get_substring): Delete declaration.
	* sh64-tdep.c: Update copyright year.
	(sh64_get_gdb_regnum): Delete unused function.
	* dwarf2read.c (dwarf2_unsupported_at_frame_base_complaint):
	Delete unused function.

2004-01-17  Mark Kettenis  <kettenis@gnu.org>

	* defs.h (gdb_osabi): Add GDB_OSABI_OPENBSD_ELF.
	* osabi.c (gdb_osabi_names): Add "OpenBSD ELF".

2004-01-16  Andrew Cagney  <cagney@redhat.com>

	Changes from Peter Schauer.
	* rs6000-tdep.c: Update copyright year.
	(rs6000_push_dummy_call): Update the stack pointer before
	accessing the corresponding stack region.
	* rs6000-nat.c: Update copyright year.
	(set_host_arch): Set "info.abfd" to "exec_bfd".

2004-01-15  Mark Kettenis  <kettenis@gnu.org>

	* blockframe.c: Update copyright year.
	(inside_entry_func): Don't treat a zero PC specially.

2004-01-14  Elena Zannoni  <ezannoni@redhat.com>

	* gcore.c (gcore_copy_callback): Use paddr_d to print size
	variable.
	(gcore_create_callback): Ditto.  Skip any memory segment that has
	no permissions set.

2004-01-14  David Carlton  <carlton@kealia.com>

	Change symbols for C++ nested types to contain the fully qualified
	name, if possible.  (At least in the DWARF-2 case.)  Partial fix
	for PR's c++/57, c++/488, c++/539, c++/573, c++/609, c++/832,
	c++/895.
	* c-exp.y (qualified_type): Handle types nested within classes.
	* cp-namespace.c: Update comments.
	(cp_set_block_scope): Delete #if 0.
	(cp_lookup_nested_type): Handle types nested within classes.
	* dwarf2read.c: (scan_partial_symbols): Call add_partial_structure
	when appropriate.
	(add_partial_symbol): Add the name of the enclosing namespace to
	types.
	(pdi_needs_namespace): New.
	(add_partial_namespace): Tweak comment.
	(add_partial_structure): New.
	(psymtab_to_symtab_1): Initialize processing_current_prefix
	here...
	(process_die): instead of here.
	(read_structure_scope): Try to figure out the name of the class or
	namespace that the structure might be defined within.
	(read_enumeration): Generate fully-qualified names, if possible.
	(read_namespace): Don't set name to NULL.
	(die_specification): New.
	(new_symbol): Generate fully-qualified names for types.
	(read_type_die): Determine appropriate prefix.
	(determine_prefix): New.
	(typename_concat): New.
	(class_name): New.
	* valops.c (value_aggregate_elt): Pass NOSIDE to
	value_struct_elt_for_reference.
	(value_struct_elt_for_reference): Make static, add NOSIDE
	parameter, call value_maybe_namespace_elt as a last resort.
	(value_namespace_elt): Break out code into
	value_maybe_namespace_elt.
	(value_maybe_namespace_elt): New.

2004-01-12  Andrew Cagney  <cagney@redhat.com>

	* mips-tdep.c (mips_convert_register_p): Handle both raw and
	cooked floating-point registers.
	(mips_gdbarch_init): Set convert_register_p, register_to_value,
	and value_to_register.

2004-01-13  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (FUNCTION_START_OFFSET): Make zero the default.
	* gdbarch.c: Re-generate.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set
	FUNCTION_START_OFFSET.
	* v850-tdep.c (v850_gdbarch_init): Ditto.
	* sparc-tdep.c (sparc32_gdbarch_init): Ditto.
	* sh64-tdep.c (sh64_gdbarch_init): Ditto.
	* sh-tdep.c (sh_gdbarch_init): Ditto.
	* s390-tdep.c (s390_gdbarch_init): Ditto.
	* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
	* ns32k-tdep.c (ns32k_gdbarch_init): Ditto.
	* mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
	* mips-tdep.c (mips_gdbarch_init): Ditto.
	* mcore-tdep.c (mcore_gdbarch_init): Ditto.
	* m68k-tdep.c (m68k_gdbarch_init): Ditto.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
	* m32r-tdep.c (m32r_gdbarch_init): Ditto.
	* ia64-tdep.c (ia64_gdbarch_init): Ditto.
	* i386-tdep.c (i386_gdbarch_init): Ditto.
	* hppa-tdep.c (hppa_gdbarch_init): Ditto.
	* h8300-tdep.c (h8300_gdbarch_init): Ditto.
	* frv-tdep.c (frv_gdbarch_init): Ditto.
	* d10v-tdep.c (d10v_gdbarch_init): Ditto.
	* cris-tdep.c (cris_gdbarch_init): Ditto.
	* avr-tdep.c (avr_gdbarch_init): Ditto.
	* arm-tdep.c (arm_gdbarch_init): Ditto.
	* alpha-tdep.c (alpha_gdbarch_init): Ditto.

2004-01-13  Daniel Jacobowitz  <drow@mvista.com>

	* infrun.c (follow_fork_mode_ask): Remove.
	(follow_fork_mode_kind_names): Remove follow_fork_mode_ask.
	(follow_fork): Simplify and remove internal error for
	follow_fork_mode_ask.
	(_initialize_infrun): Update "set follow-fork-mode" help text.

2004-01-13  Andrew Cagney  <cagney@redhat.com>

	* configure.in: Update copyright year.
	(build_warnings): Add -Wunused-label.
	* configure: Re-generate.

2004-01-12  Andrew Cagney  <cagney@redhat.com>

	* exec.h (exec_ops): Make "extern".

	* mips-tdep.c (mips_pseudo_register_read): Don't return a value,
	the function is void.
	(mips_pseudo_register_write): Ditto.

2004-01-12  Andrew Cagney  <cagney@redhat.com>

	* stack.c (frame_info): Delete DEPRECATED_PRINT_EXTRA_FRAME_INFO
	call.  Never defined.
	* sparc-tdep.h (struct frame_info): Add opaque declaration.
	* sparc64-tdep.h (struct gdbarch): Add opaque declaration.
	(struct sparc_gregset, struct regcache): Ditto.
	* sparc-nat.c: Update copyright.  Specify "GNU/Linux".

2004-01-12  Andrew Cagney  <cagney@redhat.com>

	* mi/ChangeLog: Delete file.  Renamed to ...
	* mi/ChangeLog-1999-2003: New file.
	* tui/ChangeLog: Delete file.  Renamed to ...
	* tui/ChangeLog-1998-2003: New file.

2004-01-11  Mark Kettenis  <kettenis@gnu.org>

	* sparc64nbsd-tdep.c: Include "regset.h".
	(sparc64nbsd_sizeof_struct_reg, sparc64nbsd_sizeof_struct_fpreg):
	Remove variables.
	(fetch_core_registers): Remove function.
	(sparc64nbsd_core_fns): Remove variable.
	(sparc64nbsd_supply_gregset, sparc64nbsd_supply_fpregset): New
	functions.
	(sparc64nbsd_init_abi): Initialize TDEP->gregset,
	TDEP->sizeof_gregset, TDEP->fpregset and TDEP->sizeof_gregset.
	(_initialize_sparc64nbsd_tdep): Remove call to add_core_fns.

	* sparc-tdep.c (sparc32_extract_struct_value_address): Rename from
	sparc_extract_struct_value_address.
	(sparc32_gdbarch_init): Set extract_struct_value_address.
	* sparc64-tdep.c (sparc64_extract_struct_value_address): New
	function.
	(sparc64_init_abi): Set extract_struct_value_address.  Don't set
	return_value_on_stack.

	* NEWS: Mention that %cs and %ss have been added to the AMD64
	configurations

	* frame.c: Update copyright year.
	(get_prev_frame): Improve comment.

	* sparc64fbsd-tdep.c: Include "regset.h".
	(sparc64fbsd_sizeof_struct_reg, sparc64fbsd_sizeof_struct_fpreg):
	Remove variables.
	(fetch_core_registers): Remove function.
	(sparc64fbsd_core_fns): Remove variable.
	(sparc64fbsd_supply_gregset, sparc64fbsd_supply_fpregset): New
	functions.
	(sparc64fbsd_init_abi): Initialize TDEP->gregset,
	TDEP->sizeof_gregset, TDEP->fpregset and TDEP->sizeof_gregset.
	(_initialize_sparc64fbsd_tdep): Remove call to add_core_fns.

	* sparcnbsd-tdep.c: Include "regset.h".
	(fetch_core_registers): Remove function.
	(sparcnbsd_core_fns, sparcnbsd_elfcore_fns): Remove varaibles.
	(sparc32nbsd_supply_gregset, sparc32nbsd_supply_fpregset): New
	functions.
	(sparc32nbsd_init_abi): Initialize TDEP->gregset and
	TDEP->fpregset.
	(_initialize_sparcnbsd_tdep): Remove calls to add_core_fns.

	* sparc-tdep.h (struct regset): Provide opaque declaration.
	(struct gdbarch_tdep): Add gregset, sizeof_gregset,
	fpregset and sizeof_fpregset members.
	* sparc-tdep.c (struct regset): Provide opaque declaration.
	(sparc_regset_from_core_section): New function.
	(sparc32_gdbarch_init): Initialize TDEP->gregset,
	TDEP->sizeof_gregset, TDEP->fpregset and TDEP->sizeof_fpregset.
	Set regset_from_core_section when appropriate.

2004-01-10  Mark Kettenis  <kettenis@gnu.org>

	* x86-64-tdep.c (amd64_non_pod_p): New function.
	(amd64_classify_aggregate): Return class memory for non-POD
	C++ structure types.

	* x86-64-tdep.c (amd64_push_arguments): Add struct_return
	argument.  Use it to reserve a register if necessary.
	(amd64_push_dummy_call): Pass STRUCT_RETURN in call to
	amd64_push_arguments.

	* x86-64-tdep.c (amd64_classify_aggregate): Ignore static fields.

	* x86-64-tdep.c (amd64_register_info): Add %cs and %ss.  Adjust
	register numbers in comments.
	* x86-64-tdep.h: Update copyright year.
	(X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM, X86_64_XMM1_REGNUM):
	Adjust for addition of %cs and %ss.
	* amd64fbsd-nat.c: Update copyright year.
	(reg_offset): Add register offsets for %cs and %ss.
	* amd64fbsd-tdep.c: Update copyright year.
	(amd64fbsd_r_reg_offset): Add register offsets for %cs and %ss.
	(amd64fbsd_sc_reg_offset): Likewise.
	* x86-64-linux-nat.c: Update copyright year.
	(x86_64_linux_gregset64_reg_offset): Add register offsets for %cs
	and %ss.
	* amd64nbsd-nat.c: Update copyright year.
	(amd64nbsd32_r_reg_offset): Add register offsets for %cs and %ss.
	* amd64nbsd-tdep.c: Update copyright year.
	(amd64nbsd_r_reg_offset): Add register offsets for %cs and %ss.
	* x86-64-linux-tdep.c: Update copyright year.
	(user_to_gdb_regmap): Add mapping for %cs and %ss.
	(x86_64_linux_sc_reg_offset): Adjust for addition of %cs and %ss.
	* regformats/reg-x86-64.dat: Add %cs and %ss.

	* blockframe.c (inside_entry_func): Reformat.  Introduce new local
	variables to prevent long lines.  Update comments to reflect
	reality.

2004-01-09  David Carlton  <carlton@kealia.com>

	Checked in by Elena Zannoni  <ezannoni@redhat.com>.
	* dwarf2read.c (read_namespace): Pull out name-generating code
	into namespace_name. Rename previous_namespace to previous_prefix
	and processing_current_namespace to processing_current_prefix..
        (namespace_name): New function.
	(add_partial_symbol): Substitute uses of pdi->name with
	actual_name.
	* cp-support.h: Rename processing_current_namespace to
	processing_current_prefix.
        Update copyright year.
	* cp-namespace.c: Rename processing_current_namespace to
	processing_current_prefix.
        Update copyright year.

2004-01-09  Andrew Cagney  <cagney@redhat.com>

	* jv-valprint.c, ser-unix.c: Add missing copyright years.

2004-01-09  Mark Kettenis  <kettenis@gnu.org>

	* dbxread.c (read_dbx_symtab): Ignore N_PATCH stabs instead of
	complaining.
	(process_one_symbol): Deal with N_PATCH stabs.

2004-01-09  Elena Zannoni  <ezannoni@redhat.com>

	* dwarf2read.c (read_array_type): Discard FORTRAN_HACK macro and
	ifdeffed code.
        Update copyright year.

2004-01-08  Michael Chastain  <mec.gnu@mindspring.com>

	* config/pa/tm-hppa.h: Update extern declarations for
	hppa32_hpux_frame_saved_pc_in_sigtramp,
	hppa32_hpux_frame_base_before_sigtramp, and
	hppa32_hpux_frame_find_saved_regs_in_sigtramp.

2004-01-08  Michael Chastain  <mec.gnu@mindspring.com>

	* config/pa/tm-hppah.h: Update copyright years.

2004-01-08  Andrew Cagney  <cagney@redhat.com>

	* mips-tdep.c (mips_n32n64_reg_struct_has_addr): Delete function.
	(mips_o32_reg_struct_has_addr): Delete function.
	(mips_gdbarch_init): Update.
	(mips_extract_struct_value_address): Delete function.

2004-01-08  David Mosberger  <davidm@hpl.hp.com>

	* ia64-linux-tdep.c: Update GATE_AREA_END value to reflect
	reality.

2004-01-07  Andrew Cagney  <cagney@redhat.com>

	* mips-tdep.c (mips_gdbarch_init): Set elf_flags to the previous
	architecture's elf flags (when available).

	* mips-tdep.c (mips_gdbarch_init): Move code determining the MIPS
	FPU to the start, check the MIPS FPU when looking for an old
	architecture.
	(set_mipsfpu_single_command): Update the architecture.
	(set_mipsfpu_double_command, set_mipsfpu_none_command): Ditto.

	* mips-tdep.c (MIPS_DEFAULT_MASK_ADDRESS_P): Delete macro.
	(mips_mask_address_p): Add "tdep" parameter.
	(show_mask_address, mips_addr_bits_remove): Update.
	(mips_dump_tdep): Update.
	(MIPS_DEFAULT_STACK_ARGSIZE): Delete macro.
	(MIPS_STACK_ARGSIZE): Delete macro.
	(mips_stack_argsize, mips_eabi_push_dummy_call): Update.
	(mips_n32n64_push_dummy_call, mips_o32_push_dummy_call): Update.
	(mips_o64_push_dummy_call, mips_o32_return_value): Update.
	(mips_dump_tdep): Update.
	(MIPS_SAVED_REGSIZE): Delete macro.
	(MIPS_DEFAULT_SAVED_REGSIZE): Delete macro.
	(mips_saved_regsize, mips_eabi_use_struct_convention): Update.
	(mips_eabi_reg_struct_has_addr, mips_find_saved_regs): Update.
	(mips_frame_saved_pc, mips16_heuristic_proc_desc): Update.
	(mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call): Update.
	(mips_o32_push_dummy_call, mips_o64_push_dummy_call): Update.
	(mips_pop_frame, return_value_location): Update.
	(mips_n32n64_return_value, mips_dump_tdep): Update.

	* mips-tdep.c (mips_gdbarch_init): Clean up code selecting the
	MIPS ABI.

	* mips-tdep.c: Update copyright.
	(mips_gdbarch_init): Merge two code blocks handling the register
	name and number layout.

2004-01-02  Pawel Ostrowski  <pasza@zodiac.mimuw.edu.pl>

	* tracepoint.c (validate_actionline): Fix segv at EOF

2004-01-07  Michael Chastain  <mec.gnu@mindspring.com>

	* hpread.c (hpread_read_struct_type): Call SET_FIELD_PHYSNAME
	properly for static fields.

2004-01-06  Jeff Johnston  <jjohnstn@redhat.com>
	    Jason Molenda  <jmolenda@apple.com>

	* disasm.c: Update copyright to include 2004.
	(do_mixed_source_and_assembly): For uiout asm list
	and tuple cleanups, initialize to null_cleanup instead of
	NULL and do so prior to loop.  Only reset when we close off
	the tuple/list.  Move check for whether to close off the
	asm tuple/list to after dump_insns call where it will be run
	on each loop iteration.

2004-01-05  Andrew Cagney  <cagney@redhat.com>

	* ser-unix.c (ser_unix_async): Fix tipo, "NOTHING_SECHEDULED"
	should be a switch case and not a label.
	* mips-tdep.c (mips32_next_pc): Delete unused labels
	"greater_equal_branch" and "less_zero_branch".
	* jv-valprint.c (java_print_value_fields): Delete unused label
	"flush_it".

	* target.c (unpush_target): Only close a target that is in the
	target stack.

2004-01-05  Mark Kettenis  <kettenis@gnu.org>

	* sparc-tdep.c (sparc_extract_struct_value_address): Get the
	address from [sp + 64] instead of %o2.

	* frame.c (get_prev_frame): Don't try to unwind the PC.  This
	fixes PR backtrace/1476.

2004-01-05  Andrew Cagney  <cagney@redhat.com>

	* libunwind-frame.h (struct frame_id): Add opaque declaration,
	move to start of file.
	* i386-tdep.h (struct regcache): Add opaque declaration.
	* config/ia64/nm-linux.h (struct target_ops): Add opaque
	declaration.
	* ia64-tdep.c (ia64_find_proc_info_x): Do not use __FUNCTION__.
	(ia64_gdbarch_init): Use "GNU/Linux" in comment.
	* win32-nat.c (fake_create_process): Use ISO C style definition.
	* stabsread.c (define_symbol): Delete #ifndef
	DEPRECATED_USE_REGISTER_NOT_ARG wrapper around
	stabs_argument_has_addr call, macro never defined.

2004-01-04  Michael Chastain  <mec.gnu@mindspring.com>

	* op50-rom.c: Delete.
	* w89k-rom.c: Delete.
	* Makefile.in: Remove references.

2004-01-04  Mark Kettenis  <kettenis@gnu.org>

	* x86-64-tdep.c: Update copyright year.
	(struct amd64_register_info): Rename from x86_64_register_info.
	(amd64_register_info): Rename from x86_64_register_info.
	(AMD64_NUM_REGS): Rename from X86_64_NUM_REGS.
	(amd64_register_name): Rename from x86_64_register_name.
	(amd64_register_type): Rename from x86_64_register_type.
	(amd64_dwarf_regmap): Rename from x86_64_dwarf_regmap.
	(amd64_dwarf_regmap_len): Rename from x86_64_dwarf_regmap_len.
	(amd64_dwarf_reg_to_regnum): Rename from
	x86_64_dwarf_reg_to_regnum.
	(amd64_convert_register_p): Rename from x86_64_convert_register_p.
	(amd64_push_dummy_call): Rename from x86_64_push_dummy_call.
	(AMD64_NUM_SAVED_REGS): Rename from X86_64_NUM_SAVED_REGS.
	(struct amd64_frame_cache): Renamed from x86_64_frame_cache.
	(amd64_alloc_frame_cache): Renamed from x86_64_alloc_frame_cache.
	(amd64_analyze_prologue): Rename from x86_64_analyze_prologue.
	(amd64_skip_prologue): Rename from x86_64_skip_prologue.
	(amd64_frame_cache): Rename from x86_64_frame_cache.
	(amd64_frame_this_id): Rename from x86_64_frame_this_id.
	(amd64_frame_prev_register): Rename from
	x86_64_frame_prev_register.
	(amd64_frame_unwind): Rename from x86_64_frame_unwind.
	(amd64_frame_sniffer): Rename from x86_64_frame_sniffer.
	(amd64_sigtramp_frame_cache): Rename from
	x86_64_sigtramp_frame_cache.
	(amd64_sigtramp_frame_prev_register): Rename from
	x86_64_sigtramp_frame_prev_register.
	(amd64_sigtramp_frame_unwind): Rename from
	x86_64_sigtramp_frame_unwind.
	(amd64_sigtramp_frame_sniffer): Rename from
	x86_64_sigtramp_frame_sniffer.
	(amd64_frame_base_address): Rename from x86_64_frame_base_address.
	(amd64_frame_base): Rename from x86_64_frame_base.
	(amd64_unwind_dummy_id): Rename from x86_64_unwind_dummy_id.
	(amd64_frame_align): Rename from x86_64_frame_align.
	(amd64_supply_fpregset): Rename from x86_64_supply_fpregset.
	(amd64_regset_from_core_section): Rename from
	x86_64_regset_from_core_section.
	(x86_64_init_abi): Update comments.

2004-01-04  Nick Roberts  <nick@nick.uklinux.net>

	* MAINTAINERS (write after approval): Add myself.

2004-01-04  Mark Kettenis  <kettenis@gnu.org>

	* sparc64-tdep.c (sparc64_store_arguments): Fix handling of
	`float' arguments.

2004-01-04  Mark Kettenis  <kettenis@gnu.org>

	* sparc64-tdep.c (sparc64_store_floating_fields): Update comment
	such that it mentions a specific version of GCC that exhibits this
	bug.

2004-01-03  Mark Kettenis  <kettenis@gnu.org>

	* sparc64-tdep.c (sparc64_store_floating_fields): If TYPE is a
	structure that has a single `float' member, store it in %f1 in
	addition to %f0.

	* sparc-sol2-nat.c: Add missing '\'.

	* sparc-tdep.c (sparc32_return_value): New function.
	 (sparc32_use_struct_convention, sparc32_return_value_on_stack):
	Remove functions.
	(sparc32_gdbarch_init): Set return_value, don't set
	extract_return_value, store_return_value, use_struct_convention
	and return_value_on_stack.

	* sparc-sol2-nat.c: Add missing ')'.

2004-01-03  J. Brobecker  <brobecker@gnat.com>

	* infrun.c (handle_step_into_function): New function.
	(handle_inferior_event): Extract out some code into the new
	function above.

2004-01-03  J. Brobecker  <brobecker@gnat.com>

	* infrun.c (handle_inferior_event): Move the declaration of
	real_stop_pc inside the if blocks where it is used.

2004-01-03  Mark Kettenis  <kettenis@gnu.org>

	* sparc64-tdep.c (sparc64_16_byte_align_p)
	(sparc64_store_floating_fields, sparc64_store_floating_fields):
	Use check_typedef to get subtypes of structures and unions.
	(sparc64_store_return_value): Fix calculation of the appropriate
	offset into VALBUF when storing a structure or union.
	(sparc64_return_value): New function.
	(sparc64_use_struct_convention): Remove function.
	(sparc64_init_abi): Set return_value, don't set
	extract_return_value, store_return_value and
	use_struct_convention.

2004-01-03  Eli Zaretskii  <eliz@elta.co.il>

	* config/djgpp/fnchange.lst: Add lines for COPYING.LIBGLOSS,
	bfd/doc/ChangeLog-9103, bfd/elf32-m68hc1x.c,
	gdb/config/alpha/xm-alphaosf.h,
	gdb/config/powerpc/tm-ppcle-eabi.h,
	gdb/config/rs6000/tm-rs6000-aix4.h, gdb/gdbtk/ChangeLog-2001,
	gdb/gdbtk/ChangeLog-2002, gdb/gdbtk/ChangeLog-2003,
	gdb/gdbtk/plugins/intel-pentium/intel-pentium.tcl.in,
	gdb/gdbtk/plugins/rhabout/rhabout.tcl.in, gdb/i386-linux-nat.c,
	gdb/ia64-aix-nat.c, gdb/ia64-aix-tdep.c, gdb/ia64-linux-nat.c,
	gdb/ia64-linux-nat.c, gdb/ppc-linux-tdep.c, gdb/ppc-linux-nat.c,
	gdb/sparc64nbsd-nat.c, gdb/sparc64nbsd-tdep.c,
	gdb/sparc64-linux-nat.c, gdb/sparc64-linux-tdep.c,
	gdb/sparc64-nat.c, gdb/sparc64-tdep.c, gdb/sparc64-sol2-tdep.c,
	gdb/sparc-sol2-nat.c, gdb/sparc-sol2-tdep.c,
	gdb/testsuite/gdb.gdbtk/, gdb/testsuite/gdb.mi/mi-var-child.exp,
	nclude/ChangeLog-9103, include/coff/ChangeLog-9103,
	include/elf/ChangeLog-9103, include/opcode/ChangeLog-9103,
	opcodes/ChangeLog-0001, opcodes/ChangeLog-0203,
	opcodes/openrisc-dis.c, opcodes/openrisc-desc.h,
	sim/frv/profile-fr550.c, sim/frv/profile-fr550.h,
	sim/sh64/sem-compact-switch.c, sim/sh64/sem-media-switch.c,
	sim/testsuite/sim/sh64/compact/ldsl-mach.cgs,
	sim/testsuite/sim/sh64/compact/ldsl-macl.cgs,
	sim/testsuite/sim/sh64/compact/stsl-mach.cgs, and
	sim/testsuite/sim/sh64/compact/stsl-macl.cgs.
	Remove lines for .cvsignore files.

2004-01-03  J. Brobecker  <brobecker@gnat.com>

	* infrun.c: Back out the previous change.

2004-01-03  Mark Kettenis  <kettenis@gnu.org>

	* NEWS: Mention revised SPARC target.  Add sparc-*-lynxos* and
	sparc-*-sunos4* to the list of REMOVED configurations.

	* configure.tgt: Add back sparc-*-vxworks*.
	* remote-vxsparc.c: Remove all includes except for "defs.h",
	"regcache.h", "vx-share/ptrace.h" and "vx-share/regPacket.h".
	Include "sparc-tdep.h".
	(SPARC_R_G1): New define.
	(vxsparc_gregset): New variable.
	(ext_format_sparc): Remove extern declaration.
	(vx_read_register): Rewrite to use sparc32_supply_gregset and
	sparc32_supply_fpregset.
	(vx_write_register): Rewrite to use sparc32_collect_gregset,
	sparc_collect_rwindow and sparc32_collect_fpregset.
	* config/sparc/tm-vxworks.h: New file, based on recently removed
	tm-vxsparc.h.
	* config/sparc/vxworks.mt: New file, based on recently removed
	vxworks.mt.

2004-01-03  J. Brobecker  <brobecker@gnat.com>

	* infrun.c (handle_step_into_function): New function.
	(handle_inferior_event): Extract out some code into the new
	function above.

2004-01-02  Mark Kettenis  <kettenis@gnu.org>

	* Makefile.in (ALLDEPFILES): Remove sparc-linux-nat.c and
	sparcl-tdep.c.  Add sparc-linux-tdep.c, sparc-sol2-nat.c,
	sparc-sol2-tdep.c, sparc-sol2-nat.c, sparc-sol2-tdep.c,
	sparc64-linux-nat.c, sparc64-linux-tdep.c, sparc64-nat.c,
	sparc64-sol2-tdep.c, sparc64-tdep.c, sparc64fbsd-nat.c,
	sparc64fbsd-tdep.c, sparcnbsd-nat.c, sparcnbsd-tdep.c.
	(sparc_nat_h): New variable.
	(sparcbsd_nat_h, sparcnbsd_tdep_h): Remove variables.
	(tm-sun4os4.h): Remove dependency.
	(sparcbsd-nat.o, sparc-linux-nat.o): Remove dependencies.
	(sparc64fbsd-nat.o, sparc64fbsd-tdep.o, sparc64nbsd-nat.o,
	sparc64-tdep.o, sparc-nat.o, sparcnbsd-nat.o, sparcnbsd-tdep.o,
	sparc-tdep.o): Update dependencies.
	(sparc-linux-tdep.o, sparc-sol2-nat.o, sparc-sol2-tdep.o,
	sparc64-linux-nat.o, sparc64-linux-tdep.o, sparc64-nat.o,
	sparc64-sol2-tdep.o, sparc64-tdep.o, sparc64nbsd-tdep.o): New
	dependencies.
	* configure.host: Remove existing sparc-*-lynxos*,
	sparc-*-solaris*, sparc-*-sunos4*, sparc-*-sunos5*, sparc-*-*,
	ultrasparc-*-freebsd, sparcv9-*-freebsd, sparc64-*-linux*,
	sparcv9-*-* and sparc64-*-* triplets.  Add new sparc64-*-linux*,
	sparc-*-solaris2*, sparcv9-*-solaris2* and sparc64-*-solaris2*
	triplets.
	* configure.tgt: Remove exitsing sparc-*-aout*, sparc-*-coff*,
	sparc-*-elf*, sparc*-lynxos*, sparc-*-solars2*, sparc-*-sunos4*,
	sparc-*-sunos5*, sparc-*-vxworks*, sparc64-*linux*, sparc64-*-*,
	sparcv9-*-* and commented out sparc64-*-solars2* triplets.  Add
	new sparc-*-solaris2.[0-6], sparc-*-solaris2.[0-6].*,
	sparc64-*-linux, sparc-*-solaris2*, sparcv9-*-solaris*,
	sparc64-*-solaris2* and sparc64-*-* triplets.
	* sparc64-tdep.c: Update copyright year.  Include "inferior.h",
	"symtab.h" and "objfiles.h".
	(BIAS): Remove define.
	(X_OP, X_RD, X_A, X_COND, X_OP2, X_IMM22, X_OP3, X_I, X_DISP22)
	(X_DISP19): Remove macros.
	(sparc_fetch_instruction): Remove function.
	(struct gdbarch_tdep): Remove definition.
	(SPARC64_NUM_REGS, SPARC64_NUM_PSEUDO_REGS): Use ARRAY_SIZE.
	(sparc_breakpoint_from_pc): Remove function.
	(struct sparc64_frame_cache): Remove definition.
	(sparc64_alloc_frame_cache, sparc64_analyze_prologue,
	sparc64_unwind_pc): Remove functions.
	(sparc64_skip_prologue): Use `struct sparc_frame_cache' instead of
	`struct sparc64_frame_cache.  Call sparc_analyze_prologue instead
	of sparc64_analyze_prologue.  Mark constant as ULL instead of UL.
	(sparc64_frame_cache): Change return type to `struct
	sparc_frame_cache *'.  Simply call sparc_frame_cache.
	(sparc64_frame_this_id, sparc64_frame_prev_register,
	sparc64_frame_base_address): Use `struct sparc_frame_cache'
	instead of `struct sparc64_frame_cache.
	(sparc_unwind_dummy_id, sparc_extract_struct_value_address,
	sparc_analyze_control_transfer, sparc_software_single_step,
	sparc64_gdbarch_init, sparc_supply_rwindow, sparc_fill_rwindow,
	_initialize_sparc64_tdep): Remove functions.
	(TSTATE_CWP, TSTATE_ICC, TSTATE_XCC): New macros.
	(PSR_S, PSR_ICC, PSR_VERS, PSR_IMPL, PSR_V8PLUS, PSR_XCC): New
	macros.
	(sparc64_supply_gregset, sparc64_collect_gregset,
	sparc64_supply_fpregset, sparc64_collect_fpregset): New functions.
	(sparc64_init_abi): New function.
	* sparc64-tdep.h: Update copyright year.  Fix typo in multiple
	inclusion guard.  Include "sparc-tdep.h".
	(BIAS): Define.
	(r_tstate_offset, r_fprs_offset): New defines.
	(enum sparc_regnum): Remove defenition.
	(enum sparc64_regnum): Reformat.
	(sparc_supply_rwindow, sparc_fill_rwindow): Remove prototypes.
	(sparc64_init_abi, sparc64_supply_gregset,
	sparc64_collect_gregset, sparc64_supply_fpregset,
	sparc64_collect_fpregset): New prototypes.
	(sparc64_sol2_gregset, sparc64nbsd_gregset, sparc64fbsd_gregset):
	Add extern declarations.
	(sparc64_sol2_init_abi): New prototype.
	(sparc64fbsd_supply_reg, sparc64fbsd_fill_reg)
	(sparc64fbsd_supply_fpreg, sparc64fbsd_fill_fpreg): Remove
	prototypes.
	* sparc64fbsd-nat.c: Include "sparc-nat.h", don't include
	"sparnbsd-nat.h".
	(sparc64fbsd_reg_supplies_p, sparc64fbsd_fpreg_supplies_p): Remove
	functions.
	(_initialize_sparc64fbsd_nat): Remove initialization of
	sparcbsd_supply_reg, sparcbsd_fill_reg, sparcbsd_supply_fpreg,
	sparcbsd_fill_fpreg, sparcbsd_reg_supplies_p,
	sparcbsd_fpreg_supplies_p.  Initialize sparc_gregset.
	* sparc64fbsd-tdep.c: Update copyright year.  Include "frame.h",
	"frame-unwind.h", "trad-frame.h" and "gdb_assert.h".
	(sparc64fbsd_r_global_offset, sparc64fbsd_r_out_offset)
	(sparc64fbsd_r_fprs_offset, sparc64fbsd_r_tnpc_offset)
	(sparc64fbsd_r_tpc_offset, sparc64fbsd_r_tstate_offset)
	(sparc64fbsd_r_y_offset): Remove variables.
	(sparc64fbsd_sizeof_struct_reg, sparc64fbsd_sizeof_struct_fpreg):
	Make static and const.
	(sparc64fbsd_supply_reg, sparc64fbsd_fill_reg)
	(sparc64fbsd_supply_fpreg, sparc64fbsd_fill_fpreg): Remove
	functions.
	(sparc64fbsd_gregset): New variable.
	(fetch_core_registers): Replace calls to sparc64fbsd_supply_reg
	and sparc64fbsd_supply_fpreg with calls to sparc64_supply_gregset
	and sparc64_supply_fpregset.
	(sparc64fbsd_pc_in_sigtramp, sparc64fbsd_sigtramp_frame_cache)
	(sparc64fbsd_sigtramp_frame_this_id)
	(sparc64fbsd_sigtramp_frame_prev_register): New functions.
	(sparc64fbsd_sigtramp_frame_unwind): New variable.
	(sparc64fbsd_sigtramp_frame_sniffer): New function.
	(sparc64fbsd_init_abi): Set pc_in_sigtramp, append
	sparc64fbsd_sigtramp_frame_sniffer.  Call sparc64_init_abi.
	* sparcnbsd-tdep.c: Update copyright year.  Include
	"floatformat.h", "frame.h", "frame-unwind.h", "symtab.h",
	"trad-frame.h" and "gdb_assert.h", don't include "target.h",
	"value.h" and "sparcnbsd-tdep.h".
	(REG32_OFFSET_PSR, REG32_OFFSET_PC, REG32_OFFSET_NPC)
	(REG32_OFFSET_Y, REG32_OFFSET_GLOBAL, REG32_OFFSET_OUT)
	(REG64_OFFSET_TSTATE, REG64_OFFSET_PC, REG64_OFFSET_NPC)
	(REG64_OFFSET_Y, REG64_OFFSET_GLOBAL, REG64_OFFSET_OUT): Remove
	defines.
	(sparcnbsd_gregset): New variable.
	(sparcnbsd_supply_reg32, sparcnbsd_supply_reg64)
	(sparcnbsd_fill_reg32, sparcnbsd_fill_reg64)
	(sparcnbsd_supply_fpreg32, sparcnbsd_supply_fpreg64)
	(sparcnbsd_fill_reg32, sparcnbsd_fill_reg64): Remove functions.
	(sparc32nbsd_sigtramp_start, sparc32nbsd_sigtramp_end): New
	variables.
	(sparc32nbsd_pc_in_sigtramp, sparc32nbsd_sigcontext_frame_cache)
	(sparc32nbsd_sigcontext_frame_this_id)
	(sparc32nbsd_sigcontext_frame_prev_register): New functions.
	(sparc32nbsd_sigcontext_frame_unwind): New variable.
	(sparc32nbsd_sigtramp_frame_sniffer): New function.
	(sparcnbsd_get_longjmp_target_32,
	sparcnbsd_get_longjmp_target_64): Remove functions.
	(sparcnbsd_aout_in_solib_call_trampoline): Rewrite.
	(sparcnbsd_init_abi_common, sparcnbsd_init_aout,
	sparcnbsd_init_elf): Remove.
	(sparcnbsd_init_abi, sparcnbsd_aout_init_abi)
	(sparcnbsd_elf_init_abi): New functions.
	(_initialize_sparcnbsd_tdep): New prototype.
	(_initialize_sparnbsd_tdep): Update.
	* config/sparc/fbsd.mh (NATDEPFILES): Remove sparcbsd-nat.o and
	corelow.o.  Add sparc64-nat.o and sparc-nat.o.
	* config/sparc/fbsd.mt (TDEPFILES): Add sparc-tdep.o and corelow.o.
	* config/sparc/linux.mh: Update comment.
	(XM_FILE, HOST_IPC): Remove variables.
	(NATDEPFILES): Add sparc-sol2-nat.o and core-regset.o.  Remove
	sparc-linux-nat.o.
	* config/sparc/linux.mt: Update comment.
	(TDEPFILES): Add sparc-sol2-tdep.o and sparc-linux-tdep.o.
	* config/sparc/nbsd.mt: Reformat.
	* config/sparc/nbsd64.mh: Update comment.
	(NATDEPFILES): Add sparc-nat.o.
	* config/sparc/nbsd64.mt: Update comment.
	(TDEPFILES): Add sparc64-tdep.o and sparc64nbsd-tdep.o.
	(TM_FILE): Set to tm-nbsd.h.
	* config/sparc/nbsdelf.mh: Update comment.
	(NATDEPFILES): Add sparc-nat.o.
	(XM_FILE): Delete.
	* config/sparc/nbsdaout.mh: Update comment.
	(NATDEPFILES): Add sparc-nat.o
	(XM_FILE): Delete.
	* config/sparc/nm-linux.h: Update copyright year.  Don't include
	"config/nm-svr4.h" and "solib.h".  Add protection against multiple
	inclusion.
	(KERNEL_U_SIZE): Remove define.
	(kernel_u_size): Remove prototype.
	(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define.
	* config/sparc/nm-nbsd.h: Update copyright.  Don't include
	"regcache.h".
	(CHILD_PREPARE_TO_STORE): Remove define.
	* config/sparc/nm-nbsdaout.h: Tweak some comments.
	* sparc-nat.c, sparc-tdep.c, sparc-tdep.h, sparc64nbsd-nat.c,
	sparcnbsd-nat.c: Rewrite files.
	* config/sparc/tm-linux.h, config/sparc/tm-nbsd.h: Rewrite files.
	* sparc-linux-nat.c, sparcbsd-nat.c, sparcbsd-nat.h,
	sparcnbsd-tdep.h: Remove files.
	* config/sparc/nm-sparclynx.h, config/sparc/nm-sun4os4.h,
	config/sparc/nm-sun4sol2.h, config/sparc/sp64.mt,
	config/sparc/sp64linux.mt, config/sparc/sp64sol2.mt,
	config/sparc/sparc-em.mt, config/sparc/sparclynx.mh,
	config/sparc/sparclynx.mt, config/sparc/sun4os4.mh,
	config/sparc/sun4os4.mt, config/sparc/sun4sol2.mh,
	config/sparc/sun4sol2.mt, config/sparc/tm-sp64.h,
	config/sparc/tm-sp64linux.h, config/sparc/tm-sparc.h,
	config/sparc/tm-sparclynx.h, config/sparc/tm-spc-em.h,
	config/sparc/tm-sun4os4.h, config/sparc/tm-sun4sol2.h,
	config/sparc/tm-vxsparc.h, config/sparc/vxsparc.mt,
	config/sparc/xm-linux.h, config/sparc/xm-sun4sol2.h: Remove files.
	* sparc-linux-tdep.c, sparc-nat.h, sparc-sol2-nat.c,
	sparc-sol2-tdep.c, sparc64-linux-nat.c, sparc64-linux-t dep.c,
	sparc64-nat.c, sparc64-sol2-tdep.c, sparc64nbsd-tdep.c: New files.
	* config/sparc/linux64.mh, config/sparc/linux64.mt,
	config/sparc/nm-sol2.h, config/sparc/sol2-64.mt,
	config/sparc/sol2.mh, config/sparc/sol2.mt, config/sparc/sparc.mt,
	config/sparc/sparc64.mt, config/sparc/tm-sol2.h: New files.

2004-01-02  Andrew Cagney  <cagney@redhat.com>

	From 2003-12-18 Kazuhiro Inaoka:
        * configure.host: Add m32r-linux target.

2004-01-02  Michael Chastain  <mec.gnu@mindspring.com>

	* top.c (print_gdb_version): Update year to 2004.

2004-01-02  Mark Mitchell  <mark@codesourcery.com>

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

2004-01-02  Daniel Jacobowitz  <drow@mvista.com>

	From Bernardo Innocenti <bernie@develer.com>:
	* configure.tgt: Add uClinux target.

2004-01-02  Andrew Cagney  <cagney@redhat.com>

	* utils.c (do_my_cleanups): Make static, add forward declaration.
	* defs.h (do_my_cleanups): Delete declaration.

2004-01-02  Eli Zaretskii  <eliz@elta.co.il>

	* config/djgpp/fnchange.lst: Add lines for gdb/ChangeLog-2003 and
	bfd/ChangeLog-0203.

2004-01-02  Mark Kettenis  <kettenis@gnu.org>

	* configure.in: Check for <machine/reg.h>.  Check for `struct reg'
	in <machine/reg.h>.
	* configure, config.in: Regenerate.

For older changes see ChangeLog-2003, mi/ChangeLog-1999-2003, and
tui/ChangeLog-1998-2003.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
