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  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>

	* 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  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.

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>

	* 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>

	* 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.

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.

	* 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  Paul Eggert  <eggert@twinsun.com>

	* Makefile.in (VER): Change "head -1" to "sed q", since POSIX
	1003.1-2001 no longer allows "head -1".
	* Makefile.in (version.c): Likewise.
	* 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.

	* 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:
