2002-12-31  Mark Kettenis  <kettenis@gnu.org>

	* gdb_dirent.h: Cleanup and update code to match the example in
	the Autoconf manual.
	* configure.in: Call AC_HEADER_DIRENT.  Remove dirent.h,
	sys/ndir.h, sys/dir.h and ndir.h from call to AC_CHECK_HEADERS.
	* configure: Regenerated.

2002-12-30  Adam Fedor  <fedor@gnu.org>

	* objc-exp.y (parse_number): Cast sscanf arguments to proper type.
	(yylex): Initialize c to avoid uninitialized warning.

2002-12-29  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/fdl.texi: Revert the last change.

2002-12-29  Mark Kettenis  <kettenis@gnu.org>

	* tracepoint.c (ISATTY): Removed.

2002-12-26  J. Brobecker  <brobecker@gnat.com>

	Continuing work to convert the hppa targets to multiarch partil.

	* hppa-tdep.c: Add some missing forward declarations.
	(frameless_function_invocation): Prefix the function name
	by "hppa_" to avoid polluting the namespace.  Update all calls
	to use the new function name.
	(saved_pc_after_call): Ditto.
	(init_extra_frame_info): Ditto.
	(frame_chain): Ditto.
	(push_dummy_frame): Ditto.
	(target_read_pc): Ditto.
	(target_write_pc): Ditto.
	(in_solib_call_trampoline): Ditto.
	(in_solib_return_trampoline): Ditto.
	(skip_trampoline_code): Ditto.
	(hppa_read_fp): New function, renamed from target_read_fp.
	(hppa_target_read_fp): New function, using hppa_read_fp.
	This function conforms to the function profile for the
	READ_FP gdbarch method.
	(hppa_extract_struct_value_address): New function, extracted
	from the definition of the DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS
	macro.
	(hppa_frame_num_args): New function.
	(hppa_gdbarch_init): Setup the gdbarch vector for the hppa target.

	* config/pa/tm-hppa.h: Wrap around all gdbarch-eligible macros
	inside "#if !GDB_MULTI_ARCH ... #endif" conditional, in preparation
	for the switch to multiarch partial.
	Update some of the macros definitions to match some changes
	described above in the name of the function they are calling.
	(PUSH_DUMMY_FRAME): Add a FIXME explaining why this macro will
	not be straightforward to convert. Do now wrap it inside
	"#if !... #endif" to remember that this macro has still not
	been taken care of.
	(FIX_CALL_DUMMY): Likewise.

2002-12-26  J. Brobecker  <brobecker@gnat.com>

	Continuing work to convert the hppa targets to multiarch partial.

	* hppa-tdep.c (hppa_register_raw_size): New function replacing
	the body of macro REGISTER_RAW_SIZE.
	* hppa-hpux-tdep.c: Add new functions replacing macro bodies from
	config/pa/tm-hppah.h. These functions will be used to initialize
	the gdbarch structure.
	(hppa_hpux_pc_in_sigtramp): New function.
	(hppa_hpux_frame_saved_pc_in_sigtramp): New function.
	(hppa_hpux_frame_base_before_sigtramp): New function.
	(hppa_hpux_frame_find_saved_regs_in_sigtramp): New function.
	Add gdbcore.h #include.
	* config/pa/tm-hppa.h (REGISTER_RAW_SIZE): Change the definition
	of this gdbarch-eligible macro to a call to the new associated
	function.
	* config/pa/tm-hppah.h (PC_IN_SIGTRAMP): Likewise.
	(FRAME_SAVED_PC_IN_SIGTRAMP): Change the definition of this macro
	into a call to the new associated function.
	(FRAME_BASE_BEFORE_SIGTRAMP): Likewise.
	(FRAME_FIND_SAVED_REGS_IN_SIGTRAMP): Likewise.
	* Makefile.in (hppa-hpux-tdep.o): Add dependency on gdbcore.h.

2002-12-24  David Carlton  <carlton@math.stanford.edu>

	* config/sparc/tm-sparc.h: Delete duplicate definition of
	DEPRECATED_PC_IN_CALL_DUMMY.

2002-12-24  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (mips-linux-tdep.o): Add $(mips_tdep_h) and
	$(gdb_assert_h).
	* configure.tgt: Recognize mips64*-*-linux*.
	* mips-linux-tdep.c (mips-tdep.h, gdb_assert.h): Include.
	(supply_32_bit_reg): New function.
	(supply_gregset): Call supply_32bit_reg() instead of supply_register().
	(fill_gregset): Use regcache_collect() instead of
	deprecated_registers[].
	(register_addr): Change name to mips_linux_register_addr().
	(MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, MIPS64_FPR_BASE, MIPS64_PC)
	(MIPS64_CAUSE, MIPS64_BADVADDR, MIPS64_MMHI, MIPS64_MMLO)
	(MIPS64_FPC_CSR, MIPS64_FPC_EIR, MIPS64_EF_REG0, MIPS64_EF_REG31)
	(MIPS64_EF_LO, MIPS64_EF_HI, MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR)
	(MIPS64_EF_CP0_STATUS, MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE)
	(MIPS64_LINUX_JB_PC): New defines.
	(mips64_elf_greg_t, mips64_elf_gregset_t, mips64_elf_fpreg_t)
	(mips64_elf_fpregset_t): New typedefs.
	(mips64_linux_get_longhmp_target, mips64_supply_gregset)
	(mips64_fill_gregset, mips64_supply_fpregset, mips64_fill_fpregset)
	(mips64_linux_register_addr, set_mips_linux_register_addr)
	(register_addr, mips64_linux_svr4_fetch_link_map_offsets):
	(init_register_addr_data)
	New functions.
	(fetch_core_registers): Add support for core file formats with 64-bit
	registers.
	(mips_linux_init_abi): Distinguish o32, n32, and n64 ABIs.
	(register_addr_data): New static global variable.
	(_initialize_mips_linux_tdep): Initialize register_addr_data.  Invoke
	gdbarch_register_osabi() for each MIPS machine.
	* config/mips/linux64.mt: New file.
	* config/mips/tm-linux64.h: New file.

2002-12-23  Adam Fedor  <fedor@gnu.org>

	* maint.c (maintenance_demangle): Add switch to demangle
	ObjC language symbols as well.

2002-12-23  Adam Fedor  <fedor@gnu.org>

	* objc-lang.c (lookup_objc_class, lookup_child_selector): Remove 
	last argument from complaint function call.

2002-12-23  Kevin Buettner  <kevinb@redhat.com>

	* exec.c (print_section_info): Add FIXME comments regarding format
	string choices.

2002-12-23  Daniel Jacobowitz  <drow@mvista.com>

	* config/pa/nm-hppab.h: Delete duplicate CANNOT_STORE_REGISTER decl.
	* config/pa/nm-hppao.h: Delete duplicate CANNOT_STORE_REGISTER decl.

2002-12-23  Rodney Brown  <rbrown64@csc.com.au>

	* config/pa/nm-hppah.h: Delete duplicate CANNOT_STORE_REGISTER decl.

2002-12-23  David Carlton  <carlton@math.stanford.edu>

	* symtab.c (lookup_symbol_aux): Delete 'force_return' variable.
	(lookup_symbol_aux_minsyms): Delete 'force_return' argument.
	(search_symbols): Call lookup_symbol_aux_minsyms to find debugging
	information associated to a minsym, not lookup_symbol.

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

	* x86-64-tdep.h (x86_64_init_abi): New prototype.
	* x86-64-tdep.c (i386_fp_regnum_p): Remove function.
	(x86_64_init_abi): Make non-static.  Set number of pseudo
	registers to 0.
	(x86_64_gdbarch_init): Remove function.
	(_initialize_x86_64_tdep): Renove register_gdbarch_init call.
	Remove code dealing with dissambly.
	* x86-64-linux-tdep.c (x86_64_linux_init_abi): New function.
	(_initialize_x86_64_linux_tdep): New function.
	* config/i386/x86-64linux.mt (TDEPFILES): Add i386-tdep.o and
	i386-tdep.o.

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

	* osabi.c: Include "gdb_assert.h" and "gdb_string.h".
	(struct gdb_osabi_handler): Remove member `arch'.  Add member
	`arch_info'.
	(gdbarch_register_osabi): Add new argument `machine'.  Use ot to
	construct a `struct bfd_arch_info' and store it in the `struct
	gdb_osabi_handler' that is created.
	(gdbarch_init_osabi): Check for compatibility based on machine
	type and architecture.
	* osabi.h (gdbarch_register_osabi): Adjust prototype and update
	comment.
	* alpha-linux-tdep.c (_initialize_alpha_linux_tdep): Add 0 as
	second argument in call to gdbarch_register_osabi.
	* alpha-osf1-tdep.c (_initialize_alpha_osf1_tdep): Likewise.
	* alphafbsd-tdep.c (_initialize_alphafbsd_tdep): Likewise.
	* alphanbsd-tdep.c (_initialize_alphanbsd_tdep): Likewise.
	* arm-linux-tdep.c (_initialize_arm_linux_tdep): Likewise.
	* arm-tdep.c (_initialize_arm_tdep): Likewise.
	* armnbsd-tdep.c (_initialize_armnbsd_tdep): Likewise.
	* hppa-hpux-tdep.c (_initialize_hppa_hpux_tdep): Likewise.
	* i386-interix-tdep.c (_initialize_i386_interix_tdep): Likewise.
	* i386-linux-tdep.c (_initialize_i386_linux_tdep): Likewise.
	* i386-sol2-tdep.c (_initialize_i386_sol2_tdep): Likewise.
	* i386-tdep.c (_initialize_i386_tdep): Likewise.
	* i386bsd-tdep.c (_initialize_i386bsd_tdep): Likewise.
	* i386gnu-tdep.c (_initialize_i386gnu_tdep): Likewise.
	* i386ly-tdep.c (_initialize_i386lynx_tdep): Renamed from
	_initialize_i386bsd_tdep and updated likewise.
	* i386nbsd-tdep.c (_initialize_i386nbsd_tdep): Likewise.
	* i386obsd-tdep.c (_initialize_i386obsd_tdep): Likewise.
	* mips-irix-tdep.c (_initialize_mips_irix_tdep): Likewise.
	* mips-linux-tdep.c (_initialize_mips_linux_tdep): Likewise.
	* mipsnbsd-tdep.c (_initialize_mipsnbsd__tdep): Likewise.
	* ns32knbsd-tdep.c (_initialize_ns32kmnsd_tdep): Likewise.
	* ppc-linux-tdep.c (_initialize_ppc_linux_tdep): Likewise.
	* ppcnbsd-tdep.c (_initialize_ppcnbsd_tdep): Likewise.
	* shnbsd-tdep.c (_initialize_shnbsd_tdep): Likewise.
	* sparcnbsd-tdep.c (_initialize_sparcnbsd_tdep): Likewise.

2002-12-20  Kevin Buettner  <kevinb@redhat.com>

	* solib-svr4.c (elf_locate_base): Fix sizeof() related bug.  Add
	DT_MIPS_RLD_MAP case for 64-bit targets.

2002-12-20  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (heuristic_proc_desc): Clear memory associated with
	``temp_saved_regs'', not the pointer or other storage contiguous
	to this pointer.

2002-12-20  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (mips-linux-tdep.o): Add $(osabi_h) and $(gdb_string_h).
	* config/mips/tm-linux.h (mips_linux_svr4_fetch_link_map_offsets)
	(mips_linux_get_longjmp_target): Delete declarations.
	(SVR4_FETCH_LINK_MAP_OFFSETS, GET_LONGJMP_TARGET)
	(MIPS_LINUX_JB_ELEMENT_SIZE, MIPS_LINUX_JB_PC): Delete definitions.
	* mips-linux-tdep.c (osabi.h, gdb_string.h): Include.
	(MIPS_LINUX_JB_ELEMENT_SIZE, MIPS_LINUX_JB_PC): Define.
	(mips_linux_get_longjmp_target)
	(mips_linux_svr4_fetch_link_map_offsets): Make static.
	(mips_linux_init_abi): New function.
	(_initialize_mips_linux_tdep): Register mips_linux_init_abi().

2002-12-19  Keith Seitz  <keiths@redhat.com>

	patch committed by Elena Zannoni  <ezannoni@redhat.com>
	* thread.c (do_captured_list_thread_ids): Call prune_threads and
	target_find_new_threads. Fix for PR mi/669.

2002-12-19  David Carlton  <carlton@math.stanford.edu>

	* linespec.c (decode_line_1): Move code into decode_all_digits.
	(decode_all_digits): New function.

2002-12-19  Kevin Buettner  <kevinb@redhat.com>

	* exec.c (print_section_info): Select a format string to use with
	local_hex_string_custom() based upon the value of TARGET_ADDR_BIT.

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

	* frame.c (deprecated_update_current_frame_pc_hack): Replace 
	deprecated_update_current_frame_pc_hack.
	(deprecated_update_frame_base_hack): New function.
	* frame.h (deprecated_update_frame_pc_hack): Replace
	(deprecated_update_frame_base_hack): Declare.
	* infrun.c (normal_stop): Update.

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

	* rs6000-tdep.c (rs6000_init_extra_frame_info): Use
	frame_extra_info_zalloc.
	(rs6000_frame_args_address): Use get_frame_extra_info.
	(frame_get_saved_regs): Use get_frame_saved_regs.
	(frame_initial_stack_address): Use get_frame_saved_regs and
	get_frame_extra_info.
	(frame_initial_stack_address): Use get_frame_extra_info.

2002-12-17  Kevin Buettner  <kevinb@redhat.com>

	* dve3900-rom.c (r3900_regnames): Don't use NUM_REGS to determine
	array size.
	(fetch_bitmapped_register, store_bitmapped_register): Add bounds
	checks for r3900_regnames[].

2002-12-17  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-tdep.c (ARM_NBSD_JB_PC): Renamed from JB_PC.
	All uses changed
	(ARM_NBSD_JB_ELELMENT_SIZE): Similarly.

2002-12-17  David Carlton  <carlton@math.stanford.edu>

	* symtab.c (lookup_partial_symbol): Don't search past the end of
	the partial symbols.

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

	* stack.c (frame_info): Use get_frame_saved_regs.
	* breakpoint.c (until_break_command): Use get_frame_pc.

2002-12-16  Kevin Buettner  <kevinb@redhat.com>

	* buildsym.c (block_end_complaint, anon_block_end_complaint)
	(innerblock_complaint, innerblock_anon_complaint)
	(blockvector_complaint): Delete deprecated complaint structs.
	(finish_block, make_blockvector, end_symtab): Replace calls
	to complain() with calls to complaint().
	* coffread.c (ef_complaint, ef_stack_complaint, eb_stack_complaint)
	(bf_no_aux_complaint, ef_no_aux_complaint, lineno_complaint)
	(unexpected_type_complaint, bad_sclass_complaint)
	(misordered_blocks_complaint, tagndx_bad_complaint, eb_complaint):
	Delete deprecated complaint structs.
	(coff_symtab_read, enter_linenos, decode_type, decode_base_type):
	Replace calls to complain() with calls to complaint().
	* dbxread.c (lbrac_complaint, string_table_offset_complaint)
	(unknown_symtype_complaint, unknown_symchar_complaint)
	(lbrac_rbrac_complaint, lbrac_unmatched_complaint)
	(lbrac_mismatch_complaint, repeated_header_complaint)
	(unclaimed_bincl_complaint, discarding_local_symbols_complaint):
	Delete deprecated complaint structs.
	(unknown_symtype_complaint, lbrac_mismatch_complaint)
	(repeated_header_complaint)
	(function_outside_compiliation_unit_complaint): New functions.
	(add_old_header_file, find_corresponding_bincl_psymtab)
	(set_namestring, find_stab_function_addr, read_dbx_symtab)
	(process_one_symbol): Replace calls to complain() with, possibly
	indirect, calls to complaint().
	* dwarfread.c (no_bfd_get_N, malformed_die, bad_die_ref)
	(unknown_attribute_form, unknown_attribute_length)
	(unexpected_fund_type, unknown_type_modifier, volatile_ignored)
	(const_ignored, botched_modified_type, op_deref2, op_deref4)
	(basereg_not_handled, dup_user_type_allocation)
	(dup_user_type_definition, missing_tag, bad_array_element_type)
	(subscript_data_items, unhandled_array_subscript_format)
	(unknown_array_subscript_format, not_row_major)
	(missing_at_name): Delete deprecated complaint structs.
	(bad_die_ref_complaint, unknown_attribute_form_complaint)
	(dup_user_type_definition_complaint)
	(bad_array_element_type_complaint): New functions.
	(lookup_utype, alloc_utype, struct_type, decode_array_element_type)
	(decode_subscript_data_item, dwarf_read_array_type)
	(read_tag_string_type, read_subroutine_type, read_func_scope)
	(locval, scan_partial_symbols, decode_modified_type)
	(decode_func_type, basicdieinfo, completeddieinfo, target_to_host)
	(attribute_size): Replace calls to complain() with, possibly
	indirect, calls to complaint().
	* elfread.c (section_info_complaint, section_info_dup_complaint)
	(stab_info_mismatch_complaint, stab_info_questionable_complaint):
	Delete deprecated complaint structs.
	(elf_symtab_read, elfstab_offset_sections): Replace calls to
	complain() with calls to complaint().
	* gdbtypes.c (stub_noname_complaint): Delete deprecated complaint
	struct.
	(stub_noname_complaint): New function.
	(check_typedef, add_mangled_type): Replace calls to complain()
	with calls to complaint().
	* hpread.c (string_table_offset_complaint, lbrac_unmatched_complaint)
	(lbrac_mismatch_complaint, hpread_unhandled_end_common_complaint)
	(hpread_unhandled_type_complaint, hpread_struct_complaint)
	(hpread_array_complaint, hpread_type_lookup_complaint)
	(hpread_unexpected_end_complaint, hpread_tagdef_complaint)
	(hpread_unhandled_common_complaint)
	(hpread_unhandled_blockdata_complaint): Delete deprecated complaint
	struct definitions and declarations.
	(lbrac_unmatched_complaint, lbrac_mismatch_complaint): New functions.
	(SET_NAMESTRING, hpread_type_lookup, hpread_process_one_debug_symbol):
	Replace calls to complain() with, possibly indirect, calls to
	complaint().
	* macrotab.c (macro_include, check_for_redefinition, macro_undef):
	Likewise.
	* mdebugread.c (bad_file_number_complaint, index_complaint)
	(aux_index_complaint, block_index_complaint)
	(unknown_ext_complaint, unknown_sym_complaint)
	(unknown_st_complaint, block_overflow_complaint)
	(basic_type_complaint, unknown_type_qual_complaint)
	(array_index_type_complaint, bad_tag_guess_complaint)
	(block_member_complaint, stEnd_complaint)
	(unknown_mdebug_symtype_complaint, stab_unknown_complaint)
	(pdr_for_nonsymbol_complaint, pdr_static_symbol_complaint)
	(bad_setjmp_pdr_complaint, bad_fbitfield_complaint)
	(bad_continued_complaint, bad_rfd_entry_complaint)
	(unexpected_type_code_complaint, unable_to_cross_ref_complaint)
	(bad_indirect_xref_complaint, illegal_forward_tq0_complaint)
	(illegal_forward_bt_complaint, bad_linetable_guess_complaint)
	(bad_ext_ifd_complaint, bad_ext_iss_complaint): Delete deprecated
	complaint structs.
	(index_complaint, unknown_ext_complaint, basic_type_complaint)
	(bad_tag_guess_complaint, bad_rfd_entry_complaint)
	(unexpected_type_code_complaint)
	(function_outside_compilation_unit_complaint): New functions.
	(parse_symbol, parse_type, upgrade_type, parse_procedure)
	(parse_partial_symbols, psymtab_to_symtab_1, cross_ref, add_symbol):
	Replace calls to complain() with, possibly indirect calls to
	complaint().
	* objc-lang.c (noclass_lookup_complaint, nosel_lookup_complaint):
	Delete deprecated complaint structs.
	(lookup__objc_class, lookup_child_selector): Replace complain()
	with complaint().
	* remote-vx.c (cant_contact_target): Delete deprecated complaint
	struct.
	(vx_lookup_symbol): Replace complain() with complaint().
	* stabsread.c (invalid_cpp_abbrev_complaint)
	(invalid_cpp_type_complaint, member_fn_complaint)
	(const_vol_complaint, error_type_complaint)
	(invalid_member_complaint, range_type_base_complaint)
	(reg_value_complaint, vtbl_notfound_complaint)
	(unrecognized_cplus_name_complaint, rs6000_builtin_complaint)
	(unresolved_sym_chain_complaint, stabs_general_complaint)
	(lrs_general_complaint, multiply_defined_struct): Delete
	deprecated complaint structs.
	(invalid_cpp_abbrev_complaint, ref_value_complaint)
	(stabs_general_complaint, lrs_general_complaint)
	(msg_unknown_complaint): New functions.
	(dbx_lookup_type, read_cfront_baseclasses)
	(read_cfront_member_functions, resolve_symbol_reference)
	(define_symbol, resolve_live_range, add_live_range, read_type)
	(rs6000_builtin_type, read_member_functions, read_cpp_abbrev)
	(read_one_struct_field, read_baseclasses, read_tilde_fields)
	(read_cfront_static_fields, attach_fields_to_type)
	(complain_about_struct_wipeout, read_range_type)
	(common_block_start, common_block_end, cleanup_undefined_types)
	(scan_file_globals): Replace complain() with complaint().
	* stabsread.h (unknown_symtype_complaint, unknown_symchar_complaint):
	Delete deprecated complaint struct declarations.
	* xcoffread.c (storclass_complaint, bf_notfound_complaint)
	(ef_complaint, eb_complaint): Delete deprecated complaint structs.
	(bf_not_found_complaint, ef_complaint, eb_complaint)
	(function_outside_compilation_unit_complaint): New functions.
	(record_include_begin, record_include_end, enter_line_range)
	(xcoff_next_symbol_text, read_xcoff_symtab, process_xcoff_symbol)
	(read_symbol, read_symbol_lineno, scan_xcoff_symtab) Replace
	complain() with complaint().

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

	* config/arc/arc.mt, config/arc/tm-arc.h: Delete.
	* config/d30v/d30v.mt, config/d30v/tm-d30v.h: Delete.
	* config/fr30/fr30.mt, config/fr30/tm-fr30.h: Delete.
	* config/i386/i386aix.mh, config/i386/i386aix.mt: Delete.
	* config/i386/i386m3.mh, config/i386/i386m3.mt: Delete.
	* config/i386/i386mach.mh, config/i386/i386os9k.mt: Delete.
	* config/i386/nm-i386aix.h, config/i386/nm-i386mach.h: Delete.
	* config/i386/nm-m3.h, config/i386/tm-i386aix.h: Delete.
	* config/i386/tm-i386m3.h, config/i386/tm-i386mk.h: Delete.
	* config/i386/xm-i386aix.h, config/i386/xm-i386m3.h: Delete.
	* config/i386/xm-i386mach.h, config/i386/xm-i386mk.h: Delete.
	* config/i960/mon960.mt, config/i960/nindy960.mt: Delete.
	* config/i960/tm-i960.h, config/i960/tm-mon960.h: Delete.
	* config/i960/tm-nindy960.h, config/i960/tm-vx960.h: Delete.
	* config/i960/vxworks960.mt, config/m68k/apollo68b.mh: Delete.
	* config/m68k/apollo68b.mt, config/m68k/apollo68v.mh: Delete.
	* config/m68k/hp300bsd.mh, config/m68k/hp300bsd.mt: Delete.
	* config/m68k/hp300hpux.mh, config/m68k/hp300hpux.mt: Delete.
	* config/m88k/delta88.mh, config/m88k/delta88.mt: Delete.
	* config/m88k/delta88v4.mh, config/m88k/delta88v4.mt: Delete.
	* config/m88k/m88k.mh, config/m88k/m88k.mt: Delete.
	* config/m88k/nm-delta88v4.h, config/m88k/nm-m88k.h: Delete.
	* config/m88k/tm-delta88.h, config/m88k/tm-delta88v4.h: Delete.
	* config/m88k/tm-m88k.h, config/m88k/xm-delta88.h: Delete.
	* config/m88k/xm-dgux.h: Delete.
	* fr30-tdep.c, i386aix-nat.c, i386m3-nat.c: Delete.
	* i386mach-nat.c, i960-tdep.c, m88k-nat.c: Delete.
	* os9kread.c, remote-bug.c, remote-nindy.c: Delete.
	* remote-nrom.c, remote-os9k.c, remote-vx960.c: Delete.
	* d30v-tdep.c, arc-tdep.c, cxux-nat.c, dst.h, dstread.c: Delete.
	* ch-exp.c, ch-lang.c, ch-lang.h, ch-typeprint.c: Delete.
	* ch-valprint.c: Delete.
	
2002-12-15  Daniel Jacobowitz  <drow@mvista.com>

	* infrun.c (handle_inferior_event): Rearrange code to resume if
	no catchpoint triggers for an event.

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

	* infrun.c (handle_inferior_event): Merge TARGET_WAITKIND_FORKED
	and TARGET_WAITKIND_VFORKED cases.

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

	* infrun.c (handle_inferior_event): Assume that catchpoints
	are not affected by DECR_PC_AFTER_BREAK.

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

	* target.c (update_current_target): Don't inherit DONT_USE.
	* target.h (struct target_ops): Remove DONT_USE.
	(target_next): Remove macro.

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

	* ui-out.c (MAX_UI_OUT_LEVELS): Raise to 6.  Fixes PR cli/654.

2002-12-14  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (convert_from_extended): New argument to hold the
	type of floating point result we want to convert to.  Make input 
	argument const.  Fix all callers.
	(convert_to_extended): Similarly.
	(arm_extract_return_value): Now takes a regcache argument.  Change
	code to use regcache accessor functions.  Correctly extract 
	smaller-than-word results on big-endian machines.
	(arm_store_return_value): Now takes a regcache argument.  Change
	code to use regcache accessor functions.  Correctly zero/sign extend
	smaller than word results before storing into r0.
	(arm_gdbarch_init): Register new-style extract_return_value and
	store_return_value functions.

2002-12-13  Michael Snyder  <msnyder@to-limbo.toronto.redhat.com>

	* thread-db.c (thread_from_lwp): Uniquify error msg.
	(lwp_from_thread): Ditto.
	(check_event): Ditto.
	(find_new_threads_callback): Ditto.
	(thread_db_pid_to_str): Ditto.

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

	* frame.h (get_frame_saved_regs): Declare.
	(frame_saved_regs_zalloc): Change return type to CORE_ADDR
	pointer.
	* frame.c (get_frame_saved_regs): New function.
	(frame_saved_regs_zalloc): Return the allocated saved_regs.

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

	* frame.c (deprecated_update_current_frame_pc_hack): New
	function.
	* frame.h (deprecated_update_current_frame_pc_hack): Declare.
	* infrun.c (normal_stop): Use said function instead of directly
	modifying the frame's PC.
	
2002-12-13  Alexandre Oliva  <aoliva@redhat.com>

	* frame.h (frame_id_unwind_ftype): Fix typo in return type.

2002-12-13  Kevin Buettner  <kevinb@redhat.com>

	* config/mips/tm-mips.h, config/mips/tm-irix3.h,
	config/mips/tm-irix6.h (NUM_REGS): Delete.
	* mips-tdep.c (mips_gdbarch_init): Call set_gdbarch_num_regs().
	(temp_saved_regs): Declare as a pointer rather than an array.
	(mips32_heuristic_proc_desc, heuristic_proc_desc): Make sure
	that ``temp_saved_regs'' has storage allocated to it and that
	it's the correct size.

2002-12-13  Jeff Johnston  <jjohnstn@redhat.com>

	* defs.h (init_last_source_visited): New prototype.
	(add_path): Ditto.
	* source.c (add_path): New function that adds to a specified path.
	(mod_path): Change to call add_path.
	(init_last_source_visited): New function to allow interfaces to
	initialize static variable: last_source_visited.  Part of fix
	for PR gdb/741.
	* Makefile.in: Add support for mi/mi-cmd-env.c.

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

	* frame.h (frame_id_unwind): Declare.
	(struct frame_info): Add fields id_unwind, id_unwind_cache_p and
	id_unwind_cache.
	(frame_id_unwind_ftype): Declare.
	* frame.c (frame_id_unwind): New function.
	(set_unwind_by_pc): Add unwind_id parameter.  Initialized.
	(create_new_frame, get_prev_frame): Pass id_unwind to
	set_unwind_by_pc.
	(frame_saved_regs_id_unwind): New function.
	(frame_saved_regs_id_unwind): New function.
	* dummy-frame.c (dummy_frame_id_unwind): New function.
	(struct dummy_frame): Add field id.
	(generic_push_dummy_frame): Initialize `id'.
	* dummy-frame.h (dummy_frame_id_unwind): Declare.

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

	* infcmd.c (run_stack_dummy): Create a frame ID directly and then
	pass that to set_momentary_breakpoint.  Move comments to where they
	belong.
	* frame.h (set_current_frame): Delete declaration.
	* frame.c (set_current_frame): Delete function.

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

	* frame.c (frame_extra_info_zalloc): New function.
	* frame.h (frame_extra_info_zalloc): Declare.

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

	* hppa-tdep.c (hppa_pop_frame): Fix a compilation error introduced
	in the previous prototype change to set_momentary_breakpoint.

2002-12-12  Daniel Jacobowitz  <drow@mvista.com>

	* infrun.c (pending_follow): Remove saw_parent_fork, saw_child_fork,
	and saw_child_exec.
	(follow_fork, init_wait_for_inferior, handle_inferior_event): Remove
	references to saw_parent_fork, saw_child_fork, and saw_child_exec.
	(stop_stepping): Remove outdated check for child vfork events.

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

	* GDB 5.3 released from gdb_5_3-branch.

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

	* corelow.c (init_core_ops): Delete references to to_require_attach
	and to_require_detach.
	* exec.c (init_exec_ops): Likewise.
	* hppah-nat.c (child_follow_fork): Call hppa_require_attach and
	hppa_require_detach directly.
	* inferior.h (REQUIRE_ATTACH, REQUIRE_DETACH): Delete.
	* inftarg.c (child_detach): Remove.
	(child_detach_from_process): Rename to child_detach, remove
	after_fork argument.
	(child_attach): Remove.
	(child_attach_to_process): Rename to child_attach, remove after_fork
	argument.
	(init_child_ops): Delete references to to_require_attach
	and to_require_detach.
	* infttrace.c (hppa_require_attach): Update comment.
	* target.c (cleanup_target, update_current_target)
	(init_dummy_target, setup_target_debug): Delete references to
	to_require_attach and to_require_detach.
	(find_default_require_detach, find_default_require_attach)
	(debug_to_require_attach, debug_to_require_detach): Remove
	functions.
	* target.h (struct target_ops): Remove to_require_attach
	and to_require_detach.
	(target_require_attach, target_require_detach): Delete macros.
	(find_default_require_detach, find_default_require_attach): Delete
	prototypes.
	* config/pa/nm-hppah.h (REQUIRE_ATTACH, REQUIRE_DETACH): Delete.

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

	* frame.c (get_frame_extra_info): New function.
	* frame.h (get_frame_extra_info): Declare.

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

	* breakpoint.h (struct breakpoint): Replace frame with frame_id.
	(set_momentary_breaokpoint): Replace `struct frame_info' parameter
	with `struct frame_id'.
	(set_longjmp_resume_breakpoint): Ditto.
	* infrun.c (handle_inferior_event): Update.
	* breakpoint.c (watch_command_1, until_break_command): Update.
	* infrun.c (handle_inferior_event, check_sigtramp2): Update.
	(handle_inferior_event, step_over_function): Update.
	* breakpoint.c (bpstat_stop_status, print_one_breakpoint): Update.
	(set_raw_breakpoint, set_longjmp_resume_breakpoint): Update.
	(set_momentary_breakpoint, deprecated_frame_in_dummy): Update.
	* infcmd.c (finish_command, run_stack_dummy): Update.

2002-12-11  Kevin Buettner  <kevinb@redhat.com>

	* dwarf2read.c (dwarf2_const_ignored, dwarf2_volatile_ignored)
	(dwarf2_non_const_array_bound_ignored)
	(dwarf2_missing_line_number_section)
	(dwarf2_statement_list_fits_in_line_number_section)
	(dwarf2_mangled_line_number_section, dwarf2_unsupported_die_ref_attr)
	(dwarf2_unsupported_stack_op, dwarf2_complex_location_expr)
	(dwarf2_unsupported_tag, dwarf2_unsupported_at_encoding)
	(dwarf2_unsupported_at_frame_base, dwarf2_unexpected_tag)
	(dwarf2_missing_at_frame_base, dwarf2_bad_static_member_name)
	(dwarf2_unsupported_accessibility, dwarf2_bad_member_name_complaint)
	(dwarf2_missing_member_fn_type_complaint)
	(dwarf2_vtbl_not_found_complaint, dwarf2_absolute_sibling_complaint)
	(dwarf2_const_value_length_mismatch)
	(dwarf2_unsupported_const_value_attr, dwarf2_misplaced_line_number)
	(dwarf2_line_header_too_long, dwarf2_missing_macinfo_section)
	(dwarf2_macros_too_long, dwarf2_macros_not_terminated)
	(dwarf2_macro_outside_file, dwarf2_macro_unmatched_end_file)
	(dwarf2_macro_malformed_definition, dwarf2_macro_spaces_in_definition)
	(dwarf2_invalid_attrib_class, dwarf2_invalid_pointer_size): Delete
	complaints using deprecated struct..
	(dwarf2_non_const_array_bound_ignored_complaint)
	(dwarf2_complex_location_expr_complaint)
	(dwarf2_unsupported_at_frame_base_complaint)
	(dwarf2_const_value_length_mismatch_complaint)
	(dwarf2_macros_too_long_complaint)
	(dwarf2_macro_malformed_definition_complaint)
	(dwarf2_invalid_attrib_class_complaint): New functions.
	(read_func_scope, dwarf2_attach_fields_to_type, dwarf2_add_member_fn)
	(read_structure_scope, read_array_type, read_common_block)
	(read_tag_pointer_type, read_base_type, read_partial_die)
	(dwarf_decode_line_header, check_cu_functions, dwarf_decode_lines)
	(new_symbol, dwarf2_const_value, read_type_die)
	(dwarf2_get_ref_die_offset, decode_locdesc, consume_improper_spaces)
	(parse_macro_definition, dwarf_decode_macros): Replace calls to
	complain() with, possibly indirect, calls to complaint().

2002-12-11  Andrew Cagney  <cagney@redhat.com>

	* frame.c (deprecated_get_frame_saved_regs): Rename
	get_frame_saved_regs.
	* frame.h (deprecated_get_frame_saved_regs): Update declaration.
	* sparc-tdep.c: Update.
	* hppa-tdep.c: Update.
	* h8500-tdep.c: Update.

2002-12-11  Kevin Buettner  <kevinb@redhat.com>

	* gdbarch.sh (ADDRESS_CLASS_TYPE_FLAGS_TO_NAME)
	(ADDRESS_CLASS_NAME_TO_TYPE_FLAGS): Use ``const char *'' instead of
	``char *'' for return and parameter types.
	* gdbarch.h, gdbarch.c: Regenerate.
	* gdbtypes.h, gdbtypes.c (address_space_int_to_name): Change
	return type from ``char *'' to ``const char *''.
	* c-typeprint.c (c_type_print_modifier): Make ``address_space_id''
	const.

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

	* i386-tdep.c: Include "dummy-frame.h".
	(i386_frame_chain, i386_frame_saved_pc): Replace
	DEPRECATED_PC_IN_CALL_DUMMY with call to pc_in_dummy_frame.
	(i386_gdbarch_init): Don't set deprecated_pc_in_call_dummy.

2002-12-10  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (DEPRECATED_INIT_FRAME_PC): Rename INIT_FRAME_PC.
	Change to a function with predicate.
	* gdbarch.h, gdbarch.c: Re-generate.
	* frame.c (get_prev_frame): Update.  Test
	DEPRECATED_INIT_FRAME_PC_P.
	* config/sparc/tm-sparc.h (DEPRECATED_INIT_FRAME_PC): Update.
	* config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC): Update.
	* config/mn10200/tm-mn10200.h (DEPRECATED_INIT_FRAME_PC): Update.
	* alpha-tdep.c (alpha_gdbarch_init): Update.
	* mn10300-tdep.c (mn10300_gdbarch_init): Update.
	* mips-tdep.c (mips_gdbarch_init): Update.
	* i386-interix-tdep.c (i386_interix_init_abi): Update.
	* arm-tdep.c: Update comments.
	* h8300-tdep.c (h8300_gdbarch_init): Explicitly set init_frame_pc.
	* config/m32r/tm-m32r.h (DEPRECATED_INIT_FRAME_PC): Ditto.
	* frv-tdep.c (frv_gdbarch_init): Ditto.
	* x86-64-tdep.c (x86_64_init_abi): Ditto.
	* ia64-tdep.c (ia64_gdbarch_init): Ditto.
	* s390-tdep.c (s390_gdbarch_init): Ditto.
	* v850-tdep.c (v850_gdbarch_init): Ditto.
	* vax-tdep.c (vax_gdbarch_init): Ditto.
	* sh-tdep.c (sh_gdbarch_init): Ditto.
	* ns32k-tdep.c (ns32k_gdbarch_init): Ditto.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
	* mcore-tdep.c (mcore_gdbarch_init): Ditto.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto.
	* i386-tdep.c (i386_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.
	* config/z8k/tm-z8k.h (INIT_FRAME_PC_FIRST): Delete macro.
	(DEPRECATED_INIT_FRAME_PC): Rename INIT_FRAME_PC.

2002-12-10  Daniel Jacobowitz  <drow@mvista.com>

	* config/pa/nm-hppah.h (CHILD_POST_FOLLOW_VFORK): Change to
	CHILD_FOLLOW_FORK.
	* hppah-nat.c (saved_vfork_pid): Add.
	(child_post_follow_vfork): Remove.
	(child_follow_fork): New function.
	(child_wait): Call detach_breakpoints after receiving the child vfork.
	Call child_resume directly instead of going through resume ().
	Make sure we have the exec before reporting the vfork.
	* inferior.h (follow_inferior_reset_breakpoints): Add prototype.
	* infrun.c (follow_fork, follow_vfork, follow_inferior_fork): Remove.
	(follow_fork): New function.  Call target_follow_fork.
	(follow_inferior_reset_breakpoints): New function broken out from
	old follow_inferior_fork.
	(resume): Remove hack to follow exec after vfork.
	* inftarg.c (child_post_follow_vfork): Remove.
	(child_follow_fork): New function.
	(init_child_ops): Replace to_post_follow_vfork with to_follow_fork.
	* target.c (cleanup_target): Replace to_post_follow_vfork with
	to_follow_fork.
	(update_current_target): Likewise.
	(setup_target_debug): Likewise.
	(debug_to_post_follow_vfork): Remove.
	(debug_to_follow_fork): New function.
	* target.h (struct target_ops): Replace to_post_folow_vfork with
	to_follow_fork.
	(child_post_follow_vfork): Remove prototype.
	(child_follow_fork): Add prototype.
	(target_post_follow_vfork): Remove macro.
	(target_follow_fork): Add macro.

2002-12-10  Daniel Jacobowitz  <drow@mvista.com>

	* hppah-nat.c (saved_child_execd_pathname, saved_vfork_state): New.
	(child_post_follow_vfork): Cancel pending exec event if we follow
	the parent.
	(child_wait): Only return TARGET_WAITKIND_VFORKED when all necessary
	events have been processed.  Return a fake TARGET_WAITKIND_EXECD
	event at the following wait call if necessary.
	* infrun.c (follow_vfork): Don't follow_exec here.
	(handle_inferior_event): Add comment to TARGET_WAITKIND_EXECD
	case about HP/UX 10.20.  Remove code pushed down to
	hppah-nat.c:child_wait.
	* infttrace.c (child_resume): Use TT_PROC_CONTINUE if
	vfork_in_flight is set.

2002-12-10  Daniel Jacobowitz  <drow@mvista.com>

	* hppah-nat.c (child_wait): Return TARGET_WAITKIND_IGNORE
	for the parent's fork event.
	* infrun.c (handle_inferior_event): Only expect one fork event.
	Call prepare_to_wait for TARGET_WAITKIND_IGNORE.  Update comment.
	* target.h: Update comment for TARGET_WAITKIND_IGNORE.

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

	* PROBLEMS: Delete reference to PR gdb/725.
	
	* MAINTAINERS (gdb.c++): Add David Carlton.

2002-12-09  David Carlton  <carlton@math.stanford.edu>

	* cli/cli-setshow.c: #include <readline/tilde.h> after defs.h.
	* cli/cli-cmds.c: Ditto.

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

	* gdbarch.sh (gdbarch_dump): Print NAME_OF_MALLOC using %s.  Wrap
	function address in <>.
	* gdbarch.c: Re-generate.

2002-12-09  David Carlton  <carlton@math.stanford.edu>

	* p-exp.y: Rename TRUE and FALSE to TRUEKEYWORD and FALSEKEYWORD.

2002-12-09  David Carlton  <carlton@math.stanford.edu>

	* linespec.c (symtab_from_filename): New function.
	(decode_line_1): Move code into symtab_from_filename.

2002-12-09  Kevin Buettner  <kevinb@redhat.com>

	* lin-lwp.c (strsignal): Make extern declaration match that of glibc.

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

	* f-valprint.c (info_common_command): Use get_frame_pc.
	* std-regs.c (value_of_builtin_frame_pc_reg): Ditto.
	* ax-gdb.c (agent_command): Ditto.
	* rs6000-tdep.c (rs6000_init_extra_frame_info): Ditto.
	(rs6000_pop_frame): Ditto.
	(rs6000_frameless_function_invocation): Ditto.
	(rs6000_frame_saved_pc, frame_get_saved_regs): Ditto.
	(frame_initial_stack_address, rs6000_frame_chain): Ditto.
	* macroscope.c (default_macro_scope): Ditto.
	* stack.c (print_frame_info_base): Ditto.
	(print_frame, frame_info, print_frame_label_vars): Ditto.
	(return_command, func_command, get_frame_language): Ditto.
	* infcmd.c (finish_command): Ditto.
	* dummy-frame.c (cached_find_dummy_frame): Ditto.
	* breakpoint.c (deprecated_frame_in_dummy): Ditto.
	(break_at_finish_at_depth_command_1): Ditto.
	(break_at_finish_command_1): Ditto.
	(until_break_command, get_catch_sals): Ditto.
	* blockframe.c (func_frame_chain_valid): Ditto.
	(frameless_look_for_prologue): Ditto.
	(frame_address_in_block, generic_func_frame_chain_valid): Ditto.

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

	* config/rs6000/tm-rs6000.h (init_frame_pc_noop): Add declaration.
	* dwarf2cfi.c (cfi_init_frame_pc): Cast the PC to a pointer.

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

	* gdbarch.sh (INIT_FRAME_PC_FIRST, INIT_FRAME_PC_DEFAULT): Convert
	to pure functions.
	* gdbarch.h, gdbarch.c: Re-generate.
	* frame.c (get_prev_frame): Explictly assign prev's pc with value
	returned by INIT_FRAME_PC_FIRST and INIT_EXTRA_FRAME_INFO.

	* arch-utils.h (init_frame_pc_default, init_frame_pc_noop): Change
	declaration to a function returning a CORE_ADDR.
	* x86-64-tdep.h (x86_64_init_frame_pc): Ditto.
	* arch-utils.c (init_frame_pc_noop): Return the PC value.
	(init_frame_pc_default): Ditto.
	* x86-64-linux-tdep.c (x86_64_init_frame_pc): Ditto.
	* s390-tdep.c (s390_init_frame_pc_first): Ditto.
	* mips-tdep.c (mips_init_frame_pc_first): Ditto.
	* dwarf2cfi.h (cfi_init_frame_pc): Ditto.
	* dwarf2cfi.c (cfi_init_frame_pc): Ditto.
	* alpha-tdep.c (alpha_init_frame_pc_first): Ditto.

	* i386-interix-tdep.c (i386_interix_init_abi): Set init_frame_pc
	to init_frame_pc_noop.
	(i386_interix_init_frame_pc): Delete function.
	* z8k-tdep.c (init_frame_pc): Delete function.
	* config/z8k/tm-z8k.h (INIT_FRAME_PC): Define as init_frame_pc_noop.
	(INIT_FRAME_PC_FIRST): Ditto.
	* config/mn10200/tm-mn10200.h (INIT_FRAME_PC): Ditto.
	(INIT_FRAME_PC_FIRST): Ditto.
	* config/sparc/tm-sparc.h (INIT_FRAME_PC): Ditto.
	* config/rs6000/tm-rs6000.h (INIT_FRAME_PC): Redefine as
	init_frame_pc_noop.
	(INIT_FRAME_PC_FIRST): Convert to an expression.
	* config/sparc/tm-sparc.h (INIT_FRAME_PC_FIRST): Ditto.

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

	* blockframe.c: Use get_frame_base instead of directly accessing
	the `struct frame_info' member frame.
	* f-valprint.c, std-regs.c, rs6000-tdep.c: Ditto.
	* stack.c, dummy-frame.c, breakpoint.c: Ditto.

2002-12-08  Elena Zannoni  <ezannoni@redhat.com>

	* Makefile.in (readline_h): Define.
	(completer.o): Depend on readline_h.
	(corelow.o): Ditto.
	(event-top.o): Ditto.
	(exec.o): Ditto.
	(solib.o): Ditto.
	(source.o): Ditto. 
	(symfile.o): Ditto. 
	(symmisc.o): Ditto. 
	(top.o): Ditto.
	(tracepoint.o): Ditto. 
	(utils.o): Ditto.
	(cli-dump.o): Ditto.
	(tui-hooks.o): Ditto. 
	(tuiWin.o): Ditto. 

2002-12-08  Elena Zannoni  <ezannoni@redhat.com>

	More cleanup from import of readline 4.3.
	* completer.h (complete_line, readline_line_completion_function):
	Update prototypes.
	(line_completion_function): Removed, not used outside of completer.c.
	* completer.c (readline_line_completion_function,
	complete_function, line_completion_function): Use const for first
	parameter.
	(line_completion_function): Make static.
	(filename_completer): filename_completion_function is now called
	rl_filename_completion_function
	* corelow.c: Include <readline/readline.h>.
	* exec.c: Ditto.
	* solib.c: Ditto.
	* source.c: Ditto.
	* symfile.c: Ditto.
	* symmisc.c: Ditto.
	* top.c (init_main): No need to coerce
	readline_line_completion_function anymore.
	* cli/cli-dump.c: Include <readline/readline.h>.

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

	* stack.c (frame_info): Use get_prev_frame.
	* blockframe.c (frame_address_in_block): Ditto.
	* rs6000-tdep.c (rs6000_init_extra_frame_info): Ditto.
	(rs6000_frameless_function_invocation): Ditto.
	(rs6000_frame_saved_pc): Ditto.
	(rs6000_frame_chain): Ditto.
	* arch-utils.c (init_frame_pc_default): Ditto.

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

	* config/mn10200/tm-mn10200.h (DEPRECATED_PC_IN_CALL_DUMMY):
	Delete redundant definition.

2002-12-08  Elena Zannoni  <ezannoni@redhat.com>

        Import of readline 4.3:
        * cli/cli-cmds.c: Include readline/tilde.h.
        * cli/cli-setshow.c: Ditto.
        * defs.h: Don't declare tilde_expand anymore, since readline
        exports it.

2002-12-08  Elena Zannoni  <ezannoni@redhat.com>

	* Makefile.in (thread-db.o): Add explicit rule to ignore the use of
	-Werror on this file.

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

	* gdbarch.sh (TARGET_FLOAT_FORMAT): Use the macro when printing
	the format name.
	(TARGET_DOUBLE_FORMAT, TARGET_LONG_DOUBLE_FORMAT): Ditto.
	* gdbarch.c: Regenerate.
	
2002-12-06  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (DEPRECATED_INIT_FRAME_PC_FIRST): Rename
	INIT_FRAME_PC_FIRST.  Change to a function with predicate.  Do not
	provide a default value.
	* gdbarch.h, gdbarch.c: Regenerate.
	* frame.c (get_prev_frame): Update.  Check
	DEPRECATED_INIT_FRAME_PC_FIRST_P.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* mips-tdep.c (mips_gdbarch_init): Update.
	* config/sparc/tm-sparc.h (DEPRECATED_INIT_FRAME_PC_FIRST): Update.
	* config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC_FIRST): Update.
	* alpha-tdep.c (alpha_gdbarch_init): Update.
	
2002-12-06  Elena Zannoni  <ezannoni@redhat.com>

	* ia64-linux-nat.c: Include gdb_string.h.
	* alpha-nat.c: Ditto.
	* ppc-linux-nat.c: Ditto.
	* Makefile.in (ia64-linux-nat.o, alpha-nat.o, ppc-linux-nat.o):
	Update dependencies.

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

	* gdbthread.h: Include "frame.h".
	(struct thread_info): Replace step_frame_address with
	step_frame_id.
	* inferior.h: Include "frame.h".
	(step_frame_id): Replace external variable step_frame_address.
	* gdbthread.h (save_infrun_state): Replace step_frame_address
	parameter with step_frame_id parameter.
	(load_infrun_state): Ditto.
	* Makefile.in (gdbthread_h, inferior_h): Add $(frame_h).
	* infcmd.c (step_frame_id, step_1, step_once): Update.
	* thread.c (load_infrun_state, save_infrun_state): Update.
	* infrun.c (clear_proceed_status, save_inferior_status): Update.
	(handle_inferior_event, step_over_function): Update.
	(normal_stop, context_switch, restore_inferior_status): Update.
	(struct inferior_status): Replace step_frame_address with
	step_frame_id.

2002-12-05  David Carlton  <carlton@math.stanford.edu>

	* dwarf2read.c (dwarf2_add_field): Treat a field that is a
	DW_TAG_member as well as a declaration as being a C++ static data
	member.
	(read_structure_scope): Combine tests for DW_TAG_member and
	DW_TAG_variable.

2002-12-05  David Carlton  <carlton@math.stanford.edu>

	* linespec.c (decode_compound): New function.
	(decode_line_1): Move code into decode_compound.

2002-12-05  David Carlton  <carlton@math.stanford.edu>

	* symtab.c (lookup_symbol_aux_local): Add 'static_block'
	argument.
	(lookup_symbol_aux): Do the 'field_of_this' check before checking
	the static block.  See PR gdb/804.

2002-12-05  David Carlton  <carlton@math.stanford.edu>

	* symtab.c (lookup_symbol_aux_block): New function.
	(lookup_symbol_aux_local): Move code into lookup_symbol_aux_block.

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

	* gdbarch.sh: Dump the predicate function and macro values.
	(read): Print error on standard error.
	* gdbarch.c: Regenerate.
	
2002-12-04  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (mips_tdep_h): Define.
	(mips-tdep.o): Add mips_tdep_h to dependency list.
	* mips-tdep.h: New file.
	* mips-tdep.c (mips-tdep.h): Include.
	(enum mips_abi): Move to mips-tdep.h.
	(mips_abi): New function.

2002-12-04  David Carlton  <carlton@math.stanford.edu>

	* Makefile.in (f-exp.tab.c): Don't depend on c-exp.tab.c.

2002-12-04  David Carlton  <carlton@math.stanford.edu>

	* symtab.c (lookup_symbol_aux): Move minsym code into a separate
	function.
	(lookup_symbol_aux_minsyms): New function.

2002-12-04  J. Brobecker  <brobecker@gnat.com>

	* pa64solib.c: s/boolean/int/. Fixes a build failure on hppa64-hpux.

2002-12-04  J. Brobecker  <brobecker@gnat.com>

	* config/pa/tm-hppah.h (PC_IN_SIGTRAMP): Renamed from IN_SIGTRAMP,
	which is an obsolete macro name.

2002-12-04  Daniel Jacobowitz  <drow@mvista.com>

	* doublest.c (convert_floatformat_to_doublest): Cast exp_bias to int.
	* config/alpha/alpha-linux.mh (MH_CFLAGS): Add -mieee.

2002-12-03  H.J. Lu  (hjl@gnu.org)

	* breakpoint.c (create_thread_event_breakpoint): Use xasprintf.
	(create_breakpoints): Make sure the addr_string field is not
	NULL.

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

	* sparc-nat.c (fetch_inferior_registers)
	(store_inferior_registers): Add comment on problem of LWP vs
	threads.
	
	From 2002-11-21 Daniel Jacobowitz <drow@mvista.com>
	* lin-lwp.c (lin_lwp_fetch_registers): Remove.
	(lin_lwp_store_registers): Remove.
	(init_lin_lwp_ops): Use fetch_inferior_registers
	and store_inferior_registers directly.
	* sparc-nat.c (fetch_inferior_registers): Honor LWP ID.
	(store_inferior_registers): Likewise.
	Fix PR gdb/725.

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

	* frame.h (get_frame_id): Convert to a function.
	(null_frame_id, frame_id_p): Declare.
	(frame_id_eq, frame_id_inner): Declare.
	(frame_id_build): New function.
	* frame.c (get_frame_id): Update.  Use null_frame_id.
	(frame_find_by_id): Rewrite using frame_id_p, frame_id_eq and
	frame_id_inner.
	(null_frame_id, frame_id_p): Define.
	(frame_id_eq, frame_id_inner): Define.
	(frame_id_build): New function.
	* varobj.c (varobj_create): Update.
	(varobj_update): Update.
	* valops.c (value_assign): Update.
	(new_root_variable): Update.
	* infrun.c (save_inferior_status): Update.
	* breakpoint.c (watch_command_1): Update.

2002-12-03  J. Brobecker  <brobecker@gnat.com>

	* config/pa/tm-hppah.h (SNAP1): Remove unused macro.
	(SNAP2): Likewise.

2002-12-03  Andrew Cagney  <cagney@redhat.com>

	* NEWS: Mention Daniel Jacobowitz's multi-threaded shared library
	patch.

	* PROBLEMS: Mention PR gdb/725.

2002-12-03  Andreas Schwab  <schwab@suse.de>

	* infcmd.c (construct_inferior_arguments): Handle empty arguments.

2002-12-02  Adam Fedor  <fedor@gnu.org>
	    Klee Dienes  <kdienes@apple.com>

	* objc-lang.c (objc_printstr): Add width arg to match
	printstr prototype.
	(compare_selectors): Add 'const' to arg types.
	(compare_classes): Likewise.
	(find_imps): Cast msym pointer to avoid compiler warning.
	(print_object_command): Validate the address before
	passing it to the print routine.
	(find_objc_msgcall_submethod): Change function argument to
	return an int.
	* objc-lang.h: Add 'extern' to all function declarations.
	(value_nsstring): Add declaration.

2002-12-02  J. Brobecker  <brobecker@gnat.com>

	* somsolib.c (dld_cache): Replace boolean by int for field is_valid.
	Fixes a build failure on HP/UX.

	* hpread.c (told_objfile): Replace boolean type by int. Fixes a build
	failure on HP/UX. 
	(hpread_has_name): Advance declaration to avoid a compilation warning.
	(pst_syms_count): Add missing variable type. By change, the compiler
	was defaulting to int, which seems a good choice. Fixes a compilation
	warning.
	(pst_syms_size): Likewise.
 
2002-12-02  J. Brobecker  <brobecker@gnat.com>

	* hppa-tdep.c: Add #include "osabi.h" (for hppa_gdbarch_init).
	(hppa_gdbarch_init): Detect osabi from objfile. Will be needed
	later to set the proper gdbarch methods depending on the osabi.
	* Makefile.in (hppa-tdep.o): Add dependency on osabi.h.

2002-12-02  J. Brobecker  <brobecker@gnat.com>

	* osabi.h (gdb_osabi): Add two new enum values for HPUX ELF and SOM.
	* osabi.c (gdb_osabi_name): Add strings images for the two new
	enum values.
	(generic_elf_osabi_sniffer): Handle HPUX objfiles.

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

	* MAINTAINERS (Java): Global maintainers are responible for Java.
	(Past Maintainers): Mention both Anthony Green and Per Bothner as
	part Java maintainers.

2002-12-02  J. Brobecker  <brobecker@gnat.com>

	* xcoffread.c (read_symbol_lineno): Replace boolean by int.
	Fixes a compilation failure on AiX.

2002-12-02  J. Brobecker  <brobecker@gnat.com>

	* config/powerpc/aix432.mh (NATDEPFILES): Add a comment explaining
	why aix-thread.o is not listed.

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

	* gdbarch.sh (DEPRECATED_PC_IN_CALL_DUMMY): Rename
	PC_IN_CALL_DUMMY.  Change to predicate.  Always allow call.
	* gdbarch.h, gdbarch.c: Re-generate.
	* config/sparc/tm-sparc.h, config/sparc/tm-sp64.h: Update.
	* config/mn10200/tm-mn10200.h, config/h8500/tm-h8500.h: Update.
	* config/pa/tm-hppa.h, frame.h: Update.
	* x86-64-tdep.c, vax-tdep.c, sparc-tdep.c: Update.
	* s390-tdep.c, ns32k-tdep.c, mn10300-tdep.c: Update.
	* m68k-tdep.c, i386-tdep.c, frv-tdep.c: Update.
	* cris-tdep.c, alpha-tdep.c: Update.
	* frame.c (set_unwind_by_pc, create_new_frame): Use either
	DEPRECATED_PC_IN_CALL_DUMMY or pc_in_dummy_frame.
	(get_prev_frame): Ditto.

2002-11-30  Andrew Cagney  <cagney@redhat.com>

	* exec.c (xfer_memory): Replace boolean with int.
	* p-exp.y: Use 0 instead of false.
	* corelow.c (gdb_check_format): Change return type to int from
	boolean.
	* utils.c: Don't include <curses.h> or <term.h> first.

2002-11-29  Stephane Carrez  <stcarrez@nerim.fr>

	* m68hc11-tdep.c (m68hc11_register_raw_size): Remove.
	(m68hc11_register_byte): Remove.
	(m68hc11_gdbarch_init): Don't set the above.

2002-11-29  Andrew Cagney  <cagney@redhat.com>

	* remote-mips.c (mips_initialize): Force a selected frame rebuild
	by calling get_selected_frame.
	* ocd.c (ocd_start_remote): Use get_selected frame instead of
	set_current_frame, create_new_frame, select_frame and
	get_current_frame.
	* remote-e7000.c (e7000_start_remote): Ditto.
	* remote-mips.c (common_open): Ditto
	* remote-rdp.c (remote_rdp_open): Ditto.

2002-11-29  Andreas Schwab  <schwab@suse.de>

	* m68k-tdep.c (m68k_frame_chain, m68k_frame_saved_pc)
	(altos_skip_prologue, delta68_frame_saved_pc, isi_frame_num_args)
	(delta68_frame_num_args, news_frame_num_args, m68k_skip_prologue)
	(m68k_frame_init_saved_regs, m68k_saved_pc_after_call): Use
	read_memory_unsigned_integer instead of read_memory_integer when
	dealing with addresses and instruction opcodes.
	* m68klinux-tdep.c (m68k_linux_sigtramp_saved_pc) 
	(m68k_linux_frame_saved_pc): Likewise.

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

	* stack.c (selected_frame, select_frame): Move from here ...
	* frame.c (selected_frame, select_frame): ... to here.  Include
	"language.h".
	* Makefile.in (frame.o): Update dependencies.
	* frame.c (get_selected_frame): New function.
	* frame.h (get_selected_frame): Declare.
	(deprecated_selected_frame): Rename selected_frame.
	* ada-lang.c, ada-tasks.c, breakpoint.c, corelow.c: Update.
	* eval.c, f-valprint.c, findvar.c, frame.c, frame.h: Update.
	* h8300-tdep.c, h8500-tdep.c, hppa-tdep.c, infcmd.c: Update.
	* inflow.c, infrun.c, macroscope.c, mips-tdep.c: Update.
	* mn10300-tdep.c, ocd.c, regcache.h, remote-e7000.c: Update.
	* remote-mips.c, remote-rdp.c, sh-tdep.c, sparc-tdep.c: Update.
	* stack.c, thread.c, tracepoint.c, valops.c, varobj.c: Update.
	* z8k-tdep.c, cli/cli-cmds.c: Update.
	
2002-11-29  Andrew Cagney  <ac131313@redhat.com>

	* frame.h (get_selected_block): Add comments.

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

	* frame.c (pc_notcurrent): New function.
	(find_frame_sal): New function.
	* frame.h (find_frame_sal): Declare.
	(struct symtab_and_line): Add opaque declaration.
	* stack.c (print_frame_info_base): Use find_frame_sal instead of
	find_pc_line.
	(frame_info): Ditto.
	* ada-lang.c (find_printable_frame): Ditto.

2002-11-28  J. Brobecker  <brobecker@gnat.com>

	* configure.in: Check that the pthdebug library is recent enough
	before enabling thread support on native AiX.
	* configure: Regenerate.

	* config/powerpc/aix432.mh (NATDEPFILES): Remove aix-thread.o
	from the list of object files as it is now appended by configure
	if thread support is enabled.
	(NAT_CLIBS): Removed as -lpthdebug is also appended by configure
	if thread support is enabled.

2002-11-28  Andrew Cagney  <cagney@redhat.com>

	* stack.c (get_selected_block): In-line get_current_block.
	* frame.h (get_current_block): Delete declaration.
	* blockframe.c (get_current_block): Delete function.

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

	* gdbarch.sh (DEPRECATED_USE_GENERIC_DUMMY_FRAMES): Rename
	USE_GENERIC_DUMMY_FRAMES.
	* gdbarch.h, gdbarch.c: Regenerate.
	* valops.c, frame.c: Update.
	* config/z8k/tm-z8k.h, config/mn10200/tm-mn10200.h: Update.
	* config/m32r/tm-m32r.h, config/h8500/tm-h8500.h: Update.
	* config/pa/tm-hppa.h, blockframe.c: Update.
	* vax-tdep.c, sparc-tdep.c, ns32k-tdep.c: Ditto.
	* m68k-tdep.c, alpha-tdep.c: Ditto.

	* arm-tdep.c: Eliminate USE_GENERIC_DUMMY_FRAMES as always 1.
	* mips-tdep.c: Ditto.

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

	* gdbarch.sh (CALL_DUMMY_LOCATION): Default to AT_ENTRY_POINT.
	(USE_GENERIC_DUMMY_FRAMES): Default to true.
	(PC_IN_CALL_DUMMY): Default to generic_pc_in_call_dummy.
	* gdbarch.c, gdbarch.h: Re-generate.
	* inferior.h (USE_GENERIC_DUMMY_FRAMES): Delete macro definition.
	(CALL_DUMMY_LOCATION): Delete macro definition.
	(PC_IN_CALL_DUMMY): Delete macro definitions.
	
	* arm-tdep.c (arm_gdbarch_init): Do not set pc_in_call_dummy,
	default is already generic_pc_in_call_dummy.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto.
	* v850-tdep.c (v850_gdbarch_init): Ditto.
	* sh-tdep.c (sh_gdbarch_init): Ditto.
	* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
	* mips-tdep.c (mips_gdbarch_init): Ditto.
	* mcore-tdep.c (mcore_gdbarch_init): Ditto.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
	* ia64-tdep.c (ia64_gdbarch_init): Ditto.
	* h8300-tdep.c (h8300_gdbarch_init): Ditto.
	* d10v-tdep.c (d10v_gdbarch_init): Ditto.
	* avr-tdep.c (avr_gdbarch_init): Ditto.
	
	* arm-tdep.c (arm_gdbarch_init): Do not set
	use_generic_dummy_frames, default is already 1.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto.
	* x86-64-tdep.c (x86_64_gdbarch_init): Ditto.
	* v850-tdep.c (v850_gdbarch_init): Ditto.
	* sh-tdep.c (sh_gdbarch_init): Ditto.
	* s390-tdep.c (s390_gdbarch_init): Ditto.
	* rs6000-tdep.c (rs6000_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.
	* ia64-tdep.c (ia64_gdbarch_init): Ditto.
	* i386-tdep.c (i386_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.

	* xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set
	call_dummy_location, default is already AT_ENTRY_POINT.
	* x86-64-tdep.c (x86_64_gdbarch_init): Ditto.
	* v850-tdep.c (v850_gdbarch_init): Ditto.
	* sparc-tdep.c (sparc_gdbarch_init): Ditto.
	* sh-tdep.c (sh_gdbarch_init): Ditto.
	* s390-tdep.c (s390_gdbarch_init): Ditto.
	* rs6000-tdep.c (rs6000_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.
	* ia64-tdep.c (ia64_gdbarch_init): Ditto.
	* i386-tdep.c (i386_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.

2002-11-28  Andrew Cagney  <cagney@redhat.com>

	* frame.h: Update comments on set_current_frame, create_new_frame,
	flush_cached_frames, reinit_frame_cache, select_frame and
	selected_frame.
	
2002-11-27  Andrew Cagney  <cagney@redhat.com>

	* config/z8k/tm-z8k.h (PC_IN_CALL_DUMMY): Update definition to use
	deprecated pc_in_call_dummy function.
	* config/sparc/tm-sparc.h (PC_IN_CALL_DUMMY): Ditto.
	* config/sparc/tm-sp64.h (PC_IN_CALL_DUMMY): Ditto.
	* config/pa/tm-hppa.h (PC_IN_CALL_DUMMY): Ditto.
	* config/mn10200/tm-mn10200.h (PC_IN_CALL_DUMMY): Ditto.
	* config/h8500/tm-h8500.h (PC_IN_CALL_DUMMY): Ditto.

2002-11-26  Martin M. Hunt  <hunt@redhat.com>

	* Makefile.in: Remove Tix dependencies.
	* acinclude.m4: Ditto.
	* aclocal.m4: Ditto.
	* configure.in: Ditto.
	* configure: Regenerated.
	
2002-11-26  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (TARGET_FLOAT_FORMAT): Print the float format name.
	(TARGET_DOUBLE_FORMAT, TARGET_LONG_DOUBLE_FORMAT): Ditto.
	* gdbarch.c: Re-generate.
	
2002-11-26  Andrew Cagney  <ac131313@redhat.com>

	* config/h8500/tm-h8500.h (CALL_DUMMY_LOCATION): Define as ON_STACK.
	(USE_GENERIC_DUMMY_FRAMES): Define as zero.
	(PC_IN_CALL_DUMMY): Define as pc_in_call_dummy_on_stack.
	* config/mn10200/tm-mn10200.h (PC_IN_CALL_DUMMY): Define as
	pc_in_call_dummy_at_entry_point.
	* config/pa/tm-hppa.h (CALL_DUMMY_LOCATION): Define as ON_STACK.
	(USE_GENERIC_DUMMY_FRAMES): Define as zero.
	(PC_IN_CALL_DUMMY): Define as pc_in_call_dummy_on_stack.
	* config/pa/tm-hppa64.h (CALL_DUMMY_LOCATION): Delete undefine.
	* config/sparc/tm-sparc.h (PC_IN_CALL_DUMMY): Define as
	pc_in_call_dummy_on_stack.
	* config/sparc/tm-sp64.h (PC_IN_CALL_DUMMY): Redefine as
	pc_in_call_dummy_at_entry_point and pc_in_call_dummy_on_stack.
	* config/z8k/tm-z8k.h (CALL_DUMMY_LOCATION): Define as ON_STACK.
	(USE_GENERIC_DUMMY_FRAMES): Define as zero.
	(PC_IN_CALL_DUMMY): Defile as pc_in_call_dummy_on_stack.
	
2002-11-26  Andrew Cagney  <ac131313@redhat.com>

	* inferior.h (deprecated_pc_in_call_dummy_before_text_end): Rename
	pc_in_call_dummy_before_text_end
	(deprecated_pc_in_call_dummy_after_text_end): Rename
	pc_in_call_dummy_after_text_end.
	(deprecated_pc_in_call_dummy_on_stack): Rename
	pc_in_call_dummy_on_stack.
	(deprecated_pc_in_call_dummy_at_entry_point): Rename
	pc_in_call_dummy_at_entry_point.
	* m68k-tdep.c (m68k_gdbarch_init): Update.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* x86-64-tdep.c (x86_64_gdbarch_init): Update.
	* vax-tdep.c (vax_gdbarch_init): Update.
	* sparc-tdep.c (sparc_gdbarch_init): Update.
	* ns32k-tdep.c (ns32k_gdbarch_init): Update.
	* mn10300-tdep.c (mn10300_gdbarch_init): Update.
	* i386-tdep.c (i386_gdbarch_init): Update.
	* frv-tdep.c (frv_gdbarch_init): Update.
	* cris-tdep.c (cris_gdbarch_init): Update.
	* config/sparc/tm-sparc.h (PC_IN_CALL_DUMMY): Update.
	* blockframe.c (deprecated_pc_in_call_dummy_before_text_end)
	(deprecated_pc_in_call_dummy_after_text_end)
	(deprecated_pc_in_call_dummy_on_stack)
	(deprecated_pc_in_call_dummy_at_entry_point): Update.
	* alpha-tdep.c (alpha_gdbarch_init): Update.

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

	* acconfig.h (HAVE_PREAD64): Add.
	* configure.in: Check for pread64.
	* config.in: Regenerated.
	* configure: Regenerated.
	* lin-lwp.c (lin_lwp_xfer_memory): Call linux_proc_xfer_memory.
	* linux-proc.c (linux_proc_xfer_memory): New function.
	* config/nm-linux.h (linux_proc_xfer_memory): Add prototype.

2002-11-25  David Carlton  <carlton@math.stanford.edu>

	* dwarf2read.c (scan_partial_symbols): Descend into namespace
	pdi's with no name.

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

	* MAINTAINERS: Mark h8500 as broken.  Breakage occured Fri Nov 5
	16:32:04 1999 Andrew Cagney <cagney@b1.cygnus.com>.

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

	* symfile.c (init_objfile_sect_indices): New function.
	(default_symfile_offsets): Move the section-index-initializing
	stuff into init_objfile_sect_indices, and call that.

	* symtab.h (SIZEOF_N_SECTION_OFFSETS): New macro.
	(SIZEOF_SECTION_OFFSETS): Use SIZEOF_N_SECTION_OFFSETS.

	* symfile.c (syms_from_objfile): Adjust indentation.

	* symfile.c (symbol_file_add): Flush gdb_stdout even if from_tty
	|| info_verbose isn't true.

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

	* gdbarch.sh (FRAME_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS): Change
	default to get_frame_base.
	* gdbarch.h, gdbarch.c: Regenerate.
	* arch-utils.c (default_frame_address): Delete function.
	* arch-utils.h (default_frame_address): Delete declaration

2002-11-24  Pierre Muller  <muller@ics.u-strasbg.fr>

	* varobj.c (find_frame_addr_in_frame_chain):
	Use get_frame_base instead of FRAME_FP,
	obvious fix.

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

	* frame.h (FRAME_FP): Delete macro.
	(get_frame_base): New function declaration.
	* frame.c (get_frame_base): New function.
	(get_frame_id): Use ->frame.
	(frame_find_by_id): Rewrite to use get_frame_id.
	* blockframe.c: Use get_frame_base instead of FRAME_FP.
	* cris-tdep.c, d10v-tdep.c, findvar.c, h8500-tdep.c: Ditto.
	* hppa-tdep.c, i386-tdep.c, infcmd.c, infrun.c: Ditto.
	* m68hc11-tdep.c, m68k-tdep.c, mcore-tdep.c, mips-tdep.c: Ditto.
	* mn10200-tdep.c, mn10300-tdep.c, rs6000-tdep.c: Ditto.
	* sh-tdep.c, sparc-tdep.c, stack.c, tracepoint.c: Ditto.
	* v850-tdep.c, valops.c, z8k-tdep.c: Ditto.

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

	* arm-tdep.c (arm_gdbarch_init): Do not set get_saved_register.

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

	* frame.c (set_unwind_by_pc): Revert change below, use
	PC_IN_CALL_DUMMY.
	(get_prev_frame): Ditto.

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

	* dummy-frame.c (pc_in_dummy_frame): New function.
	(generic_pc_in_call_dummy): Call pc_in_dummy_frame.
	(find_dummy_frame): Update comment.
	(generic_pop_current_frame): Use get_frame_type.
	* dummy-frame.h (pc_in_dummy_frame): Declare.
	* frame.c (set_unwind_by_pc): Use pc_in_dummy_frame.
	(create_new_frame): Use pc_in_dummy_frame.
	(get_prev_frame): Use pc_in_dummy_frame.
	(frame_saved_regs_register_unwind): Use get_prev_frame.
	(deprecated_generic_get_saved_register): Use get_prev_frame.

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

	* blockframe.c (find_frame_addr_in_frame_chain): Move function
	from here ...
	* varobj.c (find_frame_addr_in_frame_chain): ... to here.
	(varobj_create): Note that frame ID should be used.
	* frame.h (find_frame_addr_in_frame_chain): Delete declaration.

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

	* breakpoint.c: Include "gdb_assert.h".
	(deprecated_frame_in_dummy): Assert that generic dummy frames are
	not being used.
	* Makefile.in (breakpoint.o): Update dependencies.
	* ada-lang.c (find_printable_frame): Use get_frame_type instead of
	deprecated_frame_in_dummy.
	* stack.c (print_frame_info_base): Ditto.
	(frame_info): Ditto.
	(print_frame_info_base): Ditto.  Delete dead code.
	
2002-11-23  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (m68k_tdep_h): Define.
	(abug-rom.o, cpu32bug-rom.o, dbug-rom.o, m68k-tdep.o, m68klinux-nat.o)
	(remote-est.o, rom68k-rom.o): Add $(m68k_tdep_h).
	* m68k-tdep.c: Move register number enum ...
	* m68k-tdep.h: ... to this new file and rename the constants from
	E_* to M68K_*.  All uses changed.
	* config/m68k/tm-m68k.h (D0_REGNUM, A0_REGNUM): Remove definitions.
	* abug-rom.c: Include "m68k-tdep.h".  Use
	M68K_D0_REGNUM/M68K_A0_REGNUM instead of D0_REGNUM/A0_REGNUM.
	* cpu32bug-rom.c: Likewise.
	* dbug-rom.c: Likewise.
	* m68k-tdep.c: Likewise.
	* m68klinux-nat.c: Likewise.
	* remote-est.c: Likewise.
	* rom68k-rom.c: Likewise.
	* config/m68k/tm-linux.h: Likewise.

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

	* arm-tdep.c (arm_gdbarch_init): Remove old style non-generic
	dummy frame initialization code.
	* mips-tdep.c (mips_gdbarch_init): Ditto.

2002-11-22  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (child_attach): Reset saw_create counter or subsequent
	attach will hang.

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

	* gdbarch.sh (FRAME_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS): Default
	to default_frame_address.
	* gdbarch.h, gdbarch.c: Re-generate.

	* d10v-tdep.c (d10v_gdbarch_init): Do not set frame_args_address
	or frame_locals_address to default_frame_address.
	* m68k-tdep.c (m68k_gdbarch_init): Update.
	* i386-tdep.c (i386_gdbarch_init): Update.
	* frv-tdep.c (frv_gdbarch_init): Update.
	* sh-tdep.c (sh_gdbarch_init): Update.
	* v850-tdep.c (v850_gdbarch_init): Update.
	* sparc-tdep.c (sparc_gdbarch_init): Update.
	* mips-tdep.c (mips_gdbarch_init): Update.
	* mn10300-tdep.c (mn10300_gdbarch_init): Update.
	* x86-64-tdep.c (x86_64_gdbarch_init): Update.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Update.

	* cris-tdep.c (cris_frame_args_address): Delete function.
	(cris_frame_locals_address): Delete function.
	(cris_gdbarch_init): Do not set frame_args_address or
	frame_locals_address.

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

	* thread-db.c (thread_db_load): Tell the user what's going on
	if dlopen fails on libthread_db.

2002-11-23  Andreas Schwab  <schwab@suse.de>

	* m68k-tdep.c (m68k_register_virtual_type): Use architecture
	invariant return values.

2002-11-22  Andreas Schwab  <schwab@suse.de>

	* valops.c (value_slice): Move declaration of `offset' to avoid
	warning.

2002-11-22  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (psapi_get_dll_name): Fix a compiler warning.
	(struct so_stuff): Add end_addr field.
	(register_loaded_dll): Calculate and store end address of loaded dll.
	(solib_address): New function.
	(child_solib_loaded_library_pathname): Pass carefully constructed
	section info to safe_symbol_file_add rather than ignoring it.
	(get_child_debug_event): Call re_enable_breakpoints_in_shlibs when a
	DLL is loaded.
	(do_initial_child_stuff): Call disable_breakpoints_in_shlibs.
	(child_create_inferior): Fix a compiler warning.
	* config/i386/tm-cygwin.h (PC_SOLIB): Define new macro.
	(solib_address): Declare new function.

2002-11-22  Andreas Schwab  <schwab@suse.de>

	* m68k-tdep.c (m68k_register_virtual_type): Return int for SR, FPC
	and FPS registers.

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

	* maint.c (_initialize_maint_cmds): Fix typo.  From
	Francesco Potorti` <pot@gnu.org>.

2002-11-21  Andrew Cagney  <cagney@redhat.com>

	* mips-tdep.c (mips_dump_tdep): Delete references to
	GDB_TARGET_UNMASK_DISAS_PC and GDB_TARGET_MASK_DISAS_PC.
	* config/mips/tm-mips.h (GDB_TARGET_MASK_DISAS_PC): Delete macro.
	(GDB_TARGET_UNMASK_DISAS_PC): Delete macro.
	* printcmd.c (build_address_symbolic): Delete calls to
	GDB_TARGET_UNMASK_DISAS_PC and GDB_TARGET_MASK_DISAS_PC.
	(address_info): Ditto.
	Fix PR gdb/773.
	
2002-11-19  Klee Dienes  <kdienes@apple.com>
            Adam Fedor  <fedor@gnu.org>

	* completer.c (skip_quoted_chars): Renamed from skip_chars.  Add
	the ability to explicitly specify the quote characters and word
	break characters; if NULL is specified for either, use the old
	behavior of using the characters used by the completer.
	(skip_chars): New function.  Convenience wrapper around
	skip_quoted_chars to provide the original skip_chars behavior.
	* completer.h (skip_quoted_chars): Add prototype.

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

	Problems reported by Paul Eggert.
	* gdbarch.sh: Use `sort -k 3`.  Fix PR gdb/527.

2002-11-19  Andreas Schwab  <schwab@suse.de>

	* m68klinux-nat.c (IS_SIGTRAMP, IS_RT_SIGTRAMP) 
	(m68k_linux_in_sigtramp, SIGCONTEXT_PC_OFFSET) 
	(UCONTEXT_PC_OFFSET, m68k_linux_sigtramp_saved_pc) 
	(m68k_linux_frame_saved_pc): Move to ...
	* m68klinux-tdep.c: ... here.  New file.
	* Makefile.in (m68klinux-tdep.o): Add dependencies.
	* config/m68k/linux.mt (TDEPFILES): Add m68klinux-tdep.o.

2002-11-19  Adam Fedor  <fedor@gnu.org>

	* objc-exp.y: Revert to old skip_quoted usage.

2002-11-19  Adam Fedor  <fedor@gnu.org>

	* Makefile.in (SFILES): Add objc-exp.y objc-lang.c.
	(objc_lang_h): Define.
	(YYFILES): Add objc-exp.tab.c.
	(local-maintainer-clean): Remove objc-exp.tab.c.
	(objc-exp.tab.c, objc-exp.tab.o, objc-lang.o): New target.
	
2002-11-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y (typecast rule): Add automatic dereference of
	pascal classes if needed.
	(THIS): Set current_type.
	Automatically dereference pascal classes. 
	(typebase rule): Add ^typebase recognition.

2002-11-18  Adam Fedor  <fedor@gnu.org>

	* expprint.c (print_subexp): Handle OP_OBJC_NSSTRING,
	OP_OBJC_MSGCALL, and OP_OBJC_SELF.	
	(op_name): Handle OP_OBJC_SELF.
	* Makefile.in (expprint.o): Add additional depends.

2002-11-18  Adam Fedor  <fedor@gnu.org>

	* expression.h: Rename ObjC ops to OP_OBJC_MSGCALL,
	OP_OBJC_SELECTOR, OP_OBJC_NSSTRING, and OP_OBJC_SELF.
	* parse.c (length_of_subexp, prefixify_subexp): Likewise.
	* objc-exp.y: Likewise.	

2002-11-18  Adam Fedor  <fedor@gnu.org>

	* gdb/parser-defs.h: (struct objc_class_str): New structure
	for parsing ObjC classes.

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

	* stack.c (frame_relative_level): Copy function from here ...
	* frame.c (frame_relative_level): ...to here.

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

	* frame.h (enum frame_type): Define.
	(get_frame_type): Declare.
	(struct frame_info): Add field `type'.  Delete field
	signal_handler_caller.
	(deprecated_set_frame_signal_handler_caller): Declare.
	* frame.c (get_frame_type): New function.
	(deprecated_set_frame_type): New function.
	(create_new_frame): Set the frame's type.
	(get_prev_frame): Similar.
	* sparc-tdep.c: Use get_frame_type instead of signal_handler_caller.
	* s390-tdep.c: Ditto.
	* m68klinux-nat.c: Ditto.
	* ns32k-tdep.c: Ditto.
	* x86-64-linux-tdep.c: Ditto.
	* vax-tdep.c: Ditto.
	* rs6000-tdep.c: Ditto.
	* ppc-linux-tdep.c: Ditto.
	* i386-interix-tdep.c: Ditto.
	* mips-tdep.c: Ditto.
	* m68k-tdep.c: Ditto.
	* hppa-tdep.c: Ditto.
	* ia64-tdep.c: Ditto.
	* cris-tdep.c: Ditto.
	* arm-tdep.c: Ditto.
	* alpha-tdep.c: Ditto.
	* i386-tdep.c: Ditto.
	* stack.c: Ditto.
	* ada-lang.c: Ditto.
	* blockframe.c: Update.
	* i386-interix-tdep.c (i386_interix_back_one_frame): Use
	deprecated_set_frame_type instead of signal_handler_caller.
	* ppc-linux-tdep.c (ppc_linux_init_extra_frame_info): Ditto.
	* rs6000-tdep.c (rs6000_init_extra_frame_info): Ditto.
	* breakpoint.h: Delete FIXME suggesting get_frame_type.

2002-11-18   Klee Dienes  <kdienes@apple.com>

	* Makefile.in (buildsym.o): Add dependency for gdb_assert.h.

2002-11-18  Klee Dienes  <kdienes@apple.com>

	* buildsym.c (pop_context): Add comment.
	
2002-11-18  Klee Dienes  <kdienes@apple.com>

        * buildsym.h (pop_context): Convert to function, defined in
	buildsym.c.
	* buildsym.c: Include gdb_assert.h.
	(pop_context): Implement as C function.  Add check for stack
	underflow.
        * dbxread.c (process_one_symbol): Complain and stop processing
	that symbol if we are already at the top of the context stack for
	a function-end N_FUN (this would imply an umatched RBRAC).  Ditto
	when processing N_RBRAC.

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

	* config/pa/nm-hppah.h (CHILD_POST_FOLLOW_INFERIOR_BY_CLONE): Don't
	define.
	(struct target_waitstatus): Add opaque definition.
	* corelow.c (init_core_ops): Don't set to_clone_and_follow_inferior.
	* exec.c (init_exec_ops): Likewise.
	* fork-child.c (clone_and_follow_inferior): Remove.
	* hppah-nat.c (child_post_follow_inferior_by_clone): Remove.
	* inferior.h (clone_and_follow_inferior): Remove prototype.
	* infrun.c (follow_fork_mode_both): Remove.
	(follow_fork_mode_kind_names): Remove commented out "both".
	(follow_inferior_fork): Remove follow_fork_mode_both support.
	* inftarg.c (child_clone_and_follow_inferior): Remove.
	(child_post_follow_inferior_by_clone): Remove.
	(init_child_ops): Don't set to_clone_and_follow_inferior
	or to_post_follow_inferior_by_clone.
	* target.c (default_clone_and_follow_inferior): Remove.
	(cleanup_target): Don't set to_clone_and_follow_inferior
	or to_post_follow_inferior_by_clone.
	(find_default_clone_and_follow_inferior): Remove.
	(init_dummy_target): Don't set to_clone_and_follow_inferior.
	(debug_to_clone_and_follow_inferior): Remove.
	(debug_to_post_follow_inferior_by_clone): Remove.
	(setup_target_debug): Don't set to_clone_and_follow_inferior
	or to_post_follow_inferior_by_clone.
	* target.h (struct target_ops): Remove to_clone_and_follow_inferior
	and to_post_follow_inferior_by_clone.
	(child_clone_and_follow_inferior): Remove prototype.
	(child_post_follow_inferior_by_clone): Remove prototype.
	(target_clone_and_follow_inferior): Remove macro.
	(target_post_follow_inferior_by_clone): Remove macro.
	(find_default_clone_and_follow_inferior): Remove prototype.

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

	* breakpoint.c (bpstat_stop_status): Call inferior_has_forked,
	inferior_has_vforked, and inferior_has_execd instead of
	target_has_forked, target_has_vforked, and target_has_execd.
	* config/pa/nm-hppah.h (CHILD_HAS_FORKED, CHILD_HAS_VFORKED)
	(CHILD_HAS_EXECD, CHILD_HAS_SYSCALL_EVENT): Don't define.
	(CHILD_WAIT): Define.
	(child_wait): Add prototype.
	* hppah-nat.c (hpux_has_forked): Rename from child_has_forked.
	Add prototype.
	(hpux_has_vforked): Likewise, from child_has_vforked.
	(hpux_has_execd): Likewise, from child_has_execd.
	(hpux_has_syscall_event): Likewise, from child_has_syscall_event.
	(not_same_real_pid, child_wait): New, copied from inftarg.c.
	Call hpux_has_forked, hpux_has_vforked, hpux_has_execd,
	and hpux_has_syscall_event instead of the target hooks.
	* infrun.c (inferior_has_forked, inferior_has_vforked)
	(inferior_has_execd): New functions.
	* inftarg.c (not_same_real_pid): Remove.
	(child_wait): Remove references to not_same_real_pid,
	target_has_forked, target_has_vforked, target_has_execd,
	and target_has_syscall_event.
	(child_has_forked, child_has_vforked, child_has_execd)
	(child_has_syscall_event): Remove.
	(init_child_ops): Remove references to child_has_forked,
	child_has_vforked, child_has_execd, and child_has_syscall_event.
	* infttrace.c (hpux_has_forked): Rename from child_has_forked.
	(hpux_has_vforked): Likewise, from child_has_vforked.
	(hpux_has_execd): Likewise, from child_has_execd.
	(hpux_has_syscall_event): Likewise, from child_has_syscall_event.
	* target.c (cleanup_target): Remove references to
	to_has_forked, to_has_vforked, to_has_execd, and
	to_has_syscall_event.
	(update_current_target): Likewise.
	(setup_target_debug): Likewise.
	(debug_to_has_forked): Remove.
	(debug_to_has_vforked): Remove.
	(debug_to_has_execd): Remove.
	(debug_to_has_syscall_event): Remove.
	* target.h (struct target_ops): Remove to_has_forked.
	to_has_vforked, to_has_execd, and to_has_syscall_event.
	(child_has_forked, child_has_vforked, child_has_execd)
	(child_has_syscall_event): Remove prototypes.
	(inferior_has_forked, inferior_has_vforked, inferior_has_execd): Add
	prototypes.
	(target_has_forked, target_has_vforked, target_has_execd)
	(target_has_syscall_event): Remove macros.

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

	* hppah-nat.c (child_can_follow_vfork_prior_to_exec): Remove.
	* inftarg.c (child_can_follow_vfork_prior_to_exec): Remove.
	(init_child_ops): Don't initialize to_can_follow_vfork_prior_to_exec.
	* infttrace.c (child_can_follow_vfork_prior_to_exec): Remove.
	* target.c (cleanup_target): Remove reference to
	to_can_follow_vfork_prior_to_exec.
	(update_current_target): Likewise.
	(debug_to_can_follow_vfork_prior_to_exec): Remove.
	(setup_target_debug): Remove reference to
	to_can_follow_vfork_prior_to_exec.
	* target.h (struct target_ops): Remove
	to_can_follow_vfork_prior_to_exec.
	(child_can_follow_vfork_prior_to_exec): Remove prototype.
	(target_can_follow_vfork_prior_to_exec): Remove definition.
	* config/pa/nm-hppah.h (CHILD_CAN_FOLLOW_VFORK_PRIOR_TO_EXEC): Don't
	define.
	* infrun.c (follow_vfork_when_exec): Remove.
	(follow_inferior_fork): Remove references to follow_vfork_when_exec.
	(follow_exec): Likewise.
	(handle_inferior_event): Likewise.
	(keep_going): Likewise.

2002-11-15  Andrew Cagney  <cagney@redhat.com>

	* frame.c (generic_unwind_get_saved_register): Make static.
	* frame.h (generic_unwind_get_saved_register): Delete declaration.
	* avr-tdep.c (avr_gdbarch_init): Do not set get_saved_register,
	defaults to generic_unwind_get_saved_register.
	* mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
	* h8300-tdep.c (h8300_gdbarch_init): Ditto.
	* frv-tdep.c (frv_gdbarch_init): Ditto.
	* i386-tdep.c (i386_gdbarch_init): Ditto.
	* s390-tdep.c (s390_gdbarch_init): Ditto.
	* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
	* v850-tdep.c (v850_gdbarch_init): Ditto.
	* mcore-tdep.c (mcore_gdbarch_init): Ditto.
	* d10v-tdep.c (d10v_gdbarch_init): Ditto.
	* config/mn10200/tm-mn10200.h (GET_SAVED_REGISTER): Delete macro.

2002-11-15  Andrew Cagney  <cagney@redhat.com>

	* x86-64-linux-nat.c (i386_sse_regnum_p): New function.  Copy from
	i386-tdep.c.

2002-11-15  Andrew Cagney  <cagney@redhat.com>

	* frame.h (sigtramp_saved_pc): Delete declaration.
	* blockframe.c (sigtramp_saved_pc): Delete function.
	* ns32k-tdep.c (ns32k_sigtramp_saved_pc): New function.
	(ns32k_frame_saved_pc): Call ns32k_sigtramp_saved_pc.
	* vax-tdep.c (vax_sigtramp_saved_pc): New function.
	(vax_frame_saved_pc): Call vax_sigtramp_saved_pc.

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

	* frame.c (frame_pc_unwind): New function.
	(frame_saved_regs_pc_unwind): New function.
	(frame_register_unwind): Pass unwind_cache instead of
	register_unwind_cache.
	(set_unwind_by_pc): Add unwind_pc parameter, set.
	(create_new_frame): Pass frame->pc_unwind to set_unwind_by_pc.
	(get_prev_frame): Ditto.
	* frame.h (frame_pc_unwind_ftype): Declare.
	(struct frame_info): Add pc_unwind, pc_unwind_cache_p and
	pc_unwind_cache.  Rename register_unwind_cache to unwind_cache.
	(frame_pc_unwind): Declare.
	* dummy-frame.c (dummy_frame_pc_unwind): New function.
	(struct dummy_frame): Add comment mentioning that values are for
	previous frame.
	* dummy-frame.h (dummy_frame_pc_unwind): Declare.
	* blockframe.c (file_frame_chain_valid): Use frame_pc_unwind.
	(generic_file_frame_chain_valid): Ditto.
	* stack.c (frame_info): Ditto.

2002-11-15  David Carlton  <carlton@math.stanford.edu>

	* linespec.c (locate_first_half): New function.
	(decode_line_1): Move code into locate_first_half.

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

	* complaints.h: Add comment explaining how to eliminate a
	deprecated_complain call.
	* complaints.h: Fix spelling errors.

2002-11-15  David Carlton  <carlton@math.stanford.edu>

	* printcmd.c: Remove #include "disasm.h".

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

	* frame.h: Move the most relevant interface functions to the start
	of the file.

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

	* regcache.h (deprecated_registers): Rename registers.
	* a68v-nat.c, alpha-nat.c, arch-utils.c, core-sol2.c: Update.
	* hp300ux-nat.c, hppab-nat.c, hppah-nat.c: Update.
	* hppam3-nat.c, hpux-thread.c, i386gnu-nat.c: Update.
	* ia64-aix-nat.c, ia64-linux-nat.c, ia64-tdep.c: Update.
	* irix4-nat.c, irix5-nat.c, lynx-nat.c, m68k-tdep.c: Update.
	* m68knbsd-nat.c, mips-linux-tdep.c, mipsm3-nat.c: Update.
	* mipsv4-nat.c, ns32knbsd-nat.c, ppc-bdm.c: Update.
	* ppc-sysv-tdep.c, ptx4-nat.c, regcache.c, remote-es.c: Update.
	* remote-sds.c, remote-vx68.c, remote-vxmips.c: Update.
	* remote-vxsparc.c, rs6000-tdep.c, sol-thread.c: Update.
	* sparc-nat.c, sparc-tdep.c, sun3-nat.c, symm-nat.c: Update.
	* v850ice.c: Update.

Wed Nov 13 19:51:05 2002  Andrew Cagney  <cagney@redhat.com>

	* utils.c (gdb_realpath): Add comment mentioning realpath with a
 	NULL buffer.

2002-11-13  Andrew Cagney  <cagney@redhat.com>

	* regcache.h (deprecated_read_register_bytes): Rename
	read_register_bytes.
	(deprecated_write_register_bytes): Rename write_register_bytes.
	* alpha-tdep.c, arm-tdep.c, cris-tdep.c, d10v-tdep.c: Update.
	* dwarf2cfi.c, frv-tdep.c, hppa-tdep.c, ia64-tdep.c: Update.
	* m68k-tdep.c, mcore-tdep.c, mips-tdep.c, mn10300-tdep.c: Update.
	* ns32k-tdep.c, regcache.c, remote-sds.c, remote-vx.c: Update.
	* remote.c, rs6000-tdep.c, s390-tdep.c, sh-tdep.c: Update.
	* sparc-tdep.c, v850-tdep.c, vax-tdep.c, x86-64-tdep.c: Update.
	* xstormy16-tdep.c, z8k-tdep.c, config/nm-gnu.h: Update.
	* config/nm-m3.h, config/h8500/tm-h8500.h: Update.
	* config/i386/nm-ptx4.h, config/i386/nm-symmetry.h: Update.
	* config/m32r/tm-m32r.h, config/m68k/nm-sun3.h: Update.
	* config/m68k/tm-delta68.h, config/m68k/tm-linux.h: Update.
	* config/mn10200/tm-mn10200.h, config/pa/tm-hppa64.h: Update.
	* config/sparc/nm-nbsd.h, config/sparc/nm-sun4os4.h: Update.
	* config/sparc/nm-sun4sol2.h, config/sparc/tm-sparclet.h: Update.

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

	* findvar.c (read_var_value): Doc fix.

2002-11-13  Andrew Cagney  <cagney@redhat.com>

	* regcache.c (struct regcache): Replace passthough_p with
	readonly_p.
	(regcache_xmalloc): Initialize readonly_p.
	(build_regcache): Initialize readonly_p.
	(regcache_save): New function.
	(regcache_restore): New function.
	(regcache_cpy): Re-implement using regcache_save and
	regcache_restore.
	(regcache_raw_read): Update.
	(regcache_cooked_read): When a read-only cache, checked for cached
	pseudo register values.
	(regcache_raw_write): Assert that the cache is not read-only.
	Remove code handling a non-passthrough cache.
	* regcache.h (regcache_save): Declare.
	(regcache_restore): Declare.

2002-11-13  Andrew Cagney  <cagney@redhat.com>

	* regcache.c (struct regcache_descr): Add fields
	sizeof_cooked_registers and sizeof_cooked_register_valid_p.
	(init_legacy_regcache_descr): Compute the size of a cooked
	register cache and then assign that to sizeof_raw_registers.  Set
	sizeof_raw_register_valid_p to sizeof_cooked_register_valid_p
	(init_legacy_regcache_descr): Ditto.

2002-11-13  Andrew Cagney  <cagney@redhat.com>

	* regcache.c (register_buffer): Move to near start of file, update
	description.
	(regcache_raw_read): Use.
	(regcache_raw_write): Use.
	(struct regcache): Rename raw_registers to registers and
	raw_register_valid_p to register_valid_p.
	(regcache_xmalloc): Update.
	(regcache_xfree): Update.
	(register_buffer): Update.
	(regcache_cpy): Update.
	(regcache_cpy_no_passthrough): Update.
	(regcache_valid_p): Update.
	(deprecated_grub_regcache_for_registers): Update.
	(deprecated_grub_regcache_for_register_valid): Update.
	(set_register_cached): Update.
	(regcache_raw_write): Update.

2002-11-13  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y (name_not_typename): Use copy_name to
	set current_type variable for fields of THIS.

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

	* gnu-nat.c (init_gnu_ops): Remove NULL initializations.
	* monitor.c (init_base_monitor_ops): Likewise.
	* ppc-bdm.c (init_bdm_ppc_ops): Likewise.
	* remote-array.c (init_array_ops): Likewise.
	* remote-e7000.c (init_e7000_ops): Likewise.
	* remote-es.c (init_es1800_ops): Likewise.
	(init_es1800_child_ops): Likewise.
	* remote-rdp.c (init_remote_rdp_ops): Likewise.
	* remote-sim.c (init_gdbsim_ops): Likewise.
	* remote-st.c (init_st2000_ops): Likewise.
	* sol-thread.c (init_sol_core_ops): Likewise.
	(init_sol_thread_ops): Likewise.
	* v850ice.c (init_850ice_ops): Likewise.
	* win32-nat.c (init_child_ops): Likewise.
	* wince.c (init_child_ops): Likewise.

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

	* utils.c (gdb_realpath): Make rp a constant pointer.

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

	* utils.c (gdb_realpath): Rewrite.  Try, in order: realpath() with
	a constant buffer; cannonicalize_file_name(); realpath() with a
	pathconf() defined buffer, xstrdup().

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

	* config/djgpp/fnchange.lst: Fix typo, hang1.c to hang1.C; hang2.c
	to hang2.C; hang3.c to hang3.C.

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

        * findvar.c (read_var_value): Reenable TLS code.

2002-11-11  Elena Zannoni  <ezannoni@redhat.com>
            Jim Blandy  <jimb@redhat.com>
	
	* gdb_thread_db.h (enum): Add TD_NOTALLOC.
	* target.c (update_current_target): Add
	to_get_thread_local_address.
	* target.h (to_get_thread_local_address): Export.
	(target_get_thread_local_address): Define.
	(target_get_thread_local_address_p): Define.
	* thread-db.c: Include solib-svr4.h.
	(td_thr_tls_get_addr_p): Define.
	(thread_db_load): Get a pointer to td_thr_tls_get_addr.
	(thread_db_get_thread_local_address): New function.
	(init_thread_db_ops): Initialize to_get_thread_local_address.
	* configure.in: Add test for TD_NOTALLOC in thread_db.h.
	* configure: Regenerate.
	* config.in: Regenerate.

2002-11-11  David Carlton  <carlton@math.stanford.edu>

	* linespec.c (set_flags): New function.
	(decode_line_1): Move code into set_flags.

2002-11-11  David Carlton  <carlton@math.stanford.edu>

	* linespec.c (decode_line_1): Move chunks of code to separate
	functions.
	(initialize_defaults): New function.
	(decode_indirect): New function.

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

	* blockframe.c (sigtramp_saved_pc): Fix tipo. void_func_ptr
	instead of void_code_ptr.
	(sigtramp_saved_pc): Ditto.

	* x86-64-tdep.c (i386_fp_regnum_p): Copy i386-tdep.c's
	i386_fp_regnum_p.

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

	* gdbtypes.h (struct main_type): Move artificial flag out of
	loc.  New member of ``struct field'' named static_kind.  Reduce
	overloaded meaning of bitsize.
	(FIELD_ARTIFICIAL, SET_FIELD_PHYSNAME, SET_FIELD_PHYSADDR)
	(TYPE_FIELD_STATIC, TYPE_FIELD_STATIC_HAS_ADDR): Likewise.
	(FIELD_STATIC_KIND, TYPE_FIELD_STATIC_KIND): New macros.

	* ada-lang.c (fill_in_ada_prototype): Initialize static_kind for
	new fields.
	(template_to_fixed_record_type, template_to_static_fixed_type)
	(to_record_with_fixed_variant_part): Likewise.
	* coffread.c (coff_read_struct_type, coff_read_enum_type): Likewise.
	* dwarf2read.c (dwarf2_add_field, read_enumeration): Likewise.
	* dwarfread.c (struct_type, enum_type): Likewise.
	* hpread.c (hpread_read_enum_type)
	(hpread_read_function_type, hpread_read_doc_function_type)
	(hpread_read_struct_type): Likewise.
	* mdebugread.c (parse_symbol): Likewise.

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

	* breakpoint.h (deprecated_frame_in_dummy): Rename frame_in_dummy.
	* stack.c (print_frame_info_base): Update.
	(print_frame_info_base, frame_info): Update.
	* sparc-tdep.c (sparc_init_extra_frame_info): Update.
	(sparc_frame_saved_pc): Update.
	* ada-lang.c (find_printable_frame): Update.
	* breakpoint.c (deprecated_frame_in_dummy): Update.
	
2002-11-09  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-nat.c (ORIG_EAX): Define to -1 if not already
	defined.
	(regmap): Extend to cover all registers.
	(PT_READ_U, PT_WRITE_U, PTRACE_XFER_TYPE,
	OLD_CANNOT_FETCH_REGISTERS, OLD_CANNOT_STORE_REGISTERS): Remove
	definitions.
	(fetch_register, sore_register): Simplify.
	(old_fetch_inferior_registers, old_store_inferior_registers):
	Remove functions.
	(cannot_fetch_register, cannot_store_register): Change
	implementation to use regmap array to decide which registers
	cannot be fetched/stored.  This removes $orig_eax from the
	registers that cannot be fetched/stored.
	(fetch_inferior_registers): Call fetch_register directly instead
	of calling old_fetch_inferior_registers.
	(store_inferior_registers): Call store_register directly instead
	of calling old_store_inferior_registers.
	(i386_linux_dr_get): Replace PT_READ_U with PTRACE_PEEKUSER.
	(i386_linux_dr_set): Replace PT_WRITE_U with PTRACE_POKEUSER.
	* config/i386/nm-linux.h (U_REGS_OFFSET): Remove definition.

2002-11-09  Klee Dienes  <kdienes@apple.com>

        * i387-tdep.c (i387_supply_register): When called with NULL as a
	buffer, mark the register as not provided (to mirror the behavior
	of supply_register).
        (i387_supply_fxsave): Ditto.
        (i387_supply_fsave): Ditto (inherits the behavior from
	i387_supply_register).

2002-11-09  Klee Dienes  <kdienes@apple.com>

	* blockframe.c (sigtramp_saved_pc): Use
	builtin_type_void_code_ptr, not builtin_type_void_data_ptr (we are
	extracting the PC).  Use TYPE_LENGTH (builtin_type_void_code_ptr)
	instead of (TARGET_PTR_BIT / TARGET_CHAR_BIT).
	
2002-11-09  Andrew Cagney  <ac131313@redhat.com>

	* frame.c (get_prev_frame): Test prev_p to identify a previously
	unwound frame.  Initialize prev_p.
	* frame.h (struct frame_info): Add field prev_p.  Expand prev/next
	comment.

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

	* frame.c (get_prev_frame): Cleanups.  Eliminate redundant tests
	for a NULL NEXT_FRAME.  Simplify fromleaf initialization.  Add
	more comments.  Zap dead code.

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

	* infcmd.c (print_vector_info, print_float_info): Move code that
	checks whether the target has any registers and whether there is a
	selected frame up, such that it is also used if a target provides
	multi-arch definitions of these functions.

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

	* Makefile.in (DESTDIR): Define.
	(install-only, install-gdbtk, uninstall-gdbtk): Add $(DESTDIR)
	prefix.

	* config/djgpp/fnchange.lst: 8.3 proof i386obsd-nat.c and
	i386obsd-tdep.c.  Rename to "gdb.cxx", paths containing "gdb.c++".

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

	* i386-linux-tdep.c: Include "reggroups.h".
	(i386_linux_register_reggroup_p): New function.
	(i386_linux_init_abi): Set register_reggroup_p to
	i386_linux_register_reggroup_p.
	* i386-tdep.h (i386_register_reggroup_p): Declare.
	* i386-tdep.c: Include "reggroups.h".
	(i386_init_reggroups): New function.
	(i386_add_reggroups): New function.
	(i386_register_reggroup_p): New function.
	(i386_sse_reggroup, i386_mmx_reggroup): New variables.
	(_initialize_i386_tdep): Call i386_init_reggroups.
	(i386_gdbarch_init): Set register_reggroup_p and add in the i386
	specific reggroups.

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

	* infptrace.c (child_xfer_memory): Make use of the new PT_IO
	request that's available in *BSD.

	* i386-tdep.h (IS_FPU_CTRL_REGNUM): Remove.

	* i387-tdep.c (i387_fill_fxsave): Use FOOFF_REGNUM instead of
	FDOFF_REGNUM.

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

	* frame.c (set_unwind_by_pc): Use dummy_frame_register_unwind.
	* dummy-frame.c (find_dummy_frame): Rename
	generic_find_dummy_frame, make static.  Return the dummy frame
	instead of the regcache.
	(generic_find_dummy_frame): Re-implement using find_dummy_frame,
	(cached_find_dummy_frame): New function.  Use find_dummy_frame.
	(dummy_frame_register_unwind): Rename
	generic_call_dummy_register_unwind.  Use cached_find_dummy_frame.
	* dummy-frame.h (dummy_frame_register_unwind): Rename
	generic_call_dummy_register_unwind.

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

	* config/i386/tm-i386v42mp.h: Remove file.  Move its contents,
	except the inclusion of "i386/tm-i386.h", to...
	* config/i386/nm-i386v42mp.h: ...here.
	* config/i386/i386v42mp.mt (TM_FILE): Set to tm-i386.h.

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

	* Makefile.in (frame.o): Update dependencies.
	* blockframe.c (current_frame, frame_obstack_alloc)
	(frame_saved_regs_zalloc, get_current_frame)
	(set_current_frame, create_new_frame)
	(set_unwind_by_pc, get_next_frame)
	(flush_cached_frames, reinit_frame_cache)
	(frame_saved_regs_register_unwind)
	(deprecated_generic_get_saved_register)
	(get_prev_frame, get_frame_pc, get_frame_saved_regs)
	(_initialize_blockframe): Move frame code from here...
	* frame.c: ...to here.  Include "gdb_obstack.h", "gdbcore.h",
	"annotate.h" and "dummy-frame.h".
	(_initialize_frame): New function.

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

	* dwarf2read.c (read_func_scope): Restore list_in_scope properly
	when we finish a function a context.
	* buildsym.h (outermost_context_p): New macro.
	(Bug analyzed by David Edelsohn.)

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

	* blockframe.c: Include "dummy-frame.h".
	(struct dummy_frame, dummy_frame_stack)
	(generic_find_dummy_frame, deprecated_generic_find_dummy_frame)
	(generic_pc_in_call_dummy, deprecated_read_register_dummy)
	(generic_push_dummy_frame, generic_save_dummy_frame_tos)
	(generic_save_call_dummy_addr, generic_pop_current_frame)
	(generic_pop_dummy_frame, generic_fix_call_dummy)
	(generic_fix_call_dummy, generic_call_dummy_register_unwind): Move
	dummy frame code from here...
	* dummy-frame.c: ...to here.  New file.
	* dummy-frame.h: New file.
	(generic_call_dummy_register_unwind): Declare.
	(generic_find_dummy_frame): Declare.
	* Makefile.in (SFILES): Add dummy-frame.c.
	(dummy-frame.o): Specify dependencies.
	(dummy_frame_h): Define.
	(COMMON_OBS): Add dummy-frame.o.
	(blockframe.o): Update dependencies.

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

	* dwarf2read.c (read_func_scope): Restore local_symbols and
	param_symbols after we finish the function context.  (Based on a
	patch from David Edelsohn.)

2002-11-08  David Carlton  <carlton@math.stanford.edu>

	* linespec.c (symbol_found): New function.
	(minsym_found): New function.
	(decode_line_1): Separate out some code into separate functions.

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

	* i386-tdep.c (i386_frameless_signal_p): Make non static for
	the benefit of the interix target.
	* i386-tdep.h (i386_frameless_signal_p): Declare.

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

	* i386-tdep.h (i386_linux_orig_eax_regnum_p): Delete stray
	declaration that snuck in from change below.

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

	* i386-tdep.c (i386_mmx_regnum_p): Rename mmx_regnum_p.  Update
	all callers.
	(i386_fp_regnum_p): New function.  Use instead of FP_REGNUM_P.
	(i386_fpc_regnum_p): New function.  Use instead of FPC_REGNUM_P.
	(i386_sse_regnum_p): New function.  Use instead of SSE_REGNUM_P.
	(i386_mxcsr_regnum_p): new function.  Use instead of
	MXCSR_REGNUM_P.
	* i386-tdep.h (SSE_REGNUM_P): Delete macro.
	(i386_sse_regnum_p): Declare.
	(i386_mxcsr_regnum_p): Declare.
	(FP_REGNUM_P, FPC_REGNUM_P): Delete macros.
	(i386_fp_regnum_p, i386_fpc_regnum_p): Declare.
	(IS_FP_REGNUM): Update definition.
	(IS_FPU_CTRL_REGNUM): Update definition..
	(IS_SSE_REGNUM): Update definition..
	* i386v-nat.c (register_u_addr): Update.
	* go32-nat.c (fetch_register): Update.
	(store_register): Update.

2002-11-07  Joel Brobecker  <brobecker@gnat.com>

	Preparation work to convert the hppa targets to multiarch partial.

	* hppa-tdep.c: Add new functions replacing macro bodies from
	config/pa/tm-hppa.h. These function will be used to initialize
	the gdbarch structure. Import some comments from tm-hppa.h,
	and place them where appropriate, to avoid loosing them when
	we cleanup this file.
	(hppa_reg_struct_has_addr): New function.
	(hppa_inner_than): New function.
	(hppa_stack_align): New function.
	(hppa_pc_requires_run_before_use): New function.
	(hppa_instruction_nullified): New function.
	(hppa_register_byte): New function.
	(hppa_register_virtual_type): New function.
	(hppa_store_struct_return): New function.
	(hppa_cannot_store_register): New function.
	(hppa_frame_args_address): New function.
	(hppa_frame_locals_address): New function.
	(hppa_smash_text_address): New function.
	(hppa_coerce_float_to_double): New function. Requires the inclusion
	of "language.h".

	* Makefile.in (hppa-tdep.o): Add dependency on language.h.

	* tm-hppa.h (REG_STRUCT_HAS_ADDR): Change the definition of this
	gdbarch-eligible macro to a call to the new associated function
	created in hppa-tdep.c.
	(INNER_THAN): Likewise.
	(STACK_ALIGN): Likewise.
	(PC_REQUIRES_RUN_BEFORE_USE): Likewise.
	(INSTRUCTION_NULLIFIED): Likewise.
	(REGISTER_BYTE): Likewise.
	(REGISTER_VIRTUAL_TYPE): Likewise.
	(STORE_STRUCT_RETURN): Likewise.
	(CANNOT_STORE_REGISTER): Likewise.
	(FRAME_ARGS_ADDRESS): Likewise.
	(FRAME_LOCALS_ADDRESS): Likewise.
	(SMASH_TEXT_ADDRESS): Likewise.
	(COERCE_FLOAT_TO_DOUBLE): Likewise.
	(ABOUT_TO_RETURN): Delete, as no longer used.

2002-11-07  Fernando Nasser  <fnasser@redhat.com>

	* printcmd.c (disassemble_command): Remove obsolete function.
	(_initialize_printcmd): Do not create disassemble command here.
	* cli/cli-cmds.c (disassemble_command): New function.  Implements
	disassemble command.
	(init_cli_cmds): Create disassemble command here instead.

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

	* MAINTAINERS: Add Daniel Jacobowitz to global maintainers list.

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

	* regcache.h (regcache_cooked_read_using_offset_hack)
	(regcache_cooked_write_using_offset_hack): Delete declarations.
	(register_changed): Delete declaration.
	* regcache.c (regcache_cooked_read_using_offset_hack)
	(regcache_cooked_write_using_offset_hack): Delete functions.
	(cooked_xfer_using_offset_hack): Delete function.
	(register_changed): Delete function.

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

	* macroscope.c: #include "complaints.h".
	(sal_macro_scope): Cope with filenames that appear in the symtabs,
	but not in the macro table.
	* Makefile.in (macroscope.o): Record dependency.

2002-11-07  Joel Brobecker  <brobecker@gnat.com>

	* PROBLEMS: Document gdb/816 (unable to read core file on alpha-osf).

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

	* regcache.c (deprecated_registers_fetched): Update.
	* regcache.h (deprecated_registers_fetched): Rename
	registers_fetched.
	* remote-vxsparc.c (vx_read_register): Update.
	* remote-vxmips.c (vx_read_register): Update.
	* remote-vx68.c (vx_read_register): Update.
	* irix5-nat.c (fetch_core_registers): Update.
	* mipsm3-nat.c (fetch_inferior_registers): Update.
	* sun3-nat.c (fetch_inferior_registers): Update.
	* symm-nat.c (fetch_inferior_registers): Update.
	* ns32knbsd-nat.c (fetch_inferior_registers): Update.
	(fetch_core_registers): Update.
	(fetch_kcore_registers): Update.
	* mips-nat.c (fetch_inferior_registers): Update.
	* corelow.c (get_core_registers): Update.
	* a68v-nat.c (fetch_inferior_registers): Update.

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

	Put in place the framework necessary for multiarching the hppa targets.
	* hppa-tdep.c (hppa_gdbarch_init): New function.
	(hppa_dump_tdep): New function.
	(_initialize_hppa_tdep): Register the hppa gdbarch init function and
	tdep structure dumper.
	* config/pa/tm-hppa.h (GDB_MULTI_ARCH): New macro, defined to 0
	until the multi-arching conversion has partially been completed.

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

	* valops.c (value_assign): Merge lval_register case into
	lval_reg_frame_relative.  Use frame_register and
	regcache_cooked_write instead of get_saved_register and
	write_register_bytes.  After flushing the register cache, try to
	re-select the selected frame.

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

	* regcache.h (deprecated_register_valid): Rename register_valid.
	* regcache.c: Update.
	* ia64-aix-nat.c: Update.
	* i386gnu-nat.c: Update.
	* alpha-nat.c: Update.
	* sparc-nat.c: Update.
	* lynx-nat.c: Update.
	* remote-mips.c: Update.

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

	* hppa-tdep.c (_initialize_hppa_tdep): Move function body
	to end of file, to be more consistent with the pratice followed
	by other targets.

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

	* infcmd.c: Include "reggroups.h" and <ctype.h>.
	(print_float_info): Print registers in float_reggroup.
	(print_vector_info): Print registers in vector_reggroup.
	(default_print_registers_info): When all, print registers in
	all_reggroup.  Otherwize, print registers in general_reggroup.
	(registers_info): Rewrite.  Add support for register groups.
	Eliminate a goto.

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

	* symtab.c (methods_info): Delete. It has been ifdeffed out for
	ages.
	(symtab_symbol_info): Remove eons old ifdeffed out code.
	(_initialize_symtab): Remove prehistoric disabled 'info methods'
	command.

2002-11-06  Theodore A. Roth  <troth@openavr.org>

	* c-exp.y: Add missing semi-colons.
	* f-exp.y: Add missing semi-colons.
	* m2-exp.y: Add missing semi-colons.
	* p-exp.y: Add missing semi-colons.
	Add empty action to start rule to avoid a type clash error when
	building with bison >= 1.50.

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

	* macrotab.h (struct macro_source_file): Doc fix.

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

	* varobj.c (child_exists, cplus_number_of_children): Change
	STREQ macro references to strcmp.
	(cplus_name_of_child): Change code to handle the fact that
	fields are not necessarily contiguous with regards to their 
	access control. This is a fix for PR gdb/792.

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

	* gdbarch.sh (GET_SAVED_REGISTER): Change to a predicate function.
	* gdbarch.h, gdbarch.c: Regnerate.
	* frame.h (frame_register): Declare.
	* frame.c (frame_register): New function.
	(get_saved_register): Test GET_SAVED_REGISTER_P before calling
	GET_SAVED_REGISTER, otherwize call
	generic_unwind_get_saved_register.
	(frame_register_read): Use frame_register instead of
	get_saved_register.

2002-11-05  Elena Zannoni  <ezannoni@redhat.com>
	
        From Jim Ingham  <jingham@apple.com>:
	* event-top.c (gdb_disable_readline): New function.
	(_initialize_event_loop): Move comment.

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

	* event-loop.c (start_event_loop): Add comment.
	Update copyright.

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

	* infcmd.c (default_print_registers_info): Do not call
	PRINT_REGISTER_HOOK.

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

	* sparc-tdep.c (sparc_print_register_hook): Make static.
	(sparc_print_registers_info): New function.
	(sparc_do_registers_info): New function.
	(sparclet_print_registers_info): New function.
	(sparclet_do_registers_info): New function.
	(do_sparc_print_registers_info): New function.
	(sparc_print_registers): New static function, clone of infcmd.c's
	default_print_registers_info.
	* config/sparc/tm-sparclet.h (PRINT_REGISTER_HOOK): Delete macro.
	(sparclet_do_registers_info): Declare.
	(DEPRECATED_DO_REGISTERS_INFO): Re-define.
	* config/sparc/tm-sparc.h (DEPRECATED_DO_REGISTERS_INFO):
	Re-define.
	(sparc_do_registers_info): Declare.
	(PRINT_REGISTER_HOOK): Delete macro.
	(sparc_print_register_hook): Delete declaration.

2002-11-05  David Carlton  <carlton@math.stanford.edu>

	* symtab.c (lookup_symbol_aux): Move chunks of code into separate
	functions.
	(lookup_symbol_aux_local): New function.
	(lookup_symbol_aux_symtabs): New function.
	(lookup_symbol_aux_psymtabs): New function.

2002-11-05  David Carlton  <carlton@math.stanford.edu>

	* symtab.c (lookup_symbol_aux): In minsym sections, don't use the
	previous values of 'objfile' and 'block'.

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

	* values.c (value_change_enclosing_type): Set 
	enclosing_type field correctly also for the case where 
	more memory needs to be allocated.

2002-11-03  Mark Kettenis  <kettenis@gnu.org>

	* i387-tdep.c (i387_print_float_info): Call fputs_filtered instead
	of puts_filtered.

	* i387-tdep.c (i387_print_float_info): Replace calls to
	register_read and deprecated_read_register_gen with calls to
	frame_register_read, and make the necessary adjustments to the
	surrounding code.

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

	* gdbarch.sh (register_reggroup_p): Allow default value.
	* gdbarch.h, gdbarch.c: Regenerate.

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

	* regcache.h: Add coment indicating replacements for deprecated
	functions.

2002-11-02  Andrew Cagney  <cagney@redhat.com>

	* reggroups.h, reggroups.c: New files.
	* regcache.c: Include "reggroups.h".
	(enum regcache_dump_what): Add `regcache_dump_groups'.
	(regcache_dump): Contract size of the "Type" column.  When
	specified, dump the register's groups.
	(maintenance_print_register_groups): New function.
	(_initialize_regcache): Add command `maint print register-groups'.
	* Makefile.in (COMMON_OBS): Add reggroups.o
	(SFILES): Add reggroups.c.
	(reggroups_h): Define.
	(regcache.o, gdbarch.o): Update dependencies.
	(reggroups.o): Specify dependencies.
	* gdbarch.sh (register_reggroup_p): Add pure multi-arch method.
	Add opaque declaration for `struct reggroup' in generated .h file.
	Include "reggroups.h" in generated .c file.
	gdbarch.h, gdbarch.c: Re-generate.

2002-11-02  Andrew Cagney  <cagney@redhat.com>

	* regcache.h (deprecated_read_register_gen): Rename
	read_register_gen.
	(deprecated_write_register_gen): Rename write_register_gen.
	* i387-tdep.c: Update.
	* x86-64-linux-nat.c: Update
	* wince.c: Update.
	* thread-db.c: Update.
	* win32-nat.c: Update.
	* mips-tdep.c: Update.
	* d10v-tdep.c: Update.
	* cris-tdep.c: Update.
	* remote-sim.c: Update.
	* remote-rdi.c: Update.
	* remote-rdp.c: Update.
	* frame.c: Update.
	* target.c: Update.
	* blockframe.c: Update.
	* x86-64-tdep.c: Update.
	* xstormy16-tdep.c: Update.
	* sh-tdep.c: Update.
	* s390-tdep.c: Update.
	* rs6000-tdep.c: Update.
	* sparc-tdep.c: Update.
	* i386-tdep.c: Update.
	* dwarf2cfi.c: Update.
	* regcache.c: Update.

2002-11-01  Joel Brobecker  <brobecker@gnat.com>

	New interix-specific files:
	* config/i386/nm-interix.h: New file.
	* config/i386/interix.mh: New file.
	* config/i386/interix.mt: New file.
	* i386-interix-nat.c: New file.
	* i386-interix-tdep.c: New file.

2002-11-01  Andrew Cagney  <cagney@redhat.com>

	* frame.h (deprecated_generic_get_saved_register): Rename
	generic_get_saved_register.
	* blockframe.c (deprecated_generic_get_saved_register): Update.
	* xstormy16-tdep.c (xstormy16_get_saved_register): Update.
	(xstormy16_frame_saved_register): Update.
	* sh-tdep.c (sh_gdbarch_init): Update.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
	* ia64-tdep.c (ia64_get_saved_register): Update.
	* cris-tdep.c (cris_gdbarch_init): Update.
	* config/m32r/tm-m32r.h (GET_SAVED_REGISTER): Update.
	* arm-tdep.c (arm_gdbarch_init): Update.

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

	* lin-lwp.c (lin_lwp_resume): Remove resume_all test for !step.

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

	* i386-linux-tdep.c (i386_linux_pc_in_sigtramp): Check for
	trampolines in sigaction.

2002-10-31  Andrew Cagney  <cagney@redhat.com>

	* h8300-tdep.c: Include "gdb_assert.h".
	(h8300_print_register): Add gdbarch, file and frame parameters.
	Use frame_read_unsigned_register to read the register's value.
	Use fprintf_filtered to display output.
	(h8300_print_registers_info): Replace h8300_do_registers_info.
	(h8300_gdbarch_init): Set print_registers_info.

2002-10-31  Andrew Cagney  <cagney@redhat.com>

	* frame.c (frame_read_unsigned_register): New function.
	(frame_read_signed_register): New function.
	* frame.h (frame_read_unsigned_register): Declare.
	(frame_read_signed_register): Declare.

2002-10-31  Andrew Cagney  <cagney@redhat.com>

	* h8500-tdep.c (h8500_print_registers_info): New static function,
	clone of infcmd.c's default_print_registers_info.
	(h8500_do_registers_info): New funtion.
	(h8500_print_register_hook): Rename print_register_hook, make
	static.

	* config/h8500/tm-h8500.h: Update copyright.
	(DEPRECATED_DO_REGISTERS_INFO): Define.
	(h8500_do_registers_info: Declare.
	(PRINT_REGISTER_HOOK): Delete macro.
	(print_register_hook): Delete function.

2002-10-31  Andrew Cagney  <cagney@redhat.com>

	* z8k-tdep.c (z8k_print_register_hook): Make static.
	(z8k_print_registers_info): New static function, clone of
	infcmd.c's default_print_registers_info.
	(z8k_do_registers_info): New function.  Wrap
	z8k_print_registers_info.
	* config/z8k/tm-z8k.h: Update copyright.
	(PRINT_REGISTER_HOOK): Delete macro.
	(z8k_print_register_hook): Delete declaration.
	(DEPRECATED_DO_REGISTERS_INFO): Define.
	(z8k_do_registers_info): Declare.

2002-10-30  Joel Brobecker  <brobecker@gnat.com>

	* hppa-tdep.c (find_function_in_inferior): Remove this extern,
	as this is already provided by value.h, and was actually causing
	a compilation error because of a conflict in parameter type
	declaration due to a missing const keyword.
	(low_text_segment_addres): Fix a compilation warning.

2002-10-29  Daniel Jacobowitz  <drow@mvista.com>

	* mips-linux-nat.c (mips_linux_cannot_fetch_register): Don't fetch
	registers without a name.
	(mips_linux_cannot_store_register): Don't store registers without
	a name.

2002-10-28  David Carlton  <carlton@math.stanford.edu>

	* symtab.c (find_addr_symbol): Delete.  (It was already commented
	out.)
	* symtab.h: Delete prototype for find_addr_symbol.

2002-10-26  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (DEPRECATED_DO_REGISTERS_INFO): Rename
	DO_REGISTERS_INFO.
	gdbarch.h, gdbarch.c: Re-generate.
	* infcmd.c (default_print_registers_info): Update reference.
	* mips-tdep.c (mips_gdbarch_init): Set deprecated_do_registers_info.
	(mips_dump_tdep): Do not print DO_REGISTERS_INFO.
	* sh-tdep.c (sh_gdbarch_init): Ditto.
	* mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
	* h8300-tdep.c (h8300_gdbarch_init): Ditto.

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

	* x86-64-tdep.c (x86_64_init_abi): Set init_extra_frame_info to
	cfi_init_extra_frame_info.
	* x86-64-tdep.h (x86_64_init_extra_frame_info): Remove prototype.
	* x86-64-linux-tdep.c (x86_64_init_extra_frame_info): Remove function.

	* x86-64-tdep.c (x86_64_init_abi): Add calls to override the i386
	target where necessary.  Add more comments and remove the ones
	that don't provide any useful information.

	* i386-tdep.c (i386_frame_saved_pc): Replace call to
	deprecated_read_register_dummy with
	frame_unwind_unsigned_register.

	* i386-tdep.c (i386_extract_struct_value_address): Use
	regcache_raw_read_unsigned instead of
	regcache_cooked_read_unsigned since we know that the register
	we're reading isn't a pseudo register.  Rename variable 'val' into
	the more descriptive 'addr'.

	* x86-64-tdep.c: Fix some formatting problems, mostly in comments.
	(x86_64_push_return_address): Add comment.
	(x86_64_pop_frame): Make static.
	(examine_argument): Clarify comment.
	(x86_64_skip_prologue): Make prolog_expact variable static.

	* dwarf2cfi.c: Fix some formatting problems.
	(context_cpy, read_encoded_pointer): Clarify comments.

	* x86-64-tdep.c (x86_64_breakpoint_from_pc): Constify.
	(x86_64_init_abi): Move set_gdbarch_* calls that overlap with the
	i386 target back into x86_64_gdbarch_init.  Add some comments and
	remove meaningless ones.

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

	* complaints.h (struct deprecated_complaint): Rename `struct
	complaint'.
	* complaints.c (complain): Update.
	* remote-vx68.c, remote-vxmips.c, remote-vxsparc.c: Delete
	incorrect comment indicating that "symfile.h" was being included
	for the `struct complaint' definition.
	* remote-vx.c: Update.
	* objc-lang.c: Update.
	* xcoffread.c: Update.
	* hpread.c: Update.
	* mdebugread.c: Update.
	* stabsread.c: Update.
	* dwarf2read.c: Update.
	* dwarfread.c: Update.
	* elfread.c: Update.
	* coffread.c: Update.
	* stabsread.h: Update.
	* dbxread.c: Update.
	* buildsym.c: Update.
	* gdbtypes.c: Update.
	* macrotab.c: Update.

2002-10-25  Mark Kettenis  <kettenis@gnu.org>

	* x86-64-tdep.c (x86_64_gdbarch_init): Make a bit more similar to
	the version in i386-tdep.c.  Move set_gdbarch_* calls out into...
	(x86_64_init_abi): ...new function.

	* Makefile.in (i386v-nat.o): Add $(i386_tdep_h).
	* i386v-nat.c: Include "i386-tdep.h".

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

	* gdbtypes.c (address_space_name_to_int): Update.
	(address_space_int_to_name): Update.
	* gdbarch.sh (address_class_type_flags_to_name): Change to a pure
	multi-arch predicate.
	(address_class_name_to_type_flags): Ditto.
	* gdbarch.h, gdbarch.c: Re-generate.
	
	* MAINTAINERS: Check all warnings when h8300hms and alpha-elf.

2002-10-24  Martin M. Hunt  <hunt@redhat.com>

	* utils.c (string_to_core_addr): Revert patch from 11 Oct.

2002-10-24  Elena Zannoni  <ezannoni@redhat.com>

	* symtab.h (INIT_SAL): Delete macro.
	(init_sal): Export.
	* symtab.c (init_sal): New function.

	* ada-lang.c (ada_finish_decode_line_1): Change INIT_SAL macro
	to init_sal function call.
	(find_sal_from_funcs_and_line): Ditto.
	(all_sals_for_line): Ditto. 
	* breakpoint.c (create_internal_breakpoint): Ditto. 
	(create_fork_vfork_event_catchpoint): Ditto. 
	(create_exec_event_catchpoint): Ditto. 
	(parse_breakpoint_sals): Ditto. 
	(watch_command_1): Ditto. 
	(handle_gnu_4_16_catch_command): Ditto.
	(clear_command): Ditto. 
	* hppa-tdep.c (child_enable_exception_callback): Ditto. 
	* infcmd.c (run_stack_dummy): Ditto. 
	* infrun.c (process_event_stop_test): Ditto.
	(check_sigtramp2): Ditto.
	(step_over_function): Ditto. 
	* linespec.c (decode_line_2): Ditto. 
	(decode_line_1): Ditto. 
	* source.c (line_info): Ditto. 
	* symtab.c (find_pc_sect_line): Ditto.

2002-10-24  Michal Ludvig  <mludvig@suse.cz>

	* dwarf2cfi.c (struct context)
	(struct context_reg): Moved to dwarf2cfi.h
	(context_alloc, frame_state_alloc, context_cpy):
	Made extern instead of static, removed prototypes.
	* dwarf2cfi.h (struct context)
	(struct context_reg): New, moved from dwarf2cfi.c
	(context_alloc, frame_state_alloc, context_cpy):
	New prototypes.
	* x86-64-linux-tdep.c (x86_64_linux_sigtramp_saved_pc):
	Changed from static to extern.
	(LINUX_SIGINFO_SIZE, LINUX_SIGCONTEXT_PC_OFFSET)
	(LINUX_SIGCONTEXT_FP_OFFSET)
	(LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Adjusted.
	(x86_64_linux_in_sigtramp, x86_64_linux_frame_chain)
	(x86_64_init_frame_pc, x86_64_init_extra_frame_info): New.
	* x86-64-tdep.c (x86_64_gdbarch_init): Several
	set_gdbarch_*() calls now use x86-64 specific functions 
	instead of DWARF2 CFI ones.
	* x86-64-tdep.h (x86_64_linux_in_sigtramp)
	(x86_64_linux_frame_chain, x86_64_init_frame_pc)
	(x86_64_init_extra_frame_info): New prototypes.
	
2002-10-23  David Carlton  <carlton@math.stanford.edu>

	* linespec.c: #include "parser-defs.h".
	Delete prototype for find_template_name_end.
	* Makefile.in (linespec.o): Depend on $(parser_defs_h).

2002-10-23  Jeff Johnston  <jjohnstn@redhat.com>

	* NEWS: add recent mi fixes.
	* varobj.c (struct varobj): Add new "updated" flag.
	(new_variable): Default "updated" flag to 0.
	(varobj_set_value): Set "updated" flag to 1 if value
	changes.
	(varobj_update): Check varobj "updated" flag before
	comparing old and refreshed values.  Fix for
	PR gdb/702.

2002-10-23  David Carlton  <carlton@math.stanford.edu>

	* parse.c (parse_exp_1): Use BLOCK_START.
	* x86-64-tdep.c (x86_64_skip_prologue): Use BLOCK_END,
	SYMBOL_BLOCK_VALUE.
	* objc-lang.c (find_methods): Use BLOCK_START, BLOCK_END.

2002-10-23  David Carlton  <carlton@math.stanford.edu>

	* symtab.c: Delete cplusplus_hint.
	Delete prototype for find_template_name_end.

2002-10-23  Elena Zannoni  <ezannoni@redhat.com>

	* symtab.h: Update comment.

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

	* printcmd.c (address_info): Restore quotes in output.
	* valops.c (value_of_local): Restore quotes in error message.

2002-10-23  Elena Zannoni  <ezannoni@redhat.com>

	* symtab.c (symbol_demangled_name): New function.
	* symtab.h (SYMBOL_DEMANGLED_NAME): Simplify macro, by
	turning most of it into a function.
	(symbol_demangled_name): Export.

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

	* valops.c (value_of_local): Restore quotes in error message.

2002-10-23  Elena Zannoni  <ezannoni@redhat.com>

	* symtab.c (symbol_init_language_specific): New function.
	* symtab.h (SYMBOL_INIT_LANGUAGE_SPECIFIC): Simplify macro, by
	turning most of it into a function.
	(symbol_init_language_specific): Export.

2002-10-23  David Carlton  <carlton@math.stanford.edu>

	* dwarf2read.c (dwarf_tag_name): Add DWARF 3 names.
	(dwarf_attr_name): Ditto.
	(dwarf_type_encoding_name): Ditto.
	(scan_partial_symbols): Descend into DW_TAG_namespace entries.
	(process_die): Handle DW_TAG_namespace,
	DW_TAG_imported_declaration, DW_TAG_imported_module.
	(read_namespace): New function.

2002-10-22  Joel Brobecker  <brobecker@gnat.com>

	* configure.in: Define NEW_PROC_API on Interix too.
	* configure: Regenerate.

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

	* configure: Regenerate using the proper version of autoconf.

2002-10-21  Elena Zannoni  <ezannoni@redhat.com>

	* findvar.c (read_var_value): Temporarily disable TLS code, until
	complete TLS support is added.

2002-10-21  Jim Blandy  <jimb@redhat.com>
	    Elena Zannoni  <ezannoni@redhat.com>

	* symtab.h (address_class): Re-add LOC_THREAD_LOCAL_STATIC
	for thread local storage locations.
	(struct symbol): Add objfile field.
	(SYMBOL_OBJFILE): Define.
	* dwarf2read.c (is_thread_local): New static variable.
	(new_symbol): If variable is in thread local fill in address class
	and objfile appropriately.
	(decode_locdesc): Recognize and handle DW_OP_GNU_push_tls_address
	stack operation.
	* printcmd.c (address_info): Print the information for thread
	local storage variable.
	* findvar.c (read_var_value): In case of thread local variable,
	defer to the target vector code to compute address.

2002-10-21  Elena Zannoni  <ezannoni@redhat.com>

        * solib-svr4.c (svr4_fetch_objfile_link_map): New function.
        * solib-svr4.h (svr4_fetch_objfile_link_map): Export.   

2002-10-21  Elena Zannoni  <ezannoni@redhat.com>

	* symtab.h (address_class):  Rename
	LOC_THREAD_LOCAL_STATIC to LOC_HP_THREAD_LOCAL_STATIC.
	* hpread.c (hpread_process_one_debug_symbol): Ditto.
	* printcmd.c (address_info): Ditto.
	* findvar.c (symbol_read_needs_frame, read_var_value): Ditto.

2002-10-20  Mark Kettenis  <kettenis@gnu.org>

	* i386bsd-nat.c (i386bsd_dr_set, i386bsd_dr_get_status): Use
	DBREG_DRX macro to acces debug registers.

	* Makefile.in (i386obsd-tdep.o): New target.

	* solib-sunos.c: Include "bcache.h" and "regcache.h".
	* Makefile.in (solib-sunos.o): Add $(bcache_h) and $(regcache_h).

	* configure.tgt (i[3456]86-*-openbsd*): Set gdb_target to obds.
	* config/i386/obsd.mt: New file.
	* i386bsd-nat.c (_initialize_i386bsd_nat): Introduce
	i386obsd_sc_pc_offset and i386obsd_sc_sp_offset;
	* i386obsd-nat.c (_initialize_i386obsd_nat): Set
	i386obsd_sigtramp_start and i386obsd_sigtramp_end instead of
	i386nbsd_sigtramp_start and i386nbsd_sigtramp_end.
	* i386obsd-tdep.c: New file.

2002-10-19  Adam Fedor  <fedor@gnu.org>

	* objc-exp.y (name_not_typename): Fix invalid comment.	

2002-10-20  Mark Kettenis  <kettenis@gnu.org>

	* solib-sunos.c (allocate_rt_common_objfile): Use bcache_xmalloc
	to allocate partial syms and macro byte caches.

2002-10-18  David Carlton  <carlton@math.stanford.edu>

	* symtab.h: Delete 'struct source' and 'struct sourcevector'.

2002-10-18  Adam Fedor  <fedor@gnu.org>

	* stabsread.c (find_name_end): New function.
	(define_symbol): Use it.

2002-10-18  Daniel Jacobowitz  <drow@mvista.com>

	* config/alpha/nm-fbsd.h (CANNOT_STEP_BREAKPOINT): Define to 1.
	* config/alpha/nm-linux.h (CANNOT_STEP_BREAKPOINT): Define to 1.
	* config/alpha/nm-nbsd.h (CANNOT_STEP_BREAKPOINT): Define to 1.
	* config/alpha/nm-osf.h (CANNOT_STEP_BREAKPOINT): Define to 1.

2002-10-17  David Carlton  <carlton@math.stanford.edu>

	* symfile.h: Add opaque declaration for struct obstack.
	Declare obsavestring to take a const char *.
	* symfile.c (obsavestring): Make first argument a const char *.

2002-10-16  Adam Fedor  <fedor@gnu.org>

	* breakpoint.c (parse_breakpoint_sals): Ignore ObjC method
	names when matching breakpoints in current file.

2002-10-16  Kevin Buettner  <kevinb@redhat.com>

	* dwarf2read.c (dwarf2_invalid_pointer_size): New complaint.
	(read_tag_pointer_type): Add address class support.
	* gdbarch.sh (ADDRESS_CLASS_TYPE_FLAGS)
	(ADDRESS_CLASS_TYPE_FLAGS_TO_NAME, ADDRESS_CLASS_NAME_TO_TYPE_FLAGS):
	New methods.
	* gdbarch.h, gdbarch.c: Regenerate.
	* gdbtypes.c (address_space_name_to_int, address_space_int_to_name)
	(make_type_with_address_space, recursive_type_dump): Add address
	class support.
	* gdbtypes.h (TYPE_FLAG_ADDRESS_CLASS_1, TYPE_FLAG_ADDRESS_CLASS_2)
	(TYPE_FLAG_ADDRESS_CLASS_ALL, TYPE_ADDRESS_CLASS_1)
	(TYPE_ADDRESS_CLASS_2, TYPE_ADDRESS_CLASS_ALL): New defines

2002-10-16  Klee Dienes  <kdienes@apple.com>

	* stabsread.c (read_tilde_fields): Use name[sizeof(vptr_name)-2]
	to get the last character of a char[] buffer, not
	name[sizeof(vptr_name)-1].

2002-10-14  Adam Fedor  <fedor@gnu.org>

	* symtab.h: New objc_specific struct.
	(SYMBOL_INIT_LANGUAGE_SPECIFIC): Handle ObjC.
	(SYMBOL_DEMANGLED_NAME): Likewise.

2002-10-14  Adam Fedor  <fedor@gnu.org>

	* symfile.c (init_filename_language_table): Add ObjC file extension.

2002-10-14  Adam Fedor  <fedor@gnu.org>

	* utils.c (puts_filtered_tabular): New function.
	(fprintf_symbol_filtered): Get ObjC demangled name.
	* defs.h (puts_filtered_tabular): Declared.

2002-10-14  Kevin Buettner  <kevinb@redhat.com>

	* c-lang.h (c_type_print_varspec_prefix): Delete.
	* c-typeprint.c (c_type_print_varspec_prefix): Make static.  Add
	``need_post_space'' parameter.  Adjust all callers.

2002-10-14  Daniel Jacobowitz  <drow@mvista.com>  
 
	* config/mips/nm-irix4.h (HAVE_NONSTEPPABLE_WATCHPOINT): Define to 1.
	* config/mips/nm-irix5.h (HAVE_NONSTEPPABLE_WATCHPOINT): Likewise.
	* config/mips/tm-embed.h (HAVE_NONSTEPPABLE_WATCHPOINT): Likewise.
	* config/pa/nm-hppah.h (HAVE_NONSTEPPABLE_WATCHPOINT): Likewise.

2002-10-13  Adam Fedor  <fedor@gnu.org>

	* source.c (print_source_lines): Update comments.

2002-10-13  Adam Fedor  <fedor@gnu.org>

	* valops.c (value_of_local): New function.
	(value_of_this): Use it.
	* value.h (value_of_local): Declared.

2002-10-13  Adam Fedor  <fedor@gnu.org>

	* parse.c: (length_of_subexp, prefixify_subexp): Handle
	OP_MSGCALL, OP_SELECTOR, OP_NSSTRING, and OP_SELF.

2002-10-12  Adam Fedor  <fedor@gnu.org>

	* language.c (binop_result_type): Add language_objc to case.
        (integral_type): Likewise.
        (character_type): Likewise.
        (string_type): Likewise.
        (boolean_type): Likewise.
        (structured_type): Likewise.
        (binop_type_check): Likewise.

2002-10-11  Adam Fedor  <fedor@gnu.org>

	* printcmd.c (address_info): Print 'self' for ObjC.

2002-10-11  Adam Fedor  <fedor@gnu.org>

	* expression.h: New ops OP_NSSTRING, OP_SELECTOR, OP_MSGCALL, and
	OP_SELF.

2002-10-11  Adam Fedor  <fedor@gnu.org>

	* language.h (CAST_IS_CONVERSION): Add language_objc.

2002-10-11  Adam Fedor  <fedor@gnu.org>

	* defs.h (enum language): Add language_objc.

2002-10-11  Klee Dienes  <kdienes@apple.com>

        * corefile.c (read_memory_typed_address): New function.
        * gdbcore.h (read_memory_typed_address): Add prototype.
        * blockframe.c (sigtramp_saved_pc): Use read_memory_typed_address
	to read a value destined for a CORE_ADDR, not read_memory_integer.
        * f-valprint.c (f77_get_dynamic_upperbound): Ditto.
        (f77_get_dynamic_lowerbound): Ditto.

2002-10-11  Martin M. Hunt  <hunt@redhat.com>

	* utils.c (string_to_core_addr): After turning string into
	a number, convert to a CORE_ADDR using INTEGER_TO_ADDRESS
	which will do necessary sign-extension, etc.

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

	* c-exp.y (THIS): Delete token and grammar rule.
	(yylex): Don't return THIS.
	* cp-valprint.c (vtbl_ptr_name_old): Delete.
	(cp_is_vtbl_ptr_type): Don't check vtbl_ptr_name_old.
	* demangle.c (cplus_markers): Update comment.  Put '$'
	first.  Remove CPLUS_MARKER.
	(_initialize_demangler): Don't call set_cplus_marker_for_demangling.
	* jv-exp.y (THIS): Delete token and grammar rule.
	(yylex): Don't return THIS.
	* mips-tdep.c (mips_dump_tdep): Don't dump CPLUS_MARKER.
	* objc-exp.y (THIS): Delete token and grammar rule.
	(yylex): Don't return THIS.
	* p-exp.y (yylex): Remove reference to CPLUS_MARKER.
	* stabsread.c (vptr_name, vb_name): Replace CPLUS_MARKER with '$'.
	(read_member_functions): Likewise for opname.
	(read_tilde_fields): Use is_cplus_marker.

	* defs.h (CPLUS_MARKER): Don't define.
	* config/tm-sysv4.h (CPLUS_MARKER): Likewise.
	* config/i386/xm-i386sco.h (CPLUS_MARKER): Likewise.
	* config/mips/tm-irix3.h (CPLUS_MARKER): Likewise.
	* config/mips/tm-irix6.h (CPLUS_MARKER): Likewise.
	* config/rs6000/tm-rs6000.h (CPLUS_MARKER): Likewise.

	* config/i386/tm-i386v4.h: Delete file.
	* config/djgpp/fnchange.lst: Delete tm-i386v4.h.
	* config/i386/tm-i386sol2.h: Include "i386/tm-i386.h" instead.
	* config/i386/tm-i386v42mp.h: Include "i386/tm-i386.h" instead.
	* config/i386/tm-ptx.h: Include "i386/tm-i386.h" instead.
	* config/i386/i386gnu.mt (TM_FILE): Use tm-i386.h.
	* config/i386/i386sco5.mt (TM_FILE): Likewise.
	* config/i386/i386v4.mt (TM_FILE): Likewise.
	* config/i386/ncr3000.mt (TM_FILE): Likewise.

2002-10-10  Marko Mlinar  <markom@opencores.org>

	* infrun.c (resume): Convert #ifdef HAVE_NONSTEPPABLE_WATCHPOINT into C,
	accidentially not commited 2002-10-09
	* gdbarch.h, gdbarch.c: Re-generate.

2002-10-09  Marko Mlinar  <markom@opencores.org>

	* infrun.c (resume): Convert #ifdef HAVE_NONSTEPPABLE_WATCHPOINT into C.
	* gdbarch.sh (HAVE_NONSTEPPABLE_WATCHPOINT): Add.
	* gdbarch.h, gdbarch.c: Re-generate.

2002-10-08  Petr Sorfa <petrs@caldera.com>

	Revised and re-submitted by John Wolfe <jlw@caldera.com>

	Move the Dwarf 2 abbrev table to a per-compilation-unit structure,
	so we can work on more than one compilation unit at a time.  This
	helps prepare GDB to handle inter-CU die references.
	* dwarf2read.c (ABBREV_HASH_SIZE): moved definition forward in
	the code to be defined before struct comp_unit_head.
	(comp_unit_head): Added new members - offset, cu_head,
	begin_die, next and dwarf2_abbrevs.
	(dwarf2_abbrevs): Removed single static var; now member of
	struct comp_unit_head.
	dwarf2_build_psymtabs_hard): Complete new struct comp_unit_head
	members.
	(psymtab_to_symtab_1): Changed to work with the new
	struct comp_unit_head.
	(dwarf2_read_abbrevs): Now accepts a cu_header parameter and
	constructs the dwarf2_abbrevs[] inside the cu_header.
	(dwarf2_empty_abbrev_table): Now expects a ptr to a
	dwarf2_abbrev table to clean up.
	(dwarf2_lookup_abbrev): Now accepts a cu_header parameter and
	handling of dwarf2_abbrevs inside the cu_header.
	(read_partial_die): Now supports the call to the new
	dwarf2_lookup_abbrev.
	(read_full_die): Now supports the call to the new
	dwarf2_lookup_abbrev.

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

	* Makefile.in (install-gdbtk): Add missing continuation backslash to
	insure that shell variables, such as "transformed_name" are propagated
	to later shell statements in rule.

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

	* config/i386/nm-i386sco.h: Add protection against
	multiple-inclusion.  Include "i386/nm-i386v.h".
	(REGISTER_U_ADDR): Remove define.
	(i386_register_u_addr): Remove prototype.

2002-10-04  Michael Snyder  <msnyder@redhat.com>

	* m32r-stub.c (handle_exception): Make sure exception is "trap"
	before treating it as a single-step event.

2002-10-03  Adam Fedor  <fedor@gnu.org>

	* objc-lang.c: ARI fixes.  Change string.h to gdb_string.h.
	(objc_demangle): Remove assignment in if statements, Replace
	free with xfree.
	(add_msglist): Likewise.
	(end_msglist): Likewise.
	(complare_selectors): Likewise.
	(selectors_info): Likewise.
	(compare_classes): Likewise.
	(classes_info): Likewise.
	(print_object_command): Likewise.
	(find_objc_msgcall_submethod): Replace PTR with void *.
	* objc-lang.h: Remove check for __STDC__.

2002-10-03  Jeff Johnston  <jjohnstn@redhat.com>

	* ui-out.h (ui_out_field_fmt_int): New prototype.
	* ui-out.c (ui_out_field_fmt_int): New function allowing specification
	of field width and alignment.
	* stack.c (print_frame_info_base): When printing frame level, use
	ui_out_field_fmt_int with a width of 2 and left alignment.  Fix for
	PR gdb/192

2002-10-03  Jeff Johnston  <jjohnstn@redhat.com>

	* MAINTAINERS: Add self to Write After Approval list.

2002-10-02  Elena Zannoni  <ezannoni@redhat.com>

	* infcmd.c (interrupt_target_command_wrapper): Delete.
	(interrupt_target_command): Make non static.
	(nofp_registers_info): Make static.
	* stack.c (return_command_wrapper): Delete.
	(return_command): Make non static.

2002-10-02  Elena Zannoni  <ezannoni@redhat.com>

	* event-top.c (gdb_setup_readline): New function. Code moved from
	_initialize_event_loop().
	(_initialize_event_loop): Call gdb_setup_readline().

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

	* infrun.c (resume): Convert #ifdef CANNOT_STEP_BREAKPOINT into C.
	* gdbarch.sh (CANNOT_STEP_BREAKPOINT): Add.
	* gdbarch.h, gdbarch.c: Re-generate.

2002-10-02  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR gdb/778
	* gdbtypes.c (fill_in_vptr_fieldno): Call check_typedef
	before recursing.
	* gnu-v3-abi.c (gnuv3_virtual_fn_field): Check return value
	of fill_in_vptr_fieldno.

2002-10-02  Elena Zannoni  <ezannoni@redhat.com>

	* inferior.h (registers_info, stepi_command, nexti_command,
	continue_command, interrupt_target_command): Export from infcmd.c.
	* frame.h (args_info, selected_frame_level_changed_hook,
	return_command): Export from stack.c.
	* v850ice.c (stepi_command, nexti_command, continue_command): use
	prototypes from inferior.h.
	* tracepoint.c (registers_info, args_info, locals_info): Use
	prototypes from frame.h and inferior.h.
	* Makefile.in (mi-main.o): Add dependency on frame.h.

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

	* rs6000-tdep.c (rs6000_store_struct_return): Store struct_return
	value in register 3 adjusted by ppc_gp0_regnum.

	* rs6000-tdep.c (skip_prologue): Bias alloca_reg by ppc_gp0_regnum.

2002-10-02  Marko Mlinar <markom@opencores.org>

        * MAINTAINERS: Add myself to the Write After Approval list.

2002-10-01  Alexandre Oliva  <aoliva@redhat.com>

	* mips-tdep.c (mips_find_abi_section): .mdebug.abi64 is the name
	of the section for the N64 ABI, fixed.

	* config/mips/tm-irix6.h: Include solib.h.

2002-10-01  Elena Zannoni  <ezannoni@redhat.com>

	* dwarf2read.c (dwarf_stack_op_name): Recognize more dwarf3 and
	GNU operators.

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

	* NEWS: Mention that MI syntax, selected by "mi" changed to "mi2"
	and that "mi0" syntax has been removed.

2002-09-30  David Carlton  <carlton@math.stanford.edu>

	* Makefile.in (ppc-sysv-tdep.o): Depend on gdb_string_h.
	* ppc-sysv-tdep.c: #include "gdb_string.h".
	* remote-sds.c (getmessage): Add semicolon after 'retry' label to
	pacify GCC.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): For powerpc:7400, fix
	"vrsave"'s register number.

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

	* mips-tdep.c (mips_frame_saved_pc): When a generic dummy frame,
	use frame_unwind_signed_register to obtain the PC.
	(mips_frame_chain): Handle a generic dummy frame.
	(mips_init_extra_frame_info): When a generic dummy frame, don't
	re-compute the frame base.
	(mips_pop_frame): Handle generic dummy frames.
	(mips_gdbarch_init): When generic dummy frames, set
	use_generic_dummy_frames, push_dummy_frame to
	generic_push_dummy_frame, pc_in_call_dummy to
	generic_pc_in_call_dummy, and save_dummy_frame_top_of_stack to
	generic_save_dummy_frame_tos.

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

	* blockframe.c (generic_find_dummy_frame): Rewrite.  Only test
	against TOP when TOP was explictly set.
	(generic_push_dummy_frame): Set TOP to zero.

2002-09-30  Elena Zannoni  <ezannoni@redhat.com>

	* event-loop.c (start_event_loop): Rename variable 'result' to
	'gdb_result', to avoid conflicts with upcoming intepreters changes.

2002-09-30  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh (selected_thread_changed): New event.
	* gdb-events.c: Regenerated.
	* gdb-events.h: Regenerated.

2002-09-30  Hans-Peter Nilsson  <hp@bitrange.com>

	* MAINTAINERS: Add self to Write After Approval list.

2002-09-30  Fernando Nasser  <fnasser@redhat.com>

	* disasm.c: New file.  
	* disasm.h: New file.  
	* mi/mi-cmd-disas.c (gdb_dis_asm_read_memory): Moved to disasm.c.
	(compare_lines): Ditto.
	(dump_insns): Ditto.
	(do_mixed_source_and_assembly): Moved to disasm.c. Added uiout
	argument.
	(do_assembly_only): Ditto.
	(do_disassembly): Renamed to gdb_disassembly and moved to
	disasm.c.  Sdded uiout argument.
	* Makefile.in: Add new files.  Reorder SFILES list. Update
	dependencies.  Include libgdb.a later in the insight executable.

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

	* config/djgpp/fnchange.lst: Rename bfd/elf64-alpha.c and
	bfd/elf64-alpha-fbsd.c.

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

	* config/djgpp/fnchange.lst: Rename i386gnu-nat.c and
	i386gnu-tdep.c.

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

	* gnu-nat.h (debug): Use __FILE__ and __LINE__ instead of
	__FUNCTION__.
	* gnu-nat.c (do_mach_notify_no_senders): Replace __FUNCTION__ with
	function name.
	(do_mach_notify_port_deleted, do_mach_notify_msg_accepted): Ditto.
	(do_mach_notify_port_destroyed, do_mach_notify_send_once): Ditto.
	(S_proc_setmsgport_reply, S_proc_getmsgport_reply): Ditto.
	(S_msg_sig_post_reply): Ditto.
	
2002-09-28  Corinna Vinschen  <vinschen@redhat.com>

	* sh-tdep.c (sh_use_struct_convention): Use definition according
	to ABI.
	(sh_push_arguments): Store in register with correct endianess.
	(sh_default_store_return_value): Ditto.
	(sh_gdbarch_init): Set sizeof long double to 8.

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

	* defs.h: Move inclusion of "ansidecl.h" before "gdb_locale.h".
	Fix some whitespace problems.

2002-09-27  David Carlton  <carlton@math.stanford.edu>

	* Makefile.in (cris-tdep.o): Depend on gdb_string_h.
	(mcore-tdep.o): Ditto.
	(ns32k-tdep.o): Ditto.
	(ns32knbsd-tdep.o): Ditto.
	(sh3-rom.o): Ditto.
	(vax-tdep.o): Ditto.
	* cris-tdep.c: #include "gdb_string.h"
	* mcore-tdep.c: Ditto.
	* ns32k-tdep.c: Ditto.
	* ns32knbsd-tdep.c: Ditto.
	* sh3-rom.c: Ditto.
	* vax-tdep.c: Ditto.

2002-09-27  David Carlton  <carlton@math.stanford.edu>

	* config/djgpp/fnchange.lst: Add entries for
	gdb/testsuite/gdb.c++/m-static files.

2002-09-27  Jim Wilson  <wilson@redhat.com>

	* MAINTAINERS: Add myself to the Write After Approval list.

2002-09-26  Martin M. Hunt  <hunt@redhat.com>

	* mips-tdep.c (find_proc_desc): Initialize startaddr.


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

	* rs6000-tdep.c (rs6000_frame_chain): Don't chain past the dummy
	frame.

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

	* rs6000-tdep.c (rs6000_extract_struct_value_address): Return 0.
	(rs6000_struct_return_address): Delete variable.
	(rs6000_store_struct_return): Update.
	(rs6000_gdbarch_init): Set extract_struct_value_address instead of
	deprecated_extract_struct_value_address.
	(rs6000_frame_align): New function.
	(rs6000_gdbarch_init): Set frame_align.

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

	From Grace Sainsbury <graces@redhat.com>:
	* Makefile.in (gdbtk-main.o): New target.
	(gdb.o): New target.
	(main_h): Define.
	(main.o): Update dependencies.
	(gdb$(EXEEXT)): Add gdb.o.
	(SUBDIR_GDBTK_SRCS): Add gdbtk-main.c.
	(SUBDIR_GDBTK_ALL, SUBDIR_GDBTK_UNINSTALL): Set.
	(SUBDIR_GDBTK_CLEAN): Set.
	(install-gdbtk): Install the insight binary.
	(uninstall-gdbtk): New target.
	(all-gdbtk, clean-gdbtk): New rule.
	* top.c (use_windows): Default to zero.
	* main.c: Include "main.h".
	(main): Delete.
	(struct captured_main_args): Delete.
	(gdb_main): New function.
	* main.h: New file.
	* gdb.c: New File.

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

	* frame.c: Include "gdb_string.h" and "builtin-regs.h".
	(frame_map_regnum_to_name): New function.
	(frame_map_name_to_regnum): New function.
	* frame.h (frame_map_name_to_regnum): Declare.
	(frame_map_regnum_to_name): Declare.
	* builtin-regs.c (builtin_reg_map_regnum_to_name): New function.
	* builtin-regs.h (builtin_reg_map_regnum_to_name): Declare.
	* parse.c: Do not include "builtin-regs.h".
	(target_map_name_to_register): Delete function.
	(write_dollar_variable): Use frame_map_name_to_regnum.
	* parser-defs.h (target_map_name_to_register): Delete declaration.
	* expprint.c: Include "frame.h".
	(print_subexp): Use frame_map_regnum_to_name.
	* eval.c (evaluate_subexp_standard): Use frame_map_regnum_to_name.
	* infcmd.c (registers_info): Use frame_map_name_to_regnum.

2002-09-25  Andrew Cagney  <ac131313@redhat.com>

	* rs6000-tdep.c (rs6000_frame_saved_pc): If the link register
	wasn't saved, and the next innermost frame is a dummy, return the
	dummy frame's link register.

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

	Fix from Paul Breed:
	* main.c (captured_main): Add a `break' after the case for 'b'.

2002-09-24  Keith Seitz  <keiths@redhat.com>

	* varobj.c (c_type_of_child): Use get_target_type instead
	of TYPE_TARGET_TYPE.

2002-09-22  Fernando Nasser  <fnasser@redhat.com>

	* source.c (get_current_or_default_source_symtab_and_line): Remove
	function.
	(set_default_source_symtab_and_line): New function. Attempts to
	determine a source file to list lines from if one is not currently
	defined.
	(get_current_source_symtab_and_line): Initialize sal.pc and
        sal.end fields.
	(set_current_source_symtab_and_line): Mark argument as const.
	* source.h: Update declarations and comments.
	* linespec.c (decode_line_1): Replace call to removed routine above.
	* stack.c (print_frame_info_base): Ditto.
	* cli/cli-cmds.c (edit_command): Ditto.
	(list_command): Ditto.

2002-09-22  Fernando Nasser  <fnasser@redhat.com>

	* source.c (get_current_or_default_source_symtab_and_line): Initialize
	sal.pc and sal.end fields.
	(get_current_or_default_source_symtab_and_line): Ditto.
	* breakpoint.c (parse_breakpoint_sals): Use correct accessor function
	so we do not cause a new source symtab to be searched for (reverting an
	unintentional change from the 2002-09-20 patch).
	* scm-lang.c (scm_unpac): Ditto.

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

	* complaints.c (symfile_explanations): Remove new-line from
	``isolated_message''.
	(vcomplaint): When ISOLATED_MESSAGE, force a line break.
	(clear_complaints): When a SUBSEQUENT_MESSAGE, force a line break.

2002-09-20  Nick Clifton  <nickc@redhat.com>
	
	* NEWS: Announce that V850EA ISA is no longer supported.
        * v850-tdep.c: Remove reference to bfd_mach_v850ea.

2002-09-20  David Carlton  <carlton@math.stanford.edu>

	* Makefile.in (c-lang.o): Correct dependencies.
	(utils.o): Gather dependencies.
	(charset.o): Move.
	* c-lang.c: #include "gdb_string.h"

2002-09-20  Fernando Nasser  <fnasser@redhat.com>

	From 2002-07-02  George Helffrich <george@gly.bris.ac.uk>
	* cli/cli-cmds.c (list_command): New function.  Implements the new
	cli edit command.
	(_init_cli_cmds): Add new command definition.
	* gdb.1: Document edit command.
	* doc/gdb.texinfo: Document edit command.

2002-09-20  Fernando Nasser  <fnasser@redhat.com>

	* source.c: Make global variables current_source_symtab and
	current_source_line static.
	(list_command): Moved to cli/cli-cmds.c.
	(ambiguous_line_spec): Moved to cli/cli-cmds.c.
	(get_first_line_listed): New accessor function.
	(get_lines_to_list): New accessor function.
	(get_current_source_symtab_and_line): New function. Retrieves the
	position in the source code that we consider current.
	(get_current_or_default_source_symtab_and_line): New function.
	Like the above but attempts to determine a default position if one
	is not currently defined.
	(set_current_source_symtab_and_line): New function. Sets the source
	code position considered current and returns the previously set one.
	(clear_current_source_symtab_and_line): Reset stored information about
	a current source line.
	(_initialize_source): Remove registration for the "list" command and
	its alias.
	* source.h: Add declarations for the new functions above.
	* symtab.h: Remove declarations for the global variables mentioned
	above.
	* breakpoint.c (parse_breakpoint_sals): Use accessor functions to
	obtain current source line.
	* linespec.c (decode_line_1): Ditto.
	* macroscope.c (default_macro_scope): Ditto.
	* scm-lang.c (scm_unpac): Ditto.
	* stack.c (print_frame_info_base): Ditto.
	* symfile.c (clear_symtab_users): Ditto.
	* symtab.c (decode_line_spec): Ditto.
	* cli/cli-cmds.c (list_command): Moved here from source.c.
	(ambiguous_line_spec): Moved here from source.c.
	(_init_cli_cmds): Add definition for "list" and its alias.
	* Makefile.in: Update dependencies.

2002-09-20  Corinna Vinschen  <vinschen@redhat.com>

	* h8300-tdep.c (h8300_examine_prologue): Match saved regs location
	with what gcc thinks is correct.

2002-09-20  Corinna Vinschen  <vinschen@redhat.com>

	* h8300-tdep.c (h8300_examine_prologue): Fix loop for saved regs in
	multiple register push instruction.

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

	Add support for distinct host and target character sets.
	* charset.c, charset.h: New files.
	* c-exp.y: #include "charset.h".
	(yylex): Convert character and string literals to the target
	character set, before returning them as the semantic value of the
	token.
	* c-lang.c: #include "charset.h".
	(c_emit_char): Use charset-specific methods to recognize
	characters with backslash escape forms, to decide which characters
	to print literally and which to print using numeric escape
	sequences, and to convert target characters to host characters
	before printing.
	* utils.c: #include "charset.h".
	(no_control_char_error): New function.
	(parse_escape): Use charset-specific methods to recognize
	backslash escapes, parse `control character' notation, and convert
	characters from the host character set to the target character set.
	* configure.in: Set the default host character set.
	Check where to find iconv, and what its argument types might be.
	* acinclude.m4 (AM_ICONV): New macro, borrowed from GCC.
	* Makefile.in (SFILES): List charset.c.
	(COMMON_OBS): List charset.o.	
	(charset.o): New rule.
	(charset_h): New header dependency variable.
	(c-lang.o, utils.o, c-exp.tab.o): Note dependency on $(charset_h).
	(LIBICONV): New variable, set by configure.
	(CLIBS): Include $(LIBICONV) here.
	* aclocal.m4, config.in, configure: Regenerated.

2002-09-19  Joel Brobecker  <brobecker@gnat.com>

	* ada-exp.y: Add missing semicolons to end rules. Fixes a
	bison 1.35 warning.

2002-09-19  Richard Earnshaw  <rearnsha@arm.com>

	* gdb_mbuild.sh: New file.

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

	* objc-exp.y, objc-lang.h, objc-lang.c: Fix copyright notice.

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

	* breakpoint.c, c-exp.y, defs.h, elfread.c, expression.h,
	jv-exp.y, language.c, language.h, p-exp.y, parse.c, parser-defs.h,
	printcmd.c, source.c, stabsread.c, symfile.c, symtab.h, utils.c,
	valops.c, value.h: Revert previous change.
	
2002-09-18  Michael Snyder  <msnyder@redhat.com>

	Preliminary support for Objective-C:
	* defs.h (language_objc): New enum value.
	(puts_filtered_tabular): Declaration only, exported from utils.c.
	(skip_quoted): Delete, declared in completer.h.
	* c-exp.y: Include completer.h.
	* p-exp.y: Ditto.
	* jv-exp.y: Ditto.
	* expression.h (OP_MSGCALL, OP_SELECTOR, OP_SELF, OP_NSSTRING): 
	New operator enum values.
	* language.h (CAST_IS_CONVERSION): Test for language_objc.
	* language.c (binop_result_type): Handle language_objc case.
	(integral_type, character_type, string_type, boolean_type,
	structured_type, binop_type_check): Ditto.
	* symtab.h (SYMBOL_OBJC_DEMANGLED_NAME): Define.
	(struct objc_specific): Add to general_symbol_info.
	(SYMBOL_INIT_LANGUAGE_SPECIFIC): Add objc initialization.
	(SYMBOL_DEMANGLED_NAME): Handle objc case.
	* parser-defs.h (struct objc_class_str): New struct type.
	(start_msglist, end_msglist, add_msglist): Declaration only,
	exported from objc-lang.c.
	* value.h (value_of_local, value_nsstring, 
	call_function_by_hand_expecting_type): Exported from valops.c.
	* valops.c (find_function_addr): Export.
	(call_function_by_hand_expecting_type): New function.
	(value_of_local): New function.
	* symfile.c (init_filename_language_table): Add ".m" extension
	for Objective-C.
	* utils.c (puts_filtered_tabular): New function.
	(fprintf_symbol_filtered): Add objc demangling support (disabled).
	(set/show demangle): Extend help-string to refer to ObjC.
	* elfread.c (elf_symtab_read): Skip Objective-C special symbols.
	* stabsread.c (symbol_reference_defined): Objective-C symbols
	may contain colons: make allowances when scanning stabs strings
	for colons.
	(objc_find_colon): New function.
	* printcmd.c (address_info): If language == objc then print
	"self" instead of "this".
	* parse.c (length_of_subexp): Handle new operators OP_MSGCALL,
	OP_NSSTRING, and OP_SELF.
	(prefixify_subexp): Ditto.
	* source.c (print_source_lines): Mention objc in comment.
	* breakpoint.c (parse_breakpoint_sals): Recognize Objective-C
	method names.

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

	* complaints.h: Update copyright.
	(struct complaints): Declare.
	(struct complaint): Make `message' constant.
	(internal_complaint): Declare.
	(complaint): Declare.
	(complaint_root): Delete declaration.
	(symfile_complaints): Delete declaration.
	(struct complaints): Add opaque declaration.
	(clear_complaints): Add a complaints parameter.
	* complaints.c: Update copyright.
	(enum complaint_series): Define.
	(complaint_root): Delete.
	(struct complaints): Define.
	(complaint_sentinel, symfile_complaint_book): New variables.
	(symfile_explanations, symfile_complaints): New variables.
	New variables.
	(get_complaints): New function.
	(vcomplaint): New function.
	(complaint): New function.
	(internal_complaint): New function.
	(complain): Call vcomplain with symfile_complaint.
	(clear_complaints): Rewrite.
	(_initialize_complaints): Use add_setshow_command.
	* Makefile.in (complaints.o): Update dependencies.
	* symfile.c (syms_from_objfile): Add symfile_complaints parameter
	to call to clear_complaints.
	(new_symfile_objfile, reread_symbols): Ditto.
	(oldsyms_complaint): Delete.
	(empty_symtab_complaint, unknown_option_complaint): Delete.
	(free_named_symtabs): Use complaint instead of complain.

2002-09-18  Michael Snyder  <msnyder@redhat.com>

	Contributed by Apple Computer, Inc.  Merged with current sources
	by Adam Fedor <fedor@doc.com> [cagney].
	
	* objc-lang.c: First clean-up round: comments, indentation.
	* objc-lang.h: Ditto.
	* objc-lang.y: Ditto.

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

	* maint.c (maintenance_internal_error): Print the parameter as the
	error message.
	(maintenance_internal_warning): New function.
	(_initialize_maint_cmds): Add command `maint internal-warning'.

	* defs.h (internal_warning, internal_vwarning): Declare.
	* utils.c (struct internal_problem): Define.
	(internal_vproblem): New function.
	(internal_warning): New function.
	(internal_vwarning): New function.
	(internal_warning_problem, internal_error_problem): New variables.
	(internal_verror): Just call internal_vproblem.

2002-09-18  Michael Snyder  <msnyder@redhat.com>

	* objc-lang.c: New file, support for Objective-C.
	Preliminary check-in, not yet integrated into gdb.
	* objc-lang.h: New file.
	* objc-exp.y:  New file.

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

	* infrun.c (signal_stop_update): Convert definition to ISO C.
	(signal_print_update): Ditto.
	(signal_pass_update): Ditto.
	* inflow.c (terminal_save_ours): Ditto.

	* h8300-tdep.c (h8300_gdbarch_init): Use C instead of C++
	comments.
	
	* config/djgpp/fnchange.lst: Handle name clashes between
	bfd/coff-tic30.c, bfd/coff-tic4x.c, bfd/coff-tic54x.c and
	bfd/coff-tic80.c.

	* i386-linux-tdep.h: Fix tipo.

2002-09-18  Adam Fedor  <fedor@gnu.org>

	* MAINTAINERS: Add myself to the Write After Approval list.

2002-09-18  Jim Blandy  <jimb@redhat.com>

	* dbxread.c, mdebugread.c: Revert my change of 2001-10-23.  Moving
	texthigh and textlow to reader-specific structs caused
	objfile_relocate to miss them.  This is fixable, but the work that
	the change was supposed to prepare GDB for never got done anyway.

2002-09-18  David Carlton  <carlton@math.stanford.edu>

	* MAINTAINERS: Alphabetize Write After Approval list.

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

	Fix PR gdb/709
	* values.c (value_static_field): Call read_var_value.

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

	* valops.c (hand_function_call): Align the initial stack pointer
	and STRUCT_ADDR using frame_align.  When STRUCT_RETURN and
	FRAME_ALIGN_P, use STRUCT_ADDR to obtain the called function's
	return value.
	* mips-tdep.c (mips_frame_align): New function.
	(mips_gdbarch_init): Set frame_align.
	* gdbarch.sh (FRAME_ALIGN): New method.
	* gdbarch.h, gdbarch.c: Re-generate.

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

	* x86-64-linux-nat.c (x86_64_regmap): Added CS and SS
	registers.

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

	* NEWS: Mention that MIPS $fp behavior changed.
	* mipsnbsd-tdep.c (mipsnbsd_cannot_fetch_register): Delete
 	reference to FP_REGNUM.
	(mipsnbsd_cannot_store_register): Ditto.
	* mips-linux-nat.c: Update copyright.
 	(mips_linux_cannot_fetch_register): Delete reference to FP_REGNUM.
	(mips_linux_cannot_store_register): Ditto.
	* mips-linux-tdep.c (supply_gregset): Ditto.  Update copyright.
	* config/mips/tm-mips.h: Update copyright.
 	(FP_REGNUM): Delete macro.
	(MIPS_REGISTER_NAMES): Replace "fp" with "".
	* config/mips/tm-irix6.h (FP_REGNUM): Delete macro.
	* mips-tdep.c (mips_gdbarch_init): Set read_fp to mips_read_sp.
	(mips_r3041_reg_names, mips_r3051_reg_names)
 	(mips_r3081_reg_names): Replace "fp" with "".
	Fix PR gdb/480.

2002-09-17  Theodore A. Roth  <troth@verinet.com>

	* gdb/avr-tdep.c(avr_scan_prologue): Fix bad call to 
	generic_read_register_dummy() (PR gdb/703).
	(avr_push_return_address): #if 0 out unused vars.
	(avr_gdbarch_init): Enable use of avr_push_return_address().

2002-09-17  Michael Snyder  <msnyder@redhat.com>

	* m32r-stub.c (restore_and_return): Postpone restoring of PSW.
	RTE will take care of it.

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

	* arch-utils.c (legacy_virtual_frame_pointer): If FP_REGNUM is
	invalid, return SP_REGNUM.

2002-09-17  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_pop_frame): Read saved values of floating
	point registers without sign extension.

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

	* blockframe.c (deprecated_read_register_dummy): Rename
	generic_read_register_dummy.
	* frame.c (frame_unwind_signed_register): New function.
	(frame_unwind_unsigned_register): New function.
	* frame.h (frame_unwind_signed_register): Declare.
	(frame_unwind_unsigned_register): Declare.
	(deprecated_read_register_dummy): Rename
	generic_read_register_dummy.

	* h8300-tdep.c (h8300_frame_chain): Update.
	(h8300_frame_saved_pc): Update.
	* xstormy16-tdep.c (xstormy16_frame_saved_pc): Update.
	* rs6000-tdep.c (rs6000_frame_saved_pc): Update.
	* s390-tdep.c (s390_frame_saved_pc_nofix): Update.
	(s390_frame_chain): Update.
	* v850-tdep.c (v850_find_callers_reg): Update.
	(v850_frame_saved_pc): Update.
	* m32r-tdep.c (m32r_init_extra_frame_info): Update.
	(m32r_find_callers_reg): Update.
	(m32r_frame_saved_pc): Update.
	* sh-tdep.c (sh_find_callers_reg): Update.
	(sh64_get_saved_pr): Update.
	(sh_init_extra_frame_info): Update.
	(sh_init_extra_frame_info): Update.
	(sh64_init_extra_frame_info): Update.
	(sh64_init_extra_frame_info): Update.
	* mcore-tdep.c (mcore_find_callers_reg): Update.
	(mcore_frame_saved_pc): Update.
	(mcore_init_extra_frame_info): Update.
	* i386-tdep.c (i386_frame_saved_pc): Update.
	* ia64-tdep.c (ia64_frame_saved_pc): Update.
	(ia64_init_extra_frame_info): Update.
	(ia64_init_extra_frame_info): Update.
	* d10v-tdep.c (d10v_frame_saved_pc): Update.
	* cris-tdep.c (cris_init_extra_frame_info): Update.
	* avr-tdep.c (avr_frame_chain): Update.
	(avr_init_extra_frame_info): Update.
	(avr_frame_saved_pc): Update.
	* arm-tdep.c (arm_find_callers_reg): Update.
	(arm_init_extra_frame_info): Update.
	(arm_frame_saved_pc): Update.

2002-09-17  Tom Tromey  <tromey@redhat.com>

	* c-lang.c (c_emit_char): Don't treat \0 specially unless quoter
	is "'".

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

	* MAINTAINERS: Remove "non multi-arched" text from h8300.
	* h8300-tdep.c (h8300_next_prologue_insn) Renamed from
	NEXT_PROLOGUE_INSN.
	(h8300_examine_prologue): Call h8300_next_prologue_insn instead of
	NEXT_PROLOGUE_INSN.

2002-09-16  Joel Brobecker  <brobecker@gnat.com>

	* osfsolib.c: Remove file, replaced by solib-osf.c.
	* Makefile.in: Remove compilation rules for osfsolib.c.

2002-09-16  David Carlton  <carlton@math.stanford.edu>

	* cp-valprint.c (cp_print_class_method): Correct args to
	check_stub_method_group.

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

	* h8300-tdep.c: Multiarch.  Drop `set machine' command in favor of
	`set architecture'.  Unify naming convention of functions.
	(h8300_skip_prologue): Improve prologue analysis.
	(h8300_push_arguments): Rewritten to more closely match GCC's
	bizarre argument-passing behavior, along with the comment describing
	said behavior.
	* remote-hms.c (hms_regnames): Don't use NUM_REGS in definition.
	* config/h8300/tm-h8300.h: Multiarch.  Just keep stuff needed by
	sim, remote-e7000.c, remote-hms.c and remote.c

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

	* i386-tdep.c (gdb_print_insn_i386): Removed.
	(i386_print_insn): New function.
	(i386_gdbarch_init): Set print_insn to i386_print_insns.
	(_initialize_i386_tdep): Don't initialize tm_print_insn and
	tm_print_insn_info.

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

	* gdbtypes.c (check_stub_method_group): Initialize found_stub to
	zero.

2002-09-14  Corinna Vinschen  <vinschen@redhat.com>

	* arch-utils.c (legacy_pc_in_sigtramp): Move preprocessor expression
	for IN_SIGTRAMP to here.  Use IN_SIGTRAMP only if it's defined. 
	Guard usage of SIGTRAMP_START() by using SIGTRAMP_START_P.

2002-09-13  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (child_create_inferior): Honor 'tty' command.

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

	* gdbtypes.c (check_stub_method): Make static.
	(check_stub_method_group): New function.
	* gdbtypes.h: Update prototypes.
	* cp-support.c: New file.
	* cp-support.h: New file.

	* stabsread.c: Include "cp-abi.h" and "cp-support.h".
	(update_method_name_from_physname): New function.
	(read_member_functions): Correct method names for operators
	and v3 constructors/destructors.  Separate v2 constructors and
	destructors.
	* Makefile.in (stabsread.o): Update dependencies.
	(SFILES): Add cp-support.c.
	(COMMON_OBS): Add cp-support.o.
	(cp_support_h, cp-support.o): Add.

	* cp-valprint.c (cp_print_class_method): Call
	check_stub_method_group instead of check_stub_method.  Remove
	extraneous QUITs.
	* p-valprint.c (pascal_object_print_class_method): Likewise.
	* valops.c (search_struct_method): Likewise.
	(find_method_list, value_struct_elt_for_reference): Likewise.

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

	* gdbarch.sh (SIGTRAMP_END): Change to a predicate function.
	* gdbarch.h, gdbarch.c: Regenerate.

2002-09-13  Andrew Cagney  <ac131313@redhat.com>

	* frame.c (find_saved_register): Delete function.
	* frame.h (find_saved_register): Delete declaration.
	Fix PR gdb/631.

Fri Sep 13 14:59:55 2002  Andrew Cagney  <cagney@redhat.com>

	* mips-tdep.c (read_next_frame_reg): Re-hack using
 	frame_register_unwind.

Fri Sep 13 07:42:09 2002  Andrew Cagney  <cagney@redhat.com>

	* mips-tdep.c (mips_get_saved_register): Re-hack using
 	frame_register_unwind.

2002-09-12  Joel Brobecker  <brobecker@gnat.com>

	* gdbarch.sh (NAME_OF_MALLOC): New variable in the architecture
	vector. Will be useful for Interix.  
	* gdbarch.h, gdbarch.c: Regenerate.

	* valops.c (value_allocate_space_in_inferior): Replace hard-coded
	name of the malloc function by NAME_OF_MALLOC.

2002-09-12  Joel Brobecker  <brobecker@gnat.com>

	* value.h (find_function_in_inferior): Add const keyword to
	one of the parameters. Allows us to invoke this function with
	a const char *.
	* valops.c (find_function_in_inferior): Likewise.

2002-09-12  Joel Brobecker  <brobecker@gnat.com>

	* exec.c (xfer_memory): Fix compilation warning with old versions
	of GCC.
	* tracepoint.c (trace_find_tracepoint_command): Likewise.

2002-09-12  David Carlton  <carlton@math.stanford.edu>

	* symtab.h: Run through gdb_indent.h.
	Add 2002 to Copyright year list.

2002-09-12  Alan Modra  <amodra@bigpond.net.au>

	* x86-64-tdep.c (_initialize_x86_64_tdep): Don't use hard-coded
	mach constants.
	* MAINTAINERS: Add myself to write after approval list.

2002-09-11  J. Brobecker  <brobecker@gnat.com>

	* osabi.c (gdb_osabi_name): Add entry for GDB_OSABI_INTERIX.

2002-09-11  J. Brobecker  <brobecker@gnat.com>

	* osabi.h (gdb_osabi): Add new GDB_OSABI_INTERIX enum value for
	Interix.

2002-06-05  Paul N. Hilfinger  <hilfingr@otisco.mckusick.com>

	* procfs.c (do_detach): Clear current signal, not just fault.
	Corrects problem with breakpoint trap signal leaking to detached
	process on Tru64.

2002-09-10  Michael Snyder  <msnyder@redhat.com>

	* buildsym.c (finish_block): Protect against null pointer.

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

	* infcmd.c (default_print_registers_info): Send all output to
	``file'' instead of ``gdb_stdout''.

2002-09-10  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_extract_struct_value_address): Make val a
	LONGEST, and use signed register read (addresses are sign-
	extended for mips).

2002-09-10  Stephane Carrez  <stcarrez@nerim.fr>

	* event-loop.c (gdb_do_one_event): Make public.
	* event-loop.h (gdb_do_one_event): Declare.

2002-09-10  Jeff Law  <law@redhat.com>

	* infttrace.c (child_resume): Simplify and rework to avoid
	TT_PROC_CONTINUE.

2002-09-09  Fred Fish  <fnf@intrinsity.com>

	* printcmd.c (print_scalar_formatted): "len" is the number of
	target bytes, NOT the number of target bits.

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

	From: Emmanuel Thome'  <thome@lix.polytechnique.fr>
	* top.c (init_main): Set rl_terminal_name.

2002-09-08  Aidan Skinner <aidan@velvet.net>

	* ada-lang.c (ada_array_bound, ada_type_match,
	_initialize_ada_language): Fix K&R definitions.
	* ada-tasks.c (get_current_task): Fix K&R definitions.
	* ada-valprint.c (adjust_type_signedness): Fix K&R definitions.
			
2002-09-07  Christopher Faylor  <cgf@redhat.com>

	* MAINTAINERS: Remove CE from list of maintainership responsibilities.
	Add XP.

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

	* i386-tdep.c (i386_register_virtual_type,
	i386_register_convertible, i386_register_convert_to_virtual,
	i386_register_comvert_to_raw): Use FP_REGNUM_P and SSE_REGNUM_P
	instead of IS_FP_REGNUM and IS_SSE_REGNUM.
	(i386_gdbarch_init): Fix comment.  Add comments on calls that set
	sp_regnum, fp_regnum, pc_regnum, ps_regnum and fp0_regnum.
	Don't set push_arguments twice.

	* i386bsd-tdep.c (i386bsd_init_abi): Set sigtramp_start and
	sigtramp_end to i386bsd_sigtramp_start and i386bsd_sigtramp_end.
	* i386nbsd-tdep.c (i386nbsd_init_abi): Set sigtramp_start and
	sigtramp_end to NULL.
	* config/i386/tm-fbsd.h (SIGTRAMP_START, SIGTRAMP_END): Remove
	defines.
	(i386bsd_sigtramp_start, i386_sigtramp_end): Remove prototypes.

	* i386nbsd-tdep.c (i386nbsd_pc_in_sigtramp): Remove spurious
	whitespace.

	* gdbarch.sh (SIGTRAMP_START, SIGTRAMP_END): New methods.
	* gdbarch.h, gdbarch.c: Re-generate.
	* blockframe.c (find_pc_sect_partial_function): Convert to use
	SIGTRAMP_START_P predicate.

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

	* arm-tdep.c (arm_init_extra_frame_info): Distinguish between
	generic_dummy_frame method and old method.  Also distinguish
	between ARM_FP_REGNUM and THUMB_FP_REGNUM.
	(arm_extract_return_value): Use new regcache method.

	* mips-tdep.c (mips_n32n64_push_arguments): Remove alignment
	adjustment that doesn't conform to the ABI.
	(mips_extract_struct_value_address): Retrieve V0_REGNUM from
	saved regcache, not from current regcache.

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

	* NEWS: Update for 5.3.  Add new section ``Changes since 5.3''.
	* README: Update.

2002-09-04  Jason Thorpe  <thorpej@wasabisystems.com>

	* arm-tdep.c (arm_addr_bits_remove): Don't check for Thumb mode
	if arm_apcs_32 is false.

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

	GDB 5.3 branch created.

2002-09-03  Theodore A. Roth  <troth@verinet.com>

	* gdb/avr-tdep.c (avr_gdbarch_init): Use
	generic_unwind_get_saved_register.

2002-09-03  David Carlton  <carlton@math.stanford.edu>

	* dwarf2read.c (dwarf2_add_member_fn): Add the 'type'
	argument (PR gdb/653).  Update call to smash_to_method_type.
	(read_structure_scope): Update call to dwarf2_add_member_fn.

2002-09-03  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-linux-tdep.c: Include gdb_string.h
	* x86-64-linux-nat.c: Ditto.

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

	* ada-exp.y (yyname, yyrule): Remap global variables that appear
	when YYDEBUG is set to 1.  
	* c-exp.y: Likewise.
	* f-exp.y: Likewise.
	* jv-exp.y: Likewise.
	* m2-exp.y: Likewise.
	* p-exp.y: Likewise.

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

	* Makefile.in (i386nbsd-tdep.o): Add $(solib_svr4_h) to
	dependency list.
	* i386nbsd-tdep.c (i386nbsdelf_init_abi): Set
	solib_svr4_fetch_link_map_offsets to
	nbsd_ilp32_solib_svr4_fetch_link_map_offsets.
	* config/i386/nbsd.mt (TDEPFILES): Add solib.o and solib-svr4.o.
	* config/i386/nbsdaout.mh (NATDEPFILES): Remove solib.o.
	* config/i386/nbsdelf.mh (NATDEPFILES): Remove solib.o,
	solib-svr4.o, and solib-legacy.o.
	* config/i386/tm-nbsd.h: Include solib.h.

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

	* configure.tgt (i[3456]86-*-netbsdelf*): Merge with... 
	(i[3456]86-*-netbsd*): ...this.  Set gdb_target to nbsd. 
	(i[3456]86-*-openbsd*): Make this a separate entry.  Add a
	comment noting that this needs its own target configuration.
	* config/i386/nbsd.mt: New file.
	* config/i386/nbsdaout.mt: Remove.
	* config/i386/nbsdelf.mt: Ditto.
	* config/i386/tm-nbsdaout.h: Ditto. 

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

	* i386nbsd-tdep.c (i386nbsd_sigtramp_offset): New function. 
	(i386nbsd_pc_in_sigtramp): Rewrite to use i386nbsd_sigtramp_offset. 
	(i386nbsd_init_abi): Don't initialize tdep->sigtramp_start or
	tdep->sigtramp_end.
	(i386nbsd_sigtramp_start, i386nbsd_sigtramp_end): Remove. 
	* config/i386/tm-nbsd.h (SIGTRAMP_START, SIGTRAMP_END)
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove.

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

	* Makefile.in (i386nbsd-tdep.o): Add $(arch_utils_h),
	$(i386_tdep_h), and $(nbsd_tdep_h) to dependency list.
	* i386-tdep.h (i386bsd_init_abi): New prototype.
	* i386bsd-tdep.c (i386bsd_init_abi): Remove "static" from
	function declaration.
	(_initialize_i386bsd_tdep): Don't register OS ABI handlers
	for NetBSD-a.out or NetBSD-ELF.
	(i386nbsd_sigtramp_start, i386nbsd_sigtramp_end)
	(i386nbsd_sc_pc_offset, i386nbsd_sc_sp_offset)
	(i386nbsd_init_abi, i386nbsdelf_init_abi): Move to...
	* i386nbsd-tdep.c: ...here.  Include arch-utils.h, i386-tdep.h,
	and nbsd-tdep.h.
	(i386nbsd_pc_in_sigtramp): New function.
	(i386nbsd_init_abi): Set gdbarch_pc_in_sigtramp to
	i386nbsd_pc_in_sigtramp.
	(_initialize_i386nbsd_tdep): Register i386nbsd_init_abi
	and i386nbsdelf_init_abi OS ABI handlers.
	* config/i386/nbsdaout.mt (TDEPFILES): Add nbsd-tdep.o.
	* config/i386/nbsdelf.mt (TDEPFILES): Likewise.

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

	* i386-linux-nat.c (dummy_sse_values): Only try to fill in the SSE
	registers if the target really has them.

2002-08-31  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (mipsnbsd-tdep.o): Use $(nbsd_tdep_h) rather
	than nbsd-tdep.h.

2002-08-31  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (alphanbsd-tdep.o): Add $(frame_h) to dependency
	list.
	* alphanbsd-tdep.c (alphanbsd_sigcontext_addr)
	(alphanbsd_skip_sigtramp_frame): New functions. 
	(alphanbsd_init_abi): Set tdep->skip_sigtramp_frame to
	alphanbsd_skip_sigtramp_frame.  Set tdep->sigcontext_addr
	to alphanbsd_sigcontext_addr. 

2002-08-31  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (mipsnbsd-tdep.o): Add nbsd-tdep.h to dependency
	list.
	(nbsd-tdep.o): Add $(gdb_string_h) to dependency list. 
	* alphanbsd-tdep.c (alphanbsd_pc_in_sigtramp): Use
	nbsd_pc_in_sigtramp. 
	* mipsnbsd-tdep.c: Include nbsd-tdep.h.
	(mipsnbsd_pc_in_sigtramp): Use nbsd_pc_in_sigtramp.
	* nbsd-tdep.c: Include gdb_string.h.
	(nbsd_pc_in_sigtramp): New function. 
	* nbsd-tdep.h (nbsd_pc_in_sigtramp): New prototype. 
	* ppcnbsd-tdep.c (ppcnbsd_pc_in_sigtramp): New function.
	(ppcnbsd_init_abi): Set gdbarch_pc_in_sigtramp to
	ppcnbsd_pc_in_sigtramp. 
	* shnbsd-tdep.c (shnbsd_pc_in_sigtramp): New function.
	(shnbsd_init_abi): Set gdbarch_pc_in_sigtramp to
	shnbsd_pc_in_sigtramp. 
	* sparcnbsd-tdep.c (sparcnbsd_init_abi_elf): Set
	gdbarch_pc_in_sigtramp to nbsd_pc_in_sigtramp. 
	* config/mips/nbsd.mt (TDEPFILES): Add nbsd-tdep.o.

2002-08-30  Pierre Muller  <muller@ics.u-strasbg.fr>

	* breakpoint.c (breakpoint_init_inferior): Reset the val field of
	watchpoints to NULL.
	(insert_breakpoints): set val field of watchpoints if NULL.


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

	* symtab.c (lookup_symbol_aux): In the cases where we find a
	minimal symbol of an appropriate name and use its address to
	select a symtab to read and search, use `name' (as passed to us)
	as the demangled name when searching the symtab's global and
	static blocks, not the minsym's name.

2002-08-29  Keith Seitz  <keiths@redhat.com>

	* stack.c (print_frame_info_base): Always set current_source_symtab
	and current_source_line.

2002-08-29  Donn Terry  <donnte@microsoft.com>

	* proc-api.c (rw_table): Fix typo in #ifdef PCSHOLD (missing S).

2002-08-28  Keith Seitz  <keiths@redhat.com>

	* stack.c (select_frame): Add FIXME concerning selected-frame
	events.
	(select_frame_command): Send selected-frame-level-changed
	event notification, but only if the level actually changed.
	(up_silently_base): Add selected-frame-level-changed event
	notification.
	(down_silently_base): Likewise.

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

	* Makefile.in: Update dependencies for all gdb/*.c files.

2002-08-27  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (osabi.o, i387-tdep.o, i386-linux-nat.o, lin-lwp.o,
	ax-gdb.o, signals.o, jv-valprint.o, c-valprint.o, cp-abi.o):
	Update dependencies.
	* i387-tdep.c: Include gdb_string.h.
	* osabi.c: Likewise.
	* i386-linux-nat.c: Likewise.
	* lin-lwp.c: Likewise.
	* ax-gdb.c: Likewise.
	* signals/signals.c: Likewise.
	* jv-valprint.c: Likewise.
	* p-lang.c: Likewise.
	* c-valprint.c: Likewise.
	* cp-abi.c: Likewise.

2002-08-27  Elena Zannoni  <ezannoni@redhat.com>

	* cli/cli-script.h (copy_command_lines): Export.
	* breakpoint.c: Include cli/cli-script.h.
	* Makefile.in (breakpoint.o): Update dependencies.

2002-08-26  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (insert_breakpoints): Protect all references
	to 'process_warning'.  Shorten long lines.

2002-08-26  Joel Brobecker  <brobecker@gnat.com>

	* cli/cli-script.c (copy_command_lines): New function.
	* defs.h (copy_command_lines): Export.
	* testsuite/gdb.base/commands.exp: New tests for commands
	attached to a temporary breakpoint, and for commands that
	delete the breakpoint they are attached to.
	
2002-08-26  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (bpstat_stop_status): Instead of copying the 
	pointer to the breakpoint commands struct, make a new copy
	of the struct and point to that.
	(bpstat_clear): Free the commands struct.
	(bpstat_clear_actions): Free the commands struct.
	(bpstat_do_actions): Free the command actions.  Also execute
	the local cleanups, instead of deleting them.
	(delete_breakpoint): Leave the commands field of the bpstat
	chain alone -- it will be freed later.

2002-08-26  Kevin Buettner  <kevinb@redhat.com>

	* rs6000-tdep.c (altivec_register_p): Restore function inadvertently
	deleted in 2002-08-20 commit.  This function is still used by
	ppc-linux-nat.c.

2002-08-26  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh: Add selected-frame-level-changed event.
	* gdb-events.c: Regenerated.
	* gdb-events.h: Regenerated.
	
2002-08-26  Stephane Carrez  <stcarrez@nerim.fr>

	Fix PR gdb/393:
	* inflow.c (terminal_save_ours): New function to save terminal
	settings.
	* inferior.h (terminal_save_ours): Declare.
	* target.c (debug_to_terminal_save_ours): New function.
	(cleanup_target): Defaults to_terminal_save_ours.
	(update_current_target): Inherit to_terminal_save_ours.
	(setup_target_debug): Set to_terminal_save_ours.
	* target.h (target_terminal_save_ours): New to save terminal settings.
	(target_ops): New member to_terminal_save_ours.
	* gnu-nat.c (init_gnu_ops): Set to_terminal_save_ours.
	* hpux-thread.c (init_hpux_thread_ops): Likewise.
	* inftarg.c (init_child_ops): Likewise.
	* m3-nat.c (init_m3_ops): Likewise.
	* procfs.c (init_procfs_ops): Likewise.
	* wince.c (init_child_ops): Likewise.
	* win32-nat.c (init_child_ops): Likewise.
	* sol-thread.c (init_sol_thread_ops): Likewise.

2002-08-26  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_store_return_value): Undeprecate.  Convert to
	use regcache_* functions.
	(i386_gdbarch_init): Set store_return_value instead of
	deprecated_store_return_value.

	* regcache.c (regcache_raw_write_signed,
	regcache_raw_write_unsigned): New functions.
	* regcache.h (regcache_raw_write_signed,
	regcache_raw_write_unsigned): New prototypes.

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

	* Makefile.in (c-exp.tab.o, jv-exp.tab.o, f-exp.tab.o)
	(m2-exp.tab.o, p-exp.tab.o, ada-exp.tab.o): Move to before the
	source file dependencies.  Cleanup corresponding generator rules.

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

	* regcache.h (register_offset_hack): Declare.
	(regcache_cooked_read_using_offset_hack): Declare.
	(regcache_cooked_write_using_offset_hack): Declare.

	* regcache.c (register_offset_hack): New function.
	(regcache_cooked_read_using_offset_hack): New function.
	(regcache_cooked_write_using_offset_hack): New function.
	(regcache_dump): Check that the registers, according to their
	offset, are packed hard against each other.
	(cooked_xfer_using_offset_hack): New function.

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

	* regcache.c (struct regcache_descr): Add field register_type.
	(init_legacy_regcache_descr): Pass a pre-allocated regcache_descr
	in as a parameter
	(init_regcache_descr): Initialize register_type.  Pass the descr
	to init_legacy_regcache_descr.  Use register_type instead of
	REGISTER_VIRTUAL_TYPE.
	(register_type): New function.
	(regcache_dump): Replace REGISTER_VIRTUAL_TYPE with register_type.
	* regcache.h (register_type): Declare.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Set store_struct_return
	instead of deprecated_store_return_value.  Fix fallout from
	2002-08-23 Andrew Cagney <cagney@redhat.com>.

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

	* regcache.c (max_register_size): New function.
	(init_legacy_regcache_descr): Ensure that max_register_size is
	large enough for REGISTER_VIRTUAL_SIZE.
	* regcache.h (max_register_size): Declare.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Use deprecated version of
	store_return_value.
	(e500_extract_return_value): Change type of valbuf pointer to
	void.

2002-08-24  Mark Kettenis  <kettenis@gnu.org>

	* PROBLEMS: Clarify problems with FreeBSD's compiler and suggest
	workaround.

	* valprint.c (print_longest) [CC_HAS_LONG_LONG &&
	PRINTF_HAS_LONG_LONG]: Cast val_long to (long long) or (unsigned
	long long) to prevent compiler warning on 64-bit systems.

2002-08-23  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter.
	(DEPRECATED_STORE_RETURN_VALUE): New method.
	(EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer.
	* gdbarch.h, gdbarch.c: Re-generate.

	* values.c (set_return_value): Pass current_regcache to
	STORE_RETURN_VALUE.
	* arch-utils.h (legacy_store_return_value): Declare.
	* arch-utils.c (legacy_store_return_value): New function.
	(legacy_extract_return_value): Update parameters.

	* config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename
	STORE_RETURN_VALUE.
	* config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.

	* m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
	* i386-tdep.c (i386_extract_return_value): Update.
	* arch-utils.c (legacy_extract_return_value): Update.
	* frv-tdep.c (frv_gdbarch_init): Update.
	* cris-tdep.c (cris_gdbarch_init): Update.
	* d10v-tdep.c (d10v_gdbarch_init): Update.
	* rs6000-tdep.c (rs6000_gdbarch_init): Update.
	* m68k-tdep.c (m68k_gdbarch_init): Update.
	* mcore-tdep.c (mcore_gdbarch_init): Update.
	* mn10300-tdep.c (mn10300_gdbarch_init): Update.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* sparc-tdep.c (sparc_gdbarch_init): Update.
	* sh-tdep.c (sh_gdbarch_init): Update.
	* x86-64-tdep.c (x86_64_gdbarch_init): Update.
	* v850-tdep.c (v850_gdbarch_init): Update.
	* avr-tdep.c (avr_gdbarch_init): Update.
	* ia64-tdep.c (ia64_gdbarch_init): Update.
	* ns32k-tdep.c (ns32k_gdbarch_init): Update.
	* vax-tdep.c (vax_gdbarch_init): Update.
	* alpha-tdep.c (alpha_gdbarch_init): Update.
	* arm-tdep.c (arm_gdbarch_init): Update.
	* mips-tdep.c (mips_gdbarch_init): Update.
	* i386-tdep.c (i386_gdbarch_init): Update.

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

	* config/djgpp/fnchange.lst: Add entries for bfd/elf32-ppcqnx.c,
	bfd/elf32-ppc.c, bfd/elf32-sh.c and bfd/elf32-shqnx.c.

2002-08-24  Mark Kettenis  <kettenis@gnu.org>

	* PROBLEMS: Refer to GDB 5.3 instead of 5.2.  Mention FreeBSD
	problems.

2002-08-23  Joel Brobecker  <brobecker@gnat.com>

	* infrun.c (handle_inferior_event): Move a comment outside of a
	function call, in order to avoid indent reformatting this part
	of the code in an unreadable way.

2002-08-23  Grace Sainsbury  <graces@redhat.com>

	* infrun.c (normal_stop, proceed): Remove call to print_sys_errmsg
	when breakpoints fail. Move general breakpoint error messages to
	insert_breakpoints.  
	* breakpoint.c (insert_breakpoints): Change warnings when
	breakpoints are nto inserted to specify the type. Remove call to
	memory_error when hardware breakpoints can't be inserted. Remove
	multiple calls to warning so all messages are sent to the user at
	once.
	(delete_breakpoints): Make insert error messsages more explicit.

2002-08-23  Daniel Jacobowitz  <drow@mvista.com>

	* ChangeLog: Move gdbserver entries after GDB 5.2 to
	gdbserver/ChangeLog.

2002-08-23  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c: Include "objfiles.h".
	(i386_svr4_init_abi): Set in_solib_call_trampoline and
	skip_trampoline_code.
	* config/i386/tm-i386v4.h: Don't include "config/tm-sysv4.h".
	(CPLUS_MARKER): Define to '.'.

	* linux-proc.c (struct linux_corefile_thread_data): Add num_notes
	member.
	(linux_corefile_thread_callback): Increase args->num_notes.
	(linux_make_note_section): Initialize thread_args.num_notes, and
	use it to determine whether notes for any threads were created.

2002-08-23  Donn Terry  <donnte@microsoft.com>

	* proc-api.c (rw_table): Do not include a row for PCDSTOP if the
	corresponding macro is not defined. Likewise for PCNICE, PCSHOLD
	and PCUNKILL.
	(write_with_trace): Conditionalize out the switch branch handling
	PCSHOLD if the corresponding macro is not defined. Likewise for
	PRSABORT and PRSTOP.
	This change will be needed by the Interix port.

2002-08-22  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-sysv-tdep.c (ppc_sysv_abi_push_arguments): use
	write_register wherever possible instead of manipulating the
	register bytes directly.
	Assign VALUE_CONTENTS to a variable and use that.
	The GPR numbers are now dependent on the architecture.
	
2002-08-22  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (struct rs6000_framedata): Add saved_ev and
	ev_offset fields.
	(skip_prologue): Add support for BookE/e500 instructions.
	(e500_extract_return_value): New function.
	(frame_get_saved_regs): Add support for saving ev registers and
	pseudo gpr's.
	(e500_store_return_value): New function.
	(rs6000_gdbarch_init): Move up default intializations of
	deprecated_extract_return_value and store_return_value.  Overwrite
	init of store_return_value with e500 specific version.
	Set extract_return_value for e500.
	
2002-08-22  Elena Zannoni  <ezannoni@redhat.com>

	* blockframe.c (generic_call_dummy_register_unwind): Use
	regcache_cooked_read to catch cases in which the variable is
	stored in a pseudo register.

2002-08-22  Andrew Cagney  <cagney@redhat.com>

	* NEWS: Mention that the i960 has been made obsolete.
	* Makefile.in (SFILES): Delete remote-nrom.c, remote-nindy.c and
	i960-tdep.c
	(remote-nrom.o): Obsolete target.
	(remote-nindy.o, i960-tdep.o): Ditto.
	* remote-nrom.c: Make file obsolete.
	* remote-nindy.c, remote-vx960.c: Ditto.
	* config/i960/vxworks960.mt, config/i960/nindy960.mt: Ditto.
	* config/i960/mon960.mt, config/i960/tm-i960.h: Ditto.
	* config/i960/tm-vx960.h, config/i960/tm-nindy960.h: Ditto.
	* config/i960/tm-mon960.h, i960-tdep.c: Ditto.
	* configure.tgt: Make i960-*-bout*, i960-nindy-coff*,
	i960-*-coff*, i960-nindy-elf*, i960-*-elf*, i960-*-nindy* and
	i960-*-vxworks* obsolete.
	* MAINTAINERS: Note that the i960 is obsolete.

2002-08-21  Corinna Vinschen  <vinschen@redhat.com

	* aix-thread.c (aix_thread_detach): Disable thread debugging on
	detach to allow reinitialization.

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

	* MAINTAINERS: Change the s390 target to s390-linux-gnu (second
	attempt).

2002-08-22  Jim Blandy  <jimb@redhat.com>

	* coffread.c (coff_symfile_read): Don't try to read the line
	number table from disk if the image file doesn't have a symbol
	table; we'll never actually look at the info anyway, and Windows
	ships DLL's with bogus file offsets for the line number data.

2002-08-21  Elena Zannoni  <ezannoni@redhat.com>

        * rs6000-tdep.c (rs6000_gdbarch_init): Figure out whether we have
        an e500 executable.

2002-08-21  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (MSYMBOL_IS_SPECIAL): Replace macro with function.
	(MSYMBOL_SIZE): Replace macro with function.
	(DEFAULT_MIPS_TYPE): Delete unused macro.
	* config/mips/tm-mips.h (DEFAULT_MIPS_TYPE): Delete unused macro.
	* config/mips/tm-embed.h (DEFAULT_MIPS_TYPE): Delete unused macro.

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

	* valops.c (value_cast): Simplify and correct logic for doing a
	static cast from a pointer to a base class to a pointer to a
	derived class.

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

	* infcmd.c (default_print_registers_info): Replace
	do_registers_info.
	(registers_info): Use gdbarch_print_registers_info instead of
	DO_REGISTERS_INFO.
	* inferior.h (default_print_registers_info): Replace
	do_registers_info.
	* gdbarch.sh (PRINT_REGISTERS_INFO): New method.
	(DO_REGISTERS_INFO): Change to a predicate function.
	* gdbarch.h, gdbarch.c: Regenerate.
	
2002-08-21  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh: Add target-changed event.
	* gdb-events.c: Regenerated.
	* gdb-events.c: Regenerated.
	* valops.c (value_assign): Add target-changed event notification
	to inlval_register, lval_memory, and lval_reg_frame_relative.

2002-08-21  Joel Brobecker  <brobecker@gnat.com>

	* NEWS: Add an entry regarding the improvement of the next/step
	operation on Alpha Tru64 multi-processor machines.

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

	* Makefile.in: Update dependencies for mi/ cli/ and tui/
	directores.
	* Makefile.in: Update all _h macro definitions.
	* Makefile.in (install-gdbtk): Move to install section.
	(rdi-share/libangsd.a): Move to end of file.

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

	* frame.c (frame_register_unwind): When a register, set addrp to
	the register's byte.

2002-08-20  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): These are only
	used locally, so move them from the target machine header to here.
	(mips_set_processor_type, mips_register_name, mips32_next_pc, 
	mips16_next_pc, cached_proc_desc, mips_set_processor_type): 
	Make static.
	* config/mips/tm-mips.h (MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Delete.

2002-08-20  Andrew Cagney  <cagney@redhat.com>

	* NEWS: Mention that the Apollo line was made obsolete.
	* configure.tgt: Make m68*-apollo*-bsd*, m68*-hp-bsd*, and
	m68*-hp-hpux* obsolete.
	* configure.host: Make m68*-apollo*-sysv*, m68*-apollo*-bsd*,
	m68*-hp-bsd* and m68*-hp-hpux* obsolete.
	* buildsym.c (make_blockvector): Make static.
	* buildsym.h (make_blockvector): Make extern declaration obsolete.
	* Makefile.in (HFILES_NO_SRCDIR): Remove dst.h
	(ALLDEPFILES): Remove dstread.c.
	(dstread.o): Obsolete make rule.
	* dstread.c: Makefile obsolete.
	* dst.h: Ditto.
	* config/m68k/hp300hpux.mt: Ditto.
	* config/m68k/hp300hpux.mh: Ditto.
	* config/m68k/hp300bsd.mt: Ditto.
	* config/m68k/hp300bsd.mh: Ditto.
	* config/m68k/apollo68b.mt: Ditto.
	* config/m68k/apollo68v.mh: Ditto.
	* config/m68k/apollo68b.mh: Ditto.

2002-08-20  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_in_return_stub): Make static.
	(mips_gdbarch_init): Set in_solib_return_trampoline.
	* config/mips/tm-mips.h (IN_SOLIB_RETURN_TRAMPOLINE): Delete.

2002-08-20  Michael Snyder  <msnyder@redhat.com>

	* gdbarch.sh (IN_SOLIB_RETURN_TRAMPOLINE): Add.
	* gdbarch.c, gdbarch.h: Regenerate.
	* arch-utils.c, arch-utils.h (generic_in_solib_return_trampoline):
	Add.
	* infrun.c (IN_SOLIB_RETURN_TRAMPOLINE): Delete default definition.

2002-08-20  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_skip_stub, mips_in_call_stub): Make static.
	(mips_gdbarch_init): Set skip_trampoline_code, 
	in_solib_call_trampoline.
	* config/mips/tm-mips.h (REGISTER_NAME): Delete.
	(IN_SOLIB_CALL_TRAMPOLINE, SKIP_TRAMPOLINE_CODE): Delete.

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

	* ppc-tdep.h (struct gdbarch_tdep): Add ev registers.

	* rs6000-tdep.c (rs6000_register_virtual_type): Return 64 bit
	vector type for ev registers.
	(e500_pseudo_register_read): New function.
	(e500_pseudo_register_write): New function.
	(e500_dwarf2_reg_to_regnum): New function.
	(PPC_UISA_NOFP_SPRS): New macro.
	(PPC_EV_REGS): New macro.
	(PPC_GPRS_PSEUDO_REGS): New macro.
	(registers_e500): New register set for e500.
	(variants): Add e500 variant.
	(rs6000_gdbarch_init): Move setting of pc, sp, fp regnums to
	before setting architectural dependent variations.  Initialize ev
	registers numbers.  Add case for e500 architecture.  Set the
	number of pseudo registers.

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

        * rs6000-tdep.c: Clean up comments.

2002-08-20  Andrew Cagney  <cagney@redhat.com>

	* h8300-tdep.c: Re-indent file.

2002-08-20  Jim Blandy  <jimb@redhat.com>

	* Makefile.in (LDFLAGS): Allow the configure script to establish a
	default for this.

2002-08-20  Keith Seitz  <keiths@redhat.com>

	* breakpoints.c (watch_command_1): Use internal breakpoint
	when setting a watchpoint_scope breakpoint.

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

        * gdbtypes.c (build_builtin_type_vec64): Add name to type.
        (build_builtin_type_vec64i): Ditto.
        (build_builtin_type_vec128): Ditto.
        (build_builtin_type_vec128i): Ditto.

2002-08-19  Michael Snyder  <msnyder@redhat.com>

	* config/mips/tm-mips.h (ELF_MAKE_MSYMBOL_SPECIAL): Delete.
	(MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Change into functions.
	(FIX_CALL_DUMMY, PUSH_RETURN_ADDRESS, PUSH_DUMMY_FRAME,
	POP_FRAME, INIT_EXTRA_FRAME_INFO): Delete.
	(CALL_DUMMY_START_OFFSET, CALL_DUMMY_BREAKPOINT_OFFSET,
	CALL_DUMMY_ADDRESS): Delete.
	* mips-tdep.c (mips_elf_make_msymbol_special, mips_msymbol_size,
	mips_msymbol_is_special, mips_fix_call_dummy): New functions.
	(mips_gdbarch_init): Set elf_make_msymbol_special, pop_frame, 
	push_dummy_frame, fix_call_dummy, init_extra_frame_info, 
	push_return_address.
	(mips_register_raw_size, mips_eabi_use_struct_convention, 
	mips_n32n64_use_struct_convention, mips_o32_use_struct_convention,
	mips_o32_reg_struct_has_addr, mips_frame_saved_pc, mips_frame_chain,
	mips_init_extra_frame_info, mips_eabi_push_arguments, 
	mips_n32n64_push_arguments, mips_push_return_address,
	mips_push_dummy_frame, mips_pop_frame, mips_skip_prologue,
	mips_breakpoint_from_pc, mips_call_dummy_address): Make static.

2002-08-19  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_frame_num_args): New function.
	(mips_gdbarch_init): Set frame_chain, frameless_function_invocation,
	frame_saved_pc, frame_args_address, frame_locals_address, 
	frame_num_args, and frame_args_skip.
	* config/mips/tm-mips.h (FRAME_CHAIN, FRAMELESS_FUNCTION_INVOCATION,
	FRAME_SAVED_PC, FRAME_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS, 
	FRAME_NUM_ARGS, FRAME_ARGS_SKIP): Delete.
	* config/mips/tm-mipsv4.h (FRAME_CHAIN_VALID): Delete.

2002-08-20  Michael Snyder  <msnyder@redhat.com>

	* config/mips/tm-mips.h (STORE_STRUCT_RETURN): Delete.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Delete.
	* mips-tdep.c (mips_store_struct_return): New function.
	(mips_extract_struct_value_address): New function.
	(mips_gdbarch_init): Set store_struct_return and
	extract_struct_value_address.

2002-08-20  David Carlton  <carlton@math.stanford.edu>

	* dwarf2read.c (dwarf2_build_psymtabs): Check that
	dwarf_line_offset is nonzero before creating dwarf_line_buffer.
	(read_file_scope): Check that line_header is nonzero before
	decoding macro information.

2002-08-20  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.h (FP_REGNUM_P): Change such that we don't incorrectly
	flag the general-purpose registers as floating-point on targets
	that don't support the floating-point registers.

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

	* rs6000-tdep.c (altivec_register_p): Delete.
	(rs6000_do_altivec_registers): Delete.
	(rs6000_altivec_registers_info): Delete.
	(rs6000_do_registers_info): Delete.
	(_initialize_rs6000_tdep): Remove command 'info powerpc altivec'.
	(rs6000_gdbarch_init): Remove setting of do_registers_info.

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

	* infcmd.c (do_registers_info): Print vector registers in hex
	format only.
	(print_vector_info): Check that printing registers
	makes sense.
	(print_float_info): Ditto.

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

	* mips-tdep.c (mips_gdbarch_init): Update.
	(mips_o32_extract_return_value): Rewrite.
	(mips_o32_store_return_value): Rewrite.
	(mips_o32_xfer_return_value): New function.
	(mips_xfer_register): Tweak debug print message.  Allow for
	buf_offset when dumping the value transfered.

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

	* config/mips/tm-nbsd.h (MIPS_DEFAULT_ABI): Delete.
	* config/mips/tm-linux.h (MIPS_DEFAULT_ABI): Delete.
	* config/mips/tm-irix5.h (MIPS_DEFAULT_ABI): Delete.
	* config/mips/tm-irix6.h (MIPS_DEFAULT_ABI): Delete.
	* mips-tdep.c (mips_gdbarch_init) [MIPS_DEFAULT_ABI]: Delete code.

2002-08-14  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_frame_chain): Check for call-dummy frames.

2002-08-19  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (struct reg): Add field to indicate a pseudo
	register.
	(P): New macro to define a register as a pseudo register.
	(R, R4, R8, R16, FR32, R64, R0): Updated.
	(struct variant): Add new fields for number of pseudo registers
	and number of total registers.
	(tot_num_registers): New macro replacing....
	(num_registers): ...deleted macro.
	(num_registers): New function.
	(num_pseudo_registers): New function.
	(variants): Update all variants to intialize new fields correctly.
	Postpone initialization of number of pseudo regs and real regs.
	(init_variants): New function.
	(rs6000_gdbarch_init): Initialize variants.  Update calculation of
	registers offsets.

2002-08-19  David Carlton  <carlton@math.stanford.edu>

	* valops.c (search_struct_field): Change error message to treat
	return value of 0 from value_static_field as meaning that field is
	optimized out.
	(value_struct_elt_for_reference): Ditto.
	* values.c (value_static_field): Treat an unresolved location the
	same as a nonexistent symbol.  Fix PR gdb/635.
	* gnu-v2-abi.c (gnuv2_value_rtti_type): Eliminate test for being
	enclosed.  Fix PR gdb/574.
	* MAINTAINERS: Add self to Write After Approval list.

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

	* mips-tdep.c (mips_xfer_register): New function.
	(mips_n32n64_extract_return_value): Rewrite.
	(mips_gdbarch_init): For N32 and N64, set extract_return_value
	instead of deprecated_extract_return_value.

2002-08-19  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (TDEP): Delete macro.
	(branch_dest): Replace use of TDEP macro with its body.
	(rs6000_pop_frame): Ditto.
	(rs6000_push_arguments): Ditto.
	(rs6000_skip_trampoline_code): Ditto.
	(rs6000_frame_saved_pc): Ditto.
	(rs6000_frame_chain): Ditto.
	(rs6000_register_name): Ditto.
	(rs6000_register_byte): Ditto.
        (rs6000_register_raw_size): Ditto.
	(rs6000_register_virtual_type): Ditto.
	(rs6000_register_convertible): Ditto.
	(rs6000_convert_from_func_ptr_addr): Ditto.

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

	* config/mips/tm-linux.h (REALTIME_LO, REALTIME_HI): Define
	conditionally.
	(JB_PC, JB_ELEMENT_SIZE): Rename to MIPS_LINUX_JB_PC and
	MIPS_LINUX_JB_ELEMENT_SIZE.
	* mips-linux-tdep.c (supply_gregset, fill_gregset): Use alloca
	for MAX_REGISTER_RAW_SIZE arrays.
	(mips_linux_get_longjmp_target): Use MIPS_LINUX_JB_PC and
	MIPS_LINUX_JB_ELEMENT_SIZE.

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

	* i387-tdep.c (i387_print_float_info): Fix typo in comment.

2002-08-19  Aidan Skinner <aidan@velvet.net>

	* Makefile.in (SFILES): Add ada-exp.y ada-lang.c ada-typeprint.c
	ada-valprint.c ada-tasks.c.
	(YYFILES): Add ada-exp.y.
	(ada-exp.tab.c ada-lex.c ada-lang.o): New target.
	(ada-tasks.o ada-typeprint.o ada-valprint.o): New target.
	(ada-exp.tab.o): New target.
		
2002-08-18  Andrew Cagney  <ac131313@redhat.com>

	* regcache.c (regcache_xfer_part): New function.
	(regcache_raw_read_part): New function.
	(regcache_raw_write_part): New function.
	(regcache_cooked_read_part): New function.
	(regcache_cooked_write_part): New function.
	* regcache.h (regcache_raw_read_part): Declare.
	(regcache_raw_write_part): Declare.
	(regcache_cooked_read_part): Declare.
	(regcache_cooked_write_part): Declare.

2002-08-18  Daniel Jacobowitz  <drow@mvista.com>

	* remote.c (remote_open_1): Add async_p.
	(remote_async_open_1): Delete.
	(open_remote_target): Delete.
	(remote_open, extended_remote_open): Update calls to remote_open_1.
	(remote_async_open, extended_remote_async_open): Call
	remote_open_1 instead of remote_async_open_1.

2002-08-19  Mark Kettenis  <kettenis@gnu.org>

	* blockframe.c: Fix a few coding standard violations.

2002-08-19  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/nm-i386sco5.h (START_INFERIOR_TRAPS_EXPECTED): Moved
	here from ...
	* config/i386/tm-i386sco5.h: ... here.  File removed.
	* config/i386/i386sco5.mt (TM_FILE): Set to tm-i386v4.h.

	* config/i386/nm-i386v.h (START_INFERIOR_TRAPS_EXPECTED): New define.
	* config/i386/i386aout.mt (TDEPFILES): Add i387-tdep.o
	(TM_FILE): Set to tm-i386.h.
	* config/i386/i386v.mt (TM_FILE): Set to tm-i386.h.
	* config/i386/tm-i386v.h: Remove file.
	* config/i386/tm-ptx.h [!SEQUENT_PTX4]: Include "i386/tm-i386.h"
	instead of "i386/tm-i386v.h".
	(START_INFERIOR_TRAPS_EXPECTED): Remove define.
	* config/i386/tm-symmetry: Include "i386/tm-i386.h" instead of
	"i386/tm-i386v.h".
	(START_INFERIOR_TRAPS_EXPECTED): Remove define.
	* config/i386/tm-vxworks.h: Include "i386/tm-i386.h" instead of
	"i386/tm-i386.h".

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

	* config/i386/nm-i386v.h: Add protection against
	multiple-inclusion.
	(i386_register_u_addr): Remove prototype.
	(register_u_addr): New prototype.
	(REGISTER_U_ADDR): Redefine accordingly.
	* i386v-nat.c: Improve several comments.
	(i386_register_u_addr): Change signature and rename to
	register_u_addr.  Use FP_REGNUM_P.  Rewrite slightly to get rid of
	ubase variable.

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

	* config/mips/tm-mips.h (STORE_RETURN_VALUE): Delete macro.
	(DEPRECATED_EXTRACT_RETURN_VALUE): Delete macro.
	* mips-tdep.c (mips_gdbarch_init): Set store_return_value and
	deprecated_extract_return_value.
	(mips_o32_push_arguments, mips_o64_push_arguments): Clone and
	rename mips_o32o64_push_arguments.
	(mips_gdbarch_init): Update.
	(mips_extract_return_value): Delete.
	(mips_o32_extract_return_value): Clone mips_extract_return_value.
	(mips_o64_extract_return_value): Clone mips_extract_return_value.
	(mips_eabi_extract_return_value): Clone mips_extract_return_value.
	(mips_n32n64_extract_return_value): Clone
	mips_extract_return_value.
	(mips_store_return_value): Delete.
	(mips_o32_store_return_value): Clone mips_store_return_value.
	(mips_o64_store_return_value): Clone mips_store_return_value.
	(mips_eabi_store_return_value): Clone mips_store_return_value.
	(mips_n32n64_store_return_value): Clone mips_store_return_value.

2002-08-18  Aidan Skinner <aidan@velvet.net>

	* ada-lang.c: Use gdb_string.h instead of <string.h>.
	* ada-typeprint.c: Use gdb_string.h instead of <string.h>.
		
2002-08-18  Aidan Skinner <aidan@velvet.net>

        * ada-lang.c: Run through gdb_indent.sh.
        * ada-lang.h: Run through gdb_indent.sh.
        * ada-tasks.c: Run through gdb_indent.sh.
        * ada-typeprint.c: Run through gdb_indent.sh.
        * ada-valprint.c: Run through gdb_indent.sh.

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

	* osabi.c (gdbarch_init_osabi): Don't complain about an unknown
	ABI.

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

	* i386b-nat.c [FETCH_INFERIOR_REGISTERS]: Remove dead code.

	* config/i386/nm-i386bsd.h (FLOAT_INFO): Remove redundant #undef.
	* i386b-nat.c [FLOAT_INFO]: Remove dead code.

	* i386-tdep.c (i386_do_pop_frame, i386_store_return_value): Call
	write_register_gen instead of write_register_bytes.

	* NEWS: Mention that the i[3456]-*mach3*, i[3456]-*-mach* and
	i[3456]-*-osf1mk* configurations have been made obsolete.
	* configure.host: Make i[3456]86-*-mach3*, i[3456]86-*mach* and
	i[3456]86-*-osf1mk* hosts obsolete.
	* confighure.tgt: Make i[3456]86-*-mach3*, i[3456]86-*-osf1mk*
	targets obsolete.
	* config/i386/i386mach.mh, config/i386/nm-i386mach.h,
	config/i386/xm-i386mach.h, config/i386/i386m3.mh,
	config/i386/i386m3.mt, config/i386/nm-m3.h,
	config/i386/tm-i386m3.h, config/i386/xm-i386m3.h,
	config/i386/i386mk.mh, config/i386/i386mk.mt,
	config/i386/tm-i386mk.h, config/i386/xm-i386mk.h: Make files
	obsolete.
	* i386mach-nat.c, i386m3-nat.c: Make files obsolete.
	* Makefile.in (ALLDEPFILES): Remove i386mach.c i386m3-nat.c
	(i386mach-nat.o, i386m3-nat.o):Make targets obsolete.

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

	* config/pa/tm-hppa.h (hppa_store_return_value): Declare.
	(hppa_value_returned_from_stack): Declare.
	(hppa_extract_return_value): Declare.
	* config/pa/hppa.mt: New file.
	* configure.tgt: Recognize hppa*-*-*.
	* MAINTAINERS: Change HPPA target to hppa-elf.  Still broken.

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

	* i386-sol2-tdep.c (_initialize_i386_sol2_tdep): Fix typo in
	comment.

2002-08-17  Mark Kettenis  <kettenis@gnu.org>

	* top.c (gdb_rl_operate_and_get_next): Make sure
	operate-and-get-next functions correctly even when the history
	list is completely filled.

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

	* MAINTAINERS (Target Instruction Set Architectures): Rename
	Target/Architectures.  Replace vax-dec-vms5.5 with vax-netbsd.
	Replace s390-linux with s390-linux-gnu.  Remove i386-aout,
	mcore-pe, mips64-elf, sparc64-elf.  Remove i586-pc-msdosdjgpp,
	already listed under Host/Native.

	* configure.tgt: Combine i[3456]86-*-coff*, i[3456]86-*-elf*,
	i[3456]86-*-pe*, and i[3456]86-*-aout* into i[3456]86-*-*.  Add
	mips*-*-*.

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

	* config/ia64/ia64.mt: New file.
	* config/alpha/alpha.mt: New file.
	* MAINTAINERS: Change the alpha target to alpha-elf and IA-64 to
	ia64-linux-gnu.  Mention that ia64-elf is broken.
	* configure.tgt: Add alpha*-*-* and ia64*-*-* patterns.

2002-08-17  Mark Kettenis  <kettenis@elgar.kettenis.dyndns.org>

	* i386-tdep.c (i386_svr4_init_abi, i386_nw_init_abi): Use
	generic_func_frame_valid instead of func_frame_valid.

2002-08-16  Joel Brobecker  <brobecker@gnat.com>

	* alpha-osf1-tdep.c (alpha_osf1_init_abi): Unfortunately,
	procfs appears to be broken when debugging on multi-processor
	machines. So enable software single stepping in order to avoid
	using the procfs interface to do next/step operations, using
	internal breakpoints instead.

	* infrun.c (handle_inferior_event): Readjust the stop_pc by
	DECR_PC_AFTER_BREAK when hitting a single step breakpoint, to
	make this pc address equal to the value it would have if the
	system stepping capability was used. Also set a new flag used
	to ensure that we don't readjust the PC one more time later.

	* breakpoint.c (bpstat_stop_status): Do not adjust the PC
	address by DECR_PC_AFTER_BREAK when software single step is
	in use for this architecture, as this has already been taken
	care of in handle_inferior_event().

2002-08-16  Joel Brobecker  <brobecker@gnat.com>

	* infrun.c (handle_inferior_event): Minor reformatting, to make
	a rather long condition expression easier to read.

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

	* Makefile.in (gdbtk.o): Move to end of file.
	(gdbtk-bp.o, gdbtk-cmds.o): Ditto.
	(gdbtk-hooks.o, gdbtk-register.o): Ditto.
	(gdbtk-stack.o, gdbtk-varobj.o): Ditto.
	(gdbtk-wrapper.o, gdbres.o): Ditto.

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

	* Makefile.in (copying.o): Separate out compile rule.
	(hpux-thread.o, procfs.o, signals.o): Ditto.
	(v850ice.o, z8k-tdep.o): Ditto.
	(tui-file.o): Move to TUI section.
	(xdr_ptrace.o, xdr_rdb.o, xdr_ld.o): Move to separate section.
	(nindy.o, Onindy.o, ttyflush.o): Move to separate section.

2002-08-16  Joel Brobecker  <brobecker@gnat.com>

	* i386-tdep.c (i386_pe_skip_trampoline_code): renamed from
	skip_trampoline_code, for better namespace-proofing.   

	* i386-tdep.h (i386_pe_skip_trampoline_code): Add declaration.

2002-08-16  Joel Brobecker  <brobecker@gnat.com>

	* config/i386/tm-cygwin.h: Remove some "#if 0"'ed macros.

2002-08-16  Joel Brobecker  <brobecker@gnat.com>

	* infrun.c (handle_inferior_event): When receiving a SIGTRAP
	signal, check whether we hit a breakpoint before checking for a
	single step breakpoint. Otherwise, GDB fails to notice that a
	breakpoint has been hit when stepping onto a breakpoint.

2002-08-16  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh (clear_gdb_event_hooks): New function.
	* gdb-events.c: Regenerate.
	* gdb-events.h: Regenerate.

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

	* breakpoint.c (bpstat_stop_status): Rename not_a_breakpoint to
	not_a_sw_breakpoint.
	* breakpoint.h (bpstat_stop_status): Add parameter names.

2002-08-16  Grace Sainsbury  <graces@redhat.com>

	* remote.c (remote_insert_hw_breakpoint)
	(remote_remove_hw_breakpoint): Fix calculation of length field
	for Z-packet.

2002-08-15  Michael Snyder  <msnyder@redhat.com>

	* irix5-nat.c (supply_gregset): Allocate plenty-big buffer
	(32 bytes) instead of using MAX_REGISTER_RAW_SIZE.
	(supply_fpregset): Ditto.
	
	* config/mips/tm-mips.h (REGISTER_CONVERT_TO_VIRTUAL, 
	REGISTER_CONVERT_TO_RAW, REGISTER_CONVERTIBLE, 
	MAX_REGISTER_RAW_SIZE, MAX_REGISTER_VIRTUAL_SIZE): Delete.
	(TARGET_READ_SP): Delete.
	(DO_REGISTERS_INFO): Delete.
	(FUNCTION_START_OFFSET, IN_SIGTRAMP, REGISTER_VIRTUAL_SIZE):
	Delete.
	(REGISTER_CONVERT_FROM_TYPE, REGISTER_CONVERT_TO_TYPE): Convert
	from macros to functions.

	* mips-tdep.c (mips_gdbarch_init): Set the above in the gdbarch.
	(mips_register_convertible, mips_register_convert_to_virtual,
	mips_register_convert_to_raw): Make static.
	(mips_read_sp): New function.
	(mips_gdbarch_init): Set gdbarch read_sp to mips_read_sp.
	(mips_do_registers_info): Make static.
	(mips_gdbarch_init): Insert mips_do_registers_info into gdbarch.
	(in_sigtramp): Make static, rename to mips_pc_in_sigtramp.
	(mips_register_convert_from_type, mips_register_convert_to_type):
	New functions.
	(mips_gdbarch_init): Set up function_start_offset, 
	register_virtual_size, pc_in_sigtramp.

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

	* infcmd.c (vector_info): New function.
	(_initialize_infcmd): Add command "info vector".
	(print_vector_info): New function.

	* gdbarch.sh (PRINT_VECTOR_INFO): New method
	* gdbarch.h, gdbarch.c: Regenerate.

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

	* infcmd.c (do_registers_info): Rename parameter ``fpregs'' to
	``print_all''.  Only print vector registers when ``print_all''.

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

	* i387-tdep.h (i387_print_float_info): Add `args' parameter.
	* i387-tdep.c (i387_print_float_info): Add `args' parameter.

	* gdbarch.sh (PRINT_FLOAT_INFO): Change to a predicate method.
	Add `args' parameter.
	* gdbarch.h, gdbarch.c: Regenerate.
	
	* arm-tdep.c (arm_print_float_info): Add the parameter `args'.
	
	* infcmd.c (float_info): Call print_float_info.
	(print_float_info): New function.  By default, print the
	floating-point registers.

	* arch-utils.h (default_print_float_info): Delete declaration.
	* arch-utils.c (default_print_float_info): Delete function.
	
2002-08-16  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/nm-i386v.h (FLOAT_INFO): Remove already commented
	out define.

	* i387-tdep.c (i387_print_float_info): Add comment about ignoring
	FRAME.

	* NEWS: Mention that the i[3456]-*-aix target has been made obsolete.
	* configure.host: Make i[3456]86-*-aix host obsolete.
	* configure.tgt: Make i[3456]86-*-aix target obsolete.
	* config/i386/i386aix.mh, config/i386/i386aix.mt,
	config/i386/nm-i386aix.h, condig/i386/tm-i386aix.h,
	config/i386/xm-i386aix.h: Make files obsolete.
	* i386aix-nat.c: Make file obsolete.
	* Makefile.in (ALLDEPFILES): Remove i386aix-nat.c.
	(i386aix-nat.o): Make target obsolete.

	* config/i386/nm-gnu.h: Removed.
	* config/i386/nm-i386gnu.h: New file.
	(THREAD_STATE_FLAVOR, THREAD_STATE_SIZE,
	THREAD_STATE_SET_TRACED, THREAD_STATE_CLEAR_STATE, ATTACH_DETACH):
	Moved here from ...
	* config/i386/tm-i386gnu.h: ... here.  Removed.
	* config/i386/xm-i386gnu.h: Removed.
	* config/i386/i386gnu.mh (XM_FILE): Set to xm-i386.h.
	(NAT_FILE): Set to nm-i386gnu.h.
	* config/i386/i386gnu.mt (TDEPFILES): Add i386gnu-tdep.o.
	* i386-tdep.c: New file.
	* Makefile.in (ALLDEPFILES): Add i386gnu-nat.c and i386gnu-tdep.c.
	(i386gnu-tdep.o): Specify dependencies.

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

	* config/i386/tm-i386sco5.h: Include "i386/tm-i386v4.h" instead of
	"i386/tm-i386.h", "i386/tm-i386v.h" and "config/tm-sysv.h".
	Adjust a few comments to reflect reality a bit closer.
	(KERNEL_U_SIZE, TARGET_HAS_HARDWARE_WATCHPOINTS,
	TARGET_CAN_USE_HARDWARE_WATCHPOINT, HAVE_CONTINUEABLE_WATCHPOINT,
	HAVE_STEPPABLE_WATCHPOINT, STOPPED_BY_WATCHPOINT,
	target_insert_watchpoint, target_remove_watchpoint):
	Move defines to ...
	* config/i386/nm-i386sco5.h: ... here.
	(kernel_u_size): Add prototype.  Improve a few comments and add
	protection against multiple inclusion.
	
	* config/i386/nm-i386sco.h (FLOAT_INFO): Remove already commented
	out define.

	* uw-thread.c (SP_ARG0): Define if not already defined.
	* config/i386/tm-i386.h (SO_ARG0): Remove define.

	* config/i386/tm-i386v4.h (HAVE_I387_REGS): Remove define.

	* config/i386/tm-i386.h: Don't include "regcache.h".

	* i387-tdep.h (i387_print_float_info): New prototype.
	* i387-tdep.c (print_i387_value, print_i387_ext,
	print_i387_status_word, print_i387_control_word): Add `struct
	ui_file *' argument and use it for output.
	(i387_print_float_info): Renamed from i387_float_info.  Add
	`struct gdbarch *' and `struct ui_file *' arguments and use the
	latter for output.
	* i386-tdep.c: Include "i387-tdep.h".
	(i386_gdbarch_init): Set print_float_info.
	* config/i386/tm-i386.h (i387_float_info): Remove prototype.
	(FLOAT_INFO): Remove define.

2002-08-13  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_push_arguments): Rename to
	mips_eabi_push_arguments, and tune for EABI.
	(MIPS_REGS_HAVE_HOME_P): Delete.
	(struct gdbarch_tdep): Remove mips_regs_have_home_p field.
	(mips_gdbarch_init): Set gdbarch push_arguments for eabi.
	Delete references to mips_regs_have_home_p.

2002-08-14  Keith Seitz  <keiths@redhat.com>

	* Makefile.in (install-gdbtk): Create insight plugin directory.
	Install plugins.tcl file.

2002-08-14  Keith Seitz  <keiths@redhat.com>

	* configure.in: Move SUBDIRS to near top of the file so that
	--enable options may add things to it.
	If gdbtk is enabled, add gdbtk directory to SUBDIRS and configdirs.
	* configure: Regenerate.

2002-08-13  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_o32o64_push_arguments):  New function, 
	cloned from mips_push_arguments, tuned for o32/o64 ABI.
	(mips_gdbarch_init): Set gdbarch_push_arguments to new func.

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

	* vax-tdep.c (vax_get_saved_register): Delete function.
	(vax_gdbarch_init): Update.
	* ns32k-tdep.c (ns32k_get_saved_register): Delete function.
	(ns32k_gdbarch_init): Update.
	* alpha-tdep.c (alpha_get_saved_register): Delete function.
	(alpha_gdbarch_init): Update.

2002-08-13  Andrew Cagney  <cagney@redhat.com>

	* regcache.c (init_regcache_descr): Overallocate the
	raw_register_valid_p array including space for NUM_PSEUDO_REGS.
	(registers_changed): Replace NUM_REGS+NUM_PSEUDO_REGS with
	nr_raw_registers.
	(set_register_cached): Add range checking assertions.  Use
	current_regcache.

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

	* i386-tdep.c (i386_stab_reg_to_regnum): Return correct register
	numbers for MMX registers.

2002-08-13  Andrew Cagney  <cagney@redhat.com>

	* i386-tdep.c (i386_gdbarch_init): Use
	generic_unwind_get_saved_register.

2002-08-13  Kevin Buettner  <kevinb@redhat.com>

	* procfs.c (procfs_can_use_hw_breakpoint): New function.
	(init_procfs_ops): Define ``to_can_use_hw_breakpoint'' for procfs
	target vector.
	* config/mips/nm-irix5.h (TARGET_CAN_USE_HARDWARE_WATCHPOINT):
	Delete.  Add comment regarding this now-deleted target method.

2002-08-13  Stephane Carrez  <stcarrez@nerim.fr>

	* m68hc11-tdep.c (M68HC12_NUM_PSEUDO_REGS): New define.
	(M68HC12_HARD_PC_REGNUM): Define specific PC for 68HC12 (pseudo reg).
	(m68hc11_pseudo_register_read): Compute the 68HC12 PC using the
	real PC and the page number (if it's within the memory bank window).
	(m68hc11_pseudo_register_write): Likewise when saving.
	(m68hc11_register_name): Name the virtual pc 'pc' and the real one ppc.
	(m68hc11_register_virtual_type): Return uint32 for virtual pc.
	(m68hc11_register_raw_size): And use 32-bit for it.
	(m68hc11_gdbarch_init): Use 32-bit address for 68HC12 if the
	16K memory bank is used by the prog; also use the virtual pc.

2002-08-13  Stephane Carrez  <stcarrez@nerim.fr>

	* m68hc11-tdep.c (m68hc11_elf_make_msymbol_special): New function.
	(m68hc11_gdbarch_init): Install it in gdbarch.
	(MSYMBOL_SET_RTC, MSYMBOL_SET_RTI): New to set symbol specific flags.
	(MSYMBOL_IS_RTC, MSYMBOL_IS_RTI): New to test these flags.
	(MSYMBOL_SIZE): New for documentation.
	(insn_return_kind): Enum to specify how a function returns.
	(frame_extra_info): Cleanup and record the return mode.
	(gdbarch_tdep, USE_PAGE_REGISTER): New to control the use of page 
	register in address computation.
	(m68hc11_get_return_insn): New to obtain the return instruction used
	by the function.
	(m68hc11_frame_init_saved_regs): Take into account the return
	instruction used by the function for far and interrupt functions.
	(m68hc11_init_extra_frame_info): Take into account page register.
	(m68hc11_frame_args_address): Adjust according to the return mode.
	(show_regs): Print page register only when it's used.

2002-08-13  Stephane Carrez  <stcarrez@nerim.fr>

	* m68hc11-tdep.c (HARD_PAGE_REGNUM): Define for 68HC12 page register.
	(M68HC11_LAST_HARD_REG, m68hc11_register_names): Update.
	(m68hc11_register_virtual_type): Return a 8-bit type for 8-bit
	registers.
	(m68hc11_register_raw_size): Likewise.

2002-08-13  Andrew Cagney  <cagney@redhat.com>

	* i386-tdep.c (i386_register_name): Handle mmx registers.
	(mmx_regnum_p): New function.
	(i386_mmx_names): New array.
	(mmx_num_regs): New variable.
	(i386_pseudo_register_read): New function.
	(i386_pseudo_register_write): New function.
	(mmx_regnum_to_fp_regnum): New function. Code from Fernando Nasser.

	* regcache.c (regcache_raw_read_unsigned): New function.
	(regcache_raw_read_signed): New function.
	* regcache.h (regcache_raw_read_unsigned): Declare.
	(regcache_raw_read_signed): Declare.

2002-08-13  Andrew Cagney  <cagney@redhat.com>

	* regcache.c (regcache_raw_read_as_address): Delete function.
	(regcache_cooked_read_signed): New function.
	(regcache_cooked_read_unsigned): New function.
	* regcache.h (regcache_cooked_read_signed): Declare.
	(regcache_cooked_read_unsigned): Declare.
	(regcache_raw_read_as_address): Delete declaration.

	* blockframe.c (generic_read_register_dummy): Use
	regcache_cooked_read_unsigned.
	* i386-tdep.c (i386_extract_struct_value_address): Use
	regcache_cooked_read_unsigned.

2002-08-13  Stephane Carrez  <stcarrez@nerim.fr>

	* m68hc11-tdep.c (m68hc11_gdbarch_init): Set int, double and long
	double sizes according to ELF ABI flags.
	(gdbarch_tdep): Record elf_flags.

2002-08-13  Stephane Carrez  <stcarrez@nerim.fr>

	* m68hc11-tdep.c (M6812_OP_PSHX, M6812_OP_PSHY): New defines.
	(m6812_prolog): They can appear in 68HC12 function prologue.
	(m68hc11_frame_chain): Cleanup.

2002-08-12  Andrew Cagney  <cagney@redhat.com>

	* i386-tdep.h (i386_register_byte, i386_register_raw_size): Delete
	declarations.
	* i386-linux-tdep.c (i386_linux_register_byte): Delete function.
	(i386_linux_register_raw_size): Delete function.
	(i386_linux_init_abi): Update.
	* i386-tdep.c (i386_register_raw_size): Delete function.
	(i386_register_byte): Delete function.
	(i386_gdbarch_init): Update.
	(i386_register_size): Delete array.
	(i386_register_offset): Delete array.

	* config/i386/tm-symmetry.h (REGISTER_BYTE): Delete macro.
	(REGISTER_RAW_SIZE): Delete macro.
	* config/i386/tm-ptx.h (REGISTER_RAW_SIZE): Delete macro.
	(REGISTER_BYTE): Delete macro.

2002-08-11  Aidan Skinner <aidan@velvet.net>

	* ada-lang.c (ada_lookup_partial_symbol)
	(to_fixed_variant_branch_type) (find_line_in_linetable): Fix
	prototype names so that grep ^func works properly.

	* ada-lang.c (ada_array_element_type)
	(ada_lookup_partial_symbol): Fix typos in parameter list.

	* ada-valprint.c (val_print_packed_array_elements) (ada_val_print_1):
	Fix prototype names so that grep ^func works properly.
 	
2002-08-10  Andrew Cagney  <cagney@redhat.com>
	    Elena Zannoni  <ezannoni@redhat.com>
	    Martin M. Hunt  <hunt@redhat.com>

	* gdbtypes.c (build_builtin_type_vec128): Set the vector bit.
	(build_builtin_type_vec128i): Set the vector bit.
	* gdbtypes.h (builtin_type_vec64, builtin_type_vec64i): Declare.
	* gdbtypes.c (builtin_type_vec64, builtin_type_vec64i): Define.
	(build_builtin_type_vec64): New function.
	(build_builtin_type_vec64i): New function.
	(build_gdbtypes): Initialize builtin_type_vec64 and
	builtin_type_vec64i.

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

	* regcache.c (regcache_dump): Compare the register offset
	with REGISTER_BYTE.
	* arch-utils.c (generic_register_byte): New function.
	* arch-utils.h (generic_register_byte): Declare.
	* gdbarch.sh (REGISTER_BYTE): Default to generic_register_byte.
	* gdbarch.h, gdbarch.c: Regenerate.

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

	* regcache.c: Include "gdbcmd.h"
	(_initialize_regcache): Add commands "maintenance print
	registers", "maintenance print raw-registers" and "maintenance
	print cooked-registers".
	(enum regcache_dump_what): Define.
	(dump_endian_bytes): New function.
	(regcache_dump): New function.
	(regcache_print): New function.
	(maintenance_print_registers): New function.
	(maintenance_print_raw_registers): New function.
	(maintenance_print_cooked_registers): New function.
	* Makefile.in (regcache.o): Update dependencies.

2002-08-09  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (ROUND_DOWN, ROUND_UP): Move to global scope.
	(mips_push_arguments): Correct some comments.  Use paddr_nz
	for printing addresses in debug output.  Replace static
	allocation using MAX_REGISTER_RAW_SIZE with alloca.
	(mips_n32n64_push_arguments): New function, cloned from
	mips_push_arguments and tuned for the n32/n64 ABI.
	(mips_push_register): Buffer needs dynamic allocation.
	(mips_print_register): Ditto.
	(do_gp_register_row): Ditto.
	(mips_store_return_value): Ditto.
	(mips_gdbarch_init): Set gdbarch_push_arguments per ABI.

2002-08-09  Don Howard  <dhoward@redhat.com>

	* memattr.c (mem_info_command): Print special case of upper bound
	as max CORE_ADDR + 1.

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

	* mips-tdep.c (mips_n32n64_use_struct_convention): N32 only 
	returns structs by ref if they're too big to fit in two registers.

2002-08-09  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_init_extra_frame_info): Initialize SP_REGNUM's
	saved regs value.
	(read_next_frame_reg): Call FRAME_INIT_SAVED_REGS instead of
	mips_find_saved_regs().
	(mips_pop_frame): Likewise.

2002-08-09  Kevin Buettner  <kevinb@redhat.com>

	* blockframe.c (frame_saved_regs_register_unwind): Revise
	PC_IN_CALL_DUMMY assertion to only apply when generic dummy
	frames are in use.

2002-08-09  Grace Sainsbury  <graces@redhat.com>
        
	* remote.c: (remote_wait, remote_async_wait): Add check for awatch
        T-packets; the 'a' is not taken as a register number.
	(remote_check_watch_resources, remote_stopped_by_watchpoint)
        (remote_stopped_data_address): New functions; add to target
        vector.
        (remote_insert_hw_breakpoint, remote_remove_hw_breakpoint): Change
        prototypes to match other implementations of this
        function. replace integer argument with pointer -- the length
        field in the Z-packet is the length of what is pointed to or 1 if
        pointer is null. Add to target vector.
        (remote_insert_watchpoint, remote_remove_watchpoint): Add to
        target vector.

        From Mark Salter:
        * remote.c (remote_wait): Add support to extract optional
        watchpoint information from T-packet. Ignore unrecognized
        optional info in T-packet.
        (remote_async_wait): Ditto.

2002-08-09  Corinna Vinschen  <vinschen@redhat.com>

	* cli/cli-dump.c: Change fopen modes to use binary open modes
	as defined in include/fopen-bin.h throughout.

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

	* mips-tdep.c: Minor whitespace and indentation clean-ups.

2002-08-08  Kevin Buettner  <kevinb@redhat.com>

	* doublest.c (store_floating): Avoid floatformat_from_doublest()
	assertion failure by returning early after a warning.

2002-08-08  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_find_saved_regs): Make static.
	(mips_frame_init_saved_regs): New function.
	(mips_gdbarch_init): Setup FRAME_INIT_SAVED_REGS method.
	* config/mips/tm-mips.h (FRAME_INIT_SAVED_REGS): Delete macro.
	(mips_find_saved_regs): Delete declaration.

2002-08-08  Grace Sainsbury  <graces@redhat.com>

	* remote.c (remote_wait, remote_async_wait): Change
        thread_num from int to ULONGEST.
	(unpack_varlen_hex): Change result parameter from
	int * to ULONGEST *.

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

	* configure.tgt: Replace powerpc-*-sysv*, powerpc-*-elf*,
	powerpcle-*-eabi*, powerpcle-*-sysv* and powerpcle-*-elf* with
	powerpc*-*-*.
	* MAINTAINERS: Remove redundant rs6000-ibm-aix4.1 target.

2002-08-08  Andrew Cagney  <cagney@redhat.com>

	* gcore.c (override_derive_stack_segment): Delete variable.
	(preempt_derive_stack_segment): Delete function.
	(derive_stack_segment): Delete function.
	(default_derive_stack_segment): Renamed to derive_stack_segment.
	(override_derive_heap_segment): Delete variable.
	(preempt_derive_heap_segment): Delete function.
	(derive_heap_segment): Delete function.
	(default_derive_heap_segment): Rename to derive_heap_segment.

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

	* config/mips/tm-mips.h: Remove #define USE_STRUCT_CONVENTION.
	* mips-tdep.c (mips_EABI_use_struct_convention, 
	mips_OABI_use_struct_convention, mips_NABI_use_struct_convention):
	New functions.  (mips_use_struct_convention): Delete.
	(mips_gdbarch_init): set use_gdbarch_convention.

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

	*  mips-tdep.c: gdbarch-ify reg_struct_has_addr.
	(mips_eabi_reg_struct_has_addr, mips_n32n64_reg_struct_has_addr, 
	mips_o32_reg_struct_has_addr): New functions.
	(mips_gdbarch_init): Set gdbarch reg_struct_has_addr.

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

	* regcache.c (pseudo_register): Delete function.
	(fetch_register): Delete function.
	(store_register): Delete function.
	(regcache_raw_read, legacy_read_register_gen): Use
	target_fetch_registers instead of fetch_register.
	(legacy_write_register_gen, regcache_raw_write): Use
	target_store_register instead of store_register.
	(write_register_bytes): Ditto.

	* gdbarch.sh (FETCH_PSEUDO_REGISTER): Delete.
	(STORE_PSEUDO_REGISTER): Delete.
	* gdbarch.h, gdbarch.c: Regenerate.

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

	* cli/cli-dump.c (add_dump_command): Explicitely use "b" flag to
	write dump file binary.

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

	*  mips-tdep.c (mips_find_saved_regs): Adjust stack according
	to MIPS_SAVED_REGSIZE, not GDB_TARGET_IS_MIPS64.  Enhance comment.
	(mips_gdbarch_init): Set N32 target to be mips64.

2002-08-06  Kevin Buettner  <kevinb@redhat.com>

	* frame.c (find_saved_register): Break out of loop once saved
	register address is found.  Don't mention sparc in loop comment
	anymore.

2002-08-06  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_gdbarch_init): For the N32 ABI, set
	mips_default_saved_regsize to 8.

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

	* gcore.c: Do not include <sys/procfs.h>.
	* Makefile.in (gcore.o): Update dependencies.

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

	* configure.tgt: Make arc-*-* obsolete.
	* NEWS: Mention that arc-*-* has been identifed as obsolete.
	* MAINTAINERS: Make arc-elf obsolete.
	* arc-tdep.c: Make file obsolete.
	* config/arc/arc.mt: Ditto.
	* config/arc/tm-arc.h: Ditto.

2002-08-05  Theodore A. Roth  <troth@verinet.com>

	* avr-tdep.c (avr_skip_prologue): Fix to return the correct pc.

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

	* mcore-tdep.c (mcore_gdbarch_init): Use
	generic_unwind_get_saved_register instead of
	generic_get_saved_register.
	* v850-tdep.c (v850_gdbarch_init): Ditto.
	* frv-tdep.c (frv_gdbarch_init): Ditto.
	* mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
	* s390-tdep.c (s390_gdbarch_init): Ditto.
	* d10v-tdep.c (d10v_gdbarch_init): Ditto.
	* config/mn10200/tm-mn10200.h (GET_SAVED_REGISTER): Ditto.
	* config/h8300/tm-h8300.h (GET_SAVED_REGISTER): Ditto.

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

	* objfiles.h: Add missing #include "symfile.h"

	* Makefile.in (objfiles_h): Add dependency on symfile.h and dependents.

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

	From 2002-08-01 david carlton <carlton@math.stanford.edu>:
	* hpread.c (hpread_read_struct_type): Deleted superfluous setting
	of FIELD_BITSIZE.

2002-08-04  Daniel Jacobowitz  <drow@mvista.com>

	* NEWS: Cleanup and nitpick.

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

	* NEWS: Cleanup.  Use *-linux*-gnu*.  Only use `*' for headings.

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

	* Makefile.in (gdbtk-bp.o): Update dependencies.
	(gdbtk-register.o): Ditto.
	(gdbtk-varobj.o): Ditto.

2002-08-03  Andrew Cagney  <cagney@redhat.com>

	* m68hc11-tdep.c (m68hc11_pseudo_register_read): Replace
	m68hc11_fetch_pseudo_register.
	(m68hc11_pseudo_register_write): Replace
	m68hc11_store_pseudo_register.
	(m68hc11_gdbarch_init): Update.

Fri Aug  2 15:53:50 2002  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh: Include "gdb_string.h".
	* gdbarch.c: Regenerate.

	* regcache.c: Include "gdb_string.h".
	* ax-general.c: Ditto.
	* varobj.c: Ditto.
	* std-regs.c: Ditto.
	* fbsd-proc.c: Ditto.
	* thread.c: Ditto.

	* Makefile.in (regcache.o): Update dependencies.
	(thread.o, gdbarch.o): Ditto.
	(ax-general.o, gdbarch.o): Ditto.
	(varobj.o, std-regs.o): Ditto.
	(fbsd-proc.o): Specify dependencies.

2002-08-02  Andrew Cagney  <cagney@redhat.com>

	* regcache.c (regcache_cooked_read): Rename rawnum parameter to
	regnum.
	(regcache_cooked_write): Ditto.

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

	* regcache.c (regcache_cooked_read): New function.
	(regcache_cooked_write): New function.
	(read_register_gen): Rewrite using regcache_cooked_read.
	(write_register_gen): Rewrite using regcache_cooked_write.

	* regcache.h (regcache_cooked_read, regcache_cooked_write):
	Declare.

2002-08-02  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (pseudo_register_read, pseudo_register_write):
	Replace the architecture methods register_read and register_write.
	* gdbarch.h, gdbarch.c: Regenerate.
	* regcache.c (init_regcache_descr): Update.
	(read_register_gen): Update.
	(write_register_gen): Update.
	(supply_register): Update comment.

	* sh-tdep.c (sh_gdbarch_init): Update.
	(sh_pseudo_register_read, sh64_pseudo_register_read): Add
	`regcache' and `gdbarch' parameters.  Make `buffer' a void
	pointer.  Update code.
	(sh_pseudo_register_write, sh64_pseudo_register_write): Add
	`regcache' and `gdbarch' parameters.  Make `buffer' a constant
	void pointer.  Update code.
	(sh64_register_write): Delete.
	(sh4_register_read): Delete.
	(sh64_register_read): Delete.
	(sh4_register_write): Delete.
	(sh_sh4_register_convert_to_raw): Make `from' parameter a constant
	void pointer, `to' parameter a void pointer.
	(sh_sh64_register_convert_to_raw): Ditto.

2002-08-01  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_register_virtual_type): Use architecture
	invariant return values.

2002-08-01  Andrew Cagney  <cagney@redhat.com>

	* linux-proc.c: Include "gdb_string.h".
	* Makefile.in (linux-proc.o): Update dependency list.

2002-08-01  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_gdbarch_init): Add comments.  Fix typo in
	comment.

2002-08-01  Grace Sainsbury  <graces@redhat.com>

	* target.h: Add to_insert_hw_breakpoint, to_remove_hw_breakpoint,
	to_insert_watchpoint, to_remove_watchpoint,
	to_stopped_by_watchpoint, to_stopped_data_address,
	to_region_size_ok_for_hw_watchpoint, to_can_use_hw_breakpoint to
	target vecctor. Define their corresponding macros so they call
	them.
	
	* target.c: Add default and debug versions of for
	to_insert_hw_breakpoint, to_remove_hw_breakpoint,
	to_insert_watchpoint, to_remove_watchpoint,
	to_stopped_by_watchpoint, to_stopped_data_address,
	to_region_size_ok_for_hw_watchpoint, to_can_use_hw_breakpoint.

2002-08-01  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_register_virtual_type): New function.
	(mips_gdbarch_init): Register mips_register_virtual_type()
	with gdbarch machinery.
	* config/mips/tm-irix6.h (mips/tm-bigmips64.h): Include
	this file instead of tm-bigmips.h.
	(MIPS_REGSIZE): Delete this macro.
	(REGISTER_VIRTUAL_TYPE): Delete macro.  Undef macro so that
	multiarch version in mips-tdep.c will be found.

2002-08-01  Andrew Cagney  <cagney@redhat.com>

	* NEWS: Menion that CHILL has been made obsolete.

	* gdbtypes.c (chill_varying_type): Make chill references obsolete.
	* stabsread.c (read_range_type): Ditto.
	* gdbtypes.h: Ditto.
	* language.c (binop_type_check): Ditto.
	(binop_result_type): Ditto.
	(integral_type): Ditto.
	(character_type): Ditto.
	(string_type): Ditto.
	(boolean_type): Ditto.
	(structured_type): Ditto.
	(lang_bool_type): Ditto.
	(binop_type_check): Ditto.
	* language.h (_LANG_chill): Ditto.
	* dwarfread.c (set_cu_language): Ditto.
	* dwarfread.c (CHILL_PRODUCER): Ditto.
	* dwarfread.c (handle_producer): Ditto.
	* expression.h (enum exp_opcode): Ditto.
	* eval.c: Ditto for comments.
	* typeprint.c (typedef_print) [_LANG_chill]: Ditto.
	* expprint.c (print_subexp): Ditto.
	(print_subexp): Ditto.
	* valops.c (value_cast): Ditto.
	(search_struct_field): Ditto.
	* value.h (COERCE_VARYING_ARRAY): Ditto.
	* symfile.c (init_filename_language_table): Ditto.
	(add_psymbol_with_dem_name_to_list): Ditto.
	* valarith.c (value_binop): Ditto.
	(value_neg): Ditto.
	* valops.c (value_slice): Ditto.
	* symtab.h (union language_specific): Ditto.
	(SYMBOL_INIT_LANGUAGE_SPECIFIC): Ditto.
	(SYMBOL_DEMANGLED_NAME): Ditto.
	(SYMBOL_CHILL_DEMANGLED_NAME): Ditto.
	* defs.h (enum language): Ditto.
	* symtab.c (got_symtab): Ditto.
	* utils.c (fprintf_symbol_filtered): Ditto.

	* ch-typeprint.c: Make file obsolete.
	* ch-valprint.c: Make file obsolete.
	* ch-lang.h: Make file obsolete.
	* ch-exp.c: Make file obsolete.
	* ch-lang.c: Make file obsolete.

	* Makefile.in (FLAGS_TO_PASS): Do not pass CHILL or CHILLFLAGS or
	CHILL_LIB.
	(TARGET_FLAGS_TO_PASS): Ditto.
	(CHILLFLAGS): Obsolete.
	(CHILL): Obsolete.
	(CHILL_FOR_TARGET): Obsolete.
	(CHILL_LIB): Obsolete.
	(SFILES): Remove ch-exp.c, ch-lang.c, ch-typeprint.c and
	ch-valprint.c.
	(HFILES_NO_SRCDIR): Remove ch-lang.h.
	(COMMON_OBS): Remove ch-valprint.o, ch-typeprint.o, ch-exp.o and
	ch-lang.o.
	(ch-exp.o, ch-lang.o, ch-typeprint.o, ch-valprint.o): Delete
	targets.

2002-07-31  Joel Brobecker  <brobecker@gnat.com>

	* dwarf2read.c (set_cu_language): Add handler for LANG_Ada95.
	This does not change anything at the moment, but will be helpful
	later when full Ada support is integrated.

2002-07-31  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (_initialize_mips_tdep): Add "n64" to "set mips abi"
	help message.

2002-07-31  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_push_arguments): Fetch gdbarch_tdep struct
	and save it in a local variable.  Use variable in later test.

2002-07-31  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_find_abi_section): Add N64 ABI recognition
	test.  (Thanks to Daniel Jacobowitz.)
	
2002-07-31  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (enum mips_abi): Add MIPS_ABI_N64.
	(mips_abi_strings): Add "n64".
	(mips_gdbarch_init): Add test for n64 abi.  Add MIPS_ABI_N64 case.

2002-07-31  Kevin Buettner  <kevinb@redhat.com>

	* config/mips/tm-irix6.h (MIPS_REGSIZE): Define to be 8.
	(REGISTER_VIRTUAL_TYPE): Some registers are now 64 bits wide.

2002-07-31  Kevin Buettner  <kevinb@redhat.com>

	* utils.c (host_pointer_to_address, address_to_host_pointer):
	Use gdb_assert() instead of explicit call to internal_error().

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

	* Makefile.in (rs6000-nat.o): Update dependencies.

	From Nicholas Duffek:
	* Makefile.in (ALLDEPFILES): Add aix-thread.c.
	(aix-thread.o): New rule.
	* configure.host (gdb_host): Set to aix432 on AIX 4.3.2+.
	* config/powerpc/aix432.mh: New file.

2002-07-30  Daniel Jacobowitz  <drow@mvista.com>

	* ppc-linux-tdep.c (ELF_NGREG, ELF_NFPREG, ELF_NVRREG)
	(ELF_FPREGSET_SIZE, ELF_GREGSET_SIZE): New enums.
	(fetch_core_registers, ppc_linux_supply_gregset)
	(ppc_linux_supply_fpregset): New functions.
	(ppc_linux_regset_core_fns): New.
	(_initialize_ppc_linux_tdep): Call add_core_fns.
	* ppc-tdep.h: Add prototypes for ppc_linux_supply_fpregset
	and ppc_linux_supply_gregset.
	* ppc-linux-nat.c (supply_gregset): Call ppc_linux_supply_gregset.
	(supply_fpregset): Call ppc_linux_supply_fpregset.
	* config/powerpc/linux.mh (NATDEPFILES): Remove core-regset.o and
	corelow.o.
	* config/powerpc/linux.mt (TDEPFILES): Add corelow.o.

2002-07-30  Daniel Jacobowitz  <drow@mvista.com>

	* symtab.c (lookup_symbol): Demangle before lowercasing.

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

	* symtab.h: Replace #include "gdb_obstack.h" with opaque
	declaration.
	* cli/cli-cmds.c, cli/cli-script.c: Include "gdb_string.h".
	* gnu-v3-abi.c, arc-tdep.c, cli/cli-decode.c: Ditto.
	* avr-tdep.c, mon960-rom.c, i960-tdep.c: Ditto.
	* arch-utils.c, cli/cli-setshow.c: Unconditionally include
	"gdb_string.h".
	* Makefile.in (cli-script.o, cli-cmds.o): Update dependencies.
	(gnu-v3-abi.o, cli-setshow.o, i960-tdep.o): Ditto.
	(cli-decode.o, mi-cmd-var.o, mi-cmd-disas.o): Ditto.
	(avr-tdep.o, mon960-rom.o): Ditto.
	(aout_stabs_gnu_h): Define.
	(symtab_h): Remove $(gdb_obstack_h).

2002-07-30  Jim Blandy  <jimb@redhat.com>

	Patch from David Carlton <carlton@math.stanford.edu>:
	* gdbinit.in: Move the `dir' commands that add GDB's own source
	directory to the search path to the end, so that the `gdb' source
	directory will be searched first.

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

	* gdb_obstack.h: New file.
	* symtab.h: Include "gdb_obstack.h" instead of "obstack.h".
	(obstack_chunk_alloc, obstack_chunk_free): Delete macros.
	* objfiles.h: Include "gdb_obstack.h".
	* Makefile.in (gdb_obstack_h): Define.
	(symtab_h): Add $(gdb_obstack_h).
	(objfiles_h): Add $(gdb_obstack_h).
	
	* objfiles.c: Include "gdb_obstack.h" instead of "obstack.h".
	* macrotab.c, cp-valprint.c, dbxread.c: Ditto.
	* ch-typeprint.c, ch-valprint.c, dstread.c: Ditto.
	* macroexp.c, p-typeprint.c, stabsread.c: Ditto.
	* symtab.c, f-typeprint.c, mdebugread.c: Ditto.
	* p-valprint.c, symmisc.c, typeprint.c: Ditto.
	* symfile.c, coffread.c, c-typeprint.c: Ditto.
	* buildsym.c, bcache.c, ada-typeprint.c: Ditto.

	* Makefile.in (bcache.o): Update dependencies.
	(buildsym.o, c-typeprint.o, ch-typeprint.o): Ditto.
	(ch-valprint.o, coffread.o, cp-valprint.o): Ditto.
	(dbxread.o, dstread.o, f-typeprint.o): Ditto.
	(objfiles.o, p-typeprint.o, p-valprint.o): Ditto.
	(stabsread.o, symfile.o, symmisc.o): Ditto.
	(symtab.o, typeprint.o, macroexp.o): Ditto.
	(macrotab.o, mdebugread.o): Ditto.
	(f_lang_h, coff_sym_h, coff_symconst_h): Define.
	(coff_ecoff_h, aout_aout64_h): Define.
	(aout_stabs_gnu_h, libaout_h): Define.

2002-07-29  Andrew Cagney  <cagney@redhat.com>

	* regcache.c (struct regcache_descr): Rename nr_registers to
	nr_cooked_registers.  Revise comments describing the structure
	member fields.
	(init_regcache_descr): Update.
	(init_legacy_regcache_descr): Update.
	(read_register_gen, write_register_gen): When a cooked register in
	the raw register range, directly access the value from the raw
	register cache.

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

	* z8k-tdep.c: Do not include "obstack.h".
	* h8300-tdep.c, h8500-tdep.c: Ditto.
	* m68hc11-tdep.c, sh-tdep.c: Ditto.
	* valprint.c, v850-tdep.c: Ditto.
	* d10v-tdep.c, mn10300-tdep.c: Ditto.
	* mn10200-tdep.c: Ditto.

	* Makefile.in (z8k-tdep.o): Update dependencies.
	(m68hc11-tdep.o, valprint.o): Ditto.
	(v850-tdep.o, d10v-tdep.o): Ditto.
	(mn10300-tdep.o, sparc-tdep.o): Ditto.
	(sh-tdep.o, h8500-tdep.o, h8300-tdep.o): Ditto.
	(m32r-tdep.o, mn10200-tdep.o): Specify dependencies.
	(sh_opc_h, gdb_sim_sh_h): Define.
	(elf_sh_h, elf_bfd_h): Define.
	(opcode_m68hc11_h): Define.
	(OPCODES_SRC, OPCODES_DIR): define.
	(OPCODES): Use $(OPCODES_DIR).
	(gdb_sim_d10v_h): Rename sim_d10v_h.
	(gdb_sim_arm_h): Rename sim_arm_h.

2002-07-26  Kevin Buettner  <kevinb@redhat.com>

	* utils.c (host_pointer_to_address, address_to_host_pointer):
	Change internal_error() message to indicate function responsible
	for the error.

2002-07-26  Kevin Buettner  <kevinb@redhat.com>

	* ui-out.c (ui_out_field_core_addr): Remove unnecessary cast in
	calls to local_hex_string_custom().

2002-07-26  Kevin Buettner  <kevinb@redhat.com>

	* irix5-nat.c: Move IRIX shared library support from here...
	* solib-irix.c: ...to here.  Revised substantially to work with
	generic solib framework.

	* osabi.h (gdb_osabi): Add new enum constant GDB_OSABI_IRIX.
	* osabi.c (gdb_osabi_names): Add corresponding string for Irix.
	* mips-irix-tdep.c: New file.

	* Makefile.in (ALLDEPFILES): Add mips-irix-tdep.c and solib-irix.c.
	(mips-irix-tdep.o, solib-irix.o): New rules.
	* config/mips/irix5.mt (TDEPFILES): Add mips-irix-tdep.o, solib.o,
	solib-irix.o.
	* config/mips/irix6.mt (TDEPFILES): Likewise.
	* config/mips/irix6.mh (NATDEPFILES): Remove solib.o.

2002-07-26  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (coff/internal.h, bfd/libcoff.h, pthread.h): Remove
	disabled (via ``#if 0'') includes.

2002-07-26  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (special_register_p, supply_sprs64, supply_sprs32)
	(fetch_regs_user_thread, fetch_regs_kernel_thread, fill_sprs64)
	(fill_sprs32, store_regs_user_thread, store_regs_kernel_thread):
	Add support for the fpscr register.
	* rs6000-nat.c (regmap, fetch_inferior_registers)
	(store_inferior_registers, fetch_core_registers): Likewise.

2002-07-26  Kevin Buettner  <kevinb@redhat.com>

	* rs6000-nat.c (language.h): Include.
	(special_regs): Delete this array.
	(regmap): New function.
	(fetch_register, store_register):  Use regmap() to map gdb
	register numbers to ptrace register numbers.  Also, use
	outputs from regmap() to make decisions regarding type of
	ptrace() call to make.  In particular, don't compare against
	FIRST_UISA_SP_REGNUM or LAST_UISA_SP_REGNUM.
	(fetch_inferior_registers, store_inferior_registers): Where
	possible, obtain register numbers from tdep struct.  Don't
	refer to FIRST_UISA_SP_REGNUM or LAST_UISA_SP_REGNUM.
	* config/rs6000/tm-rs6000.h (FIRST_UISA_SP_REGNUM)
	(LAST_UISA_SP_REGNUM): Delete.
	
2002-07-25  Kevin Buettner  <kevinb@redhat.com>

	* rs6000-nat.c (ppc-tdep.h): Include.
	(fetch_registers, store_register, fetch_core_registers): Don't
	access registers[] directly.  Instead, use supply_register() or
	regcache_collect() as appropriate.
	(find_toc_address): Format hex address with local_hex_string().

2002-07-25  Andrew Cagney  <ac131313@redhat.com>

	* config/djgpp/fnchange.lst: Rename bfd/elf32-fr30.c and
	bfd/elf32-frv.c.

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

	* jv-exp.y: Marked all strings with _().
	(ClassInstanceCreationExpression, ArrayCreationExpression): Use
	internal_error.
	(MethodInvocation, CastExpression, parse_number, yyerror,
	java_type_from_name, push_expression_name, yylex): Typo fixes.

2002-07-24  Daniel Jacobowitz  <drow@mvista.com>

	* ui-file.c (struct tee_file, tee_file_new, tee_file_delete)
	(tee_file_flush, tee_file_write, tee_file_fputs)
	(tee_file_isatty): New.
	* ui-file.h (tee_file_new): Add prototype.

2002-07-24  Aidan Skinner <aidan@velvet.net>

	* ada-lang.c: Change k&r style function definitions to prototyped
	form.
	* ada-typeprint.c: Change k&r style function definitions to prototyped
	form.
	* ada-valprint.c: Change k&r style function definitions to prototyped
	form.
	
2002-07-24  Andrew Cagney  <cagney@redhat.com>

	* README: Remove reference to remote-bug.
	* Makefile.in (ALLDEPFILES): Remove m88k-nat.c, m88k-tdep.c and
	remote-bug.c.
	(m88k-nat.o): Delete rule.
	(m88k-tdep.o): Delete rule.
	(remote-bug.o): Delete rule.
	* MAINTAINERS: Mark as obsolete.
	* elfread.c (elf_symtab_read): Mention that m88k is obsolete.
	* m88k-tdep.c: Make file obsolete.
	* config/m88k/m88k.mh: Ditto.
	* config/m88k/delta88v4.mh: Ditto.
	* config/m88k/delta88v4.mt: Ditto.
	* config/m88k/delta88.mt: Ditto.
	* config/m88k/delta88.mh: Ditto.
	* remote-bug.c: Ditto.
	* config/m88k/tm-delta88.h: Ditto.
	* config/m88k/nm-delta88v4.h: Ditto.
	* config/m88k/xm-delta88.h: Ditto.
	* config/m88k/xm-dgux.h: Ditto.
	* config/m88k/tm-m88k.h: Ditto.
	* config/m88k/nm-m88k.h: Ditto.
	* config/m88k/tm-delta88v4.h: Ditto.
	* m88k-nat.c: Ditto.
	* cxux-nat.c: Ditto.
	* configure.host: Make m88*-motorola-sysv4*, m88*-motorola-sysv*
	and m88*-*-* obsolete.
	* configure.tgt: Make m88*-motorola-sysv4*, m88*-motorola-* and
	m88*-*-* obsolete.

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

	* findvar.c (extract_unsigned_integer): Make `addr' parameter
	constant.  Same for local pointer variables.
	(extract_signed_integer): Ditto.
	* defs.h (extract_unsigned_integer): Update.
	(extract_signed_integer): Update.

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

	* regcache.c (regcache_raw_write): Change buf parameter to a
	constant void pointer.
	(regcache_raw_read): Change buf parameter to a void pointer.
	(legacy_write_register_gen): Change myaddr parameter a constant
	void pointer.
	(supply_register): Change val parameter to a const void pointer.
	* regcache.h (regcache_raw_write): Update declaration.
	(regcache_raw_read): Update declaration.
	(supply_register): Update declaration.

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

	* defs.h (gdb_readline_wrapper): Declare.
	* utils.c (prompt_for_continue): Use gdb_readline_wrapper.
	* tracepoint.c (read_actions): Use gdb_readline_wrapper.
	* top.c (gdb_readline_wrapper): New function.
	(command_line_input): Use it.

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

	* regcache.h (regcache_raw_read, regcache_raw_write): Replace
	regcache_read and regcache_write.
	(regcache_raw_read_as_address): Replace regcache_read_as_address.
	* regcache.c: Update.
	* sh-tdep.c (sh64_push_arguments): Update comment.
	(sh_pseudo_register_read): Update.
	(sh_pseudo_register_write): Update.
	(sh4_register_read): Update.
	(sh4_register_write): Update.
	(sh64_pseudo_register_read): Update.
	(sh64_pseudo_register_write): Update.
	(sh64_register_read): Update.
	(sh64_register_write): Update.
	* i386-tdep.c (i386_extract_return_value): Update.
	(i386_extract_struct_value_address): Update.
	(i386_extract_return_value): Update.
	* blockframe.c (generic_read_register_dummy): Update.
	(generic_call_dummy_register_unwind): Update
	* infrun.c (write_inferior_status_register): Update.

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

	* parser-defs.h (expression_context_pc): Make this extern.
	(Thanks to Michael Snyder.)

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

	GDB 5.2.1 released from 5.2 branch.
	* NEWS: Mention changes in 5.2.1 including addition of AVR target.
	* README: Update to mention 5.2.1.

2002-07-23  Mark Salter  <msalter@redhat.com>

	* remote.c (remote_read_bytes): Fix check for error.

2002-07-22  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (language.h): Include.
	(ptrace_check, pdc_symbol_addrs, pdc_read_regs, pdc_write_regs)
	(pdc_read_data, pdc_write_data, pdc_alloc, pdc_realloc, pdc_dealloc):
	Print newlines at end of debug messages.
	(pdc_symbol_addrs, pdc_read_regs, pdc_write_regs, pdc_read_data)
	(pdc_write_data): Use local_hex_string() instead of %llx formats.

2002-07-22  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (ppc-tdep.h): Include.
	(special_register_p): New function.
	(supply_sprs64, supply_sprs32, fill_sprs64, fill_sprs32)
	(store_regs_user_thread): Use register number information from
	gdbarch_tdep struct instead of hardcoded offsets relative to
	FIRST_UISA_SP_REGNUM.
	(fetch_regs_kernel_thread, store_regs_kernel_thread):  Call
	special_register_p() instead of using FPLAST_REGNUM and
	LAST_UISA_SP_REGNUM as lower and upper bounds on the special
	register numbers.  Also, don't assume that LAST_UISA_SP_REGNUM
	will be MQ's register number.

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

	* aix-thread.c (ops): Rename to aix_thread_ops.
	(base_ops): Rename to base_target.
	(ops_attach): Rename to aix_thread_attach.
	(ops_detach): Rename to aix_thread_detach.
	(ops_resume): Rename to aix_thread_detach.
	(ops_wait):   Rename to aix_thread_wait.
	(ops_kill):   Rename to aix_thread_kill.
	(init_ops):   Rename to init_aix_thread_ops.
	(ops_fetch_register): Rename to aix_thread_fetch_register.
	(ops_store_register): Rename to aix_thread_store_register.
	(ops_mourn_inferior): Rename to aix_thread_mourn_inferior.
	(ops_thread_alive):   Rename to aix_thread_thread_alive.
	(ops_extra_thread_info: Rename to aix_thread_extra_thread_info.
	(ops_pid_to_str):  Rename to aix_thread_pid_to_str.
	(ops_xfer_memory): Rename to aix_thread_xfer_memory.
	(fetch_regs_lib):  Rename to fetch_regs_user_thread.
	(fetch_regs_kern): Rename to fetch_regs_kernel_thread.
	(store_regs_lib):  Rename to store_regs_user_thread.
	(store_regs_kern): Rename to store_regs_kernel_thread.

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

	* aix-thread.c (ops_prepare_to_store): Eliminate.
	(init_ops): Don't initialize ops.prepare_to_store.
	(store_regs_kern): Pre-fetch register buffers from child, 
	because some registers may not be in the cache.  Copy
	regs from register cache only if they are cached.
	(store_regs_lib): Copy regs from register cache only
	if they are cached.
	(fill_sprs32, (fill_sprs64, fill_fprs, fill_gprs32,
	fill_gprs64): Ditto.

2002-07-22  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (gdb_assert.h): Include.
	(fill_sprs64, fill_sprs32): Add selected asserts to make sure that
	register sizes (from register cache) match size of buffer holding
	register data.
	(fill_sprs32): Change parameter types to match those in the ptrace()
	buffer.
	(store_regs_lib): Likewise, but for 32-bit temporary variables.
	(ops_prepare_to_store): Rename loop variable ``i'' to ``regno''.

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

	* aix-thread.c (supply_sprs64): Cosmetic change.
	(supply_sprs32): Cosmetic change.
	(fill_gprs64, fill_gprs32, fill_fprs, fill_sprs32): New funcs.
	(fill_sprs64): Use regcache_collect instead of read_register.
	(store_regs_lib): Use regcache_collect instead of 
	read_register.  Use fill_sprs32 instead of fill_sprs64,
	if debugging a 32-bit architecture.
	(store_regs_kern): Use fill_gprs64 etc. to pull the values
	out of the register cache, instead of passing a pointer into
	the register cache directly to ptrace.  Use regcache_collect
	insteaad of read_register.
	(ops_prepare_to_store): Use target_read_registers instead
	of read_register_bytes.

2002-07-20  Aidan Skinner <aidan@velvet.net>

	* MAINTAINERS: Add self under write after approval. 
		
2002-07-20  Aidan Skinner <aidan@velvet.net>

	* ada-tasks.c: Change k&r style function definitions to prototyped
	form.
		
2002-07-19  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (x86-64-tdep.o): Add $(objfiles_h).
	* x86-64-tdep.c: Include "objfiles.h".
	(x86_64_gdbarch_init): Set in_solib_call_trampoline to
	in_plt_section.  From 2002-07-18 Michal Ludvig <mludvig@suse.cz>.

2002-07-17  Michal Ludvig  <michal@suse.cz>

	* dwarf2cfi.c (execute_stack_op): Complain on unknown DW_OP_ value.
	(update_context): Initialise cfa variable.

2002-07-17  Michael Snyder  <msnyder@redhat.com>

	* aix-thread.c: Shorten some long lines.  
	Bring comments into line with code spec.

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

	* infrun.c: Re-indent using gdb_indent.sh.

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

	* infrun.c (handle_inferior_event): Remove unneeded extra brace.
	Leave the indentation temporarily untouched, to minimize the diffs.

2002-07-18  Elena Zannoni  <ezannoni@redhat.com>

	* stabsread.c: Make os9k sections of the code obsolete,
	for real this time.
	* stabsread.h: Make os9k sections of the code obsolete.

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

	* linux-low.c (regsets_store_inferior_registers): Add free()
	at the end of a loop to prevent memory leak.
	* linux-x86-64-low.c (x86_64_regmap): Add CS, SS registers.
	(X86_64_NUM_GREGS): Count it from the size of x86_64_regmap.
	* config/sparc/tm-sp64linux.h: Make the rest of #endif
	line a comment.
	* Makefile.in (x86-64-linux-nat.o): Remove dependency on i387-tdep.h

2002-07-17  Jim Blandy  <jimb@redhat.com>

	* macrocmd.c (info_macro_command): Remove newline from error
	message.

2002-07-17  J"orn Rennecke <joern.rennecke@superh.com>

	* sh-tdep.c (sh_dsp_register_sim_regno): New function.
	(sh_gdbarch_init): Use it for sh-dsp.

2002-07-16  Kevin Buettner  <kevinb@redhat.com>

	* dwarf2read.c (read_initial_length): Handle older, non-standard,
	64-bit DWARF2 format.

2002-07-16  Joel Brobecker  <brobecker@gnat.com>

	* proc-api.c: use HAVE_SYS_PROC_H macro to avoid including
	<sys/proc.h> when not available.

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

	* NEWS: Mention that the i[34]86-*-os9k has been made obsolete.
	* stabsread.c: Make os9k sections of the code obsolete.
	* configure.tgt: Make i[3456]86-*-os9k target obsolete.
	* config/i386/i386os9k.mt: Make file obsolete.
	* Makefile.in (ALLDEPFILES): Remove remote-os9k.c.
	(COMMON_OBS): Remove os9kread.o
	(SFILES): Remove os9kread.c.
	(os9kread.o, remote-os9k.o): Make target obsolete.
	* remote-os9k.c: Make file obsolete.
	* os9kread.c: Make file obsolete.
	* Makefile.in

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

	* NEWS: Mention that the FR30 has been made obsolete.
	* fr30-tdep.c: Make file obsolete.
	* config/fr30/tm-fr30.h: Ditto.
	* config/fr30/fr30.mt: Ditto.
	* configure.tgt: Make fr30-*-elf obsolete.
	* MAINTAINERS: Make fr30-elf obsolete.

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

	* blockframe.c (get_pc_function_start): return 0 if the minimal symbol
	found is not inside a section.

2002-07-15  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (ptrace_check): Use safe_strerror() instead of
	strerror().
	(pdc_realloc): Use xrealloc() instead of realloc().

2002-07-15  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (PD_ERROR, CALL_BASE): Delete.
	(ops_resume, ops_wait, fetch_regs_lib, store_regs_lib)
	(ops_xfer_memory, ops_kill): Don't use PD_ERROR or CALL_BASE
	macros.

2002-07-15  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (ptrace_check): Eliminate goto.
	(sync_threadlists): Eliminate gotos.  Also, fix array overrun
	problem.

2002-07-15  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (gdbcmd.h): Include.
	(DEBUG, DBG, DBG2, dbg): Eliminate.
	(debug_aix_thread): New static global.
	(ptrace_check, pdc_symbol_addrs, pdc_read_regs, pdc_write_regs)
	(pdc_read_data, pdc_write_data, pdc_alloc, pdc_realloc, pdc_dealloc)
	(fetch_regs_lib, store_regs_lib, store_regs_kern): Rewrite
	invocations to DBG and DBG2 macros to test against
	``debug_aix_thread'' and call fprintf_unfiltered().
	(_initialize_aix_thread): Add new command "set debug aix-thread".

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

	From Gerhard Tonn <TON@de.ibm.com>:
	* s390-nat.c (fill_fpregset, fill_gregset): Use regcache_collect
	instead of supply_register.

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

	* dwarf2cfi.c: Include "gdb_assert.h".
	(frame_state_for): Use gdb_assert to check that fde->cie_ptr is
	non-NULL.
	(update_context): Do not use __func__.  Add missing ``break''.
	(update_context): Do not use __func__.

2002-07-15  Elena Zannoni  <ezannoni@redhat.com>

        * rs6000-tdep.c (rs6000_gdbarch_init): Remove variable print_insn
        and its setting.  Set gdbarch instruction printing functions
        directly.  For non-rs6000 case use new function
        gdb_print_insn_powerpc.
        (gdb_print_insn_powerpc): New function.

2002-07-13  Andrew Cagney  <ac131313@redhat.com>

	* NEWS: Mention that the d30v has been marked obsolete.
	* MAINTAINERS: Note that d30v / d30v-elf has been made obsolete.
	* configure.tgt: Mark d30v-*-* as obsolete.
	* d30v-tdep.c: Mark file as obsolete.
	* config/d30v/d30v.mt: Ditto.
	* config/d30v/tm-d30v.h: Ditto.

2002-07-13  Aidan Skinner <aidan@velvet.net>

	* ada-tasks.c (add_task_entry): replace calls to
	malloc() with xmalloc
	* ada-tasks.c (init_task_list): replace calls to free with xfree()
	
	* ada-lang.c (replace_operator_with_call, fill_in_ada_prototype,
	ada_finish_decode_line_1, all_sals_for_line
	ada_breakpoint_rewrite): replace calls to free() with xfree()
		
2002-07-12  Kevin Buettner  <kevinb@redhat.com>

	From Nicholas Duffek (with minor changes by Martin Hunt, 
	Louis Hamilton, and Kevin Buettner):
	* aix-thread.c: New file.

2002-07-12  Petr Sorfa <petrs@caldera.com>

        *  dwarf2read.c (dwarf2_invalid_attrib_class): New
        complaint for invalid attribute class or form.
        (read_func_scope): DW_AT_frame_base
        better handling of DW_AT_block*.
        (dwarf2_add_member_fn): DW_AT_vtable_elem_location
        better handling of DW_AT_block*.
        (read_common_block): DW_AT_location
        better handling of DW_AT_block*.
        (read_partial_die): DW_AT_location better handling
        of DW_AT_block*.
        (new_symbol): DW_AT_external better handling of
        DW_AT_block*. Proper initialization of variable
        "addr".
        (attr_form_is_block): New function that returns true
        if the attribute's form is of DW_FORM_block*.

2002-07-12  Peter Schauer  <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>

	* valops.c (find_method_list): Remove comment about
	removed STATIC_MEMFUNCP argument.
	(value_find_oload_method_list): Likewise.

2002-07-12  Kevin Buettner  <kevinb@redhat.com>

	From Nicholas Duffek:
	* rs6000-nat.c (vmap_ldinfo, xcoff_relocate_core): Call
	target_new_objfile_hook.

2002-07-12  Kevin Buettner  <kevinb@redhat.com>

	From Nicholas Duffek:
	* xcoffread.c (scan_xcoff_symtab): Recognize XMC_TD as a data storage
	csect.

2002-07-12  Andrew Cagney  <cagney@redhat.com>

	* MAINTAINERS: Mention --enable-sim-build-warnings.
	(m68hc11-elf): Disable sim build warnings.
	(m32r-elf): Mark as broken obsolete candidate.
	(x86_64-linux-gnu): Mark as buildable with -Werror.
	(arm-elf): Change -w to ``,'' which enables warnings but not
	-Werror.

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

	* bcache.h: Update copyright.
	(struct bstring, struct bcache): Move definition to "bcache.c".
	Replaced by opaque declaration.
	(bcache_xfree): Replace free_bcache.
	(bcache_xmalloc, bcache_memory_used): Declare.
	
	* bcache.c: Update copyright.
	(struct bstring, struct bcache): Moved to here from "bcache.h".
	Update comments.
	(bcache_xmalloc, bcache_memory_used): New functions.
	(bcache_xfree): Replace function free_bcache.
	
	* Makefile.in (objfiles.o): Add $(bcache_h).
	(objfiles_h): Remove $(bcache_h).
	(symfile.o): Add $(bcache_h).

	* symmisc.c: Update copyright.
	(print_symbol_bcache_statistics): Pass psymbol_cache by value.
	(print_objfile_statistics): Use bcache_memory_used.

	* symfile.c: Include "bcache.h".
	(reread_symbols): Use bcache_xfree.
	(reread_symbols): Use bcache_xmalloc and bcache_xfree.
	(add_psymbol_to_list): Pass psymbol_cache by value.
	(add_psymbol_with_dem_name_to_list): Ditto.

	* objfiles.h: Update copyright.
	(struct bcache): Declare opaque.  Do not include "bcache.h".
	(struct objfile): Change psymbol_cache and macro_cache to ``struct
	bcache'' pointers.
	* dwarf2read.c (macro_start_file): Pass macro_cache by value.

	* objfiles.c: Include "bcache.h".  Update copyright.
	(allocate_objfile): Use bcache_xmalloc to create psymbol_cache and
	macro_cache.
	(free_objfile): Use bcache_xfree.

2002-07-11  Grace Sainsbury  <graces@redhat.com>

	* monitor.c (monitor_fetch_register): Make name a constant.
	(monitor_store_register): Same.

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

	Based on patch from Daniel Berlin <dberlin@dberlin.org>.
	* buildsym.c: Include "demangle.h" for SYMBOL_INIT_DEMANGLED_NAME.
	(finish_block) For non-function blocks, hash the symbol table.  For
	function blocks, mark the symbol table as unhashed.
	* minsyms.c (msymbol_hash): Return hash value without taking modulus.
	(msymbol_hash_iw): Likewise.
	(add_minsym_to_hash_table): Take modulus of msymbol_hash's return
	value.
	(add_minsym_to_demangled_hash_table): Likewise for msymbol_hash_iw.
	(lookup_minimal_symbol): Likewise for both.
	* symtab.h (struct block): Add `hashtable' flag.  Comment the
	hashtable.
	(BLOCK_HASHTABLE, BLOCK_BUCKETS, BLOCK_BUCKET): New macro.
	(ALL_BLOCK_SYMBOLS): Update.
	(BLOCK_SHOULD_SORT): Do not sort hashed blocks.
	(struct symbol): Add `hash_next' pointer.
	* symtab.c (lookup_block_symbol): Search using the hash table when
	possible.
	(find_pc_sect_symtab): Use ALL_BLOCK_SYMBOLS.
	(search_symbols, find_addr_symbol): Likewise.

	* dstread.c (process_dst_block): Clear hashtable bit for new block.
	(read_dst_symtab): Likewise.
	* jv-lang.c (get_java_class_symtab): Likewise.
	* mdebugread.c: Include "gdb_assert.h".
	(shrink_block): Assert that the block being modified is not hashed.
	* coffread.c (patch_opaque_types): Use ALL_BLOCK_SYMBOLS.
	* symmisc.c (free_symtab_block): Walk the hash table when freeing
	symbols.
	(dump_symtab): Recognize hashed blocks.
	* printcmd.c (print_frame_args):  Assert that function blocks do not
	have hashed symbol tables.
	* ada-lang.c (symtab_for_sym): Use ALL_BLOCK_SYMBOLS.
	(fill_in_ada_prototype, debug_print_block): Likewise.
	(ada_add_block_symbols): Use ALL_BLOCK_SYMBOLS.  Handle hash tables.

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

	* stack.c (print_frame): Use result of frame_address_in_block()
	instead of fi->pc when evaluating symbols.
	(backtrace_command_1): Ditto.

2002-07-11  Andrew Cagney  <cagney@redhat.com>

	* cris-tdep.c (cris_saved_pc_after_call): Fix parameter type.
	Make static.

	* arm-tdep.c (arm_register_name): Make return type constant.

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

	* win32-nat.c (has_detach_ability): Convert to strict ISO C
	prototype.
	* top.c (gdb_rl_operate_and_get_next_completion): Ditto.
	* s390-tdep.c (s390_fp_regnum): Ditto.
	(s390_read_fp): Ditto.
	(s390_pop_frame): Ditto.
	(_initialize_s390_tdep): Ditto.
	* remote.c (get_remote_state): Ditto.
	* procfs.c (mappingflags): Ditto.
	* memattr.c (_initialize_mem): Ditto.
	* mcore-tdep.c (mcore_pop_frame): Ditto.
	* m68klinux-nat.c (_initialize_m68k_linux_nat): Ditto.
	* m68k-tdep.c (m68k_register_bytes_ok): Ditto.
	* language.c (set_case_str): Ditto.
	* gnu-v3-abi.c (vtable_address_point_offset): Ditto.
	* frv-tdep.c (new_variant): Ditto.
	(frv_stopped_data_address): Ditto.
	* dwarf2cfi.c (fde_chunks_need_space): Ditto.
	(context_alloc): Ditto.
	(frame_state_alloc): Ditto.
	(unwind_tmp_obstack_init): Ditto.
	(unwind_tmp_obstack_free): Ditto.
	(cfi_read_fp): Ditto.
	* cris-tdep.c (cris_saved_pc_after_call): Ditto.
	(cris_pop_frame): Ditto.
	* c-lang.c (scanning_macro_expansion): Ditto.
	(finished_macro_expansion): Ditto.
	(c_preprocess_and_parse): Ditto.
	* gdbarch.sh: Ditto.
	* gdbarch.h, gdbarch.c: Regenerate.
	* config/mn10200/tm-mn10200.h: Adjust indentation.
	* target.c: Adjust indentation.
	* symtab.h: Adjust indentation.
	* stabsread.h: Adjust indentation.
	* remote-es.c: Adjust indentation.
	* os9kread.c: Adjust indentation.

2002-07-10  Andrew Cagney  <ac131313@redhat.com>
	
	* wince.c (_initialize_wince): Rename _initialize_inftarg.
	* win32-nat.c (_initialize_win32_nat): Rename _initialize_inftarg.

2002-07-10  Grace Sainsbury  <graces@redhat.com>
	
	* NEWS: Mention m68k, mcore multi-arching.  
	* MAINTAINERS: Change status of m68k, mcore to reflect
	multi-arching.

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

	* valops.c (find_overload_match): Free oload_syms.

2002-07-09  Joel Brobecker  <brobecker@gnat.com>

	Define HAVE_SYS_PROC_H if sys/proc.h exists
	* configure.in: Add check for sys/proc.h
	* config.in: Regenerate.
	* configure: Regenerate.

2002-07-09  Grace Sainsbury  <graces@redhat.com>

	* config/m68k/tm-m68k.h: Remove macros wrapped in 
	#if !GDB_MULTI_ARCH. 

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

	* config.in, configure: Regenerate.

2002-07-08  Mark Kettenis  <kettenis@gnu.org>

	* dwarf2cfi.c: Include "gcore.h".
	(execute_stack_op): Fix implementation of the
	DW_OP_deref and DW_OP_deref_size operators by letting do their
	lookup in the target.

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

	From Peter Schauer <Peter.Schauer@regent.e-technik.tu-muenchen.de>:
	* i386-sol2-tdep.c (i386_sol2_init_abi): Correct value for
	tdep->sc_sp_offset.

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

	Fix PR gdb/595, gdb/602
	* gnu-v3-abi.c (gnuv3_baseclass_offset): Remove unused variables.
	Don't call value_cast, just read the vtable pointer; update comments
	to match.

2002-07-05  Grace Sainsbury  <graces@redhat.com>

	* config/mcore/tm-mcore.h: Remove file.
	* config/mcore/mcore.mt: Remove definition of TM_FILE
	* configure.tgt: Set gdb_multi_arch to yes for the mcore target.

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

	* i386bsd-tdep.c: Include "gdb_string.h".

2002-07-04  Grace Sainsbury  <graces@redhat.com>

	* config/mcore/tm-mcore.h (GDB_MULTI_ARCH): Set to 2.
	(PR_REGNUM, FIRST_ARGREG, LAST_ARGREG,RETVAL_REGNUM): Move to
	mcore-tdep.
	(REG_STRUCT_HAS_ADDR, USE_STRUCT_CONVENTION, GET_SAVED_REGISTER)
	(TARGET_VIRTUAL_FRAME_POINTER, BELIEVE_PCC_PROMOTION): Remove.
	* mcore-tdep.c (PR_REGNUM, FIRST_ARGREG, LAST_ARGREG)
	(RETVAL_REGNUM): Move macros from tm-mcore.h
	(mcore_reg_struct_has_addr): New function.
	(mcore_gdbarch_init): Added initializations for the macros removed
	from tm-mcore.h.

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

	* osabi.c (generic_elf_osabi_sniffer): Add check for FreeBSD 3.x's
	traditonal string branding within the ELF header.

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

	* symtab.c (remove_params): New function.
	(make_symbol_overload_list): Use it instead of cplus_demangle.
	(overload_list_add_symbol): Likewise.  Reorder.  Fix memory leak.

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

	* i386obsd-nat.c (_initialize_i386obsd_nat): Fix typo in prototype.

	* i386bsd-tdep.c (i386nbsd_sigtramp_start, i386nbsd_sigtramp_end):
	New variables.
	(i386nbsd_init_abi): Use these to initialize tdep->sigtramp_start
	and tdep->sigtramp_end.
	* i386obsd-nat.c: New file.
	* config/i386/obsd.mh (NATDEPFILES): Add i386obsd-nat.o.

	* dwarf2cfi.c (cfi_pop_frame): Use alloca() for regbuf.
	Don't call get_current_frame().

2002-07-04  Pierre Muller  <muller@ics.u-strasbg.fr>

	* i386-nat.c (child_post_startup_inferior): New function
	calling i386_cleanup_dregs if
	I386_USE_GENERIC_WATCHPOINTS is defined.
	* config/i386/nm-i386.h: define CHILD_POST_STARTUP_INFERIOR
	conditional to acknowledge that i386-nat.c has its
	own child_post_startup_inferior function.

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

	* i386-tdep.h (I386_MAX_REGISTER_SIZE): New define.
	* i386-tdep.c (i386_do_pop_frame): Use I386_MAX_REGISTER_SIZE
	instead of MAX_REGISTER_RAW_SIZE.
	(i386_extract_return_value, i386_extract_struct_value_address):
	Convert to use regcache.
	(i386_gdbarch_init): Set max_register_raw_size and
	max_register_virtual_size to I386_MAX_REGISTER_SIZE.
	Set extract_return_value and extract_struct_value_address instead
	of their deprecated variants.

	Convert i386 target to generic dummy frames.
	* i386-tdep.c: Include "symfile.h".
	(i386_frameless_signal_p): Consider a function to be frameless if
	the pc points at the first instruction of the function.
	(i386_frame_chain): Handle (generic) call dummies.
	(i386_frame_saved_pc): Likewise.
	(i386_frame_init_saved_regs): Remove code dealing with call
	dummies on the stack.
	(i386_push_dummy_frame): Removed.
	(i386_call_dummy_words): Removed.
	(i386_fix_call_dummy): Removed.
	(i386_push_return_address): New function.
	(i386_do_pop_frame): Renamed from i386_pop_frame.  Add FRAME
	parameter, and don't call get_current_frame.
	(i386_pop_frame): New function.
	(i386_gdbarch_init): Set use_generic_dummy_frames to 1, set
	call_dummy_location to AT_ENTRY_POINT, set call_dummy_address to
	entry_point_address, set call_dummy_breakpoint_offset to 0, set
	call_dummy_length to 0, set call_dummy_words to NULL, set
	sizeof_call_dummy_words to 0, set fix_call_dummy to
	generic_fix_call_dummy, set pc_in_call_dummy to
	pc_in_call_dummy_at_entry_point, set push_dummy_frame to
	generic_push_dummy_frame, set push_return_address to
	i386_push_return_address and set frame_chain_valid to
	generic_file_frame_chain_valid.

2002-07-03  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (struct regcache): Add opaque declaration.
	(EXTRACT_RETURN_VALUE): New architecture method.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Ditto.
	* gdbarch.h, gdbarch.c: Regenerate.
	* arch-utils.c (legacy_extract_return_value): New function.
	* arch-utils.h (legacy_extract_return_value): Declare.
	* values.c (value_being_returned): Re-enable code handling
	EXTRACT_STRUCT_VALUE_ADDRESS.  Move
	deprecated_grub_regcache_for_registers call to block handling
	DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS.
	(EXTRACT_RETURN_VALUE): Do not define.

2002-07-03  Grace Sainsbury  <graces@redhat.com>

	* config/mcore/tm-mcore.h (REGISTER_BYTES, NUM_REGS, PC_REGNUM)
	(SP_REGNUM, FP_REGNUM, FUNCTION_START_OFFSET, DECR_PC_AFTER_BREAK)
	(BREAKPOINT_FROM_PC, INNER_THAN, SAVED_PC_AFTER_CALL)
	(INIT_EXTRA_FRAME_INFO, FRAME_INIT_SAVED_REGS, INIT_FRAME_PC)
	(FRAME_CHAIN, FRAME_CHAIN_VALID, FRAME_SAVED_PC)
	(STORE_RETURN_VALUE, DEPRECATED_EXTRACT_RETURN_VALUE)
	(STORE_STRUCT_RETURN, DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS)
	(SKIP_PROLOGUE, FRAME_ARGS_SKIP, FRAME_ARGS_ADDRESS)
	(FRAME_LOCALS_ADDRESS, FRAME_NUM_ARGS, POP_FRAME)
	(PUSH_RETURN_ADDRESS, PUSH_DUMMY_FRAME, PUSH_ARGUMENTS): Remove.
	* mcore-tdep.c (mcore_init_extra_frame_info): Add fromleaf
	argument so the function fits the prototype in the architecture
	vector.
	(mcore_pop_frame): Remove argument so the function fits the
	prototype. Use get_current_frame instead of the argument.
	(mcore_push_arguments): Change type of struct_return so the
	function can be used in the architecture vector.
	(mcore_store_struct_return): Add.
	(mcore_frame_init_saved_regs): Add.
	(mcore_gdbarch_init): Add function calls to replace the macros
	removed from tm-mcore.h

2002-07-03  Andrew Cagney  <ac131313@redhat.com>

	* infcmd.c (print_return_value): Remove compatibility code calling
	deprecated_grub_regcache_for_registers.
	
	* values.c: Include "regcache.h".
	(value_being_returned): Update.  Use
	deprecated_grub_regcache_for_registers to extract the register
	buffer address.  
	* value.h (value_being_returned): Change ``retbuf'' parameter to a
	``struct regcache''.
	* Makefile.in (values.o): Add dependency on $(regcache_h).

	* inferior.h (run_stack_dummy): Change type of second parameter to
	a ``struct regcache''.
	* valops.c (hand_function_call): Change type of retbuf to ``struct
	regcache''.  Allocate using regcache_xmalloc, clean using
	make_cleanup_regcache_xfree.
	* infcmd.c (run_stack_dummy): Update.  Use
	regcache_cpu_no_passthrough instead of memcpy to copy the buffer.

	* regcache.c (do_regcache_xfree): New function.
	(make_cleanup_regcache_xfree): New function.
	* regcache.h (make_cleanup_regcache_xfree): Declare.

2002-07-03  Martin M. Hunt  <hunt@redhat.com>

	* event-top.c (command_line_handler): Don't read past
        beginning of buffer.

2002-07-03  Martin M. Hunt  <hunt@redhat.com>
	
        * varobj.c (struct varobj_root): Change frame from CORE_ADDR to 
        struct frame_id. 
        (varobj_create): Store frame_id for root.
        (varobj_gen_name): Use xasprintf.
        (varobj_update): Save and restore frame using get_frame_id() and
        frame_find_by_id().
        (create_child): Use xasprintf.
        (new_root_variable): Initialize frame_id.
        (c_name_of_child): Use xasprintf. Call find_frame_by_id().
        (c_value_of_variable): Use xasprintf. Move mem_fileopen call
        to prevent memory leak.

2002-07-03  Andrew Cagney  <ac131313@redhat.com>

	* valops.c (hand_function_call): Move declaration of retbuf to
	start of function, allocate using malloc, add a cleanup but before
	the inf_status cleanup, cleanup the buffer.  Rename local variable
	old_chain to inf_status_cleanup.

2002-07-03  Martin M. Hunt  <hunt@redhat.com>

	* top.c (execute_command): Use cmd_func() and cmd_func_p().

	* cli/cli-decode.c (cmd_func_p): New function.
	(cmd_func): New function.

	* command.h: Add cmd_func() and cmd_func_p().	
	
2002-07-03  Grace Sainsbury  <graces@redhat.com>

	* config/mcore/tm-mcore.h (GDB_MULTI_ARCH): Add macro. Set to 0.
	(REGISTER_SIZE): Remove.
	(MAX_REGISTER_RAW_SIZE): Remove.
	(REGISTER_VIRTUAL_TYPE): Remove.
	(MAX_REGISTER_VIRTUAL_SIZE): Remove.
	(REGISTER_NAME): Remove.
	(USE_GENERIC_DUMMY_FRAMES): Remove.
	(CALL_DUMMY): Remove.
	(CALL_DUMMY_START_OFFSET): Remove.
	(CALL_DUMMY_BREAKPOINT_OFFSET): Remove.
	(CALL_DUMMY_LOCATION): Remove.
	(FIX_CALL_DUMMY): Remove.
	(CALL_DUMMY_ADDRESS): Remove.
	(SIZEOF_CALL_DUMMY_WORDS): Remove.
	(SAVE_DUMMY_FRAME_TOS): Remove.
	* mcore-tdep.c (MCORE_REG_SIZE, MCORE_NUM_REGS): Add macros.
	(mcore_register_virtual_type): New function.
	(mcore_register_byte): New function.
	(mcore_register_size): New function.
	(mcore_register_name): New function.
	(mcore_gdbarch_init): New function. Add set_gdbarch calls for
	macros removed from tm-mcore.h.
	(mcore_dump_tdep): Add.
	(_initialize_mcore_tdep): Add gdbarch_register call.

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

	* i386-tdep.c (i386_frameless_signal_p): Provide an argument in to
	frameless_look_for_prologue, such that we actually call this
	function.

2002-07-02  Joel Brobecker  <brobecker@gnat.com>

	* frame.h (frame_address_in_block): New function.

	* blockframe.c (frame_address_in_block): New function extracted
	from get_frame_block().
	(get_frame_block): Use frame_address_in_block().
	(block_innermost_frame): Use frame_address_in_block() to match
	the frame pc address against the block boundaries rather than
	the frame pc directly. This prevents a failure when a frame pc
	is actually a return-address pointing immediately after the end
	of the given block. 

2002-07-02  Grace Sainsbury  <graces@redhat.com>

	* MAINTAINERS: Add self under write after approval. 

2002-07-02  Grace Sainsbury  <graces@redhat.com>

	* m68k-tdep.c (m68k_remote_breakpoint_from_pc): Add. Currently not
	used in architecture vector. The default is
	m68k_local_breakpoint_from_pc.
        (m68k_local_breakpoint_from_pc): Add.
        (enum): Add register numbers from tm-m68k.h.
        (m68k_gdbarch_init): Add breakpoint_from_pc to architecture
	vector.  
	* config/m68k/tm-m68k.h (GDB_MULTI_ARCH): Set to
	GDB_MULTI_ARCH_PARTIAL.
        (BPT_VECTOR, REGISTER_BYTES_FP, REGISTER_BYTES_NOFP)
        (NUM_FREGS, SIG_PC_FP_OFFSET, SP_ARG0, REMOTE_BPT_VECTOR): Move to
	m68k-tdep.c.
        (BREAKPOINT, REMOTE_BREAKPOINT): Remove.
        (A1_REGNUM, FP0_REGNUM, FPC_REGNUM, FPS_REGNUM, FPI_REGNUM): Move
	to enum in m68k-tdep.c

2002-07-02  Joel Brobecker  <brobecker@gnat.com>

	* solib-osf.c (open_map): Compute the list of shared libraries
	loaded by the inferior, rather than the list of libraries loaded
	by GDB itself.  Otherwise, GDB ends up reading the symbols from
	the wrong shared libraries...

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

	* i386-linux-tdep.c (i386_linux_sigcontext_addr): Make static.
	(LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONEXT_SP_OFFSET): Remove
	macros.
	(i386_linux_sigtramp_saved_pc, i386_linux_sigtramp_saved_sp):
	Remove functions.
	(FRAMELESS_SIGNAL): Remove function.
	(i386_linux_frame_chain, i386_linux_frame_saved_pc,
	i386_linux_saved_pc_after_call): Removed.
	(i386_linux_init_abi): Initialize tdep->sigcontext_addr,
	tdep->sc_pc_offset and tdep->sc_sp_offset.  Don't override
	frame_chain, frame_saved_pc and saved_pc_after_call any longer.

	* i386-tdep.c (i386_frameless_signal_p): New function.
	(i386_frame_chain): Deal with frameless signals.
	(i386_sigtramp_saved_sp): New function.
	(i386_frame_saved_pc): Deal with frameless signals.
	(i386_saved_pc_after_call): Make sure the correct value is
	returned just after entry into a sigtramp.
	* i386bsd-tdep.c (i386bsd_sc_sp_offset, i386nbsd_sc_sp_offset,
	i386fbsd4_sc_sp_offset): New variables.
	(i386bsd_init_abi, i386nbsd_init_abi, i386fbsd4_init_abi): Use
	these variables to initialize tdep->sc_sp_offset.  * i386bsd-nat.c
	(_initialize_i386bsd_nat): Add sanity check for sc_sp_offset
	similiar to what we already did for sc_pc_offset.
	* i386-sol2-tdep.c (i386_sol2_init_abi): Initialize
	tdep->sc_sp_offset.

	* i386nbsd-tdep.c (fetch_elfcore_registers): Wrap long line.

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

	* config/i386/tm-x86-64linux.h: New.
	* config/i386/x86-64linux.mt: Add GDB_MULTI_ARCH and TM_FILE
	definitions.
	* config/i386/nm-x86-64.h: Rename to ...
	* config/i386/nm-x86-64linux.h: ... this one.
	* config/i386/x86-64linux.mh: Reflect the above change.
	
2002-07-01  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.h (struct gdbarch_tdep): Replace sigtramp_saved_pc
	with sigcontext_addr.  Add sc_sp_offset.
	(i386bsd_sigtramp_saved_pc): Remove prototype.
	(i386bsd_sicontext_addr): Add prototype.
	* i386-tdep.c (i386_sigtramp_saved_pc): New function.
	(i386_frame_saved_pc): Rewrite to call i386_sigtramp_saved_pc.
	(i386_svr4_sigtramp_saved_pc): Removed.
	(i386_svr4_sigcontext_addr): New function.
	(i386_svr4_init_abi): Don't initialize tdep->sigtramp_saved_pc.
	Initialize tdep->sigcontext_addr instead.  Initialize
	tdep->sc_pc_offset and tdep->sc_sp_offset.
	(i386_gdbarch_init): Likewise.
	* i386bsd-tdep.c (i386bsd_sigcontext_addr): Don't make it static
	any more.
	(i386bsd_sigtramp_saved_pc): Remove function.
	(i386bsd_init_abi): Don't initialize tdep->sigtramp_saved_pc.
	Initialize tdep->sigcontext_addr instead.  Initialize
	tdep->sc_pc_offset.
	* i386-linux-tdep.c (i386_linux_init_abi): Remove initialization
	of tdep->sigtramp_saved_pc.
	* i386-sol2-tdep.c (i386_sol2_init_abi): Don't initialize
	tdep->sigtramp_saved_pc.  Initialize tdep->sigcontext_addr
	instead.

	* i386-tdep.c (i386_frameless_function_invocation,
	i386_frame_num_args, i386_frame_init_saved_regs,
	i386_skip_prologue, i386_push_dummy_frame, i386_fix_call_dummy,
	i386_pop_frame, i386_push_arguments, i386_store_struct_return,
	i386_extract_return_value, i386_store_return_value,
	i386_extract_struct_value_address, i386_register_virtual_type,
	i386_register_convertible, i386_register_convert_to_virtual,
	i386_register_convert_to_raw, i386_svr4_sigtramp_saved_pc,
	i386_go32_init_abi, i386_nw_init_abi, i386_gdbarch_init): Make
	static.

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

	* i386bsd-tdep.c (i386bsd_frame_saved_pc): Removed.

	* config/i386/tm-i386sol2.h (COERCE_FLOAT_TO_DOUBLE): Removed.
	* i386-sol2-tdep.c (i386_sol2_init_abi): Adjust for the removal of
	this macro.  Include "value.h".

2002-06-30  Aidan Skinner  <aidan@velvet.net>

	* ada-exp.tab.c: remove as it's a generated file
	* ada-lex.c: remove as it's a generated file
		
2002-06-30  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h (struct frame_info, struct
	frame_saved_regs, struct value, struct type): Remove forward
	declarations.

	* config/i386/tm-linux.h [HAVE_PTRACE_GETFPXREGS]
	(FILL_FPXREGSET, HAVE_SSE_REGS): Remove define.
	* config/i386/nm-linux.h [HAVE_PTRACE_GETFPXREGS]
	(FILL_FPXREGSET): Define.

	* config/i386/tm-nbsd.h (HAVE_SSE_REGS): Remove define.

	* configure.tgt (i[3456]86-*-openbsd*): Fold into
	i[3456]86-*-netbsd* case.
	* config/i386/tm-obsd.h: Removed.
	* config/i386/obsd.mt: Removed.
	* config/i386/obsd.mh (NATDEPFILES): Remove corelow.o and
	core-aout.o.
	(MH_CFLAGS): Add -DYYDEBUG=0.

	* i386bsd-nat.c (_initialize_i386bsd_nat): Define SC_PC_OFFSET to
	i386nbsd_sc_pc_offset on OpenBSD too.

	* config/i386/tm-fbsd.h [!SVR4_SHARED_LIBS]
	(IN_SOLIB_CALL_TRAMPOLINE): Remove define.
	* config/i386/tm-nbsdaout.h (IN_SOLIB_CALL_TRAMPOLINE): Remove
	define.
	* i386bsd-tdep.c: Include "arch-utils.h".
	(i386bsd_aout_in_solib_call_trampoline): New function.
	(i386bsd_init_abi): Set in_solib_call_trampoline to
	i386bsd_aout_in_solib_call_trampoline.
	(i386nbsdelf_init_abi, i386fbsd_init_abi): Set
	in_solib_call_trampoline to generic_in_solib_call_trampoline.

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

	* macrotab.h: Do not include "obstack.h" or "bcache.h".
	(struct obstack, struct bcache): Add opaque declarations.
	* Makefile.in (macrotab_h): Update

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

	* blockframe.c (generic_find_dummy_frame): Change return type to
	``struct regcache''.
	(struct dummy_frame): Replace field ``registers'' with regcache, a
	struct regcache object.
	(generic_find_dummy_frame): Update.
	(generic_push_dummy_frame): Update.  Use regcache_xfree,
	regcache_xmalloc and regcache_cpy.
	(generic_pop_dummy_frame): Update.  Use regcache_cpy and
	regcache_xfree.
	(deprecated_generic_find_dummy_frame): Update.
	(generic_read_register_dummy): Update.  Use
	regcache_read_as_address.
	(generic_call_dummy_register_unwind): Update.  Use regcache_read.
	(generic_get_saved_register): Update.  Use regcache_read.

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

	* Makefile.in (objfiles_h): Add $(bcache_h).
	* objfiles.h: Include "bcache.h".

	* Makefile.in (symtab_h): Remove $(bcache_h).
	* symtab.h: Do not include "bcache.h".

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

	* ppcnbsd-tdep.c (ppcnbsd_init_abi): Set frame_chain_valid to
	generic_func_frame_chain_valid.

2002-06-28  David O'Brien  <obrien@FreeBSD.org>

	* config/i386/nm-fbsd.h: Include <sys/param.h>.
	* config/i386/tm-fbsd.h: Likewise.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Use
	generic_unwind_get_saved_register.

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

	From 2002-06-27 John David Anglin <dave@hiauly1.hia.nrc.ca>:
	* regcache.c (supply_register): Add missing argument to
	register_buffer call.

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

	* Makefile.in (init.c): Drop -e option to grep.  Not necessary and
	Solaris /bin/grep does not not like it.  From Peter Schauer.

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

	* command.h (add_setshow_cmd): Declare.
	(add_setshow_cmd_full): Declare.
	* cli/cli-decode.c (add_setshow_cmd): No longer static.  Now
	returns void.  Use add_setshow_cmd_full.
	(add_setshow_cmd_full): New function.
	(add_setshow_auto_boolean_cmd): Use add_setshow_cmd_full.
	(add_setshow_boolean_cmd): Likewise.

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

	* config/vax/tm-vax.h: Protect from multiple inclusion.
	(TARGET_UPAGES, TARGET_NBPG, STACK_END_ADDR)
	(SIGTRAMP_START, SIGTRAMP_END, SIGCONTEXT_PC_OFFSET): Move to...
	* config/vax/tm-vaxbsd.h: ...here.  New file.
	* config/vax/vax.mt (TM_FILE): Set to tm-vaxbsd.h.

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

	* config/vax/tm-vax.h (BREAKPOINT): Remove.
	(BELIEVE_PCC_PROMOTION): Remove.
	(AP_REGNUM): Move to...
	* config/vax/nm-vax.h: ...here.
	* vax-tdep.c: Use VAX_AP_REGNUM instead of AP_REGNUM.
	(vax_breakpoint_from_pc): New function.
	(vax_gdbarch_init): Initialize gdbarch_breakpoint_from_pc
	and gdbarch_believe_pcc_promotion.

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

	* Makefile.in (vax_tdep_h): Define.  
	(vax-tdep.o): Use $(vax_tdep_h).
	* vax-tdep.c (vax_gdbarch_init): Use generic OS ABI framework.
	(vax_dump_tdep): New function. 
	(_initialize_vax_tdep): Register vax_dump_tdep.
	* vax-tdep.h: Include osabi.h.     
	(struct gdbarch_tdep): New. 

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

	* frame.h (deprecated_generic_find_dummy_frame): Rename
	generic_find_dummy_frame.
	* blockframe.c (generic_find_dummy_frame): Make static.
	(deprecated_generic_find_dummy_frame): New function.
	* sh-tdep.c (sh_nofp_frame_init_saved_regs): Replace
	generic_find_dummy_frame with deprecated_find_dummy_frame.
	(sh64_nofp_frame_init_saved_regs): Ditto.
	(sh_fp_frame_init_saved_regs): Ditto.
	* s390-tdep.c (s390_frame_saved_pc_nofix): Ditto.
	(s390_frame_chain): Ditto.
	* cris-tdep.c (cris_frame_init_saved_regs): Ditto.

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

	* config/m68k/tm-m68k.h: Rearrange code so macros not in the
	gdbarch vector are at the top.
	(NUM_REGS): Remove.
	(FP_REGNUM, SP_REGNUM, PS_REGNUM, PC_REGNUM, FP0_REGNUM): Remove.
	(FRAME_ARGS_ADDRESS): Remove.
	(FRAME_LOCALS_ADDRESS): Remove.
	(FRAME_NUM_ARGS): Remove.
	(FRAME_ARGS_SKIP): Remove.  
	* m68k-tdep.c (enum): Add eumeration of special register numbers.
	(m68k_gdbarch_init): Add gdbarch initializations for macros
	undefined in tm-m68k.h

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

	* monitor.h: Add the function regname to monitor_ops
	structure. This way NUM_REGS does not have to be a constant.
	* monitor.c (monitor_fetch_register): Added support for regname
	function. The function is called if the array regnames is NULL.
	(monitor_store_register): Same.
	* cpu32bug-rom.c (cpu32bug_regname): Add function. Replaces
	regnames array.
	(init_cpu32bug_cmds): set cpu32bug_cmds.regnames to NULL,
	cpu32bug_cmds.regname to point to new function.
	* abug-rom.c (abug_regname): Same as above.
	(init_abug_cmds): Same.
	* dbug-rom.c (dbug_regname): Same as above.
	(init_dbug_cmds): Same.
	* remote-est.c (est_regname): Same. 
	(init_est_cmds): Same.
	* rom68k-rom.c (rom68k_regname): Same. 
	(init_rom68k_cmds): Same.

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

	* breakpoint.c (delete_command): Don't repeat `delete' commands.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* defs.h (XCALLOC): Define.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* m68k-tdep.c: Reindented.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* NEWS: Mention multithreaded debug support for gdbserver.

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

	* MAINTAINERS: Mention NEWS.

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

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

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

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

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

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

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

	* MAINTAINERS: Add self.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* gdbarch.h: Regenerate.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* gdbtypes.h (builtin_type_vec128i): Declare.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* PROBLEMS: Mention s390 and FreeBSD 4.4 build problems.

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

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

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

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

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

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

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

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

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

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

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

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

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

	* MAINTAINERS: Remove status `OBSOLETE' from v850.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* h8300-tdep.c: Fix formatting.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* NEWS: Note addition of macro support.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* MAINTAINERS: Update my email address.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Add macro structures to GDB's symbol tables.  Nobody puts anything
	in them yet.
	* symtab.h (struct symtab): New member: `macro_table'.
	* buildsym.h (pending_macros): New global variable.
	* buildsym.c: #include "macrotab.h".
	(buildsym_init): Initialize `pending_macros'.
	(end_symtab): If we found macro information while reading a CU's
	debugging info, do build a symtab structure for it.  Make the
	symtab point to the macro information, and clear the
	`pending_macros' pointer which held it while we were reading the
	debug info.
	(really_free_pendings): Free any pending macro table.
	* objfiles.h (struct objfile): New member: `macro_cache'.
	* objfiles.c (allocate_objfile): Set allocate and free functions
	for the macro cache's objstack.
	(free_objfile): Empty the macro cache's obstack.
	* symfile.c (reread_symbols): Empty the macro cache's obstack, and
	set new allocate and free functions for it.
	* solib-sunos.c (allocate_rt_common_objfile): Set allocate and
	free functions for the macro cache's objstack.  (Why is this
	function building its own objfile?)
	* symmisc.c (print_objfile_statistics): Print statistics on the
	macro bcache.
	* Makefile.in: Note that buildsym.o depends on macrotab.h.

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

	* config/arm/nm-nbsd.h: Use <> for include of config/nm-nbsd.h.
	(REGISTER_U_ADDR): Delete definition.
	(arm_register_u_addr): Delete declaration.

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

	* arm-linux-tdep.c (ARM_LINUX_JB_PC): Renamed from JB_PC.
	(ARM_LINUX_JB_ELEMENT_SIZE): Likewise.

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

	* regcache.c (register_valid): Revise comments refering to "Not
	available" and "unavailable".
	* frame.c (frame_register_read): Ditto.
	* findvar.c (value_of_register): Ditto.

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

	* Makefile.in (remote_sim_h): Replace remote-sim_h.
	(remote-sim.o): Update dependencies.
	(d10v-tdep.o): Specify dependencies.
	(sim_d10v_h): Define.

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

	* macroexp.c (init_buffer, gather_arguments, expand): Use NULL, not 0.
	* macrotab.c (macro_lookup_inclusion, find_definition,
	new_macro_table): Same.
	
	* macroexp.c (currently_rescanning, expand): Use `strcmp () == 0',
	not `! strcmp ()'.  This is a dubious improvement.
	* macrotab.c (macro_lookup_inclusion, find_definition): Same.

	* macrotab.c (macro_lookup_inclusion): Initialize `best_depth',
	although it's not necessary, to avoid a warning.

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

	* gdbtypes.h: Update accessor macros to use TYPE_MAIN_TYPE.
	(TYPE_CONST, TYPE_VOLATILE, TYPE_CODE_SPACE, TYPE_DATA_SPACE): Use
	TYPE_INSTANCE_FLAGS.
	(struct main_type): New.
	(struct type): Move most members to struct main_type.  Change
	cv_type and as_type to new type_chain member.  Add instance_flags.
	(TYPE_MAIN_TYPE, TYPE_CHAIN, TYPE_INSTANCE_FLAGS): New macros.
	(TYPE_CV_TYPE, TYPE_AS_TYPE): Remove.
	(finish_cv_type): Remove prototype.
	* gdbtypes.c (alloc_type): Update comment.  Allocate TYPE_MAIN_TYPE.
	Set TYPE_CHAIN.
	(alloc_type_instance): New function.
	(smash_type): New function.
	(make_pointer_type, make_reference_type, make_function_type)
	(smash_to_member_type, smash_to_method_type): Call smash_type.
	(make_qualified_type): New function.
	(make_type_with_address_space): Call make_qualified_type.
	(make_cv_type): Likewise.
	(finish_cv_type): Remove unnecessary function.
	(replace_type): Update comment.  Copy TYPE_MAIN_TYPE.
	(recursive_dump_type): Dump TYPE_CHAIN and TYPE_INSTANCE_FLAGS;
	remove TYPE_CV_TYPE and TYPE_AS_TYPE.
	* c-typeprint.c (c_type_print_modifier): Use TYPE_INSTANCE_FLAGS.
	* dwarf2read.c (read_structure_scope): Don't call finish_cv_type.
	* hpread.c (hpread_read_struct_type): Likewise.
	* stabsread.c (read_struct_type): Likewise.

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

	* configure.tgt: Add a catch all sh* target, for cases like
	sh[2,3,4]-elf and sh-hms.

2002-05-14  Keith Seitz  <keiths@redhat.com>

	* event-loop.c (create_file_handler): Don't do anything but
	update data when we are given a fd which we are already
	monitoring.

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

	* dwarf2cfi.c (context_cpy): Copy registers correctly.
	(update_context): Use __func__ in warnings.
	
2002-05-14  Daniel Jacobowitz  <drow@mvista.com>

	* ser-tcp.c: Include <netinet/udp.h>.  Rename tcp_open
	and tcp_close to net_open and net_close.
	(net_open): Accept "udp:" and "tcp:" specifications.  Connect
	using UDP if requested.  Don't try to disable Nagle on UDP
	sockets.
	* remote.c (remote_serial_open): New function.  Warn about UDP.
	(remote_open_1, remote_async_open_1, remote_cisco_open): Call it.

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

	* MAINTAINERS: List sh-elf as buildable with ,-Werror.

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

	* configure.tgt: Remove sh-hms target.
	* MAINTAINERS: Don't list sh-hms as a separate target.

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

	Add first preprocessor macro-expansion files.
	* macroexp.c, macroexp.h, macrotab.c, macrotab.h: New files.
	* Makefile.in (SFILES): Add macrotab.c, macroexp.c.
	(splay_tree_h, macroexp_h, macrotab_h): New variable.
	(HFILES_NO_SRCDIR): Add macrotab.h, macroexp.h.
	(COMMON_OBS): Add macrotab.o, macroexp.o.
	(macroexp.o, macrotab.o): New rules.

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

	* config/m88k/tm-m88k.h: Update copyright.
	(m88k_target_write_pc): Declare
	(TARGET_WRITE_PC): Redefine using m88k_target_write_pc.
	(M88K_NNPC_REGNUM): Rename NNPC_REGNUM.
	(SHIFT_INST_REGS): Update definition.
	* m88k-tdep.c (m88k_target_write_pc): New function.  Implement
	using old definition of TARGET_WRITE_PC.
	* regcache.c (generic_target_write_pc): Delete code handling
	NNPC_REGNUM.
	* gdbarch.sh (NNPC_REGNUM): Delete.
	* gdbarch.h, gdbarch.c: Regenerate.

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

	* builtin-regs.c (value_of_builtin_reg): Correctly calculate the
	builtin reg number.

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

	* ax-gdb.c (gen_sign_extend, gen_fetch, gen_usual_unary)
	(gen_cast, gen_scale, gen_add, gen_sub, gen_binop, gen_deref)
	(gen_address_of, gen_struct_ref, gen_repeat): Use type
	access macros.
	* c-typeprint.c (cp_type_print_method_args): Likewise.
	(c_type_print_args): Likewise.
	* d10v-tdep.c (d10v_push_arguments): Likewise.
	(d10v_extract_return_value): Likewise.
	* expprint.c (print_subexp): Likewise.
	* gdbtypes.c (lookup_primitive_typename): Likewise.
	(lookup_template_type, add_mangled_type, print_arg_types): Likewise.
	* gdbtypes.h (TYPE_UNSIGNED, TYPE_NOSIGN, TYPE_STUB)
	(TYPE_TARGET_STUB, TYPE_STATIC, TYPE_CONST, TYPE_VOLATILE)
	(TYPE_PROTOTYPED, TYPE_INCOMPLETE, TYPE_CODE_SPACE, TYPE_VARARGS)
	(TYPE_VECTOR): Likewise.
	* hpread.c (hpread_read_struct_type)
	(fix_static_member_physnames, fixup_class_method_type)
	(hpread_type_lookup): Likewise.
	* mdebugread.c (parse_symbol, parse_type): Likewise.
	* p-lang.c (is_pascal_string_type): Likewise.
	* valops.c (hand_function_call): Likewise.
	* x86-64-tdep.c (classify_argument): Likewise.

	* hpread.c (hpread_read_function_type)
	(hpread_read_doc_function_type): Call replace_type.
	* dstread.c (create_new_type): Delete.
	(decode_dst_structure, process_dst_function): Call alloc_type.
	Use type access macros.

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

	* i387-tdep.c (i387_supply_fxsave): Skip the SSE registers if
	the're not supported by the current architecture.
	(i387_fill_fxsave): Likewise.

2002-05-12  Fred Fish  <fnf@redhat.com>

	* symfile.c (default_symfile_offsets): Arrange for uninitialized
	sect_index_xxx members to index the first slot in section_offsets
	if all of the section_offsets are zero.

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

	* configure.tgt (sparc-*openbsd): Remove entry accidentially
	checked in with last change.

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

	* configure.tgt (i[3456]86-*-unixware*, i[3456]86-*-unixware2*):
	Remove targets.  These are canonicalized to i386-*-sysv4.2uw by
	config.sub.

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

	* Makefile.in: Update dependencies.

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

	* language.c (local_hex_string_custom): Simplify.  Do not depend
	on PRINTF_HAS_LONG_LONG or CC_HAS_LONG_LONG.

	* memattr.c (mem_info_command): Replace calls to
	longest_local_hex_string and longest_local_hex_string_custom.
	* buildsym.c (make_blockvector): Ditto.
	* solib.c (info_sharedlibrary_command): Ditto.
	* tracepoint.c (tracepoints_info): Ditto.
	* symtab.c (print_msymbol_info): Ditto.

	* language.c (local_hex_string): Delete.
	(local_hex_string_custom): Delete.
	(longest_local_hex_string): Rename to local_hex_string.
	(longest_local_hex_string_custom): Rename to
	local_hex_string_custom.
	* language.h (local_hex_string): Change parameter type to LONGEST.
	(local_hex_string_custom): Ditto.
	(longest_local_hex_string): Delete declaration.
	(longest_local_hex_string_custom): Ditto.

	* solib.c: Update copyright.
	* memattr.c: Update copyright.
	
2002-05-11  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.h (legacy_register_to_value): Declare.
	(legacy_value_to_register): Declare.
	(legacy_convert_register_p): Declare.
	* arch-utils.c (legacy_register_to_value): New function.
	(legacy_value_to_register): New function.
	(legacy_convert_register_p): New function.

	* gdbarch.sh (REGISTER_TO_VALUE): Define.
	(VALUE_TO_REGISTER): Define.
	(CONVERT_REGISTER_P): Define.
	* gdbarch.h, gdbarch.c: Regenerate.

	* valops.c (value_assign): Use CONVERT_REGISTER_P and
	VALUE_TO_REGISTER.
	* findvar.c (value_from_register): Use REGISTER_TO_VALUE and
	CONVERT_REGISTER_P.

2005-05-11  Daniel Jacobowitz  <drow@mvista.com>
	    Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* Makefile.in: Update dependencies for valops.c.
	* valops.c: Include "gdb_assert.h".
	(typecmp): Skip THIS parameter to methods.
	(find_method_list): Remove static_memfuncp argument,
	update callers.  Check for stub methods.
	(find_value_oload_method_list): Don't set *static_memfuncp.
	(find_overload_match): Don't check for stub methods.  Assert
	that methods are not stubbed.  Handle static methods.
	(value_find_oload_method_list): Remove static_memfuncp argument.
	* gdbtypes.c (check_stub_method): Do not add THIS pointer
	to the argument list for static stub methods.
	* value.h (value_find_oload_method_list): Update prototype.

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

	* arch-utils.h (generic_register_size): Declare.
	(generic_register_raw_size, generic_register_virtual_size): Delete
	declarations.
	* arch-utils.c (generic_register_raw_size): Delete.
	(generic_register_size): New function.
	(generic_register_virtual_size): Delete.

	* gdbarch.sh (REGISTER_RAW_SIZE, REGISTER_VIRTUAL_SIZE): Make
	default generic_register_size.
	* gdbarch.h, gdbarch.c: Re-generate.
	
	* d10v-tdep.c (d10v_gdbarch_init): Use generic_register_size for
	register_virtual_size.
	* x86-64-tdep.c (x86_64_gdbarch_init): Ditto.
	* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.

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

	* gdbarch.sh (gdbarch_data): Add gdbarch parameter.
	* gdbarch.h, gdbarch.c: Regenerate.
	* gnu-v3-abi.c: Update copyright.
	(vtable_address_point_offset): Update.
	(gnuv3_rtti_type): Update.
	(gnuv3_baseclass_offset): Update.
	* solib-svr4.c (svr4_fetch_link_map_offsets): Update.
	(init_fetch_link_map_offsets): Update.
	* remote.c (get_remote_state): Update.
	
2002-05-11  Daniel Jacobowitz  <drow@mvista.com>

	* TODO: Remove value_headof/value_from_vtable_info comment.
	* printcmd.c (print_command_1): Don't call value_from_vtable_info.
	* values.c (value_headof, value_from_vtable_info): Delete.
	* value.h (value_from_vtable_info): Delete prototype.

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

	* Makefile.in: Replace gdb_assert.h with $(gdb_assert_h),
	gdb_string.h with $(gdb_string_h) and gdb_regex.h with
	$(gdb_regex_h).
	(gdb_assert_h): Define.
	(gdb_wait_h): Define.
	(gdb_regex_h): Define.

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

	From Peter Schauer <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>:
	* linespec.c (find_methods): Handle GCC 3.x template constructors.

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

	* nbsd-tdep.c: Fix comment.

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

	* Makefile.in (ALLDEPFILES): Add nbsd-tdep.c.
	(alphanbsd-tdep.o): Add nbsd-tdep.h to dependency list.
	(nbsd-tdep.o): New dependency list.
	* alphanbsd-tdep.c: Don't include solib-svr4.h.  Include
	nbsd-tdep.h.
	(alphanbsd_solib_svr4_fetch_link_map_offsets): Remove.
	(alphanbsd_init_abi): Use nbsd_lp64_solib_svr4_fetch_link_map_offsets.
	* nbsd-tdep.c: New file.
	* nbsd-tdep.h: New file.
	* shnbsd-tdep.c: Don't include solib-svr4.h.  Include
	nbsd-tdep.h.
	(shnbsd_solib_svr4_fetch_link_map_offsets): Remove.
	(shnbsd_init_abi): Use nbsd_ilp32_solib_svr4_fetch_link_map_offsets.
	* config/alpha/nbsd.mt (TDEPFILES): Add nbsd-tdep.o.
	* config/sh/nbsd.mt (TDEPFILES): Ditto.

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

	* config/alpha/nbsd.mh (NATDEPFILES): Remove corelow.o.
	* config/alpha/nbsd.mt (TDEPFILES): Add corelow.o.
	* config/i386/nbsd.mh (NATDEPFILES): Remove corelow.o.
	* config/i386/nbsd.mt (TDEPFILES): Add corelow.o.
	* config/i386/nbsdelf.mh (NATDEPFILES): Remove corelow.o.
	* config/i386/nbsdelf.mt (TDEPFILES): Add corelow.o.

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

	* config/i386/nbsd.mh (NATDEPFILES): Use line continuations.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/m68k/nbsd.mh (NATDEPFILES): Likewise.
	* config/ns32k/nbsd.mh (NATDEPFILES): Likewise.
	* config/powerpc/nbsd.mh (NATDEPFILES): Likewise.
	* config/sparc/nbsd.mh (NATDEPFILES): Likewise.
	* config/sparc/nbsdelf.mh (NATDEPFILES): Likewise.

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

	* i386nbsd-nat.c: Delete file.  Move fetch_core_registers and
	fetch_elfcore_registers to...
	* i386nbsd-tdep.c: ...here.
	(i386nbsd_use_struct_convention): Rename to...
	(i386nbsd_aout_use_struct_convention): ...this.
	(i386nbsd_supply_reg): New function.
	(i386nbsd_fill_reg): New function.
	(fetch_core_registers): Use i386nbsd_supply_reg.
	(fetch_elfcore_registers): Likewise.
	(_initialize_i386nbsd_tdep): New function.
	* config/i386/nbsd.mh (NATDEPFILES): Remove i386nbsd-nat.o.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/i386/nbsdelf.mt (TDEPFILES): Add i386nbsd-tdep.o.
	* config/i386/tm-nbsd.h (i386nbsd_use_struct_convention): Rename to...
	(i386nbsd_aout_use_struct_convention): ...this.

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

	* shnbsd-nat.c (fetch_inferior_registers): Use shnbsd_supply_reg.
	(store_inferior_registers): Use shnbsd_fill_reg.
	* shnbsd-tdep.c (sh_nbsd_supply_registers, 
	sh_nbsd_supply_register): Collapse into...
	(shnbsd_supply_reg): ...this.
	(sh_nbsd_fill_registers, sh_nbsd_fill_register): Collapse into...
	(shnbsd_fill_reg): ...this.
	(sh_nbsd_solib_svr4_fetch_link_map_offsets): Rename to...
	(shnbsd_solib_svr4_fetch_link_map_offsets): ...this.
	(fetch_core_registers): Use shnbsd_supply_reg.
	(fetch_elfcore_registers): Use shnbsd_supply_reg.
	(sh_nbsd_core_fns): Rename to...
	(shnbsd_core_fns): ...this.
	(sh_nbsd_elfcore_fns): Rename to...
	(shnbsd_elfcore_fns): ...this.
	(sh_nbsd_init_abi): Rename to...
	(shnbsd_init_abi): ...this.
	(_initialize_sh_nbsd_tdep): Rename to...
	(_initialize_shnbsd_tdep): ...this.
	* shnbsd-tdep.h (sh_nbsd_supply_registers,
	sh_nbsd_supply_register, sh_nbsd_fill_registers,
	sh_nbsd_fill_register): Remove prototypes.
	(shnbsd_supply_reg, shnbsd_fill_reg): Add prototypes.

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

	* Makefile.in (ALLDEPFILES): Remove i387-nat.c.
	(i387-nat.o): Delete dependency list.
	(go32-nat.o): Change i387-nat.h to i387-tdep.h.
	(x86-64-linux-nat.o): Likewise.
	* i387-nat.c: Delete file, moving contents to...
	* i387-tdep.c: ...here.
	* i387-nat.h: Rename...
	* i387-tdep.h: ...to this.
	* go32-nat.c: Include i387-tdep.h instead of i387-nat.h.
	* i386-linux-nat.c: Likewise.
	* i386bsd-nat.c: Likewise.
	* i386gnu-nat.c: Likewise.
	* i386nbsd-nat.c: Likewise.
	* i386v4-nat.c: Likewise.
	* x86-64-linux-nat.c: Likewise.
	* config/i386/fbsd.mh (NATDEPFILES): Remove i387-nat.o.
	* config/i386/go32.mh (NATDEPFILES): Likewise.
	* config/i386/i386gnu.mh (NATDEPFILES): Likewise.
	* config/i386/i386sol2.mh (NATDEPFILES): Likewise.
	* config/i386/i386v42mp.mh (NATDEPFILES): Likewise.
	* config/i386/linux.mh (NATDEPFILES): Likewise.
	* config/i386/nbsd.mh (NATDEPFILES): Likewise.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/i386/obsd.mh (NATDEPFILES): Likewise.
	* config/i386/x86-64linux.mh (NATDEPFILES): Likewise.

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

	* Makefile.in (ALLDEPFILES): Remove alphanbsd-nat.c.
	(alphanbsd-nat.o): Remove dependency list.
	(alphanbsd-tdep.o): Add $(regcache_h) to dependency list.
	* alphanbsd-nat.c: Delete.  Contents moved to...
	* alphanbsd-tdep.c: ...here.
	(_initialize_alphanbsd_tdep): Register core functions.
	* config/alpha/nbsd.mh (NATDEPFILES): Remove alphanbsd-nat.o.

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

	* Makefile.in (ALLDEPFILES): Add alphabsd-tdep.c.
	(alphabsd-nat.o): Depend on alphabsd-tdep.h.
	(alphanbsd-nat.o): Likewise.
	(alphabsd-tdep.o): New dependency list.
	* alphabsd-nat.c (supply_gregset): Use alphabsd_supply_reg.
	(fill_gregset): Use alphabsd_fill_reg.
	(supply_fpregset): Use alphabsd_supply_fpreg.
	(fill_fpregset): Use alphabsd_fill_fpreg.
	(fetch_inferior_registers): Use struct reg and struct fpreg
	rather than gregset_t and fpregset_t.  Use alphabsd_supply_reg
	and alphabsd_supply_fpreg.
	(store_inferior_registers): Use struct reg and struct fpreg
	rather than gregset_t and fpregset_t.  Use alphabsd_fill_reg
	and alphabsd_fill_fpreg.
	* alphabsd-tdep.c: New file.
	* alphabsd-tdep.h: New file.
	* alphanbsd-nat.c (fetch_core_registers): Use alphabsd_supply_fpreg.
	(fetch_elfcore_registers): Use alphabsd_supply_reg and
	alphabsd_supply_fpreg.
	* config/alpha/fbsd.mt (TDEPFILES): Add alphabsd-tdep.o.
	* config/alpha/nbsd.mt (TDEPFILES): Likewise.

2002-05-11  Eric Christopher  <echristo@redhat.com>

	* mips-tdep.c (mips_double_register_type): Fix thinko.
	(mips_single_register_type): Ditto.
	* MAINTAINERS: Add self.

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

	* i387-nat.c (i387_supply_register, i387_fill_fsave,
	i387_supply_fxsave, i387_fill_fxsave): Rewrite in order to do the
	right thing on architectures with different endianness and/or
	integer sizes.

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

	From Christian Limpach <chris@Pin.LU>
	* configure.in: Change sed expression which comments out
	NATDEPFILES to also comment out continuation lines.
	* configure: Regenerate.

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

        * sh-tdep.c: Clean up code erroneously reintroduced by previous
	big patch.

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

        * sh-tdep.c: Include correct file.

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

        New support for sh64-elf (sh5) target.

        * configure.tgt: For sh64-elf target, default to sh-elf.

        * config/sh/tm-sh.h (enum sh-abi): Possible ABI's.
        (struct gdbarch_tdep): Add new fields for new registers and ABI
        info.

        * sh-tdep.c: Include elf-bfd.h, elf/sh.h, gdb/sim-sh.h.
        (NUM_PSEUDO_REGS_SH_MEDIA, NUM_PSEUDO_REGS_SH_COMPACT,
        MSYMBOL_IS_SPECIAL, IS_ISA32_ADDR, MAKE_ISA32_ADDR,
        UNMAKE_ISA32_ADDR, IS_PTABSL_R18, IS_STS_R0, IS_STS_PR,
        IS_MOV_TO_R15, IS_MOV_R14, IS_STQ_R18_R14, IS_STQ_R18_R15,
        IS_STL_R18_R15, IS_STQ_R14_R15, IS_STL_R14_R15, IS_ADDIL_SP_MEDIA,
        IS_ADDI_SP_MEDIA, IS_ADDL_SP_FP_MEDIA, IS_ADD_SP_FP_MEDIA,
        IS_MOV_SP_FP_MEDIA, IS_MOV_R0, IS_MOVL_R0, IS_ADD_SP_R0,
        IS_MOV_R14_R0, IS_MEDIA_IND_ARG_MOV, IS_MEDIA_ARG_MOV,
        IS_MEDIA_MOV_TO_R14, IS_COMPACT_IND_ARG_MOV, IS_COMPACT_ARG_MOV,
        IS_COMPACT_MOV_TO_R14, IS_JSR_R0, IS_NOP): New macros.
        (sh_sh64_register_name, sh64_elf_make_msymbol_special,
        pc_is_isa32, sh_sh64_breakpoint_from_pc, look_for_args_moves,
        sh64_skip_prologue_hard_way, sh64_use_struct_convention,
        gdb_print_insn_sh64, translate_insn_rn, sh64_frame_chain,
        sh64_get_saved_pr, fpp_reg_base_num, is_media_pseudo,
        sh64_get_gdb_regnum, sh64_media_reg_base_num,
        sh64_compact_reg_base_num, translate_rn_to_arch_reg_num,
        sign_extend, sh64_nofp_frame_init_saved_regs,
        sh64_init_extra_frame_info, sh64_get_saved_register,
        sh64_extract_struct_value_address, sh64_pop_frame,
        sh64_push_arguments, sh64_extract_return_value,
        sh64_store_return_value, sh64_show_media_regs,
        sh64_show_compact_regs, sh64_show_regs, sh_sh64_register_byte,
        sh_sh64_register_raw_size, sh_sh64_register_virtual_size,
        sh_sh64_register_virtual_type,
        sh_sh64_register_convert_to_virtual,
        sh_sh64_register_convert_to_raw, sh64_pseudo_register_read,
        sh64_register_read, sh64_pseudo_register_write,
        sh64_register_write, do_fv_c_register_info, do_dr_c_register_info,
        do_r_c_register_info, do_fpp_register_info, do_cr_c_register_info,
        sh64_do_pseudo_register, sh_compact_do_registers_info,
        sh64_do_registers_info, sh_gdbarch_init): New functions.

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

	* sh-tdep.c (sh_breakpoint_from_pc): Add 'const' to return type.

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

	* linespec.c (decode_line_1): Check for a double quote after
	a filename correctly.

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

	Properly track the size of the current objfile's .debug_line section.
	* dwarf2read.c (struct dwarf2_pinfo): New member: dwarf_line_size.
	(DWARF_LINE_SIZE): New macro.
	(dwarf2_build_psymtabs_hard): Record the line section's size in
	the partial symbol table.
	(psymtab_to_symtab_1): Restore dwarf_line_size from the partial
	symbol table.

2002-05-10  Petr Sorfa  <petrs@caldera.com>

	* ia64-tdep.c: Handle breakpoints on L instruction type
	in MLX instruction bundle by moving the breakpoint to
	the third slot (X instruction type) as L holds only data.

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

	* dbxread.c (discarding_local_symbols_complaint): New complaint.
	(process_one_symbol): Complain about discarding local symbols
	due to a misplaced N_LBRAC entry.

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

	From Daniel Berlin <dan@cgsoftware.com>
	* linespec.c (find_toplevel_char): '<' and '>' also increase and
	decrease the depth we are at, in the case of templates.

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

	* mips-tdep.c (mips_float_register_type): New function.
	(mips_double_register_type): New function.
	(mips_print_register): Use them.
	(do_fp_register_row): Likewise.

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

	* signals/signals.c (signals): Remove conditional compilation around
	Mach-specific signals.  Move them to after TARGET_SIGNAL_DEFAULT.
	(target_signal_from_name): Loop until TARGET_SIGNAL_LAST.

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

	* remote-rdp.c (remote_rdp_can_run): Remove.

2002-05-09  Tom Tromey  <tromey@redhat.com>

	* jv-valprint.c (java_val_print): Handle `char' as a special case
	of TYPE_CODE_INT.

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

	* arm-tdep.c (arm_scan_prologue): Accept strb r(0123),[r11,#-nn],
	strh r(0123),[r11,#-nn], str r(0123),[r11,#-nn], as well as
	strb r(0123),[sp,#nn], strh r(0123),[sp,#nn] and
	str r(0123),[sp,#nn].
	(arm_skip_prologue): Ditto.  Also make disassembly
	order-independent by placing it in a loop.

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

	* stabsread.c (read_type): Add recognition for new attribute:
	"@V;" means that an array type is actually a vector.
	This is analogous to the vector flag that's been added to dwarf2.

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

	* i386-tdep.h (i386_abi): New enum.
	(struct gdbarch_tdep): Replace os_ident member with abi.
	(i386_gdbarch_register_os_abi): New prototype.
	* i386-tdep.c (i386_abi_names): New array.
	(process_note_abi_tag_sections): Removed.
	(process_note_sections): New function.
	(i386_elf_abi_from_note, i386_elf_abi): New functions.
	(struct i386_abi_handler): New struct.
	(i386_abi_handler_list): New variable.
	(i386_gdbarch_register_os_abi): New function.
	(i386_gdbarch_init): Adapt for the changes given above.

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

	* gregset.h: Say "GNU/Linux".

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

	* gdbtypes.c : Add new builtin type for 64 bit vectors.
        (build_gdbtypes): Build builtin_type_v2_float.
	(_initialize_gdbtypes): Register new builtin type.

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

	* gdbarch.sh (init_gdbarch_swap): Do not clear the swap section.
	(clear_gdbarch_swap): New function.
	(initialize_non_multiarch): Call.
	(gdbarch_update_p): Before calling init(), swap out and clear the
	existing architecture.
	* gdbarch.c: Regenerate.

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

	* config/djgpp/fnchange.lst: Add alphanbsd-nat.c and
	alphanbsd-tdep.c.

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

	* sh-nbsd-nat.c: Rename to...
	* shnbsd-nat.c: ...this.
	* sh-nbsd-tdep.c: Rename to...
	* shnbsd-tdep.c: ...this.
	* sh-nbsd-tdep.h: Rename to...
	* shnbsd-tdep.h: ...this.
	* config/sh/nbsd.mh: Use shnbsd-nat.o.
	* config/sh/nbsd.mt: Use shnbsd-tdep.o.

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

	* remote-rdi.c (_initializie_remote_rdi): Use ANSI-style string
	concatenation for command help messages.

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

	* NEWS: Note new sh*-*-netbsdelf* configuration.
	* configure.host: Set gdb_host_cpu to sh for all sh*.
	(sh*-*-netbsdelf*): New host.
	* configure.tgt: Set gdb_target_cpu to sh for all sh*.
	(sh*-*-netbsdelf*): New target.
	* sh-nbsd-nat.c: New file.
	* sh-nbsd-tdep.c: New file.
	* sh-nbsd-tdep.h: New file.
	* config/sh/nbsd.mh: New file.
	* config/sh/nbsd.mt: New file.
	* config/sh/nm-nbsd.h: New file.
	* config/sh/tm-nbsd.h: New file.

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

	* sh-tdep.c (sh_osabi_names): Declare.
	(process_note_abi_tag_sections): New function.
	(get_elfosabi): Ditto.
	(sh_gdbarch_register_os_abi): Ditto.
	(sh_dump_tdep): Ditto.
	_initialize_sh_tdep): Use gdbarch_register to register
	sh_gdbarch_init and sh_dump_tdep.
	* config/sh/tm-sh.h (sh_osabi): Declare.
	(gdbarch_tdep): Add sh_osabi and osabi_name members.

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

	* arm-tdep.c (arm_skip_prologue): Handle generic dummy frames.
	(thumb_scan_prologue): Ditto.
	(arm_find_callers_reg): Ditto.
	(arm_frame_chain): Ditto.
	(arm_init_extra_frame_info): Ditto.
	(arm_frame_saved_pc): Ditto.
	(arm_pop_frame): Ditto.
	(arm_push_return_address): New function.
	(arm_gdbarch_init): Initialize use_generic_dummy_frames,
	call_dummy_location, call_dummy_breakpoint_offset_p,
	call_dummy_breakpoint_offset, call_dummy_p,
	call_dummy_stack_adjust_p, call_dummy_words,
	sizeof_call_dummy_words, call_dummy_start_offset,
	call_dummy_length, fix_call_dummy, pc_in_call_dummy,
	call_dummy_address, push_return_address and push_dummy_frame for
	generic dummy frames.

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

	* sh-tdep.c (sh_nofp_frame_init_saved_regs): Fix error in
	size computation for alloca.
	(sh_fp_frame_init_saved_regs): Likewise.

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

	* arm-tdep.h (ARM_MAX_REGISTER_RAW_SIZE): Define.
	(ARM_MAX_REGISTER_VIRTUAL_SIZE): Define.
	* arm-tdep.c (arm_store_return_value): Use them.
	Use FP_REGISTER_RAW_SIZE when setting the FPA return value.
	* remote-rdp.c (remote_rdp_fetch_register): Use
	ARM_MAX_REGISTER_RAW_SIZE.
	(remote_rdp_store_register): Likewise.

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

	* dwarf2cfi.c: Code cleanup, removed unused variables,
	added default labels to switch {} statements.
	* x86-64-tdep.c: Ditto.
	* x86-64-linux-nat.c: Ditto.

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

	* solib.h: Protect against multiple inclusion.

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

	Add first preprocessor macro-expansion files.
	* macroexp.c, macroexp.h, macrotab.c, macrotab.h: New files.
	* Makefile.in (SFILES): Add macrotab.c, macroexp.c.
	(splay_tree_h, macroexp_h, macrotab_h): New variable.
	(HFILES_NO_SRCDIR): Add macrotab.h, macroexp.h.
	(COMMON_OBS): Add macrotab.o, macroexp.o.
	(macroexp.o, macrotab.o): New rules.

	Separate the job of reading the line number info statement program
	header (...expialidocious) out into its own function.
	* dwarf2read.c (struct line_head, struct filenames, struct
	directories): Replace with...
	(struct line_header): New structure, containing the full
	contents of the statement program header, including the
	include directory and file name tables.
	(read_file_scope): If we have line number info, instead of just
	calling dwarf_decode_lines to do all the work, call
	dwarf_decode_line_header first to get a `struct line_header'
	containing the data in the statement program header, and then
	pass that to dwarf_decode_lines, which will pick up where that
	left off.  Be sure to clean up the `struct line_header' object.
	(dwarf_decode_line_header, free_line_header, add_include_dir,
	add_file_name): New functions.
	(dwarf_decode_lines): Move all the code to read the statement
	program header into dwarf_decode_line_header.  Take the line
	header it built as the first argument, instead of the offset to
	the compilation unit's line number info.  Use the new `struct
	line_header' type instead of the old structures.  No need to do
	cleanups here now, since we don't allocate anything.
	(dwarf2_statement_list_fits_in_line_number_section,
	dwarf2_line_header_too_long): New complaints.

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

	* gdbtypes.c (init_vector_type): New function.
	(build_builtin_type_vec128): Simplify the representation of SIMD
	registers.
	(build_gdbtypes): Initialize new builtin vector types.
	(_initialize_gdbtypes): Register new vector types with gdbarch.
	(builtin_type_v4_float, builtin_type_v4_int32,
	builtin_type_v8_int16, builtin_type_v16_int8,
	builtin_type_v2_int32, builtin_type_v4_int16,
	builtin_type_v8_int8): New (renamed) SIMD types.

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

	* i387-nat.c (i387_fill_fsave): Use regcache_collect.
	(i387_fill_fxsave): Likewise.

2002-05-05  Alexandre Oliva  <aoliva@redhat.com>

	* alpha-tdep.c (alpha_extract_return_value): Don't use
	non-constant array size in prototype.

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

	From Brian Taylor <briant at model dot com>:
	* ui-out.c (ui_out_field_core_addr): Use the function
	longest_local_hex_string_custom'to format addresses > 32 bits
	wide.

	* ui-out.c (ui_out_field_core_addr): Update comment.

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

	* stack.c (select_and_print_frame): Make static.  Delete the
	parameter `level'.
	(func_command): Update call.
	(select_frame_command): Delete code computing the frame level.
	* frame.h (select_and_print_frame): Delete declaration.

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

	* sparc-tdep.c (sparc_get_saved_register): Comment why
	get_prev_frame call is safe.

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

	* frame.h (select_frame): Delete level parameter.
	* stack.c (select_frame): Update.  Use frame_relative_level to
	obtain the frame's level.
	(select_and_print_frame): Update call.
	(select_frame_command): Ditto.
	(up_silently_base): Ditto.
	(down_silently_base): Ditto.
	* ocd.c (ocd_start_remote): Ditto.
	* remote-rdp.c (remote_rdp_open): Ditto.
	* remote-mips.c (mips_initialize): Ditto.
	(common_open): Ditto.
	* remote-e7000.c (e7000_start_remote): Ditto.
	* m3-nat.c (select_thread): Ditto.
	* hppa-tdep.c (child_get_current_exception_event): Ditto.
	(child_get_current_exception_event): Ditto.
	* varobj.c (varobj_create): Ditto.
	(varobj_update): Ditto.
	(c_value_of_root): Ditto.
	* tracepoint.c (finish_tfind_command): Ditto.
	* corelow.c (core_open): Ditto.
	* arch-utils.c (generic_prepare_to_proceed): Ditto.
	* thread.c (info_threads_command): Ditto.
	(switch_to_thread): Ditto.
	* infrun.c (normal_stop): Ditto.
	(restore_selected_frame): Ditto.
	(restore_inferior_status): Ditto.
	* breakpoint.c (insert_breakpoints): Ditto.
	(watchpoint_check): Ditto.
	(bpstat_stop_status): Ditto.
	(do_enable_breakpoint): Ditto.
	* blockframe.c (flush_cached_frames): Ditto.
	(reinit_frame_cache): Ditto.

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

	* MAINTAINERS (Host/Native): Add Jason Thorpe as NetBSD
	maintainer.

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

	* gdbtypes.c (replace_type): Doc fix.

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

	* valprint.c (strcat_longest): Delete commented out function.
	Update copyright.

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

	* MAINTAINERS: Mark a29k as deleted.
	* NEWS: Mention that a29k was removed.  Add OBSOLETE section.
	Move new configurations to the top.
	* configure.tgt: Remove a29k.
	* config/a29k/tm-vx29k.h: Delete.
	* config/a29k/vx29k.mt: Delete.
	* config/a29k/tm-a29k.h: Delete.
	* config/a29k/a29k-udi.mt: Delete.
	* config/a29k/a29k.mt: Delete.
	* a29k-tdep.c: Delete.
	* remote-udi.c: Delete.
	* remote-mm.c: Delete.
	* remote-eb.c: Delete.
	* remote-adapt.c: Delete.
	* Makefile.in: Remove obsolete code.
	* config/s390/s390x.mt: Ditto.
	* config/s390/s390.mt: Ditto.
	* config/sparc/sparclynx.mh: Ditto.
	* config/sparc/linux.mh: Ditto.
	* config/pa/hppaosf.mh: Ditto.
	* config/pa/hppabsd.mh: Ditto.
	* config/ns32k/nbsd.mt: Ditto.
	* config/mips/vr5000.mt: Ditto.
	* config/m68k/sun3os4.mh: Ditto.
	* config/m68k/nbsd.mt: Ditto.
	* config/m68k/m68klynx.mh: Ditto.
	* config/m32r/m32r.mt: Ditto.
	* config/i386/x86-64linux.mt: Ditto.
	* config/i386/nbsdelf.mt: Ditto.
	* config/i386/nbsd.mt: Ditto.
	* config/i386/i386lynx.mh: Ditto.

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

	* target.c (debug_print_register): New function.  Handle oversize
	registers.
	(debug_to_fetch_registers): Call.
	(debug_to_store_registers): Call.

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

	* stabsread.c (cleanup_undefined_types): Use replace_type, not memcpy.
	(read_type): Doc fix.
	* gdbtypes.c (replace_type): Doc fix.

	* stabsread.c (multiply_defined_struct): New complaint.
	(read_struct_type): If the type we were passed isn't empty, or
	incomplete, don't read the new struct type into it; complain,
	and return the original type unchanged.  Take a new `type_code'
	argument, which is the type code for the new type.
	(read_type): Rather than storing the type's type code here, pass
	it as an argument to read_struct_type, and let that take care of
	storing it.  That way, we don't overwrite the original type code,
	so read_struct_type can use it to decide whether we're overwriting
	something we shouldn't.
	(complain_about_struct_wipeout): New function.

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

	* gdbarch.sh: Assert that gdbarch is non-NULL.
	* gdbarch.c: Regenerate.

2002-05-03  Jason Merrill  <jason@redhat.com>

	* gnu-v3-abi.c (gnuv3_rtti_type): If we get confused, just warn
	and return NULL.

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

	* x86-64-tdep.c (x86_64_dwarf2gdb_regno_map),
	(x86_64_dwarf2gdb_regno_map_length),
	(x86_64_dwarf2_reg_to_regnum): Added.
	(x86_64_gdbarch_init): Added registration of x86_64_dwarf2_reg_to_regnum.
	(x86_64_gdbarch_init): Renamed from i386_gdbarch_init.
	(_initialize_x86_64_tdep): Synced with the change above.
	(x86_64_skip_prologue): Reformulated message.

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

	* f-exp.y: Also use new prev_lexptr variable
	to improve error reporting. Based on Michael Snyder
	2002-04-24 dated patch to c-exp.y.
	* jv-exp.y: Likewise.
	* m2-exp.y: Likewise.

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

	* valops.c (value_arg_coerce): Don't coerce arrays to pointers if
	we are dealing with vectors.

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

	* config/m68k/tm-nbsd.h: Obvious fix,
	correct machine name.

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

	* p-typeprint.c (pascal_type_print_base): Add support
	for TYPE_CODE_STRING and TYPE_CODE_BITSTRING.

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

	* p-lang.c (pascal_create_fundamental_type): Use TYPE_CODE_CHAR
	for fondamental pascal 'char' type.

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

	* p-lang.h (is_pascal_string_type): Declaration changed,
	new sixth argument of type char ** added.
	* p-lang.c (is_pascal_string_type): Implementation
	changed. Args length_pos, length_size, string_pos, char_size
	can now be NULL. New argument arrayname set to the field
	name of the char array. Return value set to char array
	field index plus one.
	* p-valprint.c (pascal_val_print): Adapt to new declaration of
	is_pascal_string_type function.

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

	* gdbarch.sh (gdbarch_update_p): Revert 2002-05-02 Andrew Cagney
	<cagney@redhat.com> change.
	* gdbarch.c: Regenerate.

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

	* gdbarch.sh (gdbarch_update_p): Swap out the old architecture
	before probing for a new one.  Detect errorenous gdbarch_init
	functions.
	* gdbarch.c: Regenerate.

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

	* config/mn10200/tm-mn10200.h: Include "symfile.h" and "symtab.h".
	* config/mcore/tm-mcore.h: Ditto.  Update copyright.
	* config/v850/tm-v850.h: Ditto.  Update copyright.

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

	* cris-tdep.c (cris_gdbarch_init): Use arches instead of
	current_gdbarch.

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

	* arm-tdep.c: Whitespace clean-ups.
	(arm_skip_prologue): Fix thinko; two lines
	should have been removed as part of 4/24 change.

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

	* rs6000-tdep.c: Added comment describing how fpscr register
	numbers were chosen.

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

	* gnu-nat.c (gnu_find_memory_regions): Fix merge botch.

2002-04-29  Elena Zannoni  <ezannoni@redhat.com>

	* hpread.c (DNTT_TYPE_VECTOR): Rename from TYPE_VECTOR.
	(DNTT_TYPE_VECTOR_LENGTH): Rename from TYPE_VECTOR_LENGTH.
	(hpread_symfile_init, hpread_lookup_type): Substitute throughout.

2002-04-29  Kevin Buettner  <kevinb@redhat.com>

	From Louis Hamilton <hamilton@redhat.com>:
	* rs6000-tdep.c (coff/xcoff.h, libxcoff.h): Include.
	* xcoffread.c (coff/xcoff.h, libxcoff.h): Likewise.
	* rs6000-tdep.c (rs6000_gdbarch_init): Use bfd_xcoff_is_xcoff64(),
	not bfd-private xcoff data, to determine wordsize.
	* xcoffread.c (read_xcoff_xymtab, read_symbol_lineno): Likewise.

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

	GDB 5.2 released from 5.2 branch.

2002-04-29  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-linux-nat.c (fill_gregset): Explicit cast to avoid warning.
	* x86-64-tdep.c (i386_gdbarch_init): Ditto.
	(x86_64_register_info_table): Added comments with register numbers.

2002-04-29  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (rs6000_extract_return_value,
	rs6000_store_return_value): Handle returning vectors.
	(rs6000_gdbarch_init): Use
	ppc_sysv_abi_broken_use_struct_convention for native sysv cases.
	* ppc-linux-tdep.c (ppc_sysv_abi_broken_use_struct_convention):
	New function.
	(ppc_sysv_abi_use_struct_convention): Deal with functions returning
	vectors.
	(ppc_sysv_abi_push_arguments): Handle vector parameters.
	* ppc-tdep.h (ppc_sysv_abi_broken_use_struct_convention): Export.

2002-04-24  Pierre Muller  <ics.u-strasbg.fr>

	* hpread.c (hpread_psymtab_to_symtab_1,
	hpread_psymtab_to_symtab): Replace fprintf tab_to_s...)
	with fprintf_unfiltered (gdb_stderr,...).

2002-04-24  Pierre Muller  <ics.u-strasbg.fr>

	* remote-array.c (printf_monitor, write_monitor,
	array_insert_breakpoint, array_remove_breakpoint ):
	Replace fprintf (stderr,...
	with fprintf_unfiltered (gdb_stderr,....
	* remote-es.c: Likewise.
	* remote-os9k.c: Likewise.
	* remote-st.c: Likewise.

2002-04-28  Andreas Schwab  <schwab@suse.de>

	* config/s390/s390.mh (NATDEPFILES): Remove solib.o, add
	linux-proc.o and gcore.o.

2002-04-26  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_skip_prologue): Print note when debugging
	code without frame pointers.

2002-04-26  Andrew Cagney  <ac131313@redhat.com>

	* sparc-tdep.c (sparc_gdbarch_init): Add comment explaining why
	ON_STACK is needed.

2002-04-26  Ben Elliston  <bje@redhat.com>

	* target.c (do_xfer_memory): Correct reference to the new option
	"trust-readonly-sections".

2002-04-26  Elena Zannoni  <ezannoni@redhat.com>

	* gdbtypes.h (TYPE_FLAG_VECTOR, TYPE_VECTOR): Define.
	* gdbtypes.c (recursive_dump_type): Output the vector flag.
	* dwarf2read.c (dwarf_attr_name): Handle new attribute for
	vectors.
	(read_array_type): Record the fact that this array type is really a
	vector (i.e. are passed in by value).

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

	* alpha-tdep.h (gdbarch_tdep): Add sigcontext_addr member.
	* alpha-tdep.c (alpha_sigcontext_addr): New function.
	(alpha_find_saved_regs): Use alpha_sigcontext_addr.
	(alpha_gdbarch_init): Initialize tdep->sigcontext_addr.
	* alpha-linux-tdep.c: Include frame.h.
	(alpha_linux_sigcontext_addr): New function.
	(alpha_linux_init_abi): Set tdep->sigcontext_addr to
	alpha_linux_sigcontext_addr.
	* alpha-osf1-tdep.c: Include gdbcore.h.
	(alpha_osf1_sigcontext_addr): New function.
	(alpha_osf1_init_abi): Set tdep->sigcontext_addr to
	alpha_osf1_sigcontext_addr.
	* config/alpha/tm-alpha.h (SIGCONTEXT_ADDR): Remove.
	* config/alpha/tm-alphalinux.h (SIGCONTEXT_ADDR): Remove.

2002-04-26  Andrew Cagney  <ac131313@redhat.com>

	* stack.c (selected_frame_level):
	(select_frame): Do not set selected_frame_level.
	* frame.h (selected_frame_level): Delete declaration.

2002-04-26  Andrew Cagney  <ac131313@redhat.com>

	* rs6000-tdep.c (rs6000_gdbarch_init): Only set
	convert_from_func_ptr-addr when AIX / PowerOpen.

2002-04-25  Andrew Cagney  <ac131313@redhat.com>

	* valops.c (hand_function_call): Call
	generic_save_call_dummy_addr.
	* frame.h (generic_save_call_dummy_addr): Declare.
	* blockframe.c (struct dummy_frame): Add fields call_lo and
	call_hi.
	(generic_find_dummy_frame): Check for PC in range call_lo to
	call_hi instead of entry_point_address.
	(generic_pc_in_call_dummy): Search the dummy frames for a PC in
	the call_lo to call_hi range.  Allow for DECR_PC_AFTER_BREAK.
	(generic_save_call_dummy_addr): New function.

2002-04-24  David S. Miller  <davem@redhat.com>

	* sparc-tdep.c (sparc_gdbarch_skip_prologue): Kill, duplicates
	sparc_skip_prologue.
	(sparc_skip_prologue): Kill frameless_p arg, and use line number
	information to find prologue when possible.
	(sparc_prologue_frameless_p): Call examine_prologue directly.
	(sparc_gdbarch_init): Update set_gdbarch_skip_prologue call.
	* config/sparc/tm-sparc.h (sparc_skip_prologue): Update for killed
	second argument.
	(SKIP_PROLOGUE): Likewise.

2002-04-25  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_skip_prologue_internal): Remove
	GDB_TARGET_HAS_SHARED_LIBS #ifdef and update comment to
	indicate that the condition it was testing is always true.
	* config/alpha/nm-linux.h (GDB_TARGET_HAS_SHARED_LIBS): Remove.
	* config/alpha/nm-nbsd.h (GDB_TARGET_HAS_SHARED_LIBS): Ditto.
	* config/alpha/nm-osf.h (GDB_TARGET_HAS_SHARED_LIBS): Ditto.

2002-04-25  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.h (gdbarch_tdep): Add jb_pc and jb_elt_size members.
	* alpha-linux-tdep.c (alpha_linux_init_abi): Initialize
	tdep->jb_pc and tdep->jb_elt_size.
	* alpha-osf1-tdep.c (alpha_osf1_init_abi): Likewise.
	* alphafbsd-tdep.c (alphafbsd_init_abi): Likewise.
	* alphanbsd-tdep.c (alphanbsd_init_abi): Likewise.
	* alpha-nat.c (get_longjmp_target): Remove.
	(JB_ELEMENT_SIZE): Ditto.
	(JB_PC): Ditto.
	* alpha-tdep.c (alpha_get_longjmp_target): New function.
	(alpha_gdbarch_init): Default tdep->jb_pc to -1.  If the
	OS ABI sets jb_pc to a valid value, set gdbarch_get_longjmp_target
	to alpha_get_longjmp_target.
	(alpha_dump_tdep): Report tdep->jb_pc and tdep->jb_elt_size.
	* config/alpha/nm-linux.h (GET_LONGJMP_TARGET): Remove.
	* config/alpha/nm-osf.h (GET_LONGJMP_TARGET): Remove.

2002-04-25  Andrew Cagney  <ac131313@redhat.com>

	* README: Update to GDB 5.2.

2002-04-25  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (LC_ALL): Set to `c'.

2002-04-25  Theodore A. Roth  <troth@verinet.com>

	* avr-tdep.c: Ran through gdb_indent.sh.

2002-04-25  Theodore A. Roth  <troth@verinet.com>

	* MAINTAINERS: Add myself as AVR maintainer.
	* NEWS: Note new target avr.

2002-04-25  Theodore A. Roth  <troth@verinet.com>

	* Makefile.in: Add support for AVR target.
	* configure.tgt: Add support for AVR target.
	* avr-tdep.c: New file
 	* config/avr/avr.mt: New file.

2002-04-25  Theodore A. Roth  <troth@verinet.com>

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

2002-04-24  Pierre Muller  <ics.u-strasbg.fr>

	* f-lang.c (get_bf_for_fcn): Replace fprintf (stderr,...
	with fprintf_unfiltered (gdb_stderr,....

2002-04-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	Fix PR gdb/508.
	* symfile.c (add_filename_language): Fix wrong xrealloc size argument.

2002-04-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y: Also use new prev_lexptr variable
	to improve error reporting. Based on Michael Snyder
	2002-04-24 dated patch to c-exp.y.

2002-04-25  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_breakpoint_from_pc): New function.
	(alpha_gdbarch_init): Set gdbarch_breakpoint_from_pc to
	alpha_breakpoint_from_pc.  Set gdbarch_function_start_offset
	to 0.
	* config/alpha/tm-alpha.h: Remove forward decls of struct type
	and struct value.
	(FUNCTION_START_OFFSET): Remove.
	(BREAKPOINT): Ditto.

2002-04-25  Jason Thorpe  <thorpej@wasabisystems.com>

	* MAINTAINERS: Reflect that multi-arch is enabled for VAX.
	* NEWS: Ditto.

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

	* alpha-linux-tdep.c (alpha_linux_pc_in_sigtramp): New function.
	(alpha_linux_init_abi): Set gdbarch_pc_in_sigtramp to
	alpha_linux_pc_in_sigtramp.
	* alpha-osf1-tdep.c (alpha_osf1_pc_in_sigtramp): New function.
	(alpha_osf1_init_abi): Set gdbarch_pc_in_sigtramp to
	alpha_osf1_pc_in_sigtramp.
	* alpha-tdep.c (alpha_osf_in_sigtramp): Remove.
	* alphafbsd-tdep.c (alphafbsd_pc_in_sigtramp): New function.
	(alphafbsd_init_abi): Set gdbarch_pc_in_sigtramp to
	alphafbsd_pc_in_sigtramp.
	* alphanbsd-tdep.c (alphanbsd_pc_in_sigtramp): New function.
	(alphanbsd_init_abi): Set gdbarch_pc_in_sigtramp to
	alphanbsd_pc_in_sigtramp.
	* config/alpha/tm-alpha.h (IN_SIGTRAMP): Remove.
	* config/alpha/tm-alphalinux.h (IN_SIGTRAMP): Remove.

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

	* config/alpha/nbsd.mh (NATDEPFILES): Remove solib-legacy.o.

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

	* Makefile.in (ALLDEPFILES): Add alphanbsd-nat.c and
	alphanbsd-tdep.c.
	(alphanbsd-nat.o): New dependency list.
	(alphanbsd-tdep.o): Ditto.
	* NEWS: Note new native NetBSD/alpha configuration.
	* alphanbsd-nat.c: New file.
	* alphanbsd-tdep.c: Ditto.
	* configure.host (alpha*-*-netbsd*): New host.
	* configure.tgt (alpha*-*-netbsd*): New target.
	* config/alpha/nbsd.mh: New file.
	* config/alpha/nbsd.mt: Ditto.
	* config/alpha/nm-nbsd.h: Ditto.
	* config/alpha/tm-nbsd.h: Ditto.

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

	* Makefile.in (ALLDEPFILES): Add alpha-osf1-tdep.c.
	(alpha-osf1-tdep.o): New dependency list.
	* alpha-tdep.h (gdbarch_tdep): Add dynamic_sigtramp_offset
	and skip_sigtramp_frame members.
	* alpha-linux-tdep.c: Include gdbcore.h.
	(alpha_linux_sigtramp_offset): Change return type to LONGEST.
	(alpha_linux_init_abi): Initialize tdep->dynamic_sigtramp_offset.
	* alpha-osf1-tdep.c: New file.
	* alpha-tdep.c (alpha_osf_skip_sigtramp_frame): Moved to
	alpha-osf1-dep.c.
	(alpha_frame_past_sigtramp_frame): New function.
	(alpha_dynamic_sigtramp_offset): Ditto.
	(alpha_proc_desc_is_dyn_sigtramp): Ditto.
	(alpha_set_proc_desc_is_dyn_sigtramp): Ditto.
	(ALPHA_PROC_SIGTRAMP_MAGIC): Define.
	(push_sigtramp_desc): Use alpha_set_proc_desc_is_dyn_sigtramp.
	(after_prologue): Use alpha_proc_desc_is_dyn_sigtramp.
	(find_proc_desc): Use alpha_dynamic_sigtramp_offset.
	(alpha_frame_chain): Use alpha_frame_past_sigtramp_frame.
	(alpha_init_extra_frame_info): Use alpha_proc_desc_is_dyn_sigtramp.
	(alpha_pop_frame): Use alpha_proc_desc_is_dyn_sigtramp.
	(alpha_gdbarch_init): Initialize tdep->dynamic_sigtramp_offset
	and tdep->skip_sigtramp_frame.  Set gdbarch_skip_trampoline_code
	to find_solib_trampoline_target.
	* config/alpha/alpha-osf1.mt (TDEPFILES): Add alpha-osf1-tdep.o.
	* config/alpha/tm-alpha.h: Remove inclusion of regcache.h.
	(SKIP_TRAMPOLINE_CODE): Remove.
	(PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(DYNAMIC_SIGTRAMP_OFFSET): Ditto.
	(FRAME_PAST_SIGTRAMP_FRAME): Ditto.
	* config/alpha/tm-alphalinux.h (PROC_DESC_IS_DYN_SIGTRAMP): Remove.
	(PROC_SIGTRAMP_MAGIC): Ditto.
	(PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(DYNAMIC_SIGTRAMP_OFFSET): Ditto.
	(FRAME_PAST_SIGTRAMP_FRAME): Ditto.

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

	* NEWS: Note that Alpha targets are now multi-arch.

2002-04-24  Michael Snyder  <msnyder@redhat.com>

	* parser-defs.h (prev_lexptr): New external variable.
	* parse.c (parse_exp_1): Set prev_lexptr to null before
	calling the language-specific parser.
	* c-exp.y (yylex): Set prev_lexptr to start of current token.
	(yyerror): Use prev_lexptr in error reporting.

2002-04-24  Daniel Jacobowitz  <drow@mvista.com>

	* config/i386/tm-linux.h: Define FILL_FPXREGSET.
	* gregset.h: If FILL_FPXREGSET is defined, provide
	gdb_fpxregset_t, supply_fpxregset, and fill_fpxregset.
	* linux-proc.c (linux_do_thread_registers): If FILL_FPXREGSET
	is defined, call fill_fpxregset.

2002-04-24  Roland McGrath  <roland@frob.com>

	* config/i386/i386gnu.mh (NATDEPFILES): Add core-regset.o here.
	* i386gnu-nat.c [HAVE_SYS_PROCFS_H]
	(supply_gregset, supply_fpregset): New functions.

	* gnu-nat.c (gnu_find_memory_regions): New function.
	(init_gnu_ops): Set `to_find_memory_regions' hook to that.
	(gnu_xfer_memory): Add a cast.

2002-04-24  Michael Snyder  <msnyder@redhat.com>

	* arm-tdep.c (arm_scan_prologue): Move "mov ip, sp" into the
	loop.  Add handling for "str lr, [sp, #-4]!" and for saves
	of argument regs ("str r(0123), [r11, #-nn"]).
	(arm_skip_prologue): Better handling for frameless functions.
	Treat "mov ip, sp" as optional.  Recognize "str lr, [sp, #-4]".
	(arm_skip_prologue): Recognize str r(0123), [r11, #-nn].

Wed Apr 24 14:22:21 2002  Andrew Cagney  <cagney@redhat.com>

	* arm-tdep.c (arm_gdbarch_init): Add comment that NUM_REGS nor
 	NUM_PSEUDO_REGS can be used.

2002-04-24  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.h: Update copyright.

	* gdbarch.sh (PC_IN_SIGTRAMP): Add.
	* gdbarch.h, gdbarch.c: Re-generate.

	* inferior.h (IN_SIGTRAMP): Delete definition.
	* arch-utils.c (legacy_pc_in_sigtramp): New function.
	* arch-utils.h (legacy_pc_in_sigtramp): Declare.

	* mips-tdep.c (mips_init_extra_frame_info): Use PC_IN_SIGTRAMP.
	(mips_dump_tdep): Do not print value of IN_SIGTRAMP.
	* hppa-tdep.c (pc_in_interrupt_handler):  Use PC_IN_SIGTRAMP.
	(find_proc_framesize): Ditto.
	* alpha-tdep.c (alpha_osf_skip_sigtramp_frame): Ditto.
	(alpha_init_extra_frame_info): Ditto.
	* infrun.c (handle_inferior_event): Ditto.
	(handle_inferior_event): Ditto.
	(check_sigtramp2): Ditto.
	* blockframe.c (create_new_frame): Ditto.
	(get_prev_frame): Ditto.
	* ppc-linux-tdep.c: Update comments.
	* i386-linux-tdep.c: Update comments.
	* breakpoint.c (bpstat_what): Update comment.

2002-04-24  David S. Miller  <davem@redhat.com>

	* i960-tdep.c (register_in_window_p): New function.
	(i960_find_saved_register): Use it instead of
	REGISTER_IN_WINDOW_P.
	* config/i960/tm-i960.h (REGISTER_IN_WINDOW): Delete.

	* symtab.h (find_stab_function_addr): Kill extern.
	* minsyms.c (find_stab_function_addr): Remove from here...
	* dbxread.c: ... to here, and mark it static.

2002-04-20  David S. Miller  <davem@redhat.com>

	* sparc-tdep.c (sparc_pop_frame): Only need to allocate
	SPARC_INTREG_SIZE * 16 bytes for reg_temp.

2002-04-21  David S. Miller  <davem@redhat.com>

	* remote-vxsparc.c (vx_read_register): Fix typo, we want
	REGISTER_RAW_SIZE of SP_REGNUM not CORE_ADDR.
	(vx_write_register): Likewise.

2002-04-23  J. Brobecker  <brobecker@gnat.com>

	* source.c (is_regular_file): New function.
	(openp): Check wether file to open is a regular file
	to avoid opening directories.

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

	* findvar.c (extract_signed_integer): Cast printf argument
	to suppress format warning.
	(extract_unsigned_integer): Likewise.
	* infcmd.c (registers_info): Likewise.
	* top.c (get_prompt_1): Likewise.
	* valops.c (value_assign): Likewise.
	* valprint.c (print_decimal): Likewise.

2002-04-22  H.J. Lu  (hjl@gnu.org)

	* c-exp.y (typebase): Support

	[long|long long|short] [signed|unsigned] [int|]

	and

	signed [long|long long|short] int

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

	* Makefile.in (vax-tdep.o): Add $(arch_utils_h), $(inferior_h),
	and vax-tdep.h.
	* vax-tdep.h: New file.
	* vax-tdep.c: Include inferior.h, arch-utils.h, and vax-tdep.h.
	Make several routines static.
	(vax_get_saved_register): New function.
	(vax_gdbarch_init): New function.
	(_initialize_vax_tdep): Register vax_gdbarch_init.
	* config/vax/tm-vax.h: Set GDB_MULTI_ARCH to GDB_MULTI_ARCH_PARTIAL.
	Remove macros now under the control of gdbarch.

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

	* arm-tdep.c (arm_skip_prologue): Recognize "sub sp, sp, #nn".
	Some whitespace and coding standards tweaks.

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

	* vax-tdep.c: Include regcache.h.
	(vax_call_dummy_words): New.
	(sizeof_vax_call_dummy_words): New.
	(vax_fix_call_dummy): New function.
	(vax_saved_pc_after_call): Ditto.
	* config/vax/tm-vax.h: Don't include regcache.h.
	(SAVED_PC_AFTER_CALL): Use vax_saved_pc_after_call.
	(CALL_DUMMY): Remove.
	(CALL_DUMMY_WORDS): Define.
	(SIZEOF_CALL_DUMMY_WORDS): Define.
	(FIX_CALL_DUMMY): Use vax_fix_call_dummy.

2002-04-18  Michael Snyder  <msnyder@redhat.com>

	* arm-tdep.h: Change regnum defines to enums for ease of debugging.

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

	* vax-tdep.c (vax_frame_chain): New function.
	(vax_push_dummy_frame): Ditto.
	(vax_pop_frame): Ditto.
	* config/vax/tm-vax.h (FRAME_CHAIN): vax_frame_chain.
	(FRAMELESS_FUNCTION_INVOCATION): Use
	generic_frameless_function_invocation_not.
	(PUSH_DUMMY_FRAME): Use vax_push_dummy_frame.
	(POP_FRAME): Use vax_pop_frame.

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

	* vax-tdep.c (vax_store_struct_return): New function.
	(vax_extract_return_value): Ditto.
	(vax_store_return_value): Ditto.
	(vax_extract_struct_value_address): Ditto.
	* config/vax/tm-vax.h (STORE_STRUCT_RETURN): Use
	vax_store_struct_return.
	(EXTRACT_RETURN_VALUE): Use vax_extract_return_value.
	(STORE_RETURN_VALUE): Use vax_store_return_value.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Use vax_extract_struct_value_address.

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

	* vax-tdep.c (vax_frame_saved_pc): New function.
	(vax_frame_args_address_correct): Ditto.
	(vax_frame_args_address): Ditto.
	(vax_frame_locals_address): Ditto.
	(vax_frame_num_args): Move code to be in proximity to
	other frame-related functions.
	* config/vax/tm-vax.h (INNER_THAN): Use core_addr_lessthan.
	(FRAME_SAVED_PC): Use vax_frame_saved_pc.
	(FRAME_ARGS_ADDRESS_CORRECT): Use vax_frame_args_address_correct.
	(FRAME_ARGS_ADDRESS): Use vax_frame_args_address.
	(FRAME_LOCALS_ADDRESS): Use vax_frame_locals_address.

2002-04-22  H.J. Lu  (hjl@gnu.org)

	* Makefile.in (FLAGS_TO_PASS): Add libdir, mandir, datadir and
	includedir.

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

	* vax-tdep.c (vax_frame_init_saved_regs): New function.
	* config/vax/tm-vax.h (FRAME_FIND_SAVED_REGS): Remove.
	(FRAME_INIT_SAVED_REGS): New macro.

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

	* MAINTAINERS: Reflect that the Alpha target has been multi-arch'd.

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

	* alpha-nat.c (get_longjmp_target): Use ALPHA_* constants
	where needed.
	(fetch_osf_core_registers): Likewise.
	(supply_gregset): Likewise.

2002-04-22  J. Brobecker  <brobecker@gnat.com>

	* symfile.h (get_section_index): Define.
	* symfile.c (get_section_index): New function.
	* mdebugread.c (SC_IS_SBSS): New macro.
	(SC_IS_BSS): Return true for the scBss storage class only, as
	the scSBss storage class refers to the .sbss section.
	(parse_partial_symbols): Discard the symbols which associated
	section does not exist.
	Make sure to use the .sbss section index for symbols which
	storage class is scBss, rather than using the .bss section index.

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

	* vax-tdep.c: Update copyright years.
	(vax_register_name): New function.
	(vax_register_byte): Ditto.
	(vax_register_raw_size): Ditto.
	(vax_register_virtual_size): Ditto.
	(vax_register_virtual_type): Ditto.
	* config/vax/tm-vax.h: Update copyright years.
	(REGISTER_NAMES): Remove.
	(REGISTER_NAME): Define.
	(REGISTER_BYTE): Use vax_register_byte.
	(REGISTER_RAW_SIZE): Use vax_register_raw_size.
	(REGISTER_VIRTUAL_SIZE): Use vax_register_virtual_size.
	(REGISTER_VIRTUAL_TYPE): Use vax_register_virtual_type.

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

	* config/sparc/tm-sparc.h (sparc_skip_prologue): Restore
	declaration
	* arc-tdep.c (arc_prologue_frameless_p): Fix syntax error.

2002-04-21  David S. Miller  <davem@redhat.com>

	* arch-utils.c (generic_prologue_frameless_p): Kill
	SKIP_PROLOGUE_FRAMELESS_P code.
	* config/arc/tm-arc.h (SKIP_PROLOGUE_FRAMELESS_P): Delete
	references.
	(PROLOGUE_FRAMELESS_P, arc_prologue_frameless_p): New.
	* arc-tdep.c (arc_prologue_frameless_p): Implement.
	* config/arc/tm-sparc.h (SKIP_PROLOGUE_FRAMELESS_P): Delete
	references.
	(PROLOGUE_FRAMELESS_P, sparc_prologue_frameless_p): New.
	* sparc-tdep.c (sparc_prologue_frameless_p): Implement.
	(sparc_gdbarch_init): Pass it to
	set_gdbarch_prologue_frameless_p.

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

	* Makefile.in (ALLDEPFILES): Add alphabsd-nat.c.
	(alphabsd-nat.o): New dependency list.

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

	* Makefile.in (ALLDEPFILES): Add alpha-linux-tdep.c and
	alphafbsd-tdep.c.
	(alpha-linux-tdep.o): New dependency list.
	(alphafbsd-tdep.o): Likewise.

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

	* alpha-linux-tdep.c: New file.  Move alpha_linux_sigtramp_offset
	to here...
	* alpha-tdep.c: ...from here.
	* config/alpha/alpha-linux.mt (TDEPFILES): Add alpha-linux-tdep.o.

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

	* config/alpha/tm-alpha.h: Move alpha_software_single_step
	prototype from here...
	* alpha-tdep.h: ...to here.

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

	* frame.h (selected_frame_level): Document as deprecated.
	(frame_relative_level): Declare.
	* stack.c (frame_relative_level): New function.
	(selected_frame_level): Document as deprecated.
	(select_frame): Do not set the selected_frame_level.

	* stack.c (frame_info, record_selected_frame): Update.
	(frame_command, current_frame_command): Update.
	(up_silently_base, up_command, down_silently_base): Update.
	(down_command): Update.
	* inflow.c (kill_command): Update.
	* tracepoint.c (finish_tfind_command): Update.
	* corelow.c (core_open): Update.
	* thread.c (info_threads_command): Update.
	(do_captured_thread_select): Update.
	* infcmd.c (finish_command): Update.
	* breakpoint.c (insert_breakpoints, do_enable_breakpoint): Update.

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

	* config/alpha/tm-fbsd.h (FRAME_CHAIN_VALID): Remove.

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

	* arm-tdep.c (arm_breakpoint_from_pc): Make static.  Make return
	type const.

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

	* alphafbsd-tdep.c: Update copyright years.  Include
	alpha-tdep.h.
	(alphafbsd_use_struct_convention): Make static.
	(alphafbsd_init_abi): New function.
	(_initialize_alphafbsd_tdep): New function.
	* config/alpha/tm-fbsd.h: Update copyright years.
	(USE_STRUCT_CONVENTION): Remove.

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

	* alpha-tdep.c (alpha_abi_handler): New structure to describe
	an Alpha ABI variant.
	(alpha_abi_handler_list): Declare.
	(alpha_gdbarch_register_os_abi): New function.
	(alpha_gdbarch_init): Give registered ABI variant handlers a
	chance to tweak the gdbarch once we have set up defaults.
	* alpha-tdep.h: Prototype alpha_gdbarch_register_os_abi.

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

	* alpha-tdep.c (alpha_gdbarch_init): Set coerce_float_to_double
	to standard_coerce_float_to_double.
	* config/alpha/tm-alpha.h (COERCE_FLOAT_TO_DOUBLE): Remove.

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

	* alpha-tdep.h (gdbarch_tdep): Add vm_min_address member.
	* alpha-tdep.c (heuristic_proc_start): Use vm_min_address
	from gdbarch_tdep rather than a constant.
	(alpha_gdbarch_init): Initialize tdep->vm_min_address to
	the default text address for all Alpha Unix ABIs.
	(alpha_dump_tdep): Report the value of tdep->vm_min_address.
	* config/alpha/tm-alpha.h (VM_MIN_ADDRESS): Delete.

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

	* alpha-tdep.h: New file.  Includes several Alpha target constants
	taken from...
	* config/alpha/tm-alpha.h: ...here.  Remove macros that we now
	let gdbarch deal with.
	(GDB_MULTI_ARCH): Define as GDB_MULTI_ARCH_PARTIAL.
	* Makefile.in (alpha-nat.o): Add alpha-tdep.h and $(BFD_SRC)/elf-bfd
	to dependency list.
	* alpha-nat.c: Include alpha-tdep.h.  Update for adjusted
	Alpha target register names.
	* alphabsd-nat.c: Likewise.
	* alpha-tdep.c: Include alpha-tdep.h.  Update for adjusted
	Alpha target register names.  Make serveral routines static.
	(alpha_get_saved_register): New function.
	(alpha_abi_names): New.
	(process_note_abi_tag_sections): New function.
	(get_elfosabi): New function.
	(alpha_gdbarch_init): New function.
	(alpha_dump_tdep): New function.
	(_initialize_alpha_tdep): Register alpha_gdbarch_init.

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

	* frame.c (find_saved_register): Delete #ifdef
	HAVE_REGISTER_WINDOWS code.
	* config/sparc/tm-sparc.h: Update comments.
	* config/i960/tm-i960.h (HAVE_REGISTER_WINDOWS): Delete macro.

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

	* i960-tdep.c (i960_find_saved_register): New function.
	(i960_get_saved_register): New function.
	* config/i960/tm-i960.h (GET_SAVED_REGISTER): Define.
	(i960_get_saved_register): Declare.
	* config/i960/tm-i960.h, i960-tdep.c: Update copyright.

2002-04-20  David S. Miller  <davem@redhat.com>

	* sparc-nat.c (store-inferior_registers): Fix ambiguous else.

2002-04-20  Andrew Cagney  <ac131313@redhat.com>

	* arm-tdep.c (arm_gdbarch_init): Use gdbarch_num_pseudo_regs
	instead of NUM_PSEUDO_REGS.

2002-04-20  David S. Miller  <davem@redhat.com>

	* config/sparc/tm-linux.h (GDB_MULTI_ARCH): Define to
	GDB_MULTI_ARCH_PARTIAL
	* config/sparc/tm-sp64linux.h (GDB_MULTI_ARCH): Do not
	define, let tm-sp64.h do it.

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

	* frame.c (find_saved_register): Avoid a NULL pointer
	dereference and actually walk the frame list.

2002-04-20  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (gdbarch_update_p): Keep the list of architectures
	sorted in most most-recent-used order.  Document.
	* gdbarch.h, gdbarch.c: Regenerate.

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

	* sparc-tdep.c (sparc_get_saved_register): Use get_prev_frame
	instead of ->prev.
	* z8k-tdep.c (z8k_frame_chain): Do not use ->prev.
	* s390-tdep.c (s390_frame_chain): Do not use ->prev.
	* rs6000-tdep.c (frame_get_saved_regs): Use rs6000_frame_chain()
	instead of ->prev.

2002-04-19  Elena Zannoni  <ezannoni@redhat.com>

        Fix PR gdb/471.
	* gdbtypes.c (init_simd_type): Rewrite using new functions.
	(build_builtin_type_vec128): Ditto.
	(append_composite_type_field): Fix calculation of type length in
	union case.

2002-04-19  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/README: Update.

	* go32-nat.c (store_register): Cast &a_tss to `char *' to avoid a
	compiler warnings.

2002-04-19  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (setup_arbitrary_frame): Rename...
	(alpha_setup_arbitrary_frame): ...to this.
	* config/alpha/tm-alpha.h (SETUP_ARBITRARY_FRAME): Update
	for alpha_setup_arbitrary_frame.

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

	* gdbarch.sh (BREAKPOINT_FROM_PC): Return a const buffer.
	* gdbarch.h, gdbarch.c: Regenerate.

	* defs.h (breakpoint_from_pc_fn): Delete type definition.
	* target.h (memory_breakpoint_from_pc): Update declaration.
	* config/mcore/tm-mcore.h (mcore_breakpoint_from_p): Ditto.

	* arch-utils.c (legacy_breakpoint_from_pc): Update return type.
	* mcore-tdep.c (mcore_breakpoint_from_pc): Ditto.
	* mem-break.c (memory_breakpoint_from_pc): Ditto.
	* rs6000-tdep.c (rs6000_breakpoint_from_pc): Ditto.
	* s390-tdep.c (s390_breakpoint_from_pc): Ditto
	* xstormy16-tdep.c (xstormy16_breakpoint_from_pc): Ditto.
	* mn10300-tdep.c (mn10300_breakpoint_from_pc): Ditto.
	* mips-tdep.c (mips_breakpoint_from_pc): Ditto.
	* m68hc11-tdep.c (m68hc11_breakpoint_from_pc): Ditto.
	* ia64-tdep.c (ia64_breakpoint_from_pc): Ditto.
	* d10v-tdep.c (d10v_breakpoint_from_pc): Ditto.
	* arch-utils.c (legacy_breakpoint_from_pc): Ditto..

	* mem-break.c (default_memory_insert_breakpoint): Make `bp' a
	const pointer.
	* monitor.c (monitor_insert_breakpoint): Ditto.
	* rs6000-tdep.c (rs6000_software_single_step): Ditto for `breakp'.

	* config/mcore/tm-mcore.h: Update copyright.
	* mem-break.c: Ditto.
	* xstormy16-tdep.c: Ditto.

2002-04-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y: Add precedence rule for '^' token.
	This removes the shift/reduce conflicts.
	Remove the comment concerning these shift/reduce conflicts.

2002-04-18  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (COMMON_UISA_NOFP_REGS): New macro.
	(registers_powerpc_nofp): New register set for processors
	without floating point unit.

2002-04-18  David S. Miller  <davem@redhat.com>

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

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

	* MAINTAINERS: Add myself as co-maintainer of testsuite/gdb.asm.

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

	* rs6000-tdep.c (frame_initial_stack_address): Use
	frame_register_read to read the alloca_reg.

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

	* frame.c (find_saved_register): Find saved registers in the next
	not prev frame.
	Fix PR gdb/365.

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

	* gdbarch.sh (LANG): Set to ``c''.

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

 	* PROBLEMS: Mention hppa2.0-hp-hpux10.20 compile problems.

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

	* bcache.c: Include <stddef.h> and <stdlib.h> after "defs.h".
	Update copyright.

 	* hpread.c (hpread_get_lntt): Add declaration.
 	Also fix PR gdb/391.

2002-04-14  Andrew Cagney  <ac131313@redhat.com>

	* acinclude.m4 (AM_PROG_CC_STDC): Import from automake 1.6.
	* aclocal.m4, configure: Re-generate.
	Fix PR gdb/391.

2002-04-14  Elena Zannoni  <ezannoni@redhat.com>

        * mi/mi-cmd-disas.c (dump_insns): Use TARGET_PRINT_INSN
        instead of tm_print_insn.

2002-04-14  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-bdm.c (bdm_ppc_fetch_registers): Fix typo.

2002-04-14  Andrew Cagney  <ac131313@redhat.com>

	* config/pa/tm-hppa.h (FRAME_CHAIN_COMBINE): Delete macro.
	* blockframe.c (FRAME_CHAIN_COMBINE): Delete macro.
	(get_prev_frame): Do not call FRAME_CHAIN_COMBINE.

2002-04-12  Don Howard  <dhoward@redhat.com>

	* cli/cli-cmds.c (init_cli_cmds): Add new user settable value:
	max_user_call_depth.
	(init_cmd_lists): Initialize the new value;
	* cli/cli-script.c (execute_user_command): Limit the call depth of
	user defined commands.  This avoids a core-dump when user commands
	are infinitly recursive.

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

	* ppc-tdep.h (struct gdbarch_tdep): Add new member ``lr_frame_offset''.
	* rs6000-tdep.c (rs6000_frame_saved_pc): Use ``lr_frame_offset''
	from tdep struct instead of DEFAULT_LR_SAVE.
	(rs6000_gdbarch_init): Initialize ``lr_frame_offset''.
	* config/powerpc/tm-ppc-eabi.h (DEFAULT_LR_SAVE): Delete.
	* config/rs6000/tm-rs6000.h (DEFAULT_LR_SAVE): Delete.

2002-04-12  Michael Snyder  <msnyder@redhat.com>

	* Remote.c: Spelling fix.
	* gcore.c (default_derive_heap_segment): Use bfd_section_name.
	If no symbol found for "sbrk", try "_sbrk".
	(make_output_phdrs): Use bfd_section_name.
	(gcore_copy_callback): Use bfd_section_name.
	* eval.c: Indentation fix-ups.
	* d10v-tdep.c (d10v_make_iaddr): Make it idempotent,
	in case it gets applied to an address that is already
	in the instruction space.
	* cli/cli-decode.c (help_list): Allow long lines to wrap.
	* symfile.c: Fix indentation, long lines.
	* source.c: White space fix-up.

2002-04-12  Andrew Cagney  <cagney@redhat.com>

	* defs.h (read_relative_register_raw_bytes): Delete declaration.
	* frame.c (frame_register_read): New function.  Return non-zero on
	success.
	(read_relative_register_raw_bytes_for_frame): Delete.
	(read_relative_register_raw_bytes): Delete.
	* frame.h (frame_register_read): Declare.
	* d30v-tdep.c: Update Copyright.  Use frame_register_read.
	* sh-tdep.c: Ditto.
	* infcmd.c (do_registers_info): Ditto.
	* hppa-tdep.c: Ditto.
	* rs6000-tdep.c: Ditto.
	* h8500-tdep.c: Ditto.
	* mips-tdep.c: Ditto.
	* h8300-tdep.c: Ditto.
	* z8k-tdep.c: Ditto.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_gdbarch_init): Use rs6000_* methods for
	64-bit SysV ABI.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_gdbarch_init): Compute ``wordsize'' from
	bfd info.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (powerpc64, 630, rs64ii, rs64iii): Define
	register sets for these processor variants.

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

	* regformats/reg-ppc.dat: Support FPSCR.

2002-04-11  Kevin Buettner  <kevinb@redhat.com>

	* ppc-tdep.h (struct gdbarch_tdep): Add new field ``ppc_fpscr_regnum''.
	* ppc-bdm.c (bdm_ppc_fetch_registers, bdm_ppc_store_registers):
	Add fpscr as an invalid/unfetchable register.
	* ppc-linux-nat.c (ppc_register_u_addr, store_register)
	(fetch_ppc_registers, store_ppc_registers, supply_fpregset)
	(fill_fpregset): Add support for register fpscr.
	(fetch_ppc_registers, store_ppc_registers, supply_gregset)
	(fill_gregset): Account for the fact that register ``mq'' might
	not exist.
	* rs6000-tdep.c (PPC_UISA_SPRS): Use (unused) slot 70 for fpscr.
	(registers_power): Add fpscr to register set at slot 71.
	(rs6000_gdbarch_init): Account for the fact that ``mq'' doesn't
	exist on most PPC architectures.  Initialize ppc_fpscr_regnum.

2002-04-11  Michael Snyder  <msnyder@redhat.com>

	* configure.in: Autoconfiscate _SYSCALL32 define for solaris.
	* configure: Regenerate.
	* config.in: Regenerate.
	* acconfig.h: Add define for _SYSCALL32.
	* core-sol2.c: Remove #define _SYSCALL32.
	* solib-legacy.c: Remove #define _SYSCALL32.

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

	* stack.c (select_frame): Cleanup internal error message, do not
	use %p.

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

	* stack.c (select_frame): Check that selected_frame and the
	specified level are as expected.
	* blockframe.c (get_prev_frame): Set the `level' from next_frame.
	Update copyright.
	* frame.h (struct frame_info): Add field `level'.  Update
	copyright.
	Work-in-progress PR gdb/464.

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

	* maint.c (maint_print_section_info): Rename print_section_info.
	(print_bfd_section_info, print_objfile_section_info): Update.
	* inferior.h (struct gdbarch): Add opaque declaration.
	* gdbarch.sh: Add include of "inferior.h" to gdbarch.sh.
	* gdbarch.h: Regenerate.

2002-04-10  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-linux-nat.c (child_resume, child_xfer_memory): Delete.
	(PTRACE_XFER_TYPE): Moved to config/i386/nm-x86-64.h.
	(kernel_u_size): Added.
	* config/i386/nm-x86-64.h (CHILD_XFER_MEMORY, CHILD_RESUME): Delete.
	(PTRACE_XFER_TYPE): Moved here from config/i386/nm-x86-64.h.

2002-04-04  Jim Ingham  <jingham@apple.com>

       * valarith.c (find_size_for_pointer_math): New function, either returns
       the size for a pointer's target, returns 1 for void *, or errors for
       incomplete types.
       (value_add, value_sub): use find_size_for_pointer_math.

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

	* linux-low.c (linux_look_up_symbols): New hook.
	(linux_target_ops): Add linux_look_up_symbols.
	* remote-utils.c (decode_address): New function.
	(look_up_one_symbol): New function.
	* server.c (handle_query): Call target look_up_symbols hook.
	* server.h (look_up_one_symbol): Add prototype.
	* target.h (struct target_ops): Add look_up_symbols hook.

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

	* frame.c (read_relative_register_raw_bytes_for_frame): Do not
	override FP_REGNUM with frame->fp.  Update copyright.
	* parse.c (num_std_regs, std_regs): Delete.
	(target_map_name_to_register): Do not search std_regs.  Update
	function description.
	* parser-defs.h (num_std_regs, std_regs, struct std_regs): Delete
	declarations.  Update copyright.
	Fix PR gdb/251.

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

	* symtab.h (ALL_BLOCK_SYMBOLS): Don't dereference the pointer
	after the last symbol in a block.

2002-04-09  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y (yylex): Handle also the fact that is_a_field_of_this
	is non zero as a found symbol.

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

	* findvar.c: Include "builtin-regs.h".
	(value_of_register): Call value_of_builtin_reg when applicable.
	* parse.c: Include "builtin-regs.h" and "gdb_assert.h".
	(target_map_name_to_register): Call
	builtin_reg_map_name_to_regnum.
	* Makefile.in (SFILES): Add builtin-regs.c and std-regs.c.
	(COMMON_OBS): Add builtin-regs.o and std-regs.o.
	(builtin_regs_h): Define.
	(builtin-regs.o): New target.
	(findvar.o): Add $(builtin_regs_h).
	* builtin-regs.c, builtin-regs.h: New files.
	* std-regs.c: New file.
	Partial fix for PR gdb/251.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Don't set tm_print_insn;
	it's no longer required.

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

	* Makefile.in (gdbtk-wrapper.o): Add missing dependencies.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_software_single_step): Use
	rs6000_breakpoint_from_pc() to fetch breakpoint instruction
	and size.  Use target_insert_breakpoint() and
	target_remove_breakpoint() to insert and remove breakpoints
	instead of explicit memory reads and writes.

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

	* config/powerpc/tm-ppc-eabi.h (ELF_OBJECT_FORMAT): Delete.
	* rs6000-tdep.c (rs6000_push_arguments): Eliminate
	ELF_OBJECT_FORMAT ifdef.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_gdbarch_init): Use set_gdbarch_print_insn().

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_fix_call_dummy): Delete unused macro
	definitions for TOC_ADDR_OFFSET and TARGET_ADDR_OFFSET.

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

	* fbsd-proc.c (child_pid_to_exec_file, fbsd_find_memory_regions):
	s/asprintf/xasprintf/.
	(fbsd_make_corefile_notes): s/strdup/xstrdup/.

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

	I believe Jeff Law denies responsability for this one:
	* config/pa/hpux11w.mh (MH_CFLAGS): Add -Dvfork=fork.
	* config/pa/hpux11.mh (MH_CFLAGS): Add -Dvfork=fork.
	* config/pa/hpux1020.mh (MH_CFLAGS): Add -Dvfork=fork.
	Work-around for PR gdb/366.

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

	* remote-e7000.c (write_small, e7000_read_inferior_memory,
	e7000_read_inferior_memory_large, e7000_insert_breakpoint,
	e7000_remove_breakpoint): Use paddr_nz() to print addresses.

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

	* sh-tdep.c (sh_fp_frame_init_saved_regs,
	sh_nofp_frame_init_saved_regs): Use alloca() for 'where'
	information.

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

	* MAINTAINERS (Misc): List Daniel Jacobowitz as the GDBSERVER
	maintainer.

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

	* README (Reporting Bugs in GDB): Document the bug web page as the
	prefered way of submitting bugs.
	Fix PR gdb/402.

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

	* gdbarch.sh (FP_REGNUM, PC_REGNUM, SP_REGNUM): Allow default of
	-1.  Update comment.
	* gdbarch.h, gdbarch.c: Re-generate.

2002-04-07  Andreas Schwab  <schwab@suse.de>

	* m68klinux-nat.c (fill_fpregset): Properly pass address of
	buffer to regcache_collect.

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

	* gdbarch.sh (PS_REGNUM): Add.  Document.  Default to -1.
	* gdbarch.c, gdbarch.h: Re-generate.

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

	* symtab.c (lookup_symtab): Remove ``const'' from ``rp''
	declaration.  Fix -Werror.

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

	* gdbarch.sh (initialize_non_multiarch): Call init_gdbarch_swap.
	* gdbarch.c: Regenerate.

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

	* breakpoint.c (clear_command): Rewrite middle section to
	combine two loops with identical control conditions.
	Add a cleanup to eliminate a memory leak.
	* cli/cli-dump.c (restore_section_callback): Use paddr_nz.

2002-04-05  H.J. Lu  (hjl@gnu.org)

	* solib-svr4.c (bkpt_names): Add "__start".

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

	* sparc-tdep.c (sparc_push_dummy_frame): Use GDB_TARGET_IS_SPARC64
	as test for 64 bit target.

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

	* h8500-tdep.c (h8500_write_fp): Delete function.
	* dwarf2cfi.c (cfi_write_fp): Document as not used.
	* mips-tdep.c (mips_gdbarch_init): Do not set write_fp.
	* ia64-tdep.c (ia64_gdbarch_init): Do not set write_fp.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Do not set write_fp.
	* rs6000-tdep.c (rs6000_gdbarch_init): Do not set write_fp.
	* s390-tdep.c (s390_gdbarch_init): Do not set write_fp.
	(s390_write_fp):
	* sh-tdep.c (sh_gdbarch_init): Do not set write_fp.
	* x86-64-tdep.c (i386_gdbarch_init): Do not set write_fp.
	* d10v-tdep.c (d10v_gdbarch_init): Do not set write_fp.
	(d10v_write_fp): Delete function.
	* inferior.h (write_fp, generic_target_write_fp): Delete
	declarations.
	* regcache.c (generic_target_write_fp): Delete function.
	(write_fp): Delete function.
	* gdbarch.sh (TARGET_WRITE_FP): Delete.
	* gdbarch.h, gdbarch.c: Regenerate.
	* config/v850/tm-v850.h (TARGET_WRITE_FP): Delete macro.
	* config/sparc/tm-sp64.h (TARGET_WRITE_FP): Delete macro.
	(sparc64_write_fp): Delete declaration.
	* config/h8500/tm-h8500.h (TARGET_WRITE_FP): Delete macro.
	(h8500_write_fp): Delete declaration.

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

	* sparc-tdep.c (sparc64_write_fp): Delete.
	(sparc_push_dummy_frame): Replace write_fp call with code to store
	the FP directly.
	(sparc_gdbarch_init): Do not initialize write_fp.

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

	* rs6000-tdep.c (skip_prologue): Eliminate unused/unreachable
	clause.

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

	* stack.c (get_selected_block): Add new argument `addr_in_block',
	used to return the exact code address we used to select the block,
	not just the block.
	* blockframe.c (get_frame_block, get_current_block): Same.
	* frame.h (get_frame_block, get_current_block,
	get_selected_block): Update declarations.
	* linespec.c, stack.c, blockframe.c, breakpoint.c, findvar.c,
	linespec.c, varobj.c, printcmd.c, symtab.c: Callers changed.

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

	* breakpoint.c (insert_breakpoints): Change 'hw' to 'hardware in
	warning message.

2002-04-05  J. Brobecker  <brobecker@gnat.com>

	* utils.c (xfullpath): New function.
	* defs.h (xfullpath): Add declaration.
	* source.c (openp): Use xfullpath in place of gdb_realpath to
	avoid resolving the basename part of filenames when the
	associated file is a symbolic link. This fixes a potential
	inconsistency between the filenames known to GDB and the
	filenames it prints in the annotations.
	* symtab.c (lookup_symtab): Use the new xfullpath function, in order
	to be able to match a filename with either the real filename, or
	the name of any symbolic link to this file.
	(lookup_partial_symtab): Ditto.

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

	* breakpoint.c: Add support for hardware breakpoints in overlays.
	(overlay_events_enabled): New state variable.
	(insert_breakpoints): Use overlay_events_enabled to decide
	whether to attempt to set a breakpoint at the overlay load addr.
	Handle bp_hardware_breakpoint as well as bp_breakpoint.
	(remove_breakpoint): Use overlay_events_enabled to decide
	whether breakpoints need to be removed from overlay load addr.
	Handle bp_hardware_breakpoint as well as bp_breakpoint.
	(bpstat_stop_status): Handle bp_hardware_breakpoint in overlays.
	(create_overlay_event_breakpoint, enable_overlay_breakpoints,
	disable_overlay_breakpoints): Update overlay_events_enabled.

2002-04-04  Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2read.c (struct function_range): New.
	(cu_first_fn, cu_last_fn, cu_cached_fn): New.
	(check_cu_functions): New.
	(read_file_scope): Initialize global function lists.
	Call dwarf_decode_line after processing children.
	(read_func_scope): Add to global function list.
	(dwarf_decode_lines): Call check_cu_functions everywhere
	record_line is called.  Call record_line with a linenumber
	of 0 to mark sequence ends.

2002-04-04  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-linux-nat.c (child_xfer_memory): x86-64 ptrace() ABI
	change sync with glibc.

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

	* configure.in: Call AC_C_INLINE.
	* configure: Regenerated.

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

	* rs6000-tdep.c: Change #include of "bfd/libcoff.h"
	and "bfd/libbfd.h" to "libcoff.h" and "libbfd.h".

2002-03-31  Mark Kettenis  <kettenis@gnu.org>

	* NEWS: Mention gcore support on FreeBSD/i386.

	* fbsd-proc.c: New file.
	* config/i386/nm-fbsd.h (CHILD_PID_TO_EXEC_FILE): Define.
	* config/i386/fbsd.mh (NATDEPFILES): Add gcore.o and fbsd-proc.o.

	* lin-lwp.c (child_wait): Check SAVE_ERRNO instead of ERRNO in
	while statement.

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

	* cli/cli-dump.c (_initialize_cli_dump): Older GCC's tolerate
	unescaped newlines in string literals, but newer ones don't.  So
	escape them.

2002-03-26  Michael Snyder  <msnyder@redhat.com>
	    Andrew Cagney <cagney@redhat.com>

	* cli/cli-dump.c: New file.  Dump memory to file,
	restore file to memory.
	* cli/cli-dump.h: New file.
	* Makefile.in: Add rules, dependencies for cli-dump.o.
	* NEWS: Mention new commands.

2002-03-28  Michael Snyder  <msnyder@redhat.com>

	* symfile.c (symbol_file_add): Move test for null symbols to later.

2002-03-27  Andrew Cagney  <ac131313@redhat.com>

	From veksler at il.ibm.com:
	* utils.c (gdb_realpath): If canonicalize_file_name fails, return
	the xstrduped original path.
	Fix PR gdb/417.

2002-03-27  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (_initialize_breakpoint): Clean up help string.
	* infcmd.c (_initialize_infcmd): Ditto.
	* language.c (_initialize_language): Ditto.
	* symfile.c (_initialize_symfile): Ditto.
	* top.c (_init_main): Ditto.
	* cli/cli-cmds.c (init_cli_cmds): Ditto.

2002-03-27  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (struct rs6000_framedata): Add fields for AltiVec
	vector registers handling.
	(skip_prologue): Handle new AltiVec instructions.  Fill in new
	fields of frame data.
	(frame_get_saved_regs): Fill in information for AltiVec registers.

2002-03-27  Jim Blandy  <jimb@redhat.com>

	* symtab.h (SYMBOL_INIT_MANGLED_NAME): Turn this macro's body into
	a function; leave this macro here to invoke that function.
	(symbol_init_mangled_name): Declaration for that function.
	* symtab.c (symbol_init_mangled_name): New function.

2002-03-27  Andrew Cagney  <ac131313@redhat.com>

	* valarith.c: Replace strerror with safe_strerror.
	* tracepoint.c: Ditto.
	* lin-lwp.c: Ditto.
	* go32-nat.c: Ditto.
	* inflow.c: Ditto.
	* gnu-nat.c: Ditto.

2002-03-27  Andreas Schwab  <schwab@suse.de>

	* event-top.c (command_line_handler): Remove useless if.

2002-03-27  Andreas Jaeger  <aj@suse.de>

	* dwarf2cfi.c: Give credit to Daniel Berlin, reformat copyright
	comment.

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

	* x86-64-tdep.h (X86_64_NUM_REGS, X86_64_NUM_GREGS): Delete #defines.
	(x86_64_num_regs, x86_64_num_gregs): Added extern variables.
	* x86-64-linux-nat.c (x86_64_regmap): Swapped RBX <> RDX, added DS, ES, FS, GS.
	(x86_64_linux_dr_get_status, supply_gregset),
	(fill_gregset): Changed X86_64_NUM_GREGS to x86_64_num_gregs.
	* x86-64-tdep.c (x86_64_register_raw_size_table): Delete.
	(x86_64_register_info_table): Add.
	(X86_64_NUM_REGS, X86_64_NUM_GREGS): Add.
	(x86_64_register_raw_size, x86_64_register_virtual_type),
	(x86_64_register_name, _initialize_x86_64_tdep): Changed to reflect new
	general x86_64_register_info_table.
	(i386_gdbarch_init): gdbarch_register_bytes is now set
	dynamicaly during initialization.
	* regformats/reg-x86-64.dat: Synced with changes to registers above.
	* gdbserver/linux-x86-64-low.c: Ditto.

2002-03-27  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/server.c (main): Call target_signal_to_host_p
	and target_signal_to_host on signals received from the remote.
	* gdbserver/remote-utils.c (prepare_resume_reply): Call
	target_signal_from_host on signals sent to the remote.
	* gdbserver/server.h: Add prototypes.  Include "gdb/signals.h".
	* gdbserver/Makefile.in: Add signals.o.  Add -I${INCLUDE_DIR}.

2002-03-27  Daniel Jacobowitz  <drow@mvista.com>

	* signals/signals.c: Include "server.h" in gdbserver build.
	(target_signal_from_name): Don't use STREQ.
	(_initialize_signals): Likewise.  Don't include function in
	gdbserver build.

2002-03-27  Daniel Jacobowitz  <drow@mvista.com>

	* signals.c: Moved to...
	* signals/signals.c: Here.
	* Makefile (signals.o): Update.

2002-03-26  Jeff Law (law@redhat.com)

	* somread.c (som_symtab_read): Remove some commented out code and
	updated related comments.  Do not set the minimal symbol table to
	mst_solib_trampoline for ST_ENTRY symbols with SS_LOCAL scope
	in a dynamic executable.
	* hppa-tdep.c (find_proc_framesize): Sanely handle the case
	where we are unable to find the minimal symbol for the given
	PC value.

2002-03-25  Jeff Law (law@redhat.com)

	* linux-proc.c (read_mapping): Scan up to end of line for filename.

2002-03-25  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_skip_prologue): Rewritten from scratch.

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

	* command.h: Update copyright.
	(struct cmd_list_element): Replace definition with opaque
	declaration.
	(enum cmd_types): Document that it will eventually be moved to
	cli/cli-decode.h
	(CMD_DEPRECATED, DEPRECATED_WARN_USER): Delete macros.
	(MALLOCED_REPLACEMENT): Delete macro.
	* Makefile.in (cli_decode_h): Add $(command_h).
	(top.o, completer.o, maint.o): Add dependency on $(cli_decode_h).
	* top.c: Include "cli/cli-decode.h".
	* completer.c: Include "cli/cli-decode.h".
	* maint.c: Include "cli/cli-decode.h".
	* cli/cli-decode.h: Include "command.h".
	(enum command_class): Delete.
	(enum cmd_types): Comment out.
	(enum cmd_auto_boolean): Delete.
	(enum var_types): Delete.

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

	* cli/cli-decode.c: Include "gdb_assert.h".
	(add_set_or_show_cmd): New static function.
	(add_set_cmd): Rewrite.  Use add_set_or_show_cmd.
	(add_show_from_set): Rewrite. Use add_set_or_show_cmd.  Don't copy
	all fields, such as func, from the set command.

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

	* MAINTAINERS (sh-elf): Change warning flag to -w.

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

	* defs.h (error): Add printf format attribute.
	* thread-db.c (thread_from_lwp): Fix error format string.
	* stack.c (parse_frame_specification): Ditto.
	* cli/cli-decode.c (undef_cmd_error): Ditto.
	* scm-lang.c (scm_lookup_name): Ditto.
	* tracepoint.c (trace_error): Ditto.
	* remote-utils.c (usage): Ditto.
	* remote.c (compare_sections_command): Ditto.
	Fix PR gdb/328.

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

	* gdbtypes.c (append_composite_type_field): New function.
	(init_composite_type): New function.
	* gdbtypes.h (append_composite_type_field): Declare.
	(init_composite_type): Ditto.

2002-03-22  Elena Zannoni  <ezannoni@redhat.com>

        * ppc-linux-tdep.c (ppc_sysv_abi_use_struct_convention): New
        function.
	* ppc-tdep.h (ppc_sysv_abi_use_struct_convention): Export.
        * rs6000-tdep.c (rs6000_gdbarch_init): Use different
        structure returning convention for SYSV ABI case, but not
        for GNU/Linux, FreeBSD, or NetBSD.

2002-03-22  Daniel Jacobowitz  <drow@mvista.com>

	* symtab.h (lookup_block_symbol): Add mangled_name argument
	to prototype.

	* symmisc.c (maintenance_check_symtabs): Call lookup_block_symbol
	with new mangled_name argument.
	* linespec.c (decode_line_1): Likewise.
	* valops (value_of_this): Likewise.
	* symtab.c (lookup_transparent_type): Likewise.
	(lookup_symbol_aux): Likewise.  Accept new mangled_name argument.
	(lookup_symbol): If we are given a mangled name, pass it down
	to lookup_symbol_aux.
	(lookup_block_symbol): If we are given a mangled name to check
	against, only return symbols which match it.

2002-03-22  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (child_create_inferior): Check for proper shell to use
	here, in case the user changes it on the fly.
	(_initialize_inftarg): Remove shell path considerations.

2002-03-21  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (rs6000_gdbarch_init): Use correct max size value
	for gdbarch_max_register_raw_size and max_register_virtual_size.
	Adjust copyright year.

2002-03-21  Daniel Jacobowitz  <drow@mvista.com>

	 * dbxread.c (process_one_symbol): Extend the first N_SLINE
	 in a function to cover the entire beginning of the function
	 as well if it does not already.

2002-03-21  Tom Rix  <trix@redhat.com>

	* rs6000-nat.c (rs6000_ptrace32): Renamed from ptrace32.
	(rs6000_ptrace64): Renamed from ptrace64.

2002-03-20  Martin M. Hunt  <hunt@redhat.com>

	* gdbserver/remote-utils.c (remote_open): Don't call
	getprotobyname, we're all using TCP here so just use
	IPPROTO_TCP.
	* gdbserver/gdbreplay.c (remote_open): Ditto.

2002-03-20  Martin M. Hunt  <hunt@redhat.com>

	* regcache.c (_initialize_regcache): No need to call
	build_regcache() at this time; it gets called whenever
	the gdbarch changes.

2002-03-20  David O'Brien  <obrien@FreeBSD.org>

	* sparc-nat.c:  Include sys/param.h where possible.

2002-03-20  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR gdb/422.
	* c-lang.c (c_create_fundamental_type): Handle FT_COMPLEX,
	FT_DBL_PREC_COMPLEX, and FT_EXT_PREC_COMPLEX.
	* dwarf2read.c (read_base_type): Set TYPE_TARGET_TYPE for
	complex types.
	* stabsread.c (rs6000_builtin_type): Likewise.
	(read_sun_floating_type): Likewise.

2002-03-19  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* stabsread.c (read_member_functions): Remove skip code for duplicate
	constructor/destructor methods.  Use standard parsing for these
	methods and just do not chain them to the list of methods after
	parsing.

2002-03-19  Alexandre Oliva  <aoliva@redhat.com>

	* coffread.c: Remove redundant static declarations.  Replace
	occurrences of `PTR' with `void *'.
	* elfread.c, mdebugread.c, minsyms.c, mipsread.c: Likewise.
	* top.h (quit_cover): Likewise.
	* defs.h (catch_errors): Likewise.

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

	* defs.h (XMALLOC): Define.
	* gdb-events.sh (XMALLOC): Delete macro.
	* gdb-events.c, gdb-events.h: Regenerate.
	* gdbarch.sh (XMALLOC): Delete macro.
	* gdbarch.c: Regenerate.
	* serial.c (XMALLOC): Delete macro.
	* ui-file.c (XMALLOC): Ditto.
	* ser-unix.h (XMALLOC): Ditto.
	* sh-tdep.c (XMALLOC): Ditto.
	* ui-out.c (XMALLOC): Ditto.
	* utils.c (XMALLOC): Ditto.
	* i386-tdep.c (XMALLOC): Ditto.
	* gdb-events.c (XMALLOC): Ditto.
	* d10v-tdep.c (XMALLOC): Ditto.
	* cli-out.c (XMALLOC): Ditto.

	* cli-out.c, d10v-tdep.c, gdb-events.c: Update copyright.
	* gdb-events.sh, i386-tdep.c, ser-unix.h, serial.c: Ditto.
	* ui-file.c, ui-out.c: Ditto.

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

	* command.h (struct cmd_list_element): Add field context.
	(set_cmd_context, get_cmd_context): Declare.
	* cli/cli-decode.h: Ditto.
	* cli/cli-decode.c (get_cmd_context): New function.
	(set_cmd_context): New function.
	(add_cmd): Initialize context.
	Part of fixing PR gdb/145 and PR gdb/146.

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

	* cli/cli-decode.c (cmd_type): New function.
	* command.h (cmd_type): Declare.
	* infrun.c (set_schedlock_func): Call function cmd_type.
	* kod.c (kod_set_os): Call cmd_type.
	* cris-tdep.c (cris_version_update): Use function cmd_type.
	(cris_mode_update, cris_abi_update): Ditto.

	* command.h: (execute_cmd_post_hook): Declare.
	(execute_cmd_pre_hook): Declare.
	* cli/cli-script.c (clear_hook_in_cleanup): New function.
	(execute_cmd_post_hook, execute_cmd_pre_hook): New
	functions. Execute pre/post hook while ensuring that afterwords
	hook_in is cleared.
	* top.c (execute_command): Use execute_cmd_post_hook, and
	execute_cmd_pre_hook to execute pre/post commands.
	* infrun.c (normal_stop): Pass stop_command and not pre_hook to
	hook_stop_stub.
	(hook_stop_stub): Call execute_cmd_pre_hook.

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

	* kod.c (kod_set_os): Revert previous change.  Is called by ``info
	set'' and this leads to a core dump.  Move xstrdup of
	operating_system to after check that it is not NULL.

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

	* kod.c (kod_set_os): Remove unnecessary check that
	``command->type'' is set_cmd.

	* valprint.c (set_input_radix): Use input_radix.
	(set_output_radix): Use output_radix.
	(set_input_radix_1, set_output_radix_1): Add FIXME - bad radix
	isn't reverted.

2002-03-16  Andrew Cagney  <ac131313@redhat.com>

	* value.h (struct value): Delete field ``substring_addr''.  Change
	aligner fields to force_doublest_align, force_longest_align,
	force_core_addr_align and force_pointer_aligh.

	* value.h (struct value): Fix typo in above change.

2002-03-16  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* ia64-tdep.c (ia64_gdbarch_init): Call set_gdbarch_frame_args_skip,
	to fix internal_error from ``maintenance print architecture''.

2002-03-16  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* cp-valprint.c (cp_is_vtbl_ptr_type): Handle vtbl field type
	for gcc versions after gcc-2.8.1.

2002-03-16  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* eval.c (evaluate_subexp_standard): Fix setup of ``this'' pointer
	for method resolution.  Restore adjustment of ``this'' pointer after
	calling value_struct_elt, which was accidentally removed during the
	HP merge.

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

	* eval.c (evaluate_subexp_standard): Pass ``selected_frame'' to
	value_of_register.
	* findvar.c (value_of_register): Add ``frame'' parameter.  Pass to
	get_saved_register.
	* value.h (value_of_register): Update.

2002-03-14  Richard Henderson  <rth@redhat.com>

	* configure.in: Detect declaration for canonicalize_file_name.
	* utils.c (canonicalize_file_name): Declare, if needed.
	(gdb_realpath): Prefer realpath if available and usable.
	* config.in, configure: Rebuild.

2002-03-14  Richard Henderson  <rth@redhat.com>

	* dwarf2read.c (read_array_type): Accept DW_FORM_data8 as
	a constant array bound.

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

2002-03-14  Michael Snyder  <msnyder@redhat.com>

	* symfile.c (syms_from_objfile): Return immediately if no syms.
	(symbol_file_add): Return immediately if no syms.
	(find_sym_fns): Return immediately if no syms.

2002-03-13  Michal Ludvig  <mludvig@suse.cz>

	* gdbserver/remote-util.c (remote_open): Print remote-side's
	IP address when remote debugging over the network.

2002-03-12  David O'Brien  <obrien@FreeBSD.org>

	* config/sparc/fbsd.mh: Fix copyright.
	* config/sparc/fbsd.mt: Likewise.

2002-03-11  Richard Earnshaw  <rearnsha@arm.com>

	* MAINTAINERS: Fix typo in name of gdb warnings option.
	(x86-64): Fix formating so that this can be parsed by awk.

2002-03-10  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (defs_h): Add $(INCLUDE_DIR)/gdb/signals.h.
	* defs.h: Include "gdb/signals.h".
	(enum target_signal): Move to $(INCLUDE_DIR)/gdb/signals.h.

2002-03-10  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.h (sys/reg.h, x86_64_regmap): Moved to x86-64-linux-nat.c
	* x86-64-linux-nat.c (sys/reg.h, x86_64_regmap): Moved here
	from x86-64-tdep.h

2002-03-10  Daniel Jacobowitz  <drow@mvista.com>
	    Don Howard <dhoward@redhat.com>

	* mips-tdep.c (ST0_FR): Define.
	(mips2_fp_compat): New function, temporarily disabled.
	(mips_read_fp_register_single): New function.
	(mips_read_fp_register_double): New function.
	(mips_print_register): Use them.
	(do_fp_register_row): Likewise.

2002-03-09  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add Jim Ingham and Klee Dienes to ``write after
	approval''.

2002-03-08  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* stabsread.c (read_member_functions): Fix is_stub test for
	static member functions, improve comment.

2002-03-07  Richard Earnshaw  <rearnsha@arm.com>

	* remote-rdi.c (myprint): Replace 'PTR' with 'void *'.
	(mywrite, mywritec, mypause, myreadc, mygets): Likewise.
	(_initialize_remote_rdi): Use add_set_boolean_cmd to register
	commands that set boolean values.
	(arm_rdi_remove_breakpoint): Rewrite to avoid uninitialized warning.
	(arm_rdi_resume): Always initialize PC.
	(arm_rdi_open): Don't use rslt as a boolean.
	(arm_rdi_create_inferior, arm_rdi_close, arm_rdi_resume)
	(arm_rdi_fetch_registers, arm_rdi_store_registers)
	(arm_rdi_xfer_memory, arm_rdi_files_info, arm_rdi_kill)
	(arm_rdi_insert_breakpoint, arm_rdi_remove_breakpoint): Likewise.

2002-03-06  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (gdb_cv_bigtoc): Check for -bbigtoc on AIX.
	* configure: Rebuilt.

2002-03-06  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (_initialize_m68hc11_tdep): Don't set tm_print_insn.
	(m68hc11_gdbarch_init): But use set_gdbarch_print_insn instead.

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

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

	* breakpoint.c (_initialize_breakpoint): Use set_cmd_completer.
	* cli/cli-cmds.c (init_cli_cmds): Ditto.
	* win32-nat.c (_initialize_inftarg): Ditto.
	* remote-rdi.c (_initialize_remote_rdi): Ditto.
	* proc-api.c (_initialize_proc_api): Ditto.
	* hppa-tdep.c (_initialize_hppa_tdep): Ditto.
	* source.c (_initialize_source): Ditto.
	* exec.c (_initialize_exec): Ditto.
	* solib.c (_initialize_solib): Ditto.
	* top.c (init_main): Ditto.
	* tracepoint.c (_initialize_tracepoint): Ditto.
	* symfile.c (_initialize_symfile): Ditto.
	* printcmd.c (_initialize_printcmd): Ditto.
	* infcmd.c (_initialize_infcmd): Ditto.
	* corefile.c (_initialize_core): Ditto.

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

	* MAINTAINERS (Past Maintainers): Add Frank Ch. Eigler.

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

	* MAINTAINERS: Fix Mac OS X and Objective-C/C++.

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

	* NEWS: Update headings, 5.2 has branched.

2002-03-04  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (PTRACE_XFER_TYPE): Change to long.
	(num_regs, regmap): Move inside HAVE_LINUX_USRREGS.
	(register_addr, REGISTER_RAW_SIZE): Likewise.
	(usr_store_inferior_registers): Use PTRACE_XFER_TYPE.
	* gdbserver/linux-x86-64-low.c: Remove extra #endif.

2002-03-03  Michal Ludvig <mludvig@suse.cz>

	* MAINTAINERS (x86-64): Add myself.
	* x86-64-tdep.c (x86_64_push_arguments): Fixed typo naregs->nregs,
	changed value_ptr -> struct value *

2002-03-01  David O'Brien  <obrien@FreeBSD.org>

	* configure.host (sparc64-*-freebsd): Add.
	* configure.tgt: Likewise.
	* config/sparc/fbsd.mh: New file.
	* config/sparc/fbsd.mt: Likewise.
	* config/sparc/nm-fbsd.h: Likewise.
	* config/sparc/tm-fbsd.h: Likewise.

2002-03-01  Daniel Jacobowitz  <drow@mvista.com>

	* config/djgpp/fnchange.lst: Add regformats/reg-i386-linux.dat and
	regformats/reg-s390x.dat.

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

	* utils.c: Add FIXME explaining true/false problem.

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

	* MAINTAINERS (Past Maintainers): Add J.T. Conklin.

2002-02-28  Michael Chastain  <mec@shout.net>

	* MAINTAINERS: Fix typo: gdb.satbs -> gdb.stabs .

2002-02-28  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-s390-low.c: New file.
	* regformats/reg-s390.dat: New file.
	* regformats/reg-s390x.dat: New file.
	* gdbserver/configure.srv: Add S/390.
	* gdbserver/Makefile.in: Add S/390.
	* configure.tgt: Enable gdbserver for S/390.

2002-02-28  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (_initialize_go32_nat): Don't use periods in the
	first line of the doc string for "info dos", except at the end of
	the sentence, since the short help stops at the first period.

2002-02-28  Jason Merrill  <jason@redhat.com>

	* dwarf2read.c (dwarf_cfi_name): Add new codes.

2002-02-27  Fred Fish  <fnf@redhat.com>

	* blockframe.c (generic_fix_call_dummy): Fix obvious typo in
	comment (dumy -> dummy).

2002-02-27  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* symtab.c (gdb_mangle_name): Handle fully mangled v3 abi physnames.

2002-02-27  Rodney Brown  <rbrown64@csc.com.au>

      * utils.c (gdb_realpath): Add pathconf fallback for sco3.2v5.

2002-02-27  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/acconfig.h: New file.
	* gdbserver/i387-fp.c: New file.
	* gdbserver/i387-fp.h: New file.
	* gdbserver/linux-x86-64.c: New file.
	* regformats/reg-x86-64.dat: New file.
	* configure.tgt: Add x86_64-*-linux* gdbserver support.
	* gdbserver/configure.srv: Add x86_64-*-linux* and regset support.
	* gdbserver/configure.in: Add support for regsets.
	* gdbserver/config.in: Regenerate.
	* gdbserver/configure: Regenerate.
	* gdbserver/Makefile.in: Likewise.  Add $(linux_low_h).
	* gdbserver/linux-low.h: New file.
	* gdbserver/linux-low.c: Include "linux-low.h".  Add support
	for regsets.
	* gdbserver/linux-arm-low.c: Include "linux-low.h".
	* gdbserver/linux-ia64-low.c: Include "linux-low.h".
	* gdbserver/linux-m68k-low.c: Include "linux-low.h".
	* gdbserver/linux-mips-low.c: Include "linux-low.h".
	* gdbserver/linux-ppc-low.c: Include "linux-low.h".
	* gdbserver/linux-sh-low.c: Include "linux-low.h".
	* gdbserver/linux-i386-low.c: Include "linux-low.h".  Include
	"i387-fp.h".  Add PTRACE_GETREGS and friends.
	* gdbserver/regcache.c (supply_register): New function.
	(supply_register_by_name): New function.
	(collect_register): New function.
	(collect_register_by_name): New function.

2002-02-27  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in (INTERNAL_CFLAGS): Remove -DGDBSERVER.
	(config.status): Add configure.srv dependency.
	(server_h): Add config.h dependency.

2002-02-27  Daniel Jacobowitz  <drow@mvista.com>

	* regformats/reg-i386-linux.dat: New file, with $orig_eax.
	* gdbserver/Makefile.in: Add rules for reg-i386-linux.o.
	* gdbserver/configure.srv: Change i386-*-linux* to use
	reg-i386-linux.o.

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

	* x86-64-tdep.c: Re-indent.  Update copyright date.

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

	From Michal Ludvig <mludvig@suse.cz>:
	* x86-64-tdep.c (value.h): Delete.
	(gdb_assert.h): Include.
	(x86_64_register_convert_to_virtual,
	x86_64_register_convert_to_raw ): Add check which lets only
	floating-point values to be converted.
	(value_push): Delete.
	(x86_64_push_arguments): Order of arguments pushed on stack fixed.
	(i386_gdbarch_init): Number of register_bytes fixed.

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

	* MAINTAINERS: Add x86-64 target.

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

	* memattr.c (mem_command): Eliminate ``true'' and ``false''.
	* osfsolib.c (solib_map_sections): Ditto.
	* irix5-nat.c (solib_map_sections): Ditto.
	* corelow.c (gdb_check_format): Ditto.
	* symfile.c (symfile_bfd_open): Ditto.
	* solib.c (solib_map_sections): Ditto.
	Fix PR gdb/354.

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

	* remote.c (_initialize_remote): By default, disable ``e'' and
	``E'' step out-of-range packets.

2002-02-26  Andreas Schwab  <schwab@suse.de>

	* config/m68k/tm-linux.h (FRAME_SAVED_PC): Define as
	m68k_linux_frame_saved_pc.
	(IN_SIGTRAMP): Define as m68k_linux_in_sigtramp instead of
	in_sigtramp.
	(SIGCONTEXT_PC_OFFSET): Remove.
	* m68klinux-nat.c (m68k_linux_frame_saved_pc,
	m68k_linux_sigtramp_saved_pc): New functions.
	(IS_SIGTRAMP, IS_RT_SIGTRAMP): Define.
	(SIGCONTEXT_PC_OFFSET): Moved here from config/m68k/tm-linux.h.
	(UCONTEXT_PC_OFFSET): Define.
	(m68k_linux_in_sigtramp): Renamed from in_sigtramp, handle both
	non-RT and RT signal trampolines.

2002-02-26  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/tm-embed.h (TARGET_UPAGES): Delete.
	(TARGET_NBPG, STACK_END_ADDR): Delete
	(VARIABLES_INSIDE_BLOCK): Delete.

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

	* utils.c (perror_with_name): Make string parameter constant.
	(print_sys_errmsg): Ditto.
	(query): Ditto.
	* defs.h (perror_with_name): Update.
	(print_sys_errmsg): Update.
	(query): Update.

2002-02-25  Daniel Jacobowitz  <drow@mvista.com>

	From Eliot Dresselhaus <eliot@ayrnetworks.com>:
	* gdbserver/linux-mips-low.c (cannot_fetch_register): Fix typo.

2002-02-25  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* rs6000-nat.c (set_host_arch): Do not switch to a new architecture
	if it already matches the current architecture from the exec file.
	Include arch-utils.h for gdbarch_info_init prototype.
	* Makefile.in (rs6000-nat.o): Update dependencies.

2002-02-25  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/djconfig.sh: Set NM=nm and CFLAGS="-g -O2" in the
	 list of exported variables.

2002-02-24  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/configure.srv: New file.
	* gdbserver/configure.in: Use configure.srv instead
	of the host/target makefile fragments.  Set GDBSERVER_DEPFILES
	from it.
	* gdbserver/configure: Regenerated.
	* gdbserver/terminal.h: New file.
	* gdbserver/Makefile.in: Update for configure changes.  Remove
	more unneeded include paths.

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

	From wiz at danbala:
	* config/sparc/tm-sp64.h: Fix grammar and typos.
	Fix PR gdb/287.

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

	* lin-lwp.c, thread-db.c, defs.h, cris-tdep.c: Replace ``Linux''
	with either ``GNU/Linux'' or ``Linux kernel''.  Update copyright.
	* m68klinux-nat.c, sparc-linux-nat.c, x86-64-linux-nat.c: Ditto.
	* x86-64-linux-tdep.c, gregset.h, gdb_wait.h: Ditto.
	* ia64-linux-nat.c, infrun.c, linux-proc.c: Ditto.
	* proc-service.c, i386-linux-tdep.c, ppc-linux-tdep.c: Ditto.
	* s390-tdep.c: Ditto.
	* config/nm-linux.h, config/alpha/nm-linux.h: Ditto.
	* config/alpha/tm-alpha.h, config/alpha/tm-alphalinux.h:
	* config/alpha/xm-alphalinux.h, config/i386/nm-linux.h: Ditto.
	* config/i386/nm-x86-64.h, config/i386/tm-linux.h: Ditto.
	* config/m68k/tm-linux.h, config/mips/nm-linux.h: Ditto.
	* config/mips/tm-linux.h, config/mips/xm-linux.h: Ditto.
	* config/powerpc/tm-linux.h, config/s390/nm-linux.h: Ditto.
	* config/s390/tm-linux.h, config/sh/tm-linux.h: Ditto.
	* config/sparc/nm-linux.h, config/sparc/tm-linux.h: Ditto.
	* config/sparc/tm-sp64linux.h, config/sparc/xm-linux.h: Ditto.
	Fix PR gdb/378.

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

	* lin-thread.c: Delete file.
	* configure.in (gdb_cv_struct_reg_r_gs): Update comment to refer
	to gdb_proc_service.h.
	* configure: Re-generate.

	* ocd.c (ocd_open): Do not try to open the "ocd" device.
	* serial.c (serial_open): Delete check for "ocd".
	Fix PR gdb/349.

	* Makefile.in (linux-thread.o): Delete target.
	* linux-thread.c: Delete file.

	* config/djgpp/fnchange.lst: Rename bfd/elf32-sh64.c.  Tweak other
	renamed SH files to be consistent.

	* symtab.c (sort_search_symbols): Use xfree.

2002-02-23  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-tdep.c (arm_linux_init_abi): Register
	IN_SOLIB_CALL_TRAMPOLINE and SKIP_TRAMPOLINE_CODE
	* config/arm/tm-linux.h (IN_SOLIB_CALL_TRAMPOLINE): Replace old
	definition with undef, since we don't want the sysvr4 definition.
	(SKIP_TRAMPOLINE_CODE): Likewise.

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

	From 2002-02-22 Alfred M. Szmidt <ams@kemisten.nu>:

	* configure.in: (AC_CHECK_FUNCS) Added test for
	canonicalize_file_name Regenerated.
        * config.in, configure: Regenerated.
        * utils.c: (gdb_realpath) If HAVE_CANONICALIZE_FILE_NAME is
	defined use canonicalize_file_name.

2002-02-23  Michael Chastain  <mec@shout.net>

	* MAINTAINERS: Remove Michael Chastain from "paper trail" list.

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

	* README: Remove references to cygnus.com.
	* MAINTAINERS: Change Past Maintainer addresses to ``foo at bar
	dot com'' form.  Remove references to cygnus.com and sourceware.

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

	From 2002-02-19 Paul Eggert <eggert@twinsun.com>:
	* Makefile.in (VER): Change "head -1" to "sed q", since POSIX
	1003.1-2001 no longer allows "head -1".
	* gdb/Makefile.in (version.c): Likewise.
	* gdb/doc/Makefile.in (GDBvn.texi): Likewise.
	* gdb/CONTRIBUTE: Change "diff -c3" to "diff -c", which is
	equivalent.  POSIX 1003.1-2001 no longer allows "diff -c3".

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

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

	* cli/cli-cmds.h (is_complete_command): Change parameter to a
	``struct cmd_list_element *''.
	* cli/cli-cmds.c (is_complete_command): Update.  Use
	cmd_cfunc_eq.
	* top.c (execute_command): Pass the command to
	is_complete_command.
	* tracepoint.c: Replace function.cfunc with cmd_cfunc_eq.

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	From 2002-02-20 Martin Schwidefsky <schwidefsky@de.ibm.com>:
	* config/s390/tm-s390.h (GDB_TARGET_IS_ESAME): Use renamed
	architecture defines.
	* s390-tdep.c (s390_gdbarch_init): Likewise.

2002-02-23  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-tdep.c (arm_linux_extract_return_value): Make static.
	(arm_linux_push_arguments): Likewise.
	(arm_linux_init_abi): Register them.  Also register linux-specific
	call_dummy_words.
	(find_minsym_and_objfile): Use strcmp, not STREQ.
	* config/arm/tm-linux.h (CALL_DUMMY_WORDS): Delete.
	(arm_linux_call_dummy_words): Delete declaration.
	(EXTRACT_RETURN_VALUE, PUSH_ARGUMENTS): Delete.
	(arm_linux_extract_return_value, arm_linux_push_arguments): Delete
	declarations.
	(LOWEST_PC): Delete.

2002-02-23  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* maint.c (print_section_info): Do not prepend `0x' to filepos
	output, it will be handled by local_hex_string_custom.

2002-02-23  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-nat.c (store_newfpe_single): Use regcache_collect.
	(store_newfpe_double, store_newfpe_extended, store_fpregister)
	(store_register, store_regs, fill_gregset, fill_fpregset): Likewise.

2002-02-22  Jim Blandy  <jimb@redhat.com>

	Indicate that the bcache functions don't change the strings
	they're passed.
	* bcache.h (bcache, hash): Add `const' keywords to declarations.
	* bcache.c (bcache, hash): Add `const' keywords to definitions.

2002-02-22  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (child_create_inferior): Fix create flags setting bug.

2002-02-21  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (register_loaded_dll): Just use raw name when we can't
	find the complete path to a loaded DLL.

2002-02-21  Fred Fish  <fnf@redhat.com>

	* dbxread.c (process_one_symbol): When finding an N_FUN symbol
	that marks the end of the range of a function, enter a line number
	entry that has a line number of zero and a PC offset that matches
	the end of the function.  This starts a range of PC's for which no
	line number information is known.
	* symtab.c (find_pc_sect_line): If our best fit is in a range of
	PC's for which no line number info is found (line number is zero)
	then we didn't find any valid line information.
	* symtab.h: Document use of zero line number entry.

2002-02-21  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-linux-nat.c (PTRACE_GETVRREGS, PTRACE_SETVRREGS): Define.
	(have_ptrace_getvrregs): Define for run time checks.
	(gdb_vrregset_t): New type for Altivec register handling.
	(fetch_register, store_register): Fetch/store altivec register
	when needed.
	(fetch_altivec_register, store_altivec_register): New functions.
	(supply_vrregset, fill_vrregset): New functions.
	(fetch_altivec_registers, store_altivec_registers): New functions.
	(fetch_ppc_registers, store_ppc_registers): Fetch/store altivec
	registers as well.

2002-02-21  Jiri Smid  <smid@suse.cz>

	* config/i386/x86-64linux.mh (NATDEPFILES): Remove x86-64-nat.o.

2002-02-21  Richard Earnshaw  <rearnsha@arm.com>

	* Makefile.in (armnbsd-nat.o): Update dependencies.
	* armnbsd-nat.c (supply_gregset): New function.  Common code to
	supply the integer register set.
	(supply_fparegset): New function.  Similar for FPA registers.
	(fetch_regs, fetch_fp_regs): Use them.
	(fetch_core_registers): Likewise.
	(fetch_elfcore_registers): New function.
	(arm_netbsd_elfcore_fns): New core-file type specification.
	(_initialize_arm_netbsd_nat): Register it.

2002-02-21  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-nat.c: Include gdbcore.h.
	(FETCH_INFERIOR_REGISTERS): Just error if this isn't defined.
	(fetch_regs, fetch_fp_regs, store_regs, store_fp_regs): Add explicit
	'void' to declaration, to shut up ARI.
	(fetch_core_registers): Make static.  Rewrite using supply_register.
	(arm_netbsd_core_fns): New core-file type specification.
	(_initialize_arm_netbsd_nat): New function.

2002-02-21  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (register_loaded_dll): Correctly check for invalid handle
	value.

2002-02-20  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (register_loaded_dll): Handle case where FindFirstFile
	fails.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* jv-exp.y (parse_number): Change type of implicit longs
	to builtin_type_uint64.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (mywait): Change argument to waitpid
	to be an integer instead of a `union wait'.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* mips-linux-nat.c: Call the operating system GNU/Linux.
	* mips-linux-tdep.c: Likewise.
	* mips-tdep.c: Likewise.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR gdb/265.
	* jv-exp.y (parse_number): Handle 64-bit integers.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/configure.in: Remove AM_PROC_CC_STDC.  Change
	AC_STDC_HEADERS to AC_HEADER_STDC.
	* gdbserver/configure: Regenerated.

2002-02-20  Richard Earnshaw  <rearnsha@arm.com>

	* arc-tdep.c (get_longjmp_target): Only compile this function if JB_PC
	is defined.
	* sparc-tdep.c (get_longjmp_target): Likewise.

2002-02-20  Richard Earnshaw  <rearnsha@arm.com>

	* News: Add news about ARM and Multi-arch.  Mention the new target
	arm*-*-netbsd*.

2002-02-19  Jim Blandy  <jimb@redhat.com>

	* stabsread.c (error_type_complaint): Improve error message.

2002-02-19  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/README: Update documentation.
	* gdbserver/configure.in: Update configury to match documentation.
	* gdbserver/Makefile.in: Likewise.
	* gdbserver/configure: Regenerated.
	* gdbserver/aclocal.m4: New file, generated by aclocal.
	* gdbserver/config.in: New file, generated by autoheader.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* config/djgpp/fnchange.lst: Add change rules for armnbsd-tdep.c and
	armnbsd-nat.c.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.h (enum arm_float_model): New enum.
	(struct gdbarch_tdep): Add fp_model.
	* arm-tdep.c (arm_gdbarch_init): Set fp_model in tdep.  Defer setting
	up floating-point conversions until we know the floating-point model
	in use by the inferior.  Don't complain about being unable to
	determine the ABI of the inferior when we don't have one.
	(arm_extract_return_value): Support different floating-point models.
	(arm_store_return_value): Likewise.
	* armnbsd-tdep.c (arm_netbsd_aout_init_abi): Set fp_model in tdep to
	ARM_FLOAT_SOFT.
	(arm_netbsd_elf_init_abi): Set fp_model to ARM_FLOAT_SOFT_VFP.

2002-02-19  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* i386-tdep.c (i386_gdbarch_init): Eliminate incorrect use
        of ``current_gdbarch''.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-nat.c : ANSIfy all function declarations.
	(fetch_register, fetch_regs, fetch_fp_register, fetch_fp_regs): New.
	(fetch_inferior_registers): Re-implement in terms of above.
	(store_register, store_regs, store_fp_register, store_fp_regs): New.
	(store_inferior_registers): Re-implement in terms of above.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-nat.c: Linux -> GNU/Linux when not talking about the
	kernel.
	* arm-linux-tdep.c: Likewise.
	* config/arm/tm-linux.h: Likewise.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* configure.tgt (arm*-*-netbsd*): This variant is now fully multi-arch.
	* config/arm/nbsd.mt (TM_FILE): Delete.
	* config/arm/tm-nbsd.h: Delete.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_gdbarch_init): Initialize TARGET_CHAR_SIGNED.
	Initialize CALL_DUMMY_LENGTH.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-tdep.c (arm_netbsd_aout_in_solib_call_trampoline): New
	function.
	(arm_netbsd_aout_init_abi): Initialize IN_SOLIB_CALL_TRAMPOLINE.
	* config/arm/tm-nbsd.h: Don't include config/tm-nbsd.h, it only
	defines one thing and that is incorrect for this port.
	(IN_SOLIB_CALL_TRAMPOLINE): Delete.

2002-02-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* go32-nat.c: add i386-tdep.h include to import FP_REGNUM_P macro.

2002-02-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (display_selector): New function. Displays information
	about the information returned by GetThreadSelectorEntry API function.
	(display_selectors): New function. Displays the infomation of
	the selector given as argument, or of CS, DS ans FS selectors
	if no argument is given.
	( _initialize_inftarg): Add "w32" as info prefix command.
	Add "info w32 selector" as command calling display_selectors.

2002-02-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* i386-tdep.c (get_longjmp_target): Fix compilation failure
	by setting dummy values to JB_PC and JB_ELEMENT_SIZE
	if not defined.

2002-02-18  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/nbsd.mt (TDEPFILES): Add solib-sunos.o.

2002-02-18  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_set_call_dummy_breakpoint_offset): New function.
	(arm_fix_call_dummy): Call it.
	(arm_call_dummy_breakpoint_offset): Delete.
	(arm_gdbarch_init): Initialize call_dummy_breakpoint_offset.
	* config/arm/tm-arm.h (CALL_DUMMY_BREAKPOINT_OFFSET): Delete.

2002-02-18  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (FRAME_CHAIN_VALID): Only require at level 2.
	Default to func_frame_chain_valid.
	* gdbarch.h, gdbarch.c: Re-generate.
	* frame.h (FRAME_CHAIN_VALID): Delete definition.

2002-02-18  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-linux-nat.c: Update copyright.
	(fetch_register, store_register): Add tid parameter, don't compute
	tid here.
	(fetch_ppc_registers, store_ppc_registers): Add tid
	parameter. Pass it along to callees.
	(fetch_inferior_registers, store_inferior_registers): Compute tid
	here, and pass it to calleed functions.
	(fill_gregset, supply_fpregset): Clean up formatting.

2002-02-18  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_gdbarch_init): Initialize coerce_float_to_double.
	* config/arm/tm-arm.h (COERCE_FLOAT_TO_DOUBLE): Delete.

2002-02-18  Richard Earnshaw  <rearnsha@arm.com>

	* gdbarch.sh (GET_LONGJMP_TARGET): Add rule.
	* gdbarch.c gdbarch.h: Regenerate.
	* breakpoint.c (create_longjmp_breakpoint): Always compile this
	function.
	(breakpoint_reset): Test GET_LONGJMP_TARGET_P().
	* infrun.c (GET_LONGJMP_TARGET): Delete default definition.
	(handle_inferior_event): Test GET_LONGJMP_TARGET_P().

	* arm-tdep.h (struct gdbarch_tdep): Add jb_pc and jb_elt_size fields.
	* arm-tdep.c (arm_get_longjmp_target): New function.
	(arm_gdbarch_init): Initialize jb_pc to -1.  If ABI handler changes
	this to a positive value register arm_get_longjmp_target as the
	longjmp handler.
	* arm-linux-tdep.c (arm_get_longjmp_target): Delete.
	(arm_linux_init_abi): Set up longjmp description in tdep.
	* armnbsd-nat.c (get_longjmp_target): Delete.
	* armnbsd-tdep.c (arm_netbsd_init_abi_common): Set up longjmp
	description in tdep.
	* config/arm/tm-nbsd.h (JB_ELEMENT_SIZE, JB_PC): Delete.
	(get_longjmp_target): Delete declaration.
	(GET_LONGJMP_TARGET): Delete.
	* config/arm/tm-linux.h (arm_get_longjmp_target): Delete declaration.
	(GET_LONGJMP_TARGET): Delete.

2002-02-17  Kevin Buettner  <kevinb@redhat.com>

	From Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>:
	* ia64-tdep.c (ia64_gdbarch_init): Eliminate incorrect use
	of ``current_gdbarch''.

2002-02-17  Tom Tromey  <tromey@redhat.com>

	* cli/cli-cmds.c (compare_strings): New function.
	(complete_command): Only print each unique item once.
	* completer.h (complete_line): Declare.
	* completer.c (complete_line): New function.
	(line_completion_function): Use it.

2002-02-16  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (TARGET_LONG_DOUBLE_BIT): Default to 64.
	* gdbarch.h, gdbarch.c: Re-generate.

2002-02-16  Daniel Jacobowitz  <drow@mvista.com>

	* valarith.c (value_x_unop): Fix decrement; support post-decrement.

2002-02-16  Daniel Jacobowitz  <drow@mvista.com>

	From Peter Schauer <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>:
	* valops.c (value_arg_coerce): Don't take the address of a reference
	to convert an argument to a reference.

2002-02-15  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (get_image_name): New function.
	(handle_load_dll): Use get_image_name function.
	(get_child_debug_event): Avoid registering debug events until possibly
	execed process is started.
	(child_create_inferior): Allow invocation via shell so that command
	line redirection, etc.  works ok.
	(_initialize_inftarg): Add new command: "set shell" to control whether
	a shell is used to start a process.

2002-02-15  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-mips-low.c (cannot_fetch_register): Use find_regno
	instead of find_register_by_number.
	(cannot_store_register): Likewise.

2002-02-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	* dwarf2read.c: Replace fprintf (stderr, ...) by
	fprintf_unfiltered (gdb_stderr, ...).

2002-02-15  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/gdbserver.1: Document --attach.

2002-02-15  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.h (struct gdbarch_tdep): Add fields for breakpoint
	descriptions.
	* arm-tdep.c (arm_default_arm_le_breakpoint)
	(arm_default_arm_be_breakpoint, arm_default_thumb_le_breakpoint)
	(arm_default_thumb_be_breakpoint): New.  Initialize them from
	traditional breakpoint defines.
	(arm_breakpoint_from_pc): Use new gdbarch_tdep entries.
	(arm_gdbarch_init): Initialize new breakpoint variables.
	* arm-linux-tdep.c (arm_linux_arm_le_breakpoint): New.
	(arm_linux_init_abi): Initialize linux-specific breakpoint.
	* armnbsd-tdep.c (arm_nbsd_arm_le_breakpoint): New.
	(arm_netbsd_aout_init_abi, arm_netbsd_elf_init_abi): Split common
	code out to ...
	(arm_netbsd_init_abi_common): ... here; new function.
	* config/arm/tm-arm.h (ARM_LE_BREAKPOINT, ARM_BE_BREAKPOINT)
	(THUMB_LE_BREAKPOINT, THUMB_BE_BREAKPOINT): Delete.
	* config/arm/tm-linux.h (ARM_LE_BREAKPOINT): Delete.
	* config/arm/tm-nbsd.h (ARM_LE_BREAKPOINT): Delete.

2002-02-15  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.h (enum arm_abi): New enum.
	(struct gdbarch_tdep): New structure.
	(LOWEST_PC): Provide a default.
	(arm_gdbarch_register_os_abi): Declare new function.
	* arm-tdep.c (arm_abi_names): New array.
	(process_note_abi_tag_sections): New function.
	(get_elfosabi): New function.
	(arm_gdbarch_register_os_abi): New function.
	(arm_gdbarch_init): Try to determine the ABI of the inferior.  If
	support for that ABI has been built in, then call the appropriate
	configuration routine.  Use gdbarch_num_regs() to get the number
	of registers.
	(arm_dump_tdep): New function.
	(arm_init_abi_eabi_v1, arm_init_abi_eabi_v2, arm_init_abi_apcs): New
	place-holder functions.
	(_initialize_arm_tdep): Register them.
	* config/arm/tm-arm.h (LOWEST_PC): Delete.

	* armnbsd-tdep.c: New file.
	* Makefile.in (armnbsd-tdep.o): Add dependencies.
	* config/arm/nbsd.mt (TDEPFILES): Add it.
	* config/arm/tm-nbsd.h (LOWEST_PC): Delete.

	* armnbsd-nat.c: Include regcache.h.
	* Makefile.in (armnbsd-nat.o): Update dependency list.

	* arm-tdep.c (arm_get_next_pc): Use printf_filtered for error message.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in: Fix typos in target rules.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	Fix part of PR gdb/267.
	* linespec.c (find_methods): Handle constructors specially for now.

2002-02-14  Corinna Vinschen  <vinschen@redhat.com>

	* arm-tdep.c (arm_push_arguments): Eliminate special float type
	handling.
	* config/arm/tm-arm.h (COERCE_FLOAT_TO_DOUBLE): Define to call
	standard_coerce_float_to_double().

2002-02-14  Christopher Faylor  <cgf@redhat.com>

	* config/i386/xm-cygwin.h: Revert inadvertent reinclusion of
	GDBINIT_FILENAME.

2002-02-14  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (rs6000_gdbarch_init): Don't call
	find_variant_by_name, because it confuses the multiarch
	framework. Return NULL if there isn't an architecture with the
	user supplied name, instead of forcing a different one without
	recording the change with the multiarch machinery.
	(find_variant_by_name): Delete.

2002-02-14  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* config/i386/i386sol2.mh (NATDEPFILES): Add i387-nat.o, needed by
	i386v4-nat.o now. Add gcore.o, Solaris x86 supports gcore.

2002-02-13  Martin M. Hunt  <hunt@redhat.com>

	* stack.c (print_frame_info_base): When calling
	print_frame_info_listing_hook, set current_source_symtab.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in: Add regformats directory to INCLUDE_CFLAGS,
	and remove unused $(INCLUDE_DIR).
	Add regcache.c to OBS.
	Add generated register protocol files to clean target.
	Update dependencies for new objects, obsolete old target code.

	* gdbserver/linux-low.c: Remove all platform-specific code to
	new files.  Remove various dead code.  Update to use regcache
	functionality.
	* gdbserver/remote-utils.c (fromhex): Add return statement
	to quiet warning.
	(putpkt): Dynamically allocate buf2 because PBUFSIZ is no longer
	constant.
	(input_interrupt): Add integer parameter to match prototype
	of a signal handler.
	(outreg): Use register_data ().
	(prepare_resume_reply): Use gdbserver_expedite_regs.
	* gdbserver/server.c (main): Dynamically allocate own_buf because
	PBUFSIZ is no longer constant.  Use registers_to_string () and
	registers_from_string ().
	* gdbserver/server.h: No longer include "defs.h".  Add prototypes
	for error (), fatal (), and warning ().  Update definition of
	PBUFSIZ to use regcache functionality.  Add include guard.
	* gdbserver/utils.c (fatal): Add missing ``const''.
	(warning): New function.

	* regformats/regdat.sh: Include "regcache.h" in generated files.
	Provide init_registers () function.
	* regformats/regdef.h: Add prototype for set_register_cache ().
	Add include guard.

	* gdbserver/linux-arm-low.c: New file.
	* gdbserver/linux-i386-low.c: New file.
	* gdbserver/linux-ia64-low.c: New file.
	* gdbserver/linux-m68k-low.c: New file.
	* gdbserver/linux-mips-low.c: New file.
	* gdbserver/linux-ppc-low.c: New file.
	* gdbserver/linux-sh-low.c: New file.

	* gdbserver/regcache.c: New file.
	* gdbserver/regcache.h: New file.

	* gdbserver/low-linux.c: Removed obsolete file.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	* config/arm/linux.mt: Update GDBSERVER_DEPFILES.
	* config/i386/linux.mt: Likewise.
	* config/ia64/linux.mt: Likewise.
	* config/m68k/linux.mh: Likewise.
	* config/powerpc/linux.mh: Likewise.
	* config/mips/linux.mt: Likewise.

	* config/sh/linux.mt: Add GDBSERVER_DEPFILES.

	* config/i386/i386lynx.mh: Mark gdbserver variables
	as (currently) obsolete for this target.
	* config/i386/nbsd.mt: Likewise.
	* config/i386/nbsdelf.mt: Likewise.
	* config/m32r/m32r.mt: Likewise.
	* config/m68k/m68klynx.mh: Likewise.
	* config/m68k/nbsd.mt: Likewise.
	* config/m68k/sun3os4.mh: Likewise.
	* config/mips/vr5000.mt: Likewise.
	* config/ns32k/nbsd.mt: Likewise.
	* config/pa/hppabsd.mh: Likewise.
	* config/pa/hppaosf.mh: Likewise.
	* config/powerpc/nbsd.mt: Likewise.
	* config/rs6000/rs6000lynx.mh: Likewise.
	* config/s390/s390.mt: Likewise.
	* config/s390/s390x.mt: Likewise.
	* config/sparc/sparclynx.mh: Likewise.
	* config/sparc/sun4os4.mh: Likewise.
	* config/i386/x86-64linux.mt: Likewise.
	* config/sparc/linux.mh: Likewise.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	* configure.tgt: Configure gdbserver only for known working
	targets.  Set ${build_gdbserver} instead of modifying ${configdirs}.
	* configure.in: Check ${build_gdbserver}.  Put gdbserver/ into
	SUBDIRS if it is configured.  Update comment for ${nativefile}.
	* configure: Regenerated.

2002-02-13  Michael Snyder  <msnyder@redhat.com>

	* config/i386/i386v42mp.mh: Add gcore.o to NATDEPFILES.

	* gcore.c (gcore_command): Use gcore_default_target instead of NULL.
	(default_gcore_mach): Just return 0, work around a problem in bfd.
	(default_gcore_target): OK to return NULL if exec_bfd is null.
	(make_mem_sec): Use a cast, avoid a warning.

	* procfs.c (find_memory_regions_callback): Use a cast instead of
	calling host_pointer_to_address (which complains if
	sizeof (host pointer) != sizeof (target pointer)).
	(procfs_make_note_section): Avoid overflow in psargs string.

	* procfs.c (procfs_make_note_section): Make the default
	implementation return an error.

2002-02-13  Rodney Brown  <rbrown64@csc.com.au>

	* procfs.c (procfs_make_note_section): Provide a default definition
	(for alpha-dec-osf4.0f). Fix typos.

2002-02-13  Elena Zannoni  <ezannoni@redhat.com>

	* linux-proc.c: Add include of regcache.h.
	* Makefile.in (linux-proc.o): Add dependency on regcache.h.

2002-02-13  Andrew Cagney  <ac131313@redhat.com>

	From 2002-01-18 Greg McGary <greg@mcgary.org>:
	* memattr.c (create_mem_region): Disallow useless empty region.
	Regions are half-open intervals, so allow [A..B) [B..C) as
	non-overlapping.

2002-02-13  Michael Chastain <mec@shout.net>

	* defs.h: Kill CONST_PTR.
	* c-lang.h (c_builtin_types): Change CONST_PTR to simple "const".
	* c-lang.c (c_builtin_types): Likewise.
	* ch-lang.c (ch_builtin_types): Likewise.
	* f-lang.c (f_builtin_types): Likewise.
	* language.c (unknown_builtin_types): Likewise.
	* m2-lang.c (m2_builtin_types): Likewise.
	* p-lang.c (pascal_builtin_types): Likewise.
	* scm-lang.c (c_builtin_types): Likewise.

2002-02-13  Keith Seitz  <keiths@redhat.com>

	* arm-tdep.h (arm_get_next_pc): Add declaration.

2002-02-13  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_use_struct_convention): Make static.  Move to be
	with other related struct-returning functions.
	(arm_extract_struct_value_address): New function.
	(arm_gdbarch_init): Initialize the above in multi-arch vector.  Also
	initialize float_format, double_format and long_double_format as
	appropriate to the endianness of the target.
	* config/arm/tm-arm.h (TARGET_DOUBLE_FORMAT): Delete.
	(arm_use_struct_convention): Delete declaration.
	(USE_STRUCT_CONVENTION, EXTRACT_STRUCT_VALUE_ADDRESS): Delete.

2002-02-13  Keith Seitz  <keiths@redhat.com>

        * defs.h (core_addr_to_string_nz): New function.

2002-02-13  Mark Kettenis  <kettenis@gnu.org>

	Apply missing bits of 2002-01-15 patch.
	* i386v4-nat.c (supply_fpregset): Use i387_supply_fsave.
	(fill_fpregset): Use i387_fill_fsave.

2002-02-12  Keith Seitz  <keiths@redhat.com>

	* utils.c (core_addr_to_string): Use phex instead of phex_nz.
	(core_addr_to_string_nz): New function.

2002-02-11  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-nat.c: Really include arm-tdep.h.
	* config/arm/tm-linux.h (struct type, struct value): Declare.

2002-02-11  Michael Snyder  <msnyder@redhat.com>

	* procfs.c: Include elf-bfd.h (for elfcore_write functions).
	(gcore section): Ifdef for Solaris and Unixware only.
	(procfs_do_thread_registers): Unixware needs one lwpstatus
	per thread (not one prstatus or pstatus).
	(procfs_make_note_section): Iterate only over kernel threads (lwps),
	not over all gdb threads.  For unixware, call elfcore_write_pstatus
	once before iterating over threads.

2002-02-11  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.h: New file.
	* arm-tdep.c: Include arm-tdep.h.
	(arm_addr_bits_remove, arm_smash_text_address, arm_saved_pc_after_call)
	(arm_skip_prologue, arm_call_dummy_words, arm_fix_call_dummy)
	(arm_print_float_info, arm_register_type, convert_to_extended)
	(arm_elf_make_msymbols_special, arm_coff_make_msymbol_special)
	(arm_extract_return_value, arm_register_name): Make static.
	(arm_software_single_step): Similarly.  Fix types in declaration.
	(arm_register_byte, arm_register_raw_size, arm_register_virtual_size)
	(arm_store_return_value, arm_store_struct_return): New functions.
	(arm_gdbarch_init): Register the above functions.  Also register
	call_dummy_start_offset, sizeof_call_dummy_words,
	function_start_offset, inner_than, decr_pc_after_break, fp_regnum,
	sp_regnum, pc_regnum, register_bytes, num_regs, max_register_raw_size,
	max_register_virtual_size, register_size.  Set up
	prologue_cache.saved_regs here, rather than ...
	(_initialize_arm_tdep): ... here.
	* config/arm/tm-arm.h (struct type, struct value): Delete forward
	declarations.
	(arm_addr_bits_remove, arm_smash_text_address, arm_saved_pc_after_call)
	(arm_skip_prologue, arm_call_dummy_words, arm_fix_call_dummy)
	(arm_print_float_info, arm_register_type, convert_to_extended)
	(arm_elf_make_msymbols_special, arm_coff_make_msymbol_special)
	(arm_extract_return_value, arm_register_name): Delete declarations.
	(SMASH_TEXT_ADDRESS, ADDR_BITS_REMOVE, FUNCTION_START_OFFSET)
	(SKIP_PROLOGUE, SAVED_PC_AFTER_CALL, INNER_THAN, BREAKPOINT_FROM_PC)
	(DECR_PC_AFTER_BREAK, PRINT_FLOAT_INFO, REGISTER_SIZE, NUM_REGS)
	(REGISTER_NAME, REGISTER_BYTES, REGISTER_BYTE, REGISTER_RAW_SIZE)
	(REGISTER_VIRTUAL_SIZE, MAX_REGISTER_RAW_SIZE)
	(MAX_REGISTER_VIRTUAL_SIZE, REGISTER_VIRTUAL_TYPE, STORE_STRUCT_RETURN)
	(EXTRACT_RETURN_VALUE, STORE_RETURN_VALUE, CALL_DUMMY_WORDS)
	(SIZEOF_CALL_DUMMY_WORDS, CALL_DUMMY_START_OFFSET, FIX_CALL_DUMMY)
	(SOFTWARE_SINGLE_STEP_P, SOFTWARE_SINGLE_STEP)
	(ELF_MAKE_MSYMBOL_SPECIAL, COFF_MAKE_MSYMBOL_SPECIAL) Delete.
	(arm_pc_is_thumb, arm_pc_is_thumb_dummy, thumb_get_next_pc)
	(arm_get_next_pc): No-longer static -- these are needed by the RDI
	interface.
	* arm-linux-nat.c arm-linux-tdep.c armnbsd-nat.c: Include arm-tdep.h.
	* remote-rdi.c remote-rdp.c: Likewise.
	* Makefile.in (arm-linux-nat.o, arm-linux-tdep.o arm-tdep.o)
	(armnbsd-nat.o, remote-rdi.o, remote_rdp.o): Update dependencies.
	* config/arm/tm-nbsd.h (SOFTWARE_SINGLE_STEP_P): Delete bogus
	definition.

	* arm-tdep.h (ARM_A1_REGNUM, ARM_A4_REGNUM, ARM_AP_REGNUM)
	(ARM_SP_REGNUM, ARM_LR_REGNUM, ARM_PC_REGNUM, ARM_F0_REGNUM)
	(ARM_F3_REGNUM, ARM_F7_REGNUM, ARM_FPS_REGNUM, ARM_PS_REGNUM): Renamed
	from non-ARM_ prefixed definitions.
	* arm-tdep.c armnbsd-nat.c arm-linux-nat.c arm-linux-tdep.c: Update
	all uses of above.
	* remote-rdi.c remote-rdp.c: Likewise.
	* arm-linux-nat.c (ARM_CPSR_REGNUM): Renamed from CPSR_REGNUM.

2002-02-11  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_frameless_function_invocation)
	(arm_frame_args_address, arm_frame_locals_address, arm_frame_num_args)
	(arm_frame_chain, arm_init_extra_frame_info, arm_frame_saved_pc)
	(arm_read_fp, arm_frame_init_saved_regs, arm_push_dummy_frame)
	(arm_pop_frame, arm_get_next_pc): Make static.
	(arm_gdbarch_init): Register above in gdbarch structure.
	(arm_read_fp): Renamed from arm_target_read_fp.
	(arm_pc_is_thumb, arm_pc_is_thumb_dummy): Make static.
	* config/arm/tm-arm.h (arm_frameless_function_invocation)
	(arm_frame_args_address, arm_frame_locals_address, arm_frame_num_args)
	(arm_frame_chain, arm_init_extra_frame_info, arm_frame_saved_pc)
	(arm_target_read_fp, arm_frame_init_saved_regs, arm_push_dummy_frame)
	(arm_pop_frame, arm_get_next_pc, arm_pc_is_thumb)
	(arm_pc_is_thumb_dummy): Delete declarations.
	(INIT_EXTRA_FRAME_INFO, TARGET_READ_FP, FRAME_CHAIN)
	(FRAMELESS_FUNCTION_INVOCATION, FRAME_SAVED_PC, FRAME_ARGS_ADDRESS)
	(FRAME_LOCALS_ADDRESS, FRAME_NUM_ARGS, FRAME_ARGS_SKIP)
	(FRAME_INIT_SAVED_REGS, PUSH_DUMMY_FRAME, POP_FRAME): Delete.

2002-02-10  Daniel Jacobowitz  <drow@mvista.com>

	* symtab.c (compare_search_syms): New function.
	(sort_search_symbols): New function.
	(search_symbols): Sort symbols after searching rather than
	before.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* NEWS: Linux -> GNU/Linux.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: For for level one methods, disallow a definition
	when partially multi-arched.  Add comments explaining rationale.
	* gdbarch.h: Re-generate.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (EXTRA_STACK_ALIGNMENT_NEEDED): Don't require when
	multi-arch partial.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Map LEVEL onto a symbolic GT_LEVEL.  Exit on bad
	field.  Use diff -u.
	* gdbarch.c: Re-generate.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* config/mips/tm-mips.h (CALL_DUMMY_LOCATION): Delete.
	* gdbarch.sh (PUSH_RETURN_ADDRESS): Don't require when multi-arch
	partial.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (REGISTER_CONVERTIBLE): Don't require when
	multi-arch partial.
	(PUSH_ARGUMENTS): Switch to using predefault.
	* gdbarch.c: Regenerate.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* valops.c (PUSH_ARGUMENTS): Delete definition.
	* gdbarch.sh (PUSH_ARGUMENTS): Don't require when multi-arch
	partial.  Default to default_push_arguments.
	* gdbarch.h, gdbarch.c: Regenerate.

2002-02-09  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (throw_exception): Rename return_to_top_level.  Update
	comments.
	* utils.c (error_stream, internal_verror, quit): Ditto.
	* top.c (throw_exception, catcher): Ditto.
	* sparclet-rom.c (sparclet_load): Ditto.
	* remote.c (interrupt_query, minitelnet): Ditto.
	* remote-sds.c (interrupt_query): Ditto.
	* remote-mips.c (mips_error, mips_kill): Ditto.
	* ocd.c (interrupt_query): Ditto.
	* monitor.c (monitor_interrupt_query): Ditto.
	* m3-nat.c (suspend_all_threads, thread_resume_command): Ditto.
	* target.h: Update comment.

	* m3-nat.c, ocd.c, sparclet-rom.c: Update copyright.

2002-02-09  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (TARGET_LONG_DOUBLE_FORMAT): Default to
	default_double_format.
	* gdbarch.h, gdbarch.c: Re-generate.
	* findvar.c (floatformat_unknown): Delete variable definition.
	* doublest.h (floatformat_unknown): Delete variable declaration.

2002-02-09  Jim Blandy  <jimb@redhat.com>

	* stabsread.c (read_type): Add code to parse Sun's syntax for
	prototyped function types.

2002-02-09  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (SUBDIR_CLI_INITS): Set to SUBDIR_CLI_SRCS.
	(SUBDIR_MI_INITS): Set to SUBDIR_MI_SRCS.

2002-02-09  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* xcoffsolib.c (_initialize_xcoffsolib): Renamed from
	_initialize_solib.  Fixes name clash with solib.c:_initialize_solib,
	now _initialize_xcoffsolib gets called again and overrides the
	commands from solib.c in a native configuration.

2002-02-09  Mark Kettenis  <kettenis@gnu.org>

	* doublest.c (store_typed_floating): Don't try to return a value.
	Fixes PR gdb/290.

2002-02-08  Jim Blandy  <jimb@redhat.com>

	* c-typeprint.c (c_type_print_varspec_suffix): If a function type
	is prototyped and has no arguments, print its argument list as
	`(void)'.

2002-02-08  Chris Demetriou  <cgd@broadcom.com>

	* MAINTAINERS (write-after-approval): Add myself.
	(paper-trail): I've escaped!

2002-02-08  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (cygwin_pid_to_str): Revert 2002-02-08 change xasprintf
	changes.
	(_initialize_check_for_gdb_ini): Ditto.

2002-02-08  Martin M. Hunt  <hunt@redhat.com>

	* win32-nat.c (cygwin_pid_to_str): Fix typo.
	xaprintf -> xasprintf.

2002-02-08  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c: Remove use of printf and sprintf functions.

2002-02-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_frame_chain_valid): Make static.
	(arm_push_arguments): Likewise.
	(arm_gdbarch_init): New function.
	(_initialize_arm_tdep): Call it.
	* config/arm/tm-arm.h (GDB_MULTI_ARCH): Set to 1.
	(TARGET_DOUBLE_FORMAT): Test TARGET_BYTE_ORDER, not target_byte_order.
	(FRAME_CHAIN_VALID): Delete.
	(arm_frame_chain_valid): Delete declaration.
	(PUSH_ARGUMENTS): Delete.
	(arm_push_arguments): Delete declaration.
	(CALL_DUMMY_P): Delete.

2002-02-08  Andrew Cagney  <ac131313@redhat.com>
	    Corinna Vinschen  <vinschen@redhat.com>

	* gdbtypes.c (build_gdbtypes): Disable setting a specific float format
	on builtin float types.

2002-02-08  Daniel Jacobowitz  <drow@mvista.com>

	* utils.c: Include <curses.h> before "bfd.h".
	* tui/tui-hooks.c: Likewise.
	* tui/tui.c: Likewise.
	* tui/tuiCommand.c: Likewise.
	* tui/tuiData.c: Likewise.
	* tui/tuiDataWin.c: Likewise.
	* tui/tuiDisassem.c: Likewise.
	* tui/tuiGeneralWin.c: Likewise.
	* tui/tuiIO.c: Likewise.
	* tui/tuiLayout.c: Likewise.
	* tui/tuiRegs.c: Likewise.
	* tui/tuiSource.c: Likewise.
	* tui/tuiSourceWin.c: Likewise.
	* tui/tuiStack.c: Likewise.
	* tui/tuiWin.c: Likewise.

2002-02-07  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_nofp_frame_init_saved_regs): Extend where[] array
	to include space for pseudoregs as well. Update loops accordingly.
	(sh_fp_frame_init_saved_regs): Ditto.
	(sh_init_extra_frame_info, sh_pop_frame): Split long lines.

2002-02-07  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Andreas Schwab is GNU/Linux m68k maintainer.
	Add Richard Earnshaw to Arm maintainers.

2002-02-07  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (warning_begin): Delete declaration.

	* config/powerpc/tm-ppcle-eabi.h (TARGET_BYTE_ORDER_DEFAULT):
	Delete macro.

2002-02-07  Michael Snyder  <msnyder@redhat.com>

	* solib-legacy.c (legacy_svr4_fetch_link_map_offsets):
	Logic bug, remove misplaced else.

2002-02-07  Klee Dienes  <klee@apple.com>

	* fork-inferior.c (fork_inferior): Add '!' to the list of
	characters that need to be quoted when building a string for the
	shell.  Quote '!' specifically with a backslash, since CSH chokes
	when trying to evaluate "str!str".

2002-02-06  Nick Clifton  <nickc@cambridge.redhat.com>

	* rdi-share/host.h: Only provide a typedef for bool if it is not
	defined.

2002-02-04  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.h (enum bptype): Add new overlay event bp type.
	(enable_overlay_breakpoints, disable_overlay_breakpoints): Export.

	* breakpoint.c (create_internal_breakpoint): New function.
	(internal_breakpoint_number): Moved into create_internal_breakpoint.
	(create_longjmp_breakpoint): Use create_internal_breakpoint.
	(create_thread_event_breakpoint): Ditto.
	(create_solib_event_breakpoint): Ditto.
	(create_overlay_event_breakpoint): New function.
	(enable_overlay_breakpoints, disable_overlay_breakpoints): New funcs.
	(update_breakpoints_after_exec): Delete and re-initialize
	overlay event breakpoints after an exec.  Add FIXME comment
	about longjmp breakpoint.
	(print_it_typical): Ignore overlay event breakpoints.
	(print_one_breakpoint): Ditto.
	(mention): Ditto.
	(bpstat_what): Do not stop for overlay event breakpoints.
	(delete_breakpoint): Don't delete overlay event breakpoints.
	(breakpoint_re_set_one): Delete the overlay event breakpoint.
	(breakpoint_re_set): Re-create overlay event breakpoint.

	* symfile.c (overlay_auto_command): Enable overlay breakpoints.
	(overlay_manual_command): Disable overlay breakpoints.
	(overlay_off_command): Disable overlay breakpoints.

2002-02-06  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c: Include elf-bfd.h and coff/internal.h.
	(MSYMBOL_SET_SPECIAL, MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Move defines
	to here from config/tm-arm.h.
	(coff_sym_is_thumb): Make static.
	(arm_elf_make_msymbol_special): New function.
	(arm_coff_make_msymbol_special): New function.
	* config/arm/tm-arm.h (MSYMBOL_SET_SPECIAL): Delete definition.
	(MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Likewise.
	(coff_sym_is_thumb): Delete declaration.
	(arm_elf_make_msymbol_special): Declare.
	(arm_coff_make_msymbol_special): Declare.
	(ELF_MAKE_MSYMBOL_SPECIAL): Call arm_elf_make_msymbol_special.
	(COFF_MAKE_MSYMBOL_SPECIAL): Call arm_coff_make_msymbol_special.

2002-02-06  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_software_single_step): ANSIfy function declaration.

2002-02-06  Richard Earnshaw  <rearnsha@arm.com>

	* gdbarch.sh (PRINT_FLOAT_INFO): Add rule.
	* gdbarch.c gdbarch.h: Regenerate.
	* arch-utils.c (default_print_float_info): New function.
	* arch-utils.h (default_print_float_info): Prototype it.
	* infcmd.c (float_info): Call PRINT_FLOAT_INFO.
	* doc/gdbint.texinfo (FLOAT_INFO): Mark as deprecated.
	(PRINT_FLOAT_INFO): Document it.

	* arm-tdep.c (arm_print_float_info): Renamed from arm_float_info.
	* config/arm/tm-arm.h (FLOAT_INFO): Delete.
	(PRINT_FLOAT_INFO): Define.

2002-02-06  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (_initialize_check_for_gdb_ini):
	Add typecast to sprintf argument to suppress a warning.

2002-02-05  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (last_sig): Changed type of variable to target_signal,
	to allow easier handling of pass state.
	(DEBUG_EXCEPTION_SIMPLE): New macro, used in handle_exception,
	that gives exception name and address.
	(handle_exception): Use DEBUG_EXCEPTION_SIMPLE macro
	and set last_sig value to ourstatus->value.sig. Some missing
	exceptions added.
	(child_continue): Correctly report continue_status.
	(get_child_debug_event,do_initial_child_stuff): Set last_sig to
	TARGET_SIGNAL_0 (new default value).
	(child_resume): consider sig argument passed to decide if
	the exception should be passed to debuggee or not.

2002-02-05  Michael Snyder  <msnyder@redhat.com>

	* regcache.c (fetch_register): Call target_fetch_register
	only if we don't call FETCH_PSEUDO_REGISTER.
	(store_register): Call target_store_register only if we
	don't call STORE_PSEUDO_REGISTER.

2002-02-05  Elena Zannoni  <ezannoni@redhat.com>

	* gdbarch.sh: Add definitions for COFF_MAKEMSYMBOL_SPECIAL and
	ELF_MAKE_MSYMBOL_SPECIAL.
	* gdbarch.c, gdbarch.h: Regenerate.
	* arch-utils.c (default_make_msymbol_special): New function.
	* arch-utils.h (default_make_msymbol_special): Export.
	* elfread.c (elf_symtab_read): Compile use of
	ELF_MAKE_MSYMBOL_SPECIAL unconditionally because it is now
	multiarched.
	* coffread.c (coff_symtab_read): Ditto, for
	COFF_MAKE_MSYMBOL_SPECIAL.

2002-02-05  Jim Blandy  <jimb@redhat.com>

	* solib-svr4.c (svr4_truncate_ptr): New function.
	(svr4_relocate_section_addresses): Do the address arithmetic with
	the appropriate truncation for target addresses, even when
	CORE_ADDR is larger than a target address.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (mywait): Cast second argument of waitpid
	to (int *).

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (kill_inferior): Remove commented out
	code.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

        * c-valprint.c (c_val_print): Handle TYPE_CODE_COMPLEX.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c: Remove unused include files.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c: Define PTRACE_ARG3_TYPE.
	(read_inferior_memory): Use it.
	(write_inferior_memory): Likewise.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (create_inferior): Call strerror instead of
	grubbing through sys_errlist.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c: New file, copied exactly from low-linux.c.

2002-02-04  Pierre Muller  <muller@ics.u-strasbg.fr>
	* win32-nat.c (handle_exception): Handle Ctrl-Break exception.

2002-02-04  Andrew Cagney  <ac131313@redhat.com>

	* cli/cli-decode.c (do_cfunc, set_cmd_cfunc): New functions.
	(do_sfunc, set_cmd_sfunc): New functions.

	* command.h (struct cmd_list_element): Add field func.
	* cli/cli-decode.h (struct cmd_list_element): Ditto.
	* command.h (set_cmd_sfunc, set_cmd_cfunc): Declare.
	* cli/cli-decode.h: Ditto.

	* cli/cli-decode.c (help_cmd): Test for func not cfunc/sfunc.
	(help_all, help_cmd_list): Ditto.
	(find_cmd, complete_on_cmdlist): Ditto.
	* top.c (execute_command): Ditto.

	* cli/cli-setshow.c (do_setshow_command): Call func instead of
	function.sfunc.

	* infcmd.c (notice_args_read): Fix function signature.

	* cli/cli-cmds.c (init_cli_cmds): Use set_cmd_sfunc.
	* cli/cli-decode.c (add_set_cmd): Ditto.
	* utils.c (initialize_utils): Ditto.
	* maint.c (_initialize_maint_cmds): Ditto.
	* infrun.c (_initialize_infrun): Ditto.
	* demangle.c (_initialize_demangler): Ditto.
	* remote.c (add_packet_config_cmd): Ditto.
	* mips-tdep.c (_initialize_mips_tdep): Ditto.
	* cris-tdep.c (_initialize_cris_tdep): Ditto.
	* proc-api.c (_initialize_proc_api): Ditto.
	* kod.c (_initialize_kod): Ditto.
	* valprint.c (_initialize_valprint): Ditto.
	* top.c (init_main): Ditto.
	* infcmd.c (_initialize_infcmd): Ditto.
	* corefile.c (_initialize_core): Ditto.
	* arm-tdep.c (_initialize_arm_tdep): Ditto.
	* arch-utils.c (initialize_current_architecture): Ditto.
	(_initialize_gdbarch_utils): Ditto.
	* alpha-tdep.c (_initialize_alpha_tdep): Ditto.

	* cli/cli-decode.c (add_cmd): Use set_cmd_cfunc.
	* wince.c (_initialize_inftarg): Ditto.
	* symfile.c (_initialize_symfile): Ditto.
	* mips-tdep.c (_initialize_mips_tdep): Ditto.
	* language.c (_initialize_language): Ditto.
	* arc-tdep.c (_initialize_arc_tdep): Ditto.

2002-02-04  Michael Snyder  <msnyder@redhat.com>

	* memattr.c (_initialize_mem): Elaborate the help for 'mem' command.

2002-02-04  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in: Add regformats directory to INCLUDE_CFLAGS.
	Add rules for building the register data files.

2002-02-04  Daniel Jacobowitz  <drow@mvista.com>

	* regformats/regdat.sh: Add braces to the definition of
	expedite_regs_${arch}.

2002-02-04  Daniel Jacobowitz  <drow@mvista.com>

	* regformats/regdef.h (struct reg): Add comment describing the
	requirements for offset and size fields.

2002-02-04  Andreas Schwab  <schwab@suse.de>

	* config/ia64/linux.mh: Don't set NAT_CLIBS and REGEX.
	* config/ia64/linux.mt: Don't set GDBSERVER_LIBS.

2002-02-04  Richard Earnshaw  <rearnsha@arm.com>

	* gdbarch.sh (copyright): Update years in generated header.
	(SMASH_TEXT_ADDRESS): Add rule.
	* gdbarch.h, gdbarch.c: Re-generate.
	* coffread.c: Multi-arch uses of SMASH_TEXT_ADDRESS.
	* dbxread.c: Likewise.
	* dwarfread.c: Likewise.
	* elfread.c: Likewise.
	* somread.c: Likewise.

	* arm-tdep.c (arm_smash_text_address): New function.
	* config/arm/tm-arm.h (SMASH_TEXT_ADDRESS): Define in terms of above.

2002-02-04  Pierre Muller  <muller@ics.u-strasbg.fr>

	Add support for hardware watchpoints on win32 native.
	* win32-nat.c (CONTEXT_DEBUG_DR macro): Add use of
	CONTEXT_DEBUG_REGISTERS.
	(dr variable): New variable. Static array containing a local copy
	of debug registers.
	(debug_registers_changed): New variable.  Reflects when debug registers
	are changed and need to be written to inferior.
	(debug_registers_used): New variable. Reflects when any debug register
	was set, used when new threads are created.
	(cygwin_set_dr, cygwin_set_dr7, cygwin_get_dr6): New functions used by
	i386-nat code.
	(thread_rec): Set dr array if id is the thread of current_event .
	(child_continue, child_resume): Change the debug registers for all
	threads if debug_registers_changed.
	(child_add_thread): Change the debug registers if debug_registers_used.
	* config/i386/cygwin.mh: Add use of i386-nat.o file.
	Link nm.h to new nm-cygwin.h file.
	+ config/i386/nm-cygwin.h: New file. Contains the macros used for use
	of hardware registers.

2002-02-03  Andrew Cagney  <ac131313@redhat.com>

	* valprint.c (print_floating): Allow non TYPE_CODE_FLT types.
	Restore behavour broken by 2002-01-20 Andrew Cagney
	<ac131313@redhat.com> IEEE_FLOAT removal.

2002-02-03  Daniel Jacobowitz  <drow@mvista.com>

	* c-valprint.c (c_val_print): Pass a proper valaddr to
	cp_print_class_method.
	* valops.c (search_struct_method): If there is only one method
	and args is NULL, return that method.

2002-02-03  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.c (init_simd_type): Use TYPE_TAG_NAME instead of
	accessing tag_name directly.

2002-02-03  Daniel Jacobowitz  <drow@mvista.com>

	* ax-gdb.c (find_field): Use TYPE_TAG_NAME instead
	of accessing tag_name directly.

2002-02-03  Daniel Jacobowitz  <drow@mvista.com>

	PR gdb/280
	* gdbtypes.c (replace_type): New function.
	* gdbtypes.h (replace_type): Add prototype.
	* stabsread.c (read_type): Use replace_type.

2002-02-03  Richard Earnshaw  <rearnsha@arm.com>

	* Makefile.in (memattr.o): Add missing dependencies rule.

2002-02-03  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* breakpoint.c (break_at_finish_command): Really export.
	(break_at_finish_at_depth_command): Ditto.
	(tbreak_at_finish_command): Ditto.
	* hppa-tdep.c: Include completer.h.
	* Makefile.in (hppa-tdep.o): Add dependency on $(completer_h).
	(COMMON_OBS): Remove duplicate ui-file.o, frame.o, doublest.o.

2002-02-01  Andrew Cagney  <ac131313@redhat.com>

	* utils.c (do_write): New function.
	(error_stream): Rewrite combining the code from error_begin and
	verror.
	(verror): Rewrite using error_stream.
	(error_begin): Delete function.

2002-02-01  Andrew Cagney  <ac131313@redhat.com>

	* utils.c (error_begin): Make static.
	* defs.h (error_begin): Delete declaration.

	* linespec.c (cplusplus_error): Replace cplusplus_hint.
	(decode_line_1): Use cplusplus_error instead of error_begin,
	cplusplus_hint and return_to_top_level.
	* coffread.c (coff_symfile_read): Use error instead of error_begin
	and return_to_top_level.
	* infrun.c (default_skip_permanent_breakpoint): Ditto.

2002-02-01  Andrew Cagney  <ac131313@redhat.com>

	* language.h (type_error, range_error): Make string parameter
	constant.
	* language.c (warning_pre_print): Delete extern declaration.
	* dwarfread.c (warning_pre_print): Ditto.
	* language.c (type_error, range_error): Rewrite to use verror and
	vwarning instead of warning_begin.

2002-02-01  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (breakpoint_re_set): Delete ancient #if 0 code.
	(set_ignore_count): Move misplaced comment back where it belongs.

2002-02-01  Andrew Cagney  <ac131313@redhat.com>

	* command.h (NO_FUNCTION): Delete macro.
	* cli/cli-decode.h (NO_FUNCTION): Ditto.
	* top.c (execute_command): Replace NO_FUNCTION with NULL.
	* tracepoint.c (_initialize_tracepoint): Ditto.
	* cli/cli-decode.c (add_set_cmd): Ditto.
	* cli/cli-cmds.c (init_cli_cmds): Ditto.

2002-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* gnu-v3-abi.c (gnuv3_virtual_fn_field): Update comments.
	Update ``this'' pointer when calling virtual functions.

2002-02-01  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (create_temp_exception_breakpoint): Delete.
	* hppa-tdep.c: Deprecate xbreak, txbreak and bx commands.

2002-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* regformats/reg-arm.dat: New file.
	* regformats/reg-i386.dat: New file.
	* regformats/reg-ia64.dat: New file.
	* regformats/reg-m68k.dat: New file.
	* regformats/reg-mips.dat: New file.
	* regformats/reg-ppc.dat: New file.
	* regformats/reg-sh.dat: New file.
	* regformats/regdef.h: New file.
	* regformats/regdat.sh: New file.

2002-02-01  Richard Earnshaw  <reanrsha@arm.com>

	* arm-tdep.c (arm_frameless_function_invocation): Add some comments.
	(arm_frame_args_address, arm_frame_locals_address): New functions.
	(arm_frame_num_args): New function.
	* config/tm-arm.h (FRAME_ARGS_ADDRESS): Call arm_frame_args_address.
	(FRAME_LOCALS_ADDRESS): Call arm_frame_locals_address.
	(FRMA_NUM_ARGS): Call arm_frame_num_args.

2002-01-31  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (break_at_finish_command): Export.
	(break_at_finish_at_depth_command): Export.
	(tbreak_at_finish_command): Export.
	(_initialize_breakpoint): Delete "xbreak" and "txbreak" commands.
	* hppa-tdep.c (_initialize_hppa_tdep): Add "xbreak" and
	"txbreak" commands, which are HPPA specific.

	* printcmd.c (disassemble_command): Remove an ancient
	artifact of an old merge.

	* symfile.h (enum overlay_debugging_state):
	Define enum constant values for overlay mode.
	* symfile.c (overlay_debugging): Use enums instead of literals.
	(overlay_is_mapped, overlay_auto_command,
	overlay_manual_command): Ditto.

	* breakpoint.c (insert_breakpoints, remove_breakpoint,
	breakpoint_here_p, breakpoint_inserted_here_p,
	breakpoint_thread_match, bpstat_stop_status,
	describe_other_breakpoints, check_duplicates, clear_command):
	Coding standard fixes.

	* target.c (target_xfer_memory): Add spaces, coding standard.
	(do_xfer_memory): Add missing line to trust-readonly
	code: check bfd SEC_READONLY flag for section.

2002-01-31  Andrew Cagney  <ac131313@redhat.com>

	* PROBLEMS: Fix typo, 5.1->5.1.1.

2002-01-30  Daniel Jacobowitz  <drow@mvista.com>

	* symtab.c (find_pc_sect_psymtab): Do not search psymtabs for
	data symbols, since we search based on textlow and texthigh.
	(find_pc_sect_symtab): Likewise.

2002-01-30  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (vwarning): Declare.
	* utils.c (vwarning): New function.
	(warning): Call vwarning.
	(warning_begin): Delete function.

	* rs6000-nat.c (vmap_ldinfo): Use the function warning to print
	the warning message.
	* d10v-tdep.c (d10v_address_to_pointer) [0]: Delete call to
	warning_begin.

2002-01-30  Michael Snyder  <msnyder@redhat.com>

	* NEWS: Mention "set trust-readonly-sections" command.
	Mention generate-core-file command.

2002-01-15  Michael Snyder  <msnyder@redhat.com>

	* target.c: New command, "set trust-readonly-sections on".
	(do_xfer_memory): Honor the suggestion to trust readonly sections
	by reading them from the object file instead of from the target.
	(initialize_targets): Register command "set trust-readonly-sections".

2002-01-29  Andrew Cagney  <ac131313@redhat.com>

	* parse.c (target_map_name_to_register): Simplify, search regs and
	pseudo-regs using a single loop.

2002-01-30  Andrew Cagney  <ac131313@redhat.com>

	* PROBLEMS: Note that the i386 fix was missing from 5.1.1.

2002-01-15  Rodney Brown  <rbrown64@csc.com.au>

	* config/i386/tm-i386v4.h: Define HAVE_I387_REGS.
	* config/i386/i386v42mp.mh: Add i387-nat.o .
	* i386v4-nat.c: Include i387-nat.h.
	(supply_fpregset): Use i387_supply_fsave.
	(fill_fpregset): Use i387_fill_fsave.

2002-01-30  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_call_dummy_words): Define.
	* arm-linux-tdep.c (arm_linux_call_dummy_words): Define.
	* config/arm/tm-arm.h (CALL_DUMMY_P): Define.
	(CALL_DUMMY_WORDS): Define.
	(arm_call_dummy_words): Declare.
	* config/arm/tm-linux.h (CALL_DUMMY_WORDS): Define.
	(arm_linux_call_dummy_words): Declare.

2002-01-30  Andreas Schwab  <schwab@suse.de>

	* m68klinux-nat.c: Fix last change to use regcache_collect
	instead of referencing registers[] directly.

2002-01-29  Andrew Cagney  <ac131313@redhat.com>

	* parse.c (target_map_name_to_register): Delete code wrapped in
	#ifdef REGISTER_NAME_ALIAS_HOOK.

2002-01-28  Michael Snyder  <msnyder@redhat.com>

	* regcache.c (legacy_read_register_gen): Need to be able to
	read pseudo-register as well as real register.
	(legacy_write_register_gen): Ditto.

2002-01-28  Andrew Cagney  <ac131313@redhat.com>

	* config/mips/tm-wince.h (TARGET_BYTE_ORDER): Delete.
	* config/sparc/tm-sparc.h (TARGET_BYTE_ORDER): Delete.
	* config/ns32k/tm-umax.h (TARGET_BYTE_ORDER): Delete.
	* config/ia64/tm-ia64.h (TARGET_BYTE_ORDER): Delete.
	* config/m32r/tm-m32r.h (TARGET_BYTE_ORDER): Delete.
	* config/m68k/tm-m68k.h (TARGET_BYTE_ORDER): Delete.
	* config/m88k/tm-m88k.h (TARGET_BYTE_ORDER): Delete.
	* config/mn10200/tm-mn10200.h (TARGET_BYTE_ORDER): Delete.
	* config/pa/tm-hppa.h (TARGET_BYTE_ORDER): Delete.
	* config/sh/tm-wince.h (TARGET_BYTE_ORDER): Delete.
	* config/v850/tm-v850.h (TARGET_BYTE_ORDER): Delete.
	* config/vax/tm-vax.h (TARGET_BYTE_ORDER): Delete.
	* config/z8k/tm-z8k.h (TARGET_BYTE_ORDER): Delete.
	* config/i960/tm-i960.h (TARGET_BYTE_ORDER): Delete.
	* config/i386/tm-i386.h (TARGET_BYTE_ORDER): Delete.
	* config/h8500/tm-h8500.h (TARGET_BYTE_ORDER): Delete.
	* config/h8300/tm-h8300.h (TARGET_BYTE_ORDER): Delete.
	* config/fr30/tm-fr30.h (TARGET_BYTE_ORDER): Delete.
	* config/d30v/tm-d30v.h (TARGET_BYTE_ORDER): Delete.
	* config/alpha/tm-alpha.h (TARGET_BYTE_ORDER): Delete.

2002-01-28  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.c (TARGET_BYTE_ORDER_DEFAULT): Delete macro.
	(target_byte_order): Initialize to BFD_ENDIAN_BIG.
	(initialize_current_architecture): Update target_byte_order using
	information from BFD.
	* config/mcore/tm-mcore.h (TARGET_BYTE_ORDER_DEFAULT):
	* config/arm/tm-arm.h (TARGET_BYTE_ORDER_DEFAULT): Delete.

2002-01-28  Andrew Cagney  <ac131313@redhat.com>

	* config/vax/tm-vax.h (INVALID_FLOAT): Move macro from here...
	* vax-tdep.c (INVALID_FLOAT): To here.  Document why it is broken.

	* rs6000-tdep.c (rs6000_do_registers_info): Delete code wrapped in
	#ifdef INVALID_FLOAT.
	* infcmd.c (do_registers_info): Ditto.
	* values.c (unpack_double): Ditto.  Add comment.

	* config/ns32k/tm-umax.h (INVALID_FLOAT): Delete macro that was
	already commented out.

2002-01-26  Andreas Schwab  <schwab@suse.de>

	* config/m68k/nm-linux.h (FETCH_INFERIOR_REGISTERS): Define.
	* m68klinux-nat.c: Update ptrace interface for fetching/storing
	registers and add support for PTRACE_GETREGS.

2002-01-24  Andrew Cagney  <ac131313@redhat.com>

	GDB 5.1.1 released from 5.1 branch.
	* NEWS: Add 5.1.1 news.
	* README: Sync with 5.1 branch.

2002-01-23  Fred Fish  <fnf@redhat.com>

	* mdebugread.c (parse_partial_symbols): Only copy stabstring1 to
	stabstring on initial malloc.  Reallocing will copy it for us,
	if necessary.

2002-01-23  Elena Zannoni  <ezannoni@redhat.com>

        * Makefile.in (hpread_h): Delete.
        (HFILES_NO_SRCDIR): Remove hpread.h.
        (ALLDEPFILES): Remove hp-psymtab-read.c and hp-symtab-read.c.
        (hpread.o): Update dependencies.
        (hp-psymtab-read.o, hp-symtab-read.o): Remove.

        * hp-psymtab-read.c: Remove file.
        * hp-symtab-read.c: Remove file.
        * hpread.h: Remove file.

        * hpread.c: Merge all contents of hp-psymtab-read.c,
        hp-symtab-read.c and hpread.h into this file, as it was prior to
        January 1999.

        * config/pa/hpux11w.mh, config/pa/hpux11.mh,
        config/pa/hpux1020.mh, config/pa/hppaosf.mh,
        config/pa/hppahpux.mh, config/pa/hppabsd.mh (NATDEPFILES):
        Remove hp-psymtab-read.o and hp-symtab-read.o, add hpread.o.

2002-01-23  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-linux-nat.c (ppc_register_u_addr, supply_gregset,
	fill_gregset): Call gdbarch_tdep() just once, assign result to
	variable and use that, instead of calling the function several
	times.

2002-01-24  Alexandre Oliva  <aoliva@redhat.com>

	* configure.host: Accept sparcv9 as alias for sparc64.
	* configure.tgt: Likewise.

2002-01-22  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (build_so_list_from_mapfile)
	(aix5_relocate_main_executable): Fix xcalloc() calls so order of
	arguments is not reversed.
	* solib-sunos.c (sunos_relocate_main_executable): Likewise.
	* solib-svr4.c (svr4_relocate_main_executable): Likewise.

2002-01-22  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_pseudo_register_read): New function. Renamed and
	modified version of obsolete sh_fetch_pseudo_register.
	(sh_fetch_pseudo_register): Rename to sh_pseudo_register_read.
	(sh4_register_read): New function.
	(sh_pseudo_register_write): New function. Renamed and modified
	version of obsolete sh_store_pseudo_register.
	(sh_store_pseudo_register): Rename to sh_pseudo_register_write.
	(sh4_register_write): New function.
	(sh_gdbarch_init): Remove setting of gdbarch function
	fetch_pseudo_register and store_pseudo_register. Remove setting of
	register_convert_to_raw, register_convert_to_virtual,
	register_convertible.
	(sh_sh4_register_convertible): Delete. No longer needed. All is
	taken care by architecture specific functions
	register_read/register_write.
	(sh_sh4_register_convert_to_virtual): Make static.
	(sh_sh4_register_convert_to_raw): Ditto.

2002-01-22  Andrew Cagney  <ac131313@redhat.com>

	* doublest.c (floatformat_is_negative): Assert FMT is non NULL.
	(floatformat_is_nan, floatformat_mantissa): Ditto.

	* gdbtypes.c (_initialize_gdbtypes): Initialize TYPE_FLOATFORMAT
	for builtin_type_ieee_single_little, builtin_type_ieee_double_big,
	builtin_type_ieee_double_little,
	builtin_type_ieee_double_littlebyte_bigword,
	builtin_type_m68881_ext, builtin_type_i960_ext,
	builtin_type_m88110_ext, builtin_type_m88110_harris_ext,
	builtin_type_arm_ext_big, builtin_type_arm_ext_littlebyte_bigword,
	builtin_type_ia64_spill_big, builtin_type_ia64_spill_little and
	builtin_type_ia64_quad_big, builtin_type_ia64_quad_little.

2002-01-22  Corinna Vinschen  <vinschen@redhat.com>

	* xstormy16-tdep.c (xstormy16_scan_prologue): Add frameless
	parameter.  Set frameless flag if it exists and depended of
	whether the scanned function is frameless or not.
	(xstormy16_skip_prologue): If function is frameless, return
	result of xstormy16_scan_prologue().
	(xstormy16_frame_init_saved_regs): Adjust xstormy16_scan_prologue()
	call.

2002-01-21  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_fp_frame_init_saved_regs, sh_push_arguments,
	sh_generic_show_regs, sh3_show_regs, sh3e_show_regs,
	sh3_dsp_show_regs, sh4_show_regs, sh_dsp_show_regs,
	sh_sh4_register_byte, sh_sh4_register_raw_size,
	sh_sh3e_register_virtual_type, sh_sh4_register_virtual_type,
	sh_sh4_register_convertible, sh_sh4_register_convert_to_virtual,
	sh_sh4_register_convert_to_raw, sh_fetch_pseudo_register,
	sh_store_pseudo_register, sh_do_pseudo_register): Call
	gdbarch_tdep() just once, assign result to variable and use that,
	instead of calling the function several times.

2002-01-20  Mark Kettenis  <kettenis@gnu.org>

	* go32-nat.c (fetch_register): Use FP_REGNUM_P and FPC_REGNUM_P
	macros instead of LAST_FPU_CTRL_REGNUM.
	(store_register): Likewise.

2002-01-21  Jim Blandy  <jimb@redhat.com>

	* infcmd.c (run_command): Check that the `exec' target layer's BFD
	is up-to-date before running the program, not just when a program
	exits.

2002-01-21  Fred Fish  <fnf@redhat.com>

	* arm-tdep.c (thumb_skip_prologue): Quit scanning prologue
	when we have found all instructions we are looking for.

2002-01-21  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_register_name): New function.
	(arm_registers_names): Make static.
	* config/arm/tm-arm.h (arm_register_names): Delete declaration.
	(arm_register_name): Declare.
	(REGISTER_NAME): Use it.

2002-01-21  Richard Earnshaw  <rearnsha@arm.com>
	    Kevin Buettner  <kevinb@redhat.com>

	Convert arm targets to new FRAME interface.
	* arm-tdep.c (struct frame_extra_info): Remove fsr.
	(arm_frame_find_save_regs): Delete.
	(arm_frame_init_saved_regs): New.
	(arm_init_extra_frame_info): Alloacte saved_regs as required.
	Allocate extra_info as required.  Convert all uses of fsr.regs
	to use saved_regs, similarly all uses of EXTRA_FRAME_INFO fields
	to use extra_info.
	(thumb_scan_prologue, arm_scan_prologue, arm_find_callers_reg)
	(arm_frame_chain, arm_frame_saved_pc, arm_pop_frame): Likewise.
	(check_prologue_cache, save_prologue_cache): Likewise.
	(_initialize_arm_tdep): Ensure prologue_cache is correctly set up.
	* config/arm/tm-arm.h (EXTRA_FRAME_INFO): Delete.
	(FRAME_FIND_SAVED_REGS): Delete.
	(arm_frame_find_saved_regs): Delete prototype.
	(arm_frame_init_saved_regs): New prototype.
	(FRAME_INIT_SAVED_REGS): Define.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* config/arc/tm-arc.h (IEEE_FLOAT): Delete.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	From Jeff Law <law@redhat.com>:
	* infttrace.c: Include <sys/pstat.h>.
	(child_pid_to_exec_file): Revamp.  Use pstat call to get the
	exec file if the ttrace equivalent fails.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* rdi-share/devsw.c (openLogFile): Delete unused ``struct tm lt''.
	(closeLogFile): Ditto.

2002-01-20  Michael Chastain  <mec@shout.net>

	* top.c (print_gdb_version): Bump copyright year to 2002.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (Blanket Write Privs): Add Kevin Buettner, Elena
	Zannoni and Eli Zaretskii.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* buildsym.c: Update copyright years.
	* c-typeprint.c: Likewise.
	* dwarf2read.c: Likewise.
	* f-typeprint.c: Likewise.
	* gdbtypes.c: Likewise.
	* gdbtypes.h: Likewise.
	* hp-symtab-read.c: Likewise.
	* hpread.c: Likewise.
	* mdebugread.c: Likewise.
	* p-typeprint.c: Likewise.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* remote-sim.c (gdbsim_open): Simplify code testing the macro
	TARGET_BYTE_ORDER_SELECTABLE_P.  Assume the target is always
	byte-order selectable.
	* sparc-tdep.c (sparc_target_architecture_hook): Ditto.
	* arch-utils.c: Ditto.
	(set_endian): Ditto.
	(set_endian_from_file): Ditto.
	* gdbserver/low-sim.c (create_inferior): Ditto.
	* gdbarch.sh: Ditto.
	* gdbarch.h: Re-generate.
	* config/powerpc/tm-ppc-eabi.h (TARGET_BYTE_ORDER_SELECTABLE_P):
	* config/sparc/tm-sparclite.h (TARGET_BYTE_ORDER_SELECTABLE):
	* config/sparc/tm-sparclet.h (TARGET_BYTE_ORDER_SELECTABLE):
	* config/mcore/tm-mcore.h (TARGET_BYTE_ORDER_SELECTABLE_P):
	* config/arm/tm-wince.h (TARGET_BYTE_ORDER_SELECTABLE_P):
	* config/arm/tm-linux.h (TARGET_BYTE_ORDER_SELECTABLE_P):
	* config/arc/tm-arc.h (TARGET_BYTE_ORDER_SELECTABLE):
	* config/arm/tm-arm.h (TARGET_BYTE_ORDER_SELECTABLE_P): Delete
	macro definition.
	* config/mips/tm-wince.h: Remove #undef of macro
	TARGET_BYTE_ORDER_SELECTABLE.
	* config/sh/tm-wince.h: Ditto.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.h (struct cplus_struct_type): Add is_artificial to
	member function fields.  Add accessor macro
	TYPE_FN_FIELD_ARTIFICIAL.
	* dwarf2read.c (dwarf2_add_member_fn): Check for artificial methods.
	* c-typeprint.c (c_type_print_base): Skip artificial member
	functions.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* f-typeprint.c: Delete unused function f_type_print_args.
	* p-typeprint.c: Delete unused function pascal_type_print_args.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.h (struct type): Fix whitespace.  Remove obsolete
	comment.  Add ``artificial'' to ``union field_location''.

	* dwarf2read.c: Remove ad-hoc TYPE_FIELD_ARTIFICIAL.

	* buildsym.c (finish_block): Initialize TYPE_FIELD_ARTIFICIAL to 0.
	* mdebugread.c (parse_symbol): Likewise.
	* stabsread.c (define_symbol): Likewise.
	* hp-symtab-read.c (hpread_function_type): Likewise, instead of
	initializing TYPE_FIELD_BITPOS to n (obsolete).
	(hpread_doc_function_type): Likewise.
	* hpread.c (hpread_function_type): Likewise.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* configure.in (host_makefile_frag): Only require a host makefile
	fragment when a native build.
	* configure: Re-generate.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* doublest.h (floatformat_from_type): Declare.
	* doublest.c (floatformat_from_type): New function.
	(convert_typed_floating): Use.

	* valprint.c (print_floating): Replace checks for IEEE_FLOAT with
	call to function floatformat_from_type.

	* gdbarch.sh (IEEE_FLOAT): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* config/i960/tm-i960.h (IEEE_FLOAT): Delete macro.
	* config/i386/tm-i386.h (IEEE_FLOAT): Ditto.
	* config/z8k/tm-z8k.h (IEEE_FLOAT): Ditto.
	* config/sparc/tm-sparc.h (IEEE_FLOAT): Ditto.
	* config/pa/tm-hppa.h (IEEE_FLOAT): Ditto.
	* config/m88k/tm-m88k.h (IEEE_FLOAT): Ditto.
	* config/m68k/tm-m68k.h (IEEE_FLOAT): Ditto.
	* config/h8500/tm-h8500.h (IEEE_FLOAT): Ditto.
	* config/h8300/tm-h8300.h (IEEE_FLOAT): Ditto.
	* config/fr30/tm-fr30.h (IEEE_FLOAT): Ditto.
	* config/arm/tm-arm.h (IEEE_FLOAT): Ditto.
	* config/alpha/tm-alpha.h (IEEE_FLOAT): Ditto.

	* s390-tdep.c (s390_gdbarch_init): Do not set ieee_float.
	* x86-64-tdep.c (i386_gdbarch_init): Ditto.
	* sparc-tdep.c (sparc_gdbarch_init): Ditto.
	* sh-tdep.c (sh_gdbarch_init): Ditto.
	* mips-tdep.c (mips_gdbarch_init): Ditto.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
	* cris-tdep.c (cris_gdbarch_init): Ditto.

2002-01-20  Jiri Smid  <smid@suse.cz>

	* configure.host, configure.tgt: Support x86-64.
	* NEWS: Note new target x86-64.

	* config/i386/x86-64linux.mh (NATDEPFILES): x86-64-nat.o removed.
	* x86-64-linux-nat.c (x86_64_register_u_addr): New function.
	* config/i386/nm-x86-64.h (ATTACH_LWP): Removed.
	* Makefile.in (x86-64-tdep.o, x86-64-linux-tdep.o,
	x86-64-linux-nat.o): Fix dependencies.

2002-01-19  Andrew Cagney  <ac131313@redhat.com>

	* utils.c: Remove #ifndef MALLOC_INCOMPATIBLE.
	* config/sparc/xm-sun4os4.h (PTRACE_ARG3_TYPE): Move macro ....
	* config/sparc/nm-sun4os4.h (PTRACE_ARG3_TYPE): ... to here.
	* config/sparc/xm-sun4os4.h: Delete file.
	* config/sparc/sun4os4.mh (XM_FILE): Delete makefile variable.

2002-01-19  Andrew Cagney  <ac131313@redhat.com>

	* config/sparc/sparclynx.mh (XM_FILE): Delete.
	* config/rs6000/rs6000lynx.mh (XM_FILE): Delete.
	* config/m68k/m68klynx.mh (XM_FILE): Delete.
	* config/i386/i386lynx.mh (XM_FILE): Delete.
	* config/rs6000/xm-rs6000ly.h: Delete file.
	* config/sparc/xm-sparclynx.h: Delete file.
	* config/m68k/xm-m68klynx.h: Delete file.
	* config/i386/xm-i386lynx.h: Delete file.
	* config/xm-lynx.h: Delete file.
	* config/djgpp/fnchange.lst: Update.

2002-01-19  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_register_byte): New function.
	(alpha_register_raw_size): Ditto.
	(alpha_register_virtual_size): Ditto.
	(alpha_skip_prologue_internal): Renamed from
	alpha_skip_prologue.
	(alpha_skip_prologue): New version that calls
	alpha_skip_prologue_internal.
	(alpha_in_lenient_prologue): Use alpha_skip_prologue_internal.
	* config/alpha/tm-alpha.h (SKIP_PROLOGUE): Remove
	second argument from alpha_skip_prologue.
	(REGISTER_BYTE): Use alpha_register_byte.
	(REGISTER_RAW_SIZE): Use alpha_register_raw_size.
	(REGISTER_VIRTUAL_SIZE): Use alpha_register_virtual_size.
	(FRAMELESS_FUNCTION_INVOCATION): Use
	generic_frameless_function_invocation_not.
	(FRAME_NUM_ARGS): Use frame_num_args_unknown.
	(COERCE_FLOAT_TO_DOUBLE): Use standard_coerce_float_to_double.

2002-01-19  Andrew Cagney  <ac131313@redhat.com>

	* config/mips/xm-news-mips.h: Delete file.
	* config/mips/news-mips.mh (XM_FILE): Delete makefile variable.

	* config/m88k/xm-m88k.h: Delete file.
	* config/m88k/xm-dgux.h: Do not include xm-m88k.h.
	* config/m88k/xm-delta88v4.h: Ditto.
	* config/m88k/xm-delta88.h: Ditto.

	* config/alpha/xm-fbsd.h: Delete file.
	* config/alpha/fbsd.mh (XM_FILE): Delete makefile variable.

	* config/sparc/xm-sparc.h: Delete file.
	* Makefile.in (xm-sun4os4.h): Delete dependency.
	* config/sparc/xm-sun4sol2.h: Do not include xm-sparc.h.
	* config/sparc/xm-sun4os4.h: Ditto.
	* config/sparc/xm-linux.h: Ditto.

	* config/i386/xm-windows.h: Delete file.

2002-01-19  Andrew Cagney  <ac131313@redhat.com>

	* utils.c: Include <sys/param.h> for MAXPATHLEN.
	(gdb_realpath): Use MAXPATHLEN when PATH_MAX is not defined.

2002-01-19  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_call_dummy_words): New.
	* config/alpha/tm-alpha.h (CALL_DUMMY): Remove.
	(CALL_DUMMY_P): Define.
	(CALL_DUMMY_WORDS): Define.
	(SIZEOF_CALL_DUMMY_WORDS): Define.

2002-01-19  Per Bothner  <per@bothner.com>

	* gnu-v3-abi.c (gnuv3_rtti_type):  Guard that vtable_symbol_name
	isn't NULL, which can happen with some gcj-3.x-produced code.

2002-01-19  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_register_virtual_type): New function.
	(alpha_init_frame_pc_first): Ditto.
	(alpha_fix_call_dummy): Ditto.
	(alpha_store_struct_return): Ditto.
	(alpha_extract_struct_value_address): Ditto.
	* config/alpha/tm-alpha.h (REGISTER_VIRTUAL_TYPE): Use
	alpha_register_virtual_type.
	(STORE_STRUCT_RETURN): Use alpha_store_struct_return.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Use
	alpha_extract_struct_value_address.
	(FIX_CALL_DUMMY): Use alpha_fix_call_dummy.
	(INIT_FRAME_PC): Use init_frame_pc_noop.
	(INIT_FRAME_PC_FIRST): Use alpha_init_frame_pc_first.

2002-01-19  Mark Kettenis  <kettenis@gnu.org>

	* i386gnu-nat.c: Include "i386-tdep.h".
	(fetch_fpregs): Simplify code dealing with uninitialized floating
	point states such that it doesn't require FP7_REGNUM.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (frame_extra_info): New.
	(alpha_find_saved_regs): Make static.  Use
	frame->extra_info.
	(alpha_frame_init_saved_regs): New function.
	(alpha_frame_saved_pc): Use frame->extra_info.
	(temp_saved_regs): Don't declare as struct frame_saved_regs.
	(heuristic_proc_desc): Adjust for temp_saved_regs changes.
	(init_extra_frame_info): Rename to...
	(alpha_init_extra_frame_info): ...this.  Use frame->extra_info.
	(alpha_print_extra_frame_info): New function.
	(alpha_frame_locals_address): Ditto.
	(alpha_frame_args_address): Ditto.
	(alpha_pop_frame): Use frame->extra_info.
	* config/alpha/tm-alpha.h (FRAME_ARGS_ADDRESS): Use
	alpha_frame_args_address.
	(FRAME_LOCALS_ADDRESS): Use alpha_frame_locals_address.
	(alpha_find_saved_regs): Remove prototype.
	(FRAME_INIT_SAVED_REGS): Use alpha_frame_init_saved_regs.
	(EXTRA_FRAME_INFO): Remove.
	(INIT_EXTRA_FRAME_INFO): Use alpha_init_extra_frame_info.
	(PRINT_EXTRA_FRAME_INFO): Use alpha_print_extra_frame_info.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_osf_in_sigtramp): New function.
	(alpha_cannot_fetch_register): Ditto.
	(alpha_cannot_store_register): Ditto.
	(alpha_register_convertible): Ditto.
	(alpha_use_struct_convention): Ditto.
	* config/alpha/tm-alpha.h: Update copyright years.
	(IN_SIGTRAMP): Use alpha_osf_in_sigtramp.
	(INNER_THAN): Use core_addr_lessthan.
	(CANNOT_FETCH_REGISTER): Use alpha_cannot_fetch_register.
	(CANNOT_STORE_REGISTER): Use alpha_cannot_store_register.
	(REGISTER_CONVERTIBLE): Use alpha_register_convertible.
	(USE_STRUCT_CONVENTION): Use alpha_use_struct_convention.
	(FRAME_CHAIN): Remove unnecessary cast.

2002-01-18  Andrew Cagney  <ac131313@redhat.com>

	* NEWS: Document that testsuite/gdb.hp/gdb.threads-hp/ is
	obsolete.

2002-01-18  Andrew Cagney  <ac131313@redhat.com>

	* infptrace.c: Remove ATTRIBUTE_UNUSED.  Update copyright.
	* monitor.c, remote-array.c, remote-bug.c: Ditto.
	* remote-e7000.c, remote-es.c, remote-mips.c: Ditto.
	* remote-nindy.c, remote-os9k.c, remote-rdi.c: Ditto.
	* remote-rdp.c, remote-sds.c, remote-sim.c: Ditto.
	* remote-st.c, remote-vx.c, remote.c, win32-nat.c: Ditto.
	* x86-64-linux-nat.c: Ditto.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_register_name): New function.
	* config/alpha/tm-alpha.h (REGISTER_NAMES): Remove.
	(REGISTER_NAME): Define.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/nm-nbsd.h (KERNEL_U_ADDR): Remove.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c: Update copyright years.
	(alpha_next_pc): New function.
	(alpha_software_single_step): Ditto.
	* config/alpha/tm-alpha.h: Add prototype for
	alpha_software_single_step.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alphabsd-nat.c: Update copyright years.
	(fill_gregset): Use regcache_collect.
	(fill_fpregset): Likewise.
	(fetch_inferior_registers): Only fetch integer registers
	if requested to do so.
	(store_inferior_registers): Only store integer registers
	if requested to do so.

2002-01-17  Andrew Cagney  <ac131313@redhat.com>

	* config/alpha/alpha-osf3.mh (XDEPFILES): Delete.
	* config/alpha/alpha-osf2.mh (XDEPFILES): Delete.
	* config/alpha/alpha-osf1.mh (XDEPFILES): Delete.
	* config/alpha/alpha-linux.mh (XDEPFILES): Delete.
	* config/alpha/fbsd.mh (XDEPFILES): Delete.
	* config/arm/linux.mh (XDEPFILES): Delete.
	* config/arm/nbsd.mh (XDEPFILES): Delete.
	* config/i386/i386dgux.mh (XDEPFILES): Delete.
	* config/i386/i386sol2.mh (XDEPFILES): Delete.
	* config/i386/i386m3.mh (XDEPFILES): Delete.
	(NATDEPFILES): Move i387-tdep.o and core-aout.o to here.
	* config/i386/i386gnu.mh (XDEPFILES): Delete.
	* config/i386/fbsd.mh (XDEPFILES): Delete.
	* config/i386/i386bsd.mh (XDEPFILES): Delete.
	* config/i386/i386sco5.mh (XDEPFILES): Delete.
	* config/i386/i386v4.mh (XDEPFILES): Delete.
	* config/i386/i386v42mp.mh (XDEPFILES): Delete.
	* config/i386/i386sco4.mh (XDEPFILES): Delete.
	* config/i386/i386aix.mh (XDEPFILES): Delete.
	* config/i386/go32.mh (XDEPFILES): Delete.
	* config/i386/cygwin.mh (XDEPFILES): Delete.
	* config/i386/i386lynx.mh (XDEPFILES): Delete.
	* config/i386/i386mach.mh (XDEPFILES): Delete.
	* config/i386/i386v32.mh (XDEPFILES): Delete.
	* config/i386/linux.mh (XDEPFILES): Delete.
	* config/i386/nbsdelf.mh (XDEPFILES): Delete.
	* config/i386/ncr3000.mh (XDEPFILES): Delete.
	* config/i386/i386mk.mh (NATDEPFILES): Rename XDEPFILES.
	* config/i386/i386sco.mh (XDEPFILES): Delete.
	* config/i386/i386v.mh (XDEPFILES): Delete.
	* config/i386/nbsd.mh (XDEPFILES): Delete.
	* config/i386/ptx.mh (NATDEPFILES): Rename XDEPFILES.
	* config/i386/ptx4.mh (NATDEPFILES): Rename XDEPFILES.
	* config/i386/symmetry.mh (XDEPFILES): Delete.
	* config/i386/obsd.mh (XDEPFILES): Delete.
	* config/i386/x86-64linux.mh (XDEPFILES): Delete.
	* config/ia64/linux.mh (XDEPFILES): Delete.
	* config/ia64/aix.mh (XDEPFILES): Delete.
	* config/m68k/apollo68b.mh (XDEPFILES): Delete.
	* config/m68k/dpx2.mh (XDEPFILES): Delete.
	* config/m68k/3b1.mh (NATDEPFILES): Rename XDEPFILES.
	* config/m68k/apollo68v.mh (XDEPFILES): Delete.
	* config/m68k/hp300bsd.mh (XDEPFILES): Delete.
	* config/m68k/linux.mh (XDEPFILES): Delete.
	* config/m68k/m68klynx.mh (XDEPFILES): Delete.
	* config/m68k/m68kv4.mh (XDEPFILES): Delete.
	* config/m68k/nbsd.mh (XDEPFILES): Delete.
	* config/m68k/sun2os3.mh (XDEPFILES): Delete.
	* config/m68k/sun2os4.mh (XDEPFILES): Delete.
	* config/m68k/sun3os3.mh (XDEPFILES): Delete.
	* config/m68k/sun3os4.mh (XDEPFILES): Delete.
	* config/m88k/delta88.mh (XDEPFILES): Delete.
	* config/m88k/delta88v4.mh (XDEPFILES): Delete.
	* config/m88k/m88k.mh (XDEPFILES): Delete.
	* config/mips/littlemips.mh (NATDEPFILES): Rename XDEPFILES.
	* config/mips/linux.mh (XDEPFILES): Delete.
	* config/mips/irix6.mh (XDEPFILES): Delete.
	* config/mips/irix5.mh (XDEPFILES): Delete.
	* config/mips/irix4.mh (XDEPFILES): Delete.
	* config/mips/irix3.mh (XDEPFILES): Delete.
	* config/mips/decstation.mh (XDEPFILES): Delete.
	* config/mips/mipsm3.mh (XDEPFILES): Delete.
	(NATDEPFILES): Move core-aout.o to here.
	* config/ns32k/nbsd.mh (XDEPFILES): Delete.
	* config/pa/hpux1020.mh (XDEPFILES): Delete.
	* config/pa/hppabsd.mh (XDEPFILES): Delete.
	* config/pa/hppahpux.mh (XDEPFILES): Delete.
	* config/pa/hpux11w.mh (XDEPFILES): Delete.
	* config/pa/hppaosf.mh (XDEPFILES): Delete.
	* config/pa/hpux11.mh (XDEPFILES): Delete.
	* config/powerpc/aix.mh (XDEPFILES): Delete.
	* config/powerpc/nbsd.mh (XDEPFILES): Delete.
	* config/powerpc/linux.mh (XDEPFILES): Delete.
	* config/romp/rtbsd.mh: Rename XDEPFILES.
	* config/rs6000/rs6000lynx.mh (XDEPFILES): Delete.
	* config/rs6000/aix4.mh (XDEPFILES): Delete.
	* config/rs6000/rs6000.mh (XDEPFILES): Delete.
	* config/s390/s390.mh (XDEPFILES): Delete.
	* config/vax/vaxbsd.mh (NATDEPFILES): Rename XDEPFILES.
	* config/sparc/sun4sol2.mh (XDEPFILES): Delete.
	* config/sparc/sun4os4.mh (XDEPFILES): Delete.
	* config/sparc/sparclynx.mh (XDEPFILES): Delete.
	* config/sparc/nbsdelf.mh (XDEPFILES): Delete.
	* config/sparc/nbsd.mh (XDEPFILES): Delete.
	* config/sparc/linux.mh (XDEPFILES): Delete.
	* config/vax/vaxult.mh (XDEPFILES): Delete.
	* config/vax/vaxult2.mh (XDEPFILES): Delete.
	* Makefile.in (DEPFILES): Remove XDEPFILES.

2002-01-17  Andrew Cagney  <ac131313@redhat.com>

	* utils.c (internal_verror): Fix comments, default is yes not no.
	Update queries to match.  Default to quit and dump core.

2002-01-17  Andrew Cagney  <ac131313@redhat.com>

	* breakpoint.c: Update assuming #if UI_OUT is always true.  Update
	copyright.
	* defs.h, event-top.c, gdbcmd.h: Ditto.
	* infcmd.c, infrun.c, main.c, printcmd.c, remote.c: Ditto.
	* source.c, stack.c, symfile.c, symtab.c, thread.c: Ditto.
	* top.c, cli/cli-cmds.c, cli/cli-decode.c: Ditto.
	* cli/cli-script.c, cli/cli-script.h, cli/cli-setshow.c: Ditto.
	* mi/ChangeLog, mi/mi-cmd-break.c, mi/mi-cmd-stack.c: Ditto.
	* mi/mi-main.c:Ditto.

	* stack.c, symfile.c: Update copyright.

2002-01-17  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/low-hppabsd.c, gdbserver/low-lynx.c,
	gdbserver/low-nbsd.c, gdbserver/low-sim.c,
	gdbserver/low-sparc.c, gdbserver/low-sun3.c,
	gdbserver/low-linux.c, gdbserver/server.c: Correct copyright notices.

2002-01-17  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/low-hppabsd.c (myattach): New function, returning -1.
	* gdbserver/low-lynx.c (myattach): Likewise.
	* gdbserver/low-nbsd.c (myattach): Likewise.
	* gdbserver/low-sim.c (myattach): Likewise.
	* gdbserver/low-sparc.c (myattach): Likewise.
	* gdbserver/low-sun3.c (myattach): Likewise.

	* gdbserver/low-linux.c (myattach): New function.

	* gdbserver/server.c (attach_inferior): New function.
	(main): Handle "--attach".

2002-01-16  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (language support): Daniel Jacobwitz is C++
	maintainer.

2002-01-15  Daniel Jacobowitz  <drow@mvista.com>

	* c-typeprint.c (is_type_conversion_operator): Add additional
	check for non-conversion operators.

2002-01-15  Michael Snyder  <msnyder@redhat.com>

	* linux-proc.c: Add "info proc" command, a la procfs.c.
	(read_mapping): New function, abstract and re-use code.
	(linux_find_memory_regions): Use new func read_mapping.
	(linux_info_proc_cmd): New function, implement "info proc".
	(_initialize_linux_proc): Add new command "info proc".

2002-01-15  Michael Snyder  <msnyder@redhat.com>

	* symfile.c (generic_load): Use bfd_map_over_sections method
	instead of manipulating bfd structure members directly.
	(add_section_size_callback): New function, bfd sections callback
	used by generic_load.
	(load_sections_callback): New function, bfd sections callback
	used by generic_load.

2002-01-15  Elena Zannoni  <ezannoni@redhat.com>

	[Based on work by Jim Blandy]
	* gdbtypes.h (builtin_type_v16qi, builtin_type_v8hi): Export.
	(builtin_type_vec128): Export.
	* gdbtypes.c (builtin_type_v16qi, builtin_type_v8hi): New SIMD
	types.
	(builtin_type_vec128): New builtin type for 128 bit vector
	registers.
	(build_gdbtypes): Initialize builtin_type_v16qi and
	builtin_type_v8hi. Create the vec128 register builtin type
	structure.
	(build_builtin_type_vec128): New function.
	(_initialize_gdbtypes): Register builtin_type_v16qi and
	builtin_type_v8hi with gdbarch. Same for builtin_type_vec128.
	* rs6000-tdep.c (rs6000_register_virtual_type): Change type of
	AltiVec register to new builtin type.

2002-01-15  Daniel Jacobowitz  <drow@mvista.com>

	* stabsread.c (read_type): Pass dbx_lookup_type (typenums)
	to make_cv_type.

2002-01-14  Andrew Cagney  <ac131313@redhat.com>

	* config/pa/tm-hppa.h (DEPRECATED_CLEAN_UP_REGISTER_VALUE): Rename
	CLEAN_UP_REGISTER_VALUE.
	* regcache.c (supply_register): Update only call.

2002-01-14  Andrew Cagney  <ac131313@redhat.com>

	* configure.tgt: Mark a29k-*-aout*, a29k-*-coff*, a29k-*-elf*,
	a29k-*-ebmon*, a29k-*-kern*, a29k-*-none*, a29k-*-udi* and
	a29k-*-vxworks* targets as obsolete.

2002-01-14  Michael Snyder  <msnyder@redhat.com>

	* linux-proc.c (linux_do_thread_registers): Ignore fpxregs
	until we can resolve portability issues.
	* gregset.h: Remove references to fpxregs.
	* gcore.c (gcore_command): Initialize note_sec to NULL.

2002-01-13  Andrew Cagney  <ac131313@redhat.com>

	* signals.c (target_signal_to_name): Rewrite.  Only use
	signals[].name when in bounds and non-NULL.

2002-01-13  Andrew Cagney  <ac131313@redhat.com>

	From Petr Ledvina <ledvinap@kae.zcu.cz>:
	* signals.c (target_signal_to_name): Verify that SIG is within the
	bounds of the signals array.

2002-01-13  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Remove arm-coff and arm-pe from target list.

2002-01-13  Keith Seitz  <keiths@redhat.com>

	* stack.c (print_frame_info_base): Print the frame's pc
	only if when print_frame_info_listing_hook is not defined.

2002-01-13  Keith Seitz  <keiths@redhat.com>

	* varobj.c (varobj_set_value): Make sure that there were no
	errors evaluating the object before attempting to set its
	value.
	value_cast now properly adjusts VALUE_ADDRESS for baseclasses,
	so this offset adjustment is no longer necessary.
	(create_child): Don't set the error flag if the child is
	a CPLUS_FAKE_CHILD.
	(value_of_child): If value_fetch_lazy fails, return NULL
	so that callers will be notified that an error occurred.
	(c_value_of_variable): Delay check of variable's validity
	until later. We actually want all structs and unions to have
	the value "{...}".
	Do not return "???" for variables which could not be evaluated.
	This error condition must be returned to the caller so that it
	can get the error condition from gdb.
	(cplus_name_of_child): Adjust index for vptr before figuring
	out the name of the child.
	(cplus_value_of_child): If a child's (real) parent is not valid,
	don't even bother trying to give a value for it. Just return
	an error. Change all instances in this function.
	(cplus_type_of_child): If our parent is one of the "fake"
	parents, we need to get at the type of the real parent, and
	derive the child's true type using this information.

2002-01-13  Andrew Cagney  <ac131313@redhat.com>

	From 2002-01-09 John Marshall <johnm@falch.net>:
	* CONTRIBUTE, README, TODO: Change sourceware.cygnus.com to
	sources.redhat.com, and tweak some related URLs which had
	suffered from linkrot.

2002-01-13  Andrew Cagney  <ac131313@redhat.com>

	From Jeff law:
	* hppa-tdep.c (hppa_push_arguments): Correct handling of 5-7 byte
	structures passed in registers.

2002-01-13  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (save_npx) [__DJGPP_MINOR__ < 3]: Remove extraneous
	white space which prevented compilation.  Reported by DSK
	<dsk@student.unsw.edu.au>.

2002-01-11  Michael Snyder  <msnyder@redhat.com>

	* symfile.c (build_section_addr_info_from_section_tab):
	Use bfd access method instead of manipulating bfd directly.
	(syms_from_objfile): Ditto.
	(simple_overlay_update_1): Ditto.
	(simple_overlay_update): Ditto.
	(generic_load): Ditto.
	(overlay_unmapped_address): FIXME comment, bfd access methods.
	(sections_overlap): FIXME comment, bfd access methods.
	(pc_in_mapped_range): FIXME comment, bfd access methods.
	(pc_in_unmapped_range): FIXME comment, bfd access methods.
	(section_is_mapped): FIXME comment, bfd access methods.
	(section_is_overlay): FIXME comment, bfd access methods.

	* symfile.c (generic_load): Whitespace and long line cleanups.
	Remove duplicate variable, change several local variables to
	more appropriate data types.
	(print_transfer_performance): Use %lu instead of %ld for ulongs.

2002-01-12  Andrew Cagney  <ac131313@redhat.com>

	From Peter Schauer:
	* language.c (longest_local_hex_string_custom): Use phex_nz to
	convert NUM to a hex string.

2002-01-12  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_gdbarch_init): Move setting of long_bit earlier in
	the function.
	Update Copyright year.

2002-01-12  Andrew Cagney  <ac131313@redhat.com>

	* language.c (longest_raw_hex_string): Delete unused function.

2002-01-11  Petr Sorfa  <petrs@caldera.com>

	* MAINTAINERS (write-after-approval): Add myself.
	* dwarf2read.c (read_tag_string_type): Handling of
	DW_AT_byte_size.
	(read_tag_string_type): FORTRAN fix to prevent propagation of
	first string size.
	(set_cu_language): Handling of DW_LANG_Fortran95

2002-01-11  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-nat.c (fetch_inferior_registers): Change inferior_pid ->
	GETPID(inferior_ptid).
	(store_inferior_registers): Likewise.

2002-01-10  Jason Merrill  <jason@redhat.com>

	* dwarf2read.c (decode_locdesc): Implement DW_OP_litn, DW_OP_dup.
	Fix DW_OP_minus.

2002-01-10  Andrew Cagney  <ac131313@redhat.com>

	* config/djgpp/fnchange.lst: Add renames for bfd/ChangeLog-0001
	and bfd/elf32-sh-nbsd.c.

2002-01-10  Michael Snyder  <msnyder@redhat.com>

	* NEWS: Mention --pid and corefile/proc-id behavior change.

	* Makefile.in: Add rules for gcore.o and linux-proc.o.
	* gcore.c: Include cli/cli-decode.h instead of command.h.

	* main.c (captured_main): Add new command line option "--pid".
	If the second command line argument (following the symbol-file)
	begins with a digit, try to attach to it before trying to open
	it as a corefile.
	(print_gdb_help): Document the "--pid" argument.

2002-01-10  Eli Zaretskii  <eliz@is.elta.co.il>

	* completer.c (command_completer): New function.

	* completer.h <command_completer>: Add prototype.

	* cli/cli-cmds.c (init_cli_cmds): Make command_completer be the
	completer for the "help" command.

2002-01-09  Jason Merrill  <jason@redhat.com>

	* c-typeprint.c (is_type_conversion_operator): Fix thinko.

2002-01-09  Michael Snyder  <msnyder@redhat.com>

	* i386-linux-nat.c (fill_fpxregset): Make global.
	(store_fpxregset): Ditto.

	* gregset.h (gdb_fpxregset_t): Define.
	(supply_fpxregset): Prototype.
	(fill_fpxregset): Prototype.

	* exec.c (exec_make_note_section): Don't call elfcore_write_prpsinfo.

2002-01-09  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/arm-tdep.h (arm_software_single_step): Remove PARAMS.
	* config/arm/nm-nbsd.h (arm_register_u_addr): Likewise.
	* config/arm/tm-nbsd.h (get_longjmp_target): Likewise.

2002-01-09  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Update target maintainer rules so that any
	Maintainer can approve a tested patch for a maintenance-only
	target.

2002-01-09  Richard Earnshaw  <rearnsha@arm.com>

	* MAINTAINERS (write-after-approval): Add myself.

	* arm-tdep.c (arm_init_extra_frame_info): Cast NULL argument to
	IN_SIGTRAMP.

2002-01-08  Michael Snyder  <msnyder@redhat.com>

	* linux-proc.c (child_pid_to_exec_file): Use readlink to get the
	real name of the executable, rather than the /proc name.

2002-01-03  Michael Snyder  <msnyder@redhat.com>

	Implement a "generate-core-file" command in gdb, save target state.
	* gcore.c: New file.  Implement new command 'generate-core-file'.
	Save a corefile image of the current state of the inferior.
	* linux-proc.c: Add linux-specific code for saving corefiles.
	* target.h (struct target_ops): Add new target vectors for saving
	corefiles; to_find_memory_regions and to_make_corefile_notes.
	(target_find_memory_regions): New macro.
	(target_make_corefile_notes): New macro.
	* target.c (update_current_target): Inherit new target methods.
	(dummy_find_memory_regions): New place-holder method.
	(dummy_make_corefile_notes): New place-holder method.
	(init_dummy_target): Initialize new dummy target vectors.
	* exec.c (exec_set_find_memory_regions): New function.
	Allow the exec_ops vector for memory regions to be taken over.
	(exec_make_note_section): New function, target vector method.
	* defs.h (exec_set_find_memory_regions): Export prototype.
	* procfs.c (proc_find_memory_regions): New function, corefile method.
	(procfs_make_note_section): New function, corefile method.
	(init_procfs_ops): Set new target vector pointers.
	(find_memory_regions_callback): New function.
	(procfs_do_thread_registers): New function.
	(procfs_corefile_thread_callback): New function.
	* sol-thread.c (sol_find_memory_regions): New function.
	(sol_make_note_section): New function.
	(init_sol_thread_ops): Initialize new target vectors.
	* inftarg.c (inftarg_set_find_memory_regions): New function.
	Allow to_find_memory_regions vector to be taken over.
	(inftarg_set_make_corefile_notes): New function.
	Allow to_make_corefile_notes vector to be taken over.
	* thread-db.c (thread_db_new_objfile): Don't activate thread-db
	interface layer if not target_has_execution (may be a corefile).
	* config/i386/linux.mh: Add gcore.o to NATDEPFILES.
	* config/sparc/sun4sol2.mh: Ditto.
	* config/alpha/alpha-linux.mh: Ditto.
	* config/arm/linux.mh: Ditto.
	* config/i386/x86-64linux.mh: Ditto.
	* config/ia64/linux.mh: Ditto.
	* config/m68k/linux.mh: Ditto.
	* config/mips/linux.mh: Ditto.
	* config/powerpc/linux.mh: Ditto.
	* config/sparc/linux.mh: Ditto.

2002-01-07  Michael Snyder  <msnyder@redhat.com>

	* arm-linux-nat.c: Remove references to regcache.c internal data
	(registers[] and register_valid[]).

2002-01-07  Michael Snyder  <msnyder@redhat.com>

	* linux-proc.c: New file.  Implement child_pid_to_exec_file,
	so that attaching to a pid will automatically read the process's
	symbol file and shlibs.
	* Makefile.in: Add rule for linux-proc.o.
	* config/nm-linux.h: Define CHILD_PID_TO_EXEC_FILE.
	* config/alpha/alpha-linux.mh: Add linux-proc.o to NATDEPFILES.
	* config/arm/linux.mh: Ditto.
	* config/i386/linux.mh: Ditto.
	* config/i386/x86-64linux.mh: Ditto.
	* config/ia64/linux.mh: Ditto.
	* config/m68k/linux.mh: Ditto.
	* config/mips/linux.mh: Ditto.
	* config/powerpc/linux.mh: Ditto.
	* config/sparc/linux.mh: Ditto.

2002-01-06  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c: Add i386-tdep.h dependency.

2002-01-07  Michael Snyder  <msnyder@redhat.com>

	* solib.c (info_sharedlibrary_command): Use TARGET_PTR_BIT
	instead of bfd_get_arch_size.  Don't bail out just because
	there's no exec_bfd.

	* cp-valprint.c (cp_print_value): FIXME comment, alloca size.
	* p-valprint.c (pascal_object_print_value): Ditto.
	* somread.c (som_symtab_read): Ditto.
	* symfile.c (simple_free_overlay_region_table): Ditto.
	* valops.c (value_assign): Ditto.

	* tracepoint.c (tracepoint_save_command): From Klee Dienes --
	use tilde_expand and strerror for opening save-tracepoints file.

	* thread-db.c (thread_db_new_objfile): Indendation fix.

	* infptrace.c (GDB_MAX_ALLOCA): New define.
	(child_xfer_memory): Use xmalloc/xfree instead of alloca if the
	size of the buffer exceeds GDB_MAX_ALLOCA (default 1 megabyte,
	can be overridden with whatever value is appropriate to the host).
	* infttrace.c (child_xfer_memory): Add FIXME warning about use of
	alloca to allocate potentially large buffer.
	* rs6000-nat.c (child_xfer_memory): Ditto.
	* symm-nat.c (child_xfer_memory): Ditto.
	* x86-64-linux-nat.c (child_xfer_memory): Ditto.

2002-01-07  Jackie Smith Cashion  <jsmith@redhat.com>

	From Nick Clifton  <nickc@redhat.com>
	* d10v-tdep.c: Set STACK_START to 0x200bffe.

2002-01-07  Michael Snyder  <msnyder@redhat.com>

	* solib-legacy.c (legacy_svr4_fetch_link_map_offsets):
	Don't use exec_bfd if it's NULL.

2002-01-06  Mark Kettenis  <kettenis@gnu.org>

	* valops.c (value_arg_coerce): Fix formatting.

2002-01-06  Andrew Cagney  <ac131313@redhat.com>

	* hp-psymtab-read.c: Include "gdb_string.h" instead of <string.h>.
	* gnu-nat.c: Ditto.

2002-01-06  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Note that alpha-dec-osf4.0a, arc-elf, arm-coff,
	arm-elf, arm-pe, d30v-elf, fr30-elf, h8300hms, h8500hms,
	i960-coff, m32r-elf, m68k-elf, m88k, mcore-elf, mn10200-elf,
	ns32k-netbsd, hppa1.1-hp-proelf, v850-elf, vax-dec-vms5.5 and
	z8k-coff have not been multi-arched.  Update z8k-coff build
	status.

2002-01-06  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Mark a29k target as obsolete.
	* Makefile.in (a29k-tdep.o, remote-adapt.o, remote-eb.o)
	(remote-mm.o, remote-udi.o): Obsolete.  Remove references in
	comments.
	* NEWS: Note that a29k targets are obsolete.
	* a29k-tdep.c: Mark as obsolete.
	* configure.tgt: Mark a29k-*-aout*, a29k-*-coff*, a29k-*-elf*,
	a29k-*-ebmon*, a29k-*-kern*, a29k-*-none*, a29k-*-udi* and
	a29k-*-vxworks* targets as obsolete.
	* remote-adapt.c: Obsolete.
	* remote-eb.c: Obsolete.
	* remote-mm.c: Obsolete.
	* remote-udi.c: Obsolete.
	* config/a29k/a29k-udi.mt: Obsolete.
	* config/a29k/a29k.mt: Obsolete.
	* config/a29k/tm-a29k.h: Obsolete.
	* config/a29k/tm-vx29k.h: Obsolete.
	* config/a29k/vx29k.mt: Obsolete.

2002-01-05  Andrew Cagney  <ac131313@redhat.com>

	* rs6000-tdep.c (rs6000_do_registers_info): Replace BIG_ENDIAN
	with BFD_ENDIAN_BIG.

2002-01-05  Andrew Cagney  <ac131313@redhat.com>

	* configure.in (AC_CHECK_HEADERS): Do not check for <endian.h>.
	* configure, config.in: Re-generate.
	* config/vax/xm-vaxbsd.h: Do not include <machine/endian.h>.
	* defs.h: Do not include <endian.h>.

2002-01-05  Jason Thorpe  <thorpej@wasabisystems.com>

	* acconfig.h (HAVE_PT_GETXMMREGS): New.
	* config.in: Regenerate.
	* configure.in: Update copyright years.
	Add test for PT_GETXMMREGS supplied by <sys/ptrace.h>.
	* configure: Regenerate.
	* i386bsd-nat.c: Update copyright years.
	(fill_gregset): Use regcache_collect.
	(fetch_inferior_registers): Only fetch integer registers
	if requested to do so.  Add support for XMM registers
	using PT_GETXMMREGS.
	(store_inferior_registers): Only store integer registers
	if requested to do so.  Add support for XMM registers
	using PT_SETXMMREGS.
	* i386nbsd-nat.c (fetch_inferior_registers): Remove.
	(store_inferior_registers): Remove.
	(fetch_core_registers): Use supply_gregset and i387_supply_fsave.
	(fetch_elfcore_registers): New function.
	(i386nbsd_elfcore_fns): New.
	(_initialize_i386nbsd_nat): Register i386nbsd_elfcore_fns.
	* config/i386/nbsd.mh (NATDEPFILES): Add i387-nat.o and
	i386bsd-nat.o.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/i386/nbsd.mt (TDEPFILES): Add i386bsd-nat.o.
	* config/i386/nbsdelf.mt (TDEPFILES): Likewise.
	* config/i386/tm-nbsd.h: Update copyright years.
	(HAVE_SSE_REGS): Define.
	(IN_SIGTRAMP): Define as i386bsd_in_sigtramp.
	(SIGTRAMP_START): Redefine as i386bsd_sigtramp_start.
	(SIGTRAMP_END): Redefine as i386bsd_sigtramp_end.
	(SIGCONTEXT_PC_OFFSET): Remove.
	(FRAME_SAVED_PC): Define as i386bsd_frame_saved_pc.

2002-01-05  Andrew Cagney  <ac131313@redhat.com>

	* configure.tgt: Remove powerpc-*-macos* target.
	* config/m68k/xm-mpw.h: Delete file.
	* config/xm-mpw.h: Delete file.
	* ser-mac.c: Delete file.
	* mpw-make.sed: Delete file.
	* mpw-config.in: Delete file.
	* mac-xdep.c: Delete file.
	* mac-gdb.r: Delete file.
	* mac-defs.h: Delete file.
	* mac-nat.c: Delete file.
	* config/powerpc/macos.mh: Delete file.
	* config/powerpc/macos.mt: Delete file.
	* config/powerpc/nm-macos.h: Delete file.
	* config/powerpc/tm-macos.h: Delete file.
	* source.c (openp, open_source_file): Remove obsolete code.
	* top.c	(gdb_readline): Ditto.
	* utils.c (query): Ditto.
	* event-top.c (display_gdb_prompt): Ditto.
	* Makefile.in (ser-mac.o): Delete obsolete target.
	* NEWS: Update.

2002-01-04  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (BIG_ENDIAN): Delete macro definition.
	* a29k-tdep.c, arch-utils.c, arm-tdep.c, ax-gdb.c, ch-exp.c,
	coffread.c, cris-tdep.c, d10v-tdep.c, d30v-tdep.c, defs.h,
	findvar.c, infcmd.c, mem-break.c, mips-tdep.c, mn10300-tdep.c,
	printcmd.c, remote-os9k.c, remote-rdi.c, remote-rdp.c,
	remote-sim.c, remote.c, rs6000-tdep.c, sh-tdep.c, sparcl-tdep.c,
	stabsread.c, valops.c, valprint.c, config/a29k/tm-a29k.h,
	config/a29k/tm-vx29k.h, config/arm/tm-arm.h,
	config/d30v/tm-d30v.h, config/fr30/tm-fr30.h,
	config/h8300/tm-h8300.h, config/h8500/tm-h8500.h,
	config/m32r/tm-m32r.h, config/m68k/tm-m68k.h,
	config/m88k/tm-m88k.h, config/mips/tm-mips.h, config/pa/tm-hppa.h,
	config/sparc/tm-sparc.h, config/z8k/tm-z8k.h, mi/mi-cmd-disas.c,
	mi/mi-main.c: Replace BIG_ENDIAN with BFD_ENDIAN_BIG.
	* gdbarch.sh: Replace BIG_ENDIAN with BFD_ENDIAN_BIG.
	* gdbarch.c: Re-generate.

2002-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* thread-db.c (thread_db_new_objfile): Do not enable thread_db
	for core files.

2002-01-04  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/arm/nbsd.mh (XDEPFILES): Remove ser-tcp.o.

2002-01-04  Andrew Cagney  <ac131313@redhat.com>

	* value.h (value_ptr): Delete typedef.

2002-01-04  Jason Thorpe  <thorpej@wasabisystems.com>

	* i386nbsd-nat.c: Update copyright years.
	Include i386-tdep.h.

2002-01-04  Elena Zannoni  <ezannoni@redhat.com>

	* stabsread.c: Update copyright years.

	From Debashis Mahata <debashis.mahata@wipro.com>:
	(read_struct_fields): Deal with Sun C compiler erroneous stab
	output for structs and unions.
        Fix PR gdb/269.

2002-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* p-valprint.c: Include "cp-abi.h" for baseclass_offset
	prototype.

2002-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* cp-abi.c: Fix whitespace.
	(baseclass_offset): New wrapper function.
	* cp-abi.h (baseclass_offset): Add prototype.
	(struct cp_abi_ops): Add baseclass_offset pointer.

	* valops.c (vb_match): Move to...
	* gnu-v2-abi.c (vb_match): here.
	* valops.c (baseclass_offset): Move to...
	* gnu-v2-abi.c (gnuv2_baseclass_offset): here, and rename.

	* gnu-v3-abi.c (gnuv3_baseclass_offset): New function.

	* gnu-v2-abi.c (init_gnuv2_ops): Initialize baseclass_offset.
	* gnu-v3-abi.c (init_gnuv3_ops): Likewise.
	* hpacc-abi.c (init_hpacc_ops): Likewise.

2002-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* valops.c (find_overload_match): Accept obj as a
	reference parameter.  Update it before returning.
	* value.h (find_overload_match): Update prototype.
	* eval.c (evaluate_subexp_standard): Pass object to
	find_overload_match by reference.

2002-01-03  Andrew Cagney  <ac131313@redhat.com>

	* valarith.c: Replace value_ptr with struct value pointer.  Remove
	register attribute from value declarations.
	* valops.c: Ditto.
	* value.h: Ditto.
	* scm-lang.c (scm_lookup_name): Ditto.

2002-01-03  Michael Snyder  <msnyder@redhat.com>

	Abstract the functionality of iterating over mapped memory
	regions into a general purpose iterator function.
	* procfs.c (iterate_over_mappings): New function, general purpose
	iterator for memory sections.
	(proc_iterate_over_mappings): Reimplement using iterate_over_mappings.
	(solib_mappings_callback): New function, callback for above.
	(info_proc_mappings): Reimpliment using iterate_over_mappings.
	(info_mappings_callback): New function, callback for above.

	* procfs.c (proc_set_watchpoint): Add cast to suppress warning.

2002-01-01  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.h (struct gdbarch_tdep): Add `os_ident' member.
	* i386-tdep.c: Include "elf-bfd.h".
	(process_note_abi_tag_sections): New function.
	(i386_gdbarch_init): Add code to recognize various OS/ABI
	combinations.

	* maint.c (_initialize_maint_cmds): Add missing \ in
	string-literal.

For older changes see ChangeLog-2001

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
