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

 	* remote.c (fetch_register_using_p): Recognize a register value
	starting with 'x' as indicating an unfetchable register.

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

	* config/mips/obsd64.mh (NATDEPFILES): Unwrap line.

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

	* inftarg.c (child_xfer_partial): Remove code that handles
	TARGET_OBJ_WCOOKIE.

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

	* inftarg.c (child_create_inferior) [HPUXHPPA]: Remove code.

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

	* target.h (TARGET_DISABLE_HW_WATCHPOINTS)
	(TARGET_ENABLE_HW_WATCHPOINTS): Remove macros.
	* infrun.c (struct execution_control_state): Remove
	enable_hw_watchpoints_after_wait member.
	(number_of_threads_in_syscalls): Remove variable.
	(init_wait_for_inferior): Don't initialize
	number_of_threads_in_syscalls.
	(init_execution_control_state): Don't initialize
	ECS->enable_hw_watchpoints_after_wait.
	(handle_inferior_event): Never invoke TARGET_ENABLE_HW_WATCHPOINTS
	or TARGET_DISABLE_HW_WATCHPOINTS.

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

	* i386-nto-tdep.c: Reorder include files.
	(i386nto_svr4_fetch_link_map_offsets): Remove function.
	(init_i386nto_ops, i386nto_init_abi): Use
	svr4_ilp32_fetch_link_map_offsets instead of
	i386nto_svr4_fetch_link_map_offsets.

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

	* hppa-tdep.c (hppa_frame_prev_register_helper): Make 64-bit safe.

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

	* hppa-tdep.c (hppa64_return_value): Fix previous commit.

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

	* hppa-tdep.c (hppa32_return_value): Move further down.
	(hppa64_return_value): Re-implement.

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

	* remote.c (fetch_register_using_p): Fix formatting.
	
2004-12-21  Paul N. Hilfinger  <hilfingr@otisco.mckusick.com>

	* ada-lang.c (ada_print_subexp): Remove i18n markup from Ada code
	output.
	* ada-typeprint.c (ada_typedef_print): Ditto.
	(print_unchecked_union_type): Ditto.
	(print_record_type): Ditto, and correct output for non-derived
	types that was inadvertently left off during the markup.

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

	* hppa-hpux-tdep.c (hppa64_hpux_search_dummy_call_sequence): Check
	whether the name returned by find_pc_partial_function is a null
	pointer, not whether it is an empty string.

	* hppa-tdep.h (hppa_regnum): Add HPPA_DP_REGNUM, HPPA_RET0_REGNUM,
	HPPA_RET1_REGNUM and HPPA64_FP4_REGNUM.
	* hppa-tdep.c (hppa64_integral_or_pointer_p)
	(hppa64_floating_p) New functions.
	(hppa64_push_dummy_call): Re-implement.
	(hppa32_register_type): Rename argument reg_nr to regnum.
	(hppa64_register_type): Likewise.  Use HPPA64_FP4_REGNUM instead
	of HPPA_FP4_REGNUM.
	(hppa32_cannot_store_register): Renamed from
	hppa_cannot_store_register.
	(hppa64_cannot_store_register): New function.
	(hppa_gdbarch_init): Set cannot_store_register and
	cannot_fetch_register to hppa32_cannot_store_register or
	hppa64_cannot_store_register when appropriate.

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

	* hppah-nat.c: Remove file.
	* infttrace.h: Remove file.
	* infttrace.c: Remove file.
	* Makefile.in (ALLDEPFILES): Remove hppah-nat.c
	(infttrace_h): Remove variable.
	(hppah-nat.o, infttrace.o): Remove dependencies.
	* configure.host (hppa*64*-*-hpux11*): Remove.
	* config/pa/hpux11w.mh: Remove file.
	* config/pa/nm-hppah.h: Remove file.
	* config/pa/nm-hppah11.h: Remove file.

	* config/djgpp/fnchange.lst: Resolve name clash between
	../bfd/elf32-arm.c and ../bfd/elf32-arc.c, i386-sol2-nat.c and
	i386-sol2-tdep.c, mips64obsd-nat.c and mips64obsd-tdep.c,
	testsuite/gdb.base/bitfields.c and
	testsuite/gdb.base/bitfields2.c, testsuite/gdb.base/bitfields.exp
	and testsuite/gdb.base/bitfields2.exp.  Remove entry for
	config/m88k/xm-delta88v4.h.

	* solib-pa64.c: Only include <dlfcn.h>, <elf.h> and <elf_hp.h> if
	PA_SOM_ONLY isn't defined.

	* somread.c: Include "solib-som.h".
	(som_symfile_init, som_new_init, som_symfile_read,
	som_symfile_finish, som_symtab_read, som_symfile_offsets): Remove
	redudant prototypes.
	* Makefile.in (somread.o): Update dependencies.

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

	* remote.c (fetch_register_using_p): Indentation cleanup.

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

	* hppa-hpux-tdep.c (setup_d_pid_in_inferior): Make static.
	(find_stub_with_shl_get): Make static.

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

	* hppa-hpux-tdep.c (IS_32BIT_TARGET): New.
	(in_opd_section): New.
	(hppa32_hpux_find_global_pointer): Rename from 
	hppa_hpux_som_find_global_pointer.
	(hppa64_hpux_find_global_pointer): New.
	(ldsid_pattern): New.
	(hppa_hpux_search_pattern): New.
	(hppa32_hpux_search_dummy_call_sequence): New.
	(hppa64_hpux_search_dummy_call_sequence): New.
	(hppa_hpux_find_import_stub_for_addr): New.
	(hppa_hpux_sr_for_addr): New.
	(hppa_hpux_find_dummy_bpaddr): New.
	(hppa_hpux_init_abi): Use IS_32BIT_TARGET predicate.
	(hppa_hpux_som_init_abi): Set find_global_pointer method to
	hppa32_hpux_find_global_pointer instead of
	hppa_hpux_som_find_global_pointer.
	(hppa_hpux_elf_init_abi): Set find_global_pointer method.
	* hppa-tdep.c (hppa_init_objfile_priv_data): New.
	(read_unwind_info): Use function to initialize objfile-private data.
	(hppa32_push_dummy_call): Don't automatically set the RP if there is
	a push_dummy_code method.
	(hppa64_push_dummy_call): Retrieve and set the global pointer.
	Don't automatically set the RP if there is a push_dummy_code method.
	* hppa-tdep.h (hppa_objfile_private): Add dummy_call_sequence_reg and
	dummy_call_sequence_addr members.
	(hppa_init_objfile_priv_data): New prototype.

2004-12-17  Joel Brobecker  <brobecker@gnat.com>

	* hppa-tdep.c (hppa_lookup_stub_minimal_symbol): New function.
	* hppa-tdep.h (hppa_lookup_stub_minimal_symbol): Add declaration.
	* solib-som.c (som_solib_create_inferior_hook): Replace stub
	msymbol search by call to hppa_lookup_stub_minimal_symbol. This
	extends the search to all objfiles, not just shared libraries.
	Remove unused variable.

2004-12-16  Michael Snyder  <msnyder@redhat.com>

	* MAINTAINERS: Add myself as maintainer for mn10300.
	* NEWS: Mention mn10300.

2004-12-15  Kevin Buettner  <kevinb@redhat.com>

	* xstormy16-tdep.c (xstormy16_skip_prologue): Clear/initialize the
	frame cache.

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

	* hppa-tdep.c (hppa_in_function_epilogue_p): New function.
	(hppa_gdbarch_init): Set in_epilogue_p method.

2004-12-14  Corinna Vinschen  <vinschen@redhat.com>

	* sh-tdep.c (sh_extract_return_value_nofpu): Rename from
	sh_default_extract_return_value.
	(sh_extract_return_value_fpu): Rename from
	sh3e_sh4_extract_return_value.
	(sh_store_return_value_nofpu): Rename from
	sh_default_store_return_value.
	(sh_store_return_value_fpu): Rename from sh3e_sh4_store_return_value.
	(sh_return_value_nofpu): Accomodate above changes.
	(sh_return_value_fpu): Ditto.

2004-12-13  Jerome Guitton  <guitton@gnat.com>

	* stabsread.c (read_huge_number): Add support for reading octal
	signed number in twos complement, based on the size of this
	number.
	(read_range_type): Add support for reading octal signed bounds
	in twos complements, based on the size of the type.
	(read_type_number, read_cpp_abbrev, read_member_functions,
	read_cpp_abbrev, read_one_struct_field, read_baseclasses,
	read_struct_type, read_array_type, read_enum_type,
	read_sun_builtin_type, read_sun_floating_type): Update calls to
	read_huge_number.
	(read_type): Update call to read_range_type.

2004-12-13  Randolph Chung  <tausq@debian.org>

	* hppa-hpux-tdep.c (internalize_hp_cxx_exception_support): Call
	solib_get_solib_by_pc method through target vector.
	(hppa_hpux_som_find_global_pointer): Call solib_get_got_by_pc
	method through target vector.

2004-12-13  Joel Brobecker  <brobecker@gnat.com>

	* alpha-osf1-tdep.c (alpha_osf1_sigcontext_addr): Change
	parameter name to make it clear that we already have a next
	frame.  Return the sigcontext from that next frame instead
	of the frame following it.

2004-12-13  Randolph Chung  <tausq@debian.org>

	* Makefile.in (pa64solib_h, somsolib_h): Delete.
	(solib_pa64_h, solib_som_h): New.
	(HFILES_NO_SRCDIR, ALLDEPFILES): Replace somsolib.h with solib-som.h.
	(hppa-hpux-tdep.o, hpread.o): Update dependencies.
	(pa64solib.o, somsolib.o): Delete.
	(solib-pa64.o, solib-som.o): New.
	* hppa-hpux-tdep.c: Include new solib interfaces.
	(hppa_hpux_som_init_abi): Attach to SOM solib interface.
	(hppa_hpux_elf_init_abi): Attach to PA64 ELF solib interface.
	* hppa-tdep.c (internalize_unwinds): If solib_get_text_base method
	is available, use it to determine the base of unwind records.
	* hppa-tdep.h (gdbarch_tdep): Add new solib methods.
	* hpread.c: Replace somsolib.h with solib-som.h.
	(hpread_process_one_debug_symbol): Use target vector to get thread 
	start address.
	* config/pa/hppa64.mt (TDEPFILES): Use new solib interface.
	* config/pa/hppahpux.mt (TDEPFILES): Likewise.
	* config/pa/hpux.mh (NATDEPFILES): Delete references to target objects.
	* config/pa/tm-hppah.h: Use new solib interface.

2004-12-13  Randolph Chung  <tausq@debian.org>

	* tramp-frame.c (tramp_frame_sniffer): Allow frames with names or 
	sections to be trampolines too.

2004-12-13  Ben Elliston  <bje@au.ibm.com>

	* f-exp.y (typename): Remove unused nonterminal.
	(name): Likewise.

2004-12-12  Baurjan Ismagulov  <ibr@ata.cs.hun.edu.tr>

	Committed by Andrew Cagney.
	* abug-rom.c, ada-lang.c, ada-typeprint.c, alpha-tdep.c: i18n
	markup.
	
2004-12-12  Andrew Cagney  <cagney@gnu.org>

	* frame.c (get_prev_frame): When unwinding normal frames, check
	that the PC isn't zero.
	* hppa-tdep.c (hppa_stub_frame_unwind_cache): Delete check for a
	zero PC.

	* MAINTAINERS: Reword description of what "Target Instruction Set
	Architectures" covers.

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

	* hppa-hpux-nat.c (hppa_hpux_child_can_run): Tweak comment.

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

	* hppa-hpux-nat.c (ss_mpsfu_high): Remove define.
	(hppa_hpux_save_state_offset): New function, replacing variable
	with the same name.
	(hppa_cannot_fetch_register, hppa_cannot_store_register): Remove
	functions.
	(hppa_hpux_fetch_register): Don't call hppa_cannot_fetch_register.
	Use new hppa_hpux_save_state_offset function.  Add special
	handling for handling 64-bit "flags" register.
	(hppa_hpux_store_register): Likewise.
	(hppa_hpux_child_can_run): Tweak comment.

	* inf-ttrace.c (inf_ttrace_him): Set TTEVT_BPT_SSTEP if available.
	(inf_ttrace_attach): Likewise.
	(inf_ttrace_resume_callback): New function.
	(inf_ttrace_resume): Don't use TT_PROC_CONTINUE.  Iterate over all
	lwps and call inf_ttrace_resume_callback instead.
	(inf_ttrace_wait): Handle TTEVT_BPT_SSTEP.

	* inf-ttrace.c (_initialize_inf_ttrace): Unconditionially compile.

2004-12-10  Michael Snyder  <msnyder@redhat.com>

	* mn10300-tdep.c: New file.  This is a re-implementation of
	the mn10300 target back-end using the new frame api etc.
	* mn10300-tdep.h: New file.
	* config/mn10300/mn10300.mt: New file (or replace old file).
	* configure.tgt: Add mn10300 target.

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

	* configure.host (hppa*-*-hpux11*): Remove.
	* config/pa/hpux11.mh: Remove file.

	* hppa-hpux-tdep.c (hppa_hpux_sigtramp_frame_unwind_cache): Fix
	typo.

2004-12-10  Kris Warkentin  <kewarken@qnx.com>

	* nto-tdep.h: Include osabi.h.  Prototypes for generic Neutrino
	osabi sniffer, signal handling initializer, 'in_dynsym_resolve_code'
	function and nto_set_target function.
	(struct nto_target_ops): Put comments inline with struct.  Add osabi
	sniffer hook.  Redefine macros to permit testing/assignment.  Remove
	nto_ prefix from members.
	* nto-tdep.c (nto_find_and_open_solib): Allocate all buffers
	dynamically to support arbitrary root paths.  Check for basename of
	lib in search path and then check for absolute.
	(nto_in_dynsym_resolve_code): New function.
	(nto_core_sniffer): New function.
	(regset_core_fns): Register core sniffer.
	(nto_initialize_signals): New function.
	(_initialize_nto_tdep): Move signal initialization code to above to
	avoid initialization race conditions.
	(nto_set_target): New function.
	* nto-procfs.c: Minor formatting/indenting changes.
	(procfs_is_nto_target): New function.
	(procfs_open): Set nto_is_nto_target.
	(_initialize_procfs): Ditto.  Remove notice_signals() call to avoid
	initialization race conditions.
	(procfs_create_inferior): Resume inferior after creation.
	* i386-nto-tdep.c: Declare i386_nto_target.
	(init_i386nto_ops): Initialize i386_nto_target instead of
	current_nto_target.
	(i386nto_init_abi): Initialize signals.  Call nto_set_target.  Set
	TARGET_SO_IN_DYNSYM_RESOLVE_CODE.
	(_initialize_i386nto_tdep): Call init_i386nto_ops.  Register osabi
	sniffer.

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

	* hppa-hpux-tdep.c (child_enable_exception_callback): Use XMALLOC.
	(hppa_hpux_sigtramp_frame_unwind_cache): Use ARRAY_SIZE.
	(hppa_hpux_init_abi): Reformat long line.

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

	* hppa-hpux-tdep.c: Include "regset.h".
	(HPPA_HPUX_SS_WIDEREGS, HPPA_HPUX_SS_FLAGS_OFFSET)
	(HPPA_HPUX_SS_NARROW_OFFSET, HPPA_HPUX_SS_FPBLOCK_OFFSET)
	(HPPA_HPUX_SS_WIDE_OFFSET, HPPA_HPUX_SAVE_STATE_SIZE)
	(HPPA_HPUX_PA89_SAVE_STATE_SIZE): New defines.
	(hppa_hpux_supply_ss_narrow, hppa_hpux_supply_ss_fpblock)
	(hppa_hpux_supply_ss_wide, hppa_hpux_supply_save_state): New
	functions.
	(hppa_hpux_regset): New variable.
	(hppa_hpux_regset_from_core_section): New function.
	(hppa_hpux_init_abi): Set regset_from_core_section.
	(hppa_hpux_core_osabi_sniffer): New function.
	(_initialize_hppa_hpux_tdep): Register
	hppa_hpux_core_osabi_sniffer.
	* Makefile.in (hppa-hpux-tdep.o): Update dependencies.
	* config/pa/hppahpux.mt (TDEPFILES): Add corelow.o.

2004-12-09  Randolph Chung  <tausq@debian.org>

	* solib-pa64.c (pa64_relocate_section_addresses): Properly relocate
	text and data sections.
	(pa64_current_sos): Also include the dld in the list of current shared
	objects.
	(pa64_solib_get_solib_by_pc): Update comments.
	(pa64_solib_get_text_base): New function.
	(pa64_solib_select): Set solib_get_text_base method.

2004-12-08  Daniel Jacobowitz  <dan@debian.org>

	* linux-thread-db.c (BUILD_THREAD): Delete.
	(thread_get_info_callback): Include LWP ID in thread ID.
	(thread_from_lwp, check_event, find_new_threads_callback): Likewise.
	(lwp_from_thread): Use the LWP ID from the thread ID.

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

	* hppa-tdep.c (hppa_frame_prev_register_helper): Zero out the entire
	register for both 32- and 64-bit targets.

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

	* frame.c (get_prev_frame): Don't terminate unwinding at main if we
	are unwinding through a dummy frame.

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

	* hppa-tdep.h (gdbarch_tdep): Add unwind_adjust_stub method.
	* hppa-hpux-tdep.c (hppa_hpux_unwind_adjust_stub): New function.
	(hppa_hpux_init_abi) Set unwind_adjust_stub method.
	* hppa-tdep.c (hppa_frame_cache): Call unwind_adjust_stub method
    	if defined.

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

	* hppa-tdep.c (hppa_stub_Frame_unwind_cache): Stop unwinding if 
	unwinding from a frame with pc == 0.
	(hppa_stub_frame_this_id): Likewise.
	(hppa_stub_frame_prev_register): Only provide real values if the frame
	cache is not NULL.

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

	* solib-som.c: New file.
	* solib-som.h: New file.
	* solib-pa64.c: New file.
	* solib-pa64.h: New file.

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

	* Makefile.in (inf-ttrace.o): Fix typo.

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

	* remote.c (remote_threads_info, remote_current_thread): Use
	strtoul to parse thread ID numbers.

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

	* inf-ttrace.c: Include "gdbthread.h".
	(inf_ttrace_num_lwps): New variable.
	(inf_ttrace_num_lwps_in_syscall): Renamed from
	inf_ttrace_num_threads_in_syscall.
	(inf_ttrace_him): Track TTEVT_LWP_CREATE, TTEVT_LWP_EXIT and
	TTEVT_LWP_TERMINATE events.
	(inf_ttrace_create_inferior): Assert that INF_TTRACE_NUM_LWPS is
	zero.
	(inf_ttrace_mourn_inferior): Set INF_TTRACE_NUM_LWPS to zero.
	(inf_ttrace_attach): Assert that INF_TTRACE_NUM_LWPS is zero.
	Track TTEVT_LWP_CREATE, TTEVT_LWP_EXIT and TTEVT_LWP_TERMINATE
	events.
	(inf_ttrace_wait): Report status as TARGET_WAITKIND_SPURIOUS by
	default.  Handle TTEVT_LWP_CREATE, TTEVT_LWP_EXIT and
	TTEVT_LWP_TERMINATE events.
	(inf_ttrace_thread_alive, inf_ttrace_pid_to_str): New functions.
	(inf_ttrace_target): Set to_thread_alive and to_pid_to_str.
	* Makefile.in (inf-ttrace.o): Update dependencies.

	* hppa-tdep.h (hppa_read_pc, hppa_write_pc, hppa_unwind_pc): New
	prototypes.
	* hppa-tdep.c (hppa_read_pc): Rename from hppa_target_read_pc.
	Make global.  Remove HP-UX specific code.  Use
	frame_unwind_register_unsigned instead of
	frame_unwind_register_signed.
	(hppa_write_pc): Rename from hppa_target_write_pc.  Make global.
	Remove HP-UX specific code.
	(hppa_unwind_pc): Make global.  Remove HP-UX specific code.
	(hppa_frame_prev_register_helper): Set "flags" register to zero
	for all unwound frames.
	(hppa_gdbarch_init): Adjust.
	* hppa-hpux-tdep.c (HPPA_HPUX_SS_INSYSCALL): New define.
	(hppa_hpux_read_pc, hppa_hpux_write_pc)
	(hppa_hpux_unwind_pc): New functions.
	(hppa_hpux_init_abi): Set read_pc, write_pc and unwind_pc.

2004-12-07  Andreas Schwab  <schwab@suse.de>

	* main.c (long_options): Add entry for "-l".
	(print_gdb_help): Add line for -l option.
	* NEWS: Mention it.

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

	* hppah-nat.c (store_inferior_registers): Rewrite logic to not use
	DEPRECATED_REGISTER_BYTE.

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

	* hppa-tdep.c (unwind_command): Print the stub type for stub unwind
	records.

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

	* somsolib.c [PA_SOM_ONLY] (no_shared_libraries): New function.
	* config/pa/hppahpux.mt (TDEPFILES): Remove solib.o.

	* hppa-hpux-tdep.c: Update copyright notice and year.

2004-12-05  Richard Earnshaw  <rearnsha@arm.com>

	* doublest.c (FLOATFORMAT_LARGEST_BYTES): New define.
	(get_field, put_field): Assert that the format is one we can handle.
	Simplify logic accordingly.
	(floatformat_normalize_byteorder): New function.
	(convert_floatformat_to_doublest): Use floatformat_normalize_byteorder
	to normalize and select modified byte order. Pass modified byte order
	to get_field.
	(floatformat_is_negative, floatformat_is_nan, floatformat_mantissa): 
	Likewise.
	(convert_doublest_to_floatformat): Select an appropriate intermediate
	byte order if necessary.  Always convert to the final format before
	returning.

2004-12-04  Daniel Jacobowitz  <dan@debian.org>

	PR tui/1703
	* linux-nat.c (linux_tracefork_child): Use _exit instead of exit.
	Suggested by Joshua Neuheisel.

2004-12-03  Randolph Chung  <tausq@debian.org>

	* gdbarch.sh (instruction_nullified): Delete.
	* gdbarch.c: Regenerate.
	* gdbarch.h: Regenerate.
	* hppa-tdep.c (hppa_target_read_pc): Adjust pc if instruction is
	nullified.
	(hppa_unwind_pc): Likewise. 
	(hppa_instruction_nullified): Delete.
	(hppa_gdbarch_init): Don't set instruction_nullified method.
	* infrun.c (infwait_states): Remove infwait_nullified_state.
	(handle_inferior_event): Remove handling of infwait_nullified_state.
	Remove handling of nullified instructions.

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

	* inf-ttrace.c: Include <sys/mman.h>.
	(struct inf_ttrace_page): New.
	(struct inf_ttrace_page_dict): New.
	(inf_ttrace_num_threads_in_syscall)
	(inf_ttrace_reenable_page_protections): New variables.
	(inf_ttrace_enable_syscall_events)
	(inf_ttrace_disable_syscall_events, inf_ttrace_get_page)
 	(inf_ttrace_add_page, inf_ttrace_insert_page)
	(inf_ttrace_remove_page, inf_ttrace_mask_page_protections)
	(inf_ttrace_enable_page_protections)
	(inf_ttrace_disable_page_protections)
	(inf_ttrace_insert_watchpoint, inf_ttrace_remove_watchpoint)
	(inf_ttrace_can_use_hw_breakpoint)
	(inf_ttrace_region_size_ok_for_hw_watchpoint)
	(inf_ttrace_stopped_by_watchpoint): New functions.
	(inf_ttrace_him): Remove unsused varaible `tts'.
	(inf_ttrace_create_inferior): Add assertionts.
	(inf_ttrace_mourn_inferior): Clear page dictionary.
	(inf_ttrace_attach): Set initial event mask.
	(inf_ttrace_detach): Reset number of threads in system call.
	(inf_ttrace_wait): Deal with system call events.
	(inf_ttrace_target): Initialize "hardware" watchpoint-related
	parts of the target vector.
	(_initialize_inf_ttrace): New prototype and function.

	* hppa-hpux-tdep.c (hppa_hpux_push_dummy_code): Use ULONGEST as
	type of `gp' variable.

2004-12-03  Richard Sandiford  <rsandifo@redhat.com>

	* README: Remove config.if from directory listing.

2004-12-01  Joel Brobecker  <brobecker@gnat.com>

	* alpha-tdep.c (alpha_register_name): Add comment.
	(alpha_cannot_fetch_register): Exclude registers numbers which
	are no longer used from the list of registers that can be fetched.
	(alpha_cannot_store_register): Exclude registers numbers which
	are no longer used from the list of registers that can be stored.
	* alpha-nat.c (fetch_osf_core_registers): Add missing value in
	core_reg_mapping array.

2004-12-01  Joel Brobecker  <brobecker@gnat.com>

	* alpha-tdep.c (alpha_heuristic_frame_prev_register): Fetch
	the register value from the correct frame.

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

	* hppa-linux-tdep.c (insns_match_pattern_relaxed): New function.
	(hppa_linux_in_dyncall): Check that we are inside the range of 
	$$dyncall, not necessarily at the first insn.
	(hppa_linux_in_solib_call_trampoline): Identify a trampoline 
	even if the pc does not point to the first insn of the trampoline.

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

	* breakpoint.c (break_at_finish_command): Delete.
	(break_at_finish_command_1): Delete.
	(break_at_finish_at_depth_command): Delete.
	(break_at_finish_at_depth_command_1): Delete.
	(tbreak_at_finish_command): Delete.
	* hppa-tdep.c (_initialize_hppa_tdep): Remove deprecated xbreak, tbreak
	and bx commands.

2004-11-30  Andrew Cagney  <cagney@gnu.org>

	* config/nm-gnu.h: Delete file.
	* config/i386/nm-i386gnu.h: Inline "config/nm-gnu.h".

	* config/nm-sysv4.h: Delete file.
	* config/i386/nm-i386v4.h: Inline "config/nm-sysv4.h".
	* config/i386/nm-i386v42mp.h: Inline "config/nm-sysv4.h".
	* config/i386/nm-i386sol2.h: Inline "config/nm-sysv4.h".
	* config/ia64/nm-aix.h: Inline "config/nm-sysv4.h".
	* config/mips/nm-irix5.h: Inline "config/nm-sysv4.h".

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

	* MAINTAINERS: Add Randolph Chung (pa), Jeff Johnston (ia64), Kei
	Sakamoto (m32r), Joel Brobecker (mips), and Ulrich Weigand (s390)
	as can-commit architecture developers.

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

	* sparc-tdep.c (X_RS1, X_SIMM13): New macros.
	(sparc32_skip_prologue): Skip instructions that store arguments in
	registers into their corresponding stack slots.

	* config/m68k/nbsdaout.mh (NAT_FILE): Set to solib.h instead of
	tm-solib.h.
	* config/m68k/obsd.mh (NAT_FILE): Likewise.

	* sparc-tdep.h (sparc32nbsd_elf_init_abi): New prototype.
	* sparcnbsd-tdep.c (sparc32nbsd_elf_init_abi): Make global.
	* sparcobsd-tdep.c (sparc32obsd_init_abi): Call
	sparc32nbsd_elf_init_abi.  Remove duplicate code.

	* config/sparc/nbsdaout.mh (NAT_FILE): Set to solib.h.
	* config/sparc/nbsdelf.mh (NAT_FILE): Remove variable.
	* config/sparc/nm-nbsd.h: Remove file.
	* config/sparc/nm-nbsdaout.h: Remove file.

	* sparc-nat.c (inf_ptrace_xfer_partial): New variable.
	(sparc_xfer_partial): New function.
	(sparc_target): Save value of to_xfer_partial from ptrace vector.
	Set to_xfer_partial.

	* fork-child.c (fork_inferior): Fork instead of vfork if
	PRE_TRACE_FUN is non-null.

2004-11-24  Fred Fish  <fnf@specifixinc.com>

	* rs6000-tdep.c (skip_prologue): Use line table info to skip over
	compiler generated function calls made as part of a prologue.

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

	* inf-ttrace.c: New file.
	* inf-ttrace.h: New file.
	* hppa-hpux-nat.c [HAVE_TTRACE]: Include <sys/ttrace>.
	Include "inf-ttrace.h".
	(ss_mpsfu_high): Define to ss_tlsp if necessary.
	(hppa_hpux_fetch_register, hppa_hpux_store_register): Use
	ptid_get_pid instead of PIDGET.  Modify to handle both ttrace and
	ptrace systems.
	(_initialize_hppa_hpux_nat) [HAVE_TTRACE]: Call inf_ttrace_traget
	instead of inf_ptrace_target.
	* config/pa/hpux.mh (NATDEPFILES): Add inf-ttrace.o.
	* Makefile.in (inf_ttrace_h): New variable.
	(hppa-hpux-nat.o): Update dependency.
	(inf-ttrace.o): New dependency.
	(ALLDEPFILES): Add inf-ptrace.c and inf-ttrace.c.

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

	* arch-utils.c (generic_instruction_nullified): New.
	* arch-utils.h (generic_instruction_nullified): New.
	* gdbarch.sh (instruction_nullified): New method.
	* gdbarch.c: Regenerate.
	* gdbarch.h: Regenerate.
	* infrun.c (INSTRUCTION_NULLIFIED): Delete.
	(handle_inferior_event): Replace INSTRUCTION_NULLIFIED with calls to
	new gdbarch method.
	* config/pa/tm-hppa.h (INSTRUCTION_NULLIFIED): Delete definition.
	* hppa-tdep.c (hppa_instruction_nullified): Remove prototype and make
	static.  Rewrite to work directly off the passed regcache.
	(hppa_gdbarch_init): Set instruction_nullified method.

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

	* sparc-tdep.c (sparc_is_unimp_insn): New function.
	(sparc32_frame_cache): For functions where there is no debugging
	information to help us determine whether it's a struct-return
	function or not, fallback on checking whether the instruction
	at the return address is an "unimp" instruction or not.

2004-11-22  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* MAINTAINERS: Add myself to write after approval section.

	* hppa-hpux-nat.c (child_suppress_run): Add variable to allow
	hpux-thread.c to suppress children from running.
	(hppa_hpux_child_can_run): New function.
	(_initialize_hppa_hpux_nat): Use hppa_hpux_child_can_run.
	* hpux-thread.c: Include string.h and hppa-tdep.h.
	(FLAGS_REGNUM, SP_REGNUM, PC_REGNUM): Rename to HPPA_FLAGS_REGNUM,
	HPPA_SP_REGNUM and HPPA_PCOQ_HEAD_REGNUM, respectively.
	(hpux_thread_store_registers): Replace deprecated_registers with
	calls to regcache_raw_read.
	* config/pa/hpux11.mh, config/pa/hpux11w.mh: Delete HOST_IPC.

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

	* sparc64fbsd-nat.c: Update copyright year.
	(_initialize_sparc64fbsd_nat): Construct and add target vector.
	* config/sparc/fbsd.mh (NATDEPFILES): Remove infptrace.o,
	inftarg.o.

2004-11-21  Daniel Jacobowitz  <dan@debian.org>

	* sparc-tdep.c (sparc_software_single_step): Handle stepping to NULL.

2004-11-21  Daniel Jacobowitz  <dan@debian.org>

	* linux-nat.c (my_waitpid): New function.
	(linux_test_for_tracefork): Make more robust and verbose.  Take
	an ORIGINAL_PID argument and test for PTRACE_SETOPTIONS first.
	(linux_supports_tracefork, linux_supports_tracevforkdone): Take a PID
	argument.  Update calls to linux_test_for_tracefork.
	(linux_enable_event_reporting, child_follow_fork)
	(child_insert_fork_catchpoint, child_insert_vfork_catchpoint)
	(child_insert_exec_catchpoint): Update calls to
	linux_supports_tracefork and linux_supports_tracevforkdone.

2004-11-21  Daniel Jacobowitz  <dan@debian.org>

	* valarith.c (value_subscript): Copy VALUE_FRAME_ID.
	(value_subscripted_rvalue): Likewise.
	* valops.c (search_struct_field, value_slice): Likewise.

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

	* inf-ptrace.c: Don't include "regcache.h" and "gdbcmd.h".
	Reorder includes a bit.  Fix comment.
	* Makefile.in (inf-ptrace.o): Update dependencies.

2004-11-21  Andreas Schwab  <schwab@suse.de>

	* m68klinux-tdep.c: Include "glibc-tdep.h" and "solib-svr4.h".
	(m68k_linux_init_abi): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets and gdbarch_skip_solib_resolver
	to glibc_skip_solib_resolver.
	* config/m68k/linux.mt (TDEPFILES): Add glibc-tdep.o.  Remove
	solib-legacy.o.
	* Makefile.in (m68klinux-tdep.o): Update dependencies.

2004-11-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* infttrace.h (ttrace_write_reg_64): Add prototype.
	* hppah-nat.c (store_inferior_registers): Fix warning from ambiguous
	expression.  
	(store_inferior_registers): Correct formatting.  Replace uses of
	deprecated_registers with calls to regcache_raw_read,
	regcache_raw_write_part and regcache_raw_read_part.

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

	* config/pa/hppahpux.mh: Remove file.
	* config/pa/hpux1020.mh: Remove file.

2004-11-20  Andreas Schwab  <schwab@suse.de>

	* configure.host: Set host floatformat for m68k.

2004-11-20  Eli Zaretskii  <eliz@gnu.org>

	* config/djgpp/fnchange.lst: Resolve file-name clash between
	hppa-hpux-tdep.c and the new hppa-hpux-nat.c.

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

	* hppa-hpux-nat.c: New file.
	* config/pa/hpux.mh (NATDEPFILES): New file.
	* Makefile.in (ALLDEPFILES): Add hppa-hpux-nat.c.
	(hppa-hpux-nat.o): New dependency.
	* configure.host: Remove hppa*-*-hpux10.20.
	(hppa*-*-hpux*, hppa*-*-hiux*): Set gdb_host to hpux.mh.

	* inf-ptrace.c: Fix coding style.

	* gdb_ptrace.h [PTRACE_TYPE_ARG5] (ptrace): New macro.
	* infptrace.c (call_ptrace): Simply call ptrace with four
	arguments.

	* dbxread.c (process_one_symbol): Fix a few coding standard
	issues.  Improve code formatting.

	* dbxread.c: Include "gdb_string.h".
	(record_minimal_symbol, read_ofile_symtab): Replace
	DEPRECATED_STREQ and DEPRECATED_STREQN with strcmp and strncmp.
	* Makefile.in (dbxread.o): Update dependencies.

	* dwarf2-frame.c (read_encoded_value): Correctly calculate number
	of bytes read for aligned LEB128 encodings.

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

	* bsd-kvm.c (bsd_kvm_pcb_cmd): Cast return value from
	parse_and_eval_address to u_long before converting it to a pointer
	type.
	* i386fbsd-nat.c (_initialize_i386fbsd_nat): Change type of
	ps_strings from int to u_long.
	* i386obsd-nat.c (_initialize_i386obsd_nat): Cast _ps.val to
	u_long instead of CORE_ADDR.

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

	* dbxread.c (process_one_symbol): Do not adjust address of first
	N_SLINE stab for a function for code generated by non-GCC
	compilers.

2004-11-18  Kevin Buettner  <kevinb@redhat.com>

	* solib-null.c: New file.

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

	* MAINTAINERS: Drop MIPS and remote.

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

	* findvar.c (value_of_register): Set the frame ID.
	* value.c (value_primitive_field): Copy the frame ID.
	* valops.c (value_assign): Simplify lval_register case, there's
	always a frame.

2004-11-14  Daniel Jacobowitz  <dan@debian.org>

	* Makefile.in (mips-linux-tdep.o): Update dependencies.
	* mips-linux-tdep.c: Include "regcache.h".
	(fill_fpregset, mips64_fill_fpregset): Use regcache_raw_collect.

2004-11-14  Daniel Jacobowitz  <dan@debian.org>

	* Makefile.in (linux-thread-db.o): Fix typo in last change.

2004-11-14  Daniel Jacobowitz  <dan@debian.org>

	* linux-thread-db.c: New file, renamed from thread-db.c.
	* thread-db.c: Remove.
	* Makefile.in (linux-thread-db.o): Rename from thread-db.o rule.
	* config/alpha/alpha-linux.mh (NATDEPFILES): Rename thread-db.o
	to linux-thread-db.o.
	* config/arm/linux.mh (NATDEPFILES): Likewise.
	* config/i386/linux.mh (NATDEPFILES): Likewise.
	* config/i386/linux64.mh (NATDEPFILES): Likewise.
	* config/ia64/linux.mh (NATDEPFILES): Likewise.
	* config/m32r/linux.mh (NATDEPFILES): Likewise.
	* config/m68k/linux.mh (NATDEPFILES): Likewise.
	* config/mips/linux.mh (NATDEPFILES): Likewise.
	* config/pa/linux.mh (NATDEPFILES): Likewise.
	* config/powerpc/linux.mh (NATDEPFILES): Likewise.
	* config/powerpc/ppc64-linux.mh (NATDEPFILES): Likewise.
	* config/s390/s390.mh (NATDEPFILES): Likewise.
	* config/sparc/linux.mh (NATDEPFILES): Likewise.
	* config/sparc/linux64.mh (NATDEPFILES): Likewise.

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

	* config/i386/i386lynx.mh: Delete file.
	* config/i386/i386lynx.mt: Delete file.
	* Makefile.in (ALLDEPFILES, i386ly-tdep.o): Remove i386ly-tdep.c.
	* i386ly-tdep.c: Delete.

	* config/tm-lynx.h: Delete, inline contents ...
	* config/rs6000/tm-rs6000ly.h: ... here.

	* config/tm-sysv4.h: Delete file, inlining contents.
	* config/ia64/tm-aix.h (SKIP_TRAMPOLINE_CODE): Define.
	* config/tm-linux.h (SKIP_TRAMPOLINE_CODE): Define.
	* config/tm-nto.h (SKIP_TRAMPOLINE_CODE): Define.

	* regcache.h (deprecated_register_valid): Delete.
	(deprecated_registers): Delete.
	* regcache.c (deprecated_register_valid): Delete.
	(deprecated_registers): Delete.
	(deprecated_read_register_byte, _initialize_regcache)
	(deprecated_write_register_bytes, build_regcache): Update.
	* config/powerpc/ppc-sim.mt (TDEPFILES): Remove ppc-bdm.o and
	remote-sds.o.
	* config/powerpc/ppc-eabi.mt (TDEPFILES): Ditto.
	* config/mips/embed.mt (TDEPFILES): Remove remote-mips.o.

	* NEWS: List h8300*-*-*, mcore-*-*, mn10300-*-*, ns32k-*-*, and
	v850-*-* under removed.
	* configure.host: Delete ns32k-*-netbsd*.
	* configure.tgt: Delete h8300-*-*, mcore*-*-*, mn10300-*-*,
	ns32k-*-netbsd*, and v850*-*-*.
	* MAINTAINERS: Mark h8300, mcore, mn10300, ns32k, v850 as
	"Deleted"
	* config/h8300/tm-h8300.h, config/h8300/h8300.mt: Delete.
	* h8300-tdep.c, config/mcore/mcore.mt, mcore-rom.c: Delete.
	* mcore-tdep.c, config/mn10300/mn10300.mt: Delete.
	* mn10300-tdep.c, config/ns32k/nbsdaout.mh: Delete.
	* config/ns32k/nbsdaout.mt, config/ns32k/nm-nbsd.h: Delete.
	* config/ns32k/nm-nbsdaout.h, config/ns32k/tm-ns32k.h: Delete.
	* ns32knbsd-nat.c, ns32knbsd-tdep.c, ns32k-tdep.c: Delete.
	* ns32k-tdep.h, config/v850/v850.mt, v850ice.c: Delete.
	* v850-tdep.c: Delete.
	
2004-11-13  Joel Brobecker  <brobecker@gnat.com>

	* irix5-nat.c (fetch_core_registers): Replace use of
	deprecated_registers by equivalent code.

2004-11-13  Joel Brobecker  <brobecker@gnat.com>

	* irix5-nat.c (fill_gregset): Replace use of deprecated_registers
	with equivalent code.
	(fill_fpregset): Likewise.

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

	* MAINTAINERS: Do not list "Deleted" architectures.

	* configure.tgt: Delete i[34567]86-*-vxworks*, m68*-netx-*,
	m68*-*-vxworks*, mips*-*-vxworks*, powerpc-*-vxworks*, and
	sparc-*-vxworks*.
	* NEWS: Mention that vxworks was deleted.
	* config/m68k/tm-vx68.h, config/mips/tm-vxmips.h: Delete.
	* config/powerpc/tm-vxworks.h, config/tm-vxworks.h: Delete.
	* config/i386/vxworks.mt, config/m68k/vxworks68.mt: Delete.
	* config/mips/vxmips.mt, config/powerpc/vxworks.mt: Delete.
	* config/sparc/vxworks.mt, vx-share/dbgRpcLib.h: Delete.
	* vx-share/ptrace.h, vx-share/regPacket.h: Delete.
	* vx-share/vxTypes.h, vx-share/vxWorks.h: Delete.
	* vx-share/wait.h, vx-share/xdr_ld.c: Delete.
	* vx-share/xdr_ld.h, vx-share/xdr_ptrace.c: Delete.
	* vx-share/xdr_ptrace.h, vx-share/xdr_rdb.c: Delete.
	* vx-share/xdr_rdb.h, remote-vxsparc.c: Delete.
	* remote-vxmips.c, remote-vx.c: Delete.
	* remote-vx68.c: Delete.
	* config/m68k/tm-os68k.h: Remove reference to VxWorks.
	* config/m68k/os68k.mt, ada-lang.h: Ditto.
	* Makefile.in (HFILES_NO_SRCDIR, ALLDEPFILES, remote-vx68.o)
	(remote-vx.o, remote-vxmips.o, remote-vxsparc.o): Delete vx files.

2004-11-13  Eli Zaretskii  <eliz@gnu.org>

	* config/i386/xm-go32.h: Don't include fopen-bin.h.
	Don't define CRLF_SOURCE_FILES and DIRNAME_SEPARATOR.

	* source.c (OPEN_MODE, FDOPEN_MODE): Remove the definitions in the
	branch that doesn't define CRLF_SOURCE_FILES; always use
	binary-mode open.
	(print_source_lines_base, forward_search_command)
	(reverse_search_command): Enable the code that accepts DOS-style
	CRLF line endings on all platforms (this removes the need for
	CRLF_SOURCE_FILES).

	* defs.h: Fix wording of the comment before FOPEN_RB.
	(DIRNAME_SEPARATOR) [__MSDOS__]: Define to ';'.

	* config/djgpp/fnchange.lst: Group renames for opcode directory
	together.

	* config/djgpp/djconfig.sh: Replace file names that don't exist
	anymore with existing files, for checking the unpacked
	distribution.

	* config/djgpp/config.sed (am_cv_exeext, lt_cv_sys_max_cmd_len):
	Export pre-cooked values in configure-* targets that begin with
	"@test -f stage_last".

2004-11-12  Andrew Cagney  <cagney@gnu.org>

	* defs.h (enum lval_type): Delete lval_reg_frame_relative.
	* value.h (struct value): Update comment.
	* valops.c (value_assign): Fold lval_reg_fame_relative into
	lval_register.
	* findvar.c (value_from_register, locate_var_value): Ditto.

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

	* config/tm/tm-hppa.h (SYMBOLS_CAN_START_WITH_DOLLAR): Remove.
	* parse.c (SYMBOLS_CAN_START_WITH_DOLLAR): Remove.
	(write_exp_msymbol): Remove conditional check for symbols starting 
	with $.  Update comments.

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

	* pa64solib.c (pa64_solib_thread_start_addr): Rename from 
	so_lib_thread_start_addr.
	* pa64solib.h (so_list): Forward declare.
	(pa64_solib_thread_start_addr): Prototype.
	* somsolib.c (SHL_LOAD, SHL_UNLOAD): Define if not already defined.
	(no_shared_libraries): Remove.
	(som_solib_thread_start_addr): Rename from so_lib_thread_start_addr.
	* somsolib.h (som_solib_thread_start_addr): Likewise; prototype.
	* hpread.c (hpread_process_one_debug_symbol): Use either the som or
	the elf solib handler to find the start address.

	* config/pa/hppahpux.mh (NATDEPFILES): Move target-specific support 
	files to the target makefile.
	* config/pa/hpux1020.mh (NATDEPFILES):  Likewise.
	* config/pa/hpux11.mh (NATDEPFILES): Likewise.
	* config/pa/hpux11w.mh (NATDEPFILES): Likewise.

	* config/pa/hppa64.mt (TDEPFILES): Put target-specific support 
	files for symbol reading and shared library handling here.
	* config/pa/hppahpux.mt (TDEPFILES): Likewise.  
	(PA_SOM_ONLY): Define so we can build a 32-bit SOM only target 
	without bringing in 64-bit support.

2004-11-12  Andrew Cagney  <cagney@gnu.org>

	* sparc-tdep.c: Replace VALUE_TYPE with value_type.
	* v850-tdep.c, sparc64-tdep.c, sh-tdep.c: Ditto.
	* sh64-tdep.c, s390-tdep.c, mcore-tdep.c: Ditto.
	* h8300-tdep.c, arm-linux-tdep.c, amd64-tdep.c: Ditto.
	* hppa-tdep.c, mips-tdep.c, m88k-tdep.c: Ditto.
	* m68hc11-tdep.c, m32r-tdep.c, ia64-tdep.c: Ditto.
	* frv-tdep.c, cris-tdep.c, avr-tdep.c, alpha-tdep.c: Ditto.

	Merge VALUE_REGNO and VALUE_FRAME_REGNUM into VALUE_REGNUM.
	* value.h (VALUE_REGNO, VALUE_FRAME_REGNUM): Delete.
	(VALUE_REGNUM): Define.
	(struct value): Delete location.regnum, rename "regno" to
	"regnum".
	* value.c, valops.c, valarith.c, findvar.c: Update.

	* value.h (VALUE_TYPE, VALUE_NEXT, VALUE_OFFSET, VALUE_BITSIZE)
	(VALUE_BITPOS): Delete.
	(value_type, value_offset, value_bitsize, value_bitpos): Declare.
	* value.c (value_type, value_offset, value_bitpos)
	(value_bitsize): New functions.  Update references.
	* arm-tdep.c, gnu-v3-abi.c, hpacc-abi.c, gnu-v2-abi.c: Update.
	* f-valprint.c, cp-valprint.c, c-valprint.c: Update.
	* ada-valprint.c, typeprint.c, scm-valprint.c, scm-exp.c: Update.
	* p-valprint.c, jv-valprint.c, jv-lang.c, varobj.c: Update.
	* objc-lang.c, ada-lang.c, std-regs.c, stack.c: Update.
	* infcall.c, linespec.c, printcmd.c, valarith.c: Update.
	* valops.c, eval.c, findvar.c, breakpoint.c: Update.
	* tracepoint.c, ax-gdb.c, mi/mi-main.c, cli/cli-dump.c:
	* rs6000-tdep.c, ppc-sysv-tdep.c: Update.

2004-11-12  Andrew Cagney  <cagney@gnu.org>

	* cris-tdep.c (cris_register_offset): Delete, never called.
	(cris_spec_reg_applicable): Delete cris_ver_sim.
	* MAINTAINERS: List d10v as OBSOLETE.
	* rdi-share/host.h (FOPEN_WB): #ifdef 0 out definitions of
	FOPEN_WB et.al., defined by "fopen-bin.h".

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

	* hppa-tdep.c (hppa_skip_permanent_breakpoint): Move definition ...
	* hppa-hpux-tdep.c (hppa_skip_permanent_breakpoint): ... to here.
	* config/pa/tm-hppa.h (SKIP_PERMANENT_BREAKPOINT): Move definition ...
	* config/pa/tm-hppah.h (SKIP_PERMANENT_BREAKPOINT): ... to here.

2004-11-12  Mark Kettenis  <kettenis@jive.nl>

	* tui/tui-io.c: Don't include "terminal.h".
	* Makefile.in (tui-io.o): Update dependencies.

2004-11-12  Kei Sakamoto  <sakamoto.kei@renesas.com>

	* Makefile.in (m32r-linux-tdep.o): Update dependencies.
	* m32r-linux-tdep.c (m32r_linux_init_abi): Call
	set_gdbarch_regset_from_core_section for core file support.
	(m32r_linux_supply_gregset, m32r_linux_regset_from_core_section):
	New functions.

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

	* hppa-tdep.c (skip_prologue_hard_way): Make static, add
	stop_after_branch parameter and use it to determine if we should look
	at the delay slot of the first branch insn to find prologue insns.
	(hppa_skip_prologue): Update comment and call to skip_prologue_hard_way.
	(hppa_frame_cache): Likewise.

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

	* hppa-tdep.c (hppa_frame_cache): Properly handle the frame pointer
	register so that it can be unwound from anywhere in the prologue.

2004-11-10  msnyder  <msnyder@redhat.com>

	* rs6000-tdep.c (skip_prologue): After saving lr_offset, 
	must invalidate lr_reg (so we don't try to save it again).  
	Ditto for cr_offset and cr_reg.

2004-11-05  Jon Beniston <jon@beniston.com>

	Committed by Andrew Cagney.
	* remote.c (putpkt_binary) Fix PR gdb/1806. Send an ACK 
	when an unexpected packet is received, as the target stubs 
	continually retransmit the same packet until ACKed.
	
2004-11-10  Randolph Chung  <tausq@debian.org>

	* frame.c (get_prev_frame): Use get_frame_type to retrieve the 
	frame's type.

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

	* blockframe.c (inside_entry_func): Move to .....
	* frame.c (inside_entry_func): ... here, and make static.
	(backtrace_past_entry): New flag.
	(get_prev_frame): Stop backtrace at the entry function if enabled
	by flag.  Update comments.
	(_initialize_frame): Add command to set backtrace_past_entry flag.
	* defs.h (inside_entry_func): Remove prototype.

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

	* dwarf2read.c: Fix formatting.

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

	* value.h (COERCE_REF, COERCE_ARRAY, COERCE_NUMBER, COERCE_ENUM)
	(coerce_ref, coerce_array, coerce_number, coerce_enum): Replace
	macros with function declarations.
	* value.c (coerce_ref, coerce_array, coerce_number)
	(coerce_enum): New functions.
	(value_as_long, value_as_address): Update.
	* ada-lang.c (ada_coerce_ref, ada_value_binop) 
	(ada_evaluate_subexp, ada_value_assign, ada_value_struct_elt): Update.
	* jv-lang.c (evaluate_subexp_java): Update.
	* valarith.c (value_less, value_neg, value_complement)
	(value_binop, value_add, value_subscript, value_x_binop) 
	(value_logical_not, value_sub): Update.
	* valops.c (check_field, value_struct_elt, value_ind)
	(value_find_oload_method_list, value_cast, value_assign): Update.
	* eval.c (evaluate_subexp_standard): Update.

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

	* mips-tdep.c (mips32_relative_offset): Change return type to
	LONGEST, change argument type to ULONGEST.  Fix sign-extension.

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

	* hppa-tdep.c (hppa32_register_name, hppa64_register_name): Make static.
	(hppa32_push_dummy_call, hppa64_push_dummy_call): Likewise.
	(hppa_fetch_pointer_argument): Likewise.
	(hppa_frame_cache): Use safe_frame_unwind_memory instead of 
	deprecated_read_memory_nobpt.
	(_initialize_hppa_tdep): Replace deprecated_add_show_from_set/
	add_set_cmd sequence with add_setshow_boolean_cmd.

2004-11-09  Andrew Cagney  <cagney@gnu.org>

	GDB 6.3 released from GDB 6.3 branch.

2004-11-09  Andrew Cagney  <cagney@gnu.org>

	* values.c: Rename to ...
	* value.c: ..., new file.
	* Makefile.in: Update.

2004-11-09  Daniel Jacobowitz  <dan@debian.org>

	* dwarf2-frame.c (dwarf2_frame_state_alloc_regs): Correct allocated
	size.

2004-11-09  Andrew Cagney  <cagney@gnu.org>

	* TODO: Delete.

	* value.h (struct value): Delete field bfd_section.
	(VALUE_BFD_SECTION): Delete macro.
	(COERCE_REF): Update.
	(value_at, value_at_lazy): Delete asection parameter.
	* printcmd.c (print_formatted, x_command): Update.
	(do_examine): Delete asection parameter.
	(next_section): Delete variable.
	* valops.c (value_cast, value_at, value_at_lazy)
	(value_coerce_function, value_addr, value_ind, value_string) 
	(find_rt_vbase_offset, value_full_object): Update.
	* hpacc-abi.c (hpacc_virtual_fn_field)
	(hpacc_value_rtti_type): Update.
	* gnu-v3-abi.c (gnuv3_rtti_type, gnuv3_virtual_fn_field) 
	(gnuv3_baseclass_offset): Update.
	* f-valprint.c (f_val_print): Update.
	* c-valprint.c (c_val_print): Update.
	* p-valprint.c (pascal_val_print): Update.
	* jv-valprint.c (java_value_print): Update.
	* jv-lang.c (java_class_from_object, evaluate_subexp_java): Update.
	* ada-lang.c (ada_value_primitive_packed_val)
	(ada_evaluate_subexp): Update.
	* dwarf2loc.c (dwarf2_evaluate_loc_desc): Update.
	* expprint.c (print_subexp_standard): Update.
	* infcall.c (call_function_by_hand): Update.
	* valarith.c (value_add): Update.
	* eval.c (evaluate_subexp_standard): Update.
	* values.c (allocate_value, value_copy, value_static_field): Update.
	* findvar.c (read_var_value, locate_var_value): Update.
	
2004-11-09  Andrew Cagney  <cagney@gnu.org>

	* i386-linux-tdep.c: Include "dwarf2-frame.h".
	* Makefile.in: Update all dependencies.

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

	* sentinel-frame.c (sentinel_frame_prev_pc): New function.
	(sentinel_frame_unwinder): Add the prev_pc method.
	* frame.c (frame_pc_unwind): Use the per-frame pc unwinder when
	available.  Do not handle the sentinel-frame case.
	* frame-unwind.h (frame_prev_register_ftype): Define.
	(struct frame_unwind): Add prev_pc;

2004-11-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* configure.in: Check for ncurses/term.h.
	* gdb_curses.h: Include term.h here, prefering ncurses/term.h.
	* utils.c: Include gdb_curses.h instead of curses.h and term.h.
	* tui/tui.c: Don't include term.h.
	* configure, config.in: Rebuilt.

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

	* m68kbsd-nat.c: Include "inf-ptrace.h".
	(_initialize_m68kbsd_nat): Fix pasto.
	* Makefile.in (m68kbsd-nat.o): Update dependencies.

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

	* infrun.c (debug_infrun): New variable.
	(resume, proceed, wait_for_inferior): Annotate with debug messages.
	(handle_inferior_event, keep_going): Likewise.
	(_initialize_infrun): Register "set debug infrun" command.

2004-11-08  Andreas Schwab  <schwab@suse.de>

	* linux-nat.c (PTRACE_EVENT_VFORK_DONE): Renamed from
	PTRACE_EVENT_VFORKDONE.
	(child_follow_fork): Adjust.

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

	* README: Refer to 6.3, not 6.2, update directory listing droppng
	references to intl/ and mmalloc/.
	* PROBLEMS: Refer to 6.3 not 6.2.

	* PROBLEMS: Delete no-longer applicable problems.

2004-11-07  Andrew Cagney  <cagney@redhat.com>
	    Daniel Jacobowitz  <dan@debian.org>
	    Roland McGrath  <roland@redhat.com>

	* Makefile.in (symfile-mem.o): Update dependencies.
	* i386-linux-tdep.c (i386_linux_dwarf_signal_frame_p): New.
	(i386_linux_init_abi): Call dwarf2_frame_set_signal_frame_p.
	* inf-ptrace.c (inf_ptrace_attach): Call
	observer_notify_inferior_created.
	* inftarg.c (child_attach): Likewise.
	* symfile-mem.c: Include "observer.h", "auxv.h", and "elf/common.h".
	(symbol_file_add_from_memory): Take NAME argument.  Use it for
	the new BFD's filename.
	(add_symbol_file_from_memory_command): Update call to
	symbol_file_add_from_memory.
	(struct symbol_file_add_from_memory_args, add_vsyscall_page)
	(symbol_file_add_from_memory_wrapper): New.
	(_initialize_symfile_mem): Register add_vsyscall_page as an
	inferior_created observer.

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

	* m68kbsd-nat.c (m68kbsd_fetch_inferior_registers): Rename from
	fetch_inferior_registers.  Make static.
	(m68kbsd_store_inferior_registers): Rename from
	store_inferior_registers.  Make static.
	(_initialize_m68kbsd_nat): Construct and add target vector.
	* config/m68k/nbsdaout.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o.  Add inf-ptrace.o.
	(NAT_FILE): Set to tm-solib.h.
	(LOADLIBES): New variable.
	* config/m68k/nbsdelf.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o.  Add inf-ptrace.o.
	(NAT_FILE): Delete variable.
	* config/m68k/obsd.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o.  Add inf-ptrace.o.
	(NAT_FILE): Set to tm-solib.h.
	* config/m68k/nm-nbsdaout.h: Remove file.

2004-11-07  Daniel Jacobowitz  <dan@debian.org>

	* dwarf2-frame.c (struct dwarf2_frame_ops): Add signal_frame_p.
	(dwarf2_frame_set_signal_frame_p, dwarf2_frame_signal_frame_p)
	(dwarf2_signal_frame_unwind): New.
	(dwarf2_frame_sniffer): Use dwarf2_frame_signal_frame_p.
	* dwarf2-frame.h (dwarf2_frame_set_signal_frame_p): New prototype.

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

	* Makefile.in (mips64obsd-tdep.o): Fix typo.

	* mipsnbsd-tdep.c (mipsnbsd_ilp32_fetch_link_map_offsets): Renamed
	from mipsnbsd_ilp32_solib_svr4_fetch_link_map_offsets.  Trim sizes
	to only include the structure members we actually need.
	(mipsnbsd_lp64_fetch_link_map_offsets): Renamed from
	mipsnbsd_lp64_solib_svr4_fetch_link_map_offsets.  Trim sizes to
	only include the structure members we actually need.
	(mipsnbsd_init_abi): Update.

	* mips64obsd-nat.c: Include "mips-tdep.h".
	(MIPS64OBSD_NUM_REGS): Remove define.
	(MIPS_PC_REGNUM, MIPS_FP0_REGNUM, MIPS_FSR_REGNUM): New defines.
	(mips64obsd_supply_gregset, mips64obsd_collect_gregset): Handle
	floating-point registers correctly.
	* Makefile.in (mips64obsd-nat.o): Update dependencies.

	* mips64obsd-tdep.c: Include "trad-frame.h", "tramp-frame.h" and
	"gdb_assert.h".
	(mips64obsd_sigframe_init): New function.
	(mips64obsd_sigframe): New variable.
	(mips64obsd_init_abi): Add comments.  Prepend mips64obsd_sigrame
	unwinder.
	* Makefile.in (mips64obsd-tdep.o): Update dependencies.

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

	* alpha-mdebug-tdep.c: #include mdebugread.h.
	Replace alpha_extra_func_info_t by struct mdebug_extra_func_info *.
	* Makefile.in (alpha-mdebug-tdep.o): Add dependency on mdebugread.h.

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

	* dwarf2-frame.c (dwarf2_frame_cache): Only complain when both the
	CFI and the init_reg method leave the register unspecified.
	Include the register name in the "Incomplete CFI data" complaint.
	Supress leading zeros in the address.

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

	* dwarf2-frame.c (decode_frame_entry_1): Avoid indirection when
	skipping a personality routine in a CIE augmentation.

2004-11-05  Jeff Johnston  <jjohnstn@redhat.com>

	* defs.h (fatal, vfatal): New function prototypes.
	* stack.c (backtrace_command_stub): Stub to call backtrace_command_1
	via catch_errors.
	(backtrace_command): Change to call backtrace_command_stub via
	catch_errors instead of calling backtrace_command_1 directly.
	(backtrace_full_command): Ditto.
	* utils.c (error_stream_1): New static function.
	(verror): Change to call error_stream_1 instead of error_stream.
	(error_stream): Call error_stream_1 with RETURN_ERROR argument.
	(vfatal, fatal): New functions.

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

	* stack.c (parse_frame_specification_1): Clear selected_frame_p
	when not using selected frame.

2004-11-05  Mark Kettenis  <kettenis@jive.nl>

	* dwarf2-frame.c (decode_frame_entry_1): Correctly skip
	personality routine in a CIE augmentation.

2004-11-05  Felix Lee  <felix+log1@specifixinc.com>

	* stack.c (set_current_sal_from_frame): New function.
	(print_args_stub): Use it.
	(print_frame_info): Don't set sal here.

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

	* dwarf2-frame.c (read_encoded_value): Change type of third
	argument to `unsigned char *'.  Add support for LEB128 encodings.

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

	* gdbtypes.c (make_qualified_type): Doc fix.  Add assertion to
	prevent cross-objfile references.
	(make_cv_type): Doc fix.  Don't create cross-objfile references,
	even for stub types.
	(replace_type): Add assertion to prevent cross-objfile references.
	(check_typedef): Never resolve a stub type by copying over a type
	from another file.

2004-11-04  Kei Sakamoto  <sakamoto.kei@denesas.com>

	* Makefile.in (m32r-tdep.o): Update dependencies.
	* m32r-tdep.c (m32r_gdbarch_init): Call gdbarch_init_osabi for
	ABI-specific overrides.

2004-11-04  Kei Sakamoto  <sakamoto.kei@denesas.com>

	* m32r-tdep.c (m32r_memory_insert_breakpoint): Remove
	unnecessary parallel execution bit.
	(m32r_memory_remove_breakpoint): Ditto.
	(m32r_breakpoint_from_pc): Update.

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

	* hppa-tdep.c (hppa_frame_cache): Use frame_pc_unwind instead of
	frame_func_unwind to locate the unwind entry.
	(hppa_frame_this_id): Likewise.

2004-11-03  Andrew Cagney  <cagney@gnu.org>

	* NEWS: Mention internationalization, m32r-*-linux-gnu, 'p'
	packet, obsolete configurations, end-of-life deprecated_registers.

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

	* dwarf2-frame.c (read_encoded_value): Set proper size for signed
	encodings as well as unsigned encodings.

2004-11-02  Andrew Cagney  <cagney@gnu.org>

	* value.h (COERCE_VARYING_ARRAY): Delete.
	* valops.c (value_cast, value_slice): Delete use.
	* valarith.c (value_subscript, value_concat): Delete use.

2004-11-02  Paul Hilfinger  <hilfingr@nile.gnat.com>

	* NEWS: GDB understands GNAT Ada.

2004-11-01  Joseph S. Myers  <joseph@codesourcery.com>

	* Makefile.in (ALLDEPFILES): Add amd64-sol2-tdep.c.
	(amd64-sol2-tdep.o): Add dependencies.
	* amd64-sol2-tdep.c, config/i386/sol2-64.mh,
	config/i386/sol2-64.mt: New files.
	* i386-sol2-nat.c (amd64_sol2_gregset64_reg_offset,
	amd64_sol2_gregset32_reg_offset, _initialize_amd64_sol2_nat): New.
	(supply_gregset): Correct order of arguments to
	amd64_supply_native_gregset.
	(fill_gregset): Correct order of arguments to
	amd64_collect_native_gregset.
	* configure.host (i[34567]86-*-solaris2.1[0-9]*): Add new case.
	* configure.tgt (i[34567]86-*-solaris2.1[0-9]*): Likewise.
	* configure.in (*-*-solaris2.[[6789]]): Add *-*-solaris2.1[[0-9]]
	for definition of NEW_PROC_API.
	* configure: Regenerate.

2004-11-01  Joseph S. Myers  <joseph@codesourcery.com>

	* MAINTAINERS (Write After Approval): Add myself.

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

	* configure.tgt: Mark d10v-*-* as obsolete.
	* config/d10v/d10v.mt, d10v-tdep.c: Obsolete files.

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

	* values.c (modify_field): Correct handling of bit-fields that
	don't fit in 32 bits.  Use unsigned operations throughout and 
	simplify the code a bit.  Document preconditions.

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

	* config/pa/tm-linux.h: Delete #undef IN_SOLIB_CALL_TRAMPOLINE.
	* config/tm-sysv4.h (IN_SOLIB_CALL_TRAMPOLINE): Delete.
	(in_plt_section): Delete.

	* mips-tdep.c (mips_in_solib_return_trampoline): Delete.
	(mips_gdbarch_init): Do not set same.

	* arch-utils.c (generic_in_solib_call_trampoline): Delete.
	* arch-utils.h (generic_in_solib_call_trampoline): Delete.

	* gdbarch.sh (in_solib_call_trampoline): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.

	* hppa-tdep.c (hppa_stub_unwind_sniffer): Replace
	IN_SOLIB_CALL_TRAMPOLINE with tdep.in_solib_call_trampoline.
	* hppa-tdep.h (struct gdbarch_tdep): Add in_solib_call_trampoline.
	* hppa-hpux-tdep.c (hppa_hpux_init_abi): Set same.
	* hppa-linux-tdep.c (hppa_linux_init_abi): Ditto.

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

	* mipsnbsd-nat.c: Include "target.h" and "inf-ptrace.h".
	(mipsnbsd_fetch_inferior_registers): Rename from
	fetch_inferior_registers.  Make static.
	(mipsnbsd_store_inferior_registers): Rename from
	store_inferior_registers.  Make static.
	(_initialize_mipsnbsd_nat): New function and prototype.
	* Makefile.in (mipsnbsd-nat.o): Update dependencies.
	* config/mips/nbsd.mh (NAT_CLIBS, NAT_FILE): Remove variables.
	(NATDEPFILES): Remove infptrace.o and inftarg.o.  Add
	inf-ptrace.o.

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

	* xstormy16-tdep.c (xstormy16_in_solib_call_trampoline)
	(xstormy16_gdbarch_init): Do not set in_solib_call_trampoline,
	delete corresponding unused function.
	* armnbsd-tdep.c (arm_netbsd_aout_init_abi): Really do not set
	in_solib_call_trampoline.
	* config/arm/tm-embed.h (IN_SOLIB_CALL_TRAMPOLINE): Delete.
	* config/powerpc/tm-linux.h: Delete #undef IN_SOLIB_CALL_TRAMPOLINE.
	* config/mips/tm-nbsd.h: Ditto.
	* config/arm/tm-linux.h: Ditto.
	* config/mips/tm-linux.h: Ditto.

	* armnbsd-tdep.c (arm_netbsd_aout_init_abi)
	(arm_netbsd_aout_in_solib_call_trampoline): Do not set
	in_solib_call_trampoline, delete corresponding unused function.
	* vaxnbsd-tdep.c (vaxnbsd_aout_in_solib_call_trampoline) 
	(vaxnbsd_aout_init_abi): Ditto.
	* sparcnbsd-tdep.c (sparcnbsd_aout_in_solib_call_trampoline) 
	(sparc32nbsd_aout_init_abi): Ditto.
	* ppc-linux-tdep.c (ppc64_in_solib_call_trampoline) 
	(ppc_linux_init_abi): Ditto.
	* ns32knbsd-tdep.c (ns32knbsd_aout_in_solib_call_trampoline) 
	(ns32knbsd_init_abi_aout): Ditto.
	* mips-tdep.c (mips_in_call_stub, mips_gdbarch_init): Ditto.
	* mips-linux-tdep.c (mips_linux_init_abi): Ditto.
	* m68kbsd-tdep.c (m68kbsd_aout_in_solib_call_trampoline) 
	(m68kbsd_aout_init_abi): Ditto.
	* i386-cygwin-tdep.c (i386_cygwin_in_solib_call_trampoline) 
	(i386_cygwin_init_abi): Ditto.
	* i386bsd-tdep.c (i386bsd_aout_in_solib_call_trampoline) 
	(i386bsd_init_abi): Ditto.

	* sparc-sol2-tdep.c (sparc32_sol2_init_abi): Do not set
	in_solib_call_trampoline to in_plt_entry, IN_SOLIB_CALL_TRAMPOLINE
	isn't used by this architecture.
	* sparc64-sol2-tdep.c (sparc64_sol2_init_abi): Ditto.
	* sparc64obsd-tdep.c (sparc64obsd_init_abi): Ditto.
	* sparc64nbsd-tdep.c (sparc64nbsd_init_abi): Ditto.
	* s390-tdep.c (s390_gdbarch_init): Ditto.
	* ppc-linux-tdep.c (ppc_linux_init_abi): Ditto.
	* m68klinux-tdep.c (m68k_linux_init_abi): Ditto.
	* i386-tdep.c (i386_svr4_init_abi): Ditto.
	* i386-nto-tdep.c (i386nto_init_abi): Ditto.
	* arm-linux-tdep.c (arm_linux_init_abi): Ditto.
	* amd64-tdep.c (amd64_init_abi): Ditto.

	* vaxnbsd-tdep.c (vaxnbsd_elf_init_abi): Do not set
	in_solib_call_trampoline to its default value of
	generic_in_solib_call_trampoline.
	* ppcobsd-tdep.c (ppcobsd_init_abi): Ditto.
	* m68kbsd-tdep.c (m68kbsd_elf_init_abi): Ditto.
	* i386obsd-tdep.c (i386obsd_elf_init_abi): Ditto.
	* i386nbsd-tdep.c (i386nbsdelf_init_abi): Ditto.
	* i386fbsd-tdep.c (i386fbsd_init_abi): Ditto.
	* hppabsd-tdep.c (hppabsd_init_abi): Ditto.

	* mips-tdep.c (mips_dump_tdep): Don't print any of the macros.

	* config/mips/obsd64.mt (DEPRECATED_TM_FILE): Delete.

	* config/mips/tm-mips.h: Delete file.
	* remote-mips.c: Delete tm-mips.h from comment.
	* config/mips/embed.mt (DEPRECATED_TM_FILE): Delete.
	* config/mips/tm-nbsd.h: Don't include tm-mips.h.
	* config/mips/irix6.mt (DEPRECATED_TM_FILE): Delete.
	* config/mips/tm-linux.h: Don't include tm-mips.h.
	* config/mips/tm-vxmips.h: Don't include tm-mips.h.
	* config/mips/irix5.mt (DEPRECATED_TM_FILE): 
	* config/mips/tm-wince.h: Don't include.

	* mdebugread.h (MDEBUG_EFI_SYMBOL_NAME): Define.
	* mdebugread.c (MDEBUG_EFI_SYMBOL_NAME): Delete.
	* config/alpha/tm-alpha.h (MDEBUG_EFI_SYMBOL_NAME): Delete.
	* config/mips/tm-mips.h (MDEBUG_EFI_SYMBOL_NAME): Delete.

	* mdebugread.h (ecoff_relocate_efi): Delete declaration.
	* mdebugread.c (ecoff_relocate_efi): Delete function.
	* objfiles.c (objfile_relocate): Delete #ifdef
	MDEBUG_EFI_SYMBOL_NAME code.

2004-10-31  Orjan Friberg <organ.friberg@axis.com>
	    Andrew Cagney  <cagney@gnu.org>

	* gdbarch.sh (single_step_through_delay): Add.
	* gdbarch.h, gdbarch.c: Re-generate.
	* config/mips/tm-mips.h (STEP_SKIPS_DELAY_P, STEP_SKIPS_DELAY)
	(mips_step_skips_delay): Delete.
	* mips-tdep.c (mips_single_step_through_delay): Replace
	mips_step_skips_delay.
	(mips_gdbarch_init): Set single_step_through_delay.
	(mips_dump_tdep): Do not print STEP_SKIPS_DELAY.
	
2004-10-31  Mark Kettenis  <kettenis@gnu.org>

	* tramp-frame.c (tramp_frame_prepend_unwinder): Set unwinder type
	from TRAMP_FRAME frame type.

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

	* mdebugread.c (parse_procedure): Wrap use of RA_REGNUM in #ifdef.

	* mips-tdep.c (mips_ignore_helper): Delete.
	* config/mips/tm-mips.h (DEPRECATED_IGNORE_HELPER_CALL): Delete.
	* infrun.c (handle_inferior_event): Delete #ifdef
	DEPRECATED_IGNORE_HELPER_CALL code.

	* config/mips/tm-mips.h (RA_REGNUM): Delete.

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

	* i386v4-nat.c (supply_gregset, supply_fpregset, fill_gregset)
	(fill_fpregset): Do not compile for 64-bit systems.
	* i386-sol2-nat.c: Don't include "i386v4-nat.c".
	* Makefile.in (i386-sol2-nat.o): Update dependencies.
	* config/i386/i386sol2.mh (NATDEPFILES): Add back i386v4-nat.c.

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

	* mdebugread.h: Include "coff/sym.h" and "coff/symconst.h".
	(struct mdebug_extra_func_info): Define.
	* config/alpha/tm-alpha.h: Delete same.
	* config/mips/tm-mips.h: Delete same.
	* mdebugread.c: Delete same.
	* Makefile.in: Update dependencies.
	* mips-mdebug-tdep.c: Include "mdebugread.h".

	* objfiles.c: Include "mdebugread.h".
	* mdebugread.c: Include "mdebugread.h".
	(ecoff_relocate_cfi): Delete.
	* config/alpha/tm-alpha.h (ecoff_relcate_cfi): Delete.
	* config/mips/tm-mips.h (ecoff_relcate_cfi): Delete.
	* mdebugread.h (ecoff_relocate_efi): New file.
	* Makefile.in: Update dependencies.
	
	* mips-tdep.c (struct frame_extra_info): Delete.
	(temp_proc_desc): Delete.

	* config/alpha/tm-alpha.h (MDEBUG_EFI_SYMBOL_NAME): Rename
	MIPS_EFI_SYMBOL_NAME.
	(mips_extra_func_info_t, mips_extra_func_info): Delete.
	(struct mdebug_extra_func_info): Replace struct
	alpha_extra_func_info and alpha_extra_func_info_t.
	* config/mips/tm-mips.h (MDEBUG_EFI_SYMBOL_NAME): Rename
	MIPS_EFI_SYMBOL_NAME.
	(struct mdebug_extra_func_info): Replace struct
	alpha_extra_func_info and alpha_extra_func_info_t.
	* objfiles.c, mips-tdep.c, mips-mdebug-tdep.c: Update.
	* mdebugread.c, alpha-mdebug-tdep.c: 

	Suggested by Mark Kettenis.
	* config/mips/tm-mips.h (struct mips_extra_func_info): Delete
	fields frame_adjust and high_addr.
	* mips-mdebug-tdep.c (PROC_HIGH_ADDR, PROC_FRAME_ADJUST): Delete.
	(non_heuristic_proc_desc): Delete references.

	* mips-tdep.h (MIPS_PRID_REGNUM): Add.
	* config/mips/tm-mips.h (PRID_REGNUM): Delete.
	* mips-tdep.c: Update.

	* mips-tdep.h (MIPS_FIRST_EMBED_REGNUM)
	(MIPS_LAST_EMBED_REGNUM): Add.
	* config/mips/tm-mips.h (FIRST_EMBED_REGNUM)
	(LAST_EMBED_REGNUM): Delete.
	* mipsv4-nat.c, mips-tdep.c, mips-linux-tdep.c: Update.

	* config/mips/tm-mips.h (PS_REGNUM): Delete.
	* mips-tdep.h (MIPS_PS_REGNUM): Add.
	* remote-vxmips.c, mipsv4-nat.c, mips-tdep.c: Update.
	* mips-linux-nat.c: Update.

	* mips-tdep.h: Add comments on registers.
	(MIPS_UNUSED_REGNUM): Define.
	* config/mips/tm-mips.h (ZERO_REGNUM, UNUSED_REGNUM)
	(T9_REGNUM, V0_REGNUM, A0_REGNUM): Delete.
	* irix5-nat.c, mipsv4-nat.c, mips-linux-tdep.c: Update.
	* mips-linux-nat.c, remote-mips.c: Update.

	* config/mips/tm-mips.h (t_insn): Delete.
	* mips-tdep.c (mips_fetch_instruction, mips_skip_trampoline_code):
	Replace t_insn with ULONGEST.

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

	* mipsnbsd-tdep.c: Include "regset.h" and "gdb_assert.h".
	(MIPS_PC_REGNUM, MIPS_FP0_REGNUM, MIPS_FSR_REGNUM)
	(MIPSNBSD_NUM_GREGS, MIPSNBSD_NUM_FPREGS): New defines.
	(fetch_core_registers, fetch_elfcore_registers): Remove functions.
	(mipsnbsd_core_fns, mipsnbsd_elfcore_fns): Remove variables.
	(mipsnbsd_core_osabi_sniffer): New function.
	(mipsnbsd_init_abi): Set regset_from_core_section.
	(_initialize_mipsnbsd_tdep): Remove calls to
	deprecated_add_core_fns.
	(mipsnbsd_supply_fpregset, mipsnbsd_supply_gregset)
	(mipsnbsd_regset_from_core_section): New functions.
	(mipsnbsd_gregset, mipsnbsd_fpregset): New variables.
	* Makefile.in (mipsnbsd-tdep.o): Update dependencies.

	* procfs.c (procfs_fetch_registers, procfs_store_registers): Like
	Remove optimization for DEPRECATED_FP_REGNUM.

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

	* alpha-tdep.c (alpha_setup_arbitrary_frame): Delete.
	* config/alpha/tm-alpha.h (SETUP_ARBITRARY_FRAME): Delete.
	(alpha_setup_arbitrary_frame): Delete.
	* mips-tdep.c (setup_arbitrary_frame): Delete.
	* config/mips/tm-mips.h (SETUP_ARBITRARY_FRAME): Delete.
	(setup_arbitrary_frame): Delete.
	* stack.c (parse_frame_specification_1): When specified, call
	create_new_frame with two parameters.  Delete #ifdef
	SETUP_ARBITRARY_FRAME.

	* config/mips/tm-mips.h (MIPS16_INSTLEN, MIPS_NUMREGS)
	(MIPS_INSTLEN): Delete.
	* mips-tdep.h (enum mips_insn_size): Rename MIPS32_INSN_SIZE and
	MIPS16_INSN_SIZE to MIPS_INSN32_SIZE and MIPS_INSN16_SIZE.
	* remote-mips.c, mips-tdep.c: Update.

	* config/mips/embed.mt (TDEPFILES): Add mips-mdebug-tdep.o.
	* mips-mdebug-tdep.h, mips-mdebug-tdep.c: New files.
	* mips-tdep.c (mips_mdebug_frame_cache)
	(mips_mdebug_frame_this_id, mips_mdebug_frame_prev_register)
	(mips_mdebug_frame_unwind, mips_mdebug_frame_sniffer)
	(mips_mdebug_frame_base_address, mips_mdebug_frame_sniffer)
	(mips_mdebug_frame_base_sniffer, non_heuristic_proc_desc)
	(compare_pdr_entries, the_bfd, mips16_fetch_instruction): Delete.
	(mips_gdbarch_init): Do not append mdebug sniffers.
	(PROC_LOW_ADDR, PROC_HIGH_ADDR, PROC_FRAME_OFFSET) 
	(PROC_FRAME_REG, PROC_FRAME_ADJUST, PROC_REG_MASK) 
	(PROC_FREG_MASK, PROC_REG_OFFSET, PROC_FREG_OFFSET, PROC_PC_REG) 
	(PROC_SYMBOL, _PROC_MAGIC_): Delete.
	* Makefile.in: Update dependencies.

	* mips-tdep.h (mips_abi_regsize): Declare.
	* mips-tdep.c (mips_abi_regsize): Make non-static.

	* mips-tdep.c (gdb_print_insn_mips): Simplify.
	(make_mips16_addr): Delete.

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

	* i386-sol2-nat.c: New file.
	* Makefile.in (ALLDEPFILES): Add i386-sol2-nat.c and
	i386-sol2-tdep.c.
	(i386-sol2-nat.o): Update dependencies.
	* config/i386/i386sol2.mh (NATDEPFILES): Remove i386v4.o, add
	i386-sol2-nat.o.

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

	Total breakage identified by Joel Brobecker.
	* mips-tdep.c (after_prologue): Delete.
	(mips_skip_prologue): Use skip_prologue_using_sal.
	(heuristic_proc_desc): Delete, unused.

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

	* procfs.c (proc_get_gregs, proc_get_fpregs, proc_set_gregs)
	(proc_set_fpregs, procfs_fetch_registers, procfs_store_registers):
	Cleanup coding style.

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

	* mips-tdep.h (mips_pc_is_mips16): Declare.
	* mips-tdep.c (mips_pc_is_mips16): Rename pc_is_mips16, make
	non-static.  Update calls.

	* cli/cli-decode.c (add_setshow_enum_cmd): New function.
	* command.h (add_setshow_enum_cmd): Declare.
	* mips-tdep.c (_initialize_mips_tdep): Use add_setshow_enum_cmd.

	* mips-tdep.c (_initialize_mips_tdep): Use
	add_setshow_zinteger_cmd.
	
	* mips-tdep.c (mips_eabi_extract_return_value)
	(mips_o64_extract_return_value, mips_o64_store_return_value)
	(return_value_location, mips_eabi_reg_struct_has_addr)
	(mips_eabi_use_struct_convention)
	(mips_eabi_store_return_value): Delete.
	(mips_eabi_store_return_value): New function.
	(mips_eabi_return_value): New function.
	(mips_gdbarch_init): For O64 and EABI, delete
	extract_return_value, store_return_value, use_struct_convention
	and reg_struct_has_addr, add return_value.

	* mips-tdep.c (read_signed_register): Use
	regcache_cooked_read_signed.

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

	* mipsread.c: Cleanup coding style.
	(mipscoff_new_init, mipscoff_symfile_init, mipscoff_symfile_read)
	(mipscoff_symfile_finish): Remove prototypes.

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

	* mips-tdep.c (mips_fetch_instruction, mips16_fetch_instruction)
	(mips_mdebug_frame_cache, mips16_scan_prologue)
	(mips32_scan_prologue, mips_stub_frame_cache)
	(heuristic_proc_start, heuristic_proc_desc)
	(mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call)
	(mips_n32n64_return_value, mips_o32_push_dummy_call)
	(mips_o32_return_value, mips_o64_push_dummy_call)
	(mips_step_skips_delay, mips_skip_trampoline_code)
	(mips_gdbarch_init): Use MIPS_A0_REGNUM instead of A0_REGNUM,
	MIPS_RA_REGNUM instead of RA_REGNUM, MIPS_T9_REGNUM instead of
	T9_REGNUM, MIPS_V0_REGNUM instead of V0_REGNUM, MIPS_ZERO_REGNUM
	instead of ZERO_REGNUM, MIPS32_SIZE_INSN instead of MIPS_INSTLEN
	and MIPS16_INSN_SIZE instead of MIPS16_INSTLEN.
	(mips_dump_tdep): Don't print A0_REGNUM, RA_REGNUM,
	T9_REGNUM, V0_REGNUM, ZERO_REGNUM, MIPS_INSTLEN and
	MIPS16_INSTLEN.  Use MIPS_A0_REGNUM instead of A0_REGNUM.
	* mips-linux-tdep.c (mips_linux_o32_sigframe_init)
	(mips_linux_n32n64_sigframe_init): Use MIPS_ZERO_REGNUM instead of
	ZERO_REGNUM.
	* mipsnbsd-tdep.c (mipsnbsd_cannot_fetch_register)
	(mipsnbsd_cannot_store_register): Use MIPS_ZERO_REGNUM instead of
	ZERO_REGNUM.
	(mipsnbsd_get_longjmp_target): Use MIPS_A0_REGNUM instead of
	A0_REGNUM.
	* mipsnbsd-nat.c: Include "mips-tdep.h".
	(getregs_supplies): Use MIPS_ZERO_REGNUM instead of ZERO_REGNUM.
	* Makefile.in (mipsnbsd-nat.o): Update dependencies.

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

	* stack.c (parse_frame_specification_1): New function based on
	parse_frame_specification.  Add message and selected_frame_p
	paramters.  Truely always return non-NULL.
	(parse_frame_specification): Call parse_frame_specification_1.
	(frame_info): Update.  Eliminate target_has_stack check.
	(select_frame_command): Update.

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

	* frame.h (get_selected_frame): Add message parameter.
	* frame.c (get_selected_frame): Add and use message parameter.
	* stack.c (current_frame_command, return_command, locals_info)
	(catch_info, args_info, up_silently_base, down_silently_base): Use
	get_selected_frame with an explicit message.
	* thread.c, stack.c, sh-tdep.c, sh64-tdep.c: Update.
	* remote-rdp.c, remote-mips.c, remote-e7000.c: Update.
	* ocd.c, mi/mi-main.c, mi/mi-cmd-stack.c: Update.
	* infrun.c, inflow.c, infcmd.c, frame.c: Update.
	* findvar.c, eval.c, corelow.c, bsd-kvm.c: Update.
	* breakpoint.c: Update.

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

	* trad-frame.c (trad_frame_get_prev_register): Use
	frame_unwind_register instead of frame_register_unwind, do not
	recurse the register's location.
	* xstormy16-tdep.c (xstormy16_frame_prev_register): 
	* sparc-tdep.c (sparc32_frame_prev_register): Ditto.
	* sparc64-tdep.c (sparc64_frame_prev_register): Ditto.
	* sh-tdep.c (sh_frame_prev_register): Ditto.
	* m68k-tdep.c (m68k_frame_prev_register): Ditto.
	* i386-tdep.c (i386_frame_prev_register): Ditto.
	* dwarf2-frame.c (dwarf2_frame_prev_register): Ditto.
	* amd64-tdep.c (amd64_frame_prev_register): Ditto.

2004-10-28  Mark Kettenis  <kettenis@jive.nl>

	* proc-events.c: Fix several coding-style issues.  Consistently
	use #ifdef instead of #if defined().
	(proc_prettyfprint_fault, proc_prettyfprint_faultset): Use
	ARRAY_SIZE.
	(_initialize_proc_events): New prototype.

	* proc-why.c: Fix several coding-style issues.
	(proc_prettyfprint_why): Use ARRAY_SIZE.

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

	* remote.c (fetch_register_using_p): Construct 'p' packet in a
	manner independent of the host byte order.

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

	* mips-tdep.c (id_delayed): Remove prototype.

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

	* mips-tdep.h: Add MIPS_ZERO_REGNUM, MIPS_AT_REGNUM,
	MIPS_V0_REGNUM. MIPS_A0_REGNUM, MIPS_T9_REGNUM and MIPS_RA_REGNUM
	to enum with register numbers.
	(enum mips_insn_size): New enum.

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

	* config/mips/tm-linux.h: Delete #undef SKIP_TRAMPOLINE_CODE.
	* mips-tdep.c (mips_skip_trampoline_code): Rename mips_skip_stub.
	(mips_gdbarch_init): Update.
	(mips_dump_tdep): Do not print SKIP_TRAMPOLINE_CODE.

	* config/arm/tm-linux.h (IN_SOLIB_RETURN_TRAMPOLINE): Delete.
	* config/mips/tm-nbsd.h, config/mips/tm-linux.h: Delete #undef
	IN_SOLIB_RETURN_TRAMPOLINE.
	* mips-tdep.c (mips_dump_tdep): Do not print
	IN_SOLIB_RETURN_TRAMPOLINE.
	(mips_in_solib_return_trampoline): Rename mips_in_return_stub.
	(mips_gdbarch_init): Update.

	* mips-tdep.h (mips_software_single_step): Move to here ...
	* config/mips/tm-mips.h: ... from here.
	* config/mips/tm-linux.h (SOFTWARE_SINGLE_STEP_P) 
	(SOFTWARE_SINGLE_STEP): Delete.
	* mips-linux-tdep.c (mips_linux_init_abi): Set software_single_step.

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

	* NEWS: Add Changes since GDB 6.3 section.

2004-10-23  Andreas Schwab  <schwab@suse.de>

	* ada-lang.c (grow_vect): Return the new array instead of
	expecting pointer to pointer to avoid violation of aliasing rules.
	* ada-lang.h (GROW_VECT): Adapt call to grow_vect.

2004-10-23  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (enum pv_boolean): Remove.
	(pv_is_array_ref): Remove.
	(s390_on_stack): Remove.
	(S390_NUM_SPILL_SLOTS): Remove.
	(struct s390_prologue_data): Remove members 'spill' and 'back_chain',
	add members 'gpr_slot', 'fpr_slot', and 'back_chain_saved_p'.
	(s390_store): Track all stores of orginal incoming registers to the
	stack constant offsets relative to the CFA, instead of only tracking
	stores into specific spill slots.
	(s390_load): Likewise.
	(s390_analyze_prologue): Adapt to struct s390_prologue_data changes.
	(s390_prologue_frame_unwind_cache): Likewise.  Only track registers
	defined as call-saved by the ABI.
	(s390_push_dummy_call): Use bottom of dummy call argument save area
	as return value, not the top.  Do not store to the called function's
	register save area.
	(s390_unwind_dummy_id): Adapt accordingly.

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

	* objfiles.h (struct objfile): Rename obj_private to
	deprecated_obj_private, sym_private to deprecated_sym_private, and
	sym_stab_info to deprecated_sym_stab_info.
	* gdb-stabs.h: Update.
	* elfread.c: Update.
	* dbxread.c: Update.
	* coffread.c: Update.
	* xcoffread.c: Update.
	* symfile.c: Update.
	* somread.c: Update.
	* nlmread.c: Update.
	* mdebugread.c: Update.
	* hpread.c: Update.
	* coffread.c: Update.

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

	* mips64obsd-nat.c, mips64obsd-tdep.c: New files.
	* configure.host: Add mips64*-*-openbsd*.
	* configure.tgt: Add mips64*-*-openbsd*.
	* Makefile.in (ALLDEPFILES): Add mips64obsd-nat.o,
	mips64obsd-tdep.c.
	(mips64obsd-nat.o, mips64obsd-tdep.o): New dependecies.
	* config/mips/obsd64.mh, config/mips/obsd64.mt: New files.

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

	* symtab.c (symbol_search_name): Minor reformatting.

2004-10-20  Joel Brobecker  <brobecker@gnat.com>

	* symtab.h: Fix typo in comment.

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

	* dwarf2read.c (struct comp_unit_head): Fix coding style.
	(dwarf_decode_line_header): Likewise.

2004-10-19  Michael Chastain  <mec.gnu@mindspring.com>

	* NEWS: GDB works with GCC -feliminate-dwarf2-dups.

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

	GDB 6.3 branch created.
	* version.in: Bump to version 6.3.50_2004-10-19-cvs.

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

	* dwarf2read.c (set_cu_language): Set language to Ada for
	DW_LANG_Ada83 and DW_LANG_Ada95.

2004-10-15  Michael Chastain  <mec.gnu@mindspring.com>

	From Andreas Schwab <schwab@suse.de>:
	* Makefile.in (.y.c, .l.c.): Fix the substitutions for
	for xmalloc and xrealloc.

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

	* ada-exp.y, ada-lex.l: Use xmalloc and xrealloc through out.
	* inf-ptrace.c: Include "gdb_wait.h" instead of <wait.h>.
	* Makefile.in (.y.c, .l.c): Don't replace xmalloc with xxmalloc.
	Update dependencies.

2004-10-15  Paul Hilfinger  <Hilfinger@gnat.com>

	* ada-lang.c (ada_lookup_symbol): Correct comment.
	(ada_evaluate_subexp): Change error message for
	OP_FUNCALL case so as not to indicate an internal error.
	
2004-10-15  Joel Brobecker  <brobecker@gnat.com>

	Committed by Paul Hilfinger.
	* ada-lang.c (ada_template_to_fixed_record_type_1): Detect bogus
	type sizes in XVE/XVU types, and emit a warning when that happens,
	instead of rounding up the size of the resulting type.
	Some minor reformatting.
	(ada_is_aligner_type): Do not consider a type as an aligner type 
	if there is a corresponding XVS type as well.
	(ada_evaluate_subexp): For TERNOP_SLICE, handle cases where we 
	have several levels of pointer indirection to the array.
	
2004-10-15  Jerome Guitton  <guitton@gnat.com>

	Committed by Paul Hilfinger.
	* ada-lang.c (check_size): New function.
	(coerce_unspec_val_to_type): call check_size to make sure
	that the object size is reasonable.
	(ada_evaluate_subexp): in UNOP_IND: Ditto. In TERNOP_SLICE:
	Implements the case when we get a reference when we evaluate
	the expression of one of the bounds of the slice.
	(ada_value_struct_elt): when a packed array field is
	a reference, use ada_coerce_ref to dereference it; use 
	ada_value_ind only if it is a pointer.

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

	* mips-tdep.c (mips32_scan_prologue): Move the implementation up
	a bit to avoid the necessity of an advance declaration. Remove
	declaration.
	(set_reg_offset): Move implemenation up.
	(mips16_get_imm): Likewise.
	(mips16_scan_prologue): Likewise.
	(reset_saved_regs): Likewise.
	(mips32_scan_prologue): Likewise.

2004-10-14  Joel Brobecker  <brobecker@gnat.com>

	* mips-tdep.c (mips32_scan_prologue): Add advance declaration.
	Remove sp as a parameter, compute it internally instead. Move
	prologue scanning limit from heuristic_proc_desc to here.
	(mips16_scan_prologue): Likewise.
	(mips_insn16_frame_cache): Replace call to heuristic_proc_desc
	by call to mips16_scan_prologue.
	(mips_insn32_frame_cache): Replace call to heuristic_proc_desc
	by call to mips32_scan_prologue.
	(heuristic_proc_desc): Remove code that's no longer necessary.
	Update calls to mips16_scan_prologue and mips32_scan_prologue.
	(mips_skip_prologue): Update calls to mips16_scan_prologue
	and mips32_scan_prologue.

2004-10-14  Joel Brobecker  <brobecker@gnat.com>

	* mips-tdep.c (mips16_scan_prologue): Merge code from
	mips16_skip_prologue.  Now return the address of the first
	instruction past the function prologue.
	(mips16_skip_prologue): Remove, no longer necessary.
	(mips_skip_prologue): Replace call to mips16_skip_prologue
	by call to mips16_scan_prologue.

2004-10-14  Joel Brobecker  <brobecker@gnat.com>

	* mips-tdep.c (mips32_scan_prologue): Merge code from
	mips32_skip_prologue.  Now return the address of the first
	instruction past the function prologue.
	(mips32_skip_prologue): Remove.  No longer necessary.
	(mips16_skip_prologue): Add parameter end_pc instead of
	computing it.
	(mips_skip_prologue): Compute the upper limit for the
	prologue scanning. Update call to mips16_skip_prologue.
	Replace call to mips32_skip_prologue by call to
	mips32_scan_prologue.

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

	* hppa-tdep.c (hppa_frame_cache): Add support for OpenBSD and
	NetBSD system call stubs that store %rp in the ERP slot of the
	stack frame.

	* source.c: Always define O_BINARY to 0 if not defined already.
	(openp): Unconditionally use O_BINARY.

	* top.c (gdb_readline): Always accept "\r\n" as a line-ending.
	* event-top.c (gdb_readline2): Likewise.

2004-10-14  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (_initialize_cris_tdep): Re-add call to
	deprecated_add_core_fns which was removed by mistake.

2004-10-13  Kevin Buettner  <kevinb@redhat.com>

	* ia64-linux-nat.c (fill_gregset, fill_fpregset): Replace
	references to deprecated_registers[] with equivalent code.

2004-10-13  Kevin Buettner  <kevinb@redhat.com>

	* rs6000-tdep.c (rs6000_push_dummy_call): Replace references to
	``deprecated_registers'' with equivalent code.  Use gdb_assert()
	instead of explicit test and print statement.

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

	* sparc-nat.c: Include "inf-ptrace.h".
	(sparc_target): New function.
	* sparc-nat.h: Update copyright year.
	(sparc_target): New prototype.
	* sparcnbsd-nat.c: Don't include "gdbcore.h", include "target.h".
	(_initialize_sparcnbsd_nat): Construct and add target vector.
	* sparc64nbsd-nat.c: Include "target.h".
	(_initialize_sparc64nbsd_nat): Construct and add target vector.
	* Makefile.in (sparc-nat.o, sparcnbsd-nat.o, sparc64nbsd-nat.o):
	Update dependencies.
	* config/sparc/nbsd64.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o, add inf-ptrace.o.
	* config/sparc/nbsdaout.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o, add inf-ptrace.o and bsd-kvm.o.
	(NAT_FILE): Set to nm-bsd.h.
	(LOADLIBES): New variable.
	* config/sparc/nbsdelf.mh (NATDEPFILES): Remove infptrace.o and
	infarg.o, add inf-ptrace.o.
	* config/sparc/nm-nbsdaout.h: Remove file.
	* config/sparc/fbsd.mh (NATDEPFILES): Add inf-ptrace.o.
	* config/sparc/linux.mh (NATDEPFILES): Add inf-ptrace.o.
	* config/sparc/linux64.mh (NATDEPFILES): Add inf-ptrace.o.

	* defs.h [!FOPEN_RB]: Include "fopen-bin.h" instead of
	"fopen-same.h".  Update comment.

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

	* i386gnu-nat.c: Include "gdb_string.h".
	(fetch_fpregs): Use i387_supply_fxsave to fill the floating-point
	registers when the floating-point state isn't initialized.
	* Makefile.in (i386gnu-nat.o): Update dependencies.

2004-10-11  David Anderson  <davea@sgi.com>

	* regcache.c (regcache_raw_read): Comment was missing "to".
	Extraneous ' removed.
	* gdb_thread_db.h (struct td_thrinfo): ti_lid field
	comment now describes use.

2004-10-11  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (cris_sigtramp_start, cris_rt_sigtramp_start)
	(cris_sigcontext_addr, cris_sigtramp_frame_unwind_cache)
	(cris_sigtramp_frame_this_id, cris_sigtramp_frame_prev_register)
	(cris_sigtramp_frame_sniffer): New functions.
	(cris_gdbarch_init): Hook in signal trampoline unwinder.
	(cris_dwarf2_reg_to_regnum, cris_dwarf2_frame_init_reg): New functions.
	(cris_gdbarch_init): Hook in Dwarf-2 unwinder.
	(struct gdbarch_tdep, set_cris_dwarf2_cfi, cris_dump_tdep)
	(cris_gdbarch_init, _initialize_cris_tdep): Add CRIS Dwarf-2 CFI usage
	command.
	(cris_version_update): Remove, replace with ...
	(set_cris_version): New function.
	(struct gdbarch_tdep, cris_mode, cris_mode_update)
	(cris_cannot_store_register, cris_dump_tdep, cris_gdbarch_init)
	(_initialize_cris_tdep): Remove CRIS mode command.
	(cris_fpless_backtrace, _initialize_cris_tdep): Remove 
	cris-fpless-backtrace command.
	(cris_scan_prologue): Fix prologue scanning limit.
	(cris_register_type): Update to reflect actual registers.
	(cris_register_bytes_ok) Remove.
	(cris_gdbarch_init): Remove support for CRIS v8 and v9.
	Remove set_gdbarch_deprecated_register_size,
	set_gdbarch_deprecated_register_byte, set_gdbarch_register_bytes_ok.
	
2004-10-10  Andrew Cagney  <cagney@gnu.org>

	* ada-lang.c (lim_warning): Add ATTR_FORMAT prototype and FIXME
	comment.

2004-10-10  Joel Brobecker  <brobecker@gnat.com>

	* mips-tdep.c (mips16_scan_prologue): Remove redundant code.

2004-10-10  Joel Brobecker  <brobecker@gnat.com>

	* mips-tdep.c (mips16_scan_prologue): Renames
	mips16_heuristic_proc_desc. Update comment.
	(mips32_scan_prologue): Renames mips32_heuristic_proc_desc.
	(heuristic_proc_desc): Update calls to the 2 functions above.

2004-10-10  Joel Brobecker  <brobecker@gnat.com>

	* mips-tdep.c (mips_insn16_frame_cache): Remove unused variables.
	Update comments. Also immediately return empty cache when the start
	address of our function could not be found.
	(mips_insn32_frame_cache): Likewise.

2004-10-10  Joel Brobecker  <brobecker@gnat.com>

	* mips-tdep.c (mips16_decode_reg_save): Delete, no longer used.
	(mips_insn16_frame_cache): Pass frame cache in call to
	heuristic_proc_desc. Move some code to mips16_heuristic_proc_desc.
	Remove code that became redundant as a consequence.
	(mips32_heuristic_proc_desc): No longer compute a fake
	procedure descriptor. Compute the full frame cache instead.
	Some minor comment reformatting.

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

	* MAINTAINERS (generic symtabs, dwarf readers, elf reader, stabs
	reader, tracing bytecode stuff): Remove self.

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

	* sparc64-linux-tdep.c: Update copyright year.  Don't include
	"solib-svr4.h".
	(sparc64_linux_svr4_fetch_link_map_offsets): Remove function.
	(sparc64_linux_init_abi): Don't set solib_svr4_link_map_offsets.
	* Makefile.in (sparc64-linux-tdep.o): Update dependencies.

	* sparc-linux-tdep.c: Update copyright year.
	(sparc_linux_sigtramp_start): Change first argument from CORE_ADDR
	to struct frame_info *.  Use safe_frame_unwind_memory instead of
	deprecated_read_memory_nobpt.
	(sparc32_linux_sigtramp_start, sparc32_linux_rt_sigtramp_start):
	Change argumen from CORE_ADDR to struct frame_info *.  Adjust for
	changed signature of sparc_linux_sigtramp_start.
	(sparc32_linux_pc_in_sigtramp): Remove function.
	(sparc32_linux_sigtramp_p): New function.
	(sparc32_linux_sigtramp_frame_sniffer): Use
	sparc32_linux_sigtramp_p instead of sparc32_linux_pc_in_sigtramp.

	* sparc-linux-tdep.c (sparc32_linux_svr4_fetch_link_map_offsets):
	Remove function.
	(sparc32_linux_init_abi): Don't set solib_svr4_link_map_offsets.

	* ada-lang.c (lim_warning): Re-implement as a varargs function.
	(decode_packed_array_type, value_subscript_packed)
	(ada_evaluate_subexp, to_fixed_range_type): Remove redundant
	argument in call to lim_warning.

	* configure.in: Really disable the TUI if an enhanced curses
	library isn't found.
	* configure: Regenerate.

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

	* config/i386/nbsdaout.mh (NAT_FILE): Set to solib.h.
	* config/i386/nbsdelf.mh (NAT_FILE): Set to solib.h.
	* config/i386/nm-nbsdaout.h: Remove file.
	* config/i386/nm-fbsd.h (link_object, lo_name, lo_library)
	(lo_unused, lo_major, lo_minor, lo_next, link_map, lm_addr)
	(lm_name, lm_next, lm_lop, lm_lob, lm_rwt, lm_ld, lm_lpd)
	(link_dynamic_2, ld_loaded, ld_need, ld_rules, ld_got, ld_plt)
	(ld_rel, ld_hash, ld_stab, ld_stab_hash, ld_buckets, ld_symbols)
	(ld_symb_size, ld_text, ld_plt_sz, rtc_symb, rtc_sp, rtc_next)
	(ld_debug, ldd_version, ldd_in_debugger, ldd_sym_loaded)
	(ldd_bp_addr, ldd_bp_inst, ldd_cp, link_dynamic, ld_version)
	(ldd, ld_un, ld_2): Remove defines.
	* config/i386/nm-obsd.h: Likewise.

2004-10-09  Paul Hilfinger  <hilfingr@nile.gnat.com>

	* ada-lex.l: Remove useless rule whose right-context clause
	causes unreferenced static function warning for yyrealloc.
	(ada_flex_use): Remove the artificial reference to yyrealloc.

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

	* target.h (struct target_ops): Rename to_xfer_memory to
	deprecated_xfer_memory.
	* target.c: Update.
	(deprecated_debug_xfer_memory): Rename debug_to_xfer_memory.
	* wince.c: Update.
	* win32-nat.c: Update.
	* v850ice.c: Update.
	* uw-thread.c: Update.
	* thread-db.c: Update.
	* sol-thread.c: Update.
	* remote.c: Update.
	* remote-vx.c: Update.
	* remote-st.c: Update.
	* remote-sim.c: Update.
	* remote-sds.c: Update.
	* remote-rdp.c: Update.
	* remote-rdi.c: Update.
	* remote-mips.c: Update.
	* remote-m32r-sdi.c: Update.
	* remote-e7000.c: Update.
	* procfs.c: Update.
	* ppc-bdm.c: Update.
	* nto-procfs.c: Update.
	* monitor.c: Update.
	* linux-nat.c: Update.
	* inftarg.c: Update.
	* hpux-thread.c: Update.
	* go32-nat.c: Update.
	* gnu-nat.c: Update.
	* exec.c: Update.
	* corelow.c: Update.
	* bsd-kvm.c: Update.
	* aix-thread.c: Update.

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

	* target.c (debug_target): Move to near start of file.
	(target_stopped_data_address_p): Re-org logic, add casts.

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

	* solib-sunos.c [HAVE_STRUCT_SO_MAP_WITH_SOM_MEMBERS] (link_map)
	(lm_addr, lm_name, lm_next, link_dynamic_2, ld_loaded, rtc_symb)
	(rtc_sp, rtc_next, ld_debug, ldd_in_debugger, ldd_bp_addr)
	(ldd_bp_inst, ldd_cp, link_dynamic, ld_version, ldd, ld_un, ld_2):
	New defines.

2004-10-08  Jeff Johnston  <jjohnstn@redhat.com>

	* target.h (to_stopped_data_address): Change prototype to
	take a CORE_ADDR pointer and return an int.
	* target.c (update_current_target): Change to_stopped_data_address
	to match new prototype.
	(debug_to_stopped_data_address): Change appropriately.
	* breakpoint.c (bpstat_stop_status): Change call to
	target_stopped_data_address to use new prototype.
	* frv-tdep.c (frv_have_stopped_data_address): New function.
	(frv_stopped_data_address): Change to new prototype and
	functionality.
	* ia64-linux-nat.c (ia64_stopped_data_address): Change to new
	prototype and functionality.
	(ia64_stopped_by_watchpoint): New function.
	* i386-nat.c (i386_stopped_data_address): Change to new
	prototype and functionality.
	(i386_stopped_by_watchpoint): New function.
	* remote.c (remote_stopped_data_address): Change to new prototype
	and functionality.
	* remote-m32r-sdi.c (m32r_stopped_data_address): Ditto.
	* config/frv/tm-frv.h (frv_stopped_data_address): Change prototype.
	(STOPPED_BY_WATCHPOINT): Change to use frv_have_stopped_data_address.
	* config/i386/nm-i386.h (STOPPED_BY_WATCHPOINT): Change to use
	new i386_stopped_by_watchpoint function.
	(i386_stopped_by_watchpoint): New prototype.
	(i386_stoppped_data_address): Change to new prototype.
	* config/ia64/nm-linux.h (STOPPED_BY_WATCHPOINT): Change to use
	new ia64_stopped_by_watchpoint function.
	(ia64_stopped_by_watchpoint): New prototype.
	(ia64_stopped_data_address): Ditto.

2004-10-08  Paul Hilfinger  <Hilfinger@gnat.com>

	* ada-typeprint.c (ada_print_type): Use int_string for printing
	modulus of modular type.
	* ada-lang.h (ada_modulus): Change return type to unsigned.
	* ada-lang.c (ada_language_arch_info): Correct type of 
	string_char_type.
	(ada_modulus): Return unsigned result.
	(ada_lookup_symbol): Remove user disambiguation and modify comment 
	accordingly.
	
2004-10-08 Eric Botcazou  <ebotcazou@act-europe.fr>	

	Committed by Paul Hilfinger.
	* ada-lang.c (decode_packed_array): On big-endian targets, 
	left-justify the value if it comes with a modular type.

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

	Committed by Paul Hilfinger.
        * ada-lang.c (template_to_static_fixed_type): Fix a small typo.
	(is_name_suffix): Add support for "___JM" suffixes.
	(ada_check_typedef): Renames ada_completed_type. 
	Update all users of CHECK_TYPEDEF, check_typedef, and 
	ada_complete_type to call ada_check_typedef.
	* ada-typeprint.c: Likewise.
	* ada-valprint.c: Likewise.

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

	* infcall.c (call_function_by_hand): Use correct VALUE_TYPE macro.

2004-10-08  Nick Roberts  <nickrob@snap.net.nz>

	* MAINTAINERS: Update e-mail address.

2004-10-07  Daniel Jacobowitz  <dan@debian.org>

	From Maciej W. Rozycki  <macro@mips.com>:
	* mips-tdep.c (mips32_next_pc): Check the register's contents,
	not its number for BLEZ/BLEZL and BGTZ/BGTZL.

2004-10-07  Kei Sakamoto  <sakamoto.kei@renesas.com>

	* m32r-tdep.c (decode_prologue): Support functions written
	in assembler language. Recognize trap instructions as the
	end of prologue.
	(m32r_frame_unwind_cache): Ditto.
	(m32r_skip_prologue): Extend search limit. Quit analyzing
	prologue if pc's location is not readable.

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

	* Makefile.in (.l.c): Do conversions of names of alloc and free 
	functions that are done for .y.c files, plus special one
	for yy_flex_realloc.  Also, correct missing-file tests here.
	* ada-lex.l (malloc, free): Remove macros.
	(resize_tempbuf): Use "realloc"; rely on sed changes to convert to
	xrealloc.
	(ada_flex_use): Dummy definition to remove warnings about unused
	functions.
	* ada-exp.y (dummy_string_to_ada_operator): Temporary definition
	to suppress warning.
	
2004-10-06  Corinna Vinschen  <vinschen@redhat.com>

	* sh-tdep.c (sh_return_value_nofpu): New function, implementing
	RETURN_VALUE.
	(sh_return_value_fpu): Ditto for CPUs with FPU.
	(sh_gdbarch_init): Remove STORE_RETURN_VALUE, EXTRACT_RETURN_VALUE,
	RETURN_VALUE_ON_STACK and USE_STRUCT_CONVENTION throughout.
	Install sh_return_value_nofpu resp. sh_return_value_fpu as
	RETURN_VALUE functions.

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

	* sh-tdep.c (sh_pseudo_register_read): Add PSEUDO_BANK_REGNUM handling. 
	(sh_pseudo_register_write): Ditto.

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

	* sh-tdep.c (IS_MACL_STS): New define.
	(IS_MOVI20): Ditto.
	(IS_MACL_LDS): Ditto.
	(sh_analyze_prologue): Recognize STS.L MACL,@-r15 and MOVI20
	instructions in prologue.
	(sh_in_function_epilogue_p): Recognize LDS.L @r15+,MACL and MOVI20
	instructions in epilogue.

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

	* sh-tdep.c (SH_NUM_REGS): Define as 67.
	(sh_sh_register_name): Add eight empty register names.
	(sh_sh3_register_name): Ditto.
	(sh_sh3e_register_name): Ditto.
	(sh_sh2e_register_name): Ditto.
	(sh_sh2a_register_name): New function, defining SH2A register set.
	(sh_sh2a_nofpu_register_name): New function, defining SH2A register set
	in nofpu case.
	(sh_sh_dsp_register_name): Add eight empty register names.
	(sh_sh3_dsp_register_name): Ditto.
	(sh_sh4_register_name): Ditto.
	(sh_sh4_nofpu_register_name): Ditto.
	(sh_sh4al_dsp_register_name): Ditto.
	(sh2a_show_regs): New function.
	(sh2a_nofpu_show_regs): New function.
	(sh_sh2a_register_type): New function.
	(do_bank_register_info): New function.
	(sh_print_pseudo_register): Call do_bank_register_info.
	Call sh_print_pseudo_register for valid "bank" register.
	(sh_sh2a_register_sim_regno): New function.
	(sh_gdbarch_init): Add bfd_mach_sh2a and bfd_mach_sh2a_nofpu handling.
	Increment pseudo register count by one for all sh variants with
	pseudo registers to accomodate pseudo bank register.
	* sh-tdep.h: Add register numbers for R0_BANK0_REGNUM, MACHB_REGNUM,
	IVNB_REGNUM, PRB_REGNUM, GBRB_REGNUM, MACLB_REGNUM, BANK_REGNUM,
	IBCR_REGNUM, IBNR_REGNUM, TBR_REGNUM and PSEUDO_BANK_REGNUM. 
	Increment pseudo register numbers.

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

	* dwarf2read.c (read_subroutine_type): Call make_function_type
	instead of lookup_function_type.

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

	* linux-nat.c (_initialize_linux_nat): Rename child_ops.
	(Previous change missed some uses.)

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

	* target.h (deprecated_child_ops): Rename child_ops.
	* wince.c: Update copyright.  Rename child_ops.
	* win32-nat.c: Rename child_ops.
	* target.c: Rename child_ops.
	* rs6000-nat.c: Rename child_ops.
	* linux-nat.c: Rename child_ops.
	* infttrace.c: Rename child_ops.
	* inftarg.c: Rename child_ops.
	* infptrace.c: Rename child_ops.
	* hppah-nat.c: Update copyright.  Rename child_ops.
	* hpux-thread.c: Update copyright.  Rename child_ops.

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

	* remote.c (remote_xfer_partial): Handle TARGET_OBJECT_MEMORY.

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

	* version.in: Bump to version 6.2.50_YYYY-MM-DD-cvs.

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

	* dwarf2read.c (REF_HASH_SIZE): Move earlier.
	(die_ref_table): Remove.
	(struct dwarf2_cu): Add DIES, DEPENDENCIES, and DIE_REF_TABLE.
	(struct dwarf2_per_cu_data): Add PSYMTAB.  Add a comment describing
	the usage of this type.
	(struct dwarf2_per_objfile): Update comment for ALL_COMP_UNITS.
	(struct dwarf2_pinfo, PST_PRIVATE, DWARF_INFO_OFFSET): Remove.
	(struct dwarf2_queue_item, dwarf2_queue, dwarf2_queue_tail): New.
	(dwarf2_create_include_psymtab): Update comment.
	(find_partial_die): Remove third argument.  Remove unreachable call
	to error ().
	(dwarf2_find_containing_comp_unit): Update comments.  Change one
	assertion to an error.  Remove an unreachable error.
	(dwarf2_find_comp_unit): Update comments.
	(type_at_offset): Remove dead code.
	(make_cleanup_free_die_list, dwarf2_empty_hash_tables): Remove.
	(store_in_ref_table): Add CU argument.
	(follow_die_ref): Take DIE, attribute, and CU arguments.  Handle
	inter-compilation-unit references.
	(load_full_comp_unit, process_full_comp_unit): New functions, based
	on psymtab_to_symtab_1.
	(psymtab_to_symtab_1): Use them.
	(dwarf2_add_dependence): New function.
	(dwarf2_build_psymtabs_hard): Set the psymtab in per_cu.  Always create
	a per_cu structure, and save it in READ_PSYMTAB_PRIVATE.
	(partial_die_parent_scope, guess_structure_name): Update for changes
	to find_partial_die.
	(dwarf2_psymtab_to_symtab): Initialize dwarf2_per_objfile here.
	(queue_comp_unit, process_queue, dwarf2_release_queue): New.
	(read_comp_unit): Don't call dwarf2_empty_hash_tables.
	(read_die_and_children): Update call to store_in_ref_table.
	(do_free_die_list_cleanup): Remove.
	(fixup_partial_die): Update for changes to find_partial_die.
	(read_full_die): Handle queueing absolute references.
	(read_attribute_value): Use DW_ADDR for all DW_FORM_ref* forms.
	(dwarf2_attr, die_specification, die_type)
	(die_containing_type, dwarf2_extension): Update calls to
	follow_die_ref.
	(dump_die): Update DW_FORM_ref* handling.
	(dwarf2_get_ref_die_offset): Likewise.
	(free_one_comp_unit): Release the dies list.
	(dwarf2_mark_helper): New function.
	(dwarf2_mark): Use it.

2004-10-05  Mark Kettenis  <kettenis@jive.nl>

	* procfs.c (procfs_xfer_partial): Use WRITEBUF instead of READBUF
	when writing to memory.

2004-10-05  Kei Sakamoto  <sakamoto.kei@renesas.com>

	* m32r-tdep.c (m32r_use_struct_convention): Delete function.
	(m32r_extract_struct_value_address): Delete function.
	(m32r_return_value): New function.
	(m32r_gdbarch_init): Instead of store_return_value,
	extract_return_value, deprecated_extract_struct_value_address
	and deprecated_use_struct_convention, set return_value.

2004-10-03  Daniel Jacobowitz  <dan@debian.org>

	* dwarf2read.c (read_subrange_type): Add comment for variable
	sized arrays.

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

	* Makefile.in (.l.c): Modify rule for compatibility with recent
	versions of flex, and remove most command-line options.
	* ada-lex.l: Add %options line in place of -I -i and -s command-line
	options.

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

        Turn on initial Ada support (mainly expression evaluation).
	
        * Makefile.in (SFILES): Remove ada-tasks.c.
	(HFILES_NO_SRCDIR): Add ada-lang.h.
	(COMMON_OBS): Add ada-lang.o, ada-typeprint.o, ada-valprint.o.
	(YYOBJ): Add ada-exp.o.
	(rule .l.c): Generalize to not mention ada.
	* symtab.c: Include ada-lang.h.
	(symbol_natural_name, symbol_demangled_name)
	(symbol_search_name): Add Ada case.

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

	* Makefile.in (COMMON_OBS): Add inf-child.o.
	* config/vax/obsd.mh (NATDEPFILES): Remove inf-child.o.
	* config/vax/nbsdelf.mh (NATDEPFILES): Remove inf-child.o.
	* config/vax/nbsdaout.mh (NATDEPFILES): Remove inf-child.o.
	* config/powerpc/nbsd.mh (NATDEPFILES): Remove inf-child.o.
	* config/m88k/obsd.mh (NATDEPFILES): Remove inf-child.o.
	* config/i386/obsdaout.mh (NATDEPFILES): Remove inf-child.o.
	* config/i386/obsd64.mh (NATDEPFILES): Remove inf-child.o.
	* config/i386/obsd.mh (NATDEPFILES): Remove inf-child.o.
	* config/i386/nbsdelf.mh (NATDEPFILES): Remove inf-child.o.
	* config/i386/nbsdaout.mh (NATDEPFILES): Remove inf-child.o.
	* config/i386/nbsd64.mh (NATDEPFILES): Remove inf-child.o.
	* config/i386/fbsd64.mh (NATDEPFILES): Remove inf-child.o.
	* config/i386/fbsd.mh (NATDEPFILES): Remove inf-child.o.

	* target.c (xfer_using_stratum): Change return type to LONGEST.
	On each iteration offset, readbuf and writebuf.
	* inf-ptrace.c (inf_ptrace_xfer_partial): Simplify computation of
	partial_length, and read/modify/write predicate, update comments.
	Pass buffer.word to ptrace write.

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

	* symfile.c (init_filename_language_table): Add extensions for
	Ada.
	* defs.h (enum language): Add language_ada.
	* gdbtypes.h (TYPE_FLAG_FIXED_INSTANCE): Define.
	* ada-lang.c: Strip code that is conditionalized out by GNAT_GDB.
	(add_symbols_from_enclosing_procs): Make a no-op for now.
	(ada_unqualified_name,add_angle_brackets,function_name_from_pc)
	(extended_canonical_line_spec, find_sal_from_funcs_and_line)
	(find_line_in_linetable, find_next_line_in_linetable)
	(read_all_symtabs, is_plausible_func_for_line)
	(adjust_pc_past_prologue, error_breakpoint_runtime_sym_not_found)
	(is_runtime_sym_defined, check_size): Remove declaration.
	(function_name_from_pc, ada_translate_error_message)
	(ada_lookup_minimal_symbol): Remove definition.
	(ada_add_block_symbols): Remove useless label.
	* ada-lang.h (ada_maybe_exception_partial_symbol): Remove 
	useless declaration.
	(ada_is_exception_sym): Likewise.

2004-09-30    Kei Sakamoto  <sakamoto.kei@renesas.com>

	Add m32r-linux support.
	* configure.tgt: Add m32r*-*-linux*.
	* Makefile.in (ALLDEPFILES): Add m32r-tdep.c, m32r-linux-nat.c
	and m32r-linux-tdep.c.
	(m32r-linux-nat.o, m32r-linux-tdep.o): New dependencies.
	* m32r-tdep.c: Move some definitions to m32r-tdep.h.
	* config/djgpp/fnchange.lst: Add m32r-linux-nat.c and
	m32r-linux-tdep.c.
	* m32r-tdep.h, m32r-linux-nat.c, m32r-linux-tdep.c,
	config/m32r/linux.mh, config/m32r/linux.mt,
	config/m32r/nm-linux.h: New files.

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

	* mips-tdep.c (mips32_decode_reg_save): Remove, unused.
	(mips32_fetch_instruction): Remove, unused.

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

	* mips-tdep.c (mips_insn16_frame_cache): Remove dead code or
	conditions that will always be true.

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

	* vaxbsd-nat.c: Include "target,h" and "inf-ptrace.h".
	(vaxbsd_fetch_inferior_registers): Rename from
	fetch_inferior_registers.  Make static.
	(vaxbsd_store_inferior_registers): Rename from
	store_inferior_registers.  Make static.
	(_initialize_vaxbsd_nat): Construct and add target vector.
	* config/vax/nbsdaout.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o.  Add inf-child.o and inf-ptrace.o.
	* config/vax/nbsdelf.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o.  Add inf-child.o and inf-ptrace.o.
	(NAT_FILE): Remove.
	* config/vax/obsd.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o.  Add inf-child.o and inf-ptrace.o.
	(NAT_FILE): Remove.
	* Makefile.in (vaxbsd-nat.o): Update dependencies.

	* m88kbsd-nat.c: Include "target.h" and "inf-ptrace.h".
	(m88kbsd_fetch_inferior_registers): Rename from
	fetch_inferior_registers.  Make static.
	(m88kbsd_store_inferior_registers): Rename from
	store_inferior_registers.  Make static.
	(_initialize_m88kbsd_nat): New prototype and function.
	* config/m88k/obsd.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o.  Add inf-child.o and inf-ptrace.o.
	(NAT_FILE): Remove.
	* Makefile.in (m88kbsd-nat.o): Update dependencies.

2004-09-30  Andrew Cagney  <cagney@gnu.org>

	* target.c (target_xfer_partial): New function.
	(target_read_memory_partial, target_write_memory_partial) 
	(default_xfer_partial, target_read_partial, target_write_partial) 
	(xfer_using_stratum): Use.
	(debug_to_xfer_partial): Delete function.
	(setup_target_debug): Do not override to_xfer_partial.

2004-09-30  Mark Kettenis  <kettenis@chello.nl>

	* fork-child.c: Update copyright year.  Fix coding style.

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

	* defs.h (msavestring, mstrsave): Remove prototypes.
	* utils.c (msavestring, mstrsave): Remove functions.
	* objfiles.c (allocate_objfile): Use xstrdup instead of mstrsave.
	* solib-sunos.c (allocate_rt_common_objfile): Use xstrdup instead
	of mstrsave.
	* source.c (find_and_open_source): Use xstrdup instead of
	mstrsave.

2004-09-30  Andrew Cagney  <cagney@gnu.org>

	* inf-ptrace.c (inf_ptrace_target): Do not set to_xfer_memory.
	(inf_ptrace_xfer_memory): Delete.
	* target.c (target_xfer_partial_p, xfer_using_stratum): New.
	(target_read_memory, target_write_memory): Use xfer_using_stratum
	when target_xfer_partial_p.
	(debug_target): Move to start of file.
	(target_read_memory_partial, target_write_memory_partial): Use
	to_xfer_partial when target_xfer_partial_p.

	* inf-ptrace.c (inf_ptrace_xfer_partial): Replace call to
	inf_ptrace_xfer_memory with equivalent code.
	* inftarg.c (child_xfer_partial): When performing a write, pass
	writebuf to child_xfer_memory.

	* target.c (target_read_string): Use target_read_memory instead of
	target_xfer_memory.

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

	* infptrace.c (kill_inferior): Fix typo, in previous inline.  Pass
	the address of status.

	* infptrace.c (ptrace_wait): Mention problem with HPUX.
	(kill_inferior): Inline ptrace_wait call.
	* linux-nat.c (kill_inferior): Inline ptrace_wait call.
	* inftarg.c (child_wait): Inline ptrace_wait call.

	* target.h (struct target_ops): Delete field to_post_wait.
	(target_post_wait): Delete macro.
	(child_post_wait): Delete declaration.
	* target.c (update_current_target, update_current_target)
	(debug_to_post_wait, setup_target_debug): Delete functions and
	references.
	* infttrace.c (ptrace_wait): Delete call to target_post_wait.
	* inftarg.c (child_post_wait): Delete.
	(init_child_ops): Do not set to_post_wait.
	* infptrace.c (ptrace_wait): Delete call to target_post_wait.
	* inf-ptrace.c (inf_ptrace_wait): Delete call to target_post_wait.
	* inf-child.c (inf_child_post_wait): Delete.
	(inf_child_target): Do not set to_post_wait.
	* inf-ptrace.c (inf_ptrace_post_wait): Delete.
	(inf_ptrace_target): Do not set to_post_wait.

	* wince.c (child_ops): Delete.
	* win32-nat.c (child_ops): Delete.

	* inftarg.c (inftarg_set_find_memory_regions) 
	(inftarg_set_make_corefile_notes): Delete functions.
	(_initialize_linux_nat): Inline calls.

	* target.h (child_ops): Declare.
	* inftarg.c (child_ops): Move from here ...
	* target.c (child_ops): ... to here.
	* wince.c (child_ops): Delete extern declaration.
	* win32-nat.c (child_ops): Delete extern declaration.
	* linux-nat.c (child_ops): Delete extern declaration.
	* hpux-thread.c (child_ops): Delete extern declaration.

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

	* configure.tgt: Set default OS/ABI for OpenBSD ELF targets.

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

	* configure.in: Only set host_makefile_frag when building a native
	debugger.
	* configure: Regenerate.

	* alphanbsd-tdep.c (_initialize_alphanbsd_tdep): Register OS/ABI
	for OpenBSD ELF.

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

	Problem identified by Paul Hilfinger.
	* Makefile.in (ada_lex_c): Define.
	(ada-lex.o): Delete rule.

	* linux-proc.c: Delete file.
	* Makefile.in: Update.
	* config/sparc/linux64.mh (NATDEPFILES): 
	* config/sparc/linux.mh (NATDEPFILES): Update.
	* config/s390/s390.mh (NATDEPFILES): Update.
	* config/powerpc/ppc64-linux.mh (NATDEPFILES): Update.
	* config/powerpc/linux.mh (NATDEPFILES): Update.
	* config/pa/linux.mh (NATDEPFILES): Update.
	* config/mips/linux.mh (NATDEPFILES): Update.
	* config/m68k/linux.mh (NATDEPFILES): Update.
	* config/ia64/linux.mh (NATDEPFILES): Update.
	* config/i386/linux64.mh (NATDEPFILES): Update.
	* config/i386/linux.mh (NATDEPFILES): Update.
	* config/arm/linux.mh (NATDEPFILES): Update.
	* config/alpha/alpha-linux.mh (NATDEPFILES): Update.
	* linux-nat.c: Update copyright.  Include <sys/param.h>,
	<sys/procfs.h>, "elf-bfd.h", "gregset.h", <ctype.h>,
	"gdbthread.h", "gdb_stat.h", <fcntl.h>.
	(O_LARGEFILE): Possibly define.
	(_initialize_linux_nat, linux_proc_pending_signals)
	(add_line_to_sigset, linux_proc_xfer_memory)
	(linux_nat_info_proc_cmd, linux_nat_make_corefile_notes)
	(linux_nat_do_registers, linux_nat_corefile_thread_callback)
	(struct linux_corefile_thread_data)
	(linux_nat_do_thread_registers, linux_nat_find_memory_regions)
	(child_pid_to_exec_file): Insert code previously in linux-proc.c.

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

	* lin-lwp.c: Delete file.
	* linux-nat.c: Include "gdb_assert.h", "gdb_string.h", <unistd.h>,
	<sys/syscall.h>, "gdbthread.h", "gdbcmd.h", "regcache.h".
	(status_to_str, init_lwp_list, add_lwp, delete_lwp)
	(find_lwp_pid, iterate_over_lwps, lin_lwp_attach_lwp)
	(linux_nat_attach, detach_callback, linux_nat_detach)
	(resume_callback, resume_clear_callback, linux_nat_resume)
	(kill_lwp, linux_nat_handle_extended, wait_lwp, stop_callback)
	(stop_wait_callback, linux_nat_has_pending, flush_callback)
	(status_callback, running_callback, count_events_callback)
	(select_singlestep_lwp_callback, select_event_lwp_callback)
	(cancel_breakpoints_callback, select_event_lwp, resumed_callback)
	(child_wait, stop_and_resume_callback, linux_nat_wait)
	(kill_callback, kill_wait_callback, linux_nat_kill)
	(linux_nat_create_inferior, linux_nat_mourn_inferior)
	(linux_nat_xfer_memory, linux_nat_thread_alive)
	(linux_nat_pid_to_str, init_linux_nat_ops, sigchld_handler)
	(_initialize_linux_nat): New functions.
	* Makefile.in: Update all dependencies.
	* config/sparc/linux64.mh (NATDEPFILES): Remove lin-lwp.o.
	* config/sparc/linux.mh (NATDEPFILES): Remove lin-lwp.o.
	* config/s390/s390.mh (NATDEPFILES): Remove lin-lwp.o.
	* config/powerpc/ppc64-linux.mh (NATDEPFILES): Remove lin-lwp.o.
	* config/powerpc/linux.mh (NATDEPFILES): Remove lin-lwp.o.
	* config/pa/linux.mh (NATDEPFILES): Remove lin-lwp.o.
	* config/mips/linux.mh (NATDEPFILES): Remove lin-lwp.o.
	* config/m68k/linux.mh (NATDEPFILES): Remove lin-lwp.o.
	* config/ia64/linux.mh (NATDEPFILES): Remove lin-lwp.o.
	* config/i386/linux64.mh (NATDEPFILES): Remove lin-lwp.o.
	* config/i386/linux.mh (NATDEPFILES): Remove lin-lwp.o.
	* config/arm/linux.mh (NATDEPFILES): Remove lin-lwp.o.
	* config/alpha/alpha-linux.mh (NATDEPFILES): Remove lin-lwp.o.

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

	* config/i386/fbsd64.mh, config/i386/nbsd64.mh,
	config/i386/obsd64.mh (NAT_FILE): Remove variable.

	* configure.in: Don't comment out NATDEPFILES in the generated
	Makefile if NAT_FILE is unset.
	* configure: Regenerate.

2004-09-27  Andrew Cagney  <cagney@gnu.org>

	* infrun.c (check_for_old_step_resume_breakpoint): Delete.
	(insert_step_resume_breakpoint): Delete.
	(insert_step_resume_breakpoint_at_frame): New function.
	(insert_step_resume_breakpoint_at_sal): New function.
	(handle_inferior_event, step_into_function)
	(insert_step_resume_breakpoint): Simplify by using same.

	* gdb_indent.sh (types): Add caddr_t to list of predefined types.

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

	* fbsd-proc.c: Remove file.
	* Makefile.in (fbsd-proc.o): Remove dependency.

	* i386fbsd-nat.c (_initialize_i386fbsd_nat): Group target related
	code together.

	* config/i386/nm-fbsd64.h: Remove file.
	* config/i386/fbsd64.mh (NAT_FILE): Set to config/nm-nbsd.h.

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

	* amd64-nat.h: Update copyright year.
	(amd64bsd_target): New prototype.
	* amd64bsd-nat.c: Include "target.h" and "inf-ptrace.h".
	(amd64bsd_target): New function.
	(amd64bsd_fetch_inferior_registers): Rename from
	fetch_inferior_registers.  Make static.
	(amd64bsd_store_inferior_registers): Rename from
	store_inferior_registers.  Make static.
	* amd64fbsd-nat.c: Include "target.h" and "fbsd-nat.h".
	(_initialize_amd64fbsd_nat): Construct and add target vector.
	* amd64nbsd-nat.o: Include "target.h".
	(_initialize_amd64nbsd_nat): Construct and add target vector.
	* amd64obsd-nat.c: Include "target.h".
	(_initialize_amd64obsd_nat): Construct and add target vector.
	* config/i386/nm-fbsd64.h (CHILD_PID_TO_EXEC_FILE): Remove define.
	* config/i386/fbsd64.mh (NATDEPFILES): Remove infptrace.o,
	inftarg.o and fbsd-proc.o.  Add inf-child.o, inf-ptrace.o and
	fbsd-nat.o.
	* config/i386/nbsd64.mh, config/i386/obsd64.mh (NATDEPFILES):
	Remove infptrace.o and inftarg.o.  Add inf-child.o and
	inf-ptrace.o.
	* Makefile.in (amd64bsd-nat.o, amd64fbsd-nat.o, amd64nbsd-nat.o)
	(amd64obsd-nat.o): Update dependencies.

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

	* config/i386/fbsd.mh (NATDEPFILES): Remove infptrace.o.
	* config/i386/nbsdaout.mh (NATDEPFILES): Remove infptrace.o.
	* config/i386/nbsdelf.mh (NATDEPFILES): Remove infptrace.o.
	* config/i386/obsd.mh (NATDEPFILES): Remove infptrace.o.
	* config/i386/obsdaout.mh (NATDEPFILES): Remove infptrace.o.

	* inf-ptrace.c (inf_ptrace_attach): Remove redundant parenthesis.
	Inline attach call.
	(inf_ptrace_detach): Inline detach call.

	* configure.in: Check for waddstr instead of mvwaddstr when
	searching for curses library.  Check for wborder.
	* configure, config.in: Regenerate.
	* tui/tui-wingeneral.c (box_win): Use box if wborder isn't
	available.

	* inf-ptrace.c (inf_ptrace_xfer_memory): Fix gdb_indent.sh wart.

2004-09-24  Robert Picco <Robert.Picco@hp.com>

	Committed by Andrew Cagney.
	* remote.c (set_remote_protocol_p_packet_cmd, remote_protocol_p)
	(show_remote_protocol_p_packet_cmd): New.  Implement 'p' packet.
	configuration.
	(fetch_register_using_p): Implement 'p' packet.  Based on code by
	Fernando Nasser.
	(remote_fetch_registers): Call fetch_register_using_p.
	(init_all_packet_configs, show_remote_cmd)
	(_initialize_remote): Add p-packet.

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

	* inf-ptrace.c (inf_ptrace_kill_inferior): Call ptrace directly
	instead of call_ptrace.  Call wait directly instead of
	ptrace_wait.
	(inf_ptrace_me): Call ptrace directly instead of call_ptrace.
	(inf_ptrace_wait): Inline ptrace_wait call.

2004-09-24  Paul Hilfinger  <hilfingr@nile.gnat.com>

	* Makefile.in (.y.c): Revert previous change.  ../ylwrap was 
	rolled back instead.

2004-09-24  Paul Hilfinger  <hilfingr@nile.gnat.com>

	* Makefile.in (.y.c): Modify $(YLWRAP) invocation to use
	the new argument order.

2004-09-23  Corinna Vinschen  <vinschen@redhat.com>

	* MAINTAINERS: Remove "broken" from XStormy16 entry.
	* xstormy16-tdep.c: Convert XStormy16 target to latest GDB methods.
	(struct gdbarch_tdep): Remove.
	(struct xstormy16_frame_cache): New frame cache structure.
	(xstormy16_register_byte, xstormy16_register_raw_size)
	(xstormy16_reg_virtual_type, xstormy16_register_type)
	(xstormy16_push_arguments, xstormy16_push_return_address)
	(xstormy16_pop_frame, xstormy16_store_struct_return)
	(xstormy16_store_return_value, xstormy16_extract_struct_value_address)
	(xstormy16_frame_saved_register, xstormy16_get_saved_register)
	(xstormy16_scan_prologue, xstormy16_frame_init_saved_regs)
	(xstormy16_frame_saved_pc, xstormy16_init_extra_frame_info)
	(xstormy16_frame_chain, xstormy16_frame_chain_valid,
	(xstormy16_saved_pc_after_call, xstormy16_save_dummy_frame_to): Remove.
	(xstormy16_use_struct_convention): Drop gcc_p parameter.
	(xstormy16_extract_return_value, xstormy16_store_return_value):
	Regcachify.  Drop useless struct convention handling.
	(xstormy16_register_type, xstormy16_return_value)
	(xstormy16_push_dummy_call, xstormy16_analyze_prologue)
	(xstormy16_alloc_frame_cache, xstormy16_frame_cache)
	(xstormy16_frame_prev_register, xstormy16_frame_this_id)
	(xstormy16_frame_base_address, xstormy16_frame_sniffer)
	(xstormy16_unwind_sp, xstormy16_unwind_pc)
	(xstormy16_unwind_dummy_id) : New functions.
	(xstormy16_skip_prologue): Call xstormy16_analyze_prologue instead
	of xstormy16_scan_prologue.
	(xstormy16_frame_unwind): New frame_unwind structure.
	(xstormy16_frame_base): New frame_base structure.
	(xstormy16_gdbarch_init): Accomodate all of the above changes.
	Reshuffle for better readability.  Also add dwarf2_frame_sniffer.

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

	* language.c (language_gdbarch_post_init): Fix off-by one error.

2004-09-21  Daniel Jacobowitz  <dan@debian.org>

	* dwarf2read.c (struct dwarf2_per_cu_data): New field type_hash.
	(struct dwarf2_offset_and_type): New.
	(set_die_type, reset_die_and_siblings_types, get_die_type)
	(offset_and_type_hash, offset_and_type_eq): New functions.
	(read_structure_type, read_enumeration_type, read_array_type)
	(read_namespace, read_tag_pointer_type, read_tag_ptr_to_member_type)
	(read_tag_reference_type, read_tag_const_type)
	(read_tag_volatile_type, read_tag_string_type, read_subroutine_type)
	(read_typedef, read_base_type, read_subrange_type): Use
	set_die_type.

2004-09-20  Daniel Jacobowitz  <dan@debian.org>

	* Makefile.in (dwarf2read.o): Update dependencies.
	* dwarf2read.c: Include "command.h" and "gdbcmd.h".
	(struct dwarf2_per_objfile): Add all_comp_units, n_comp_units,
	and read_in_chain.
	(struct dwarf2_cu): Add read_in_chain, per_cu, last_used,
	mark, and has_form_ref_addr.
	(struct dwarf2_per_cu_data): New.
	(dwarf2_max_cache_age): New.
	(dwarf2_build_psymtabs_hard): Free cached compilation units
	after loading.  Create and manage the list of compilation units.
	Remove unnecessary NULL initialization.  Fix indentation.
	(psymtab_to_symtab_1): Initialize all of CU.
	(dwarf2_read_abbrevs): Set has_form_ref_addr.
	(find_partial_die): Use dwarf2_find_containing_comp_unit
	and load_comp_unit.
	(free_stack_comp_unit): Update comments.  Clear the per-cu
	pointer.  Handle aging.
	(dwarf2_find_containing_comp_unit, free_cached_comp_units)
	(age_cached_comp_units, free_one_cached_comp_unit)
	(dwarf2_mark, dwarf2_clear_marks, create_all_comp_units)
	(load_comp_unit, dwarf2_find_comp_unit, free_one_comp_unit)
	(set_dwarf2_cmdlist, show_dwarf2_cmdlist, set_dwarf2_cmd)
	(show_dwarf2_cmd): New.
	(_initialize_dwarf2_read): Provide "maint set dwarf2 max-cache-age"
	and "maint show dwarf2 max-cache-age".
	* gdbcmd.h (maintenance_set_cmdlist, maintenance_show_cmdlist): New
	externs.
	* maint.c (maintenance_set_cmdlist, maintenance_show_cmdlist): Make
	global.

2004-09-20  Jeff Johnston  <jjohnstn@redhat.com>

	* dwarf2read.c (typename_concat): Change prototype to accept obstack
	and dwarf2_cu struct pointer as arguments.  Change function to use
	obstack if provided and use dwarf2_cu to determine language-specific
	separator.
	(partial_die_parent_scope): Change comment to include java.  Use
	new version of typename_concat instead of obconcat.
	(partial_die_full_name): Use typename_concat.
	(read_namespace): Ditto.
	(read_enumeration_type): Use typename_concat instead of obconcat.
	(new_symbol): Ditto.
	(add_partial_symbol): Enhance tests for C++ to also test for Java.
	(guess_structure_name): Ditto.
	(read_subroutine_type): Ditto.
	(read_structure_type): Ditto.
	(is_vtable_name): Add Java support.
	(determine_class_name): Switch to new typename_concat call.
	(determine_prefix): Switch to new typename_concat call.
	* jv-exp.y (FuncStart): New pattern.
	(MethodInvocation): Add support for simple function calls.  Change
	warning message for other forms of inferior call currently not
	supported.
	* valarith.c (value_subscript): Treat an array with upper-bound
	of -1 as unknown size.

2004-09-20  Daniel Jacobowitz  <dan@debian.org>

	* symtab.c (lookup_partial_symtab): Use psymtab_to_fullname.
	(lookup_partial_symtab): Use symtab_to_fullname.

2004-09-19  Jim Blandy  <jimb@redhat.com>

	* minsyms.c (lookup_minimal_symbol): Doc fix.

2004-09-20  Andrew Cagney  <cagney@gnu.org>

	* config/nm-lynx.h (DEPRECATED_CHILD_RESUME): Deprecate
	CHILD_RESUME.
	* config/i386/nm-linux.h (DEPRECATED_CHILD_RESUME): Ditto.
	* config/nm-linux.h (DEPRECATED_KILL_INFERIOR): Deprecate
	KILL_INFERIOR.
	* infptrace.c: Update.

2004-09-19  Daniel Jacobowitz  <dan@debian.org>

	* symtab.c (output_source_filename): Mark first argument as const.
	(sources_info): Use symtab_to_fullname and psymtab_to_fullname
	for "info sources" output.

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

	* config/i386/nm-fbsd.h, config/i386/nm-obsd.h: Don't include
	<machine/vmparam.h>.
	(KERNEL_U_ADDR, REGISTER_U_ADDR): Remove defines.
	(register_u_addr): Remove prototype.

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

	* i386bsd-nat.c: Include "i386bsd-nat.h" and "inf-ptrace.h".
	(i386bsd_fetch_inferior_registers): Rename from
	fetch_inferior_registers.  Make static.
	(i386bsd_store_inferior_registers): Rename from
	store_inferior_registers.  Make static.
	(i386bsd_target): New function.
	* i386bsd-nat.h: New file.
	* i386fbsd-nat.c: Include "target.h", "fbsd-nat.h" and
	"i386bsd-nat.h".
	(i386fbsd_resume): Rename from child_resume.  Make static.
	(_initialize_i386fbsd_nat): Construct and add target vector.
	* i386nbsd-nat.c: Include "target.h" and "i386bsd-nat.h".
	(_initialize_i386nbsd_nat): Construct and add target vector.
	* config/i386/nm-fbsd.h: (CHILD_RESUME, CHILD_PID_TO_EXEC_FILE):
	Remove defines.
	* config/i386/fbsd.mh (NATDEPFILES): Add inf-child.o, inf-ptrace.o
	and fbsd-nat.o.  Remove inftarg.o and fbsd-proc.o.
	* config/i386/nbsdaout.mh (NATDEPFILES): Add inf-child.o,
	inf-ptrace.o, i386bsd-nat.o and bsd-kvm.o.  Remove inftarg.o.
	(LOADLIBES): New variable.
	* config/i386/nbsdelf.mh (NATDEPFILES): Add inf-child.o and
	inf-ptrace.o.  Remove inftarg.o.
	* config/i386/obsd.mh (NATDEPFILES): Add inf-child.o and
	inf-ptrace.o. Remove inftarg.o.
	* config/i386/obsdaout.mh (NATDEPFILES): Add inf-child.o,
	inf-ptrace.o, i386nbsd-nat.o and bsd-kvm.o.  Remove inftarg.o.
	(LOADLIBES): New variable.
	* Makefile.in (i386bsd_nat_h): New variable.
	(i386bsd-nat.o, i386fbsd-nat.o, i386nbsd-nat.o): Update
	dependencies.

	* sparc64nbsd-tdep.c: Include "objfiles.h".
	(sparc64nbsd_init_abi): Set in_solib_call_trampoline and
	skip_trampoline_code.  Set solib_svr4_fetch_link_map_offsets to
	svr4_lp64_fetch_link_map_offsets.
	* sparc64obsd-tdep.c: Include "objfiles.h".  Don't include
	"nbsd-tdep.h".
	(sparc64obsd_init_abi): Set in_solib_call_trampoline and
	skip_trampoline_code.  Set solib_svr4_fetch_link_map_offsets to
	svr4_lp64_fetch_link_map_offsets.
	* Makefile.in (sparc64nbsd-tdep.o, sparc64obsd-tdep.o): Update
	dependencies.

	* fbsd-nat.c: New files with cleaned up contents of fbsd-proc.c.
	* fbsd-nat.h: New file.
	* Makefile.in (ALLDEPFILES): Add fbsd-nat.c.
	(fbsd_nat_h): New variable.
	(fbsd-nat.o): New dependency.

	* config/sparc/nbsd64.mt, config/sparc/obsd.mt,
	config/sparc/obsd64.mt (DEPRECATED_TM_FILE): Set to solib.h.

	* inf-child.c (inf_child_post_wait): Remove stray whitespace in
	comment.

2004-09-18  Paul N. Hilfinger  <hilfinger@gnat.com>
	
	* ada-exp.y (type_int): New function to add layer of abstraction
	around references to expression types.
	(type_long): Ditto.
	(type_long_long): Ditto.
	(type_float): Ditto.
	(type_double): Ditto.
	(type_long_double): Ditto.
	(type_char): Ditto.
	(type_system_address): Ditto.
	(simple_exp): Use type_* functions in place of builtin_* 
	variables.
	(exp): Ditto.
	(write_var_from_name): Ditto.
	(write_object_renaming): Ditto.
	* ada-lang.c (ada_create_fundamental_type): Remove redundant
	declaration.
	(build_ada_types): Remove, replacing with...
	(ada_language_arch_info): New function to initialize primitive
	type vector in language_arch_info.
	(ada_array_length): Remove use of builtin_type_ada_int.
	(value_pos_atr): Ditto.
	(ada_evaluate_subexp): Ditto.
	(builtin_type_ada_int, builtin_type_ada_short, builtin_type_ada_long,
	builtin_type_ada_long_long, builtin_type_ada_char, 
	builtin_type_ada_float, builtin_type_ada_double, 
	builtin_type_ada_long_double, builtin_type_ada_natural,
	builtin_type_ada_positive, builtin_type_ada_system_address): Remove.
	(ada_builtin_types): Remove.
	(ada_language_defn): Remove entries for la_builtin_type_vector and
	string_char_type and use ada_language_arch_info.
	(_initialize_ada_language): Do type-vector initialization along
	the lines of c-lang.c.
	(ada_create_fundamental_type): Break up line.
	(ada_dump_symtab): Remove unused function.
	(enum ada_primitive_types): Define.
	* ada-lang.h (builtin_type_ada_int, builtin_type_ada_short, 
	builtin_type_ada_long,builtin_type_ada_long_long,builtin_type_ada_char, 
	builtin_type_ada_float, builtin_type_ada_double, 
	builtin_type_ada_long_double, builtin_type_ada_natural,
	builtin_type_ada_positive, builtin_type_ada_system_address): Remove.
	* ada-lex.l: Use type_* functions in place of builtin_* variables.
	(processInt): Ditto.
	(processReal): Ditto.
	(name_lookup): Ditto.
	* ada-typeprint.c (print_range): Use builtin_type_int, not
	builtin_type_ada_int.
	
2004-09-18  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_register_name): Rename regno to regnum.

	* config/pa/hpux1020.mh (MH_CFLAGS): Remove -D__HP_CURSES.
	* config/pa/hpux11.mh (MH_CFLAGS): Likewise.
	* config/pa/hpux11w.mh (MH_CFLAGS): Likewise.
	* configure.in: Improve checks for curses library by checking for
	mvwaddstr instead of initscr.  Drop HP curses in favour of
	standard curses on HP-UX.
	* configure: Regenerated.

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

	* ada-lang.c: (ada_main_name, ada_value_slice_ptr, ada_value_slice,
	ada_breakpoint_rewrite, ada_template_to_fixed_record_type_1): 
	Minor formatting changes.
	(empty_array): Slight rewrite for formatting.
	(emit_char,parse,ada_language_defn,build_ada_types,
	ada_is_exception_sym, _initialize_ada_language): Move 
	definitions around.
	(ada_dump_symtab): Remove unused definition.
	(ada_maybe_exception_partial_symbol): Remove unused definition.

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

	* inf-child.c: Include "gdb_string.h".
	(inf_child_core_file_to_sym_file): Delete.
	(inf_child_target): Set to_fetch_registers and to_store_registers.
	* inf-ptrace.c: Include "gdb_string.h".
	* Makefile.in: Update all dependencies.

	* Makefile.in (gnu-v3-abi.o): Add explict rule to avoid -Werror
	problem.

2004-09-14  Joel Brobecker  <brobecker@gnat.com>

	* mips-tdep.c (mips_insn32_frame_cache): Pass frame cache in
	call to heuristic_proc_desc. Remove code that became redundant
	as a consequence.
	(read_next_frame_reg): Remove special case for SP_REGNUM.
	(set_reg_offset): Fix small typo.
	(reset_saved_regs): New procedure.
	(mips32_heuristic_proc_desc): No longer compute a fake
	procedure descriptor. Compute the full frame cache instead.
	Some minor comment reformatting.

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

	* MAINTAINERS: Add Michael Chastain as the backup gdb.threads
	maintainer.

	* thread-db.c (thread_db_new_objfile): Assume that there is a
	child process.

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

	* valops.c (value_assign): Move 'buffer' to the enclosing block,
	so that its storage isn't referenced after its lifetime ends.

	* valops.c (value_assign): 'use_buffer' is initialized to zero,
	and never assigned to.   Delete it, and the 'if (use_buffer)'
	clauses.  Delete 'raw_buffer', since it is now unused.

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

	* configure.in (frags): Replace TM_FILE with DEPRECATED_TM_FILE.
	* configure: Re-generate.
	* nlm/Makefile.in (TAGS): Update.
	* Makefile.in (TAGS): Update.
	* config/vax/nbsd.mt (TM_FILE): Update.
	* config/sparc/vxworks.mt (TM_FILE): Update.
	* config/sparc/sol2.mt (TM_FILE): Update.
	* config/sparc/sol2-64.mt (TM_FILE): Update.
	* config/sparc/obsd64.mt (TM_FILE): Update.
	* config/sparc/obsd.mt (TM_FILE): Update.
	* config/sparc/nbsd64.mt (TM_FILE): Update.
	* config/sparc/nbsd.mt (TM_FILE): Update.
	* config/sparc/linux64.mt (TM_FILE): Update.
	* config/sparc/linux.mt (TM_FILE): Update.
	* config/sparc/fbsd.mt (TM_FILE): Update.
	* config/sh/wince.mt (TM_FILE): Update.
	* config/sh/nbsd.mt (TM_FILE): Update.
	* config/sh/linux.mt (TM_FILE): Update.
	* config/sh/embed.mt (TM_FILE): Update.
	* config/s390/s390.mt (TM_FILE): Update.
	* config/rs6000/rs6000lynx.mt (TM_FILE): Update.
	* config/rs6000/rs6000.mt (TM_FILE): Update.
	* config/rs6000/aix4.mt (TM_FILE): Update.
	* config/powerpc/vxworks.mt (TM_FILE): Update.
	* config/powerpc/ppc-sim.mt (TM_FILE): Update.
	* config/powerpc/ppc-eabi.mt (TM_FILE): Update.
	* config/powerpc/obsd.mt (TM_FILE): Update.
	* config/powerpc/nbsd.mt (TM_FILE): Update.
	* config/powerpc/linux.mt (TM_FILE): Update.
	* config/powerpc/aix.mt (TM_FILE): Update.
	* config/pa/obsd.mt (TM_FILE): Update.
	* config/pa/linux.mt (TM_FILE): Update.
	* config/pa/hppahpux.mt (TM_FILE): Update.
	* config/pa/hppa64.mt (TM_FILE): Update.
	* config/pa/hppa.mt (TM_FILE): Update.
	* config/ns32k/nbsdaout.mt (TM_FILE): Update.
	* config/mips/wince.mt (TM_FILE): Update.
	* config/mips/vxmips.mt (TM_FILE): Update.
	* config/mips/nbsd.mt (TM_FILE): Update.
	* config/mips/linux.mt (TM_FILE): Update.
	* config/mips/irix6.mt (TM_FILE): Update.
	* config/mips/irix5.mt (TM_FILE): Update.
	* config/mips/embed.mt (TM_FILE): Update.
	* config/m68k/vxworks68.mt (TM_FILE): Update.
	* config/m68k/st2000.mt (TM_FILE): Update.
	* config/m68k/os68k.mt (TM_FILE): Update.
	* config/m68k/obsd.mt (TM_FILE): Update.
	* config/m68k/nbsd.mt (TM_FILE): Update.
	* config/m68k/monitor.mt (TM_FILE): Update.
	* config/m68k/linux.mt (TM_FILE): Update.
	* config/m68k/cisco.mt (TM_FILE): Update.
	* config/ia64/linux.mt (TM_FILE): Update.
	* config/ia64/aix.mt (TM_FILE): Update.
	* config/ia64/ia64.mt (TM_FILE): Update.
	* config/i386/vxworks.mt (TM_FILE): Update.
	* config/i386/obsd64.mt (TM_FILE): Update.
	* config/i386/obsd.mt (TM_FILE): Update.
	* config/i386/nto.mt (TM_FILE): Update.
	* config/i386/nbsd64.mt (TM_FILE): Update.
	* config/i386/nbsd.mt (TM_FILE): Update.
	* config/i386/linux64.mt (TM_FILE): Update.
	* config/i386/linux.mt (TM_FILE): Update.
	* config/i386/i386sol2.mt (TM_FILE): Update.
	* config/i386/i386lynx.mt (TM_FILE): Update.
	* config/i386/fbsd64.mt (TM_FILE): Update.
	* config/i386/fbsd.mt (TM_FILE): Update.
	* config/i386/cygwin.mt (TM_FILE): Update.
	* config/h8300/h8300.mt (TM_FILE): Update.
	* config/frv/frv.mt (TM_FILE): Update.
	* config/cris/cris.mt (TM_FILE): Update.
	* config/arm/wince.mt (TM_FILE): Update.
	* config/arm/nbsd.mt (TM_FILE): Update.
	* config/arm/linux.mt (TM_FILE): Update.
	* config/arm/embed.mt (TM_FILE): Update.
	* config/alpha/nbsd.mt (TM_FILE): Update.
	* config/alpha/fbsd.mt (TM_FILE): Update.
	* config/alpha/alpha.mt (TM_FILE): Update.
	* config/alpha/alpha-osf1.mt (TM_FILE): Update.
	* config/alpha/alpha-linux.mt (TM_FILE): Update.

	Eliminate event_loop_p, always has the value 1.
	* defs.h (event_loop_p): Delete macro.
	* breakpoint.c (until_break_command): Simplify.
	* utils.c (prompt_for_continue): Simplify.
	* tracepoint.c (read_actions): Simplify.
	* top.c (throw_exception, execute_command, gdb_readline_wrapper) 
	(gdb_rl_operate_and_get_next, command_line_input, get_prompt) 
	(set_prompt, init_main): Simplify.
	(init_signals, disconnect): Delete, unused.
	* remote.c (remote_async_resume) 
	(extended_remote_async_create_inferior): Simplify.
	* mi/mi-interp.c (mi_input): Delete, unused.
	(mi_interpreter_resume, mi_command_loop): Simplify.
	* interps.c (current_interp_command_loop): Simplify.
	* infrun.c (proceed): Simplify.
	* infcmd.c (run_command, continue_command, step_1, jump_command)
	(until_command, advance_command, finish_command)
	(interrupt_target_command): Simplify.
	* event-top.c (gdb_setup_readline, gdb_disable_readline): Simplify.

	* config/i386/nm-i386.h (TARGET_HAS_HARDWARE_WATCHPOINTS): Delete.
	* config/s390/nm-linux.h (TARGET_HAS_HARDWARE_WATCHPOINTS): Delete.
	* config/pa/nm-hppah.h (TARGET_HAS_HARDWARE_WATCHPOINTS): Delete.
	* config/ia64/nm-linux.h (TARGET_HAS_HARDWARE_WATCHPOINTS): Delete.
	* config/frv/tm-frv.h (TARGET_HAS_HARDWARE_WATCHPOINTS): Delete.
	* mips-tdep.c (mips_dump_tdep): Do not print same.

2004-09-12  Andrew Cagney  <cagney@gnu.org>

	* valprint.c (print_longest): Use fputs_filtered.  Make "val"
	const.
	* Makefile.in (valprint.o): Delete explict rule.

	* config/m68k/nbsdelf.mh: Add missing trailing newline.  Problem
	reported by Dave Anderson.

	* target.c (target_info): Delete #ifdef call to FILES_INFO_HOOK.

	* inferior.h (STORE_STRUCT_RETURN): Delete macro.

2004-09-12  Salvador E. Tropea  <set@users.sf.net>
	    Andrew Cagney  <cagney@gnu.org>

	* mi/mi-main.c (mi_cmd_data_list_changed_registers)
	(mi_cmd_data_list_register_values)
	(mi_cmd_data_write_register_values): Include the PSEUDO_REGS in
	the register number computation.

2004-09-12  Andrew Cagney  <cagney@gnu.org>

	* ppcnbsd-nat.c: Include "inf-ptrace.h".
	(ppcnbsd_fetch_inferior_registers): Rename fetch_inferior_registers.
	(ppcnbsd_store_inferior_registers): Rename store_inferior_registers.
	(_initialize_ppcnbsd_nat): Create and add a NetBSD/PPC ptrace
	target.
	* config/powerpc/nbsd.mh (NATDEPFILES): Replace and inftarg.o with
	inf-ptrace.o and inf-child.o.
	* inf-ptrace.h, inf-ptrace.c, inf-child.h, inf-child.c: New files.
	* Makefile.in: Update dependencies.
	
2004-09-11  Andrew Cagney  <cagney@gnu.org>

	* language.c (hex_string, hex_string_custom): Move from here ...
	* utils.c (hex_string, hex_string_custom): ... to here, rewrite.
	(CELLSIZE): Increase to 50.
	* language.h (hex_string, hex_string_custom): Move from here ...
	* defs.h: ... to here.
	* Makefile.in: Update all dependencies.
	
2004-09-11  Paul N. Hilfinger  <hilfinger@gnat.com>

        * language.c (local_hex_format_custom): Remove.
	(local_hex_string): Rename to hex_string, use C format, and move to
	utils.c
	(local_hex_string_custom): Rename to hex_string_custom and change
	interface.  Now uses C format.  Move to utils.c
	(local_octal_format_custom): Remove.
	(local_decimal_format_custom): Remove.
	(unknown_language_defn): Remove language-specific number 
	formatting entries.
	(auto_language_defn): Ditto.
	(local_language_defn): Ditto.
	* language.h (struct language_format_info): Delete declaration.
	(struct language_defn): Remove language_format_info fields
	la_binary_format, la_octal_format, la_decimal_format, la_hex_format.
	(local_binary_format): Remove macro.
	(local_binary_format_prefix): Remove macro.
	(local_binary_format_specifier): Remove macro.
	(local_binary_format_suffix): Remove macro.
	(local_octal_format): Remove macro.
	(local_octal_format_prefix): Remove macro.
	(local_octal_format_specifier): Remove macro.
	(local_octal_format_suffix): Remove macro.
	(local_decimal_format): Remove macro.
	(local_decimal_format_prefix): Remove macro.
	(local_decimal_format_specifier): Remove macro.
	(local_decimal_format_suffix): Remove macro.
	(local_hex_format): Remove macro.
	(local_hex_format_prefix): Remove macro.
	(local_hex_format_specifier): Remove macro.
	(local_hex_format_suffix): Remove macro.
	(local_decimal_format_custom): Remove.
	(local_octal_format_custom): Remove.
	(local_hex_format_custom): Remove.
	(local_hex_string): Rename to hex_string and move to defs.h.
	(local_hex_string_custom): Rename to hex_string_custom, change
	interface, and move to defs.h.
	* utils.c: (int_string): New function.
	(hex_string): New function (from language.c).
	(hex_string_custom): New function (from language.c).
	(octal2str): New function.
	(decimal2str): Add width parameter.
	(paddr_u): Use new decimal2str interface.
	(paddr_d): Ditto.
	* defs.h (hex_string): Declare.
	(hex_string_custom): Declare.
	(int_string): Declare.
	* printcmd.c (print_scalar_formatted): Remove localized binary
	formatting.
	* valprint.c (print_longest): Use int_string.
	(print_floating): Use C hex format.
	(print_hex_chars): Ditto.
	(print_binary_chars): Remove language-specific formatting.
	(print_octal_chars): Use C octal format.
	(print_decimal_chars): Delocalize format.
	(print_decimal): Remove.
	* ada-lang.c (ada_language_defn): Remove language-specific number 
	formatting entries.
	* p-lang.c (pascal_language_defn): Ditto.
	* 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.
	* m2-lang.c (m2_language_defn): Ditto.
	* scm-lang.c (scm_language_defn): Ditto.
	* objc-lang.c (objc_language_defn): Ditto.
	* memattr.c (mem_info_command): Use renamed hex_string_custom with
	new interface.
	* pa64solib.c (pa64_sharedlibrary_info_command): Ditto.
	* ui-out.c (ui_out_field_core_addr): Ditto.
	* breakpoint.c (breakpoint_adjustment_warning): Ditto.
	* exec.c (print_section_info): Ditto.
	* i387-tdep.c (print_i387_status_word): Ditto.
	(print_i387_control_word): Ditto.
	(i387_print_float_info): Ditto.
	* maint.c (maint_print_section_info): Ditto.
	* solib.c (info_sharedlibrary_command): Ditto.
	* somsolib.c (som_sharedlibrary_info_command): Ditto.
	* symtab.c (print_msymbol_info): Ditto.
	* tracepoint.c (tracepoints_info): Ditto.
	* solib-frv.c (lm_base): Ditto.
	(frv_current_sos): Ditto.
	(enable_break2): Ditto.
	(enable_break): Ditto.
	* dbxread.c (read_dbx_symtab): Use renamed hex_string.
	(process_one_symbol): Ditto.
	* infcmd.c (program_info): Ditto.
	* mdebugread.c (parse_partial_symbols): Ditto.
	* symfile.c (add_symbol_file_command): Ditto.
	* cli/cli-cmds.c (edit_command): Ditto.
	(list_command): Ditto.
	* infcall.c (call_function_by_hand): Ditto.
	* remote-vx.c (vx_run_files_info): Ditto.
	(vx_wait): Ditto.
	(vx_attach): Ditto.
	(vx_detach): Ditto.
	(vx_kill): Ditto.
	* aix-thread.c (pdc_symbol_addrs): Ditto.
	(pdc_read_regs): Ditto.
	(pdc_write_regs): Ditto.
	(pdc_read_data): Ditto.
	(pdc_write_data): Ditto.
	* d10v-tdep.c (display_trace): Ditto.
	* rs6000-nat.c (find_toc_address): Ditto.
	* aix-thread.c: Don't include language.h.
	* buildsym.c: Ditto.
	* dbxread.c: Ditto.
	* mdebugread.c: Ditto.
	* rs6000-nat.c: Ditto.
	* buildsym.c (make_blockvector): Use renamed hex_string.
	
2004-09-10  Jason Molenda  (jmolenda@apple.com)

        * cli/cli-script.c (read_next_line): Accept zero or more whitespace
        chars after 'if' or 'while' commands in user-defined commands.

2004-09-08  Jim Blandy  <jimb@redhat.com>

        Fix bug reported and analyzed by Olivier Crete:
	* symfile.c (copy_section_addr_info): New function.
	(symbol_file_add_with_addrs_or_offsets): Use it to save the
	original set of address arguments, instead of handwritten code
	that uses one length to allocate and a different length to
	initialize.  Use make_cleanup_free_section_addr_info.
	* symfile.h (copy_section_addr_info): New declaration.
	* utils.c: #include "symfile.h".
	(do_free_section_addr_info, make_cleanup_free_section_addr_info):
	New functions.
	* defs.h (make_cleanup_free_section_addr_info): New declaration.
	* Makefile.in (utils.o): Update dependencies.

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

	* thread-db.c (keep_thread_db): Delete.
	(thread_db_new_objfile, thread_db_create_inferior)
	(thread_db_mourn_inferior): Simplify assuming !keep_thread_db.

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

	* i386-tdep.h (FPC_REGNUM, FCTRL_REGNUM, FSTAT_REGNUM, FTAG_REGNUM)
	(FISEG_REGNUM, FIOFF_REGNUM, FOSEG_REGNUM, FOOFF_REGNUM)
	(FOP_REGNUM, XMM0_REGNUM, MXCSR_REGNUM): Remove macros.
	(i386_frameless_signal_p): Remove prototype.
	* i386-linux-nat.c (GETFPREGS_SUPPLIES): Remove macro.
	(GETFPXREGS_SUPPLIES): Define using I386_ST0_REGNUM and
	I386_SSE_NUM_REGS.
	* i386-nto-tdep.c (i386nto_supply_gregset): Use I386_NUM_GREGS
	instead of FP0_REGNUM.
	(i386nto_regset_id): Use I386_NUM_GREGS and I386_NUM_FREGS instead
	of FP0_REGNUM and FPC_REGNUM.

	* solib-sunos.c (sunos_relocate_main_executable): Remove function.
	(sunos_solib_create_inferior_hook): Don't call
	sunos_relocate_main_executable.

	* sparcnbsd-tdep.c (sparc32nbsd_elf_init_abi): Set
	solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets.
	* sparcobsd-tdep.c: Don't include "nbsd-tdep.h".
	(sparc32obsd_init_abi): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets.
	* Makefile.in (sparcobsd-tdep.o): Update dependencies.

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

	* frame.h (frame_register): Doc fix.

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

	* vx-share/wait.h: Delete #ifdef USG.
	* utils.c (request_quit): Ditto.
	* tui/tui.c (tui_reset): Ditto.
	* remote.c: Ditto.
	* remote-sds.c: Ditto.
	* remote-rdi.c: Ditto.
	* mdebugread.c: Ditto.
	* m68klinux-nat.c: Ditto.
	* infttrace.c: Ditto.
	* infptrace.c: Ditto.
	* i386v-nat.c: Ditto.
	* exec.c: Ditto.
	* dbxread.c: Ditto.
	* core-aout.c: Ditto.

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

	* mips-tdep.c (mips_insn16_frame_cache): Fix parameter in call to
	heuristic_proc_desc.
	(mips_insn32_frame_cache): Likewise.

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

	* mips-tdep.c (mips32_heuristic_proc_desc): Remove code that was
	left behind by error.

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

	* config/alpha/nm-osf.h (PTRACE_ARG3_TYPE): Remove define.
	* config/powerpc/nm-aix.h (PTRACE_ARG3_TYPE): Likewise.

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

	* config/rs6000/xm-aix4.h: Remove this file.
	* config/rs6000/aix4.mh (XM_FILE): Delete.

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

	* config/rs6000/xm-rs6000.h: Remove this file.
	* config/rs6000/rs6000.mh (XM_FILE): Remove.

2004-09-03  Andrew Cagney  <cagney@gnu.org>

	* mips-tdep.c (PROC_DESC_IS_DUMMY, SET_PROC_DESC_IS_DUMMY)
	(_PROC_MAGIC_, after_prologue, mips_dump_tdep): Delete macros and
	only use.

	* mips-tdep.c (temp_saved_regs): Delete.
	(set_reg_offset): Replace saved_regs parameter with this_cache.
	(heuristic_proc_desc, mips16_heuristic_proc_desc)
	(mips32_heuristic_proc_desc): Add this_cache parameter.
	(mips_insn32_frame_cache, mips_insn16_frame_cache)
	(after_prologue): Pass a NULL this_cache.

	* mips-tdep.c (mips_mdebug_frame_cache): Delete code handling
	non-kernel trap prologues.

	* mips-tdep.c (find_proc_desc): Delete function.
	(mips_mdebug_frame_cache): Inline call to find_proc_desc,
	simplify.
	(mips_insn16_frame_cache): Replace find_proc_desc with code from
	mips_insn32_frame_cache.

	* mips-tdep.c (after_prologue): Inline call to find_proc_desc.
	Simplify as NEXT_FRAME is NULL.
	(find_proc_desc): Simplify as NEXT_FRAME is non-NULL.

	* mips-tdep.c (after_prologue): Replace proc_desc parameter with
	local variable.
	(mips_skip_prologue): Update.

	* mips-tdep.c (find_proc_desc, heuristic_proc_desc): Delete
	"cur_frame" parameter.
	(after_prologue, mips_mdebug_frame_cache, mips_insn16_frame_cache):
	(mips_insn32_frame_cache, find_proc_desc): Update

	* config/vax/nm-obsd.h: Delete file.
	* config/vax/obsd.mh (NAT_FILE): Set to config/nm-bsd.h.
	* config/vax/nm-nbsd.h: Delete file.
	* config/vax/nm-nbsdaout.h: Include config/nm-nbsd.h.
	* config/vax/nbsdelf.mh (NAT_FILE): Set to config/nm-nbsd.h.
	* config/sh/nm-nbsd.h: Delete file.
	* config/sh/nbsd.mh (NAT_FILE): Set to config/nm-nbsd.h.
	* config/rs6000/nm-rs6000ly.h: Delete file.
	* config/djgpp/fnchange.lst: Do not rename nm-rs6000ly.h.
	* config/rs6000/rs6000lynx.mh (NAT_FILE): Set to config/nm-lynx.h.
	* config/powerpc/nm-obsd.h: Delete file.
	* config/powerpc/obsd.mh (NAT_FILE): Set to config/nm-bsd.h.
	* config/powerpc/nm-nbsd.h: Delete file.
	* config/powerpc/nbsd.mh (NAT_FILE): Set to config/nm-nbsd.h.
	* config/pa/nm-obsd.h: Delete file.
	* config/pa/obsd.mh (NAT_FILE): Set to config/nm-bsd.h.
	* config/mips/nm-nbsd.h: Delete file.
	* config/mips/nbsd.mh (NAT_FILE): Set to config/nm-nbsd.h.
	* config/m88k/nm-obsd.h: Delete file.
	* config/m88k/obsd.mh (NAT_FILE): Set to config/nm-bsd.h.
	* config/m68k/nm-nbsd.h: Delete file.
	* config/m68k/nm-nbsdaout.h: Include config/nm-nbsd.h.
	* config/m68k/nbsdelf.mh (NAT_FILE): Set to config/nm-nbsd.h.
	* config/i386/nm-nbsd.h: Delete file.
	* config/i386/nm-nbsdaout.h: Include config/nm-nbsd.h.
	* config/i386/obsd64.mh (NAT_FILE): Set to config/nm-nbsd.h.
	* config/i386/nbsd64.mh (NAT_FILE): Set to config/nm-nbsd.h.
	* config/i386/nbsdelf.mh (NAT_FILE): Set to config/nm-nbsd.h.
	* config/i386/nm-i386lynx.h: Delete file.
	* config/i386/i386lynx.mh (NAT_FILE): Set to config/nm-lynx.h.
	* config/arm/nm-nbsd.h: Delete file.
	* config/arm/nm-nbsdaout.h: Include config/nm-nbsd.h.
	* config/arm/nbsdelf.mh (NAT_FILE): Set to config/nm-nbsd.h.

	* config/i386/tm-fbsd.h: Delete file.
	* config/i386/fbsd64.mt (TM_FILE): Set to solib.h.
	* config/i386/fbsd.mt (TM_FILE): Set to solib.h.

	* config/rs6000/tm-rs6000-aix4.h: Delete file.
	* config/djgpp/fnchange.lst: Do not rename tm-rs6000-aix4.h.
	* config/rs6000/aix4.mt (TM_FILE): Set to
	config/rs6000/tm-rs6000.h.
	* config/powerpc/tm-ppc-aix.h: Delete file.
	* config/powerpc/aix.mt (TM_FILE): Set to
	config/rs6000/tm-rs6000.h.
	* config/m68k/tm-linux.h: Delete file.
	* config/m68k/linux.mt (TM_FILE): Set to solib.h
	* config/i386/tm-linux64.h: Delete file.
	* config/i386/linux64.mt (TM_FILE): Set to solib.h.
	* config/djgpp/fnchange.lst: Do not rename tm-linux.h.
	
	* config/m68k/tm-linux.h (SVR4_SHARED_LIBS): Delete.
	* config/i386/tm-linux64.h (SVR4_SHARED_LIBS): Delete.
	* config/i386/nm-i386sco5.h (SVR4_SHARED_LIBS): Delete.
	* config/tm-linux.h (SVR4_SHARED_LIBS): Delete.
	* config/nm-sysv4.h (SVR4_SHARED_LIBS): Delete.
	* config/nm-linux.h (SVR4_SHARED_LIBS): Delete.
	* config/nm-gnu.h (SVR4_SHARED_LIBS): Delete.
	* sh64-tdep.c [SVR4_SHARED_LIBS]: Delete #ifdef wrapper. 
	* sh-tdep.c [SVR4_SHARED_LIBS]: Delete #ifdef wrapper.

	* configure.in (GDB_TM_FILE): Fix typo, use gdb_target_cpu and not
	gdb_host_cpu.

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

	* mips-tdep.c (mips_insn32_frame_cache): Remove some dead code.
	Minor reformatting. Some code factoring.

2004-09-02  Andrew Cagney  <cagney@gnu.org>

	* config/vax/nbsd.mt (TM_FILE): Set to solib.h.
	* config/vax/tm-nbsd.h: Delete file.
	* config/sparc/vxworks.mt (TM_FILE): Set to config/tm-vxworks.h.
	* config/sparc/tm-vxworks.h: Delete file.
	* config/sparc/nbsd.mt (TM_FILE): Set to solib.h.
	* config/sparc/tm-nbsd.h: Delete file.
	* config/sparc/linux64.mt (TM_FILE): Set to solib.h.
	* config/sparc/linux.mt (TM_FILE): Set to solib.h.
	* config/sparc/tm-linux.h: Delete file.
	* config/s390/s390.mt (TM_FILE): Set to config/tm-linux.h
	* config/s390/tm-linux.h: Delete file.
	* config/pa/obsd.mt (TM_FILE): Set to solib.h.
	* config/pa/tm-bsd.h: Delete file.
	* config/m68k/obsd.mt (TM_FILE): Set to solib.h.
	* config/m68k/tm-obsd.h: Delete file.
	* config/m68k/nbsd.mt (TM_FILE): Set to solib.h.
	* config/m68k/tm-nbsd.h: Delete file.
	* config/i386/vxworks.mt (TM_FILE): Set to config/tm-vxworks.h.
	* config/i386/tm-vxworks.h: Delete file.
	* config/i386/obsd64.mt (TM_FILE): Set to solib.h.
	* config/i386/obsd.mt (TM_FILE): Set to solib.h.
	* config/i386/nbsd64.mt (TM_FILE): Set to solib.h.
	* config/i386/nbsd.mt (TM_FILE): Set to solib.h.
	* config/i386/tm-nbsd.h: Delete file.
	* config/i386/i386lynx.mt (TM_FILE): Set to config/tm-lynx.h.
	* config/i386/tm-i386lynx.h: Delete file.
	* config/cris/cris.mt (TM_FILE): Set to solib.h.
	* config/cris/tm-cris.h: Delete file.

	* configure.in: Let TM_FILE, XM_FILE and NAT_FILE specify a path.
	* configure: Re-generate.
	* config/arm/nbsd.mt (TM_FILE): Set to "solib.h".
	* config/arm/tm-nbsd.h: Delete file.
	
	* config/powerpc/tm-ppcle-sim.h: Delete.
	* config/powerpc/tm-ppcle-eabi.h: Delete.
	* config/powerpc/tm-nbsd.h: Delete.
	* config/powerpc/nbsd.mt (TM_FILE): Set to tm-ppc-eabi.h.
	* config/djgpp/fnchange.lst: Do not rename tm-ppcle-sim.h or
	tm-ppcle-eabi.h.

	* config/i386/nto.mh (NAT_FILE): Delete.
	* config/i386/nm-nto.h: Delete.

	* config/m68k/tm-vx68.h: Do not include "tm-m68k.h".
	* config/m68k/tm-os68k.h: Ditto.
	* config/m68k/tm-monitor.h: Ditto.
	* config/m68k/tm-cisco.h: Ditto.
	* config/m68k/st2000.mt (TM_FILE): Delete.
	* config/m68k/tm-vx68.h (GET_LONGJMP_TARGET): Delete.
	* config/m68k/tm-cisco.h (GET_LONGJMP_TARGET): Delete.
	* config/m68k/tm-m68k.h (m68k_get_longjmp_target): Delete file.
	* m68k-tdep.c (m68k_get_longjmp_target): Make static.

	* config/m68k/tm-st2000.h: Delete.
	* config/m68k/st2000.mt (TM_FILE): Set to tm-m68k.h.
	* config/sparc/fbsd.mt (TM_FILE): Delete.
	* config/sparc/tm-fbsd.h: Delete.

	* acconfig.h (GDB_MULTI_ARCH): Delete undef.
	* defs.h (GDB_MULTI_ARCH_PARTIAL, GDB_MULTI_ARCH_TM) 
	(GDB_MULTI_ARCH_PURE, GDB_MULTI_ARCH): Delete macros.

	* gdbarch.sh: Instead of GDB_MULTI_ARCH print GDB_NM_FILE,
	GDB_TM_FILE and GDB_XM_FILE.
	* gdbarch.c: Re-generate.	
	* configure.in (GDB_XM_FILE, GDB_NM_FILE, GDB_TM_FILE): Include
	quotes in macro definition.
	* configure.in: Re-generate.

	* gdbarch.sh: Delete check for GDB_MULTI_ARCH_PARTIAL when
	validating architecture methods.
	* gdbarch.c: Re-generate.
	
	* gdbarch.sh: Delete check for consistency between GDB_MULTI_ARCH
	and GDB_TM_FILE.  Check for GDB_TM_FILE instead of
	GDB_MULTI_ARCH_PARTIAL.
	* gdbarch.h: Re-generate.
	
	* config/sparc/tm-vxworks.h (GDB_MULTI_ARCH): Delete.
	* config/sparc/tm-sol2.h (GDB_MULTI_ARCH): Delete.
	* config/sparc/tm-nbsd.h (GDB_MULTI_ARCH): Delete.
	* config/sparc/tm-linux.h (GDB_MULTI_ARCH): Delete.
	* config/sparc/tm-fbsd.h (GDB_MULTI_ARCH): Delete.
	* config/sh/tm-sh.h (GDB_MULTI_ARCH): Delete.
	* config/rs6000/tm-rs6000.h (GDB_MULTI_ARCH): Delete.
	* config/pa/tm-hppa.h (GDB_MULTI_ARCH): Delete.
	* config/mips/tm-mips.h (GDB_MULTI_ARCH): Delete.
	* config/ia64/tm-ia64.h (GDB_MULTI_ARCH): Delete.
	* config/cris/tm-cris.h (GDB_MULTI_ARCH): Delete.
	* config/arm/tm-arm.h (GDB_MULTI_ARCH): Delete.

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

	* objfiles.h (struct entry_info): Delete fields main_func_lowpc
	and main_func_highpc.
	(INVALID_ENTRY_LOWPC, INVALID_ENTRY_HIGHPC): Delete macros.
	* objfiles.c (init_entry_point_info, objfile_relocate): Update
	* nlmread.c (nlm_symfile_read): Update.

2004-09-01  Joel Brobecker  <brobecker@gnat.com>

	* mips-tdep.c (linked_proc_desc_table): Delete, not used.
	(mips_insn32_frame_cache): Inline call to find_proc_desc.
	(find_proc_desc): Remove dead code.

2004-09-01  Joel Brobecker  <brobecker@gnat.com>

	* mips-tdep.c (mips_mdebug_frame_cache): Minor reformatting.

2004-09-01  Jeff Johnston  <jjohnstn@redhat.com>

	* observer.sh: Add struct so_list declaration.
	* Makefile.in: Add dependencies on observer.h for solib.c and
	breakpoint.c.
	* breakpoint.c (disable_breakpoints_in_unloaded_shlib): New
	function.
	(_initialize_breakpoint): Register 
	disable_breakpoints_in_unloaded_shlib as an observer of the 
        "solib unloaded" observation event.
	(re_enable_breakpoints_in_shlibs): For bp_shlib_disabled breakpoints,
	call decode_line_1 so unfound breakpoint errors are silent.
	* solib.c (update_solib_list): When a solib is discovered to have
	been unloaded by the program, notify all observers of the
	"solib unloaded" observation event.

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

	* frame.c: Include "objfiles.h".
	(inside_main_func): New function.
	(get_prev_frame): Use new inside_main_func.
	* Makefile.in (frame.o): Update dependencies.
	* defs.h (inside_main_func): Delete declaration.
	* blockframe.c (inside_main_func): Delete function.

2004-08-31  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c (is_vtable_name): New function, based on logic from
	read_structure_type, but passing the correct length to strncmp,
	and using 'sizeof' instead of 'strlen'.
	(read_structure_type): Call it.

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

	* config/powerpc/aix.mh: Add comment.

2004-08-31  Paul GIlliam  <pgilliam@us.ibm.com>

	* MAINTAINERS: Add self to Write-After-Approval.

2004-08-30  Manoj Iyer  <manjo@austin.ibm.com>

	* MAINTAINERS: Add self to Write-After-Approval.

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

	Fix PR breakpoints/1757.
	* infrun.c (struct execution_control_state): Replace
	remove_breakpoints_on_following_step with
	step_after_step_resume_breakpoint.
	(init_execution_control_state): Update.
	(handle_inferior_event): For signals, when stepping off a
	breakpoint, set step_after_step_resume_breakpoint.  When
	BPSTAT_WHAT_STEP_RESUME, do a single-step off the breakpoint.
	(keep_going): Delete code handling
	remove_breakpoints_on_following_step.

2004-08-29  David Lecomber  <david@streamline-computing.com>
	
	Fix PR gdb/648
	* language.h (enum array_ordering): New enum.
	* language.h (struct language_defn): New la_array_ordering 
	attribute.
	* language.c (unknown_language_defn, auto_language_defn)
	(local_language_defn): Ditto.
	* ada-lang.c (ada_language_defn): Ditto.
	* c-lang.c (c_language_defn, cplus_language_defn)
	(asm_language_defn, minimal_language_defn): Ditto.
	* f-lang.c (f_language_defn): Ditto.
	* jv-lang.c (java_language_defn): Ditto.
	* m2-lang.c (f_language_defn): Ditto.
	* objc-lang.c (objc_language_defn): Ditto.
	* p-lang.c (pascal_language_defn): Ditto.
	* scm-lang.c (scm_language_defn): Ditto.
	* eval.c (evaluate_subexp_standard): Assume Fortran arrays are
	oriented large to small in type structure.
	* dwarf2read.c (read_array_order): New function.
	(read_array_type): Use read_array_order to check row/column
	major ordering.

2004-08-27  Nathan J. Williams  <nathanw@wasabisystems.com>

	* target.c (target_resize_to_sections): Check
	current_target.to_sections for an old value when updating.

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

	* procfs.c (dbx_link_bpt_addr): New static global variable.
	(dbx_link_shadow_contents): New static global variable.
	(procfs_wait, case <PR_SYSEXIT>): Handle syssgi events.
	(procfs_wait, case <FLTBPT>): Remove the __dbx_link brekapoint
	if we just hit it.
	(procfs_init_inferior): Enable syssgi() syscall trace if appropriate.
	Reset dbx_link_bpt_addr as the address of __dbx_link() may change
	from run to run.
	(procfs_create_inferior): Remove syssgi syscall-exit notifications
	after the inferior has been forked.
	(remove_dbx_link_breakpoint): New function.
	(dbx_link_addr): New function.
	(insert_dbx_link_bpt_in_file): New function.
	(insert_dbx_link_bpt_in_region): New function.
	(insert_dbx_link_breakpoint): New function.
	(proc_trace_syscalls_1): New function, extracted from
	proc_trace_syscalls.
	(proc_trace_syscalls): Replace extract code by call to
	proc_trace_syscalls_1.
	* solib-irix.c (disable_break): Remove stop_pc assertion, as it
	is no longer valid.

2004-08-25  Jim Blandy  <jimb@redhat.com>

	* gdbtypes.h (TYPE_CODE_ARRAY): Doc fix.

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

	* infrun.c (struct execution_control_state): Delete field
	"stepping_through_sigtramp".
	(init_execution_control_state): Do not set same.
	(context_switch): Do not pass same to save_infrun_state and
	load_infrun_state.
	* gdbthread.h (struct thread_info): Delete field
	stepping_through_sigtramp.
	(save_infrun_state, load_infrun_state): Delete parameter
	stepping_through_sigtramp.
	* thread.c (load_infrun_state, save_infrun_state): Update.

	* infrun.c: Re-indent.  Move expression operators to the beginning
	of the line.  Remove long disabled #if 0 code.

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

	* doublest.h (floatformat_ieee_quad): Rename
	floatformat_ia64_quad.
	* doublest.c (floatformat_ieee_quad): Rename
	floatformat_ia64_quad.
	(_initialize_doublest): Update.

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

	* dwarf2expr.h (struct dwarf_expr_context): New members
	'num_pieces' and 'pieces', for returning the result of an
	expression that uses DW_OP_piece.
	(struct dwarf_expr_piece): New struct type.
	* dwarf2expr.c (new_dwarf_expr_context): Initialize num_pieces and
	pieces.
	(free_dwarf_expr_context): Free pieces, if any.
	(add_piece): New function.
	(execute_stack_op): Implement DW_OP_piece.
	* dwarf2loc.c (dwarf2_evaluate_loc_desc): If the result of the
	expression is a list of pieces, print an error message.
        (dwarf2_loc_desc_needs_frame): If the expression yields
        pieces, and any piece is in a register, then we need a frame.

	* dwarf2loc.c (dwarf2_evaluate_loc_desc): Wait to fetch the top of
	the stack until we've decided what sort of result the evaluation
	has produced.  Use separate variables, with more specific names.

2004-08-23  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-tdep.c (arm_nbsd_arm_be_breakpoint): Define.
	(arm_nbsd_thumb_[lb]e_breakpoint): Define.
	(arm_netbsd_init_abi_common): Register them.

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

	* config/vax/vax.mh (NATDEPFILES): Add vax-nat.c.

	* amd64obsd-tdep.c (amd64obsd_sigtramp_p): Use
	safe_frame_unwind_memory instead of target_read_memory.

	* infptrace.c: Remove #ifdef'ed out inclusion of gdb_stat.h.
	Reorder includes.
	(fetch_register, store_register): Remove prototypes.
	(child_resume): Reorganize code and comments such that it is
	grouped a bit more logically.
	(attach): Explicitly compare errno against 0.
	(detach): Likewise.  Use perror_with_name instead of
	print_sys_errmsg.
	* Makefile.in (infptrace.o): Update dependencies.

	* ia64-linux-nat.c: Update copyright year.
	(fetch_debug_register, store_debug_register)
	(ia64_linux_stopped_by_watchpoint): Replace PTRACE_ARG3_TYPE with
	PTRACE_TYPE_ARG3.
	* config/ia64/nm-linux.h: Update copyright year.
	 (PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Remove defines.

	* amd64-linux-tdep.c (amd64_linux_sigtramp_start): Change argument
	from CORE_ADDR to struct frame_info *.  Use
	safe_frame_unwind_memory instead of deprecated_read_memory_nobpt.
	(amd64_linux_sigtramp_p): Adjust for changed signature of
	and64_linux_sigtramp_start

	* gdb_ptrace.h: GNU/Linux.

	* config/alpha/nm-linux.h (PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE):
	Remove defines.

	* infptrace.c: Include "gdb_assert.h".
	(PTRACE_XFER_TYPE): Remove define.
	(offsetof): Only define if U_REGS_OFFSET isn't defined.
	(fetch_register, store_register): Rewrite to use PTRACE_TYPE_RET.
	Tweak comment.
	(fetch_inferior_registers, store_inferior_registers): Remove
	redundant culry braces.  Tweak comment.  s/regno/regnum.
	* Makefile.in (infptrace.o): Update dependencies.

	* configure.in: Change test for return type of ptrace to default
	to `long' instead of `int'.
	* configure: Regenerate.	

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

	* config/alpha/alpha-linux.mh (LOADLIBES): New variable.

	* configure.in: Check for ttrace function.
	* configure, config.in: Regenerate.	

	* gdb_ptrace.h: New file.
	* infptrace.c: Include "gdb_ptrace.h" instead of <ptrace.h> or
	<sys/ptrace.h>.
	(PT_READ_I, PT_READ_D, PT_READ_U, PT_WRITE_I, PT_WRITE_D)
	(PT_WRITE_U, PT_CONTINUE, PT_STEP, PT_KILL): Remove defines.
	(attach): Don't define PT_ATTACH.
	(detach): Don't define PT_DETACH.
	* Makefile.in (gdb_ptrace_h): New variable.
	(infptrace.o): Update dependencies.

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

	* inferior.h (PTRACE_ARG3_TYPE): Define as PTRACE_TYPE_ARG3
	instead of `int' if not already defined.
	(call_ptrace): Revert change that replaced PTRACE_ARG3_TYPE with
	PTRACE_TYPE_ARG3.
	* infptrace.c (call_ptrace): Revert change that replaced
	PTRACE_ARG3_TYPE with PTRACE_TYPE_ARG3.

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

	* config/i386/nm-linux64.h (PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE):
	Remove defines.

	* linux-nat.c (kill_inferior): Add missing third and fourth
	arguments to ptrace call.  Don't use PTRACE_ARG3_TYPE.

	* infptrace.c (child_xfer_memory): Replace PTRACE_XFER_TYPE with
	PTRACE_TYPE_RET.

	* proc-why.c (proc_prettyfprint_why): Fix format string.

	* solib-osf.c (osf_current_sos): Remove unsused label.

	* configure.in: Add <ncurses/ncurses.h> to the list of possible
	curses headers.
	* configure, config.in: Regenerate.	
	* gdb_curses.h [HAVE_NCURSES_NCURSES_H]: Include
	<ncurses/ncurses.h>.

	* config/nm-bsd.h (PTRACE_ARG3_TYPE): Remove define.
	* config/nm-nbsd.h: Update copyright year.
	(PTRACE_ARG3_TYPE): Remove define.

	* sparc-nat.c (fetch_inferior_registers)
	(store_inferior_registers, sparc_xfer_wcookie): 
	Replace PTRACE_ARG3_TYPE with PTRACE_TYPE_ARG3.

	* alphabsd-nat.c (fetch_inferior_registers):
	(store_inferior_registers): Replace PTRACE_ARG3_TYPE with
	PTRACE_TYPE_ARG3.
	* amd64bsd-nat.c (fetch_inferior_registers)
	(store_inferior_registers): Replace PTRACE_ARG3_TYPE with
	PTRACE_TYPE_ARG3.
	* armnbsd-nat.c: Update copyright year.
	(fetch_register, fetch_regs, fetch_fp_register, fetch_fp_regs)
	(store_register, store_regs, store_fp_register, store_fp_regs):
	Replace PTRACE_ARG3_TYPE with PTRACE_TYPE_ARG3.
	* hppabsd-nat.c (fetch_inferior_registers)
	(store_inferior_registers): Replace PTRACE_ARG3_TYPE with
	PTRACE_TYPE_ARG3.
	* i386bsd-nat.c (fetch_inferior_registers)
	(store_inferior_registers, i386bsd_dr_set, i386bsd_dr_get_status):
	Replace PTRACE_ARG3_TYPE with PTRACE_TYPE_ARG3.
	* m68kbsd-nat.c (fetch_inferior_registers)
	(store_inferior_registers): Replace PTRACE_ARG3_TYPE with
	PTRACE_TYPE_ARG3.
	* m88kbsd-nat.c (fetch_inferior_registers)
	(store_inferior_registers): Replace PTRACE_ARG3_TYPE with
	PTRACE_TYPE_ARG3.
	* mipsnbsd-nat.c: Update copyright year.
	(fetch_inferior_registers, store_inferior_registers):
	Replace PTRACE_ARG3_TYPE with PTRACE_TYPE_ARG3.
	* ns32knbsd-nat.c: Update copyright year.
	(fetch_inferior_registers, store_inferior_registers):
	Replace PTRACE_ARG3_TYPE with PTRACE_TYPE_ARG3.
	* ppcnbsd-nat.c (fetch_inferior_registers):
	(store_inferior_registers): Replace PTRACE_ARG3_TYPE with
	PTRACE_TYPE_ARG3.
	* ppcobsd-nat.c (fetch_inferior_registers):
	(store_inferior_registers): Replace PTRACE_ARG3_TYPE with
	PTRACE_TYPE_ARG3.
	* shnbsd-nat.c: Update copyright year.
	(fetch_inferior_registers, store_inferior_registers):
	Replace PTRACE_ARG3_TYPE with PTRACE_TYPE_ARG3.
	* vaxbsd-nat.c (fetch_inferior_registers)
	(store_inferior_registers): Replace PTRACE_ARG3_TYPE with
	PTRACE_TYPE_ARG3.
	
	* inferior.h (call_ptrace): Replace PTRACE_ARG3_TYPE with
	PTRACE_TYPE_ARG3.
	* infptrace.c (call_ptrace, child_resume, attach, detach)
	(U_REGS_OFFSET, fetch_register, store_register, child_xfer_memory)
	(udot_info): Replace PTRACE_ARG3_TYPE with PTRACE_TYPE_ARG3.
	* inftarg.c (ptrace_me): Replace PTRACE_ARG3_TYPE with
	PTRACE_TYPE_ARG3.

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

	* defs.h: Remove out-of-date comment.
	[!FCLOSE_PROVIDED] (fclose): Remove prototype.
	[!GETENV_PROVIDED] (getenv): Remove prototype.

	* standalone.c: Remove file.
	* Makefile.in (standalone.o): Remove dependency.

	* i386-linux-nat.c (dummy_sse_values): Remove function and
	prototype.
	(i386_linux_dr_get): Fix typo in comment.
	(LINUX_SYSCALL_REGNUM): Define as I386_EAX_REGNUM.

	* config/i386/obsd64.mt (TDEPFILES): Add i386obsd-tdep.o.

	* defs.h (deprecated_error_hook): Remove RETURN and ATTR_NORETURN
	from declaration.
	* top.c (deprecated_error_hook): Remove RETURN and ATTR_NORETURN
	from definition.

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

	* configure.in (PTRACE_TYPE_ARG3, PTRACE_TYPE_ARG5): Don't use
	parenthesis in definition.
	* configure: Regenerated.

2004-08-12  Michael Chastain  <mec.gnu@mindspring.com>

	* PROBLEMS: Mention build/1411.

2004-08-09  Robert Millan  <robertmh@gnu.org>

	Committed by Nathanael Nerode.
	* configure.host: Match kfreebsd*-gnu and knetbsd*-gnu.
	* configure.tgt: Match kfreebsd*-gnu and knetbsd*-gnu.

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

	* NEWS: Mention fixes in GDB 6.2.1.
	* PROBLEMS: Remove mention of mips-irix.

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

	* config/powerpc/xm-aix.h: Delete.
	* config/powerpc/aix.mh (MH_FILE): Remove.
	* config/powerpc/aix432.mh (MH_FILE): Remove.

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

	* config/powerpc/aix.mh: Remove obsolete comment.
	* config/powerpc/aix432.mh: Likewise.

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

	* config/powerpc/xm-aix.h (UINT_MAX): Remove undef.

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

	* config/rs6000/xm-aix4.h: Remove "config/xm-aix4.h" include,
	this file is now empty.
	* config/xm-aix4.h: Remove, this file is no longer included
	anywhere.

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

	* config/powerpc/xm-aix.h: Remove "config/xm-aix4.h" include,
	that file is now empty.
	(termdef): Remove prototype, function no longer used.

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

	* config/xm-aix4.h (USE_O_NOCTTY): Remove, no longer used.
	* config/rs6000/xm-rs6000.h (USE_O_NOCTTY): Likewise.

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

	* config/xm-aix4.h (FIVE_ARG_PTRACE): Remove, no longer used.
	* config/pa/nm-hppah.h (FIVE_ARG_PTRACE): Likewise.
	* config/rs6000/xm-rs6000.h (FIVE_ARG_PTRACE): Likewise.

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

	* infptrace.c (call_ptrace): Select code based on PTRACE_TYPE_ARG5
	instead of FIVE_ARG_PTRACE.

	* inflow.c (O_NOCTTY): Define to zero if not already defined.
	(new_tty): Use O_NOCTTY unconditionally.

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

	* procfs.c (procfs_detach): Cleanup.  Print process ID, not LWP
	ID.  Use comma in output.  Use gdb_flush on gdb_stdout instead of
	fflush on stdout.

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

	* xcoff_symfile_finish: Replace last call to xmfree by call
	to xfree.

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

	* main.c (captured_main): Delete call to init_malloc.
	* defs.h (init_malloc): Delete declaration.
	* utils.c (mmalloc, mrealloc, mcalloc, mfree)
	(init_malloc): Delete functions.

	* defs.h (xmfree): Delete.
	* utils.c (xmfree): Delete function.
	(xfree): Inline calls to xmfree and mfree.
	* symmisc.c (free_symtab_block, free_symtab): Use xfree.
	* symfile.c (reread_symbols, init_psymbol_list): Ditto.
	* source.c (forget_cached_source_info, find_and_open_source): Ditto.
	* somread.c (som_symfile_finish): Ditto.
	* objfiles.c (allocate_objfile, free_objfile): 
	* nlmread.c (nlm_symfile_finish): Ditto.
	* hpread.c (hpread_symfile_finish): Ditto.
	* elfread.c (free_elfinfo, elf_symfile_finish): Ditto.
	* dbxread.c (dbx_symfile_finish, free_bincl_list): Ditto.
	* coffread.c (coff_symfile_finish): Ditto.

	* defs.h (xmcalloc): Delete declaration.
	* utils.c (xmcalloc): Delete.
	(xcalloc): Inline calls to xmcalloc and mcalloc.
	* ada-lang.c (_initialize_ada_language): Use htab_create_alloc,
	xcalloc and xfree.
	* symtab.c (create_demangled_names_hash): Ditto.

	* defs.h (xmrealloc): Delete.
	* utils.c (xmrealloc): Delete.
	(xrealloc): Inline calls to xmrealloc, mmalloc and mrealloc.
	* symmisc.c (extend_psymbol_list): Use xrealloc.
	* source.c (find_source_lines): Ditto.
	* hpread.c (hpread_lookup_type): Ditto.
	* dbxread.c (add_bincl_to_list): Ditto.

	* utils.c (xmmalloc): Delete.
	(xmalloc): Inline xmmalloc and mmalloc calls.
	(msavestring): Use xmalloc.
	* defs.h (xmmalloc): Delete declaration.
	* xcoffread.c (xcoff_symfile_init): Use xmalloc instead of
	xmmalloc.
	* symmisc.c (extend_psymbol_list): Ditto.
	* symfile.c (init_psymbol_list): Ditto.
	* source.c (find_source_lines): Ditto.
	* hpread.c (hpread_symfile_init, hpread_lookup_type): Ditto.
	* elfread.c (elf_symtab_read): Ditto.
	* dbxread.c (dbx_symfile_init, init_bincl_list): Ditto.
	* coffread.c (coff_symfile_init): Ditto.

2004-08-10  David Carlton  <carlton@bactrian.org>

	* MAINTAINERS: Remove David Carlton from c++ testsuite
	maintainers.

2004-08-10  Jerome Guitton  <guitton@gnat.com>

	* symfile.c (symbol_file_add_with_addrs_or_offsets): Make sure to
	print a line feed before the prompt.

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

	* procfs.c (procfs_pid_to_str): Use "%ld" to print LWP.

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

	General cleanup of the AIX xm include file:
	* config/xm-aix4.h (fd_set): Remove undefine.
	Remove include of <sys/select.h>.
	(HAVE_TERMIO): Remove define.
	(USG): Likewise.
	(NULL): Remove redefine.
	(alloca): Remove #pragma.
	(vfork): Remove define.
	(termdef): Remove.
	(SIGWINCH_HANDLER): Remove.
	(SIGWINCH_HANDLER_BODY): Remove.

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

	* configure.tgt (x86_64-*-openbsd*): Set gdb_osabi to
	GDB_OSABI_OPENBSD_ELF.

2004-08-07  Robert Millan  <robertmh@gnu.org>

	* bsd-kvm.c: Check for nlist.h before including it.

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

	* i386bsd-nat.c (_initialize_i386bsd_nat): Remove `struct
	sigcontext' offset consistency checks for ancient BSD.

	* gdb_curses.h [HAVE_CURSESX_H]: Include <cursesX.h>

	* configure.in: Check for <sys/types.h>.  Check return and
	argument types of ptrace.
	* configure, config.in: Regenerate.	

2004-08-09  Jim Blandy  <jimb@redhat.com>

	* rs6000-tdep.c (set_sim_regno, init_sim_regno_table,
	rs6000_register_sim_regno): Doc fixes.

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

	* mips-tdep.c: Include "floatformat.h".
	(n32n64_floatformat_always_valid): New function.
	(floatformat_n32n64_long_double_big): New constant.
	(mips_gdbarch_init): Set size and format of long double
	for N32 and N64 ABIs.
	* Makefile.in (mips-tdep.o): Update dependencies.

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

	* gdbarch.sh: Delete "fmt" and "attrib" fields.  Always use %s to
	print.  Improve script's error messages.
	* gdbarch.h: Re-generate.

	* gdbarch.sh (pformat): New function.
	(float_format, double_format, long_double_format): List with bit
	members.  Use pformat when printing.
	* gdbarch.c, gdbarch.h: Re-generate.
	
2004-08-08  Nathan J. Williams  <nathanw@wasabisystems.com>

	* ppcnbsd-nat.c: Include <machine/frame.h>, <machine/pcb.h>,
	"gdbcore.h", "regcache.h", and "bsd-kvm.h".
	(ppcnbsd_supply_pcb): New function.
	(_initialize_ppcnbsd_nat): New prototype and function.
	* config/powerpc/nbsd.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.
	* Makefile.in (ppcnbsd-nat.o): Update dependencies.

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

	* gdbtypes.c (builtin_type_arm_ext, builtin_type_ieee_single)
	(builtin_type_ieee_double, builtin_type_ia64_quad)
	(builtin_type_ia64_spill, _initialize_gdbtypes): Add tables of
	BE/LE floating-point types.
	* gdbtypes.h (builtin_type_arm_ext, builtin_type_ieee_single)
	(builtin_type_ieee_double, builtin_type_ia64_quad)
	(builtin_type_ia64_spill): Declare.
	* doublest.c (_initialize_doublest, floatformat_ieee_single)
	(floatformat_ieee_double, floatformat_arm_ext)
	(floatformat_ia64_spill, floatformat_ia64_quad): Add tables
	of LE/BE floatformats.	
	* doublest.h: (struct floatformat, floatformat_ieee_single)
	(floatformat_ieee_double, floatformat_arm_ext)
	(floatformat_ia64_spill, floatformat_ia64_quad): Declare.

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

	* i386gnu-nat.c (gnu_store_registers): Fix typo.

	* i386gnu-nat.c (gnu_store_registers): Use regcache_raw_collect
	instead of regcache_raw_supply when storing the registers.

	* i386gnu-nat.c: Update copyright year.
	(gnu_store_registers): Don't use deprecated_registers and
	deprecated_registers_valid.  Use regcache_valid_p and
	regcache_raw_supply instead.

	* vax-tdep.c (vax_frame_this_id): Use frame_func_unwind instead of
	frame_pc_unwind.

	* procfs.c (procfs_pid_to_str): Remove redundant and unused
	variables.  Incapitalized "process".

	* configure.in: Add cursesX to the list of possible curses libs.
	Add cursesX.h to the list of possible curses headers. 
	* configure, config.in: Regenerate.	

2004-08-07  Nathan J. Williams  <nathanw@wasabisystems.com>

	* configure.in: Test for struct lwp in <sys/lwp.h>.
	* bsd-kvm.c (bsd_kvm_proc_cmd): If HAVE_STRUCT_LWP is defined, use
	the offset of l_addr in struct lwp.

2004-08-07  Nathan J. Williams  <nathanw@wasabisystems.com>

	* bsd-kvm.c: Include "gdbcore.h"
	(bsd_kvm_open): Use get_exec_file() to set 'execfile'.

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

	* gdbtypes.c (build_flt, build_complex): New functions.
	(gdbtypes_post_init): Use.

	* doublest.c (floatformat_from_length): Fix tipo, "*" not "&".

	* gdbtypes.c (_initialize_gdbtypes): Do not swap builtin_type_int8
	through to builtin_type_uint128.

	* c-exp.y: Use builtin_type function to obtain builtin types.

	* gdbtypes.h (struct builtin_type): Delete builtin_int0 through to
	builtin_uint128.
	* gdbtypes.c (gdbtypes_post_init): Update.
	(build_gdbtypes): Move initialization of builtin_type_int0
	through to builtin_type_uint128 from here ...
	(_initialize_gdbtypes): ... to here.
	* d10v-tdep.c (d10v_register_type): Update.

	* doublest.c: Update copyright.
	(floatformat_from_length): Call error when floatformat is NULL.
	(extract_floating_by_length): Remove NULL fmt check.
	(store_floating_by_length): Ditto.

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

	* regcache.c (regcache_raw_read): For the moment, #ifdef assert
	that the register is valid.

2004-08-05  Mark Kettenis  <kettenis@chello.nl>

	* i386-linux-tdep.c (i386_linux_sigtramp_start)
	(i386_linux_rt_sigtramp_start): Change argument from CORE_ADDR to
	struct frame_info *.  Use safe_frame_unwind_memory instead of
	deprecated_read_memory_nobpt.
	(i386_linux_sigtramp_p, i386_linux_sigcontext_addr): Adjust for
	changed signature of i386_linux_sigtramp_start and
	i386_linux_rt_sigtramp_start.

	* i386nbsd-tdep.c (i386nbsd_sigtramp_offset): Change argument from
	CORE_ADDR to struct frame_info *.  Use safe_frame_unwind_memory
	instead of deprecated_read_memory_nobpt.
	(i386nbsd_sigtramp_p): Adjust for changed signature of
	i386nbsd_sigtramp_offset.

	* i386obsd-tdep.c (i386obsd_sigtramp_p): Use
	safe_frame_unwind_memory instead of target_read_memory.

	* infptrace.c: Include <sys/file.h> if HAVE_SYS_FILE_H instead of
	!NO_SYS_FILE.
	[KERNEL_U_ADDR_BSD]: Don't include <a.out.h>.
	[KERNEL_U_ADDR_BSD] (kernel_u_addr): Remove variable.
	(_initialize_kernel_u_addr): Remove prototype and function.
	* infttrace.c: Include <sys/file.h> if HAVE_SYS_FILE_H instead of
	!NO_SYS_FILE.
	* xcoffread.c: Likewise.

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

	* vax-nat.c: New file.
	* vaxbsd-nat.c: Tweak comment.
	* Makefile.in (ALLDEPFILES): Add vax-nat.c, vaxbsd-nat.c and
	vaxnbsd-tdep.c.
	(vax-nat.o): New dependency.
	* configure.host (vax-*-bsd*, vax-*-ultrix*): Set gdb_host to vax.
	(vax-*-ultrix2*): Remove.
	* config/vax/vax.mh: New file.
	* config/vax/nm-vax.h (vax_kernel_u_addr): New extern declaration.
	(KERNEL_U_ADDR): Define as vax_kernel_u_addr.
	(vax_register_u_addr): New prototype.
	(REGISTER_U_ADDR): Define using vax_register_u_addr.
	* config/vax/vaxult2.mh: Remove file.
	* config/vax/vaxult.mh: Remove file.
	* config/vax/vaxbsd.mh: Remove file.
	* config/vax/vax.mt (TM_FILE): Remove.
	* config/vax/tm-vaxbsd.h: Remove file.

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

	* aix-thread.c (get_signaled_thread): New function.
	(iter_trap): Delete, no longer used.
	(iter_tid): New function.
	(pd_update): Find the thread that received the SIGTRAP signal
	by first locating the kernel thread, and then finding its
	associated thread.

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

	* lin-lwp.c (child_wait): Continue inferior after processing
	PTRACE_EVENT_CLONE event.

2004-08-05  Nathanael Nerode  <neroden@gcc.gnu.org>

	* MAINTAINERS: Add self to Write-After-Approval.

2004-08-05  Jeff Johnston  <jjohnstn@redhat.com>

	* libunwind-frame.c (LIBUNWIND_SO): Change to be of form:
	libunwind-xxxx.so" where xxxx is UNW_TARGET.

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

	* config/xm-sysv4.h: Delete file.
	* config/mips/xm-irix5.h: Delete file.
	* config/mips/irix6.mh (XM_FILE, XM_CLIBS): Delete.
	* config/mips/irix5.mh (XM_FILE, XM_CLIBS): Delete.
	* config/ia64/xm-aix.h: Delete file.
	* config/ia64/aix.mh (XM_FILE): Delete.
	* config/pa/xm-hppah.h: Delete file.
	* config/pa/hpux11w.mh (XM_FILE): Delete.
	* config/pa/hpux11.mh (XM_FILE): Delete.
	* config/pa/hpux1020.mh (XM_FILE): Delete.
	* config/pa/hppahpux.mh (XM_FILE): Delete.

	* config/alpha/xm-alphalinux.h: Delete file.
	* config/djgpp/fnchange.lst: Do not fix xm-alphalinux.h.
	* config/alpha/alpha-linux.mh (XM_FILE, LOADLIBES): Delete.
	* config/alpha/xm-alphaosf.h: Delete file.
	* config/djgpp/fnchange.lst: Do not fix xm-alphaosf.h.
	* config/alpha/alpha-osf3.mh (XM_FILE): Delete.
	* config/alpha/alpha-osf2.mh (XM_FILE): Delete.
	* config/alpha/alpha-osf1.mh (XM_FILE): Delete.

	* config/i386/xm-i386v.h: Delete file.
	* config/i386/i386v.mh (XM_FILE, XM_CLIBS): Delete.
	* config/i386/i386sco5.mh (XM_FILE, XM_CLIBS): Delete.
	* config/i386/xm-i386sco.h: Delete file.
	* config/i386/i386sco4.mh (XM_FILE, XM_CLIBS, MH_CFLAGS): Delete.
	* config/i386/i386sco.mh (XM_FILE, XM_CLIBS, CC): Delete.
	* config/i386/xm-i386v4.h: Delete file.
	* config/djgpp/fnchange.lst: Do not fix xm-i386v4.h.
	* config/i386/ncr3000.mh (CC, CFLAGS, XM_FILE): Delete.
	* config/i386/i386v42mp.mh (XM_FILE, XM_CLIBS): Delete.
	* config/i386/i386v4.mh (XM_FILE, XM_CLIBS): Delete.

	* config/vax/xm-vax.h: Delete file.
	* Makefile.in (xm-vaxult.h, xm-vaxbsd.h): Delete.
	* config/vax/xm-vaxult2.h: Delete file.
	* config/djgpp/fnchange.lst: Do not fix xm-vaxult2.h.
	* config/vax/vaxult2.mh (XM_FILE): Delete.
	* config/vax/xm-vaxult.h: Delete file.
	* config/vax/vaxult.mh (XM_FILE): Delete.
	* config/vax/xm-vaxbsd.h: Delete file.
	* config/vax/vaxbsd.mh (XM_FILE): Delete.

	* gdbarch.sh (deprecated_frame_saved_pc): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* regcache.c (deprecated_read_fp, deprecated_write_sp): Delete.
	* inferior.h (deprecated_read_fp, deprecated_write_sp): Delete.
	* frame.h: Delete deprecated_read_fp from comments.
	* arch-utils.c (deprecated_init_frame_pc_default): Delete.
	* arch-utils.h (deprecated_init_frame_pc_default): Delete.

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

	* i386obsd-tdep.c (i386obsd_sigtramp_p): Adjust for changed signal
	trampoline in OpenBSD 3.5-current.

	* i387-tdep.c (i387_supply_fsave): Provide summy values for the
	SSE registers.

	* Makefile.in: Remove embedded page breaks.

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

	* regcache.c (regcache_raw_read): Assert that, after calling
        target_fetch_registers, the register we're reading is cached.

	* ppc-linux-nat.c (fetch_register): Replace 'gdb_assert (0)' with
	a call to 'internal_error', with a more helpful error message.
	* rs6000-tdep.c (e500_pseudo_register_read,
	e500_pseudo_register_write, rs6000_store_return_value): Same.

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

	* Makefile.in: Update dependencies.

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

	Change the layout of the PowerPC E500 raw register cache to allow
	the lower 32-bit halves of the GPRS to be their own raw registers,
	not pseudoregisters.
	* ppc-tdep.h (struct gdbarch_tdep): Remove ppc_gprs_pseudo_p flag;
	add ppc_ev0_upper_regnum flag.
	* rs6000-tdep.c: #include "reggroups.h".
	(spe_register_p): Recognize the ev upper half registers as SPE
	registers.
	(init_sim_regno_table): Build gdb->sim mappings for the upper-half
	registers.
	(e500_move_ev_register): New function.
	(e500_pseudo_register_read, e500_pseudo_register_write): The 'ev'
	vector registers are the pseudo-registers now, formed by splicing
	together the gprs and the upper-half registers.
	(e500_register_reggroup_p): New function.
	(P): Macro deleted.
	(P8, A4): New macro.
	(PPC_EV_REGS, PPC_GPRS_PSEUDO_REGS): Macros deleted.
	(PPC_SPE_GP_REGS, PPC_SPE_UPPER_GP_REGS, PPC_EV_PSEUDO_REGS): New
	macros.
	(registers_e500): Rearrange register set so that the raw register
	set contains 32-bit GPRs and upper-half registers, and the SPE
	vector registers become pseudo-registers.
	(rs6000_gdbarch_init): Don't initialize tdep->ppc_gprs_pseudo_p;
	it has been deleted.  Initialize ppc_ev0_upper_regnum.  Many other
	register numbers are now the same for the E500 as they are for
	other PowerPC variants.  Register e500_register_reggroup_p as the
	register group function for the E500.
	* Makefile.in (rs6000-tdep.o): Update dependencies.

	Adapt PPC E500 native support to the new raw regcache layout.
	* ppc-linux-nat.c (struct gdb_evrregset_t): Doc fixes.
	(read_spliced_spe_reg, write_spliced_spe_reg): Deleted.
	(fetch_spe_register, store_spe_register): Handle fetching/storing
	all the SPE registers at once, if regno == -1.  These now take
	over the job of fetch_spe_registers and store_spe_registers.
	(fetch_spe_registers, store_spe_registers): Deleted.
	(fetch_ppc_registers, store_ppc_registers): Fetch/store gprs
	unconditionally; they're always raw.  Fetch/store SPE upper half
	registers, if present, instead of ev registers.
	(fetch_register, store_register): Remove sanity checks: gprs are
	never pseudo-registers now, so we never need to even mention any
	registers that are ever pseudoregisters.

	Use a fixed register numbering when communicating with the PowerPC
	simulator.
	* ppc-tdep.h (struct gdbarch_tdep): New member: 'sim_regno'.
	* rs6000-tdep.c: #include "sim-regno.h" and "gdb/sim-ppc.h".
	(set_sim_regno, init_sim_regno_table, rs6000_register_sim_regno): 
	New functions.
	(rs6000_gdbarch_init): Register rs6000_register_sim_regno.  Call
	init_sim_regno_table.
	* Makefile.in (gdb_sim_ppc_h): New variable.
	(rs6000-tdep.o): Update dependencies.

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

	* cris-tdep.c (cris_register_size): Restore function, still used
	locally.

	* gdbarch.sh (deprecated_target_read_fp)
	(deprecated_frame_locals_address, deprecated_frame_args_address)
	(deprecated_frame_chain_valid, deprecated_frame_chain)
	(deprecated_init_extra_frame_info, deprecated_pop_frame)
	(deprecated_frame_init_saved_regs, deprecated_get_saved_register)
	(deprecated_do_registers_info, deprecated_init_frame_pc): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* regcache.c (deprecated_read_fp): Do not call
	DEPRECATED_TARGET_READ_FP_P.
	* infcmd.c (default_print_registers_info): Do not call
	DEPRECATED_DO_REGISTERS_INFO.
	* frame-base.c (default_frame_locals_address): Do not call
	DEPRECATED_FRAME_LOCALS_ADDRESS.
	(default_frame_args_address): Do not call
	DEPRECATED_FRAME_ARGS_ADDRESS.

	* gdbarch.sh (deprecated_register_raw_size)
	(deprecated_register_virtual_size:int): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* cris-tdep.c (cris_register_size): Delete.
	(cris_gdbarch_init): Update.
	* alpha-tdep.c (alpha_register_raw_size)
	(alpha_register_virtual_size): Delete.
	(alpha_gdbarch_init): Update.

	* gdbarch.sh (deprecated_register_virtual_type)
	(deprecated_save_dummy_frame_tos, deprecated_push_return_address)
	(deprecated_dummy_write_sp): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.

	* gdbarch.sh (deprecated_register_bytes): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* regcache.c (deprecated_register_bytes): New function.
	* regcache.h (deprecated_register_bytes): Declare.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
	* v850-tdep.c (v850_gdbarch_init): Update.
	* sh64-tdep.c (sh64_gdbarch_init): Update.
	* ns32k-tdep.c (ns32k_gdbarch_init_32082): Update.
	* mn10300-tdep.c (mn10300_gdbarch_init): Update.
	* mcore-tdep.c (mcore_gdbarch_init): Update.
	* cris-tdep.c (cris_gdbarch_init): Update.
	* arm-tdep.c (arm_gdbarch_init): Update.
	* remote.c (init_remote_state): Update.
	* remote-vx.c (vx_prepare_to_store): Update.
	* remote-sds.c (sds_fetch_registers, sds_prepare_to_store): Update.
	* irix5-nat.c (fetch_core_registers): Update.
	* cris-tdep.c (cris_register_bytes_ok): Update.
	* config/nm-gnu.h (CHILD_PREPARE_TO_STORE): Update.

	* mips-tdep.c (mips_gdbarch_init, mips_insn16_frame_cache)
	(mips_insn16_frame_this_id, mips_insn16_frame_prev_register)
	(mips_insn16_frame_unwind, mips_insn16_frame_sniffer)
	(mips_insn16_frame_base_address, mips_insn16_frame_base)
	(mips_insn16_frame_base_sniffer, mips_insn32_frame_cache)
	(mips_insn32_frame_this_id, mips_insn32_frame_prev_register)
	(mips_insn32_frame_unwind, mips_insn32_frame_sniffer)
	(mips_insn32_frame_base_address, mips_insn32_frame_base)
	(mips_insn32_frame_base_sniffer): Replace mips16 / mips32 prefix
	with mips_insn16 and mips_insn32.

	Replace DEPRECATED_REGISTER_RAW_SIZE with register_size.
	* rs6000-tdep.c (rs6000_push_dummy_call)
	(rs6000_extract_return_value): Use register_size.
	* xstormy16-tdep.c (xstormy16_get_saved_register) 
	(xstormy16_extract_return_value): Ditto.
	* valops.c (value_assign): Ditto.
	* v850ice.c (v850ice_fetch_registers, v850ice_store_registers): 
	* v850-tdep.c (v850_extract_return_value): Ditto.
	* tracepoint.c (collect_symbol): Ditto.
	* target.c (debug_print_register): Ditto.
	* stack.c (frame_info): Ditto.
	* rs6000-nat.c (ARCH64, fetch_register, store_register): Ditto.
	* rom68k-rom.c (rom68k_supply_one_register): Ditto.
	* remote.c (struct packet_reg, remote_wait, remote_async_wait)
	(store_register_using_P): Ditto.
	* remote-vxmips.c (vx_read_register, vx_write_register): Ditto.
	* remote-sim.c (gdbsim_fetch_register, gdbsim_store_register): Ditto.
	* remote-mips.c (mips_wait, mips_fetch_registers): Ditto.
	* remote-e7000.c (fetch_regs_from_dump, sub2_from_pc): Ditto.
	* regcache.c (deprecated_read_register_bytes) 
	(deprecated_write_register_bytes, read_register) 
	(write_register): Ditto.
	* ppc-linux-nat.c (fetch_altivec_register, fetch_register)
	(supply_vrregset, store_altivec_register, fill_vrregset): Ditto.
	* monitor.c (monitor_supply_register, monitor_fetch_register) 
	(monitor_store_register): Ditto.
	* mn10300-tdep.c (mn10300_pop_frame_regular) 
	(mn10300_print_register): Ditto.
	* mipsv4-nat.c (fill_fpregset): Ditto.
	* mips-linux-tdep.c (supply_32bit_reg, fill_fpregset) 
	(mips64_fill_fpregset): Ditto.
	* mi/mi-main.c (register_changed_p, get_register)
	(mi_cmd_data_write_register_values): Ditto.
	* lynx-nat.c (fetch_inferior_registers, store_inferior_registers): 
	* irix5-nat.c (fill_gregset, fetch_core_registers): 
	* infrun.c (write_inferior_status_register): Ditto.
	* infptrace.c (fetch_register, store_register): Ditto.
	* infcmd.c (default_print_registers_info): Ditto.
	* ia64-linux-nat.c (COPY_REG, fill_fpregset): Ditto.
	* ia64-aix-nat.c (COPY_REG, fill_gregset): Ditto.
	* i386gnu-nat.c (gnu_store_registers, fill): Ditto.
	* hpux-thread.c (hpux_thread_fetch_registers)
	(hpux_thread_store_registers): Ditto.
	* hppah-nat.c (store_inferior_registers, fetch_register): 
	* findvar.c (value_from_register): Ditto.
	* dve3900-rom.c (fetch_bitmapped_register): 
	* cris-tdep.c (cris_gdbarch_init): Ditto.
	* alpha-tdep.h: Ditto.
	* aix-thread.c (pd_enable, fill_sprs64, fill_sprs32): Ditto.

	* regcache.h: Delete DEPRECATED_REGISTER_VIRTUAL_SIZE and
	DEPRECATED_REGISTER_RAW_SIZE from comments.
	* regcache.c (init_regcache_descr, regcache_dump): Do not check or
	use DEPRECATED_REGISTER_VIRTUAL_SIZE and
	DEPRECATED_REGISTER_RAW_SIZE.
	* findvar.c (value_of_register): Simplify by assuming that the
	registers raw and virtual sizes are identical.
	* regcache.h: Delete DEPRECATED_REGISTER_VIRTUAL_TYPE in
	comment.
	* arch-utils.c (generic_register_size): Simplify by assuming
	register_type.

	* regcache.c (legacy_read_register_gen, real_register) 
	(legacy_write_register_gen): Delete, not used.

	* regcache.c (struct regcache_descr): Delete legacy_p.
	(init_legacy_regcache_descr): Delete function.
	(init_regcache_descr): Delete call to init_legacy_regcache_descr.
	Do not use deprecated register functions.
	(regcache_raw_read, deprecated_write_register_gen):
	(deprecated_read_register_gen, regcache_raw_write): Delete code
	predicated on legacy_p.
	(register_size): Delete check against register raw size.

	* cris-tdep.c (cris_register_type): Replace
	cris_register_virtual_type.
	(cris_gdbarch_init): Update, set register_type.

	* gdbarch.sh (deprecated_frameless_function_invocation): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* arm-tdep.c 	(arm_frameless_function_invocation): Delete.
	(arm_gdbarch_init) Do not set frameless function invocation.
	* frame.h (legacy_frameless_look_for_prologue): Delete declaration.
	* blockframe.c (legacy_frameless_look_for_prologue): Delete function.
	* frv-tdep.c (frv_frameless_function_invocation): Delete.
	(frv_gdbarch_init): Do not set frameless function invocation.
	* sh64-tdep.c (sh64_gdbarch_init): Ditto.
	* sh-tdep.c (sh_gdbarch_init): Ditto.
	* m32r-tdep.c (m32r_gdbarch_init): Ditto.
	* h8300-tdep.c (h8300_gdbarch_init): Ditto.
	* avr-tdep.c (avr_gdbarch_init): Ditto.

	* blockframe.c (legacy_frame_chain_valid): Delete function.

	* dummy-frame.c (struct dummy_frame): Delete call_lo, call_hi, top
	and pc.  Update comments.
	(pc_in_dummy_frame): Delete function.
	(deprecated_pc_in_call_dummy): Inline old pc_in_dummy_frame code,
	use the "id".
	(dummy_frame_push, dummy_frame_sniffer): Instead of call_lo,
	call_hi, top and pc, use the id.
	(fprint_dummy_frames): Do not print call_lo, call_hi, top and pc.

	* dummy-frame.c: Include "gdb_string.h".
	(generic_save_call_dummy_addr, generic_push_dummy_frame)
	(generic_save_dummy_frame_tos): Delete.
	(dummy_frame_push): New function, replaces above.
	* dummy-frame.h: Update copyright.
	(dummy_frame_push): Declare.
	* frame.h (generic_save_dummy_frame_tos, generic_push_dummy_frame)
	(generic_save_call_dummy_addr): Delete declarations.
	* infcall.c: Include "dummy-frame.h".
	(call_function_by_hand): Add locals caller_regcache,
	caller_regcache_cleanup and dummy_id.  Replace push_dummy_frame
	with call to frame_save_as_regcache plus cleanup.  Delete calls to
	generic_save_call_dummy_addr and generic_save_dummy_frame_tos.
	Move clear_proceed_status to just before the resume, add call to
	dummy_frame_push (discard cleanup).
	* Makefile.in (infcall.o): Add $(dummy_frame_h).
	(dummy-frame.o): Add $(gdb_string_h).

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

	* dummy-frame.h (dummy_frame_unwind): Replace dummy_frame_sniffer.
	* frame-unwind.c (frame_unwind_init): Use dummy_frame_unwind.
	* dummy-frame.c (find_dummy_frame): Delete.
	(struct dummy_frame_cache, dummy_frame_sniffer)
	(dummy_frame_prev_register, dummy_frame_this_id)
	(dummy_frame_unwinder, dummy_frame_unwind): Re-implement dummy
	frame unwinder using a dummy_frame_cache.

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

	* frame.h (frame_save_as_regcache): Declare.
	* frame.c (frame_save_as_regcache): New function.
	(do_frame_read_register): Replace do_frame_unwind_register.
	(frame_pop): Use frame_save_as_regcache.
	* dummy-frame.c (generic_push_dummy_frame): Use
	frame_save_as_regcache.

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

	* dwarf2read.c (dwarf_decode_lines): Do not consider the current
	file as included until we record the first line in the linetable.

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

	* frame.h (deprecated_pop_dummy_frame)
	(deprecated_read_register_dummy)
	(deprecated_generic_find_dummy_frame): Delete.
	* dummy-frame.c (deprecated_generic_find_dummy_frame)
	(deprecated_read_register_dummy)
	(deprecated_find_dummy_frame_regcache)
	(discard_innermost_dummy)
	(deprecated_pop_dummy_frame): Delete.
	(dummy_frame_this_id): Simplify.
	(struct dummy_frame): Delete "fp" and "sp".
	(find_dummy_frame): Simplify.
	(generic_push_dummy_frame): Do not set "fp" or "sp".
	(fprint_dummy_frames): Do not print "fp" and "sp"

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

	* i386-tdep.c (I386_MAX_INSN_LEN): New define.
	(struct i386_insn): New structure.
	(i386_match_insn): New function.
	(i386_frame_setup_skip_insns): New variable.
	(i386_analyze_frame_setup): Change to use i386_match_insn and the
	array i386_frame_setup_insns of instructions that should be
	skipped inside the frame setup sequence.

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

	* frame.h (deprecated_frame_xmalloc_with_cleanup)
	(frame_saved_regs_zalloc, frame_extra_info_zalloc)
	(get_frame_extra_info, deprecated_get_frame_saved_regs): Delete.
	* stack.c (frame_info): Delete references to
	DEPRECATED_FRAME_INIT_SAVED_REGS and
	deprecated_get_frame_saved_regs.
	* frame.c (struct frame_info): Delete saved_regs and extra_info.
	(frame_pc_unwind): Do not use DEPRECATED_FRAME_SAVED_PC.
	(frame_register): Do not use DEPRECATED_GET_SAVED_REGISTER.
	(frame_unwind_register_signed)
	(frame_unwind_register_unsigned)
	(frame_unwind_unsigned_register): Use register_size.
	(create_new_frame): Do not use DEPRECATED_INIT_EXTRA_FRAME_INFO.
	(deprecated_frame_xmalloc_with_cleanup)
	(frame_saved_regs_zalloc, frame_extra_info_zalloc)
	(get_frame_extra_info, deprecated_get_frame_saved_regs): Delete.

	* sh-tdep.c (sh_gdbarch_init): Disable call to sh64_gdbarch_init.
	* config/sh/nbsd.mt (TDEPFILES): Remove sh64-tdep.o.
	* config/sh/linux.mt (TDEPFILES): Remove sh64-tdep.o.
	* config/sh/embed.mt (TDEPFILES): Remove sh64-tdep.o.

	* infcall.c (call_function_by_hand): Do not use
	DEPRECATED_PUSH_RETURN_ADDRESS, DEPRECATED_DUMMY_WRITE_SP,
	DEPRECATED_SAVE_DUMMY_FRAME_TOS, DEPRECATED_TARGET_READ_FP,
	DEPRECATED_FP_REGNUM, DEPRECATED_STORE_STRUCT_RETURN, and
	DEPRECATED_STACK_ALIGN.

2004-07-30  Ramana Radhakrishnan <ramana.radhakrishnan@codito.com>

	Committed by Andrew Cagney.
	* arm-tdep.c: Remove references to add_setshow_cmd_full for apcs32 .

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

	* mips-tdep.c (mips16_frame_cache)
	(mips16_frame_this_id, mips16_frame_prev_register)
	(mips16_frame_unwind, mips16_frame_sniffer)
	(mips16_frame_base_address, mips16_frame_base)
	(mips16_frame_base_sniffer, mips32_frame_cache)
	(mips32_frame_this_id, mips32_frame_prev_register)
	(mips32_frame_unwind, mips32_frame_sniffer)
	(mips32_frame_base_address, mips32_frame_base)
	(mips32_frame_base_sniffer): Clone the mdebug unwinder into
	separate heuristic mips16 and mips32 unwinders.
	(mips_stub_frame_cache, mips_stub_frame_this_id)
	(mips_stub_frame_prev_register)
	(mips_stub_frame_unwind, mips_stub_frame_sniffer)
	(mips_stub_frame_base_address, mips_stub_frame_base)
	(mips_stub_frame_base_sniffer): Add a simple stub unwinder.
	(mips_mdebug_frame_base_sniffer, mips_mdebug_frame_sniffer): Only
	match true mdebug frames.
	(non_heuristic_proc_desc): Add forward declaration.

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

	* config/mips/tm-irix6.h: Delete file.
	* config/mips/tm-irix5.h: Delete file.
	* config/mips/irix5.mt (TM_FILE): Set to tm-mips.h
	* config/mips/irix6.mt (TM_FILE): Set to tm-mips.h

	* config/ia64/tm-linux.h (IA64_GNULINUX_TARGET): Delete.
	* config/alpha/nm-osf2.h (PROCFS_SIGPEND_OFFSET): Delete.
	* config/nm-gnu.h (NO_CORE_OPS): Delete.
	* config/pa/nm-hppah.h (MAY_SWITCH_FROM_INFERIOR_PID): Delete.
	* config/i386/nm-i386v4.h (LOSING_POLL): Delete.
	* config/alpha/nm-osf2.h (LOSING_POLL): Delete.
	* config/tm-nto.h (RAW_SIGNAL_LO, RAW_SIGNAL_HI): Delete.
	* config/m68k/tm-vx68.h (VX_SIZE_FPREGS): Delete.
	* config/nm-linux.h (USE_THREAD_STEP_NEEDED): Delete.
	* config/pa/nm-hppah.h (USE_THREAD_STEP_NEEDED): Delete.
	* config/tm-nto.h (TARGET_SIGNAL_RAW_TABLE) Delete.
	(TARGET_SIGNAL_RAW_VALUES): Delete.
	* config/pa/nm-hppah.h (TARGET_RANGE_PROFITABLE_FOR_HW_WATCHPOINT):
	Delete.
	* config/frv/tm-frv.h (TARGET_HW_BREAK_LIMIT) 
	(TARGET_HW_WATCH_LIMIT): Delete.
	* Makefile.in (minimon_h, HFILES_NO_SRCDIR): Remove minimon.h.
	* minimon.h: Delete file.

	* trad-frame.c (trad_frame_get_this_base)
	(trad_frame_set_this_base, trad_frame_set_reg_realreg): New
	functions.
	* trad-frame.h (trad_frame_set_this_base)
	(trad_frame_get_this_base, trad_frame_set_reg_realreg): Declare.

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

	* trad-frame.c (trad_frame_get_prev_register): Rename
	trad_frame_get_prev_register.
	* vax-tdep.c (vax_frame_prev_register): Update.
	* trad-frame.h: Update.
	* trad-frame.c (trad_frame_get_register): Update.
	* sparcobsd-tdep.c (sparc32obsd_frame_prev_register): Update.
	* sparcnbsd-tdep.c (sparc32nbsd_sigcontext_frame_prev_register):
	Update.
	* sparc64obsd-tdep.c (sparc64obsd_frame_prev_register): Update.
	* sparc64nbsd-tdep.c (sparc64nbsd_sigcontext_frame_prev_register):
	Update.
	* sparc64fbsd-tdep.c (sparc64fbsd_sigtramp_frame_prev_register):
	Update.
	* sparc64-sol2-tdep.c (sparc64_sol2_sigtramp_frame_prev_register):
	Update.
	* sparc-sol2-tdep.c (sparc32_sol2_sigtramp_frame_prev_register):
	Update.
	* sparc-linux-tdep.c (sparc32_linux_sigtramp_frame_prev_register):
	Update.
	* s390-tdep.c (s390_frame_prev_register) 
	(s390_stub_frame_prev_register) 
	(s390_sigtramp_frame_prev_register): Update.
	* rs6000-tdep.c (rs6000_frame_prev_register): Update.
	* ppc-linux-tdep.c (ppc_linux_sigtramp_prev_register): Update.
	* mips-tdep.c (mips_mdebug_frame_prev_register): Update.
	* m88k-tdep.c (m88k_frame_prev_register) 
	* m68hc11-tdep.c (m68hc11_frame_prev_register) 
	* m32r-tdep.c (m32r_frame_prev_register): Update.
	* hppa-tdep.c (hppa_frame_prev_register_helper) 
	* frv-tdep.c (frv_frame_prev_register): Update.
	* d10v-tdep.c (d10v_frame_prev_register): Update.
	* cris-tdep.c (cris_frame_prev_register): Update.
	* avr-tdep.c (avr_frame_prev_register): Update.
	* arm-tdep.c (arm_prologue_prev_register) 
	(arm_sigtramp_prev_register): Update.

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

	* frame.h (legacy_saved_regs_unwind)
	(legacy_frame_chain_valid, legacy_frame_p)
	(enum frame_type): Delete UNKNOWN_FRAME.
	* dummy-frame.c (dummy_frame_this_id): Simplify.
	* frame-unwind.c (frame_unwind_find_by_frame): Simplify.
	* frame.c (struct frame_info): Delete the field "type".
	(legacy_saved_regs_prev_register, legacy_get_prev_frame)
	(legacy_saved_regs_this_id, legacy_saved_regs_unwinder)
	(legacy_saved_regs_unwind, legacy_frame_p)
	(frame_type_from_pc): Delete.
	(get_frame_id, frame_pop, frame_register_unwind, get_prev_frame_1)
	(fprint_frame, create_new_frame, fprint_frame_type): Simplify.

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

	* sparc64obsd-tdep.c (sparc64obsd_pc_in_sigtramp): Fix
	indentation.

	* mips-nat.c: Remove file.
	* Makefile.in (ALLDEPFILES): Remove mips-nat.c
	(mips-nat.o): Remove dependency.

	* infptrace.c: Update copyright year.
	(fetch_register): Pass NULL in regcache_raw_supply call instead of
	explicitly setting the buffer to all zeroes.

	* sparc64obsd-tdep.c (sparc64obsd_sigreturn_offset): New variable.
	(sparc64obsd_pc_in_sigtramp): Reorganize to avoid goto.

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

	* GDB 6.2 released from gdb_6_2-branch.

2004-07-30  Baurjan Ismagulov  <ibr@ata.cs.hun.edu.tr>

	* defs.h (OPF_TRY_CWD_FIRST, OPF_SEARCH_IN_PATH): New macros.

	* exec.c (exec_file_attach):
	* nto-tdep.c (nto_find_and_open_solib):
	* pa64solib.c (pa64_solib_sizeof_symbol_table):
	* solib.c (solib_open):
	* somsolib.c (som_solib_sizeof_symbol_table):
	* source.c (is_regular_file, openp, open_source_file):
	* symfile.c (symfile_bfd_open):
	* wince.c (upload_to_device): Differentiate between the search for
	binary and source files.

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

	* complaints.c (_initialize_complaints): Pass NULL to
	add_setshow_zinteger_cmd for help_doc.
	* cli/cli-decode.c (add_setshow_cmd_full): Handle a NULL help_doc.

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

	Fix PR i18n/761.
	* Makefile.in (.SUFFIXES): Add po .gmo, and .pox.
	(.PHONY): Add all-po install-po, uninstall-po, clean-po,
	$(PACKAGE).pot and update-po.
	(all-po, .po.gmo, .po.pox, install-po, $(PACKAGE).pot)
	(po/$(PACKAGE).pot, clean-po, uninstall-po, install-po)
	(update-po): New rules.
	(localedir): Define using autoconf.
	(diststuff): Add $(PACKAGE).pot and $(CATALOGS)
	(GDB_CFLAGS): Define LOCALEDIR using $(localedir).
	(XGETTEXT, GMSGFMT, MSGMERGE, PACKAGE, CATALOGS): Define.
	* configure.in: Generate CATALOGS and LINGUAS from contents of
	src/gdb/po/ directory.  Set @localedir@ in Makefile.in.
	* configure: Re-generate.
	* po/gdbtext: New file
	
2004-07-30  Jerome Guitton  <guitton@gnat.com>

	* MAINTAINERS: Reorder Write After Approval list in alphabetical
	order.

2004-07-30  David Lecomber  <dsl@sources.redhat.com>

	* dwarf2read.c (read_file_scope): Set producer if attribute 
	present.
	(struct dwarf2_cu): Added new member producer.

2004-07-30  Jerome Guitton  <guitton@gnat.com>

	* inflow.c (kill_command): release file handles in BFD.
	* exec.c (exec_file_attach): Ditto.
	* symfile.c (symbol_file_add_with_addrs_or_offsets): Ditto.

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

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

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

	* config/mips/xm-irix5.h (REGISTER_U_ADDR): Move from here ...
	* config/mips/nm-irix5.h (REGISTER_U_ADDR): ... to here.

	* config/xm-nbsd.h: Delete file.
	* config/arm/xm-nbsd.h: Delete file.
	* config/i386/xm-nbsd.h: Delete file.
	* config/ns32k/xm-nbsd.h: Delete file.
	* config/ns32k/nbsdaout.mh (XM_FILE): Delete.
	* config/i386/nbsdelf.mh (XM_FILE): Delete.
	* config/i386/nbsdaout.mh (XM_FILE): Delete.
	* config/arm/nbsdelf.mh (XM_FILE): Delete.
	* config/arm/nbsdaout.mh (XM_FILE): Delete.

	* config/i386/xm-i386v.h (KERNEL_U_ADDR): Move from here ...
	* config/i386/nm-i386v42mp.h (KERNEL_U_ADDR): ... to here, ...
	* config/i386/nm-i386v4.h (KERNEL_U_ADDR): ... here, ...
	* config/i386/nm-i386v.h (KERNEL_U_ADDR): ... and here.
	* config/vax/xm-vax.h (KERNEL_U_ADDR): Move from here ...
	* config/vax/nm-vax.h (KERNEL_U_ADDR): ... to here.

	* config/powerpc/xm-linux.h: Delete empty file.
	* config/powerpc/ppc64-linux.mh (XM_FILE): Delete.
	* config/powerpc/linux.mh (XM_FILE): Delete.
	* config/m68k/xm-linux.h: Delete empty file.
	* config/m68k/linux.mh (XM_FILE): Delete.
	* config/ia64/xm-linux.h: Delete empty file.
	* config/ia64/linux.mh (XM_FILE): Delete.
	* config/arm/xm-linux.h: Delete empty file.
	* config/arm/linux.mh (XM_FILE): Delete.
	
	* config/powerpc/xm-linux.h (KERNEL_U_ADDR): Move from here ...
	* config/powerpc/nm-linux.h (KERNEL_U_ADDR): ... to here.
	* config/m68k/xm-linux.h (KERNEL_U_ADDR): Move from here ...
	* config/m68k/nm-linux.h (KERNEL_U_ADDR): ... to here.
	* config/ia64/xm-linux.h (KERNEL_U_ADDR): Move from here ...
	* config/ia64/nm-linux.h (KERNEL_U_ADDR): ... to here.
	* config/arm/xm-linux.h (KERNEL_U_ADDR): Move from here ...
	* config/arm/nm-linux.h (KERNEL_U_ADDR): ... to here.

	* config/m68k/xm-m68k.h: Delete file.
	* config/m68k/xm-linux.h: Do not include "m68k/xm-m68k.h".  Update
	copyright.
	(HOST_LONG_DOUBLE_FORMAT): Delete macro.
	* config/pa/xm-linux.h: Delete empty file.
	* config/pa/linux.mh (XM_FILE): Delete.
	* config/i386/xm-i386.h: Delete empty file.
	* config/i386/xm-nbsd.h, config/i386/xm-go32.h: Do not include
	"i386/xm-i386.h".
	* config/i386/obsdaout.mh (XM_FILE): Delete.
	* config/i386/obsd64.mh (XM_FILE): Delete.
	* config/i386/fbsd64.mh (XM_FILE): Delete.
	* config/i386/nto.mh (XM_FILE): Delete.
	* config/i386/obsd.mh (XM_FILE): Delete.
	* config/i386/linux64.mh (XM_FILE): Delete.
	* config/i386/linux.mh (XM_FILE): Delete.
	* config/i386/i386sol2.mh (XM_FILE): Delete.
	* config/i386/i386gnu.mh (XM_FILE): Delete.
	* config/i386/fbsd.mh (XM_FILE): Delete.
	* config/i386/nbsd64.mh (XM_FILE): Delete.

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

	* config/pa/xm-linux.h: Do not include "floatformat.h".
	(HOST_FLOAT_FORMAT, HOST_DOUBLE_FORMAT)
	(HOST_LONG_DOUBLE_FORMAT): Delete macros.
	* config/i386/xm-i386.h: Do not include "floatformat.h".
	(HOST_FLOAT_FORMAT, HOST_DOUBLE_FORMAT) 
	(HOST_LONG_DOUBLE_FORMAT): Delete macros.
	* doublest.c (HOST_FLOAT_FORMAT, HOST_DOUBLE_FORMAT)
	(HOST_LONG_DOUBLE_FORMAT): Delete macros.  Use
	GDB_HOST_FLOAT_FORMAT, GDB_HOST_DOUBLE_FORMAT and
	GDB_HOST_LONG_DOUBLE_FORMAT instead.
	* configure.in (GDB_HOST_FLOAT_FORMAT, GDB_HOST_DOUBLE_FORMAT)
	(GDB_HOST_LONG_DOUBLE_FORMAT): Define.
	* configure, config.in: Regenerate.	
	* configure.host (gdb_host_float_format, gdb_host_double_format)
	(gdb_host_long_double_format): Set according to the host.
	
2004-07-29  Andrew Cagney  <cagney@gnu.org>

	* Makefile.in (CONFIG_CLEAN): Delete duplicate definition.

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

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

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

	* cli/cli-decode.c (add_setshow_cmd): Delete function.
	(add_setshow_cmd_full): Make static.
	* command.h (add_setshow_cmd, add_setshow_cmd_full): Delete.
	(add_setshow_filename_cmd, add_setshow_string_cmd): Declare.
	* cli/cli-decode.c (add_setshow_filename_cmd) 
	(add_setshow_string_cmd): New functions.
	* nto-tdep.c (_initialize_nto_tdep): Update.  Fix parameters.
	* mips-tdep.c (_initialize_mips_tdep): Update.
	* m32r-rom.c (_initialize_m32r_rom): Update.  Update copyright.
	* cli/cli-logging.c (_initialize_cli_logging): Update.
	* complaints.c (_initialize_complaints): Update.
	* remote.c (_initialize_remote): Update.
	
2004-07-28  Andrew Cagney  <cagney@gnu.org>

	* cli/cli-decode.c (add_setshow_zinteger_cmd)
	(add_setshow_cmd, add_setshow_auto_boolean_cmd)
	(add_setshow_boolean_cmd, add_setshow_cmd_full): Add help_doc and
	print parameters.  Make string parameters constant.
	* command.h: Update.  Update copyright.
	* remote.c (add_packet_config_cmd, _initialize_remote): Ditto.
	* observer.c (_initialize_observer): Ditto.
	* frame.c (_initialize_frame): Ditto.
	* complaints.c (_initialize_complaints): Ditto.
	* maint.c (_initialize_maint_cmds): Ditto.
	* target.c (initialize_targets): Ditto.
	* cli/cli-logging.c (_initialize_cli_logging): Ditto.
	* infcall.c (_initialize_infcall): Ditto.
	* arm-tdep.c (_initialize_arm_tdep): Ditto.
	* m32r-rom.c (_initialize_m32r_rom): Ditto.
	* remote-rdi.c (_initialize_remote_rdi): Ditto.
	* d10v-tdep.c (_initialize_d10v_tdep): Ditto.
	* mips-tdep.c (_initialize_mips_tdep): Ditto.

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

	* gdbtypes.c (lookup_primitive_typename): Delete function.
	* gdbtypes.h (lookup_primitive_typename): Delete declaration.
	* ada-lex.l: Use language_lookup_primitive_type_by_name.
	* gdbtypes.c (lookup_typename): Ditto.
	* f-exp.y (yylex): Ditto.
	* c-exp.y (yylex): Ditto, eliminate assignment in "if".

	* scm-lang.c (c_builtin_types): Delete extern declaration.
	(scm_language_defn): Replace
	string_char_type and primitive_type_vector with
	la_language_arch_info.
	* jv-lang.c (java_language_defn): Replace
	string_char_type and primitive_type_vector with
	la_language_arch_info.
	* config/i386/i386sco4.mh (NATDEPFILES): Remove reference to
	c_builtin_types in comment.
	* c-lang.h (struct language_arch_info): Declare opaque.
	(c_language_arch_info): Declare.
	(c_builtin_types): Delete declaration.
	* c-lang.c (c_language_arch_info): Set string_char_type to
	builtin_char, not builtin_true_char.  Make global.
	(c_builtin_types): Delete array.
	(asm_language_defn, minimal_language_defn): Replace
	string_char_type and primitive_type_vector with
	la_language_arch_info.

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

	* gdbtypes.h (struct builtin_type): Rename true_char to
	builtin_true_char.
	* gdbtypes.c (gdbtypes_post_init): Update.
	* c-lang.c (arch_info): New function.
	(enum c_primitive_types): New enum.
	(c_language_defn): Instead of string_char_type and
	primitive_type_vector set la_language_arch_info.

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

	* language.h (struct language_arch_info): Fix typo
	s/primative/primitive/.
	* gdbtypes.c (lookup_primitive_typename): Ditto.
	* language.c (language_lookup_primitive_type_by_name)
	(unknown_language_arch_info): Ditto.

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

	* defs.h (enum language): Add nr_languages.
	* language.h (struct language_arch_info): Define.
	(struct language_defn): Add la_language_arch_info.
	(language_lookup_primative_type_by_name): Declare.
	(language_string_char_type): Declare.
	* language.c (_initialize_language, language_gdbarch_post_init)
	(struct language_gdbarch, language_gdbarch_data): Implement
	per-architecture language information.
	(unknown_language_arch_info, language_string_char_type)
	(language_lookup_primative_type_by_name): New functions.
	(unknown_language_defn, auto_language_defn)
	(local_language_defn): Set la_language_arch_info to
	unknown_language_arch_info.
	(unknown_builtin_types): Delete.
	* gdbtypes.c (lookup_primitive_typename): Use
	language_lookup_primative_type_by_name.
	(create_string_type): Use language_string_char_type.
	* values.c (value_from_string): Use language_string_char_type.
	* scm-lang.c (scm_language_defn): Add NULL la_language_arch_info.
	* p-lang.c (pascal_language_defn): Ditto.
	* m2-lang.c (m2_language_defn): Ditto.
	* jv-lang.c (java_language_defn): Ditto.
	* objc-lang.c (objc_language_defn): Ditto.
	* f-lang.c (f_language_defn): Ditto.
	* c-lang.c (c_language_defn, cplus_language_defn) 
	(asm_language_defn, minimal_language_defn): Ditto.
	
2004-07-27  Andrew Cagney  <cagney@gnu.org>

	* gdbtypes.h (struct builtin_type): Declare.
	(builtin_type): Declare.
	* d10v-tdep.c (d10v_register_type): Use builtin_type.
	* gdbtypes.c (_initialize_gdbtypes): Register gdbtypes_post_init.
	(gdbtypes_post_init): New function.
	(builtin_type): New function.

2004-07-27  Kei Sakamoto  <sakamoto.kei@renesas.com>

	* remote-m32r-sdi.c: Fix breakpoint bug.
	(send_cmd, send_one_arg_cmd, send_two_arg_cmd, send_three_arg_cmd,
	recv_char_data, recv_long_data): New functions to replace communication
	sequences.

2004-07-26  Michael Chastain  <mec.gnu@mindspring.com>

	Document PR threads/1650.
	* PROBLEMS (Threads): Document problem with many threads

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>

	Problem reported by Ashley Pittman <ashley@quadrics.com>.
	* main.c (captured_main): When in batch mode always detach.

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-26  Andrew Cagney  <cagney@gnu.org>

	* cli/cli-decode.c (deprecated_add_show_from_set): Deprecate.
	* xcoffsolib.c (_initialize_xcoffsolib): Update.
	* wince.c (_initialize_wince): Update.
	* win32-nat.c (_initialize_win32_nat): Update.
	* varobj.c (_initialize_varobj): Update.
	* valops.c (_initialize_valops): Update.
	* utils.c (initialize_utils, initialize_utils): Update.
	* tui/tui-win.c (_initialize_tui_win): Update.
	* top.c (init_main): Update.
	* symfile.c (_initialize_symfile): Update.
	* source.c (_initialize_source): Update.
	* somsolib.c (_initialize_som_solib): Update.
	* solib.c (_initialize_solib): Update.
	* solib-frv.c (_initialize_frv_solib): Update.
	* serial.c (_initialize_serial): Update.
	* ser-go32.c (_initialize_ser_dos, _initialize_ser_dos): Update.
	* remote.c (_initialize_remote, _initialize_remote): Update.
	* remote-vx.c (_initialize_vx): Update.
	* remote-utils.c (_initialize_sr_support): Update.
	* remote-sds.c (_initialize_remote_sds): Update.
	* remote-mips.c (_initialize_remote_mips): Update.
	* remote-e7000.c (_initialize_remote_e7000): Update.
	* proc-api.c (_initialize_proc_api): Update.
	* printcmd.c: Update.
	* parse.c (_initialize_parse): Update.
	* pa64solib.c (_initialize_pa64_solib): Update.
	* p-valprint.c (_initialize_pascal_valprint): Update.
	* monitor.c (_initialize_remote_monitors): Update.
	* mips-tdep.c (_initialize_mips_tdep): Update.
	* mcore-tdep.c (_initialize_mcore_tdep): Update.
	* maint.c (_initialize_maint_cmds): Update.
	* lin-lwp.c (_initialize_lin_lwp): Update.
	* language.c (_initialize_language): Update.
	* kod.c (_initialize_kod): Update.
	* infrun.c (set_schedlock_func, _initialize_infrun): Update.
	* i386-tdep.c (_initialize_i386_tdep): Update.
	* gdbtypes.c (build_gdbtypes, _initialize_gdbtypes): Update.
	* gdbarch.sh: Update.
	* gdbarch.c: Re-generate.
	* gdb-events.sh: Update.
	* gdb-events.c: Re-generate.
	* frame.c (_initialize_frame): Update.
	* exec.c: Update.
	* demangle.c (_initialize_demangler): Update.
	* dcache.c (_initialize_dcache): Update.
	* cris-tdep.c (_initialize_cris_tdep, cris_version_update): Update.
	* cp-valprint.c (_initialize_cp_valprint): Update.
	* corefile.c (_initialize_core): Update.
	* command.h: Update.
	* cli/cli-decode.h: Update.
	* cli/cli-cmds.c (init_cli_cmds): Update.
	* charset.c (_initialize_charset): Update.
	* breakpoint.c (_initialize_breakpoint): Update.
	* arm-tdep.c (_initialize_arm_tdep_initialize_arm_tdep): Update.
	* alpha-tdep.c (_initialize_alpha_tdep): Update.
	* aix-thread.c (_initialize_aix_thread): Update.

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

	Partial fix for PR backtrace/1718.
	* i386-tdep.c (i386_analyze_frame_setup): Handle more instructions
	that GCC migrates into the prolugue.  Don't handle any
	instructions that clobber %ebx.

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

	Use regcache_raw_collect instead of regcache_collect.
	* regcache.h (regcache_collect): Delete declaration.
	* regcache.c (regcache_colect): Delete function.
	* win32-nat.c (do_child_store_inferior_registers): Update.
	* sol-thread.c (sol_thread_store_registers): Update.
	* shnbsd-tdep.c (shnbsd_fill_reg): Update.
	* rs6000-nat.c (store_register): Update.
	* remote.c (store_register_using_P, remote_store_registers): Update.
	* ppcnbsd-tdep.c (ppcnbsd_fill_reg): Update.
	* ppc-linux-nat.c (store_altivec_register, store_spe_register) 
	(fill_vrregset, store_spe_registers, fill_gregset)
	(fill_gregset): Update.
	* nto-procfs.c (procfs_store_registers): Update.
	* mipsnbsd-tdep.c (mipsnbsd_fill_reg): Update.
	* mips-linux-tdep.c (fill_gregset, mips64_fill_gregset): Update.
	* m68klinux-nat.c (store_register, fill_gregset): Update.
	* m68k-tdep.c (fill_gregset): Update.
	* infptrace.c (store_register): Update.
	* i386-nto-tdep.c (i386nto_regset_fill): Update.
	* i386-linux-nat.c (store_register, fill_gregset): Update.
	* hppa-linux-nat.c (fill_gregset): Update.
	* go32-nat.c (store_register): Update.
	* armnbsd-nat.c (store_register, store_regs, store_fp_register)
	(store_fp_regs): Update.
	* arm-linux-nat.c (store_nwfpe_single, store_nwfpe_double) 
	(store_nwfpe_extended, store_fpregister, store_fpregs) 
	(store_register, store_regs, fill_gregset, fill_fpregset): Update.
	* alpha-tdep.c (alpha_fill_int_regs, alpha_fill_fp_regs): Update.
	* aix-thread.c (fill_gprs64, fill_fprs, fill_sprs64, fill_sprs32)
	(store_regs_user_thread, store_regs_kernel_thread): Update.

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

	* dwarf2-frame.c (struct dwarf2_cie): Delete `addr_size' member.
	(decode_frame_entry_1): Use DW_EH_PE_absptr as default for CIE
	encoding.
	(dwarf2_build_frame_info): Adjust for removal of `addr_size'
	member of `struct comp_unit'.

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

	* infrun.c (handle_inferior_event): Separate the STEP_OVER_ALL and
	DEPRECATED_IGNORE_HELPER_CALL cases, only #ifdef the latter.

2004-07-23  Martin Hunt  <hunt@redhat.com>
	Kevin Buettner <kevinb@redhat.com>

	* dwarf2-frame.c (execute_cfa_program): Fix typo in which the
	alignment was being added to the offset instead of multiplied.

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

	* sparc64obsd-tdep.c (sparc64obsd_pc_in_sigtramp): Adjust for
	changed signal trampoline in OpenBSD 3.5-current.

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

	* config/sparc/obsd64.mt (TDEPFILES): Add sparcobsd-tdep.o.

	* sparcnbsd-nat.c (sparc32nbsd_supply_pcb): Fix typo in comment.

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

	Use regcache_raw_supply instead of supply_register.
	* regcache.h (supply_register): Delete declaration.
	* regcache.c (supply_register): Delete function.
	* wince.c (do_child_fetch_inferior_registers): Update.
	* win32-nat.c (do_child_fetch_inferior_registers) 
	(fetch_elf_core_registers): Update.
	* v850ice.c (v850ice_fetch_registers): Update.
	* thread-db.c (thread_db_store_registers): Update.
	* sol-thread.c (sol_thread_store_registers): Update.
	* shnbsd-tdep.c (shnbsd_supply_reg): Update.
	* rs6000-nat.c (fetch_register): Update.
	* rom68k-rom.c (rom68k_supply_one_register): Update.
	* remote.c (remote_wait, remote_async_wait): Update.
	* remote-st.c (get_hex_regs): Update.
	* remote-sim.c (gdbsim_fetch_register): Update.
	* remote-sds.c (sds_fetch_registers): Update.
	* remote-rdp.c (remote_rdp_fetch_register): Update.
	* remote-rdi.c (arm_rdi_fetch_registers): Update.
	* remote-mips.c (mips_wait, mips_fetch_registers): Update.
	* remote-m32r-sdi.c (m32r_fetch_register): Update.
	* remote-hms.c (init_hms_cmds): Update.
	* remote-est.c (init_est_cmds): Update.
	* remote-e7000.c (get_hex_regs, fetch_regs_from_dump) 
	(e7000_fetch_registers, sub2_from_pc, e7000_wait): Update.
	* ppcnbsd-tdep.c (ppcnbsd_supply_reg, ppcnbsd_supply_fpreg): Update.
	* ppc-linux-nat.c (fetch_altivec_register, fetch_spe_register) 
	(fetch_register, supply_vrregset, supply_vrregset)
	(fetch_spe_registers): Update.
	* ppc-bdm.c (bdm_ppc_fetch_registers): Update.
	* monitor.c (monitor_supply_register): Update.
	* mipsv4-nat.c (supply_gregset, supply_fpregset): Update.
	* mipsnbsd-tdep.c (mipsnbsd_supply_reg)
	(mipsnbsd_supply_fpreg): Update.
	* mips-nat.c (fetch_inferior_registers)
	(fetch_core_registers): Update.
	* mips-linux-tdep.c (supply_32bit_reg, supply_gregset) 
	(supply_fpregset, mips64_supply_gregset)
	(mips64_supply_fpregset): Update.
	* m68klinux-nat.c (fetch_register, supply_gregset)
	(supply_fpregset): Update.
	* m68k-tdep.c (supply_gregset, supply_fpregset): Update.
	* m32r-rom.c (init_m32r_cmds, init_mon2000_cmds): Update.
	* lynx-nat.c (fetch_inferior_registers, fetch_core_registers): Update.
	* irix5-nat.c (supply_gregset, supply_fpregset): Update.
	* infptrace.c (fetch_register): Update.
	* ia64-linux-nat.c (supply_gregset, supply_fpregset): Update.
	* ia64-aix-nat.c (supply_gregset, supply_fpregset): Update.
	* i386gnu-nat.c (fetch_fpregs, supply_gregset) 
	(gnu_fetch_registers, gnu_store_registers): Update.
	* i386-nto-tdep.c (i386nto_supply_gregset): Update.
	* i386-linux-nat.c (fetch_register, supply_gregset)
	(dummy_sse_values): Update.
	* hpux-thread.c (hpux_thread_fetch_registers): Update.
	* hppah-nat.c (fetch_register): Update.
	* hppa-linux-nat.c (fetch_register, supply_gregset) 
	(supply_fpregset): Update.
	* go32-nat.c (fetch_register): Update.
	* dve3900-rom.c (fetch_bitmapped_register)
	(_initialize_r3900_rom): Update.
	* cris-tdep.c (supply_gregset): Update.
	* abug-rom.c (init_abug_cmds): Update.
	* core-aout.c (fetch_core_registers): Update.
	* armnbsd-nat.c (supply_gregset, supply_fparegset)
	(fetch_register, fetch_fp_register): Update.
	* arm-linux-nat.c (fetch_nwfpe_single, fetch_nwfpe_none)
	(fetch_nwfpe_extended, fetch_fpregister, fetch_fpregs)
	(fetch_register, fetch_regs, supply_gregset, supply_fpregset): Update.
	* alphanbsd-tdep.c (fetch_core_registers): Update.
	* alpha-tdep.c (alpha_supply_int_regs, alpha_supply_fp_regs): Update.
	* alpha-nat.c (fetch_osf_core_registers) 
	(fetch_osf_core_registers, fetch_osf_core_registers): Update.
	* aix-thread.c (supply_gprs64, supply_reg32, supply_fprs) 
	(supply_sprs64, supply_sprs32, fetch_regs_kernel_thread): Update.

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-21  Andrew Cagney  <cagney@gnu.org>

	* config/mips/tm-mips.h (DEPRECATED_IGNORE_HELPER_CALL): Deprecate.
	* mips-tdep.c (mips_dump_tdep, mips_ignore_helper): Update.
	* infrun.c (DEPRECATED_IGNORE_HELPER_CALL): Delete macro.
	(handle_inferior_event): Wrap call to deprecated
	IGNORE_HELPER_CALL in #ifdef.
	* config/mips/tm-nbsd.h: Update.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): The register set used for
	bfd_mach_ppc has no segment registers.

	Include PowerPC SPR numbers for special-purpose registers.
	* rs6000-tdep.c (struct reg): Add new member, 'spr_num'.
	(R, R4, R8, R16, F, P, R32, R64, R0): Include value for
	new member in initializer.
	(S, S4, SN4, S64): New macros for defining special-purpose
	registers.
	(PPC_UISA_SPRS, PPC_UISA_NOFP_SPRS, PPC_OEA_SPRS, registers_power,
	registers_403, registers_403GC, registers_505, registers_860,
	registers_601, registers_602, registers_603, registers_604,
	registers_750, registers_e500): Use them.

	* rs6000-tdep.c (rs6000_gdbarch_init): Delete variable 'power';
	replace references with expression used to initialize variable.

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

	* breakpoint.c (deprecated_read_memory_nobpt): Rename
	read_memory_nobpt.
	* sparc-linux-tdep.c (sparc_linux_sigtramp_start): Update.
	* s390-tdep.c (s390_readinstruction, s390_in_function_epilogue_p)
	(s390_sigtramp_frame_sniffer): Update.
	* mn10300-tdep.c (mn10300_analyze_prologue): Update.
	* mipsnbsd-tdep.c (mipsnbsd_sigtramp_offset): Update.
	* mips-tdep.c (mips_fetch_instruction, mips16_fetch_instruction) 
	(mips32_fetch_instruction): Update.
	* mcore-tdep.c (get_insn): Update.
	* m68klinux-tdep.c (m68k_linux_pc_in_sigtramp): Update.
	* i386nbsd-tdep.c (i386nbsd_sigtramp_offset): Update.
	* i386ly-tdep.c (i386lynx_saved_pc_after_call): Update.
	* i386-linux-tdep.c (i386_linux_sigtramp_start) 
	(i386_linux_rt_sigtramp_start): Update.
	* i386-linux-nat.c (child_resume): Update.
	* hppa-tdep.c (skip_prologue_hard_way, hppa_frame_cache): Update.
	* hppa-linux-tdep.c (insns_match_pattern): Update.
	* gdbcore.h: Update.
	* frv-tdep.c (frv_gdbarch_adjust_breakpoint_address): Update.
	* frame.c (safe_frame_unwind_memory): Update.
	* amd64-linux-tdep.c (amd64_linux_sigtramp_start): Update.
	* alphanbsd-tdep.c (alphanbsd_sigtramp_offset): Update.
	* alpha-tdep.c (alpha_read_insn): Update.

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

	* tramp-frame.h (struct tramp_frame): Change "insn" to a struct
	containing both bytes and mask.  Add "frame_type".
	* tramp-frame.c (tramp_frame_start): Update.
	(tramp_frame_prepend_unwinder): Update.
	* mips-linux-tdep.c (mips_linux_o32_sigframe)
	(mips_linux_o32_rt_sigframe, mips_linux_n32_rt_sigframe)
	(mips_linux_n64_rt_sigframe): Update.  Make "static const".
	* ppcnbsd-tdep.c (tramp_frame ppcnbsd_sigtramp): Update.

2004-07-19  Eli Zaretskii  <eliz@gnu.org>

	* config/djgpp/fnchange.lst: Add remapping for bfd/elf32-cr*.c,
	bfd/elf32-sh-symbian.c, bfd/elf32-sh64-com.c,
	sim/testsuite/sim/mips/hilo-hazard-[123].s, and
	sim/testsuite/sim/mips/fpu64-ps-sb1.s.

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

	* NEWS, PROBLEMS: Update for 6.2.

	* 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.

	* vaxbsd-nat.c: Include <sys/types.h>, <machine/pcb.h> and
	"bsd-kvm.h".
	(vaxbsd_supply_pcb): New function.
	(_initialize_vaxbsd_nat): New prototype and function.
	* config/vax/nbsdaout.mh (NATDEPFILES): Add bsd-kvm.o, solib.o and
	solib-sunos.o.
	(LOADLIBES): New variable.
	* config/vax/nbsdelf.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.
	* config/vax/obsd.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.
	* Makefile.in (vaxbsd-nat.o): Update dependencies.

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>

	* remote-m32r-sdi.c: Re-indent.

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

	* ppc-tdep.h (ppc_spr_asr): Add missing OEA SPR.
        (ppc_spr_mi_dbcam, ppc_spr_mi_dbram0, ppc_spr_mi_dbram1)
	(ppc_spr_md_cam, ppc_spr_md_ram0, ppc_spr_md_ram1): Add
	missing MPC823 SPRs.
	(ppc_spr_m_twb): Renamed from ppc_spr_md_twb; the old name was
	incorrect.  (This was corrected in GDB's register name tables on
	2004-07-14.)

	* rs6000-tdep.c (registers_602): Correct register name: "esassr"
	should be "esasrr" ("ESA Save and Restore Register").

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-15  Joel Brobecker  <brobecker@gnat.com>

	* ada-lang.c (ada_language_defn): Remove commented out code.

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

	* ppc-tdep.h (struct gdbarch_tdep): New member: ppc_sr0_regnum.
	* rs6000-tdep.c (rs6000_gdbarch_init): Initialize it.

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

	* rs6000-tdep.c (COMMON_UISA_NOFP_REGS): Delete; unused.

	* ppc-tdep.h (ppc_num_vrs): New enum constant.

	* ppc-tdep.h (ppc_num_srs): New enum constant.

	* ppc-tdep.h (ppc_spr_mq, ppc_spr_xer, ppc_spr_rtcu, ppc_spr_rtcl)
	(ppc_spr_lr, ppc_spr_ctr, ppc_spr_cnt, ppc_spr_dsisr, ppc_spr_dar)
	(ppc_spr_dec, ppc_spr_sdr1, ppc_spr_srr0, ppc_spr_srr1)
	(ppc_spr_eie, ppc_spr_eid, ppc_spr_nri, ppc_spr_sp, ppc_spr_cmpa)
	(ppc_spr_cmpb, ppc_spr_cmpc, ppc_spr_cmpd, ppc_spr_icr)
	(ppc_spr_der, ppc_spr_counta, ppc_spr_countb, ppc_spr_cmpe)
	(ppc_spr_cmpf, ppc_spr_cmpg, ppc_spr_cmph, ppc_spr_lctrl1)
	(ppc_spr_lctrl2, ppc_spr_ictrl, ppc_spr_bar, ppc_spr_vrsave)
	(ppc_spr_sprg0, ppc_spr_sprg1, ppc_spr_sprg2, ppc_spr_sprg3)
	(ppc_spr_ear, ppc_spr_tbl, ppc_spr_tbu, ppc_spr_pvr)
	(ppc_spr_spefscr, ppc_spr_ibat0u, ppc_spr_ibat0l, ppc_spr_ibat1u)
	(ppc_spr_ibat1l, ppc_spr_ibat2u, ppc_spr_ibat2l, ppc_spr_ibat3u)
	(ppc_spr_ibat3l, ppc_spr_dbat0u, ppc_spr_dbat0l, ppc_spr_dbat1u)
	(ppc_spr_dbat1l, ppc_spr_dbat2u, ppc_spr_dbat2l, ppc_spr_dbat3u)
	(ppc_spr_dbat3l, ppc_spr_ic_cst, ppc_spr_ic_adr, ppc_spr_ic_dat)
	(ppc_spr_dc_cst, ppc_spr_dc_adr, ppc_spr_dc_dat, ppc_spr_dpdr)
	(ppc_spr_dpir, ppc_spr_immr, ppc_spr_mi_ctr, ppc_spr_mi_ap)
	(ppc_spr_mi_epn, ppc_spr_mi_twc, ppc_spr_mi_rpn, ppc_spr_mi_cam)
	(ppc_spr_mi_ram0, ppc_spr_mi_ram1, ppc_spr_md_ctr, ppc_spr_m_casid)
	(ppc_spr_md_ap, ppc_spr_md_epn, ppc_spr_md_twb, ppc_spr_md_twc)
	(ppc_spr_md_rpn, ppc_spr_m_tw, ppc_spr_md_dbcam, ppc_spr_md_dbram0)
	(ppc_spr_md_dbram1, ppc_spr_ummcr0, ppc_spr_upmc1, ppc_spr_upmc2)
	(ppc_spr_usia, ppc_spr_ummcr1, ppc_spr_upmc3, ppc_spr_upmc4)
	(ppc_spr_zpr, ppc_spr_pid, ppc_spr_mmcr0, ppc_spr_pmc1)
	(ppc_spr_sgr, ppc_spr_pmc2, ppc_spr_dcwr, ppc_spr_sia)
	(ppc_spr_mmcr1, ppc_spr_pmc3, ppc_spr_pmc4, ppc_spr_sda)
	(ppc_spr_tbhu, ppc_spr_tblu, ppc_spr_dmiss, ppc_spr_dcmp)
	(ppc_spr_hash1, ppc_spr_hash2, ppc_spr_icdbdr, ppc_spr_imiss)
	(ppc_spr_esr, ppc_spr_icmp, ppc_spr_dear, ppc_spr_rpa)
	(ppc_spr_evpr, ppc_spr_cdbcr, ppc_spr_tsr, ppc_spr_602_tcr)
	(ppc_spr_403_tcr, ppc_spr_ibr, ppc_spr_pit, ppc_spr_esasrr)
	(ppc_spr_tbhi, ppc_spr_tblo, ppc_spr_srr2, ppc_spr_sebr)
	(ppc_spr_srr3, ppc_spr_ser, ppc_spr_hid0, ppc_spr_dbsr)
	(ppc_spr_hid1, ppc_spr_iabr, ppc_spr_dbcr, ppc_spr_iac1)
	(ppc_spr_dabr, ppc_spr_iac2, ppc_spr_dac1, ppc_spr_dac2)
	(ppc_spr_l2cr, ppc_spr_dccr, ppc_spr_ictc, ppc_spr_iccr)
	(ppc_spr_thrm1, ppc_spr_pbl1, ppc_spr_thrm2, ppc_spr_pbu1)
	(ppc_spr_thrm3, ppc_spr_pbl2, ppc_spr_fpecr, ppc_spr_lt)
	(ppc_spr_pir, ppc_spr_pbu2): New enum constants for PowerPC
	special-purpose register numbers.

	* rs6000-tdep.c (registers_860): Correct register name.  (No PPC
	manual mentions 'md_twb', but many mention 'm_twb', and at that
	point in the register list.)

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

	* utils.c (internal_warning_problem): Fix typo, "internal-warning"
	instead of "internal-error".

2004-07-10  Joel Brobecker  <brobecker@gnat.com>

	* hppa-hpux-tdep.c: Fix a compilation failure due to a comment
	that was inserted inside a comment.

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

	* hppa-hpux-tdep.c (hppa_hpux_som_find_global_pointer): New 
	function.
	(hppa_hpux_push_dummy_code): New function.
	(hppa_hpux_init_abi): Set push_dummy_code and call_dummy_location.
	Set find_global_pointer method.

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

	* NEWS: Mention BSD libkvm interface.

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

	* symfile.c (generic_load): Comment typo.
	* stack.c (get_selected_block): Ditto.
	* regcache.c (regcache_cooked_read): Ditto.
	* monitor.c (monitor_debug): Ditto.
	* mips-tdep.c (mips_read_pc): Ditto.
	* i386-linux-nat.c (ps_get_thread_area): Ditto.
	* gdb_mbuild.sh: Ditto.
	* gdbarch.sh: Ditto.
	* gdbarch.h: Ditto.

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

        * ada-tasks.c: Remove file.
	
	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>

	* 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.
	* dictionary.c, 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: Update copyright notice.
	Include block.h.
	
	Replace REGNAME, LAST, INTERNAL_VARIABLE with
	SPECIAL_VARIABLE and unify the treatment of these cases.

	(write_attribute_call0): Remove.
	(write_attribute_call1): Remove.
	(write_attribute_calln): Remove.
	(save_qualifier): Add missing semicolon.

	(simple_exp,exp): Decomment (i.e., reactivate) code that was 
	temporarily disabled to allow compilation with FSF head version.

	(simple_exp syntax): Remove use of OP_ADA_ATTRIBUTE and 
	use individual operators (OP_*) for all attributes.
	(exp syntax): Use write_int.
	Handle STRING literals with OP_STRING.
	(variable syntax): Add limit parameter to calls to 
	write_object_renaming.  

	(temp_parse_space): New definition to hold entities that need
	only live until the next call to ada_parse.
	(string_to_operator): Rename fields of ada_opname_table entries.

	(write_var_from_sym): Record block.
	(write_var_from_name): Minor reformatting.
	Make sure saved name is properly encoded in the case of multiple 
	matches, and set its language to Ada.
	Update comment.
	Modify to indicate unresolved name as symbol in the UNRESOLVED 
	namespace, allocated in temp_parse_space.
	(write_int): New function.

	(write_object_renaming): Add max_depth parameter to limit
	chains of object renamings.
	Handle case where root of renaming expression is itself a renaming.
	Use temp_parse_space for temporary name buffer.
	Handle renamings to dereferenced pointers (___XEXA suffices).
	
	(ada_parse, yyerror, string_to_operator, 
	write_var_from_sym, write_var_from_name, write_attribute_call0, 
	write_attribute_call1, write_attribute_calln, 
	write_object_renaming): Protoize.

	(_initialize_ada_exp): New function.
	
	* ada-lang.c: Update copyright notice.
	General terminology change to conform to GNAT compiler usage:
	mangle => encode, demangle => decode
	Include gdb_obstack.h.
	Include gdb_regex.h
	Include frame.h
	Include hashtab.h
	Include completer.h
	Include gdb_stat.h
	Include block.h
	Include infcall.h
	
	(ADA_RETAIN_DOTS): Make sure this is defined.
	(TRUNCATION_TOWARDS_ZERO): Define.
	(struct string_vector): Define.
	(unresolved_names): Remove definition.
	(xnew_string_vector): New function.
	(string_vector_append): New function.
	(extract_string): Make static.
	(ada_unqualified_name): New function.
	(add_angle_brackets): New function.
	(function_name_from_pc): New function.
	(place_on_stack): Rename to ensure_lval.

	(ensure_lval): Renamed from place_on_stack.
	Make identity on lvals.
	Update comment.
	(is_nonfunction): New interface.
	Only symbols in LOC_CONST class can be enumerals.
	(fill_in_ada_prototype): Remove; now independent of language.
	(add_defn_to_vec): Add obstack and symtab arguments.
	Use obstack to hold collected definitions.
	(num_defns_collected): New function.
	(defns_collected): New function.
	(ada_resolve_subexp): Rename to resolve_subexp.
	(resolve_subexp): Renamed from ada_resolve_subexp.
	(ada_op_name): Return non-const result.
	(ada_decoded_op_name): Renamed from ada_op_name, now used for
	other purposes.

	(to_fixed_array_type): Add declaration.
	(coerce_unspec_val_to_type): Remove offset parameter.
	(find_sal_from_funcs_and_line): New interface.
	(find_line_in_linetable): Ditto.

	(all_sals_for_line): Rename to ada_sals_for_line and make
	global.
	Add new parameter. When set, do not ask the user to choose the 
	instance, but use the first one	found instead.
	Use given line number in returned sals.
	Fix comment. 
	Skip the prologue if funfirstline is set.
	Correct for memory leak when 0 lines found.

	(value_pos_atr): Use pos_atr.
	(pos_atr): New function.
	(standard_lookup): Add block parameter.

	(makeTimeStart): Remove declaration and uses.
	(makeTimeStop): Remove declaration and uses.

	(ada_completer_word_break_characters): Allow for VMS.
	(ADA_MAIN_PROGRAM_SYMBOL_NAME): Make into constant.
	(raise_sym_name): New constant.
	(raise_unhandled_sym_name): New constant.
	(raise_assert_sym_name): New constant.
	(process_raise_exception_name): New constant.
	(longest_exception_template): New constant.
	(warning_limit): New variable to limit warnings during expression
	evaluation.
	(warnings_issued): New variable to keep track of warnings issued.
	(known_runtime_file_name_patterns): New constant.
	(known_auxiliary_function_name_patterns): New constant.
	(symbol_list_obstack): New variable.
	
	(field_name_match,is_suffix,is_suppressed_name,ada_encode,
	ada_decode,ada_match_name,encoded_ordered_before,equiv_types,
	lesseq_defined_than,is_nondebugging_type,is_name_suffix,wild_match,
	find_sal_from_funcs_and_line, ada_breakpoint_rewrite, 
	ada_is_tagged_type, ada_is_parent_field, ada_is_wrapper_field, 
	ada_variant_discrim_name, field_alignment, dynamic_template_type,
	ada_is_character_type, ada_is_aligner_type, ada_is_vax_floating_type): 
	Replace use of deprecated STREQ and STREQN macros by calls to strncmp 
	and strcmp. 

	(ada_get_field_index): New function.
	(lim_warning): New function.
	(ada_translate_error_message): New function.
	(MAX_OF_SIZE): New function.
	(MIN_OF_SIZE): New function.
	(UMAX_OF_SIZE): New function.
	(UMIN_OF_SIZE): New function.
	(discrete_type_high_bound): New function.
	(discrete_type_low_bound): New function.
	(base_type): New function.
	(do_command): Remove.
	
	(ada_update_initial_language): Use language_ada, not language_unknown.
	(ada_encode): Renamed from ada_mangle.
	Obey ADA_RETAIN_DOTS.
	(ada_decode): Renamed from ada_demangle.
	Update coding conventions.
	(decoded_names_store): New hash table.
	(ada_decode_symbol): New function.
	(ada_la_decode): New function.
	
	(modify_general_field):	Correct computations of offset and bit 
	position.
	(desc_base_type): Handle ref types, too.
	(ada_is_direct_array_type): New function.

	(ada_is_simple_array): Rename to ada_is_simple_array_type.
	(ada_is_array_descriptor): Rename to ada_is_array_descriptor_type.
	(ada_is_bogus_array_descriptor,ada_type_of_array,
	ada_coerce_to_simple_array_ptr,ada_coerce_to_simple_array,
	ada_type_match,convert_actual,ada_evaluate_subexp): Use renamed 
	ada_is_array_descriptor_type.
	
	(ada_coerce_to_simple_array_type): Fix incorrect value freeing.
	(ada_is_packed_array_type): Handle pointers or 
	references to packed arrays as well.
	(packed_array_type): Uncomment use of TYPE_FLAG_FIXED_INSTANCE.
	(decode_packed_array_type): Search for the packed array type 
	symbol in the currently selected block and associated 
	superblocks too.
	Use lookup_symbol again.

	(decode_packed_array): Handle pointers and references.
	Update call to coerce_unspec_val_to_type.
	(decode_packed_array_type,value_subscript_packed): Limit warnings.
	(ada_value_primitive_packed_val): Improve comment.
	
	(ada_index_type): Substitute int type for "undefined".
	(ada_index_type,ada_array_bound_from_type,ada_array_bound,
	ada_array_langth, ada_is_string_type): Use renamed 
	ada_is_simple_array_type.
	(empty_array): New function.

	(ada_resolve):	Rename to resolve.
	(resolve): Make static.
	Call renamed resolve_subexp.
	Update comment.
	(ada_resolve_subexp): Rename to resolve_subexp.
	(resolve_subexp): Update comment.
	Decomment disabled code.
	Add LOC_COMPUTED* cases.
	Modify to use temporary	struct symbols (marked as being in 
	UNDEF_NAMESPACE) to indicate unresolved names, instead of 
	OP_UNRESOLVED_VALUE.
	Remove OP_ATTRIBUTE; use individual opcodes for attributes.	
	Add OP_STRING case.
	Remove OP_ARRAY.
	Use SYMBOL_PRINT_NAME instead of ada_demangle.
	Use new ada_lookup_symbol_list interface.
	Use new ada_resolve_function interface.
	Remove OP_TYPE case.

	(ada_args_match): Idiot proof against null actuals.
	Use intermediate variables to clarify.
	(ada_resolve_function): Update comment and interface.
	(mangled_ordered_before): Rename to encoded_ordered_before and
	update comment.
	(sort_choices): Update comment and interface.
	Use SYMBOL_LINKAGE_NAME in place of SYMBOL_NAME.
	(user_select_syms): New interface.
	Use new sort_choices interface.
	Use SYMBOL_PRINT_NAME rather than SYMBOL_SOURCE_NAME.
	(possible_user_operator_p): Idiot-proof against null values.
	(ada_simple_renamed_entity): Don't make cleanup; rely on 
	caller to free result string.
	Remove const from return type.
	(make_array_descriptor): Rename uses of place_on_stack to 
	ensure_lval.
	Make sure that arrays are on stack.
	
	(HASH_SIZE): Define.
	(struct cache_entry): Define.
	(cache_space): Define.
	(cache): Define.
	(clear_ada_sym_cache): New function.
	(find_entry): New function.
	(lookup_cached_symbol): New function.
	(defn_vector_size): Define.
	(cache_symbol): New function.
	(defn_symbols): Remove.
	
	(standard_lookup): Use lookup_symbol_in_language to get effect of
	C lookup.
	Cache results.
	
	(symbol_completion_match): New function.
	(symbol_completion_add): New function.
	(ada_make_symbol_completion_list): New function.

	(ada_lookup_partial_symbol,ada_lookup_simple_minsym, 
	add_symbols_from_enclosing_procs,remove_extra_symbols): Replace 
	DEPRECATED_SYMBOL_NAME with SYMBOL_LINKAGE_NAME. 
	(symtab_for_sym): Handle LOC_COMPUTED, LOC_COMPUTED_ARG.
	
	(ada_lookup_simple_minsym): New function.
	(ada_lookup_minimal_symbol): Use ada_lookup_simple_minsym.

	(add_symbols_from_enclosing_procs): New interface.
	Conditionalize more helpfully.
	Don't bother if program isn't running.
	Use new interface to get_frame_block.
	Limit number of levels searched	with MAX_LEXICAL_LEVELS, just in case.
	
	(remove_extra_symbols): New interface.
	(xget_renaming_scope): New function.
	(is_package_name): New function.
	(renaming_is_visible): New function.
	(remove_out_of_scope_renamings): New function.

	(ada_lookup_symbol_list): New interface.
	Properly reinitialize the symbol list obstack.
	Don't call add_symbols_from_enclosing_procs if we start from a
	static or global block.
	Use new interfaces to ada_add_block_symbols, add_defn_to_vec, 
	add_symbols_from_enclosing_procs.
	Add symtab data to cached entries.
	Handle symbols prefixed with
	"standard__" specially; strip prefix and don't look in local symbols.
	Do not include out of scope renaming symbols in list of 
	symbols returned.
	Add const to block parameter.
	Move check for non-local, non-global symbols earlier.  
	Remove timing stuff.
	(ada_lookup_symbol): New interface.
	Find symtab as well.
	(ada_lookup_symbol_nonlocal): New function.

	(is_name_suffix): Enhance suffix detection to recognize
	an optional "__[:digit:]+" before any "\.[:digit:]+" suffix.
	(is_dot_digits_suffix): New function.
	(wild_match): Ignore ".[:digit:]*" suffixes during matches.
	
	(ada_add_block_symbols): New interface.  Use obstack to return results
	in a vector of struct ada_symbol_infos.  Add symtab argument.
	Use new interface to add_defn_to_vec.
	Remove calls to fill_in_ada_prototype.
	Use BLOCK_BUCKETS, BLOCK_BUCKET.
	
	(ada_finish_decode_line_1): Add const qualification to local to fix
	warning.
	Start looking in static block for functions to avoid attempts 
	to search frame chain for up-level variables.
	Adapt to new ada_sals_for_line interface.
	Use new interfaces to ada_lookup_symbol_list and user_select_syms.
	Handle quoting of the function name inside the spec string.
	Skip prologue when funfirstline is set and update the 
	function documentation to that effect.

	(debug_print_lines, debug_print_block, debug_print_blocks, 
	debug_print_symtab): Remove.

	(ada_main_name): New function.	
	(ada_exception_breakpoint_type): New function.
	(is_known_support_routine): New function.
	(ada_find_printable_frame): Renamed from find_printable_frame and made
	global.
	Remove level parameter.
	Use new interface to select_frame.

	(begin_command): Remove.
	(ada_adjust_exception_stop): New function.
	(ada_print_exception_stop): New function.
	(exception_name_from_cond): New function.
	(ada_report_exception_break): Replace disabled code with 
	conditionalization on GNAT_GDB.
	Get the exception name from the condition string.
	Remove and move functionality into new functions 
	ada_print_exception_breakpoint_task and 
	ada_print_exception_breakpoint_nontask.
	(error_breakpoint_runtime_sym_not_found): New function.
	(is_runtime_sym_defined): New function.
	(ada_breakpoint_rewrite): Uncomment suppressed code.
	Use symbolic error-message and runtime-symbol names.
	Surround runtime symbol names in quotes.
	Allow non-specific breakpoints on exceptions and assertions before
	program starts.
	
	(ada_is_tagged_type): Add parameter.
	(ada_is_tag_type): New function.
	(ada_tag_type): Use new ada_lookup_struct_elt_type interface.
	(ada_variant_discrim_type): Ditto.
	(value_tag_from_contents_and_address): New function.
	(type_from_tag): New function.
	(struct tag_args): New structure used to communicate with
	ada_tag_name_1.
	(ada_tag_name_1): New function.
	(ada_tag_name): New function.

	(ada_scan_number): Update comment.
	(find_struct_field): New function.
	(ada_search_struct_field): Make static.
	(ada_value_struct_elt): New version that returns references when
	given pointers or references to structs.
	(ada_lookup_struct_elt_type): Add 'refok' parameter.
	(ada_which_variant_applies): Use new ada_lookup_struct_elt_type
	interface.
	(ada_value_ind): Use new ada_to_fixed_value interface.
	(ada_coerce_ref): Ditto.
	(field_offset): Remove.

	(ada_find_any_symbol): New function, extracted from ada_find_any_type.
	(ada_find_renaming_symbol): New function.
	(ada_prefer_type): Prefer named types over unnamed ones.
	(variant_field_index): New function.
	(contains_variant_part): Removed: subsumed by variant_field_index.
	(ada_template_to_fixed_record_type): New function, mostly from
	template_to_fixed_record_type.
	(template_to_fixed_record_type): 
	Do not scan the type fields beyond the last one; prevents a 
	potential SEGV.
	Handle case where variant field is listed BEFORE discriminant it 
	depends on.
	Fix calculation of record length when bit length is 
	not evenly divisible by char length.
	Move code to ada_template_to_fixed_record_type and call it.

	(template_to_static_fixed_type): Revise comment.  
	Modify to work on ordinary record types as well as templates, 
	so as to handle	fields that use ___XVE or ___XVU encodings. 
	(to_record_with_fixed_variant_part): Fill out comment.
	Initialize C++ stuff in right type.
	Allow case where DVAL is null.
	Handle case where variant field is not last.
	Fix typo concerning record length.
	(to_fixed_record_type): Decomment disabled code.
	(to_fixed_record_type): Use variant_field_index instead of 
	contains_variant_part.
	(to_fixed_variant_branch_type): Ditto.
	(to_fixed_array_type): Decomment disabled code.
	(ada_to_fixed_type): Convert tagged types to the specific type.
	Deactivate the size-check for array types in order to avoid 
	some false size alarms.
	(to_static_fixed_type): Decomment disabled code.
	Modify to call template_to_static_fixed_type
	on ordinary structs, not just ___XVE- and ___XVU-encoded fields.
	(ada_to_fixed_value_create): Renamed version of old ada_to_fixed_value.
	Remove valaddr argument, as it is never really used.
	(ada_to_fixed_value): Change interface to act on single struct value*
	operand.
	(adjust_pc_past_prologue): New function.
	(ada_attribute_name): Modify to take enum exp_opcode argument.
		
	(ada_enum_name): Recognize new homonym-distinguishing convention.
	Adjust local variable's type to	remove compiler warning.
	Fix a small problem in the part	that unqualifies the enumeration name.
	(ada_value_binop): New function.
	(ada_value_equal): New function.

	(ada_evaluate_subexp): Use new ada_lookup_struct_elt_type interface.
	Don't give error message when not doing	normal evaluation 
	and a tagged type doesn't seem to contain a structure member.
	Give error message for packed arrays.
	For indexing arrays, handle pointers to	packed arrays correctly.
	Handle case of 'first and 'last attributes of bare integral type 
	without encoded subtype info.  
	Remove some unnecessary casts.
	Fix uninitialized value of type in computing 'first, 'last, or 'length
	of array object.  
	Add BINOP_EQUAL and BINOP_NOTEQUAL cases.
	Remove binop_user_defined_p tests and value_x_binop and value_x_unop
	calls.
	Attributes are now exp_opcode values.
	Correct treatment of 'modulus.
	Better error message for taking 'length of wrong kind of type; 
	improve comment.
	Change EVAL_NORMAL to noside for consistency.
	Use ada_value_binop for DIV, MOD, REM.
	Make special case out of array of length 0, since an argument 
	of 0 upsets some platforms' malloc.
	Use OP_STRING instead of OP_ARRAY.
	For slice, add check that we have an array type before extracting 
	a slice out of it.  Avoids a SEGV.
	When evaluating an array slice,	if the array type is a reference to 
	an aligner type, then replace the aligner type by the actual type.
	Decomment disabled code.
	Remove some dead code.
	Use temporary struct symbols (marked as being in UNDEF_NAMESPACE) 
	to indicate unresolved names, instead of OP_UNRESOLVED_VALUE.
	Rename BINOP_MBR to BINOP_IN_BOUNDS, TERNOP_MBR to TERNOP_IN_RANGE, 
	and UNOP_MBR to UNOP_IN_RANGE.
	If an array type has a parallel	___XVE type, then use it.
	Turn arrays into pointers for lvalue arrays.
	Change TERNOP_SLICE code to work even when bounds are unknown, ignoring
	bounds error and handle 0-length slices.
	Use lim_warning.
	When selecting fields, apply ada_to_fixed_value	(because the fields 
	might have ___XVU or ___XVE encodings even if not dynamic.)
	Use ada_to_fixed_value_create and new ada_to_fixed_value interface.
	(ada_is_system_address_type): New function.

	(get_var_value): Use new interface to ada_lookup_symbol_list.
	(get_int_var_value): New interface.
	(to_fixed_range_type): Allow unknown bound, with warning.
	(ada_is_modular_type): Decomment disabled code.
	(ADA_OPERATORS): New definition.
	(ada_operator_length): New function.
	(ada_expr_op_name): New function.
	(ada_forward_operator_length): New function.
	(ada_dump_subexp_body): New function.
	(ada_print_subexp): New function.
	(ada_exp_descriptor): New constant.
	(ada_op_print_tab): Add 'size.  Remove FIXMEs.
	(ada_language_defn): Add ada_exp_descriptor entry.
	Change ada_parse => parse.
	Add post-parser entry.
	Use ada-specific non-local symbol lookup.
	Don't use C-style arrays. 
	String lower-bound is 1.
	Decomment disabled code.	
	(parse): New function.
	New fields ada_translate_error_message, ada_lookup_symbol, 
	ada_lookup_minimal_symbol.
	
	* ada-lang.h: Update copyright dates.
	Replace the mangle/demangle terminology throughout by the
	more appropriate encode/decode one. 
	Include breakpoint.h.
	Forward declare struct partial_symbol, struct block.
	(ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS): Define.
	(EXTRACT_ADDRESS): Remove.
	(EXTRACT_INT): Remove.
	(ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS): Define.
	(MAX_ENCLOSING_FRAME_LEVELS): Define.
	(MAX_RENAMING_CHAIN_LENGTH): Define.
	(struct ada_opname_map): mangled => decoded, demangled=>encoded.

	(enum task_states): Remove.
	ada_task_states: Remove.
	(fat_string): Remove.
	(struct entry_call): Remove.
	(struct task_fields): Remove.
	(struct task_entry): Remove.

	(struct ada_symbol_info): Define.
	(enum ada_attribute): Remove.
	(enum ada_operator): Define.
	
	(ada_get_field_index): Declare.
	(ada_coerce_to_simple_array): Rename to ada_coerce_to_simple_array_ptr.
	(ada_is_simple_array): Rename to ada_is_simple_array_type.
	(ada_is_array_descriptor): Rename to ada_is_array_descriptor_type.
	(ada_lookup_symbol_list): New interface.
	(ada_decode_symbol): Declare.
	(ada_decode): Declare.
	(ada_lookup_symbol): New interface.
	(ada_update_initial_language): Declare.
	(ada_lookup_simple_minsym): Declare.
	(user_select_syms): New interface.
	(ada_sals_for_line): Declare.
	(ada_is_tagged_type): New interface.
	(ada_tag_name): Declare.
	(ada_lookup_struct_elt_type): Remove declaration.
	(ada_search_struct_field): Remove declaration.
	(ada_attribute_name): New interface.
	(ada_is_system_address_type): Declare.
	(ada_to_fixed_value): Remove declaration.
	(ada_template_to_fixed_record_type_1): Declare.
	(get_int_var_value): New interface.
	(ada_find_any_symbol): Declare.
	(ada_find_renaming_symbol): Declare.
	(ada_mangle): Rename to ada_encode.
	(ada_simple_renamed_entity): Remove const.
	(ada_main_name): Declare.
	(get_current_task): Rename to ada_get_current_task.
	(get_entry_number): Remove declaration.
	(ada_report_exception_break): Remove declaration.
	(ada_print_exception_breakpoint_nontask): Declare.
	(ada_print_exception_breakpoint_task): Declare.
	(ada_find_printable_frame): Declare.

	* ada-lex.l: Update copyright notices.
	Use xmalloc and xfree instead of malloc and free.
	Use new interface to name_lookup.
	Use new interface to 
	ada_mangle=>ada_encode.
	Redo handling of '$...' variable to parallel current treatment 
	in c-exp.y.  
        (resize_tempbuf, canonicalizeNumeral, is_digit_in_base,
	digit_to_int, strtoulst, processInt, processReal, processId, 
	block_lookup, name_lookup, find_dot_all, subseqMatch, processAttribute,
	yywrap): Protoize.
	
	(processInt): Use cast to remove harmless warning.
	(processReal): Modify to get rid of compiler warning on scan formats.

	(processId): Replace xmalloc with obstack_alloc for name and remove
	call to ada_name_string_cleanup.
	Remove obsolete disabled code.
	(name_lookup): Ditto. 
	New interface.
	Use obsavestring on temp_parse_space instead of savestring 
	on name, and remove call to ada_name_string_cleanup.  
	Free string returned from ada_simple_renamed_entity.
	Use new interface to ada_lookup_symbol_list.
	Decomment disabled code.
	Treat LOC_COMPUTED and LOC_COMPUTED_ARG	symbols as variables, 
	not types.
	When a type name lookup succeeds as a result of 
	lookup_primitive_typename, check for regular type entry that has not 
	yet been read in.
	Limit length of chain of renamed symbols we are willing to follow.  
	Do not break names beginning with "standard__" into segments.  
	(block_lookup): Use new interface to ada_lookup_symbol_list.
	
	* ada-typeprint.c: Update copyright notice.
	(demangled_type_name): Rename to decoded_type_name.
	(ada_typedef_print): Use SYMBOL_PRINT_NAME.
	(print_range_bound):  Correct handling of negative
	bounds that make the index type looked unsigned under STABS.  
	(print_dynamic_range_bound): Use new interface to get_int_var_value.
	(print_range_type_named):  Use the builtin int type if no type 
	corresponding to the given type name could be found.
	(print_array_type): ada_is_simple_array => ada_is_simple_array_type.
	Add some bullet-proofing.
	(print_variant_clauses): Allow for variant branches with ___XVU 
	encodings that are not dynamic fields.  
	Use new interface to ada_is_tagged_type.
	(print_record_type): Allow for fields with ___XVE encodings that 
	are not dynamic fields. 
	Use new interface to ada_is_tagged_type.
	(ada_print_type): ada_is_array_descriptor => 
	ada_is_array_descriptor_type.

	* ada-valprint.c: Update copyright notice.
	Include gdb_string.h
	Include infcall.h
	(ui_memcpy): New function.
	(ada_print_floating): New function.
	(ada_print_str): Order arguments correctly.
	Correct handling of empty arrays and arrays of 0-length items. 
	ada_is_array_descriptor => ada_is_array_descriptor_type 
	Print values of type System.Address in hexadecimal format.
	Use ada_print_floating to print floating-point numbers in Ada format.
	Print class tag values with type names.  
	No longer print the address of reference values. Avoids 
	a potential confusion.	
	(ada_value_print): Stop printing the object type for reference
	values, but preserve that behavior for access types. Avoids
	a potential confusion.
	Simplify one conditional expression, as the first part is now
	necessarily true.
	ada_is_array_descriptor => ada_is_array_descriptor_type 
	Add check for arrays for null records, and print them by hand.
	
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@gnat.com>

	* 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.com>

	* 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.

	PR mi/1438
	* 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:
