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

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

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

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

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

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

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

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

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

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

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

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

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

	* gdb_mbuild.sh: New file.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* MAINTAINERS: Alphabetize Write After Approval list.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2002-09-10  Stephane Carrez  <stcarrez@nerim.fr>

	* event-loop.c (gdb_do_one_event): Make public.
	* event-loop.h (gdb_do_one_event): Declare.

2002-09-10  Jeff Law  <law@redhat.com>

	* infttrace.c (child_resume): Simplify and rework to avoid
	TT_PROC_CONTINUE.

2002-09-09  Fred Fish  <fnf@intrinsity.com>

	* printcmd.c (print_scalar_formatted): "len" is the number of
	target bytes, NOT the number of target bits.

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

	From: Emmanuel Thome'  <thome@lix.polytechnique.fr>
	* top.c (init_main): Set rl_terminal_name.

2002-09-08  Aidan Skinner <aidan@velvet.net>

	* ada-lang.c (ada_array_bound, ada_type_match,
	_initialize_ada_language): Fix K&R definitions.
	* ada-tasks.c (get_current_task): Fix K&R definitions.
	* ada-valprint.c (adjust_type_signedness): Fix K&R definitions.
			
2002-09-07  Christopher Faylor  <cgf@redhat.com>

	* MAINTAINERS: Remove CE from list of maintainership responsibilities.
	Add XP.

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

	* i386-tdep.c (i386_register_virtual_type,
	i386_register_convertible, i386_register_convert_to_virtual,
	i386_register_comvert_to_raw): Use FP_REGNUM_P and SSE_REGNUM_P
	instead of IS_FP_REGNUM and IS_SSE_REGNUM.
	(i386_gdbarch_init): Fix comment.  Add comments on calls that set
	sp_regnum, fp_regnum, pc_regnum, ps_regnum and fp0_regnum.
	Don't set push_arguments twice.

	* i386bsd-tdep.c (i386bsd_init_abi): Set sigtramp_start and
	sigtramp_end to i386bsd_sigtramp_start and i386bsd_sigtramp_end.
	* i386nbsd-tdep.c (i386nbsd_init_abi): Set sigtramp_start and
	sigtramp_end to NULL.
	* config/i386/tm-fbsd.h (SIGTRAMP_START, SIGTRAMP_END): Remove
	defines.
	(i386bsd_sigtramp_start, i386_sigtramp_end): Remove prototypes.

	* i386nbsd-tdep.c (i386nbsd_pc_in_sigtramp): Remove spurious
	whitespace.

	* gdbarch.sh (SIGTRAMP_START, SIGTRAMP_END): New methods.
	* gdbarch.h, gdbarch.c: Re-generate.
	* blockframe.c (find_pc_sect_partial_function): Convert to use
	SIGTRAMP_START_P predicate.

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

	* arm-tdep.c (arm_init_extra_frame_info): Distinguish between
	generic_dummy_frame method and old method.  Also distinguish
	between ARM_FP_REGNUM and THUMB_FP_REGNUM.
	(arm_extract_return_value): Use new regcache method.

	* mips-tdep.c (mips_n32n64_push_arguments): Remove alignment
	adjustment that doesn't conform to the ABI.
	(mips_extract_struct_value_address): Retrieve V0_REGNUM from
	saved regcache, not from current regcache.

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

	* NEWS: Update for 5.3.  Add new section ``Changes since 5.3''.
	* README: Update.

2002-09-04  Jason Thorpe  <thorpej@wasabisystems.com>

	* arm-tdep.c (arm_addr_bits_remove): Don't check for Thumb mode
	if arm_apcs_32 is false.

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

	GDB 5.3 branch created.

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

	* gdb/avr-tdep.c (avr_gdbarch_init): Use
	generic_unwind_get_saved_register.

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

	* dwarf2read.c (dwarf2_add_member_fn): Add the 'type'
	argument (PR gdb/653).  Update call to smash_to_method_type.
	(read_structure_scope): Update call to dwarf2_add_member_fn.

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

	* x86-64-linux-tdep.c: Include gdb_string.h
	* x86-64-linux-nat.c: Ditto.

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

	* ada-exp.y (yyname, yyrule): Remap global variables that appear
	when YYDEBUG is set to 1.  
	* c-exp.y: Likewise.
	* f-exp.y: Likewise.
	* jv-exp.y: Likewise.
	* m2-exp.y: Likewise.
	* p-exp.y: Likewise.

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

	* Makefile.in (i386nbsd-tdep.o): Add $(solib_svr4_h) to
	dependency list.
	* i386nbsd-tdep.c (i386nbsdelf_init_abi): Set
	solib_svr4_fetch_link_map_offsets to
	nbsd_ilp32_solib_svr4_fetch_link_map_offsets.
	* config/i386/nbsd.mt (TDEPFILES): Add solib.o and solib-svr4.o.
	* config/i386/nbsdaout.mh (NATDEPFILES): Remove solib.o.
	* config/i386/nbsdelf.mh (NATDEPFILES): Remove solib.o,
	solib-svr4.o, and solib-legacy.o.
	* config/i386/tm-nbsd.h: Include solib.h.

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

	* configure.tgt (i[3456]86-*-netbsdelf*): Merge with... 
	(i[3456]86-*-netbsd*): ...this.  Set gdb_target to nbsd. 
	(i[3456]86-*-openbsd*): Make this a separate entry.  Add a
	comment noting that this needs its own target configuration.
	* config/i386/nbsd.mt: New file.
	* config/i386/nbsdaout.mt: Remove.
	* config/i386/nbsdelf.mt: Ditto.
	* config/i386/tm-nbsdaout.h: Ditto. 

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

	* i386nbsd-tdep.c (i386nbsd_sigtramp_offset): New function. 
	(i386nbsd_pc_in_sigtramp): Rewrite to use i386nbsd_sigtramp_offset. 
	(i386nbsd_init_abi): Don't initialize tdep->sigtramp_start or
	tdep->sigtramp_end.
	(i386nbsd_sigtramp_start, i386nbsd_sigtramp_end): Remove. 
	* config/i386/tm-nbsd.h (SIGTRAMP_START, SIGTRAMP_END)
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove.

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

	* Makefile.in (i386nbsd-tdep.o): Add $(arch_utils_h),
	$(i386_tdep_h), and $(nbsd_tdep_h) to dependency list.
	* i386-tdep.h (i386bsd_init_abi): New prototype.
	* i386bsd-tdep.c (i386bsd_init_abi): Remove "static" from
	function declaration.
	(_initialize_i386bsd_tdep): Don't register OS ABI handlers
	for NetBSD-a.out or NetBSD-ELF.
	(i386nbsd_sigtramp_start, i386nbsd_sigtramp_end)
	(i386nbsd_sc_pc_offset, i386nbsd_sc_sp_offset)
	(i386nbsd_init_abi, i386nbsdelf_init_abi): Move to...
	* i386nbsd-tdep.c: ...here.  Include arch-utils.h, i386-tdep.h,
	and nbsd-tdep.h.
	(i386nbsd_pc_in_sigtramp): New function.
	(i386nbsd_init_abi): Set gdbarch_pc_in_sigtramp to
	i386nbsd_pc_in_sigtramp.
	(_initialize_i386nbsd_tdep): Register i386nbsd_init_abi
	and i386nbsdelf_init_abi OS ABI handlers.
	* config/i386/nbsdaout.mt (TDEPFILES): Add nbsd-tdep.o.
	* config/i386/nbsdelf.mt (TDEPFILES): Likewise.

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

	* i386-linux-nat.c (dummy_sse_values): Only try to fill in the SSE
	registers if the target really has them.

2002-08-31  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (mipsnbsd-tdep.o): Use $(nbsd_tdep_h) rather
	than nbsd-tdep.h.

2002-08-31  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (alphanbsd-tdep.o): Add $(frame_h) to dependency
	list.
	* alphanbsd-tdep.c (alphanbsd_sigcontext_addr)
	(alphanbsd_skip_sigtramp_frame): New functions. 
	(alphanbsd_init_abi): Set tdep->skip_sigtramp_frame to
	alphanbsd_skip_sigtramp_frame.  Set tdep->sigcontext_addr
	to alphanbsd_sigcontext_addr. 

2002-08-31  Jason Thorpe  <thorpej@wasabisystems.com>

	* Makefile.in (mipsnbsd-tdep.o): Add nbsd-tdep.h to dependency
	list.
	(nbsd-tdep.o): Add $(gdb_string_h) to dependency list. 
	* alphanbsd-tdep.c (alphanbsd_pc_in_sigtramp): Use
	nbsd_pc_in_sigtramp. 
	* mipsnbsd-tdep.c: Include nbsd-tdep.h.
	(mipsnbsd_pc_in_sigtramp): Use nbsd_pc_in_sigtramp.
	* nbsd-tdep.c: Include gdb_string.h.
	(nbsd_pc_in_sigtramp): New function. 
	* nbsd-tdep.h (nbsd_pc_in_sigtramp): New prototype. 
	* ppcnbsd-tdep.c (ppcnbsd_pc_in_sigtramp): New function.
	(ppcnbsd_init_abi): Set gdbarch_pc_in_sigtramp to
	ppcnbsd_pc_in_sigtramp. 
	* shnbsd-tdep.c (shnbsd_pc_in_sigtramp): New function.
	(shnbsd_init_abi): Set gdbarch_pc_in_sigtramp to
	shnbsd_pc_in_sigtramp. 
	* sparcnbsd-tdep.c (sparcnbsd_init_abi_elf): Set
	gdbarch_pc_in_sigtramp to nbsd_pc_in_sigtramp. 
	* config/mips/nbsd.mt (TDEPFILES): Add nbsd-tdep.o.

2002-08-30  Pierre Muller  <muller@ics.u-strasbg.fr>

	* breakpoint.c (breakpoint_init_inferior): Reset the val field of
	watchpoints to NULL.
	(insert_breakpoints): set val field of watchpoints if NULL.


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

	* symtab.c (lookup_symbol_aux): In the cases where we find a
	minimal symbol of an appropriate name and use its address to
	select a symtab to read and search, use `name' (as passed to us)
	as the demangled name when searching the symtab's global and
	static blocks, not the minsym's name.

2002-08-29  Keith Seitz  <keiths@redhat.com>

	* stack.c (print_frame_info_base): Always set current_source_symtab
	and current_source_line.

2002-08-29  Donn Terry  <donnte@microsoft.com>

	* proc-api.c (rw_table): Fix typo in #ifdef PCSHOLD (missing S).

2002-08-28  Keith Seitz  <keiths@redhat.com>

	* stack.c (select_frame): Add FIXME concerning selected-frame
	events.
	(select_frame_command): Send selected-frame-level-changed
	event notification, but only if the level actually changed.
	(up_silently_base): Add selected-frame-level-changed event
	notification.
	(down_silently_base): Likewise.

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

	* Makefile.in: Update dependencies for all gdb/*.c files.

2002-08-27  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (osabi.o, i387-tdep.o, i386-linux-nat.o, lin-lwp.o,
	ax-gdb.o, signals.o, jv-valprint.o, c-valprint.o, cp-abi.o):
	Update dependencies.
	* i387-tdep.c: Include gdb_string.h.
	* osabi.c: Likewise.
	* i386-linux-nat.c: Likewise.
	* lin-lwp.c: Likewise.
	* ax-gdb.c: Likewise.
	* signals/signals.c: Likewise.
	* jv-valprint.c: Likewise.
	* p-lang.c: Likewise.
	* c-valprint.c: Likewise.
	* cp-abi.c: Likewise.

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

	* cli/cli-script.h (copy_command_lines): Export.
	* breakpoint.c: Include cli/cli-script.h.
	* Makefile.in (breakpoint.o): Update dependencies.

2002-08-26  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (insert_breakpoints): Protect all references
	to 'process_warning'.  Shorten long lines.

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

	* cli/cli-script.c (copy_command_lines): New function.
	* defs.h (copy_command_lines): Export.
	* testsuite/gdb.base/commands.exp: New tests for commands
	attached to a temporary breakpoint, and for commands that
	delete the breakpoint they are attached to.
	
2002-08-26  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (bpstat_stop_status): Instead of copying the 
	pointer to the breakpoint commands struct, make a new copy
	of the struct and point to that.
	(bpstat_clear): Free the commands struct.
	(bpstat_clear_actions): Free the commands struct.
	(bpstat_do_actions): Free the command actions.  Also execute
	the local cleanups, instead of deleting them.
	(delete_breakpoint): Leave the commands field of the bpstat
	chain alone -- it will be freed later.

2002-08-26  Kevin Buettner  <kevinb@redhat.com>

	* rs6000-tdep.c (altivec_register_p): Restore function inadvertently
	deleted in 2002-08-20 commit.  This function is still used by
	ppc-linux-nat.c.

2002-08-26  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh: Add selected-frame-level-changed event.
	* gdb-events.c: Regenerated.
	* gdb-events.h: Regenerated.
	
2002-08-26  Stephane Carrez  <stcarrez@nerim.fr>

	Fix PR gdb/393:
	* inflow.c (terminal_save_ours): New function to save terminal
	settings.
	* inferior.h (terminal_save_ours): Declare.
	* target.c (debug_to_terminal_save_ours): New function.
	(cleanup_target): Defaults to_terminal_save_ours.
	(update_current_target): Inherit to_terminal_save_ours.
	(setup_target_debug): Set to_terminal_save_ours.
	* target.h (target_terminal_save_ours): New to save terminal settings.
	(target_ops): New member to_terminal_save_ours.
	* gnu-nat.c (init_gnu_ops): Set to_terminal_save_ours.
	* hpux-thread.c (init_hpux_thread_ops): Likewise.
	* inftarg.c (init_child_ops): Likewise.
	* m3-nat.c (init_m3_ops): Likewise.
	* procfs.c (init_procfs_ops): Likewise.
	* wince.c (init_child_ops): Likewise.
	* win32-nat.c (init_child_ops): Likewise.
	* sol-thread.c (init_sol_thread_ops): Likewise.

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

	* i386-tdep.c (i386_store_return_value): Undeprecate.  Convert to
	use regcache_* functions.
	(i386_gdbarch_init): Set store_return_value instead of
	deprecated_store_return_value.

	* regcache.c (regcache_raw_write_signed,
	regcache_raw_write_unsigned): New functions.
	* regcache.h (regcache_raw_write_signed,
	regcache_raw_write_unsigned): New prototypes.

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

	* Makefile.in (c-exp.tab.o, jv-exp.tab.o, f-exp.tab.o)
	(m2-exp.tab.o, p-exp.tab.o, ada-exp.tab.o): Move to before the
	source file dependencies.  Cleanup corresponding generator rules.

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

	* regcache.h (register_offset_hack): Declare.
	(regcache_cooked_read_using_offset_hack): Declare.
	(regcache_cooked_write_using_offset_hack): Declare.

	* regcache.c (register_offset_hack): New function.
	(regcache_cooked_read_using_offset_hack): New function.
	(regcache_cooked_write_using_offset_hack): New function.
	(regcache_dump): Check that the registers, according to their
	offset, are packed hard against each other.
	(cooked_xfer_using_offset_hack): New function.

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

	* regcache.c (struct regcache_descr): Add field register_type.
	(init_legacy_regcache_descr): Pass a pre-allocated regcache_descr
	in as a parameter
	(init_regcache_descr): Initialize register_type.  Pass the descr
	to init_legacy_regcache_descr.  Use register_type instead of
	REGISTER_VIRTUAL_TYPE.
	(register_type): New function.
	(regcache_dump): Replace REGISTER_VIRTUAL_TYPE with register_type.
	* regcache.h (register_type): Declare.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Set store_struct_return
	instead of deprecated_store_return_value.  Fix fallout from
	2002-08-23 Andrew Cagney <cagney@redhat.com>.

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

	* regcache.c (max_register_size): New function.
	(init_legacy_regcache_descr): Ensure that max_register_size is
	large enough for REGISTER_VIRTUAL_SIZE.
	* regcache.h (max_register_size): Declare.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Use deprecated version of
	store_return_value.
	(e500_extract_return_value): Change type of valbuf pointer to
	void.

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

	* PROBLEMS: Clarify problems with FreeBSD's compiler and suggest
	workaround.

	* valprint.c (print_longest) [CC_HAS_LONG_LONG &&
	PRINTF_HAS_LONG_LONG]: Cast val_long to (long long) or (unsigned
	long long) to prevent compiler warning on 64-bit systems.

2002-08-23  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter.
	(DEPRECATED_STORE_RETURN_VALUE): New method.
	(EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer.
	* gdbarch.h, gdbarch.c: Re-generate.

	* values.c (set_return_value): Pass current_regcache to
	STORE_RETURN_VALUE.
	* arch-utils.h (legacy_store_return_value): Declare.
	* arch-utils.c (legacy_store_return_value): New function.
	(legacy_extract_return_value): Update parameters.

	* config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename
	STORE_RETURN_VALUE.
	* config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.
	* config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto.

	* m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
	* i386-tdep.c (i386_extract_return_value): Update.
	* arch-utils.c (legacy_extract_return_value): Update.
	* frv-tdep.c (frv_gdbarch_init): Update.
	* cris-tdep.c (cris_gdbarch_init): Update.
	* d10v-tdep.c (d10v_gdbarch_init): Update.
	* rs6000-tdep.c (rs6000_gdbarch_init): Update.
	* m68k-tdep.c (m68k_gdbarch_init): Update.
	* mcore-tdep.c (mcore_gdbarch_init): Update.
	* mn10300-tdep.c (mn10300_gdbarch_init): Update.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* sparc-tdep.c (sparc_gdbarch_init): Update.
	* sh-tdep.c (sh_gdbarch_init): Update.
	* x86-64-tdep.c (x86_64_gdbarch_init): Update.
	* v850-tdep.c (v850_gdbarch_init): Update.
	* avr-tdep.c (avr_gdbarch_init): Update.
	* ia64-tdep.c (ia64_gdbarch_init): Update.
	* ns32k-tdep.c (ns32k_gdbarch_init): Update.
	* vax-tdep.c (vax_gdbarch_init): Update.
	* alpha-tdep.c (alpha_gdbarch_init): Update.
	* arm-tdep.c (arm_gdbarch_init): Update.
	* mips-tdep.c (mips_gdbarch_init): Update.
	* i386-tdep.c (i386_gdbarch_init): Update.

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

	* config/djgpp/fnchange.lst: Add entries for bfd/elf32-ppcqnx.c,
	bfd/elf32-ppc.c, bfd/elf32-sh.c and bfd/elf32-shqnx.c.

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

	* PROBLEMS: Refer to GDB 5.3 instead of 5.2.  Mention FreeBSD
	problems.

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

	* infrun.c (handle_inferior_event): Move a comment outside of a
	function call, in order to avoid indent reformatting this part
	of the code in an unreadable way.

2002-08-23  Grace Sainsbury  <graces@redhat.com>

	* infrun.c (normal_stop, proceed): Remove call to print_sys_errmsg
	when breakpoints fail. Move general breakpoint error messages to
	insert_breakpoints.  
	* breakpoint.c (insert_breakpoints): Change warnings when
	breakpoints are nto inserted to specify the type. Remove call to
	memory_error when hardware breakpoints can't be inserted. Remove
	multiple calls to warning so all messages are sent to the user at
	once.
	(delete_breakpoints): Make insert error messsages more explicit.

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

	* ChangeLog: Move gdbserver entries after GDB 5.2 to
	gdbserver/ChangeLog.

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

	* i386-tdep.c: Include "objfiles.h".
	(i386_svr4_init_abi): Set in_solib_call_trampoline and
	skip_trampoline_code.
	* config/i386/tm-i386v4.h: Don't include "config/tm-sysv4.h".
	(CPLUS_MARKER): Define to '.'.

	* linux-proc.c (struct linux_corefile_thread_data): Add num_notes
	member.
	(linux_corefile_thread_callback): Increase args->num_notes.
	(linux_make_note_section): Initialize thread_args.num_notes, and
	use it to determine whether notes for any threads were created.

2002-08-23  Donn Terry  <donnte@microsoft.com>

	* proc-api.c (rw_table): Do not include a row for PCDSTOP if the
	corresponding macro is not defined. Likewise for PCNICE, PCSHOLD
	and PCUNKILL.
	(write_with_trace): Conditionalize out the switch branch handling
	PCSHOLD if the corresponding macro is not defined. Likewise for
	PRSABORT and PRSTOP.
	This change will be needed by the Interix port.

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

	* ppc-sysv-tdep.c (ppc_sysv_abi_push_arguments): use
	write_register wherever possible instead of manipulating the
	register bytes directly.
	Assign VALUE_CONTENTS to a variable and use that.
	The GPR numbers are now dependent on the architecture.
	
2002-08-22  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (struct rs6000_framedata): Add saved_ev and
	ev_offset fields.
	(skip_prologue): Add support for BookE/e500 instructions.
	(e500_extract_return_value): New function.
	(frame_get_saved_regs): Add support for saving ev registers and
	pseudo gpr's.
	(e500_store_return_value): New function.
	(rs6000_gdbarch_init): Move up default intializations of
	deprecated_extract_return_value and store_return_value.  Overwrite
	init of store_return_value with e500 specific version.
	Set extract_return_value for e500.
	
2002-08-22  Elena Zannoni  <ezannoni@redhat.com>

	* blockframe.c (generic_call_dummy_register_unwind): Use
	regcache_cooked_read to catch cases in which the variable is
	stored in a pseudo register.

2002-08-22  Andrew Cagney  <cagney@redhat.com>

	* NEWS: Mention that the i960 has been made obsolete.
	* Makefile.in (SFILES): Delete remote-nrom.c, remote-nindy.c and
	i960-tdep.c
	(remote-nrom.o): Obsolete target.
	(remote-nindy.o, i960-tdep.o): Ditto.
	* remote-nrom.c: Make file obsolete.
	* remote-nindy.c, remote-vx960.c: Ditto.
	* config/i960/vxworks960.mt, config/i960/nindy960.mt: Ditto.
	* config/i960/mon960.mt, config/i960/tm-i960.h: Ditto.
	* config/i960/tm-vx960.h, config/i960/tm-nindy960.h: Ditto.
	* config/i960/tm-mon960.h, i960-tdep.c: Ditto.
	* configure.tgt: Make i960-*-bout*, i960-nindy-coff*,
	i960-*-coff*, i960-nindy-elf*, i960-*-elf*, i960-*-nindy* and
	i960-*-vxworks* obsolete.
	* MAINTAINERS: Note that the i960 is obsolete.

2002-08-21  Corinna Vinschen  <vinschen@redhat.com

	* aix-thread.c (aix_thread_detach): Disable thread debugging on
	detach to allow reinitialization.

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

	* MAINTAINERS: Change the s390 target to s390-linux-gnu (second
	attempt).

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

	* coffread.c (coff_symfile_read): Don't try to read the line
	number table from disk if the image file doesn't have a symbol
	table; we'll never actually look at the info anyway, and Windows
	ships DLL's with bogus file offsets for the line number data.

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

        * rs6000-tdep.c (rs6000_gdbarch_init): Figure out whether we have
        an e500 executable.

2002-08-21  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (MSYMBOL_IS_SPECIAL): Replace macro with function.
	(MSYMBOL_SIZE): Replace macro with function.
	(DEFAULT_MIPS_TYPE): Delete unused macro.
	* config/mips/tm-mips.h (DEFAULT_MIPS_TYPE): Delete unused macro.
	* config/mips/tm-embed.h (DEFAULT_MIPS_TYPE): Delete unused macro.

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

	* valops.c (value_cast): Simplify and correct logic for doing a
	static cast from a pointer to a base class to a pointer to a
	derived class.

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

	* infcmd.c (default_print_registers_info): Replace
	do_registers_info.
	(registers_info): Use gdbarch_print_registers_info instead of
	DO_REGISTERS_INFO.
	* inferior.h (default_print_registers_info): Replace
	do_registers_info.
	* gdbarch.sh (PRINT_REGISTERS_INFO): New method.
	(DO_REGISTERS_INFO): Change to a predicate function.
	* gdbarch.h, gdbarch.c: Regenerate.
	
2002-08-21  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh: Add target-changed event.
	* gdb-events.c: Regenerated.
	* gdb-events.c: Regenerated.
	* valops.c (value_assign): Add target-changed event notification
	to inlval_register, lval_memory, and lval_reg_frame_relative.

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

	* NEWS: Add an entry regarding the improvement of the next/step
	operation on Alpha Tru64 multi-processor machines.

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

	* Makefile.in: Update dependencies for mi/ cli/ and tui/
	directores.
	* Makefile.in: Update all _h macro definitions.
	* Makefile.in (install-gdbtk): Move to install section.
	(rdi-share/libangsd.a): Move to end of file.

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

	* frame.c (frame_register_unwind): When a register, set addrp to
	the register's byte.

2002-08-20  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): These are only
	used locally, so move them from the target machine header to here.
	(mips_set_processor_type, mips_register_name, mips32_next_pc, 
	mips16_next_pc, cached_proc_desc, mips_set_processor_type): 
	Make static.
	* config/mips/tm-mips.h (MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Delete.

2002-08-20  Andrew Cagney  <cagney@redhat.com>

	* NEWS: Mention that the Apollo line was made obsolete.
	* configure.tgt: Make m68*-apollo*-bsd*, m68*-hp-bsd*, and
	m68*-hp-hpux* obsolete.
	* configure.host: Make m68*-apollo*-sysv*, m68*-apollo*-bsd*,
	m68*-hp-bsd* and m68*-hp-hpux* obsolete.
	* buildsym.c (make_blockvector): Make static.
	* buildsym.h (make_blockvector): Make extern declaration obsolete.
	* Makefile.in (HFILES_NO_SRCDIR): Remove dst.h
	(ALLDEPFILES): Remove dstread.c.
	(dstread.o): Obsolete make rule.
	* dstread.c: Makefile obsolete.
	* dst.h: Ditto.
	* config/m68k/hp300hpux.mt: Ditto.
	* config/m68k/hp300hpux.mh: Ditto.
	* config/m68k/hp300bsd.mt: Ditto.
	* config/m68k/hp300bsd.mh: Ditto.
	* config/m68k/apollo68b.mt: Ditto.
	* config/m68k/apollo68v.mh: Ditto.
	* config/m68k/apollo68b.mh: Ditto.

2002-08-20  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_in_return_stub): Make static.
	(mips_gdbarch_init): Set in_solib_return_trampoline.
	* config/mips/tm-mips.h (IN_SOLIB_RETURN_TRAMPOLINE): Delete.

2002-08-20  Michael Snyder  <msnyder@redhat.com>

	* gdbarch.sh (IN_SOLIB_RETURN_TRAMPOLINE): Add.
	* gdbarch.c, gdbarch.h: Regenerate.
	* arch-utils.c, arch-utils.h (generic_in_solib_return_trampoline):
	Add.
	* infrun.c (IN_SOLIB_RETURN_TRAMPOLINE): Delete default definition.

2002-08-20  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_skip_stub, mips_in_call_stub): Make static.
	(mips_gdbarch_init): Set skip_trampoline_code, 
	in_solib_call_trampoline.
	* config/mips/tm-mips.h (REGISTER_NAME): Delete.
	(IN_SOLIB_CALL_TRAMPOLINE, SKIP_TRAMPOLINE_CODE): Delete.

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

	* ppc-tdep.h (struct gdbarch_tdep): Add ev registers.

	* rs6000-tdep.c (rs6000_register_virtual_type): Return 64 bit
	vector type for ev registers.
	(e500_pseudo_register_read): New function.
	(e500_pseudo_register_write): New function.
	(e500_dwarf2_reg_to_regnum): New function.
	(PPC_UISA_NOFP_SPRS): New macro.
	(PPC_EV_REGS): New macro.
	(PPC_GPRS_PSEUDO_REGS): New macro.
	(registers_e500): New register set for e500.
	(variants): Add e500 variant.
	(rs6000_gdbarch_init): Move setting of pc, sp, fp regnums to
	before setting architectural dependent variations.  Initialize ev
	registers numbers.  Add case for e500 architecture.  Set the
	number of pseudo registers.

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

        * rs6000-tdep.c: Clean up comments.

2002-08-20  Andrew Cagney  <cagney@redhat.com>

	* h8300-tdep.c: Re-indent file.

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

	* Makefile.in (LDFLAGS): Allow the configure script to establish a
	default for this.

2002-08-20  Keith Seitz  <keiths@redhat.com>

	* breakpoints.c (watch_command_1): Use internal breakpoint
	when setting a watchpoint_scope breakpoint.

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

        * gdbtypes.c (build_builtin_type_vec64): Add name to type.
        (build_builtin_type_vec64i): Ditto.
        (build_builtin_type_vec128): Ditto.
        (build_builtin_type_vec128i): Ditto.

2002-08-19  Michael Snyder  <msnyder@redhat.com>

	* config/mips/tm-mips.h (ELF_MAKE_MSYMBOL_SPECIAL): Delete.
	(MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Change into functions.
	(FIX_CALL_DUMMY, PUSH_RETURN_ADDRESS, PUSH_DUMMY_FRAME,
	POP_FRAME, INIT_EXTRA_FRAME_INFO): Delete.
	(CALL_DUMMY_START_OFFSET, CALL_DUMMY_BREAKPOINT_OFFSET,
	CALL_DUMMY_ADDRESS): Delete.
	* mips-tdep.c (mips_elf_make_msymbol_special, mips_msymbol_size,
	mips_msymbol_is_special, mips_fix_call_dummy): New functions.
	(mips_gdbarch_init): Set elf_make_msymbol_special, pop_frame, 
	push_dummy_frame, fix_call_dummy, init_extra_frame_info, 
	push_return_address.
	(mips_register_raw_size, mips_eabi_use_struct_convention, 
	mips_n32n64_use_struct_convention, mips_o32_use_struct_convention,
	mips_o32_reg_struct_has_addr, mips_frame_saved_pc, mips_frame_chain,
	mips_init_extra_frame_info, mips_eabi_push_arguments, 
	mips_n32n64_push_arguments, mips_push_return_address,
	mips_push_dummy_frame, mips_pop_frame, mips_skip_prologue,
	mips_breakpoint_from_pc, mips_call_dummy_address): Make static.

2002-08-19  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_frame_num_args): New function.
	(mips_gdbarch_init): Set frame_chain, frameless_function_invocation,
	frame_saved_pc, frame_args_address, frame_locals_address, 
	frame_num_args, and frame_args_skip.
	* config/mips/tm-mips.h (FRAME_CHAIN, FRAMELESS_FUNCTION_INVOCATION,
	FRAME_SAVED_PC, FRAME_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS, 
	FRAME_NUM_ARGS, FRAME_ARGS_SKIP): Delete.
	* config/mips/tm-mipsv4.h (FRAME_CHAIN_VALID): Delete.

2002-08-20  Michael Snyder  <msnyder@redhat.com>

	* config/mips/tm-mips.h (STORE_STRUCT_RETURN): Delete.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Delete.
	* mips-tdep.c (mips_store_struct_return): New function.
	(mips_extract_struct_value_address): New function.
	(mips_gdbarch_init): Set store_struct_return and
	extract_struct_value_address.

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

	* dwarf2read.c (dwarf2_build_psymtabs): Check that
	dwarf_line_offset is nonzero before creating dwarf_line_buffer.
	(read_file_scope): Check that line_header is nonzero before
	decoding macro information.

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

	* i386-tdep.h (FP_REGNUM_P): Change such that we don't incorrectly
	flag the general-purpose registers as floating-point on targets
	that don't support the floating-point registers.

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

	* rs6000-tdep.c (altivec_register_p): Delete.
	(rs6000_do_altivec_registers): Delete.
	(rs6000_altivec_registers_info): Delete.
	(rs6000_do_registers_info): Delete.
	(_initialize_rs6000_tdep): Remove command 'info powerpc altivec'.
	(rs6000_gdbarch_init): Remove setting of do_registers_info.

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

	* infcmd.c (do_registers_info): Print vector registers in hex
	format only.
	(print_vector_info): Check that printing registers
	makes sense.
	(print_float_info): Ditto.

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

	* mips-tdep.c (mips_gdbarch_init): Update.
	(mips_o32_extract_return_value): Rewrite.
	(mips_o32_store_return_value): Rewrite.
	(mips_o32_xfer_return_value): New function.
	(mips_xfer_register): Tweak debug print message.  Allow for
	buf_offset when dumping the value transfered.

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

	* config/mips/tm-nbsd.h (MIPS_DEFAULT_ABI): Delete.
	* config/mips/tm-linux.h (MIPS_DEFAULT_ABI): Delete.
	* config/mips/tm-irix5.h (MIPS_DEFAULT_ABI): Delete.
	* config/mips/tm-irix6.h (MIPS_DEFAULT_ABI): Delete.
	* mips-tdep.c (mips_gdbarch_init) [MIPS_DEFAULT_ABI]: Delete code.

2002-08-14  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_frame_chain): Check for call-dummy frames.

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

	* rs6000-tdep.c (struct reg): Add field to indicate a pseudo
	register.
	(P): New macro to define a register as a pseudo register.
	(R, R4, R8, R16, FR32, R64, R0): Updated.
	(struct variant): Add new fields for number of pseudo registers
	and number of total registers.
	(tot_num_registers): New macro replacing....
	(num_registers): ...deleted macro.
	(num_registers): New function.
	(num_pseudo_registers): New function.
	(variants): Update all variants to intialize new fields correctly.
	Postpone initialization of number of pseudo regs and real regs.
	(init_variants): New function.
	(rs6000_gdbarch_init): Initialize variants.  Update calculation of
	registers offsets.

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

	* valops.c (search_struct_field): Change error message to treat
	return value of 0 from value_static_field as meaning that field is
	optimized out.
	(value_struct_elt_for_reference): Ditto.
	* values.c (value_static_field): Treat an unresolved location the
	same as a nonexistent symbol.  Fix PR gdb/635.
	* gnu-v2-abi.c (gnuv2_value_rtti_type): Eliminate test for being
	enclosed.  Fix PR gdb/574.
	* MAINTAINERS: Add self to Write After Approval list.

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

	* mips-tdep.c (mips_xfer_register): New function.
	(mips_n32n64_extract_return_value): Rewrite.
	(mips_gdbarch_init): For N32 and N64, set extract_return_value
	instead of deprecated_extract_return_value.

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

	* rs6000-tdep.c (TDEP): Delete macro.
	(branch_dest): Replace use of TDEP macro with its body.
	(rs6000_pop_frame): Ditto.
	(rs6000_push_arguments): Ditto.
	(rs6000_skip_trampoline_code): Ditto.
	(rs6000_frame_saved_pc): Ditto.
	(rs6000_frame_chain): Ditto.
	(rs6000_register_name): Ditto.
	(rs6000_register_byte): Ditto.
        (rs6000_register_raw_size): Ditto.
	(rs6000_register_virtual_type): Ditto.
	(rs6000_register_convertible): Ditto.
	(rs6000_convert_from_func_ptr_addr): Ditto.

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

	* config/mips/tm-linux.h (REALTIME_LO, REALTIME_HI): Define
	conditionally.
	(JB_PC, JB_ELEMENT_SIZE): Rename to MIPS_LINUX_JB_PC and
	MIPS_LINUX_JB_ELEMENT_SIZE.
	* mips-linux-tdep.c (supply_gregset, fill_gregset): Use alloca
	for MAX_REGISTER_RAW_SIZE arrays.
	(mips_linux_get_longjmp_target): Use MIPS_LINUX_JB_PC and
	MIPS_LINUX_JB_ELEMENT_SIZE.

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

	* i387-tdep.c (i387_print_float_info): Fix typo in comment.

2002-08-19  Aidan Skinner <aidan@velvet.net>

	* Makefile.in (SFILES): Add ada-exp.y ada-lang.c ada-typeprint.c
	ada-valprint.c ada-tasks.c.
	(YYFILES): Add ada-exp.y.
	(ada-exp.tab.c ada-lex.c ada-lang.o): New target.
	(ada-tasks.o ada-typeprint.o ada-valprint.o): New target.
	(ada-exp.tab.o): New target.
		
2002-08-18  Andrew Cagney  <ac131313@redhat.com>

	* regcache.c (regcache_xfer_part): New function.
	(regcache_raw_read_part): New function.
	(regcache_raw_write_part): New function.
	(regcache_cooked_read_part): New function.
	(regcache_cooked_write_part): New function.
	* regcache.h (regcache_raw_read_part): Declare.
	(regcache_raw_write_part): Declare.
	(regcache_cooked_read_part): Declare.
	(regcache_cooked_write_part): Declare.

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

	* remote.c (remote_open_1): Add async_p.
	(remote_async_open_1): Delete.
	(open_remote_target): Delete.
	(remote_open, extended_remote_open): Update calls to remote_open_1.
	(remote_async_open, extended_remote_async_open): Call
	remote_open_1 instead of remote_async_open_1.

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

	* blockframe.c: Fix a few coding standard violations.

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

	* config/i386/nm-i386sco5.h (START_INFERIOR_TRAPS_EXPECTED): Moved
	here from ...
	* config/i386/tm-i386sco5.h: ... here.  File removed.
	* config/i386/i386sco5.mt (TM_FILE): Set to tm-i386v4.h.

	* config/i386/nm-i386v.h (START_INFERIOR_TRAPS_EXPECTED): New define.
	* config/i386/i386aout.mt (TDEPFILES): Add i387-tdep.o
	(TM_FILE): Set to tm-i386.h.
	* config/i386/i386v.mt (TM_FILE): Set to tm-i386.h.
	* config/i386/tm-i386v.h: Remove file.
	* config/i386/tm-ptx.h [!SEQUENT_PTX4]: Include "i386/tm-i386.h"
	instead of "i386/tm-i386v.h".
	(START_INFERIOR_TRAPS_EXPECTED): Remove define.
	* config/i386/tm-symmetry: Include "i386/tm-i386.h" instead of
	"i386/tm-i386v.h".
	(START_INFERIOR_TRAPS_EXPECTED): Remove define.
	* config/i386/tm-vxworks.h: Include "i386/tm-i386.h" instead of
	"i386/tm-i386.h".

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

	* config/i386/nm-i386v.h: Add protection against
	multiple-inclusion.
	(i386_register_u_addr): Remove prototype.
	(register_u_addr): New prototype.
	(REGISTER_U_ADDR): Redefine accordingly.
	* i386v-nat.c: Improve several comments.
	(i386_register_u_addr): Change signature and rename to
	register_u_addr.  Use FP_REGNUM_P.  Rewrite slightly to get rid of
	ubase variable.

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

	* config/mips/tm-mips.h (STORE_RETURN_VALUE): Delete macro.
	(DEPRECATED_EXTRACT_RETURN_VALUE): Delete macro.
	* mips-tdep.c (mips_gdbarch_init): Set store_return_value and
	deprecated_extract_return_value.
	(mips_o32_push_arguments, mips_o64_push_arguments): Clone and
	rename mips_o32o64_push_arguments.
	(mips_gdbarch_init): Update.
	(mips_extract_return_value): Delete.
	(mips_o32_extract_return_value): Clone mips_extract_return_value.
	(mips_o64_extract_return_value): Clone mips_extract_return_value.
	(mips_eabi_extract_return_value): Clone mips_extract_return_value.
	(mips_n32n64_extract_return_value): Clone
	mips_extract_return_value.
	(mips_store_return_value): Delete.
	(mips_o32_store_return_value): Clone mips_store_return_value.
	(mips_o64_store_return_value): Clone mips_store_return_value.
	(mips_eabi_store_return_value): Clone mips_store_return_value.
	(mips_n32n64_store_return_value): Clone mips_store_return_value.

2002-08-18  Aidan Skinner <aidan@velvet.net>

	* ada-lang.c: Use gdb_string.h instead of <string.h>.
	* ada-typeprint.c: Use gdb_string.h instead of <string.h>.
		
2002-08-18  Aidan Skinner <aidan@velvet.net>

        * ada-lang.c: Run through gdb_indent.sh.
        * ada-lang.h: Run through gdb_indent.sh.
        * ada-tasks.c: Run through gdb_indent.sh.
        * ada-typeprint.c: Run through gdb_indent.sh.
        * ada-valprint.c: Run through gdb_indent.sh.

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

	* osabi.c (gdbarch_init_osabi): Don't complain about an unknown
	ABI.

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

	* i386b-nat.c [FETCH_INFERIOR_REGISTERS]: Remove dead code.

	* config/i386/nm-i386bsd.h (FLOAT_INFO): Remove redundant #undef.
	* i386b-nat.c [FLOAT_INFO]: Remove dead code.

	* i386-tdep.c (i386_do_pop_frame, i386_store_return_value): Call
	write_register_gen instead of write_register_bytes.

	* NEWS: Mention that the i[3456]-*mach3*, i[3456]-*-mach* and
	i[3456]-*-osf1mk* configurations have been made obsolete.
	* configure.host: Make i[3456]86-*-mach3*, i[3456]86-*mach* and
	i[3456]86-*-osf1mk* hosts obsolete.
	* confighure.tgt: Make i[3456]86-*-mach3*, i[3456]86-*-osf1mk*
	targets obsolete.
	* config/i386/i386mach.mh, config/i386/nm-i386mach.h,
	config/i386/xm-i386mach.h, config/i386/i386m3.mh,
	config/i386/i386m3.mt, config/i386/nm-m3.h,
	config/i386/tm-i386m3.h, config/i386/xm-i386m3.h,
	config/i386/i386mk.mh, config/i386/i386mk.mt,
	config/i386/tm-i386mk.h, config/i386/xm-i386mk.h: Make files
	obsolete.
	* i386mach-nat.c, i386m3-nat.c: Make files obsolete.
	* Makefile.in (ALLDEPFILES): Remove i386mach.c i386m3-nat.c
	(i386mach-nat.o, i386m3-nat.o):Make targets obsolete.

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

	* config/pa/tm-hppa.h (hppa_store_return_value): Declare.
	(hppa_value_returned_from_stack): Declare.
	(hppa_extract_return_value): Declare.
	* config/pa/hppa.mt: New file.
	* configure.tgt: Recognize hppa*-*-*.
	* MAINTAINERS: Change HPPA target to hppa-elf.  Still broken.

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

	* i386-sol2-tdep.c (_initialize_i386_sol2_tdep): Fix typo in
	comment.

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

	* top.c (gdb_rl_operate_and_get_next): Make sure
	operate-and-get-next functions correctly even when the history
	list is completely filled.

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

	* MAINTAINERS (Target Instruction Set Architectures): Rename
	Target/Architectures.  Replace vax-dec-vms5.5 with vax-netbsd.
	Replace s390-linux with s390-linux-gnu.  Remove i386-aout,
	mcore-pe, mips64-elf, sparc64-elf.  Remove i586-pc-msdosdjgpp,
	already listed under Host/Native.

	* configure.tgt: Combine i[3456]86-*-coff*, i[3456]86-*-elf*,
	i[3456]86-*-pe*, and i[3456]86-*-aout* into i[3456]86-*-*.  Add
	mips*-*-*.

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

	* config/ia64/ia64.mt: New file.
	* config/alpha/alpha.mt: New file.
	* MAINTAINERS: Change the alpha target to alpha-elf and IA-64 to
	ia64-linux-gnu.  Mention that ia64-elf is broken.
	* configure.tgt: Add alpha*-*-* and ia64*-*-* patterns.

2002-08-17  Mark Kettenis  <kettenis@elgar.kettenis.dyndns.org>

	* i386-tdep.c (i386_svr4_init_abi, i386_nw_init_abi): Use
	generic_func_frame_valid instead of func_frame_valid.

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

	* alpha-osf1-tdep.c (alpha_osf1_init_abi): Unfortunately,
	procfs appears to be broken when debugging on multi-processor
	machines. So enable software single stepping in order to avoid
	using the procfs interface to do next/step operations, using
	internal breakpoints instead.

	* infrun.c (handle_inferior_event): Readjust the stop_pc by
	DECR_PC_AFTER_BREAK when hitting a single step breakpoint, to
	make this pc address equal to the value it would have if the
	system stepping capability was used. Also set a new flag used
	to ensure that we don't readjust the PC one more time later.

	* breakpoint.c (bpstat_stop_status): Do not adjust the PC
	address by DECR_PC_AFTER_BREAK when software single step is
	in use for this architecture, as this has already been taken
	care of in handle_inferior_event().

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

	* infrun.c (handle_inferior_event): Minor reformatting, to make
	a rather long condition expression easier to read.

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

	* Makefile.in (gdbtk.o): Move to end of file.
	(gdbtk-bp.o, gdbtk-cmds.o): Ditto.
	(gdbtk-hooks.o, gdbtk-register.o): Ditto.
	(gdbtk-stack.o, gdbtk-varobj.o): Ditto.
	(gdbtk-wrapper.o, gdbres.o): Ditto.

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

	* Makefile.in (copying.o): Separate out compile rule.
	(hpux-thread.o, procfs.o, signals.o): Ditto.
	(v850ice.o, z8k-tdep.o): Ditto.
	(tui-file.o): Move to TUI section.
	(xdr_ptrace.o, xdr_rdb.o, xdr_ld.o): Move to separate section.
	(nindy.o, Onindy.o, ttyflush.o): Move to separate section.

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

	* i386-tdep.c (i386_pe_skip_trampoline_code): renamed from
	skip_trampoline_code, for better namespace-proofing.   

	* i386-tdep.h (i386_pe_skip_trampoline_code): Add declaration.

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

	* config/i386/tm-cygwin.h: Remove some "#if 0"'ed macros.

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

	* infrun.c (handle_inferior_event): When receiving a SIGTRAP
	signal, check whether we hit a breakpoint before checking for a
	single step breakpoint. Otherwise, GDB fails to notice that a
	breakpoint has been hit when stepping onto a breakpoint.

2002-08-16  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh (clear_gdb_event_hooks): New function.
	* gdb-events.c: Regenerate.
	* gdb-events.h: Regenerate.

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

	* breakpoint.c (bpstat_stop_status): Rename not_a_breakpoint to
	not_a_sw_breakpoint.
	* breakpoint.h (bpstat_stop_status): Add parameter names.

2002-08-16  Grace Sainsbury  <graces@redhat.com>

	* remote.c (remote_insert_hw_breakpoint)
	(remote_remove_hw_breakpoint): Fix calculation of length field
	for Z-packet.

2002-08-15  Michael Snyder  <msnyder@redhat.com>

	* irix5-nat.c (supply_gregset): Allocate plenty-big buffer
	(32 bytes) instead of using MAX_REGISTER_RAW_SIZE.
	(supply_fpregset): Ditto.
	
	* config/mips/tm-mips.h (REGISTER_CONVERT_TO_VIRTUAL, 
	REGISTER_CONVERT_TO_RAW, REGISTER_CONVERTIBLE, 
	MAX_REGISTER_RAW_SIZE, MAX_REGISTER_VIRTUAL_SIZE): Delete.
	(TARGET_READ_SP): Delete.
	(DO_REGISTERS_INFO): Delete.
	(FUNCTION_START_OFFSET, IN_SIGTRAMP, REGISTER_VIRTUAL_SIZE):
	Delete.
	(REGISTER_CONVERT_FROM_TYPE, REGISTER_CONVERT_TO_TYPE): Convert
	from macros to functions.

	* mips-tdep.c (mips_gdbarch_init): Set the above in the gdbarch.
	(mips_register_convertible, mips_register_convert_to_virtual,
	mips_register_convert_to_raw): Make static.
	(mips_read_sp): New function.
	(mips_gdbarch_init): Set gdbarch read_sp to mips_read_sp.
	(mips_do_registers_info): Make static.
	(mips_gdbarch_init): Insert mips_do_registers_info into gdbarch.
	(in_sigtramp): Make static, rename to mips_pc_in_sigtramp.
	(mips_register_convert_from_type, mips_register_convert_to_type):
	New functions.
	(mips_gdbarch_init): Set up function_start_offset, 
	register_virtual_size, pc_in_sigtramp.

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

	* infcmd.c (vector_info): New function.
	(_initialize_infcmd): Add command "info vector".
	(print_vector_info): New function.

	* gdbarch.sh (PRINT_VECTOR_INFO): New method
	* gdbarch.h, gdbarch.c: Regenerate.

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

	* infcmd.c (do_registers_info): Rename parameter ``fpregs'' to
	``print_all''.  Only print vector registers when ``print_all''.

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

	* i387-tdep.h (i387_print_float_info): Add `args' parameter.
	* i387-tdep.c (i387_print_float_info): Add `args' parameter.

	* gdbarch.sh (PRINT_FLOAT_INFO): Change to a predicate method.
	Add `args' parameter.
	* gdbarch.h, gdbarch.c: Regenerate.
	
	* arm-tdep.c (arm_print_float_info): Add the parameter `args'.
	
	* infcmd.c (float_info): Call print_float_info.
	(print_float_info): New function.  By default, print the
	floating-point registers.

	* arch-utils.h (default_print_float_info): Delete declaration.
	* arch-utils.c (default_print_float_info): Delete function.
	
2002-08-16  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/nm-i386v.h (FLOAT_INFO): Remove already commented
	out define.

	* i387-tdep.c (i387_print_float_info): Add comment about ignoring
	FRAME.

	* NEWS: Mention that the i[3456]-*-aix target has been made obsolete.
	* configure.host: Make i[3456]86-*-aix host obsolete.
	* configure.tgt: Make i[3456]86-*-aix target obsolete.
	* config/i386/i386aix.mh, config/i386/i386aix.mt,
	config/i386/nm-i386aix.h, condig/i386/tm-i386aix.h,
	config/i386/xm-i386aix.h: Make files obsolete.
	* i386aix-nat.c: Make file obsolete.
	* Makefile.in (ALLDEPFILES): Remove i386aix-nat.c.
	(i386aix-nat.o): Make target obsolete.

	* config/i386/nm-gnu.h: Removed.
	* config/i386/nm-i386gnu.h: New file.
	(THREAD_STATE_FLAVOR, THREAD_STATE_SIZE,
	THREAD_STATE_SET_TRACED, THREAD_STATE_CLEAR_STATE, ATTACH_DETACH):
	Moved here from ...
	* config/i386/tm-i386gnu.h: ... here.  Removed.
	* config/i386/xm-i386gnu.h: Removed.
	* config/i386/i386gnu.mh (XM_FILE): Set to xm-i386.h.
	(NAT_FILE): Set to nm-i386gnu.h.
	* config/i386/i386gnu.mt (TDEPFILES): Add i386gnu-tdep.o.
	* i386-tdep.c: New file.
	* Makefile.in (ALLDEPFILES): Add i386gnu-nat.c and i386gnu-tdep.c.
	(i386gnu-tdep.o): Specify dependencies.

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

	* config/i386/tm-i386sco5.h: Include "i386/tm-i386v4.h" instead of
	"i386/tm-i386.h", "i386/tm-i386v.h" and "config/tm-sysv.h".
	Adjust a few comments to reflect reality a bit closer.
	(KERNEL_U_SIZE, TARGET_HAS_HARDWARE_WATCHPOINTS,
	TARGET_CAN_USE_HARDWARE_WATCHPOINT, HAVE_CONTINUEABLE_WATCHPOINT,
	HAVE_STEPPABLE_WATCHPOINT, STOPPED_BY_WATCHPOINT,
	target_insert_watchpoint, target_remove_watchpoint):
	Move defines to ...
	* config/i386/nm-i386sco5.h: ... here.
	(kernel_u_size): Add prototype.  Improve a few comments and add
	protection against multiple inclusion.
	
	* config/i386/nm-i386sco.h (FLOAT_INFO): Remove already commented
	out define.

	* uw-thread.c (SP_ARG0): Define if not already defined.
	* config/i386/tm-i386.h (SO_ARG0): Remove define.

	* config/i386/tm-i386v4.h (HAVE_I387_REGS): Remove define.

	* config/i386/tm-i386.h: Don't include "regcache.h".

	* i387-tdep.h (i387_print_float_info): New prototype.
	* i387-tdep.c (print_i387_value, print_i387_ext,
	print_i387_status_word, print_i387_control_word): Add `struct
	ui_file *' argument and use it for output.
	(i387_print_float_info): Renamed from i387_float_info.  Add
	`struct gdbarch *' and `struct ui_file *' arguments and use the
	latter for output.
	* i386-tdep.c: Include "i387-tdep.h".
	(i386_gdbarch_init): Set print_float_info.
	* config/i386/tm-i386.h (i387_float_info): Remove prototype.
	(FLOAT_INFO): Remove define.

2002-08-13  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_push_arguments): Rename to
	mips_eabi_push_arguments, and tune for EABI.
	(MIPS_REGS_HAVE_HOME_P): Delete.
	(struct gdbarch_tdep): Remove mips_regs_have_home_p field.
	(mips_gdbarch_init): Set gdbarch push_arguments for eabi.
	Delete references to mips_regs_have_home_p.

2002-08-14  Keith Seitz  <keiths@redhat.com>

	* Makefile.in (install-gdbtk): Create insight plugin directory.
	Install plugins.tcl file.

2002-08-14  Keith Seitz  <keiths@redhat.com>

	* configure.in: Move SUBDIRS to near top of the file so that
	--enable options may add things to it.
	If gdbtk is enabled, add gdbtk directory to SUBDIRS and configdirs.
	* configure: Regenerate.

2002-08-13  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_o32o64_push_arguments):  New function, 
	cloned from mips_push_arguments, tuned for o32/o64 ABI.
	(mips_gdbarch_init): Set gdbarch_push_arguments to new func.

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

	* vax-tdep.c (vax_get_saved_register): Delete function.
	(vax_gdbarch_init): Update.
	* ns32k-tdep.c (ns32k_get_saved_register): Delete function.
	(ns32k_gdbarch_init): Update.
	* alpha-tdep.c (alpha_get_saved_register): Delete function.
	(alpha_gdbarch_init): Update.

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

	* regcache.c (init_regcache_descr): Overallocate the
	raw_register_valid_p array including space for NUM_PSEUDO_REGS.
	(registers_changed): Replace NUM_REGS+NUM_PSEUDO_REGS with
	nr_raw_registers.
	(set_register_cached): Add range checking assertions.  Use
	current_regcache.

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

	* i386-tdep.c (i386_stab_reg_to_regnum): Return correct register
	numbers for MMX registers.

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

	* i386-tdep.c (i386_gdbarch_init): Use
	generic_unwind_get_saved_register.

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

	* procfs.c (procfs_can_use_hw_breakpoint): New function.
	(init_procfs_ops): Define ``to_can_use_hw_breakpoint'' for procfs
	target vector.
	* config/mips/nm-irix5.h (TARGET_CAN_USE_HARDWARE_WATCHPOINT):
	Delete.  Add comment regarding this now-deleted target method.

2002-08-13  Stephane Carrez  <stcarrez@nerim.fr>

	* m68hc11-tdep.c (M68HC12_NUM_PSEUDO_REGS): New define.
	(M68HC12_HARD_PC_REGNUM): Define specific PC for 68HC12 (pseudo reg).
	(m68hc11_pseudo_register_read): Compute the 68HC12 PC using the
	real PC and the page number (if it's within the memory bank window).
	(m68hc11_pseudo_register_write): Likewise when saving.
	(m68hc11_register_name): Name the virtual pc 'pc' and the real one ppc.
	(m68hc11_register_virtual_type): Return uint32 for virtual pc.
	(m68hc11_register_raw_size): And use 32-bit for it.
	(m68hc11_gdbarch_init): Use 32-bit address for 68HC12 if the
	16K memory bank is used by the prog; also use the virtual pc.

2002-08-13  Stephane Carrez  <stcarrez@nerim.fr>

	* m68hc11-tdep.c (m68hc11_elf_make_msymbol_special): New function.
	(m68hc11_gdbarch_init): Install it in gdbarch.
	(MSYMBOL_SET_RTC, MSYMBOL_SET_RTI): New to set symbol specific flags.
	(MSYMBOL_IS_RTC, MSYMBOL_IS_RTI): New to test these flags.
	(MSYMBOL_SIZE): New for documentation.
	(insn_return_kind): Enum to specify how a function returns.
	(frame_extra_info): Cleanup and record the return mode.
	(gdbarch_tdep, USE_PAGE_REGISTER): New to control the use of page 
	register in address computation.
	(m68hc11_get_return_insn): New to obtain the return instruction used
	by the function.
	(m68hc11_frame_init_saved_regs): Take into account the return
	instruction used by the function for far and interrupt functions.
	(m68hc11_init_extra_frame_info): Take into account page register.
	(m68hc11_frame_args_address): Adjust according to the return mode.
	(show_regs): Print page register only when it's used.

2002-08-13  Stephane Carrez  <stcarrez@nerim.fr>

	* m68hc11-tdep.c (HARD_PAGE_REGNUM): Define for 68HC12 page register.
	(M68HC11_LAST_HARD_REG, m68hc11_register_names): Update.
	(m68hc11_register_virtual_type): Return a 8-bit type for 8-bit
	registers.
	(m68hc11_register_raw_size): Likewise.

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

	* i386-tdep.c (i386_register_name): Handle mmx registers.
	(mmx_regnum_p): New function.
	(i386_mmx_names): New array.
	(mmx_num_regs): New variable.
	(i386_pseudo_register_read): New function.
	(i386_pseudo_register_write): New function.
	(mmx_regnum_to_fp_regnum): New function. Code from Fernando Nasser.

	* regcache.c (regcache_raw_read_unsigned): New function.
	(regcache_raw_read_signed): New function.
	* regcache.h (regcache_raw_read_unsigned): Declare.
	(regcache_raw_read_signed): Declare.

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

	* regcache.c (regcache_raw_read_as_address): Delete function.
	(regcache_cooked_read_signed): New function.
	(regcache_cooked_read_unsigned): New function.
	* regcache.h (regcache_cooked_read_signed): Declare.
	(regcache_cooked_read_unsigned): Declare.
	(regcache_raw_read_as_address): Delete declaration.

	* blockframe.c (generic_read_register_dummy): Use
	regcache_cooked_read_unsigned.
	* i386-tdep.c (i386_extract_struct_value_address): Use
	regcache_cooked_read_unsigned.

2002-08-13  Stephane Carrez  <stcarrez@nerim.fr>

	* m68hc11-tdep.c (m68hc11_gdbarch_init): Set int, double and long
	double sizes according to ELF ABI flags.
	(gdbarch_tdep): Record elf_flags.

2002-08-13  Stephane Carrez  <stcarrez@nerim.fr>

	* m68hc11-tdep.c (M6812_OP_PSHX, M6812_OP_PSHY): New defines.
	(m6812_prolog): They can appear in 68HC12 function prologue.
	(m68hc11_frame_chain): Cleanup.

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

	* i386-tdep.h (i386_register_byte, i386_register_raw_size): Delete
	declarations.
	* i386-linux-tdep.c (i386_linux_register_byte): Delete function.
	(i386_linux_register_raw_size): Delete function.
	(i386_linux_init_abi): Update.
	* i386-tdep.c (i386_register_raw_size): Delete function.
	(i386_register_byte): Delete function.
	(i386_gdbarch_init): Update.
	(i386_register_size): Delete array.
	(i386_register_offset): Delete array.

	* config/i386/tm-symmetry.h (REGISTER_BYTE): Delete macro.
	(REGISTER_RAW_SIZE): Delete macro.
	* config/i386/tm-ptx.h (REGISTER_RAW_SIZE): Delete macro.
	(REGISTER_BYTE): Delete macro.

2002-08-11  Aidan Skinner <aidan@velvet.net>

	* ada-lang.c (ada_lookup_partial_symbol)
	(to_fixed_variant_branch_type) (find_line_in_linetable): Fix
	prototype names so that grep ^func works properly.

	* ada-lang.c (ada_array_element_type)
	(ada_lookup_partial_symbol): Fix typos in parameter list.

	* ada-valprint.c (val_print_packed_array_elements) (ada_val_print_1):
	Fix prototype names so that grep ^func works properly.
 	
2002-08-10  Andrew Cagney  <cagney@redhat.com>
	    Elena Zannoni  <ezannoni@redhat.com>
	    Martin M. Hunt  <hunt@redhat.com>

	* gdbtypes.c (build_builtin_type_vec128): Set the vector bit.
	(build_builtin_type_vec128i): Set the vector bit.
	* gdbtypes.h (builtin_type_vec64, builtin_type_vec64i): Declare.
	* gdbtypes.c (builtin_type_vec64, builtin_type_vec64i): Define.
	(build_builtin_type_vec64): New function.
	(build_builtin_type_vec64i): New function.
	(build_gdbtypes): Initialize builtin_type_vec64 and
	builtin_type_vec64i.

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

	* regcache.c (regcache_dump): Compare the register offset
	with REGISTER_BYTE.
	* arch-utils.c (generic_register_byte): New function.
	* arch-utils.h (generic_register_byte): Declare.
	* gdbarch.sh (REGISTER_BYTE): Default to generic_register_byte.
	* gdbarch.h, gdbarch.c: Regenerate.

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

	* regcache.c: Include "gdbcmd.h"
	(_initialize_regcache): Add commands "maintenance print
	registers", "maintenance print raw-registers" and "maintenance
	print cooked-registers".
	(enum regcache_dump_what): Define.
	(dump_endian_bytes): New function.
	(regcache_dump): New function.
	(regcache_print): New function.
	(maintenance_print_registers): New function.
	(maintenance_print_raw_registers): New function.
	(maintenance_print_cooked_registers): New function.
	* Makefile.in (regcache.o): Update dependencies.

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

	* mips-tdep.c (ROUND_DOWN, ROUND_UP): Move to global scope.
	(mips_push_arguments): Correct some comments.  Use paddr_nz
	for printing addresses in debug output.  Replace static
	allocation using MAX_REGISTER_RAW_SIZE with alloca.
	(mips_n32n64_push_arguments): New function, cloned from
	mips_push_arguments and tuned for the n32/n64 ABI.
	(mips_push_register): Buffer needs dynamic allocation.
	(mips_print_register): Ditto.
	(do_gp_register_row): Ditto.
	(mips_store_return_value): Ditto.
	(mips_gdbarch_init): Set gdbarch_push_arguments per ABI.

2002-08-09  Don Howard  <dhoward@redhat.com>

	* memattr.c (mem_info_command): Print special case of upper bound
	as max CORE_ADDR + 1.

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

	* mips-tdep.c (mips_n32n64_use_struct_convention): N32 only 
	returns structs by ref if they're too big to fit in two registers.

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

	* mips-tdep.c (mips_init_extra_frame_info): Initialize SP_REGNUM's
	saved regs value.
	(read_next_frame_reg): Call FRAME_INIT_SAVED_REGS instead of
	mips_find_saved_regs().
	(mips_pop_frame): Likewise.

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

	* blockframe.c (frame_saved_regs_register_unwind): Revise
	PC_IN_CALL_DUMMY assertion to only apply when generic dummy
	frames are in use.

2002-08-09  Grace Sainsbury  <graces@redhat.com>
        
	* remote.c: (remote_wait, remote_async_wait): Add check for awatch
        T-packets; the 'a' is not taken as a register number.
	(remote_check_watch_resources, remote_stopped_by_watchpoint)
        (remote_stopped_data_address): New functions; add to target
        vector.
        (remote_insert_hw_breakpoint, remote_remove_hw_breakpoint): Change
        prototypes to match other implementations of this
        function. replace integer argument with pointer -- the length
        field in the Z-packet is the length of what is pointed to or 1 if
        pointer is null. Add to target vector.
        (remote_insert_watchpoint, remote_remove_watchpoint): Add to
        target vector.

        From Mark Salter:
        * remote.c (remote_wait): Add support to extract optional
        watchpoint information from T-packet. Ignore unrecognized
        optional info in T-packet.
        (remote_async_wait): Ditto.

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

	* cli/cli-dump.c: Change fopen modes to use binary open modes
	as defined in include/fopen-bin.h throughout.

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

	* mips-tdep.c: Minor whitespace and indentation clean-ups.

2002-08-08  Kevin Buettner  <kevinb@redhat.com>

	* doublest.c (store_floating): Avoid floatformat_from_doublest()
	assertion failure by returning early after a warning.

2002-08-08  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_find_saved_regs): Make static.
	(mips_frame_init_saved_regs): New function.
	(mips_gdbarch_init): Setup FRAME_INIT_SAVED_REGS method.
	* config/mips/tm-mips.h (FRAME_INIT_SAVED_REGS): Delete macro.
	(mips_find_saved_regs): Delete declaration.

2002-08-08  Grace Sainsbury  <graces@redhat.com>

	* remote.c (remote_wait, remote_async_wait): Change
        thread_num from int to ULONGEST.
	(unpack_varlen_hex): Change result parameter from
	int * to ULONGEST *.

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

	* configure.tgt: Replace powerpc-*-sysv*, powerpc-*-elf*,
	powerpcle-*-eabi*, powerpcle-*-sysv* and powerpcle-*-elf* with
	powerpc*-*-*.
	* MAINTAINERS: Remove redundant rs6000-ibm-aix4.1 target.

2002-08-08  Andrew Cagney  <cagney@redhat.com>

	* gcore.c (override_derive_stack_segment): Delete variable.
	(preempt_derive_stack_segment): Delete function.
	(derive_stack_segment): Delete function.
	(default_derive_stack_segment): Renamed to derive_stack_segment.
	(override_derive_heap_segment): Delete variable.
	(preempt_derive_heap_segment): Delete function.
	(derive_heap_segment): Delete function.
	(default_derive_heap_segment): Rename to derive_heap_segment.

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

	* config/mips/tm-mips.h: Remove #define USE_STRUCT_CONVENTION.
	* mips-tdep.c (mips_EABI_use_struct_convention, 
	mips_OABI_use_struct_convention, mips_NABI_use_struct_convention):
	New functions.  (mips_use_struct_convention): Delete.
	(mips_gdbarch_init): set use_gdbarch_convention.

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

	*  mips-tdep.c: gdbarch-ify reg_struct_has_addr.
	(mips_eabi_reg_struct_has_addr, mips_n32n64_reg_struct_has_addr, 
	mips_o32_reg_struct_has_addr): New functions.
	(mips_gdbarch_init): Set gdbarch reg_struct_has_addr.

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

	* regcache.c (pseudo_register): Delete function.
	(fetch_register): Delete function.
	(store_register): Delete function.
	(regcache_raw_read, legacy_read_register_gen): Use
	target_fetch_registers instead of fetch_register.
	(legacy_write_register_gen, regcache_raw_write): Use
	target_store_register instead of store_register.
	(write_register_bytes): Ditto.

	* gdbarch.sh (FETCH_PSEUDO_REGISTER): Delete.
	(STORE_PSEUDO_REGISTER): Delete.
	* gdbarch.h, gdbarch.c: Regenerate.

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

	* cli/cli-dump.c (add_dump_command): Explicitely use "b" flag to
	write dump file binary.

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

	*  mips-tdep.c (mips_find_saved_regs): Adjust stack according
	to MIPS_SAVED_REGSIZE, not GDB_TARGET_IS_MIPS64.  Enhance comment.
	(mips_gdbarch_init): Set N32 target to be mips64.

2002-08-06  Kevin Buettner  <kevinb@redhat.com>

	* frame.c (find_saved_register): Break out of loop once saved
	register address is found.  Don't mention sparc in loop comment
	anymore.

2002-08-06  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_gdbarch_init): For the N32 ABI, set
	mips_default_saved_regsize to 8.

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

	* gcore.c: Do not include <sys/procfs.h>.
	* Makefile.in (gcore.o): Update dependencies.

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

	* configure.tgt: Make arc-*-* obsolete.
	* NEWS: Mention that arc-*-* has been identifed as obsolete.
	* MAINTAINERS: Make arc-elf obsolete.
	* arc-tdep.c: Make file obsolete.
	* config/arc/arc.mt: Ditto.
	* config/arc/tm-arc.h: Ditto.

2002-08-05  Theodore A. Roth  <troth@verinet.com>

	* avr-tdep.c (avr_skip_prologue): Fix to return the correct pc.

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

	* mcore-tdep.c (mcore_gdbarch_init): Use
	generic_unwind_get_saved_register instead of
	generic_get_saved_register.
	* v850-tdep.c (v850_gdbarch_init): Ditto.
	* frv-tdep.c (frv_gdbarch_init): Ditto.
	* mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
	* s390-tdep.c (s390_gdbarch_init): Ditto.
	* d10v-tdep.c (d10v_gdbarch_init): Ditto.
	* config/mn10200/tm-mn10200.h (GET_SAVED_REGISTER): Ditto.
	* config/h8300/tm-h8300.h (GET_SAVED_REGISTER): Ditto.

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

	* objfiles.h: Add missing #include "symfile.h"

	* Makefile.in (objfiles_h): Add dependency on symfile.h and dependents.

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

	From 2002-08-01 david carlton <carlton@math.stanford.edu>:
	* hpread.c (hpread_read_struct_type): Deleted superfluous setting
	of FIELD_BITSIZE.

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

	* NEWS: Cleanup and nitpick.

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

	* NEWS: Cleanup.  Use *-linux*-gnu*.  Only use `*' for headings.

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

	* Makefile.in (gdbtk-bp.o): Update dependencies.
	(gdbtk-register.o): Ditto.
	(gdbtk-varobj.o): Ditto.

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

	* m68hc11-tdep.c (m68hc11_pseudo_register_read): Replace
	m68hc11_fetch_pseudo_register.
	(m68hc11_pseudo_register_write): Replace
	m68hc11_store_pseudo_register.
	(m68hc11_gdbarch_init): Update.

Fri Aug  2 15:53:50 2002  Andrew Cagney  <cagney@redhat.com>

	* gdbarch.sh: Include "gdb_string.h".
	* gdbarch.c: Regenerate.

	* regcache.c: Include "gdb_string.h".
	* ax-general.c: Ditto.
	* varobj.c: Ditto.
	* std-regs.c: Ditto.
	* fbsd-proc.c: Ditto.
	* thread.c: Ditto.

	* Makefile.in (regcache.o): Update dependencies.
	(thread.o, gdbarch.o): Ditto.
	(ax-general.o, gdbarch.o): Ditto.
	(varobj.o, std-regs.o): Ditto.
	(fbsd-proc.o): Specify dependencies.

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

	* regcache.c (regcache_cooked_read): Rename rawnum parameter to
	regnum.
	(regcache_cooked_write): Ditto.

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

	* regcache.c (regcache_cooked_read): New function.
	(regcache_cooked_write): New function.
	(read_register_gen): Rewrite using regcache_cooked_read.
	(write_register_gen): Rewrite using regcache_cooked_write.

	* regcache.h (regcache_cooked_read, regcache_cooked_write):
	Declare.

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

	* gdbarch.sh (pseudo_register_read, pseudo_register_write):
	Replace the architecture methods register_read and register_write.
	* gdbarch.h, gdbarch.c: Regenerate.
	* regcache.c (init_regcache_descr): Update.
	(read_register_gen): Update.
	(write_register_gen): Update.
	(supply_register): Update comment.

	* sh-tdep.c (sh_gdbarch_init): Update.
	(sh_pseudo_register_read, sh64_pseudo_register_read): Add
	`regcache' and `gdbarch' parameters.  Make `buffer' a void
	pointer.  Update code.
	(sh_pseudo_register_write, sh64_pseudo_register_write): Add
	`regcache' and `gdbarch' parameters.  Make `buffer' a constant
	void pointer.  Update code.
	(sh64_register_write): Delete.
	(sh4_register_read): Delete.
	(sh64_register_read): Delete.
	(sh4_register_write): Delete.
	(sh_sh4_register_convert_to_raw): Make `from' parameter a constant
	void pointer, `to' parameter a void pointer.
	(sh_sh64_register_convert_to_raw): Ditto.

2002-08-01  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_register_virtual_type): Use architecture
	invariant return values.

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

	* linux-proc.c: Include "gdb_string.h".
	* Makefile.in (linux-proc.o): Update dependency list.

2002-08-01  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_gdbarch_init): Add comments.  Fix typo in
	comment.

2002-08-01  Grace Sainsbury  <graces@redhat.com>

	* target.h: Add to_insert_hw_breakpoint, to_remove_hw_breakpoint,
	to_insert_watchpoint, to_remove_watchpoint,
	to_stopped_by_watchpoint, to_stopped_data_address,
	to_region_size_ok_for_hw_watchpoint, to_can_use_hw_breakpoint to
	target vecctor. Define their corresponding macros so they call
	them.
	
	* target.c: Add default and debug versions of for
	to_insert_hw_breakpoint, to_remove_hw_breakpoint,
	to_insert_watchpoint, to_remove_watchpoint,
	to_stopped_by_watchpoint, to_stopped_data_address,
	to_region_size_ok_for_hw_watchpoint, to_can_use_hw_breakpoint.

2002-08-01  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_register_virtual_type): New function.
	(mips_gdbarch_init): Register mips_register_virtual_type()
	with gdbarch machinery.
	* config/mips/tm-irix6.h (mips/tm-bigmips64.h): Include
	this file instead of tm-bigmips.h.
	(MIPS_REGSIZE): Delete this macro.
	(REGISTER_VIRTUAL_TYPE): Delete macro.  Undef macro so that
	multiarch version in mips-tdep.c will be found.

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

	* NEWS: Menion that CHILL has been made obsolete.

	* gdbtypes.c (chill_varying_type): Make chill references obsolete.
	* stabsread.c (read_range_type): Ditto.
	* gdbtypes.h: Ditto.
	* language.c (binop_type_check): Ditto.
	(binop_result_type): Ditto.
	(integral_type): Ditto.
	(character_type): Ditto.
	(string_type): Ditto.
	(boolean_type): Ditto.
	(structured_type): Ditto.
	(lang_bool_type): Ditto.
	(binop_type_check): Ditto.
	* language.h (_LANG_chill): Ditto.
	* dwarfread.c (set_cu_language): Ditto.
	* dwarfread.c (CHILL_PRODUCER): Ditto.
	* dwarfread.c (handle_producer): Ditto.
	* expression.h (enum exp_opcode): Ditto.
	* eval.c: Ditto for comments.
	* typeprint.c (typedef_print) [_LANG_chill]: Ditto.
	* expprint.c (print_subexp): Ditto.
	(print_subexp): Ditto.
	* valops.c (value_cast): Ditto.
	(search_struct_field): Ditto.
	* value.h (COERCE_VARYING_ARRAY): Ditto.
	* symfile.c (init_filename_language_table): Ditto.
	(add_psymbol_with_dem_name_to_list): Ditto.
	* valarith.c (value_binop): Ditto.
	(value_neg): Ditto.
	* valops.c (value_slice): Ditto.
	* symtab.h (union language_specific): Ditto.
	(SYMBOL_INIT_LANGUAGE_SPECIFIC): Ditto.
	(SYMBOL_DEMANGLED_NAME): Ditto.
	(SYMBOL_CHILL_DEMANGLED_NAME): Ditto.
	* defs.h (enum language): Ditto.
	* symtab.c (got_symtab): Ditto.
	* utils.c (fprintf_symbol_filtered): Ditto.

	* ch-typeprint.c: Make file obsolete.
	* ch-valprint.c: Make file obsolete.
	* ch-lang.h: Make file obsolete.
	* ch-exp.c: Make file obsolete.
	* ch-lang.c: Make file obsolete.

	* Makefile.in (FLAGS_TO_PASS): Do not pass CHILL or CHILLFLAGS or
	CHILL_LIB.
	(TARGET_FLAGS_TO_PASS): Ditto.
	(CHILLFLAGS): Obsolete.
	(CHILL): Obsolete.
	(CHILL_FOR_TARGET): Obsolete.
	(CHILL_LIB): Obsolete.
	(SFILES): Remove ch-exp.c, ch-lang.c, ch-typeprint.c and
	ch-valprint.c.
	(HFILES_NO_SRCDIR): Remove ch-lang.h.
	(COMMON_OBS): Remove ch-valprint.o, ch-typeprint.o, ch-exp.o and
	ch-lang.o.
	(ch-exp.o, ch-lang.o, ch-typeprint.o, ch-valprint.o): Delete
	targets.

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

	* dwarf2read.c (set_cu_language): Add handler for LANG_Ada95.
	This does not change anything at the moment, but will be helpful
	later when full Ada support is integrated.

2002-07-31  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (_initialize_mips_tdep): Add "n64" to "set mips abi"
	help message.

2002-07-31  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_push_arguments): Fetch gdbarch_tdep struct
	and save it in a local variable.  Use variable in later test.

2002-07-31  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_find_abi_section): Add N64 ABI recognition
	test.  (Thanks to Daniel Jacobowitz.)
	
2002-07-31  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (enum mips_abi): Add MIPS_ABI_N64.
	(mips_abi_strings): Add "n64".
	(mips_gdbarch_init): Add test for n64 abi.  Add MIPS_ABI_N64 case.

2002-07-31  Kevin Buettner  <kevinb@redhat.com>

	* config/mips/tm-irix6.h (MIPS_REGSIZE): Define to be 8.
	(REGISTER_VIRTUAL_TYPE): Some registers are now 64 bits wide.

2002-07-31  Kevin Buettner  <kevinb@redhat.com>

	* utils.c (host_pointer_to_address, address_to_host_pointer):
	Use gdb_assert() instead of explicit call to internal_error().

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

	* Makefile.in (rs6000-nat.o): Update dependencies.

	From Nicholas Duffek:
	* Makefile.in (ALLDEPFILES): Add aix-thread.c.
	(aix-thread.o): New rule.
	* configure.host (gdb_host): Set to aix432 on AIX 4.3.2+.
	* config/powerpc/aix432.mh: New file.

2002-07-30  Daniel Jacobowitz  <drow@mvista.com>

	* ppc-linux-tdep.c (ELF_NGREG, ELF_NFPREG, ELF_NVRREG)
	(ELF_FPREGSET_SIZE, ELF_GREGSET_SIZE): New enums.
	(fetch_core_registers, ppc_linux_supply_gregset)
	(ppc_linux_supply_fpregset): New functions.
	(ppc_linux_regset_core_fns): New.
	(_initialize_ppc_linux_tdep): Call add_core_fns.
	* ppc-tdep.h: Add prototypes for ppc_linux_supply_fpregset
	and ppc_linux_supply_gregset.
	* ppc-linux-nat.c (supply_gregset): Call ppc_linux_supply_gregset.
	(supply_fpregset): Call ppc_linux_supply_fpregset.
	* config/powerpc/linux.mh (NATDEPFILES): Remove core-regset.o and
	corelow.o.
	* config/powerpc/linux.mt (TDEPFILES): Add corelow.o.

2002-07-30  Daniel Jacobowitz  <drow@mvista.com>

	* symtab.c (lookup_symbol): Demangle before lowercasing.

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

	* symtab.h: Replace #include "gdb_obstack.h" with opaque
	declaration.
	* cli/cli-cmds.c, cli/cli-script.c: Include "gdb_string.h".
	* gnu-v3-abi.c, arc-tdep.c, cli/cli-decode.c: Ditto.
	* avr-tdep.c, mon960-rom.c, i960-tdep.c: Ditto.
	* arch-utils.c, cli/cli-setshow.c: Unconditionally include
	"gdb_string.h".
	* Makefile.in (cli-script.o, cli-cmds.o): Update dependencies.
	(gnu-v3-abi.o, cli-setshow.o, i960-tdep.o): Ditto.
	(cli-decode.o, mi-cmd-var.o, mi-cmd-disas.o): Ditto.
	(avr-tdep.o, mon960-rom.o): Ditto.
	(aout_stabs_gnu_h): Define.
	(symtab_h): Remove $(gdb_obstack_h).

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

	Patch from David Carlton <carlton@math.stanford.edu>:
	* gdbinit.in: Move the `dir' commands that add GDB's own source
	directory to the search path to the end, so that the `gdb' source
	directory will be searched first.

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

	* gdb_obstack.h: New file.
	* symtab.h: Include "gdb_obstack.h" instead of "obstack.h".
	(obstack_chunk_alloc, obstack_chunk_free): Delete macros.
	* objfiles.h: Include "gdb_obstack.h".
	* Makefile.in (gdb_obstack_h): Define.
	(symtab_h): Add $(gdb_obstack_h).
	(objfiles_h): Add $(gdb_obstack_h).
	
	* objfiles.c: Include "gdb_obstack.h" instead of "obstack.h".
	* macrotab.c, cp-valprint.c, dbxread.c: Ditto.
	* ch-typeprint.c, ch-valprint.c, dstread.c: Ditto.
	* macroexp.c, p-typeprint.c, stabsread.c: Ditto.
	* symtab.c, f-typeprint.c, mdebugread.c: Ditto.
	* p-valprint.c, symmisc.c, typeprint.c: Ditto.
	* symfile.c, coffread.c, c-typeprint.c: Ditto.
	* buildsym.c, bcache.c, ada-typeprint.c: Ditto.

	* Makefile.in (bcache.o): Update dependencies.
	(buildsym.o, c-typeprint.o, ch-typeprint.o): Ditto.
	(ch-valprint.o, coffread.o, cp-valprint.o): Ditto.
	(dbxread.o, dstread.o, f-typeprint.o): Ditto.
	(objfiles.o, p-typeprint.o, p-valprint.o): Ditto.
	(stabsread.o, symfile.o, symmisc.o): Ditto.
	(symtab.o, typeprint.o, macroexp.o): Ditto.
	(macrotab.o, mdebugread.o): Ditto.
	(f_lang_h, coff_sym_h, coff_symconst_h): Define.
	(coff_ecoff_h, aout_aout64_h): Define.
	(aout_stabs_gnu_h, libaout_h): Define.

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

	* regcache.c (struct regcache_descr): Rename nr_registers to
	nr_cooked_registers.  Revise comments describing the structure
	member fields.
	(init_regcache_descr): Update.
	(init_legacy_regcache_descr): Update.
	(read_register_gen, write_register_gen): When a cooked register in
	the raw register range, directly access the value from the raw
	register cache.

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

	* z8k-tdep.c: Do not include "obstack.h".
	* h8300-tdep.c, h8500-tdep.c: Ditto.
	* m68hc11-tdep.c, sh-tdep.c: Ditto.
	* valprint.c, v850-tdep.c: Ditto.
	* d10v-tdep.c, mn10300-tdep.c: Ditto.
	* mn10200-tdep.c: Ditto.

	* Makefile.in (z8k-tdep.o): Update dependencies.
	(m68hc11-tdep.o, valprint.o): Ditto.
	(v850-tdep.o, d10v-tdep.o): Ditto.
	(mn10300-tdep.o, sparc-tdep.o): Ditto.
	(sh-tdep.o, h8500-tdep.o, h8300-tdep.o): Ditto.
	(m32r-tdep.o, mn10200-tdep.o): Specify dependencies.
	(sh_opc_h, gdb_sim_sh_h): Define.
	(elf_sh_h, elf_bfd_h): Define.
	(opcode_m68hc11_h): Define.
	(OPCODES_SRC, OPCODES_DIR): define.
	(OPCODES): Use $(OPCODES_DIR).
	(gdb_sim_d10v_h): Rename sim_d10v_h.
	(gdb_sim_arm_h): Rename sim_arm_h.

2002-07-26  Kevin Buettner  <kevinb@redhat.com>

	* utils.c (host_pointer_to_address, address_to_host_pointer):
	Change internal_error() message to indicate function responsible
	for the error.

2002-07-26  Kevin Buettner  <kevinb@redhat.com>

	* ui-out.c (ui_out_field_core_addr): Remove unnecessary cast in
	calls to local_hex_string_custom().

2002-07-26  Kevin Buettner  <kevinb@redhat.com>

	* irix5-nat.c: Move IRIX shared library support from here...
	* solib-irix.c: ...to here.  Revised substantially to work with
	generic solib framework.

	* osabi.h (gdb_osabi): Add new enum constant GDB_OSABI_IRIX.
	* osabi.c (gdb_osabi_names): Add corresponding string for Irix.
	* mips-irix-tdep.c: New file.

	* Makefile.in (ALLDEPFILES): Add mips-irix-tdep.c and solib-irix.c.
	(mips-irix-tdep.o, solib-irix.o): New rules.
	* config/mips/irix5.mt (TDEPFILES): Add mips-irix-tdep.o, solib.o,
	solib-irix.o.
	* config/mips/irix6.mt (TDEPFILES): Likewise.
	* config/mips/irix6.mh (NATDEPFILES): Remove solib.o.

2002-07-26  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (coff/internal.h, bfd/libcoff.h, pthread.h): Remove
	disabled (via ``#if 0'') includes.

2002-07-26  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (special_register_p, supply_sprs64, supply_sprs32)
	(fetch_regs_user_thread, fetch_regs_kernel_thread, fill_sprs64)
	(fill_sprs32, store_regs_user_thread, store_regs_kernel_thread):
	Add support for the fpscr register.
	* rs6000-nat.c (regmap, fetch_inferior_registers)
	(store_inferior_registers, fetch_core_registers): Likewise.

2002-07-26  Kevin Buettner  <kevinb@redhat.com>

	* rs6000-nat.c (language.h): Include.
	(special_regs): Delete this array.
	(regmap): New function.
	(fetch_register, store_register):  Use regmap() to map gdb
	register numbers to ptrace register numbers.  Also, use
	outputs from regmap() to make decisions regarding type of
	ptrace() call to make.  In particular, don't compare against
	FIRST_UISA_SP_REGNUM or LAST_UISA_SP_REGNUM.
	(fetch_inferior_registers, store_inferior_registers): Where
	possible, obtain register numbers from tdep struct.  Don't
	refer to FIRST_UISA_SP_REGNUM or LAST_UISA_SP_REGNUM.
	* config/rs6000/tm-rs6000.h (FIRST_UISA_SP_REGNUM)
	(LAST_UISA_SP_REGNUM): Delete.
	
2002-07-25  Kevin Buettner  <kevinb@redhat.com>

	* rs6000-nat.c (ppc-tdep.h): Include.
	(fetch_registers, store_register, fetch_core_registers): Don't
	access registers[] directly.  Instead, use supply_register() or
	regcache_collect() as appropriate.
	(find_toc_address): Format hex address with local_hex_string().

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

	* config/djgpp/fnchange.lst: Rename bfd/elf32-fr30.c and
	bfd/elf32-frv.c.

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

	* jv-exp.y: Marked all strings with _().
	(ClassInstanceCreationExpression, ArrayCreationExpression): Use
	internal_error.
	(MethodInvocation, CastExpression, parse_number, yyerror,
	java_type_from_name, push_expression_name, yylex): Typo fixes.

2002-07-24  Daniel Jacobowitz  <drow@mvista.com>

	* ui-file.c (struct tee_file, tee_file_new, tee_file_delete)
	(tee_file_flush, tee_file_write, tee_file_fputs)
	(tee_file_isatty): New.
	* ui-file.h (tee_file_new): Add prototype.

2002-07-24  Aidan Skinner <aidan@velvet.net>

	* ada-lang.c: Change k&r style function definitions to prototyped
	form.
	* ada-typeprint.c: Change k&r style function definitions to prototyped
	form.
	* ada-valprint.c: Change k&r style function definitions to prototyped
	form.
	
2002-07-24  Andrew Cagney  <cagney@redhat.com>

	* README: Remove reference to remote-bug.
	* Makefile.in (ALLDEPFILES): Remove m88k-nat.c, m88k-tdep.c and
	remote-bug.c.
	(m88k-nat.o): Delete rule.
	(m88k-tdep.o): Delete rule.
	(remote-bug.o): Delete rule.
	* MAINTAINERS: Mark as obsolete.
	* elfread.c (elf_symtab_read): Mention that m88k is obsolete.
	* m88k-tdep.c: Make file obsolete.
	* config/m88k/m88k.mh: Ditto.
	* config/m88k/delta88v4.mh: Ditto.
	* config/m88k/delta88v4.mt: Ditto.
	* config/m88k/delta88.mt: Ditto.
	* config/m88k/delta88.mh: Ditto.
	* remote-bug.c: Ditto.
	* config/m88k/tm-delta88.h: Ditto.
	* config/m88k/nm-delta88v4.h: Ditto.
	* config/m88k/xm-delta88.h: Ditto.
	* config/m88k/xm-dgux.h: Ditto.
	* config/m88k/tm-m88k.h: Ditto.
	* config/m88k/nm-m88k.h: Ditto.
	* config/m88k/tm-delta88v4.h: Ditto.
	* m88k-nat.c: Ditto.
	* cxux-nat.c: Ditto.
	* configure.host: Make m88*-motorola-sysv4*, m88*-motorola-sysv*
	and m88*-*-* obsolete.
	* configure.tgt: Make m88*-motorola-sysv4*, m88*-motorola-* and
	m88*-*-* obsolete.

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

	* findvar.c (extract_unsigned_integer): Make `addr' parameter
	constant.  Same for local pointer variables.
	(extract_signed_integer): Ditto.
	* defs.h (extract_unsigned_integer): Update.
	(extract_signed_integer): Update.

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

	* regcache.c (regcache_raw_write): Change buf parameter to a
	constant void pointer.
	(regcache_raw_read): Change buf parameter to a void pointer.
	(legacy_write_register_gen): Change myaddr parameter a constant
	void pointer.
	(supply_register): Change val parameter to a const void pointer.
	* regcache.h (regcache_raw_write): Update declaration.
	(regcache_raw_read): Update declaration.
	(supply_register): Update declaration.

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

	* defs.h (gdb_readline_wrapper): Declare.
	* utils.c (prompt_for_continue): Use gdb_readline_wrapper.
	* tracepoint.c (read_actions): Use gdb_readline_wrapper.
	* top.c (gdb_readline_wrapper): New function.
	(command_line_input): Use it.

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

	* regcache.h (regcache_raw_read, regcache_raw_write): Replace
	regcache_read and regcache_write.
	(regcache_raw_read_as_address): Replace regcache_read_as_address.
	* regcache.c: Update.
	* sh-tdep.c (sh64_push_arguments): Update comment.
	(sh_pseudo_register_read): Update.
	(sh_pseudo_register_write): Update.
	(sh4_register_read): Update.
	(sh4_register_write): Update.
	(sh64_pseudo_register_read): Update.
	(sh64_pseudo_register_write): Update.
	(sh64_register_read): Update.
	(sh64_register_write): Update.
	* i386-tdep.c (i386_extract_return_value): Update.
	(i386_extract_struct_value_address): Update.
	(i386_extract_return_value): Update.
	* blockframe.c (generic_read_register_dummy): Update.
	(generic_call_dummy_register_unwind): Update
	* infrun.c (write_inferior_status_register): Update.

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

	* parser-defs.h (expression_context_pc): Make this extern.
	(Thanks to Michael Snyder.)

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

	GDB 5.2.1 released from 5.2 branch.
	* NEWS: Mention changes in 5.2.1 including addition of AVR target.
	* README: Update to mention 5.2.1.

2002-07-23  Mark Salter  <msalter@redhat.com>

	* remote.c (remote_read_bytes): Fix check for error.

2002-07-22  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (language.h): Include.
	(ptrace_check, pdc_symbol_addrs, pdc_read_regs, pdc_write_regs)
	(pdc_read_data, pdc_write_data, pdc_alloc, pdc_realloc, pdc_dealloc):
	Print newlines at end of debug messages.
	(pdc_symbol_addrs, pdc_read_regs, pdc_write_regs, pdc_read_data)
	(pdc_write_data): Use local_hex_string() instead of %llx formats.

2002-07-22  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (ppc-tdep.h): Include.
	(special_register_p): New function.
	(supply_sprs64, supply_sprs32, fill_sprs64, fill_sprs32)
	(store_regs_user_thread): Use register number information from
	gdbarch_tdep struct instead of hardcoded offsets relative to
	FIRST_UISA_SP_REGNUM.
	(fetch_regs_kernel_thread, store_regs_kernel_thread):  Call
	special_register_p() instead of using FPLAST_REGNUM and
	LAST_UISA_SP_REGNUM as lower and upper bounds on the special
	register numbers.  Also, don't assume that LAST_UISA_SP_REGNUM
	will be MQ's register number.

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

	* aix-thread.c (ops): Rename to aix_thread_ops.
	(base_ops): Rename to base_target.
	(ops_attach): Rename to aix_thread_attach.
	(ops_detach): Rename to aix_thread_detach.
	(ops_resume): Rename to aix_thread_detach.
	(ops_wait):   Rename to aix_thread_wait.
	(ops_kill):   Rename to aix_thread_kill.
	(init_ops):   Rename to init_aix_thread_ops.
	(ops_fetch_register): Rename to aix_thread_fetch_register.
	(ops_store_register): Rename to aix_thread_store_register.
	(ops_mourn_inferior): Rename to aix_thread_mourn_inferior.
	(ops_thread_alive):   Rename to aix_thread_thread_alive.
	(ops_extra_thread_info: Rename to aix_thread_extra_thread_info.
	(ops_pid_to_str):  Rename to aix_thread_pid_to_str.
	(ops_xfer_memory): Rename to aix_thread_xfer_memory.
	(fetch_regs_lib):  Rename to fetch_regs_user_thread.
	(fetch_regs_kern): Rename to fetch_regs_kernel_thread.
	(store_regs_lib):  Rename to store_regs_user_thread.
	(store_regs_kern): Rename to store_regs_kernel_thread.

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

	* aix-thread.c (ops_prepare_to_store): Eliminate.
	(init_ops): Don't initialize ops.prepare_to_store.
	(store_regs_kern): Pre-fetch register buffers from child, 
	because some registers may not be in the cache.  Copy
	regs from register cache only if they are cached.
	(store_regs_lib): Copy regs from register cache only
	if they are cached.
	(fill_sprs32, (fill_sprs64, fill_fprs, fill_gprs32,
	fill_gprs64): Ditto.

2002-07-22  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (gdb_assert.h): Include.
	(fill_sprs64, fill_sprs32): Add selected asserts to make sure that
	register sizes (from register cache) match size of buffer holding
	register data.
	(fill_sprs32): Change parameter types to match those in the ptrace()
	buffer.
	(store_regs_lib): Likewise, but for 32-bit temporary variables.
	(ops_prepare_to_store): Rename loop variable ``i'' to ``regno''.

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

	* aix-thread.c (supply_sprs64): Cosmetic change.
	(supply_sprs32): Cosmetic change.
	(fill_gprs64, fill_gprs32, fill_fprs, fill_sprs32): New funcs.
	(fill_sprs64): Use regcache_collect instead of read_register.
	(store_regs_lib): Use regcache_collect instead of 
	read_register.  Use fill_sprs32 instead of fill_sprs64,
	if debugging a 32-bit architecture.
	(store_regs_kern): Use fill_gprs64 etc. to pull the values
	out of the register cache, instead of passing a pointer into
	the register cache directly to ptrace.  Use regcache_collect
	insteaad of read_register.
	(ops_prepare_to_store): Use target_read_registers instead
	of read_register_bytes.

2002-07-20  Aidan Skinner <aidan@velvet.net>

	* MAINTAINERS: Add self under write after approval. 
		
2002-07-20  Aidan Skinner <aidan@velvet.net>

	* ada-tasks.c: Change k&r style function definitions to prototyped
	form.
		
2002-07-19  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (x86-64-tdep.o): Add $(objfiles_h).
	* x86-64-tdep.c: Include "objfiles.h".
	(x86_64_gdbarch_init): Set in_solib_call_trampoline to
	in_plt_section.  From 2002-07-18 Michal Ludvig <mludvig@suse.cz>.

2002-07-17  Michal Ludvig  <michal@suse.cz>

	* dwarf2cfi.c (execute_stack_op): Complain on unknown DW_OP_ value.
	(update_context): Initialise cfa variable.

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

	* aix-thread.c: Shorten some long lines.  
	Bring comments into line with code spec.

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

	* infrun.c: Re-indent using gdb_indent.sh.

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

	* infrun.c (handle_inferior_event): Remove unneeded extra brace.
	Leave the indentation temporarily untouched, to minimize the diffs.

2002-07-18  Elena Zannoni  <ezannoni@redhat.com>

	* stabsread.c: Make os9k sections of the code obsolete,
	for real this time.
	* stabsread.h: Make os9k sections of the code obsolete.

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

	* linux-low.c (regsets_store_inferior_registers): Add free()
	at the end of a loop to prevent memory leak.
	* linux-x86-64-low.c (x86_64_regmap): Add CS, SS registers.
	(X86_64_NUM_GREGS): Count it from the size of x86_64_regmap.
	* config/sparc/tm-sp64linux.h: Make the rest of #endif
	line a comment.
	* Makefile.in (x86-64-linux-nat.o): Remove dependency on i387-tdep.h

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

	* macrocmd.c (info_macro_command): Remove newline from error
	message.

2002-07-17  J"orn Rennecke <joern.rennecke@superh.com>

	* sh-tdep.c (sh_dsp_register_sim_regno): New function.
	(sh_gdbarch_init): Use it for sh-dsp.

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

	* dwarf2read.c (read_initial_length): Handle older, non-standard,
	64-bit DWARF2 format.

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

	* proc-api.c: use HAVE_SYS_PROC_H macro to avoid including
	<sys/proc.h> when not available.

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

	* NEWS: Mention that the i[34]86-*-os9k has been made obsolete.
	* stabsread.c: Make os9k sections of the code obsolete.
	* configure.tgt: Make i[3456]86-*-os9k target obsolete.
	* config/i386/i386os9k.mt: Make file obsolete.
	* Makefile.in (ALLDEPFILES): Remove remote-os9k.c.
	(COMMON_OBS): Remove os9kread.o
	(SFILES): Remove os9kread.c.
	(os9kread.o, remote-os9k.o): Make target obsolete.
	* remote-os9k.c: Make file obsolete.
	* os9kread.c: Make file obsolete.
	* Makefile.in

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

	* NEWS: Mention that the FR30 has been made obsolete.
	* fr30-tdep.c: Make file obsolete.
	* config/fr30/tm-fr30.h: Ditto.
	* config/fr30/fr30.mt: Ditto.
	* configure.tgt: Make fr30-*-elf obsolete.
	* MAINTAINERS: Make fr30-elf obsolete.

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

	* blockframe.c (get_pc_function_start): return 0 if the minimal symbol
	found is not inside a section.

2002-07-15  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (ptrace_check): Use safe_strerror() instead of
	strerror().
	(pdc_realloc): Use xrealloc() instead of realloc().

2002-07-15  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (PD_ERROR, CALL_BASE): Delete.
	(ops_resume, ops_wait, fetch_regs_lib, store_regs_lib)
	(ops_xfer_memory, ops_kill): Don't use PD_ERROR or CALL_BASE
	macros.

2002-07-15  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (ptrace_check): Eliminate goto.
	(sync_threadlists): Eliminate gotos.  Also, fix array overrun
	problem.

2002-07-15  Kevin Buettner  <kevinb@redhat.com>

	* aix-thread.c (gdbcmd.h): Include.
	(DEBUG, DBG, DBG2, dbg): Eliminate.
	(debug_aix_thread): New static global.
	(ptrace_check, pdc_symbol_addrs, pdc_read_regs, pdc_write_regs)
	(pdc_read_data, pdc_write_data, pdc_alloc, pdc_realloc, pdc_dealloc)
	(fetch_regs_lib, store_regs_lib, store_regs_kern): Rewrite
	invocations to DBG and DBG2 macros to test against
	``debug_aix_thread'' and call fprintf_unfiltered().
	(_initialize_aix_thread): Add new command "set debug aix-thread".

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

	From Gerhard Tonn <TON@de.ibm.com>:
	* s390-nat.c (fill_fpregset, fill_gregset): Use regcache_collect
	instead of supply_register.

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

	* dwarf2cfi.c: Include "gdb_assert.h".
	(frame_state_for): Use gdb_assert to check that fde->cie_ptr is
	non-NULL.
	(update_context): Do not use __func__.  Add missing ``break''.
	(update_context): Do not use __func__.

2002-07-15  Elena Zannoni  <ezannoni@redhat.com>

        * rs6000-tdep.c (rs6000_gdbarch_init): Remove variable print_insn
        and its setting.  Set gdbarch instruction printing functions
        directly.  For non-rs6000 case use new function
        gdb_print_insn_powerpc.
        (gdb_print_insn_powerpc): New function.

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

	* NEWS: Mention that the d30v has been marked obsolete.
	* MAINTAINERS: Note that d30v / d30v-elf has been made obsolete.
	* configure.tgt: Mark d30v-*-* as obsolete.
	* d30v-tdep.c: Mark file as obsolete.
	* config/d30v/d30v.mt: Ditto.
	* config/d30v/tm-d30v.h: Ditto.

2002-07-13  Aidan Skinner <aidan@velvet.net>

	* ada-tasks.c (add_task_entry): replace calls to
	malloc() with xmalloc
	* ada-tasks.c (init_task_list): replace calls to free with xfree()
	
	* ada-lang.c (replace_operator_with_call, fill_in_ada_prototype,
	ada_finish_decode_line_1, all_sals_for_line
	ada_breakpoint_rewrite): replace calls to free() with xfree()
		
2002-07-12  Kevin Buettner  <kevinb@redhat.com>

	From Nicholas Duffek (with minor changes by Martin Hunt, 
	Louis Hamilton, and Kevin Buettner):
	* aix-thread.c: New file.

2002-07-12  Petr Sorfa <petrs@caldera.com>

        *  dwarf2read.c (dwarf2_invalid_attrib_class): New
        complaint for invalid attribute class or form.
        (read_func_scope): DW_AT_frame_base
        better handling of DW_AT_block*.
        (dwarf2_add_member_fn): DW_AT_vtable_elem_location
        better handling of DW_AT_block*.
        (read_common_block): DW_AT_location
        better handling of DW_AT_block*.
        (read_partial_die): DW_AT_location better handling
        of DW_AT_block*.
        (new_symbol): DW_AT_external better handling of
        DW_AT_block*. Proper initialization of variable
        "addr".
        (attr_form_is_block): New function that returns true
        if the attribute's form is of DW_FORM_block*.

2002-07-12  Peter Schauer  <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>

	* valops.c (find_method_list): Remove comment about
	removed STATIC_MEMFUNCP argument.
	(value_find_oload_method_list): Likewise.

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

	From Nicholas Duffek:
	* rs6000-nat.c (vmap_ldinfo, xcoff_relocate_core): Call
	target_new_objfile_hook.

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

	From Nicholas Duffek:
	* xcoffread.c (scan_xcoff_symtab): Recognize XMC_TD as a data storage
	csect.

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

	* MAINTAINERS: Mention --enable-sim-build-warnings.
	(m68hc11-elf): Disable sim build warnings.
	(m32r-elf): Mark as broken obsolete candidate.
	(x86_64-linux-gnu): Mark as buildable with -Werror.
	(arm-elf): Change -w to ``,'' which enables warnings but not
	-Werror.

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

	* bcache.h: Update copyright.
	(struct bstring, struct bcache): Move definition to "bcache.c".
	Replaced by opaque declaration.
	(bcache_xfree): Replace free_bcache.
	(bcache_xmalloc, bcache_memory_used): Declare.
	
	* bcache.c: Update copyright.
	(struct bstring, struct bcache): Moved to here from "bcache.h".
	Update comments.
	(bcache_xmalloc, bcache_memory_used): New functions.
	(bcache_xfree): Replace function free_bcache.
	
	* Makefile.in (objfiles.o): Add $(bcache_h).
	(objfiles_h): Remove $(bcache_h).
	(symfile.o): Add $(bcache_h).

	* symmisc.c: Update copyright.
	(print_symbol_bcache_statistics): Pass psymbol_cache by value.
	(print_objfile_statistics): Use bcache_memory_used.

	* symfile.c: Include "bcache.h".
	(reread_symbols): Use bcache_xfree.
	(reread_symbols): Use bcache_xmalloc and bcache_xfree.
	(add_psymbol_to_list): Pass psymbol_cache by value.
	(add_psymbol_with_dem_name_to_list): Ditto.

	* objfiles.h: Update copyright.
	(struct bcache): Declare opaque.  Do not include "bcache.h".
	(struct objfile): Change psymbol_cache and macro_cache to ``struct
	bcache'' pointers.
	* dwarf2read.c (macro_start_file): Pass macro_cache by value.

	* objfiles.c: Include "bcache.h".  Update copyright.
	(allocate_objfile): Use bcache_xmalloc to create psymbol_cache and
	macro_cache.
	(free_objfile): Use bcache_xfree.

2002-07-11  Grace Sainsbury  <graces@redhat.com>

	* monitor.c (monitor_fetch_register): Make name a constant.
	(monitor_store_register): Same.

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

	Based on patch from Daniel Berlin <dberlin@dberlin.org>.
	* buildsym.c: Include "demangle.h" for SYMBOL_INIT_DEMANGLED_NAME.
	(finish_block) For non-function blocks, hash the symbol table.  For
	function blocks, mark the symbol table as unhashed.
	* minsyms.c (msymbol_hash): Return hash value without taking modulus.
	(msymbol_hash_iw): Likewise.
	(add_minsym_to_hash_table): Take modulus of msymbol_hash's return
	value.
	(add_minsym_to_demangled_hash_table): Likewise for msymbol_hash_iw.
	(lookup_minimal_symbol): Likewise for both.
	* symtab.h (struct block): Add `hashtable' flag.  Comment the
	hashtable.
	(BLOCK_HASHTABLE, BLOCK_BUCKETS, BLOCK_BUCKET): New macro.
	(ALL_BLOCK_SYMBOLS): Update.
	(BLOCK_SHOULD_SORT): Do not sort hashed blocks.
	(struct symbol): Add `hash_next' pointer.
	* symtab.c (lookup_block_symbol): Search using the hash table when
	possible.
	(find_pc_sect_symtab): Use ALL_BLOCK_SYMBOLS.
	(search_symbols, find_addr_symbol): Likewise.

	* dstread.c (process_dst_block): Clear hashtable bit for new block.
	(read_dst_symtab): Likewise.
	* jv-lang.c (get_java_class_symtab): Likewise.
	* mdebugread.c: Include "gdb_assert.h".
	(shrink_block): Assert that the block being modified is not hashed.
	* coffread.c (patch_opaque_types): Use ALL_BLOCK_SYMBOLS.
	* symmisc.c (free_symtab_block): Walk the hash table when freeing
	symbols.
	(dump_symtab): Recognize hashed blocks.
	* printcmd.c (print_frame_args):  Assert that function blocks do not
	have hashed symbol tables.
	* ada-lang.c (symtab_for_sym): Use ALL_BLOCK_SYMBOLS.
	(fill_in_ada_prototype, debug_print_block): Likewise.
	(ada_add_block_symbols): Use ALL_BLOCK_SYMBOLS.  Handle hash tables.

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

	* stack.c (print_frame): Use result of frame_address_in_block()
	instead of fi->pc when evaluating symbols.
	(backtrace_command_1): Ditto.

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

	* cris-tdep.c (cris_saved_pc_after_call): Fix parameter type.
	Make static.

	* arm-tdep.c (arm_register_name): Make return type constant.

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

	* win32-nat.c (has_detach_ability): Convert to strict ISO C
	prototype.
	* top.c (gdb_rl_operate_and_get_next_completion): Ditto.
	* s390-tdep.c (s390_fp_regnum): Ditto.
	(s390_read_fp): Ditto.
	(s390_pop_frame): Ditto.
	(_initialize_s390_tdep): Ditto.
	* remote.c (get_remote_state): Ditto.
	* procfs.c (mappingflags): Ditto.
	* memattr.c (_initialize_mem): Ditto.
	* mcore-tdep.c (mcore_pop_frame): Ditto.
	* m68klinux-nat.c (_initialize_m68k_linux_nat): Ditto.
	* m68k-tdep.c (m68k_register_bytes_ok): Ditto.
	* language.c (set_case_str): Ditto.
	* gnu-v3-abi.c (vtable_address_point_offset): Ditto.
	* frv-tdep.c (new_variant): Ditto.
	(frv_stopped_data_address): Ditto.
	* dwarf2cfi.c (fde_chunks_need_space): Ditto.
	(context_alloc): Ditto.
	(frame_state_alloc): Ditto.
	(unwind_tmp_obstack_init): Ditto.
	(unwind_tmp_obstack_free): Ditto.
	(cfi_read_fp): Ditto.
	* cris-tdep.c (cris_saved_pc_after_call): Ditto.
	(cris_pop_frame): Ditto.
	* c-lang.c (scanning_macro_expansion): Ditto.
	(finished_macro_expansion): Ditto.
	(c_preprocess_and_parse): Ditto.
	* gdbarch.sh: Ditto.
	* gdbarch.h, gdbarch.c: Regenerate.
	* config/mn10200/tm-mn10200.h: Adjust indentation.
	* target.c: Adjust indentation.
	* symtab.h: Adjust indentation.
	* stabsread.h: Adjust indentation.
	* remote-es.c: Adjust indentation.
	* os9kread.c: Adjust indentation.

2002-07-10  Andrew Cagney  <ac131313@redhat.com>
	
	* wince.c (_initialize_wince): Rename _initialize_inftarg.
	* win32-nat.c (_initialize_win32_nat): Rename _initialize_inftarg.

2002-07-10  Grace Sainsbury  <graces@redhat.com>
	
	* NEWS: Mention m68k, mcore multi-arching.  
	* MAINTAINERS: Change status of m68k, mcore to reflect
	multi-arching.

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

	* valops.c (find_overload_match): Free oload_syms.

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

	Define HAVE_SYS_PROC_H if sys/proc.h exists
	* configure.in: Add check for sys/proc.h
	* config.in: Regenerate.
	* configure: Regenerate.

2002-07-09  Grace Sainsbury  <graces@redhat.com>

	* config/m68k/tm-m68k.h: Remove macros wrapped in 
	#if !GDB_MULTI_ARCH. 

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

	* config.in, configure: Regenerate.

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

	* dwarf2cfi.c: Include "gcore.h".
	(execute_stack_op): Fix implementation of the
	DW_OP_deref and DW_OP_deref_size operators by letting do their
	lookup in the target.

2002-07-07  Mark Kettenis  <kettenis@gnu.org>

	From Peter Schauer <Peter.Schauer@regent.e-technik.tu-muenchen.de>:
	* i386-sol2-tdep.c (i386_sol2_init_abi): Correct value for
	tdep->sc_sp_offset.

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

	Fix PR gdb/595, gdb/602
	* gnu-v3-abi.c (gnuv3_baseclass_offset): Remove unused variables.
	Don't call value_cast, just read the vtable pointer; update comments
	to match.

2002-07-05  Grace Sainsbury  <graces@redhat.com>

	* config/mcore/tm-mcore.h: Remove file.
	* config/mcore/mcore.mt: Remove definition of TM_FILE
	* configure.tgt: Set gdb_multi_arch to yes for the mcore target.

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

	* i386bsd-tdep.c: Include "gdb_string.h".

2002-07-04  Grace Sainsbury  <graces@redhat.com>

	* config/mcore/tm-mcore.h (GDB_MULTI_ARCH): Set to 2.
	(PR_REGNUM, FIRST_ARGREG, LAST_ARGREG,RETVAL_REGNUM): Move to
	mcore-tdep.
	(REG_STRUCT_HAS_ADDR, USE_STRUCT_CONVENTION, GET_SAVED_REGISTER)
	(TARGET_VIRTUAL_FRAME_POINTER, BELIEVE_PCC_PROMOTION): Remove.
	* mcore-tdep.c (PR_REGNUM, FIRST_ARGREG, LAST_ARGREG)
	(RETVAL_REGNUM): Move macros from tm-mcore.h
	(mcore_reg_struct_has_addr): New function.
	(mcore_gdbarch_init): Added initializations for the macros removed
	from tm-mcore.h.

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

	* osabi.c (generic_elf_osabi_sniffer): Add check for FreeBSD 3.x's
	traditonal string branding within the ELF header.

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

	* symtab.c (remove_params): New function.
	(make_symbol_overload_list): Use it instead of cplus_demangle.
	(overload_list_add_symbol): Likewise.  Reorder.  Fix memory leak.

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

	* i386obsd-nat.c (_initialize_i386obsd_nat): Fix typo in prototype.

	* i386bsd-tdep.c (i386nbsd_sigtramp_start, i386nbsd_sigtramp_end):
	New variables.
	(i386nbsd_init_abi): Use these to initialize tdep->sigtramp_start
	and tdep->sigtramp_end.
	* i386obsd-nat.c: New file.
	* config/i386/obsd.mh (NATDEPFILES): Add i386obsd-nat.o.

	* dwarf2cfi.c (cfi_pop_frame): Use alloca() for regbuf.
	Don't call get_current_frame().

2002-07-04  Pierre Muller  <muller@ics.u-strasbg.fr>

	* i386-nat.c (child_post_startup_inferior): New function
	calling i386_cleanup_dregs if
	I386_USE_GENERIC_WATCHPOINTS is defined.
	* config/i386/nm-i386.h: define CHILD_POST_STARTUP_INFERIOR
	conditional to acknowledge that i386-nat.c has its
	own child_post_startup_inferior function.

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

	* i386-tdep.h (I386_MAX_REGISTER_SIZE): New define.
	* i386-tdep.c (i386_do_pop_frame): Use I386_MAX_REGISTER_SIZE
	instead of MAX_REGISTER_RAW_SIZE.
	(i386_extract_return_value, i386_extract_struct_value_address):
	Convert to use regcache.
	(i386_gdbarch_init): Set max_register_raw_size and
	max_register_virtual_size to I386_MAX_REGISTER_SIZE.
	Set extract_return_value and extract_struct_value_address instead
	of their deprecated variants.

	Convert i386 target to generic dummy frames.
	* i386-tdep.c: Include "symfile.h".
	(i386_frameless_signal_p): Consider a function to be frameless if
	the pc points at the first instruction of the function.
	(i386_frame_chain): Handle (generic) call dummies.
	(i386_frame_saved_pc): Likewise.
	(i386_frame_init_saved_regs): Remove code dealing with call
	dummies on the stack.
	(i386_push_dummy_frame): Removed.
	(i386_call_dummy_words): Removed.
	(i386_fix_call_dummy): Removed.
	(i386_push_return_address): New function.
	(i386_do_pop_frame): Renamed from i386_pop_frame.  Add FRAME
	parameter, and don't call get_current_frame.
	(i386_pop_frame): New function.
	(i386_gdbarch_init): Set use_generic_dummy_frames to 1, set
	call_dummy_location to AT_ENTRY_POINT, set call_dummy_address to
	entry_point_address, set call_dummy_breakpoint_offset to 0, set
	call_dummy_length to 0, set call_dummy_words to NULL, set
	sizeof_call_dummy_words to 0, set fix_call_dummy to
	generic_fix_call_dummy, set pc_in_call_dummy to
	pc_in_call_dummy_at_entry_point, set push_dummy_frame to
	generic_push_dummy_frame, set push_return_address to
	i386_push_return_address and set frame_chain_valid to
	generic_file_frame_chain_valid.

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

	* gdbarch.sh (struct regcache): Add opaque declaration.
	(EXTRACT_RETURN_VALUE): New architecture method.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Ditto.
	* gdbarch.h, gdbarch.c: Regenerate.
	* arch-utils.c (legacy_extract_return_value): New function.
	* arch-utils.h (legacy_extract_return_value): Declare.
	* values.c (value_being_returned): Re-enable code handling
	EXTRACT_STRUCT_VALUE_ADDRESS.  Move
	deprecated_grub_regcache_for_registers call to block handling
	DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS.
	(EXTRACT_RETURN_VALUE): Do not define.

2002-07-03  Grace Sainsbury  <graces@redhat.com>

	* config/mcore/tm-mcore.h (REGISTER_BYTES, NUM_REGS, PC_REGNUM)
	(SP_REGNUM, FP_REGNUM, FUNCTION_START_OFFSET, DECR_PC_AFTER_BREAK)
	(BREAKPOINT_FROM_PC, INNER_THAN, SAVED_PC_AFTER_CALL)
	(INIT_EXTRA_FRAME_INFO, FRAME_INIT_SAVED_REGS, INIT_FRAME_PC)
	(FRAME_CHAIN, FRAME_CHAIN_VALID, FRAME_SAVED_PC)
	(STORE_RETURN_VALUE, DEPRECATED_EXTRACT_RETURN_VALUE)
	(STORE_STRUCT_RETURN, DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS)
	(SKIP_PROLOGUE, FRAME_ARGS_SKIP, FRAME_ARGS_ADDRESS)
	(FRAME_LOCALS_ADDRESS, FRAME_NUM_ARGS, POP_FRAME)
	(PUSH_RETURN_ADDRESS, PUSH_DUMMY_FRAME, PUSH_ARGUMENTS): Remove.
	* mcore-tdep.c (mcore_init_extra_frame_info): Add fromleaf
	argument so the function fits the prototype in the architecture
	vector.
	(mcore_pop_frame): Remove argument so the function fits the
	prototype. Use get_current_frame instead of the argument.
	(mcore_push_arguments): Change type of struct_return so the
	function can be used in the architecture vector.
	(mcore_store_struct_return): Add.
	(mcore_frame_init_saved_regs): Add.
	(mcore_gdbarch_init): Add function calls to replace the macros
	removed from tm-mcore.h

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

	* infcmd.c (print_return_value): Remove compatibility code calling
	deprecated_grub_regcache_for_registers.
	
	* values.c: Include "regcache.h".
	(value_being_returned): Update.  Use
	deprecated_grub_regcache_for_registers to extract the register
	buffer address.  
	* value.h (value_being_returned): Change ``retbuf'' parameter to a
	``struct regcache''.
	* Makefile.in (values.o): Add dependency on $(regcache_h).

	* inferior.h (run_stack_dummy): Change type of second parameter to
	a ``struct regcache''.
	* valops.c (hand_function_call): Change type of retbuf to ``struct
	regcache''.  Allocate using regcache_xmalloc, clean using
	make_cleanup_regcache_xfree.
	* infcmd.c (run_stack_dummy): Update.  Use
	regcache_cpu_no_passthrough instead of memcpy to copy the buffer.

	* regcache.c (do_regcache_xfree): New function.
	(make_cleanup_regcache_xfree): New function.
	* regcache.h (make_cleanup_regcache_xfree): Declare.

2002-07-03  Martin M. Hunt  <hunt@redhat.com>

	* event-top.c (command_line_handler): Don't read past
        beginning of buffer.

2002-07-03  Martin M. Hunt  <hunt@redhat.com>
	
        * varobj.c (struct varobj_root): Change frame from CORE_ADDR to 
        struct frame_id. 
        (varobj_create): Store frame_id for root.
        (varobj_gen_name): Use xasprintf.
        (varobj_update): Save and restore frame using get_frame_id() and
        frame_find_by_id().
        (create_child): Use xasprintf.
        (new_root_variable): Initialize frame_id.
        (c_name_of_child): Use xasprintf. Call find_frame_by_id().
        (c_value_of_variable): Use xasprintf. Move mem_fileopen call
        to prevent memory leak.

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

	* valops.c (hand_function_call): Move declaration of retbuf to
	start of function, allocate using malloc, add a cleanup but before
	the inf_status cleanup, cleanup the buffer.  Rename local variable
	old_chain to inf_status_cleanup.

2002-07-03  Martin M. Hunt  <hunt@redhat.com>

	* top.c (execute_command): Use cmd_func() and cmd_func_p().

	* cli/cli-decode.c (cmd_func_p): New function.
	(cmd_func): New function.

	* command.h: Add cmd_func() and cmd_func_p().	
	
2002-07-03  Grace Sainsbury  <graces@redhat.com>

	* config/mcore/tm-mcore.h (GDB_MULTI_ARCH): Add macro. Set to 0.
	(REGISTER_SIZE): Remove.
	(MAX_REGISTER_RAW_SIZE): Remove.
	(REGISTER_VIRTUAL_TYPE): Remove.
	(MAX_REGISTER_VIRTUAL_SIZE): Remove.
	(REGISTER_NAME): Remove.
	(USE_GENERIC_DUMMY_FRAMES): Remove.
	(CALL_DUMMY): Remove.
	(CALL_DUMMY_START_OFFSET): Remove.
	(CALL_DUMMY_BREAKPOINT_OFFSET): Remove.
	(CALL_DUMMY_LOCATION): Remove.
	(FIX_CALL_DUMMY): Remove.
	(CALL_DUMMY_ADDRESS): Remove.
	(SIZEOF_CALL_DUMMY_WORDS): Remove.
	(SAVE_DUMMY_FRAME_TOS): Remove.
	* mcore-tdep.c (MCORE_REG_SIZE, MCORE_NUM_REGS): Add macros.
	(mcore_register_virtual_type): New function.
	(mcore_register_byte): New function.
	(mcore_register_size): New function.
	(mcore_register_name): New function.
	(mcore_gdbarch_init): New function. Add set_gdbarch calls for
	macros removed from tm-mcore.h.
	(mcore_dump_tdep): Add.
	(_initialize_mcore_tdep): Add gdbarch_register call.

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

	* i386-tdep.c (i386_frameless_signal_p): Provide an argument in to
	frameless_look_for_prologue, such that we actually call this
	function.

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

	* frame.h (frame_address_in_block): New function.

	* blockframe.c (frame_address_in_block): New function extracted
	from get_frame_block().
	(get_frame_block): Use frame_address_in_block().
	(block_innermost_frame): Use frame_address_in_block() to match
	the frame pc address against the block boundaries rather than
	the frame pc directly. This prevents a failure when a frame pc
	is actually a return-address pointing immediately after the end
	of the given block. 

2002-07-02  Grace Sainsbury  <graces@redhat.com>

	* MAINTAINERS: Add self under write after approval. 

2002-07-02  Grace Sainsbury  <graces@redhat.com>

	* m68k-tdep.c (m68k_remote_breakpoint_from_pc): Add. Currently not
	used in architecture vector. The default is
	m68k_local_breakpoint_from_pc.
        (m68k_local_breakpoint_from_pc): Add.
        (enum): Add register numbers from tm-m68k.h.
        (m68k_gdbarch_init): Add breakpoint_from_pc to architecture
	vector.  
	* config/m68k/tm-m68k.h (GDB_MULTI_ARCH): Set to
	GDB_MULTI_ARCH_PARTIAL.
        (BPT_VECTOR, REGISTER_BYTES_FP, REGISTER_BYTES_NOFP)
        (NUM_FREGS, SIG_PC_FP_OFFSET, SP_ARG0, REMOTE_BPT_VECTOR): Move to
	m68k-tdep.c.
        (BREAKPOINT, REMOTE_BREAKPOINT): Remove.
        (A1_REGNUM, FP0_REGNUM, FPC_REGNUM, FPS_REGNUM, FPI_REGNUM): Move
	to enum in m68k-tdep.c

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

	* solib-osf.c (open_map): Compute the list of shared libraries
	loaded by the inferior, rather than the list of libraries loaded
	by GDB itself.  Otherwise, GDB ends up reading the symbols from
	the wrong shared libraries...

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

	* i386-linux-tdep.c (i386_linux_sigcontext_addr): Make static.
	(LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONEXT_SP_OFFSET): Remove
	macros.
	(i386_linux_sigtramp_saved_pc, i386_linux_sigtramp_saved_sp):
	Remove functions.
	(FRAMELESS_SIGNAL): Remove function.
	(i386_linux_frame_chain, i386_linux_frame_saved_pc,
	i386_linux_saved_pc_after_call): Removed.
	(i386_linux_init_abi): Initialize tdep->sigcontext_addr,
	tdep->sc_pc_offset and tdep->sc_sp_offset.  Don't override
	frame_chain, frame_saved_pc and saved_pc_after_call any longer.

	* i386-tdep.c (i386_frameless_signal_p): New function.
	(i386_frame_chain): Deal with frameless signals.
	(i386_sigtramp_saved_sp): New function.
	(i386_frame_saved_pc): Deal with frameless signals.
	(i386_saved_pc_after_call): Make sure the correct value is
	returned just after entry into a sigtramp.
	* i386bsd-tdep.c (i386bsd_sc_sp_offset, i386nbsd_sc_sp_offset,
	i386fbsd4_sc_sp_offset): New variables.
	(i386bsd_init_abi, i386nbsd_init_abi, i386fbsd4_init_abi): Use
	these variables to initialize tdep->sc_sp_offset.  * i386bsd-nat.c
	(_initialize_i386bsd_nat): Add sanity check for sc_sp_offset
	similiar to what we already did for sc_pc_offset.
	* i386-sol2-tdep.c (i386_sol2_init_abi): Initialize
	tdep->sc_sp_offset.

	* i386nbsd-tdep.c (fetch_elfcore_registers): Wrap long line.

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

	* config/i386/tm-x86-64linux.h: New.
	* config/i386/x86-64linux.mt: Add GDB_MULTI_ARCH and TM_FILE
	definitions.
	* config/i386/nm-x86-64.h: Rename to ...
	* config/i386/nm-x86-64linux.h: ... this one.
	* config/i386/x86-64linux.mh: Reflect the above change.
	
2002-07-01  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.h (struct gdbarch_tdep): Replace sigtramp_saved_pc
	with sigcontext_addr.  Add sc_sp_offset.
	(i386bsd_sigtramp_saved_pc): Remove prototype.
	(i386bsd_sicontext_addr): Add prototype.
	* i386-tdep.c (i386_sigtramp_saved_pc): New function.
	(i386_frame_saved_pc): Rewrite to call i386_sigtramp_saved_pc.
	(i386_svr4_sigtramp_saved_pc): Removed.
	(i386_svr4_sigcontext_addr): New function.
	(i386_svr4_init_abi): Don't initialize tdep->sigtramp_saved_pc.
	Initialize tdep->sigcontext_addr instead.  Initialize
	tdep->sc_pc_offset and tdep->sc_sp_offset.
	(i386_gdbarch_init): Likewise.
	* i386bsd-tdep.c (i386bsd_sigcontext_addr): Don't make it static
	any more.
	(i386bsd_sigtramp_saved_pc): Remove function.
	(i386bsd_init_abi): Don't initialize tdep->sigtramp_saved_pc.
	Initialize tdep->sigcontext_addr instead.  Initialize
	tdep->sc_pc_offset.
	* i386-linux-tdep.c (i386_linux_init_abi): Remove initialization
	of tdep->sigtramp_saved_pc.
	* i386-sol2-tdep.c (i386_sol2_init_abi): Don't initialize
	tdep->sigtramp_saved_pc.  Initialize tdep->sigcontext_addr
	instead.

	* i386-tdep.c (i386_frameless_function_invocation,
	i386_frame_num_args, i386_frame_init_saved_regs,
	i386_skip_prologue, i386_push_dummy_frame, i386_fix_call_dummy,
	i386_pop_frame, i386_push_arguments, i386_store_struct_return,
	i386_extract_return_value, i386_store_return_value,
	i386_extract_struct_value_address, i386_register_virtual_type,
	i386_register_convertible, i386_register_convert_to_virtual,
	i386_register_convert_to_raw, i386_svr4_sigtramp_saved_pc,
	i386_go32_init_abi, i386_nw_init_abi, i386_gdbarch_init): Make
	static.

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

	* i386bsd-tdep.c (i386bsd_frame_saved_pc): Removed.

	* config/i386/tm-i386sol2.h (COERCE_FLOAT_TO_DOUBLE): Removed.
	* i386-sol2-tdep.c (i386_sol2_init_abi): Adjust for the removal of
	this macro.  Include "value.h".

2002-06-30  Aidan Skinner  <aidan@velvet.net>

	* ada-exp.tab.c: remove as it's a generated file
	* ada-lex.c: remove as it's a generated file
		
2002-06-30  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h (struct frame_info, struct
	frame_saved_regs, struct value, struct type): Remove forward
	declarations.

	* config/i386/tm-linux.h [HAVE_PTRACE_GETFPXREGS]
	(FILL_FPXREGSET, HAVE_SSE_REGS): Remove define.
	* config/i386/nm-linux.h [HAVE_PTRACE_GETFPXREGS]
	(FILL_FPXREGSET): Define.

	* config/i386/tm-nbsd.h (HAVE_SSE_REGS): Remove define.

	* configure.tgt (i[3456]86-*-openbsd*): Fold into
	i[3456]86-*-netbsd* case.
	* config/i386/tm-obsd.h: Removed.
	* config/i386/obsd.mt: Removed.
	* config/i386/obsd.mh (NATDEPFILES): Remove corelow.o and
	core-aout.o.
	(MH_CFLAGS): Add -DYYDEBUG=0.

	* i386bsd-nat.c (_initialize_i386bsd_nat): Define SC_PC_OFFSET to
	i386nbsd_sc_pc_offset on OpenBSD too.

	* config/i386/tm-fbsd.h [!SVR4_SHARED_LIBS]
	(IN_SOLIB_CALL_TRAMPOLINE): Remove define.
	* config/i386/tm-nbsdaout.h (IN_SOLIB_CALL_TRAMPOLINE): Remove
	define.
	* i386bsd-tdep.c: Include "arch-utils.h".
	(i386bsd_aout_in_solib_call_trampoline): New function.
	(i386bsd_init_abi): Set in_solib_call_trampoline to
	i386bsd_aout_in_solib_call_trampoline.
	(i386nbsdelf_init_abi, i386fbsd_init_abi): Set
	in_solib_call_trampoline to generic_in_solib_call_trampoline.

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

	* macrotab.h: Do not include "obstack.h" or "bcache.h".
	(struct obstack, struct bcache): Add opaque declarations.
	* Makefile.in (macrotab_h): Update

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

	* blockframe.c (generic_find_dummy_frame): Change return type to
	``struct regcache''.
	(struct dummy_frame): Replace field ``registers'' with regcache, a
	struct regcache object.
	(generic_find_dummy_frame): Update.
	(generic_push_dummy_frame): Update.  Use regcache_xfree,
	regcache_xmalloc and regcache_cpy.
	(generic_pop_dummy_frame): Update.  Use regcache_cpy and
	regcache_xfree.
	(deprecated_generic_find_dummy_frame): Update.
	(generic_read_register_dummy): Update.  Use
	regcache_read_as_address.
	(generic_call_dummy_register_unwind): Update.  Use regcache_read.
	(generic_get_saved_register): Update.  Use regcache_read.

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

	* Makefile.in (objfiles_h): Add $(bcache_h).
	* objfiles.h: Include "bcache.h".

	* Makefile.in (symtab_h): Remove $(bcache_h).
	* symtab.h: Do not include "bcache.h".

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

	* ppcnbsd-tdep.c (ppcnbsd_init_abi): Set frame_chain_valid to
	generic_func_frame_chain_valid.

2002-06-28  David O'Brien  <obrien@FreeBSD.org>

	* config/i386/nm-fbsd.h: Include <sys/param.h>.
	* config/i386/tm-fbsd.h: Likewise.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Use
	generic_unwind_get_saved_register.

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

	From 2002-06-27 John David Anglin <dave@hiauly1.hia.nrc.ca>:
	* regcache.c (supply_register): Add missing argument to
	register_buffer call.

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

	* Makefile.in (init.c): Drop -e option to grep.  Not necessary and
	Solaris /bin/grep does not not like it.  From Peter Schauer.

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

	* command.h (add_setshow_cmd): Declare.
	(add_setshow_cmd_full): Declare.
	* cli/cli-decode.c (add_setshow_cmd): No longer static.  Now
	returns void.  Use add_setshow_cmd_full.
	(add_setshow_cmd_full): New function.
	(add_setshow_auto_boolean_cmd): Use add_setshow_cmd_full.
	(add_setshow_boolean_cmd): Likewise.

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

	* config/vax/tm-vax.h: Protect from multiple inclusion.
	(TARGET_UPAGES, TARGET_NBPG, STACK_END_ADDR)
	(SIGTRAMP_START, SIGTRAMP_END, SIGCONTEXT_PC_OFFSET): Move to...
	* config/vax/tm-vaxbsd.h: ...here.  New file.
	* config/vax/vax.mt (TM_FILE): Set to tm-vaxbsd.h.

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

	* config/vax/tm-vax.h (BREAKPOINT): Remove.
	(BELIEVE_PCC_PROMOTION): Remove.
	(AP_REGNUM): Move to...
	* config/vax/nm-vax.h: ...here.
	* vax-tdep.c: Use VAX_AP_REGNUM instead of AP_REGNUM.
	(vax_breakpoint_from_pc): New function.
	(vax_gdbarch_init): Initialize gdbarch_breakpoint_from_pc
	and gdbarch_believe_pcc_promotion.

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

	* Makefile.in (vax_tdep_h): Define.  
	(vax-tdep.o): Use $(vax_tdep_h).
	* vax-tdep.c (vax_gdbarch_init): Use generic OS ABI framework.
	(vax_dump_tdep): New function. 
	(_initialize_vax_tdep): Register vax_dump_tdep.
	* vax-tdep.h: Include osabi.h.     
	(struct gdbarch_tdep): New. 

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

	* frame.h (deprecated_generic_find_dummy_frame): Rename
	generic_find_dummy_frame.
	* blockframe.c (generic_find_dummy_frame): Make static.
	(deprecated_generic_find_dummy_frame): New function.
	* sh-tdep.c (sh_nofp_frame_init_saved_regs): Replace
	generic_find_dummy_frame with deprecated_find_dummy_frame.
	(sh64_nofp_frame_init_saved_regs): Ditto.
	(sh_fp_frame_init_saved_regs): Ditto.
	* s390-tdep.c (s390_frame_saved_pc_nofix): Ditto.
	(s390_frame_chain): Ditto.
	* cris-tdep.c (cris_frame_init_saved_regs): Ditto.

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

	* config/m68k/tm-m68k.h: Rearrange code so macros not in the
	gdbarch vector are at the top.
	(NUM_REGS): Remove.
	(FP_REGNUM, SP_REGNUM, PS_REGNUM, PC_REGNUM, FP0_REGNUM): Remove.
	(FRAME_ARGS_ADDRESS): Remove.
	(FRAME_LOCALS_ADDRESS): Remove.
	(FRAME_NUM_ARGS): Remove.
	(FRAME_ARGS_SKIP): Remove.  
	* m68k-tdep.c (enum): Add eumeration of special register numbers.
	(m68k_gdbarch_init): Add gdbarch initializations for macros
	undefined in tm-m68k.h

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

	* monitor.h: Add the function regname to monitor_ops
	structure. This way NUM_REGS does not have to be a constant.
	* monitor.c (monitor_fetch_register): Added support for regname
	function. The function is called if the array regnames is NULL.
	(monitor_store_register): Same.
	* cpu32bug-rom.c (cpu32bug_regname): Add function. Replaces
	regnames array.
	(init_cpu32bug_cmds): set cpu32bug_cmds.regnames to NULL,
	cpu32bug_cmds.regname to point to new function.
	* abug-rom.c (abug_regname): Same as above.
	(init_abug_cmds): Same.
	* dbug-rom.c (dbug_regname): Same as above.
	(init_dbug_cmds): Same.
	* remote-est.c (est_regname): Same. 
	(init_est_cmds): Same.
	* rom68k-rom.c (rom68k_regname): Same. 
	(init_rom68k_cmds): Same.

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

	* breakpoint.c (delete_command): Don't repeat `delete' commands.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* defs.h (XCALLOC): Define.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* m68k-tdep.c: Reindented.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* NEWS: Mention multithreaded debug support for gdbserver.

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

	* MAINTAINERS: Mention NEWS.

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

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

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

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

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

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

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

	* MAINTAINERS: Add self.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* gdbarch.h: Regenerate.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* gdbtypes.h (builtin_type_vec128i): Declare.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* PROBLEMS: Mention s390 and FreeBSD 4.4 build problems.

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

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

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

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

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

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

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

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

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

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

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

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

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

	* MAINTAINERS: Remove status `OBSOLETE' from v850.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* h8300-tdep.c: Fix formatting.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* NEWS: Note addition of macro support.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* MAINTAINERS: Update my email address.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Add macro structures to GDB's symbol tables.  Nobody puts anything
	in them yet.
	* symtab.h (struct symtab): New member: `macro_table'.
	* buildsym.h (pending_macros): New global variable.
	* buildsym.c: #include "macrotab.h".
	(buildsym_init): Initialize `pending_macros'.
	(end_symtab): If we found macro information while reading a CU's
	debugging info, do build a symtab structure for it.  Make the
	symtab point to the macro information, and clear the
	`pending_macros' pointer which held it while we were reading the
	debug info.
	(really_free_pendings): Free any pending macro table.
	* objfiles.h (struct objfile): New member: `macro_cache'.
	* objfiles.c (allocate_objfile): Set allocate and free functions
	for the macro cache's objstack.
	(free_objfile): Empty the macro cache's obstack.
	* symfile.c (reread_symbols): Empty the macro cache's obstack, and
	set new allocate and free functions for it.
	* solib-sunos.c (allocate_rt_common_objfile): Set allocate and
	free functions for the macro cache's objstack.  (Why is this
	function building its own objfile?)
	* symmisc.c (print_objfile_statistics): Print statistics on the
	macro bcache.
	* Makefile.in: Note that buildsym.o depends on macrotab.h.

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

	* config/arm/nm-nbsd.h: Use <> for include of config/nm-nbsd.h.
	(REGISTER_U_ADDR): Delete definition.
	(arm_register_u_addr): Delete declaration.

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

	* arm-linux-tdep.c (ARM_LINUX_JB_PC): Renamed from JB_PC.
	(ARM_LINUX_JB_ELEMENT_SIZE): Likewise.

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

	* regcache.c (register_valid): Revise comments refering to "Not
	available" and "unavailable".
	* frame.c (frame_register_read): Ditto.
	* findvar.c (value_of_register): Ditto.

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

	* Makefile.in (remote_sim_h): Replace remote-sim_h.
	(remote-sim.o): Update dependencies.
	(d10v-tdep.o): Specify dependencies.
	(sim_d10v_h): Define.

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

	* macroexp.c (init_buffer, gather_arguments, expand): Use NULL, not 0.
	* macrotab.c (macro_lookup_inclusion, find_definition,
	new_macro_table): Same.
	
	* macroexp.c (currently_rescanning, expand): Use `strcmp () == 0',
	not `! strcmp ()'.  This is a dubious improvement.
	* macrotab.c (macro_lookup_inclusion, find_definition): Same.

	* macrotab.c (macro_lookup_inclusion): Initialize `best_depth',
	although it's not necessary, to avoid a warning.

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

	* gdbtypes.h: Update accessor macros to use TYPE_MAIN_TYPE.
	(TYPE_CONST, TYPE_VOLATILE, TYPE_CODE_SPACE, TYPE_DATA_SPACE): Use
	TYPE_INSTANCE_FLAGS.
	(struct main_type): New.
	(struct type): Move most members to struct main_type.  Change
	cv_type and as_type to new type_chain member.  Add instance_flags.
	(TYPE_MAIN_TYPE, TYPE_CHAIN, TYPE_INSTANCE_FLAGS): New macros.
	(TYPE_CV_TYPE, TYPE_AS_TYPE): Remove.
	(finish_cv_type): Remove prototype.
	* gdbtypes.c (alloc_type): Update comment.  Allocate TYPE_MAIN_TYPE.
	Set TYPE_CHAIN.
	(alloc_type_instance): New function.
	(smash_type): New function.
	(make_pointer_type, make_reference_type, make_function_type)
	(smash_to_member_type, smash_to_method_type): Call smash_type.
	(make_qualified_type): New function.
	(make_type_with_address_space): Call make_qualified_type.
	(make_cv_type): Likewise.
	(finish_cv_type): Remove unnecessary function.
	(replace_type): Update comment.  Copy TYPE_MAIN_TYPE.
	(recursive_dump_type): Dump TYPE_CHAIN and TYPE_INSTANCE_FLAGS;
	remove TYPE_CV_TYPE and TYPE_AS_TYPE.
	* c-typeprint.c (c_type_print_modifier): Use TYPE_INSTANCE_FLAGS.
	* dwarf2read.c (read_structure_scope): Don't call finish_cv_type.
	* hpread.c (hpread_read_struct_type): Likewise.
	* stabsread.c (read_struct_type): Likewise.

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

	* configure.tgt: Add a catch all sh* target, for cases like
	sh[2,3,4]-elf and sh-hms.

2002-05-14  Keith Seitz  <keiths@redhat.com>

	* event-loop.c (create_file_handler): Don't do anything but
	update data when we are given a fd which we are already
	monitoring.

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

	* dwarf2cfi.c (context_cpy): Copy registers correctly.
	(update_context): Use __func__ in warnings.
	
2002-05-14  Daniel Jacobowitz  <drow@mvista.com>

	* ser-tcp.c: Include <netinet/udp.h>.  Rename tcp_open
	and tcp_close to net_open and net_close.
	(net_open): Accept "udp:" and "tcp:" specifications.  Connect
	using UDP if requested.  Don't try to disable Nagle on UDP
	sockets.
	* remote.c (remote_serial_open): New function.  Warn about UDP.
	(remote_open_1, remote_async_open_1, remote_cisco_open): Call it.

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

	* MAINTAINERS: List sh-elf as buildable with ,-Werror.

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

	* configure.tgt: Remove sh-hms target.
	* MAINTAINERS: Don't list sh-hms as a separate target.

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

	Add first preprocessor macro-expansion files.
	* macroexp.c, macroexp.h, macrotab.c, macrotab.h: New files.
	* Makefile.in (SFILES): Add macrotab.c, macroexp.c.
	(splay_tree_h, macroexp_h, macrotab_h): New variable.
	(HFILES_NO_SRCDIR): Add macrotab.h, macroexp.h.
	(COMMON_OBS): Add macrotab.o, macroexp.o.
	(macroexp.o, macrotab.o): New rules.

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

	* config/m88k/tm-m88k.h: Update copyright.
	(m88k_target_write_pc): Declare
	(TARGET_WRITE_PC): Redefine using m88k_target_write_pc.
	(M88K_NNPC_REGNUM): Rename NNPC_REGNUM.
	(SHIFT_INST_REGS): Update definition.
	* m88k-tdep.c (m88k_target_write_pc): New function.  Implement
	using old definition of TARGET_WRITE_PC.
	* regcache.c (generic_target_write_pc): Delete code handling
	NNPC_REGNUM.
	* gdbarch.sh (NNPC_REGNUM): Delete.
	* gdbarch.h, gdbarch.c: Regenerate.

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

	* builtin-regs.c (value_of_builtin_reg): Correctly calculate the
	builtin reg number.

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

	* ax-gdb.c (gen_sign_extend, gen_fetch, gen_usual_unary)
	(gen_cast, gen_scale, gen_add, gen_sub, gen_binop, gen_deref)
	(gen_address_of, gen_struct_ref, gen_repeat): Use type
	access macros.
	* c-typeprint.c (cp_type_print_method_args): Likewise.
	(c_type_print_args): Likewise.
	* d10v-tdep.c (d10v_push_arguments): Likewise.
	(d10v_extract_return_value): Likewise.
	* expprint.c (print_subexp): Likewise.
	* gdbtypes.c (lookup_primitive_typename): Likewise.
	(lookup_template_type, add_mangled_type, print_arg_types): Likewise.
	* gdbtypes.h (TYPE_UNSIGNED, TYPE_NOSIGN, TYPE_STUB)
	(TYPE_TARGET_STUB, TYPE_STATIC, TYPE_CONST, TYPE_VOLATILE)
	(TYPE_PROTOTYPED, TYPE_INCOMPLETE, TYPE_CODE_SPACE, TYPE_VARARGS)
	(TYPE_VECTOR): Likewise.
	* hpread.c (hpread_read_struct_type)
	(fix_static_member_physnames, fixup_class_method_type)
	(hpread_type_lookup): Likewise.
	* mdebugread.c (parse_symbol, parse_type): Likewise.
	* p-lang.c (is_pascal_string_type): Likewise.
	* valops.c (hand_function_call): Likewise.
	* x86-64-tdep.c (classify_argument): Likewise.

	* hpread.c (hpread_read_function_type)
	(hpread_read_doc_function_type): Call replace_type.
	* dstread.c (create_new_type): Delete.
	(decode_dst_structure, process_dst_function): Call alloc_type.
	Use type access macros.

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

	* i387-tdep.c (i387_supply_fxsave): Skip the SSE registers if
	the're not supported by the current architecture.
	(i387_fill_fxsave): Likewise.

2002-05-12  Fred Fish  <fnf@redhat.com>

	* symfile.c (default_symfile_offsets): Arrange for uninitialized
	sect_index_xxx members to index the first slot in section_offsets
	if all of the section_offsets are zero.

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

	* configure.tgt (sparc-*openbsd): Remove entry accidentially
	checked in with last change.

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

	* configure.tgt (i[3456]86-*-unixware*, i[3456]86-*-unixware2*):
	Remove targets.  These are canonicalized to i386-*-sysv4.2uw by
	config.sub.

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

	* Makefile.in: Update dependencies.

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

	* language.c (local_hex_string_custom): Simplify.  Do not depend
	on PRINTF_HAS_LONG_LONG or CC_HAS_LONG_LONG.

	* memattr.c (mem_info_command): Replace calls to
	longest_local_hex_string and longest_local_hex_string_custom.
	* buildsym.c (make_blockvector): Ditto.
	* solib.c (info_sharedlibrary_command): Ditto.
	* tracepoint.c (tracepoints_info): Ditto.
	* symtab.c (print_msymbol_info): Ditto.

	* language.c (local_hex_string): Delete.
	(local_hex_string_custom): Delete.
	(longest_local_hex_string): Rename to local_hex_string.
	(longest_local_hex_string_custom): Rename to
	local_hex_string_custom.
	* language.h (local_hex_string): Change parameter type to LONGEST.
	(local_hex_string_custom): Ditto.
	(longest_local_hex_string): Delete declaration.
	(longest_local_hex_string_custom): Ditto.

	* solib.c: Update copyright.
	* memattr.c: Update copyright.
	
2002-05-11  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.h (legacy_register_to_value): Declare.
	(legacy_value_to_register): Declare.
	(legacy_convert_register_p): Declare.
	* arch-utils.c (legacy_register_to_value): New function.
	(legacy_value_to_register): New function.
	(legacy_convert_register_p): New function.

	* gdbarch.sh (REGISTER_TO_VALUE): Define.
	(VALUE_TO_REGISTER): Define.
	(CONVERT_REGISTER_P): Define.
	* gdbarch.h, gdbarch.c: Regenerate.

	* valops.c (value_assign): Use CONVERT_REGISTER_P and
	VALUE_TO_REGISTER.
	* findvar.c (value_from_register): Use REGISTER_TO_VALUE and
	CONVERT_REGISTER_P.

2005-05-11  Daniel Jacobowitz  <drow@mvista.com>
	    Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* Makefile.in: Update dependencies for valops.c.
	* valops.c: Include "gdb_assert.h".
	(typecmp): Skip THIS parameter to methods.
	(find_method_list): Remove static_memfuncp argument,
	update callers.  Check for stub methods.
	(find_value_oload_method_list): Don't set *static_memfuncp.
	(find_overload_match): Don't check for stub methods.  Assert
	that methods are not stubbed.  Handle static methods.
	(value_find_oload_method_list): Remove static_memfuncp argument.
	* gdbtypes.c (check_stub_method): Do not add THIS pointer
	to the argument list for static stub methods.
	* value.h (value_find_oload_method_list): Update prototype.

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

	* arch-utils.h (generic_register_size): Declare.
	(generic_register_raw_size, generic_register_virtual_size): Delete
	declarations.
	* arch-utils.c (generic_register_raw_size): Delete.
	(generic_register_size): New function.
	(generic_register_virtual_size): Delete.

	* gdbarch.sh (REGISTER_RAW_SIZE, REGISTER_VIRTUAL_SIZE): Make
	default generic_register_size.
	* gdbarch.h, gdbarch.c: Re-generate.
	
	* d10v-tdep.c (d10v_gdbarch_init): Use generic_register_size for
	register_virtual_size.
	* x86-64-tdep.c (x86_64_gdbarch_init): Ditto.
	* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.

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

	* gdbarch.sh (gdbarch_data): Add gdbarch parameter.
	* gdbarch.h, gdbarch.c: Regenerate.
	* gnu-v3-abi.c: Update copyright.
	(vtable_address_point_offset): Update.
	(gnuv3_rtti_type): Update.
	(gnuv3_baseclass_offset): Update.
	* solib-svr4.c (svr4_fetch_link_map_offsets): Update.
	(init_fetch_link_map_offsets): Update.
	* remote.c (get_remote_state): Update.
	
2002-05-11  Daniel Jacobowitz  <drow@mvista.com>

	* TODO: Remove value_headof/value_from_vtable_info comment.
	* printcmd.c (print_command_1): Don't call value_from_vtable_info.
	* values.c (value_headof, value_from_vtable_info): Delete.
	* value.h (value_from_vtable_info): Delete prototype.

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

	* Makefile.in: Replace gdb_assert.h with $(gdb_assert_h),
	gdb_string.h with $(gdb_string_h) and gdb_regex.h with
	$(gdb_regex_h).
	(gdb_assert_h): Define.
	(gdb_wait_h): Define.
	(gdb_regex_h): Define.

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

	From Peter Schauer <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>:
	* linespec.c (find_methods): Handle GCC 3.x template constructors.

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

	* nbsd-tdep.c: Fix comment.

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

	* Makefile.in (ALLDEPFILES): Add nbsd-tdep.c.
	(alphanbsd-tdep.o): Add nbsd-tdep.h to dependency list.
	(nbsd-tdep.o): New dependency list.
	* alphanbsd-tdep.c: Don't include solib-svr4.h.  Include
	nbsd-tdep.h.
	(alphanbsd_solib_svr4_fetch_link_map_offsets): Remove.
	(alphanbsd_init_abi): Use nbsd_lp64_solib_svr4_fetch_link_map_offsets.
	* nbsd-tdep.c: New file.
	* nbsd-tdep.h: New file.
	* shnbsd-tdep.c: Don't include solib-svr4.h.  Include
	nbsd-tdep.h.
	(shnbsd_solib_svr4_fetch_link_map_offsets): Remove.
	(shnbsd_init_abi): Use nbsd_ilp32_solib_svr4_fetch_link_map_offsets.
	* config/alpha/nbsd.mt (TDEPFILES): Add nbsd-tdep.o.
	* config/sh/nbsd.mt (TDEPFILES): Ditto.

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

	* config/alpha/nbsd.mh (NATDEPFILES): Remove corelow.o.
	* config/alpha/nbsd.mt (TDEPFILES): Add corelow.o.
	* config/i386/nbsd.mh (NATDEPFILES): Remove corelow.o.
	* config/i386/nbsd.mt (TDEPFILES): Add corelow.o.
	* config/i386/nbsdelf.mh (NATDEPFILES): Remove corelow.o.
	* config/i386/nbsdelf.mt (TDEPFILES): Add corelow.o.

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

	* config/i386/nbsd.mh (NATDEPFILES): Use line continuations.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/m68k/nbsd.mh (NATDEPFILES): Likewise.
	* config/ns32k/nbsd.mh (NATDEPFILES): Likewise.
	* config/powerpc/nbsd.mh (NATDEPFILES): Likewise.
	* config/sparc/nbsd.mh (NATDEPFILES): Likewise.
	* config/sparc/nbsdelf.mh (NATDEPFILES): Likewise.

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

	* i386nbsd-nat.c: Delete file.  Move fetch_core_registers and
	fetch_elfcore_registers to...
	* i386nbsd-tdep.c: ...here.
	(i386nbsd_use_struct_convention): Rename to...
	(i386nbsd_aout_use_struct_convention): ...this.
	(i386nbsd_supply_reg): New function.
	(i386nbsd_fill_reg): New function.
	(fetch_core_registers): Use i386nbsd_supply_reg.
	(fetch_elfcore_registers): Likewise.
	(_initialize_i386nbsd_tdep): New function.
	* config/i386/nbsd.mh (NATDEPFILES): Remove i386nbsd-nat.o.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/i386/nbsdelf.mt (TDEPFILES): Add i386nbsd-tdep.o.
	* config/i386/tm-nbsd.h (i386nbsd_use_struct_convention): Rename to...
	(i386nbsd_aout_use_struct_convention): ...this.

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

	* shnbsd-nat.c (fetch_inferior_registers): Use shnbsd_supply_reg.
	(store_inferior_registers): Use shnbsd_fill_reg.
	* shnbsd-tdep.c (sh_nbsd_supply_registers, 
	sh_nbsd_supply_register): Collapse into...
	(shnbsd_supply_reg): ...this.
	(sh_nbsd_fill_registers, sh_nbsd_fill_register): Collapse into...
	(shnbsd_fill_reg): ...this.
	(sh_nbsd_solib_svr4_fetch_link_map_offsets): Rename to...
	(shnbsd_solib_svr4_fetch_link_map_offsets): ...this.
	(fetch_core_registers): Use shnbsd_supply_reg.
	(fetch_elfcore_registers): Use shnbsd_supply_reg.
	(sh_nbsd_core_fns): Rename to...
	(shnbsd_core_fns): ...this.
	(sh_nbsd_elfcore_fns): Rename to...
	(shnbsd_elfcore_fns): ...this.
	(sh_nbsd_init_abi): Rename to...
	(shnbsd_init_abi): ...this.
	(_initialize_sh_nbsd_tdep): Rename to...
	(_initialize_shnbsd_tdep): ...this.
	* shnbsd-tdep.h (sh_nbsd_supply_registers,
	sh_nbsd_supply_register, sh_nbsd_fill_registers,
	sh_nbsd_fill_register): Remove prototypes.
	(shnbsd_supply_reg, shnbsd_fill_reg): Add prototypes.

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

	* Makefile.in (ALLDEPFILES): Remove i387-nat.c.
	(i387-nat.o): Delete dependency list.
	(go32-nat.o): Change i387-nat.h to i387-tdep.h.
	(x86-64-linux-nat.o): Likewise.
	* i387-nat.c: Delete file, moving contents to...
	* i387-tdep.c: ...here.
	* i387-nat.h: Rename...
	* i387-tdep.h: ...to this.
	* go32-nat.c: Include i387-tdep.h instead of i387-nat.h.
	* i386-linux-nat.c: Likewise.
	* i386bsd-nat.c: Likewise.
	* i386gnu-nat.c: Likewise.
	* i386nbsd-nat.c: Likewise.
	* i386v4-nat.c: Likewise.
	* x86-64-linux-nat.c: Likewise.
	* config/i386/fbsd.mh (NATDEPFILES): Remove i387-nat.o.
	* config/i386/go32.mh (NATDEPFILES): Likewise.
	* config/i386/i386gnu.mh (NATDEPFILES): Likewise.
	* config/i386/i386sol2.mh (NATDEPFILES): Likewise.
	* config/i386/i386v42mp.mh (NATDEPFILES): Likewise.
	* config/i386/linux.mh (NATDEPFILES): Likewise.
	* config/i386/nbsd.mh (NATDEPFILES): Likewise.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/i386/obsd.mh (NATDEPFILES): Likewise.
	* config/i386/x86-64linux.mh (NATDEPFILES): Likewise.

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

	* Makefile.in (ALLDEPFILES): Remove alphanbsd-nat.c.
	(alphanbsd-nat.o): Remove dependency list.
	(alphanbsd-tdep.o): Add $(regcache_h) to dependency list.
	* alphanbsd-nat.c: Delete.  Contents moved to...
	* alphanbsd-tdep.c: ...here.
	(_initialize_alphanbsd_tdep): Register core functions.
	* config/alpha/nbsd.mh (NATDEPFILES): Remove alphanbsd-nat.o.

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

	* Makefile.in (ALLDEPFILES): Add alphabsd-tdep.c.
	(alphabsd-nat.o): Depend on alphabsd-tdep.h.
	(alphanbsd-nat.o): Likewise.
	(alphabsd-tdep.o): New dependency list.
	* alphabsd-nat.c (supply_gregset): Use alphabsd_supply_reg.
	(fill_gregset): Use alphabsd_fill_reg.
	(supply_fpregset): Use alphabsd_supply_fpreg.
	(fill_fpregset): Use alphabsd_fill_fpreg.
	(fetch_inferior_registers): Use struct reg and struct fpreg
	rather than gregset_t and fpregset_t.  Use alphabsd_supply_reg
	and alphabsd_supply_fpreg.
	(store_inferior_registers): Use struct reg and struct fpreg
	rather than gregset_t and fpregset_t.  Use alphabsd_fill_reg
	and alphabsd_fill_fpreg.
	* alphabsd-tdep.c: New file.
	* alphabsd-tdep.h: New file.
	* alphanbsd-nat.c (fetch_core_registers): Use alphabsd_supply_fpreg.
	(fetch_elfcore_registers): Use alphabsd_supply_reg and
	alphabsd_supply_fpreg.
	* config/alpha/fbsd.mt (TDEPFILES): Add alphabsd-tdep.o.
	* config/alpha/nbsd.mt (TDEPFILES): Likewise.

2002-05-11  Eric Christopher  <echristo@redhat.com>

	* mips-tdep.c (mips_double_register_type): Fix thinko.
	(mips_single_register_type): Ditto.
	* MAINTAINERS: Add self.

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

	* i387-nat.c (i387_supply_register, i387_fill_fsave,
	i387_supply_fxsave, i387_fill_fxsave): Rewrite in order to do the
	right thing on architectures with different endianness and/or
	integer sizes.

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

	From Christian Limpach <chris@Pin.LU>
	* configure.in: Change sed expression which comments out
	NATDEPFILES to also comment out continuation lines.
	* configure: Regenerate.

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

        * sh-tdep.c: Clean up code erroneously reintroduced by previous
	big patch.

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

        * sh-tdep.c: Include correct file.

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

        New support for sh64-elf (sh5) target.

        * configure.tgt: For sh64-elf target, default to sh-elf.

        * config/sh/tm-sh.h (enum sh-abi): Possible ABI's.
        (struct gdbarch_tdep): Add new fields for new registers and ABI
        info.

        * sh-tdep.c: Include elf-bfd.h, elf/sh.h, gdb/sim-sh.h.
        (NUM_PSEUDO_REGS_SH_MEDIA, NUM_PSEUDO_REGS_SH_COMPACT,
        MSYMBOL_IS_SPECIAL, IS_ISA32_ADDR, MAKE_ISA32_ADDR,
        UNMAKE_ISA32_ADDR, IS_PTABSL_R18, IS_STS_R0, IS_STS_PR,
        IS_MOV_TO_R15, IS_MOV_R14, IS_STQ_R18_R14, IS_STQ_R18_R15,
        IS_STL_R18_R15, IS_STQ_R14_R15, IS_STL_R14_R15, IS_ADDIL_SP_MEDIA,
        IS_ADDI_SP_MEDIA, IS_ADDL_SP_FP_MEDIA, IS_ADD_SP_FP_MEDIA,
        IS_MOV_SP_FP_MEDIA, IS_MOV_R0, IS_MOVL_R0, IS_ADD_SP_R0,
        IS_MOV_R14_R0, IS_MEDIA_IND_ARG_MOV, IS_MEDIA_ARG_MOV,
        IS_MEDIA_MOV_TO_R14, IS_COMPACT_IND_ARG_MOV, IS_COMPACT_ARG_MOV,
        IS_COMPACT_MOV_TO_R14, IS_JSR_R0, IS_NOP): New macros.
        (sh_sh64_register_name, sh64_elf_make_msymbol_special,
        pc_is_isa32, sh_sh64_breakpoint_from_pc, look_for_args_moves,
        sh64_skip_prologue_hard_way, sh64_use_struct_convention,
        gdb_print_insn_sh64, translate_insn_rn, sh64_frame_chain,
        sh64_get_saved_pr, fpp_reg_base_num, is_media_pseudo,
        sh64_get_gdb_regnum, sh64_media_reg_base_num,
        sh64_compact_reg_base_num, translate_rn_to_arch_reg_num,
        sign_extend, sh64_nofp_frame_init_saved_regs,
        sh64_init_extra_frame_info, sh64_get_saved_register,
        sh64_extract_struct_value_address, sh64_pop_frame,
        sh64_push_arguments, sh64_extract_return_value,
        sh64_store_return_value, sh64_show_media_regs,
        sh64_show_compact_regs, sh64_show_regs, sh_sh64_register_byte,
        sh_sh64_register_raw_size, sh_sh64_register_virtual_size,
        sh_sh64_register_virtual_type,
        sh_sh64_register_convert_to_virtual,
        sh_sh64_register_convert_to_raw, sh64_pseudo_register_read,
        sh64_register_read, sh64_pseudo_register_write,
        sh64_register_write, do_fv_c_register_info, do_dr_c_register_info,
        do_r_c_register_info, do_fpp_register_info, do_cr_c_register_info,
        sh64_do_pseudo_register, sh_compact_do_registers_info,
        sh64_do_registers_info, sh_gdbarch_init): New functions.

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

	* sh-tdep.c (sh_breakpoint_from_pc): Add 'const' to return type.

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

	* linespec.c (decode_line_1): Check for a double quote after
	a filename correctly.

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

	Properly track the size of the current objfile's .debug_line section.
	* dwarf2read.c (struct dwarf2_pinfo): New member: dwarf_line_size.
	(DWARF_LINE_SIZE): New macro.
	(dwarf2_build_psymtabs_hard): Record the line section's size in
	the partial symbol table.
	(psymtab_to_symtab_1): Restore dwarf_line_size from the partial
	symbol table.

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

	* ia64-tdep.c: Handle breakpoints on L instruction type
	in MLX instruction bundle by moving the breakpoint to
	the third slot (X instruction type) as L holds only data.

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

	* dbxread.c (discarding_local_symbols_complaint): New complaint.
	(process_one_symbol): Complain about discarding local symbols
	due to a misplaced N_LBRAC entry.

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

	From Daniel Berlin <dan@cgsoftware.com>
	* linespec.c (find_toplevel_char): '<' and '>' also increase and
	decrease the depth we are at, in the case of templates.

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

	* mips-tdep.c (mips_float_register_type): New function.
	(mips_double_register_type): New function.
	(mips_print_register): Use them.
	(do_fp_register_row): Likewise.

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

	* signals/signals.c (signals): Remove conditional compilation around
	Mach-specific signals.  Move them to after TARGET_SIGNAL_DEFAULT.
	(target_signal_from_name): Loop until TARGET_SIGNAL_LAST.

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

	* remote-rdp.c (remote_rdp_can_run): Remove.

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

	* jv-valprint.c (java_val_print): Handle `char' as a special case
	of TYPE_CODE_INT.

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

	* arm-tdep.c (arm_scan_prologue): Accept strb r(0123),[r11,#-nn],
	strh r(0123),[r11,#-nn], str r(0123),[r11,#-nn], as well as
	strb r(0123),[sp,#nn], strh r(0123),[sp,#nn] and
	str r(0123),[sp,#nn].
	(arm_skip_prologue): Ditto.  Also make disassembly
	order-independent by placing it in a loop.

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

	* stabsread.c (read_type): Add recognition for new attribute:
	"@V;" means that an array type is actually a vector.
	This is analogous to the vector flag that's been added to dwarf2.

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

	* i386-tdep.h (i386_abi): New enum.
	(struct gdbarch_tdep): Replace os_ident member with abi.
	(i386_gdbarch_register_os_abi): New prototype.
	* i386-tdep.c (i386_abi_names): New array.
	(process_note_abi_tag_sections): Removed.
	(process_note_sections): New function.
	(i386_elf_abi_from_note, i386_elf_abi): New functions.
	(struct i386_abi_handler): New struct.
	(i386_abi_handler_list): New variable.
	(i386_gdbarch_register_os_abi): New function.
	(i386_gdbarch_init): Adapt for the changes given above.

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

	* gregset.h: Say "GNU/Linux".

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

	* gdbtypes.c : Add new builtin type for 64 bit vectors.
        (build_gdbtypes): Build builtin_type_v2_float.
	(_initialize_gdbtypes): Register new builtin type.

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

	* gdbarch.sh (init_gdbarch_swap): Do not clear the swap section.
	(clear_gdbarch_swap): New function.
	(initialize_non_multiarch): Call.
	(gdbarch_update_p): Before calling init(), swap out and clear the
	existing architecture.
	* gdbarch.c: Regenerate.

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

	* config/djgpp/fnchange.lst: Add alphanbsd-nat.c and
	alphanbsd-tdep.c.

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

	* sh-nbsd-nat.c: Rename to...
	* shnbsd-nat.c: ...this.
	* sh-nbsd-tdep.c: Rename to...
	* shnbsd-tdep.c: ...this.
	* sh-nbsd-tdep.h: Rename to...
	* shnbsd-tdep.h: ...this.
	* config/sh/nbsd.mh: Use shnbsd-nat.o.
	* config/sh/nbsd.mt: Use shnbsd-tdep.o.

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

	* remote-rdi.c (_initializie_remote_rdi): Use ANSI-style string
	concatenation for command help messages.

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

	* NEWS: Note new sh*-*-netbsdelf* configuration.
	* configure.host: Set gdb_host_cpu to sh for all sh*.
	(sh*-*-netbsdelf*): New host.
	* configure.tgt: Set gdb_target_cpu to sh for all sh*.
	(sh*-*-netbsdelf*): New target.
	* sh-nbsd-nat.c: New file.
	* sh-nbsd-tdep.c: New file.
	* sh-nbsd-tdep.h: New file.
	* config/sh/nbsd.mh: New file.
	* config/sh/nbsd.mt: New file.
	* config/sh/nm-nbsd.h: New file.
	* config/sh/tm-nbsd.h: New file.

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

	* sh-tdep.c (sh_osabi_names): Declare.
	(process_note_abi_tag_sections): New function.
	(get_elfosabi): Ditto.
	(sh_gdbarch_register_os_abi): Ditto.
	(sh_dump_tdep): Ditto.
	_initialize_sh_tdep): Use gdbarch_register to register
	sh_gdbarch_init and sh_dump_tdep.
	* config/sh/tm-sh.h (sh_osabi): Declare.
	(gdbarch_tdep): Add sh_osabi and osabi_name members.

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

	* arm-tdep.c (arm_skip_prologue): Handle generic dummy frames.
	(thumb_scan_prologue): Ditto.
	(arm_find_callers_reg): Ditto.
	(arm_frame_chain): Ditto.
	(arm_init_extra_frame_info): Ditto.
	(arm_frame_saved_pc): Ditto.
	(arm_pop_frame): Ditto.
	(arm_push_return_address): New function.
	(arm_gdbarch_init): Initialize use_generic_dummy_frames,
	call_dummy_location, call_dummy_breakpoint_offset_p,
	call_dummy_breakpoint_offset, call_dummy_p,
	call_dummy_stack_adjust_p, call_dummy_words,
	sizeof_call_dummy_words, call_dummy_start_offset,
	call_dummy_length, fix_call_dummy, pc_in_call_dummy,
	call_dummy_address, push_return_address and push_dummy_frame for
	generic dummy frames.

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

	* sh-tdep.c (sh_nofp_frame_init_saved_regs): Fix error in
	size computation for alloca.
	(sh_fp_frame_init_saved_regs): Likewise.

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

	* arm-tdep.h (ARM_MAX_REGISTER_RAW_SIZE): Define.
	(ARM_MAX_REGISTER_VIRTUAL_SIZE): Define.
	* arm-tdep.c (arm_store_return_value): Use them.
	Use FP_REGISTER_RAW_SIZE when setting the FPA return value.
	* remote-rdp.c (remote_rdp_fetch_register): Use
	ARM_MAX_REGISTER_RAW_SIZE.
	(remote_rdp_store_register): Likewise.

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

	* dwarf2cfi.c: Code cleanup, removed unused variables,
	added default labels to switch {} statements.
	* x86-64-tdep.c: Ditto.
	* x86-64-linux-nat.c: Ditto.

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

	* solib.h: Protect against multiple inclusion.

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

	Add first preprocessor macro-expansion files.
	* macroexp.c, macroexp.h, macrotab.c, macrotab.h: New files.
	* Makefile.in (SFILES): Add macrotab.c, macroexp.c.
	(splay_tree_h, macroexp_h, macrotab_h): New variable.
	(HFILES_NO_SRCDIR): Add macrotab.h, macroexp.h.
	(COMMON_OBS): Add macrotab.o, macroexp.o.
	(macroexp.o, macrotab.o): New rules.

	Separate the job of reading the line number info statement program
	header (...expialidocious) out into its own function.
	* dwarf2read.c (struct line_head, struct filenames, struct
	directories): Replace with...
	(struct line_header): New structure, containing the full
	contents of the statement program header, including the
	include directory and file name tables.
	(read_file_scope): If we have line number info, instead of just
	calling dwarf_decode_lines to do all the work, call
	dwarf_decode_line_header first to get a `struct line_header'
	containing the data in the statement program header, and then
	pass that to dwarf_decode_lines, which will pick up where that
	left off.  Be sure to clean up the `struct line_header' object.
	(dwarf_decode_line_header, free_line_header, add_include_dir,
	add_file_name): New functions.
	(dwarf_decode_lines): Move all the code to read the statement
	program header into dwarf_decode_line_header.  Take the line
	header it built as the first argument, instead of the offset to
	the compilation unit's line number info.  Use the new `struct
	line_header' type instead of the old structures.  No need to do
	cleanups here now, since we don't allocate anything.
	(dwarf2_statement_list_fits_in_line_number_section,
	dwarf2_line_header_too_long): New complaints.

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

	* gdbtypes.c (init_vector_type): New function.
	(build_builtin_type_vec128): Simplify the representation of SIMD
	registers.
	(build_gdbtypes): Initialize new builtin vector types.
	(_initialize_gdbtypes): Register new vector types with gdbarch.
	(builtin_type_v4_float, builtin_type_v4_int32,
	builtin_type_v8_int16, builtin_type_v16_int8,
	builtin_type_v2_int32, builtin_type_v4_int16,
	builtin_type_v8_int8): New (renamed) SIMD types.

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

	* i387-nat.c (i387_fill_fsave): Use regcache_collect.
	(i387_fill_fxsave): Likewise.

2002-05-05  Alexandre Oliva  <aoliva@redhat.com>

	* alpha-tdep.c (alpha_extract_return_value): Don't use
	non-constant array size in prototype.

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

	From Brian Taylor <briant at model dot com>:
	* ui-out.c (ui_out_field_core_addr): Use the function
	longest_local_hex_string_custom'to format addresses > 32 bits
	wide.

	* ui-out.c (ui_out_field_core_addr): Update comment.

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

	* stack.c (select_and_print_frame): Make static.  Delete the
	parameter `level'.
	(func_command): Update call.
	(select_frame_command): Delete code computing the frame level.
	* frame.h (select_and_print_frame): Delete declaration.

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

	* sparc-tdep.c (sparc_get_saved_register): Comment why
	get_prev_frame call is safe.

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

	* frame.h (select_frame): Delete level parameter.
	* stack.c (select_frame): Update.  Use frame_relative_level to
	obtain the frame's level.
	(select_and_print_frame): Update call.
	(select_frame_command): Ditto.
	(up_silently_base): Ditto.
	(down_silently_base): Ditto.
	* ocd.c (ocd_start_remote): Ditto.
	* remote-rdp.c (remote_rdp_open): Ditto.
	* remote-mips.c (mips_initialize): Ditto.
	(common_open): Ditto.
	* remote-e7000.c (e7000_start_remote): Ditto.
	* m3-nat.c (select_thread): Ditto.
	* hppa-tdep.c (child_get_current_exception_event): Ditto.
	(child_get_current_exception_event): Ditto.
	* varobj.c (varobj_create): Ditto.
	(varobj_update): Ditto.
	(c_value_of_root): Ditto.
	* tracepoint.c (finish_tfind_command): Ditto.
	* corelow.c (core_open): Ditto.
	* arch-utils.c (generic_prepare_to_proceed): Ditto.
	* thread.c (info_threads_command): Ditto.
	(switch_to_thread): Ditto.
	* infrun.c (normal_stop): Ditto.
	(restore_selected_frame): Ditto.
	(restore_inferior_status): Ditto.
	* breakpoint.c (insert_breakpoints): Ditto.
	(watchpoint_check): Ditto.
	(bpstat_stop_status): Ditto.
	(do_enable_breakpoint): Ditto.
	* blockframe.c (flush_cached_frames): Ditto.
	(reinit_frame_cache): Ditto.

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

	* MAINTAINERS (Host/Native): Add Jason Thorpe as NetBSD
	maintainer.

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

	* gdbtypes.c (replace_type): Doc fix.

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

	* valprint.c (strcat_longest): Delete commented out function.
	Update copyright.

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

	* MAINTAINERS: Mark a29k as deleted.
	* NEWS: Mention that a29k was removed.  Add OBSOLETE section.
	Move new configurations to the top.
	* configure.tgt: Remove a29k.
	* config/a29k/tm-vx29k.h: Delete.
	* config/a29k/vx29k.mt: Delete.
	* config/a29k/tm-a29k.h: Delete.
	* config/a29k/a29k-udi.mt: Delete.
	* config/a29k/a29k.mt: Delete.
	* a29k-tdep.c: Delete.
	* remote-udi.c: Delete.
	* remote-mm.c: Delete.
	* remote-eb.c: Delete.
	* remote-adapt.c: Delete.
	* Makefile.in: Remove obsolete code.
	* config/s390/s390x.mt: Ditto.
	* config/s390/s390.mt: Ditto.
	* config/sparc/sparclynx.mh: Ditto.
	* config/sparc/linux.mh: Ditto.
	* config/pa/hppaosf.mh: Ditto.
	* config/pa/hppabsd.mh: Ditto.
	* config/ns32k/nbsd.mt: Ditto.
	* config/mips/vr5000.mt: Ditto.
	* config/m68k/sun3os4.mh: Ditto.
	* config/m68k/nbsd.mt: Ditto.
	* config/m68k/m68klynx.mh: Ditto.
	* config/m32r/m32r.mt: Ditto.
	* config/i386/x86-64linux.mt: Ditto.
	* config/i386/nbsdelf.mt: Ditto.
	* config/i386/nbsd.mt: Ditto.
	* config/i386/i386lynx.mh: Ditto.

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

	* target.c (debug_print_register): New function.  Handle oversize
	registers.
	(debug_to_fetch_registers): Call.
	(debug_to_store_registers): Call.

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

	* stabsread.c (cleanup_undefined_types): Use replace_type, not memcpy.
	(read_type): Doc fix.
	* gdbtypes.c (replace_type): Doc fix.

	* stabsread.c (multiply_defined_struct): New complaint.
	(read_struct_type): If the type we were passed isn't empty, or
	incomplete, don't read the new struct type into it; complain,
	and return the original type unchanged.  Take a new `type_code'
	argument, which is the type code for the new type.
	(read_type): Rather than storing the type's type code here, pass
	it as an argument to read_struct_type, and let that take care of
	storing it.  That way, we don't overwrite the original type code,
	so read_struct_type can use it to decide whether we're overwriting
	something we shouldn't.
	(complain_about_struct_wipeout): New function.

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

	* gdbarch.sh: Assert that gdbarch is non-NULL.
	* gdbarch.c: Regenerate.

2002-05-03  Jason Merrill  <jason@redhat.com>

	* gnu-v3-abi.c (gnuv3_rtti_type): If we get confused, just warn
	and return NULL.

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

	* x86-64-tdep.c (x86_64_dwarf2gdb_regno_map),
	(x86_64_dwarf2gdb_regno_map_length),
	(x86_64_dwarf2_reg_to_regnum): Added.
	(x86_64_gdbarch_init): Added registration of x86_64_dwarf2_reg_to_regnum.
	(x86_64_gdbarch_init): Renamed from i386_gdbarch_init.
	(_initialize_x86_64_tdep): Synced with the change above.
	(x86_64_skip_prologue): Reformulated message.

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

	* f-exp.y: Also use new prev_lexptr variable
	to improve error reporting. Based on Michael Snyder
	2002-04-24 dated patch to c-exp.y.
	* jv-exp.y: Likewise.
	* m2-exp.y: Likewise.

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

	* valops.c (value_arg_coerce): Don't coerce arrays to pointers if
	we are dealing with vectors.

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

	* config/m68k/tm-nbsd.h: Obvious fix,
	correct machine name.

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

	* p-typeprint.c (pascal_type_print_base): Add support
	for TYPE_CODE_STRING and TYPE_CODE_BITSTRING.

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

	* p-lang.c (pascal_create_fundamental_type): Use TYPE_CODE_CHAR
	for fondamental pascal 'char' type.

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

	* p-lang.h (is_pascal_string_type): Declaration changed,
	new sixth argument of type char ** added.
	* p-lang.c (is_pascal_string_type): Implementation
	changed. Args length_pos, length_size, string_pos, char_size
	can now be NULL. New argument arrayname set to the field
	name of the char array. Return value set to char array
	field index plus one.
	* p-valprint.c (pascal_val_print): Adapt to new declaration of
	is_pascal_string_type function.

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

	* gdbarch.sh (gdbarch_update_p): Revert 2002-05-02 Andrew Cagney
	<cagney@redhat.com> change.
	* gdbarch.c: Regenerate.

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

	* gdbarch.sh (gdbarch_update_p): Swap out the old architecture
	before probing for a new one.  Detect errorenous gdbarch_init
	functions.
	* gdbarch.c: Regenerate.

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

	* config/mn10200/tm-mn10200.h: Include "symfile.h" and "symtab.h".
	* config/mcore/tm-mcore.h: Ditto.  Update copyright.
	* config/v850/tm-v850.h: Ditto.  Update copyright.

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

	* cris-tdep.c (cris_gdbarch_init): Use arches instead of
	current_gdbarch.

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

	* arm-tdep.c: Whitespace clean-ups.
	(arm_skip_prologue): Fix thinko; two lines
	should have been removed as part of 4/24 change.

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

	* rs6000-tdep.c: Added comment describing how fpscr register
	numbers were chosen.

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

	* gnu-nat.c (gnu_find_memory_regions): Fix merge botch.

2002-04-29  Elena Zannoni  <ezannoni@redhat.com>

	* hpread.c (DNTT_TYPE_VECTOR): Rename from TYPE_VECTOR.
	(DNTT_TYPE_VECTOR_LENGTH): Rename from TYPE_VECTOR_LENGTH.
	(hpread_symfile_init, hpread_lookup_type): Substitute throughout.

2002-04-29  Kevin Buettner  <kevinb@redhat.com>

	From Louis Hamilton <hamilton@redhat.com>:
	* rs6000-tdep.c (coff/xcoff.h, libxcoff.h): Include.
	* xcoffread.c (coff/xcoff.h, libxcoff.h): Likewise.
	* rs6000-tdep.c (rs6000_gdbarch_init): Use bfd_xcoff_is_xcoff64(),
	not bfd-private xcoff data, to determine wordsize.
	* xcoffread.c (read_xcoff_xymtab, read_symbol_lineno): Likewise.

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

	GDB 5.2 released from 5.2 branch.

2002-04-29  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-linux-nat.c (fill_gregset): Explicit cast to avoid warning.
	* x86-64-tdep.c (i386_gdbarch_init): Ditto.
	(x86_64_register_info_table): Added comments with register numbers.

2002-04-29  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (rs6000_extract_return_value,
	rs6000_store_return_value): Handle returning vectors.
	(rs6000_gdbarch_init): Use
	ppc_sysv_abi_broken_use_struct_convention for native sysv cases.
	* ppc-linux-tdep.c (ppc_sysv_abi_broken_use_struct_convention):
	New function.
	(ppc_sysv_abi_use_struct_convention): Deal with functions returning
	vectors.
	(ppc_sysv_abi_push_arguments): Handle vector parameters.
	* ppc-tdep.h (ppc_sysv_abi_broken_use_struct_convention): Export.

2002-04-24  Pierre Muller  <ics.u-strasbg.fr>

	* hpread.c (hpread_psymtab_to_symtab_1,
	hpread_psymtab_to_symtab): Replace fprintf tab_to_s...)
	with fprintf_unfiltered (gdb_stderr,...).

2002-04-24  Pierre Muller  <ics.u-strasbg.fr>

	* remote-array.c (printf_monitor, write_monitor,
	array_insert_breakpoint, array_remove_breakpoint ):
	Replace fprintf (stderr,...
	with fprintf_unfiltered (gdb_stderr,....
	* remote-es.c: Likewise.
	* remote-os9k.c: Likewise.
	* remote-st.c: Likewise.

2002-04-28  Andreas Schwab  <schwab@suse.de>

	* config/s390/s390.mh (NATDEPFILES): Remove solib.o, add
	linux-proc.o and gcore.o.

2002-04-26  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_skip_prologue): Print note when debugging
	code without frame pointers.

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

	* sparc-tdep.c (sparc_gdbarch_init): Add comment explaining why
	ON_STACK is needed.

2002-04-26  Ben Elliston  <bje@redhat.com>

	* target.c (do_xfer_memory): Correct reference to the new option
	"trust-readonly-sections".

2002-04-26  Elena Zannoni  <ezannoni@redhat.com>

	* gdbtypes.h (TYPE_FLAG_VECTOR, TYPE_VECTOR): Define.
	* gdbtypes.c (recursive_dump_type): Output the vector flag.
	* dwarf2read.c (dwarf_attr_name): Handle new attribute for
	vectors.
	(read_array_type): Record the fact that this array type is really a
	vector (i.e. are passed in by value).

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

	* alpha-tdep.h (gdbarch_tdep): Add sigcontext_addr member.
	* alpha-tdep.c (alpha_sigcontext_addr): New function.
	(alpha_find_saved_regs): Use alpha_sigcontext_addr.
	(alpha_gdbarch_init): Initialize tdep->sigcontext_addr.
	* alpha-linux-tdep.c: Include frame.h.
	(alpha_linux_sigcontext_addr): New function.
	(alpha_linux_init_abi): Set tdep->sigcontext_addr to
	alpha_linux_sigcontext_addr.
	* alpha-osf1-tdep.c: Include gdbcore.h.
	(alpha_osf1_sigcontext_addr): New function.
	(alpha_osf1_init_abi): Set tdep->sigcontext_addr to
	alpha_osf1_sigcontext_addr.
	* config/alpha/tm-alpha.h (SIGCONTEXT_ADDR): Remove.
	* config/alpha/tm-alphalinux.h (SIGCONTEXT_ADDR): Remove.

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

	* stack.c (selected_frame_level):
	(select_frame): Do not set selected_frame_level.
	* frame.h (selected_frame_level): Delete declaration.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Only set
	convert_from_func_ptr-addr when AIX / PowerOpen.

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

	* valops.c (hand_function_call): Call
	generic_save_call_dummy_addr.
	* frame.h (generic_save_call_dummy_addr): Declare.
	* blockframe.c (struct dummy_frame): Add fields call_lo and
	call_hi.
	(generic_find_dummy_frame): Check for PC in range call_lo to
	call_hi instead of entry_point_address.
	(generic_pc_in_call_dummy): Search the dummy frames for a PC in
	the call_lo to call_hi range.  Allow for DECR_PC_AFTER_BREAK.
	(generic_save_call_dummy_addr): New function.

2002-04-24  David S. Miller  <davem@redhat.com>

	* sparc-tdep.c (sparc_gdbarch_skip_prologue): Kill, duplicates
	sparc_skip_prologue.
	(sparc_skip_prologue): Kill frameless_p arg, and use line number
	information to find prologue when possible.
	(sparc_prologue_frameless_p): Call examine_prologue directly.
	(sparc_gdbarch_init): Update set_gdbarch_skip_prologue call.
	* config/sparc/tm-sparc.h (sparc_skip_prologue): Update for killed
	second argument.
	(SKIP_PROLOGUE): Likewise.

2002-04-25  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_skip_prologue_internal): Remove
	GDB_TARGET_HAS_SHARED_LIBS #ifdef and update comment to
	indicate that the condition it was testing is always true.
	* config/alpha/nm-linux.h (GDB_TARGET_HAS_SHARED_LIBS): Remove.
	* config/alpha/nm-nbsd.h (GDB_TARGET_HAS_SHARED_LIBS): Ditto.
	* config/alpha/nm-osf.h (GDB_TARGET_HAS_SHARED_LIBS): Ditto.

2002-04-25  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.h (gdbarch_tdep): Add jb_pc and jb_elt_size members.
	* alpha-linux-tdep.c (alpha_linux_init_abi): Initialize
	tdep->jb_pc and tdep->jb_elt_size.
	* alpha-osf1-tdep.c (alpha_osf1_init_abi): Likewise.
	* alphafbsd-tdep.c (alphafbsd_init_abi): Likewise.
	* alphanbsd-tdep.c (alphanbsd_init_abi): Likewise.
	* alpha-nat.c (get_longjmp_target): Remove.
	(JB_ELEMENT_SIZE): Ditto.
	(JB_PC): Ditto.
	* alpha-tdep.c (alpha_get_longjmp_target): New function.
	(alpha_gdbarch_init): Default tdep->jb_pc to -1.  If the
	OS ABI sets jb_pc to a valid value, set gdbarch_get_longjmp_target
	to alpha_get_longjmp_target.
	(alpha_dump_tdep): Report tdep->jb_pc and tdep->jb_elt_size.
	* config/alpha/nm-linux.h (GET_LONGJMP_TARGET): Remove.
	* config/alpha/nm-osf.h (GET_LONGJMP_TARGET): Remove.

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

	* README: Update to GDB 5.2.

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

	* gdbarch.sh (LC_ALL): Set to `c'.

2002-04-25  Theodore A. Roth  <troth@verinet.com>

	* avr-tdep.c: Ran through gdb_indent.sh.

2002-04-25  Theodore A. Roth  <troth@verinet.com>

	* MAINTAINERS: Add myself as AVR maintainer.
	* NEWS: Note new target avr.

2002-04-25  Theodore A. Roth  <troth@verinet.com>

	* Makefile.in: Add support for AVR target.
	* configure.tgt: Add support for AVR target.
	* avr-tdep.c: New file
 	* config/avr/avr.mt: New file.

2002-04-25  Theodore A. Roth  <troth@verinet.com>

	* MAINTAINERS: Add myself to write-after-approval.

2002-04-24  Pierre Muller  <ics.u-strasbg.fr>

	* f-lang.c (get_bf_for_fcn): Replace fprintf (stderr,...
	with fprintf_unfiltered (gdb_stderr,....

2002-04-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	Fix PR gdb/508.
	* symfile.c (add_filename_language): Fix wrong xrealloc size argument.

2002-04-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y: Also use new prev_lexptr variable
	to improve error reporting. Based on Michael Snyder
	2002-04-24 dated patch to c-exp.y.

2002-04-25  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_breakpoint_from_pc): New function.
	(alpha_gdbarch_init): Set gdbarch_breakpoint_from_pc to
	alpha_breakpoint_from_pc.  Set gdbarch_function_start_offset
	to 0.
	* config/alpha/tm-alpha.h: Remove forward decls of struct type
	and struct value.
	(FUNCTION_START_OFFSET): Remove.
	(BREAKPOINT): Ditto.

2002-04-25  Jason Thorpe  <thorpej@wasabisystems.com>

	* MAINTAINERS: Reflect that multi-arch is enabled for VAX.
	* NEWS: Ditto.

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

	* alpha-linux-tdep.c (alpha_linux_pc_in_sigtramp): New function.
	(alpha_linux_init_abi): Set gdbarch_pc_in_sigtramp to
	alpha_linux_pc_in_sigtramp.
	* alpha-osf1-tdep.c (alpha_osf1_pc_in_sigtramp): New function.
	(alpha_osf1_init_abi): Set gdbarch_pc_in_sigtramp to
	alpha_osf1_pc_in_sigtramp.
	* alpha-tdep.c (alpha_osf_in_sigtramp): Remove.
	* alphafbsd-tdep.c (alphafbsd_pc_in_sigtramp): New function.
	(alphafbsd_init_abi): Set gdbarch_pc_in_sigtramp to
	alphafbsd_pc_in_sigtramp.
	* alphanbsd-tdep.c (alphanbsd_pc_in_sigtramp): New function.
	(alphanbsd_init_abi): Set gdbarch_pc_in_sigtramp to
	alphanbsd_pc_in_sigtramp.
	* config/alpha/tm-alpha.h (IN_SIGTRAMP): Remove.
	* config/alpha/tm-alphalinux.h (IN_SIGTRAMP): Remove.

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

	* config/alpha/nbsd.mh (NATDEPFILES): Remove solib-legacy.o.

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

	* Makefile.in (ALLDEPFILES): Add alphanbsd-nat.c and
	alphanbsd-tdep.c.
	(alphanbsd-nat.o): New dependency list.
	(alphanbsd-tdep.o): Ditto.
	* NEWS: Note new native NetBSD/alpha configuration.
	* alphanbsd-nat.c: New file.
	* alphanbsd-tdep.c: Ditto.
	* configure.host (alpha*-*-netbsd*): New host.
	* configure.tgt (alpha*-*-netbsd*): New target.
	* config/alpha/nbsd.mh: New file.
	* config/alpha/nbsd.mt: Ditto.
	* config/alpha/nm-nbsd.h: Ditto.
	* config/alpha/tm-nbsd.h: Ditto.

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

	* Makefile.in (ALLDEPFILES): Add alpha-osf1-tdep.c.
	(alpha-osf1-tdep.o): New dependency list.
	* alpha-tdep.h (gdbarch_tdep): Add dynamic_sigtramp_offset
	and skip_sigtramp_frame members.
	* alpha-linux-tdep.c: Include gdbcore.h.
	(alpha_linux_sigtramp_offset): Change return type to LONGEST.
	(alpha_linux_init_abi): Initialize tdep->dynamic_sigtramp_offset.
	* alpha-osf1-tdep.c: New file.
	* alpha-tdep.c (alpha_osf_skip_sigtramp_frame): Moved to
	alpha-osf1-dep.c.
	(alpha_frame_past_sigtramp_frame): New function.
	(alpha_dynamic_sigtramp_offset): Ditto.
	(alpha_proc_desc_is_dyn_sigtramp): Ditto.
	(alpha_set_proc_desc_is_dyn_sigtramp): Ditto.
	(ALPHA_PROC_SIGTRAMP_MAGIC): Define.
	(push_sigtramp_desc): Use alpha_set_proc_desc_is_dyn_sigtramp.
	(after_prologue): Use alpha_proc_desc_is_dyn_sigtramp.
	(find_proc_desc): Use alpha_dynamic_sigtramp_offset.
	(alpha_frame_chain): Use alpha_frame_past_sigtramp_frame.
	(alpha_init_extra_frame_info): Use alpha_proc_desc_is_dyn_sigtramp.
	(alpha_pop_frame): Use alpha_proc_desc_is_dyn_sigtramp.
	(alpha_gdbarch_init): Initialize tdep->dynamic_sigtramp_offset
	and tdep->skip_sigtramp_frame.  Set gdbarch_skip_trampoline_code
	to find_solib_trampoline_target.
	* config/alpha/alpha-osf1.mt (TDEPFILES): Add alpha-osf1-tdep.o.
	* config/alpha/tm-alpha.h: Remove inclusion of regcache.h.
	(SKIP_TRAMPOLINE_CODE): Remove.
	(PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(DYNAMIC_SIGTRAMP_OFFSET): Ditto.
	(FRAME_PAST_SIGTRAMP_FRAME): Ditto.
	* config/alpha/tm-alphalinux.h (PROC_DESC_IS_DYN_SIGTRAMP): Remove.
	(PROC_SIGTRAMP_MAGIC): Ditto.
	(PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
	(DYNAMIC_SIGTRAMP_OFFSET): Ditto.
	(FRAME_PAST_SIGTRAMP_FRAME): Ditto.

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

	* NEWS: Note that Alpha targets are now multi-arch.

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

	* parser-defs.h (prev_lexptr): New external variable.
	* parse.c (parse_exp_1): Set prev_lexptr to null before
	calling the language-specific parser.
	* c-exp.y (yylex): Set prev_lexptr to start of current token.
	(yyerror): Use prev_lexptr in error reporting.

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

	* config/i386/tm-linux.h: Define FILL_FPXREGSET.
	* gregset.h: If FILL_FPXREGSET is defined, provide
	gdb_fpxregset_t, supply_fpxregset, and fill_fpxregset.
	* linux-proc.c (linux_do_thread_registers): If FILL_FPXREGSET
	is defined, call fill_fpxregset.

2002-04-24  Roland McGrath  <roland@frob.com>

	* config/i386/i386gnu.mh (NATDEPFILES): Add core-regset.o here.
	* i386gnu-nat.c [HAVE_SYS_PROCFS_H]
	(supply_gregset, supply_fpregset): New functions.

	* gnu-nat.c (gnu_find_memory_regions): New function.
	(init_gnu_ops): Set `to_find_memory_regions' hook to that.
	(gnu_xfer_memory): Add a cast.

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

	* arm-tdep.c (arm_scan_prologue): Move "mov ip, sp" into the
	loop.  Add handling for "str lr, [sp, #-4]!" and for saves
	of argument regs ("str r(0123), [r11, #-nn"]).
	(arm_skip_prologue): Better handling for frameless functions.
	Treat "mov ip, sp" as optional.  Recognize "str lr, [sp, #-4]".
	(arm_skip_prologue): Recognize str r(0123), [r11, #-nn].

Wed Apr 24 14:22:21 2002  Andrew Cagney  <cagney@redhat.com>

	* arm-tdep.c (arm_gdbarch_init): Add comment that NUM_REGS nor
 	NUM_PSEUDO_REGS can be used.

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

	* arch-utils.h: Update copyright.

	* gdbarch.sh (PC_IN_SIGTRAMP): Add.
	* gdbarch.h, gdbarch.c: Re-generate.

	* inferior.h (IN_SIGTRAMP): Delete definition.
	* arch-utils.c (legacy_pc_in_sigtramp): New function.
	* arch-utils.h (legacy_pc_in_sigtramp): Declare.

	* mips-tdep.c (mips_init_extra_frame_info): Use PC_IN_SIGTRAMP.
	(mips_dump_tdep): Do not print value of IN_SIGTRAMP.
	* hppa-tdep.c (pc_in_interrupt_handler):  Use PC_IN_SIGTRAMP.
	(find_proc_framesize): Ditto.
	* alpha-tdep.c (alpha_osf_skip_sigtramp_frame): Ditto.
	(alpha_init_extra_frame_info): Ditto.
	* infrun.c (handle_inferior_event): Ditto.
	(handle_inferior_event): Ditto.
	(check_sigtramp2): Ditto.
	* blockframe.c (create_new_frame): Ditto.
	(get_prev_frame): Ditto.
	* ppc-linux-tdep.c: Update comments.
	* i386-linux-tdep.c: Update comments.
	* breakpoint.c (bpstat_what): Update comment.

2002-04-24  David S. Miller  <davem@redhat.com>

	* i960-tdep.c (register_in_window_p): New function.
	(i960_find_saved_register): Use it instead of
	REGISTER_IN_WINDOW_P.
	* config/i960/tm-i960.h (REGISTER_IN_WINDOW): Delete.

	* symtab.h (find_stab_function_addr): Kill extern.
	* minsyms.c (find_stab_function_addr): Remove from here...
	* dbxread.c: ... to here, and mark it static.

2002-04-20  David S. Miller  <davem@redhat.com>

	* sparc-tdep.c (sparc_pop_frame): Only need to allocate
	SPARC_INTREG_SIZE * 16 bytes for reg_temp.

2002-04-21  David S. Miller  <davem@redhat.com>

	* remote-vxsparc.c (vx_read_register): Fix typo, we want
	REGISTER_RAW_SIZE of SP_REGNUM not CORE_ADDR.
	(vx_write_register): Likewise.

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

	* source.c (is_regular_file): New function.
	(openp): Check wether file to open is a regular file
	to avoid opening directories.

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

	* findvar.c (extract_signed_integer): Cast printf argument
	to suppress format warning.
	(extract_unsigned_integer): Likewise.
	* infcmd.c (registers_info): Likewise.
	* top.c (get_prompt_1): Likewise.
	* valops.c (value_assign): Likewise.
	* valprint.c (print_decimal): Likewise.

2002-04-22  H.J. Lu  (hjl@gnu.org)

	* c-exp.y (typebase): Support

	[long|long long|short] [signed|unsigned] [int|]

	and

	signed [long|long long|short] int

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

	* Makefile.in (vax-tdep.o): Add $(arch_utils_h), $(inferior_h),
	and vax-tdep.h.
	* vax-tdep.h: New file.
	* vax-tdep.c: Include inferior.h, arch-utils.h, and vax-tdep.h.
	Make several routines static.
	(vax_get_saved_register): New function.
	(vax_gdbarch_init): New function.
	(_initialize_vax_tdep): Register vax_gdbarch_init.
	* config/vax/tm-vax.h: Set GDB_MULTI_ARCH to GDB_MULTI_ARCH_PARTIAL.
	Remove macros now under the control of gdbarch.

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

	* arm-tdep.c (arm_skip_prologue): Recognize "sub sp, sp, #nn".
	Some whitespace and coding standards tweaks.

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

	* vax-tdep.c: Include regcache.h.
	(vax_call_dummy_words): New.
	(sizeof_vax_call_dummy_words): New.
	(vax_fix_call_dummy): New function.
	(vax_saved_pc_after_call): Ditto.
	* config/vax/tm-vax.h: Don't include regcache.h.
	(SAVED_PC_AFTER_CALL): Use vax_saved_pc_after_call.
	(CALL_DUMMY): Remove.
	(CALL_DUMMY_WORDS): Define.
	(SIZEOF_CALL_DUMMY_WORDS): Define.
	(FIX_CALL_DUMMY): Use vax_fix_call_dummy.

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

	* arm-tdep.h: Change regnum defines to enums for ease of debugging.

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

	* vax-tdep.c (vax_frame_chain): New function.
	(vax_push_dummy_frame): Ditto.
	(vax_pop_frame): Ditto.
	* config/vax/tm-vax.h (FRAME_CHAIN): vax_frame_chain.
	(FRAMELESS_FUNCTION_INVOCATION): Use
	generic_frameless_function_invocation_not.
	(PUSH_DUMMY_FRAME): Use vax_push_dummy_frame.
	(POP_FRAME): Use vax_pop_frame.

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

	* vax-tdep.c (vax_store_struct_return): New function.
	(vax_extract_return_value): Ditto.
	(vax_store_return_value): Ditto.
	(vax_extract_struct_value_address): Ditto.
	* config/vax/tm-vax.h (STORE_STRUCT_RETURN): Use
	vax_store_struct_return.
	(EXTRACT_RETURN_VALUE): Use vax_extract_return_value.
	(STORE_RETURN_VALUE): Use vax_store_return_value.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Use vax_extract_struct_value_address.

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

	* vax-tdep.c (vax_frame_saved_pc): New function.
	(vax_frame_args_address_correct): Ditto.
	(vax_frame_args_address): Ditto.
	(vax_frame_locals_address): Ditto.
	(vax_frame_num_args): Move code to be in proximity to
	other frame-related functions.
	* config/vax/tm-vax.h (INNER_THAN): Use core_addr_lessthan.
	(FRAME_SAVED_PC): Use vax_frame_saved_pc.
	(FRAME_ARGS_ADDRESS_CORRECT): Use vax_frame_args_address_correct.
	(FRAME_ARGS_ADDRESS): Use vax_frame_args_address.
	(FRAME_LOCALS_ADDRESS): Use vax_frame_locals_address.

2002-04-22  H.J. Lu  (hjl@gnu.org)

	* Makefile.in (FLAGS_TO_PASS): Add libdir, mandir, datadir and
	includedir.

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

	* vax-tdep.c (vax_frame_init_saved_regs): New function.
	* config/vax/tm-vax.h (FRAME_FIND_SAVED_REGS): Remove.
	(FRAME_INIT_SAVED_REGS): New macro.

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

	* MAINTAINERS: Reflect that the Alpha target has been multi-arch'd.

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

	* alpha-nat.c (get_longjmp_target): Use ALPHA_* constants
	where needed.
	(fetch_osf_core_registers): Likewise.
	(supply_gregset): Likewise.

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

	* symfile.h (get_section_index): Define.
	* symfile.c (get_section_index): New function.
	* mdebugread.c (SC_IS_SBSS): New macro.
	(SC_IS_BSS): Return true for the scBss storage class only, as
	the scSBss storage class refers to the .sbss section.
	(parse_partial_symbols): Discard the symbols which associated
	section does not exist.
	Make sure to use the .sbss section index for symbols which
	storage class is scBss, rather than using the .bss section index.

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

	* vax-tdep.c: Update copyright years.
	(vax_register_name): New function.
	(vax_register_byte): Ditto.
	(vax_register_raw_size): Ditto.
	(vax_register_virtual_size): Ditto.
	(vax_register_virtual_type): Ditto.
	* config/vax/tm-vax.h: Update copyright years.
	(REGISTER_NAMES): Remove.
	(REGISTER_NAME): Define.
	(REGISTER_BYTE): Use vax_register_byte.
	(REGISTER_RAW_SIZE): Use vax_register_raw_size.
	(REGISTER_VIRTUAL_SIZE): Use vax_register_virtual_size.
	(REGISTER_VIRTUAL_TYPE): Use vax_register_virtual_type.

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

	* config/sparc/tm-sparc.h (sparc_skip_prologue): Restore
	declaration
	* arc-tdep.c (arc_prologue_frameless_p): Fix syntax error.

2002-04-21  David S. Miller  <davem@redhat.com>

	* arch-utils.c (generic_prologue_frameless_p): Kill
	SKIP_PROLOGUE_FRAMELESS_P code.
	* config/arc/tm-arc.h (SKIP_PROLOGUE_FRAMELESS_P): Delete
	references.
	(PROLOGUE_FRAMELESS_P, arc_prologue_frameless_p): New.
	* arc-tdep.c (arc_prologue_frameless_p): Implement.
	* config/arc/tm-sparc.h (SKIP_PROLOGUE_FRAMELESS_P): Delete
	references.
	(PROLOGUE_FRAMELESS_P, sparc_prologue_frameless_p): New.
	* sparc-tdep.c (sparc_prologue_frameless_p): Implement.
	(sparc_gdbarch_init): Pass it to
	set_gdbarch_prologue_frameless_p.

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

	* Makefile.in (ALLDEPFILES): Add alphabsd-nat.c.
	(alphabsd-nat.o): New dependency list.

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

	* Makefile.in (ALLDEPFILES): Add alpha-linux-tdep.c and
	alphafbsd-tdep.c.
	(alpha-linux-tdep.o): New dependency list.
	(alphafbsd-tdep.o): Likewise.

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

	* alpha-linux-tdep.c: New file.  Move alpha_linux_sigtramp_offset
	to here...
	* alpha-tdep.c: ...from here.
	* config/alpha/alpha-linux.mt (TDEPFILES): Add alpha-linux-tdep.o.

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

	* config/alpha/tm-alpha.h: Move alpha_software_single_step
	prototype from here...
	* alpha-tdep.h: ...to here.

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

	* frame.h (selected_frame_level): Document as deprecated.
	(frame_relative_level): Declare.
	* stack.c (frame_relative_level): New function.
	(selected_frame_level): Document as deprecated.
	(select_frame): Do not set the selected_frame_level.

	* stack.c (frame_info, record_selected_frame): Update.
	(frame_command, current_frame_command): Update.
	(up_silently_base, up_command, down_silently_base): Update.
	(down_command): Update.
	* inflow.c (kill_command): Update.
	* tracepoint.c (finish_tfind_command): Update.
	* corelow.c (core_open): Update.
	* thread.c (info_threads_command): Update.
	(do_captured_thread_select): Update.
	* infcmd.c (finish_command): Update.
	* breakpoint.c (insert_breakpoints, do_enable_breakpoint): Update.

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

	* config/alpha/tm-fbsd.h (FRAME_CHAIN_VALID): Remove.

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

	* arm-tdep.c (arm_breakpoint_from_pc): Make static.  Make return
	type const.

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

	* alphafbsd-tdep.c: Update copyright years.  Include
	alpha-tdep.h.
	(alphafbsd_use_struct_convention): Make static.
	(alphafbsd_init_abi): New function.
	(_initialize_alphafbsd_tdep): New function.
	* config/alpha/tm-fbsd.h: Update copyright years.
	(USE_STRUCT_CONVENTION): Remove.

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

	* alpha-tdep.c (alpha_abi_handler): New structure to describe
	an Alpha ABI variant.
	(alpha_abi_handler_list): Declare.
	(alpha_gdbarch_register_os_abi): New function.
	(alpha_gdbarch_init): Give registered ABI variant handlers a
	chance to tweak the gdbarch once we have set up defaults.
	* alpha-tdep.h: Prototype alpha_gdbarch_register_os_abi.

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

	* alpha-tdep.c (alpha_gdbarch_init): Set coerce_float_to_double
	to standard_coerce_float_to_double.
	* config/alpha/tm-alpha.h (COERCE_FLOAT_TO_DOUBLE): Remove.

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

	* alpha-tdep.h (gdbarch_tdep): Add vm_min_address member.
	* alpha-tdep.c (heuristic_proc_start): Use vm_min_address
	from gdbarch_tdep rather than a constant.
	(alpha_gdbarch_init): Initialize tdep->vm_min_address to
	the default text address for all Alpha Unix ABIs.
	(alpha_dump_tdep): Report the value of tdep->vm_min_address.
	* config/alpha/tm-alpha.h (VM_MIN_ADDRESS): Delete.

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

	* alpha-tdep.h: New file.  Includes several Alpha target constants
	taken from...
	* config/alpha/tm-alpha.h: ...here.  Remove macros that we now
	let gdbarch deal with.
	(GDB_MULTI_ARCH): Define as GDB_MULTI_ARCH_PARTIAL.
	* Makefile.in (alpha-nat.o): Add alpha-tdep.h and $(BFD_SRC)/elf-bfd
	to dependency list.
	* alpha-nat.c: Include alpha-tdep.h.  Update for adjusted
	Alpha target register names.
	* alphabsd-nat.c: Likewise.
	* alpha-tdep.c: Include alpha-tdep.h.  Update for adjusted
	Alpha target register names.  Make serveral routines static.
	(alpha_get_saved_register): New function.
	(alpha_abi_names): New.
	(process_note_abi_tag_sections): New function.
	(get_elfosabi): New function.
	(alpha_gdbarch_init): New function.
	(alpha_dump_tdep): New function.
	(_initialize_alpha_tdep): Register alpha_gdbarch_init.

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

	* frame.c (find_saved_register): Delete #ifdef
	HAVE_REGISTER_WINDOWS code.
	* config/sparc/tm-sparc.h: Update comments.
	* config/i960/tm-i960.h (HAVE_REGISTER_WINDOWS): Delete macro.

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

	* i960-tdep.c (i960_find_saved_register): New function.
	(i960_get_saved_register): New function.
	* config/i960/tm-i960.h (GET_SAVED_REGISTER): Define.
	(i960_get_saved_register): Declare.
	* config/i960/tm-i960.h, i960-tdep.c: Update copyright.

2002-04-20  David S. Miller  <davem@redhat.com>

	* sparc-nat.c (store-inferior_registers): Fix ambiguous else.

2002-04-20  Andrew Cagney  <ac131313@redhat.com>

	* arm-tdep.c (arm_gdbarch_init): Use gdbarch_num_pseudo_regs
	instead of NUM_PSEUDO_REGS.

2002-04-20  David S. Miller  <davem@redhat.com>

	* config/sparc/tm-linux.h (GDB_MULTI_ARCH): Define to
	GDB_MULTI_ARCH_PARTIAL
	* config/sparc/tm-sp64linux.h (GDB_MULTI_ARCH): Do not
	define, let tm-sp64.h do it.

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

	* frame.c (find_saved_register): Avoid a NULL pointer
	dereference and actually walk the frame list.

2002-04-20  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (gdbarch_update_p): Keep the list of architectures
	sorted in most most-recent-used order.  Document.
	* gdbarch.h, gdbarch.c: Regenerate.

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

	* sparc-tdep.c (sparc_get_saved_register): Use get_prev_frame
	instead of ->prev.
	* z8k-tdep.c (z8k_frame_chain): Do not use ->prev.
	* s390-tdep.c (s390_frame_chain): Do not use ->prev.
	* rs6000-tdep.c (frame_get_saved_regs): Use rs6000_frame_chain()
	instead of ->prev.

2002-04-19  Elena Zannoni  <ezannoni@redhat.com>

        Fix PR gdb/471.
	* gdbtypes.c (init_simd_type): Rewrite using new functions.
	(build_builtin_type_vec128): Ditto.
	(append_composite_type_field): Fix calculation of type length in
	union case.

2002-04-19  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/README: Update.

	* go32-nat.c (store_register): Cast &a_tss to `char *' to avoid a
	compiler warnings.

2002-04-19  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (setup_arbitrary_frame): Rename...
	(alpha_setup_arbitrary_frame): ...to this.
	* config/alpha/tm-alpha.h (SETUP_ARBITRARY_FRAME): Update
	for alpha_setup_arbitrary_frame.

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

	* gdbarch.sh (BREAKPOINT_FROM_PC): Return a const buffer.
	* gdbarch.h, gdbarch.c: Regenerate.

	* defs.h (breakpoint_from_pc_fn): Delete type definition.
	* target.h (memory_breakpoint_from_pc): Update declaration.
	* config/mcore/tm-mcore.h (mcore_breakpoint_from_p): Ditto.

	* arch-utils.c (legacy_breakpoint_from_pc): Update return type.
	* mcore-tdep.c (mcore_breakpoint_from_pc): Ditto.
	* mem-break.c (memory_breakpoint_from_pc): Ditto.
	* rs6000-tdep.c (rs6000_breakpoint_from_pc): Ditto.
	* s390-tdep.c (s390_breakpoint_from_pc): Ditto
	* xstormy16-tdep.c (xstormy16_breakpoint_from_pc): Ditto.
	* mn10300-tdep.c (mn10300_breakpoint_from_pc): Ditto.
	* mips-tdep.c (mips_breakpoint_from_pc): Ditto.
	* m68hc11-tdep.c (m68hc11_breakpoint_from_pc): Ditto.
	* ia64-tdep.c (ia64_breakpoint_from_pc): Ditto.
	* d10v-tdep.c (d10v_breakpoint_from_pc): Ditto.
	* arch-utils.c (legacy_breakpoint_from_pc): Ditto..

	* mem-break.c (default_memory_insert_breakpoint): Make `bp' a
	const pointer.
	* monitor.c (monitor_insert_breakpoint): Ditto.
	* rs6000-tdep.c (rs6000_software_single_step): Ditto for `breakp'.

	* config/mcore/tm-mcore.h: Update copyright.
	* mem-break.c: Ditto.
	* xstormy16-tdep.c: Ditto.

2002-04-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y: Add precedence rule for '^' token.
	This removes the shift/reduce conflicts.
	Remove the comment concerning these shift/reduce conflicts.

2002-04-18  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (COMMON_UISA_NOFP_REGS): New macro.
	(registers_powerpc_nofp): New register set for processors
	without floating point unit.

2002-04-18  David S. Miller  <davem@redhat.com>

	* MAINTAINERS: Add myself to write-after-approval.

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

	* MAINTAINERS: Add myself as co-maintainer of testsuite/gdb.asm.

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

	* rs6000-tdep.c (frame_initial_stack_address): Use
	frame_register_read to read the alloca_reg.

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

	* frame.c (find_saved_register): Find saved registers in the next
	not prev frame.
	Fix PR gdb/365.

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

	* gdbarch.sh (LANG): Set to ``c''.

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

 	* PROBLEMS: Mention hppa2.0-hp-hpux10.20 compile problems.

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

	* bcache.c: Include <stddef.h> and <stdlib.h> after "defs.h".
	Update copyright.

 	* hpread.c (hpread_get_lntt): Add declaration.
 	Also fix PR gdb/391.

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

	* acinclude.m4 (AM_PROG_CC_STDC): Import from automake 1.6.
	* aclocal.m4, configure: Re-generate.
	Fix PR gdb/391.

2002-04-14  Elena Zannoni  <ezannoni@redhat.com>

        * mi/mi-cmd-disas.c (dump_insns): Use TARGET_PRINT_INSN
        instead of tm_print_insn.

2002-04-14  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-bdm.c (bdm_ppc_fetch_registers): Fix typo.

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

	* config/pa/tm-hppa.h (FRAME_CHAIN_COMBINE): Delete macro.
	* blockframe.c (FRAME_CHAIN_COMBINE): Delete macro.
	(get_prev_frame): Do not call FRAME_CHAIN_COMBINE.

2002-04-12  Don Howard  <dhoward@redhat.com>

	* cli/cli-cmds.c (init_cli_cmds): Add new user settable value:
	max_user_call_depth.
	(init_cmd_lists): Initialize the new value;
	* cli/cli-script.c (execute_user_command): Limit the call depth of
	user defined commands.  This avoids a core-dump when user commands
	are infinitly recursive.

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

	* ppc-tdep.h (struct gdbarch_tdep): Add new member ``lr_frame_offset''.
	* rs6000-tdep.c (rs6000_frame_saved_pc): Use ``lr_frame_offset''
	from tdep struct instead of DEFAULT_LR_SAVE.
	(rs6000_gdbarch_init): Initialize ``lr_frame_offset''.
	* config/powerpc/tm-ppc-eabi.h (DEFAULT_LR_SAVE): Delete.
	* config/rs6000/tm-rs6000.h (DEFAULT_LR_SAVE): Delete.

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

	* Remote.c: Spelling fix.
	* gcore.c (default_derive_heap_segment): Use bfd_section_name.
	If no symbol found for "sbrk", try "_sbrk".
	(make_output_phdrs): Use bfd_section_name.
	(gcore_copy_callback): Use bfd_section_name.
	* eval.c: Indentation fix-ups.
	* d10v-tdep.c (d10v_make_iaddr): Make it idempotent,
	in case it gets applied to an address that is already
	in the instruction space.
	* cli/cli-decode.c (help_list): Allow long lines to wrap.
	* symfile.c: Fix indentation, long lines.
	* source.c: White space fix-up.

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

	* defs.h (read_relative_register_raw_bytes): Delete declaration.
	* frame.c (frame_register_read): New function.  Return non-zero on
	success.
	(read_relative_register_raw_bytes_for_frame): Delete.
	(read_relative_register_raw_bytes): Delete.
	* frame.h (frame_register_read): Declare.
	* d30v-tdep.c: Update Copyright.  Use frame_register_read.
	* sh-tdep.c: Ditto.
	* infcmd.c (do_registers_info): Ditto.
	* hppa-tdep.c: Ditto.
	* rs6000-tdep.c: Ditto.
	* h8500-tdep.c: Ditto.
	* mips-tdep.c: Ditto.
	* h8300-tdep.c: Ditto.
	* z8k-tdep.c: Ditto.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_gdbarch_init): Use rs6000_* methods for
	64-bit SysV ABI.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_gdbarch_init): Compute ``wordsize'' from
	bfd info.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (powerpc64, 630, rs64ii, rs64iii): Define
	register sets for these processor variants.

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

	* regformats/reg-ppc.dat: Support FPSCR.

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

	* ppc-tdep.h (struct gdbarch_tdep): Add new field ``ppc_fpscr_regnum''.
	* ppc-bdm.c (bdm_ppc_fetch_registers, bdm_ppc_store_registers):
	Add fpscr as an invalid/unfetchable register.
	* ppc-linux-nat.c (ppc_register_u_addr, store_register)
	(fetch_ppc_registers, store_ppc_registers, supply_fpregset)
	(fill_fpregset): Add support for register fpscr.
	(fetch_ppc_registers, store_ppc_registers, supply_gregset)
	(fill_gregset): Account for the fact that register ``mq'' might
	not exist.
	* rs6000-tdep.c (PPC_UISA_SPRS): Use (unused) slot 70 for fpscr.
	(registers_power): Add fpscr to register set at slot 71.
	(rs6000_gdbarch_init): Account for the fact that ``mq'' doesn't
	exist on most PPC architectures.  Initialize ppc_fpscr_regnum.

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

	* configure.in: Autoconfiscate _SYSCALL32 define for solaris.
	* configure: Regenerate.
	* config.in: Regenerate.
	* acconfig.h: Add define for _SYSCALL32.
	* core-sol2.c: Remove #define _SYSCALL32.
	* solib-legacy.c: Remove #define _SYSCALL32.

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

	* stack.c (select_frame): Cleanup internal error message, do not
	use %p.

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

	* stack.c (select_frame): Check that selected_frame and the
	specified level are as expected.
	* blockframe.c (get_prev_frame): Set the `level' from next_frame.
	Update copyright.
	* frame.h (struct frame_info): Add field `level'.  Update
	copyright.
	Work-in-progress PR gdb/464.

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

	* maint.c (maint_print_section_info): Rename print_section_info.
	(print_bfd_section_info, print_objfile_section_info): Update.
	* inferior.h (struct gdbarch): Add opaque declaration.
	* gdbarch.sh: Add include of "inferior.h" to gdbarch.sh.
	* gdbarch.h: Regenerate.

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

	* x86-64-linux-nat.c (child_resume, child_xfer_memory): Delete.
	(PTRACE_XFER_TYPE): Moved to config/i386/nm-x86-64.h.
	(kernel_u_size): Added.
	* config/i386/nm-x86-64.h (CHILD_XFER_MEMORY, CHILD_RESUME): Delete.
	(PTRACE_XFER_TYPE): Moved here from config/i386/nm-x86-64.h.

2002-04-04  Jim Ingham  <jingham@apple.com>

       * valarith.c (find_size_for_pointer_math): New function, either returns
       the size for a pointer's target, returns 1 for void *, or errors for
       incomplete types.
       (value_add, value_sub): use find_size_for_pointer_math.

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

	* linux-low.c (linux_look_up_symbols): New hook.
	(linux_target_ops): Add linux_look_up_symbols.
	* remote-utils.c (decode_address): New function.
	(look_up_one_symbol): New function.
	* server.c (handle_query): Call target look_up_symbols hook.
	* server.h (look_up_one_symbol): Add prototype.
	* target.h (struct target_ops): Add look_up_symbols hook.

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

	* frame.c (read_relative_register_raw_bytes_for_frame): Do not
	override FP_REGNUM with frame->fp.  Update copyright.
	* parse.c (num_std_regs, std_regs): Delete.
	(target_map_name_to_register): Do not search std_regs.  Update
	function description.
	* parser-defs.h (num_std_regs, std_regs, struct std_regs): Delete
	declarations.  Update copyright.
	Fix PR gdb/251.

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

	* symtab.h (ALL_BLOCK_SYMBOLS): Don't dereference the pointer
	after the last symbol in a block.

2002-04-09  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y (yylex): Handle also the fact that is_a_field_of_this
	is non zero as a found symbol.

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

	* findvar.c: Include "builtin-regs.h".
	(value_of_register): Call value_of_builtin_reg when applicable.
	* parse.c: Include "builtin-regs.h" and "gdb_assert.h".
	(target_map_name_to_register): Call
	builtin_reg_map_name_to_regnum.
	* Makefile.in (SFILES): Add builtin-regs.c and std-regs.c.
	(COMMON_OBS): Add builtin-regs.o and std-regs.o.
	(builtin_regs_h): Define.
	(builtin-regs.o): New target.
	(findvar.o): Add $(builtin_regs_h).
	* builtin-regs.c, builtin-regs.h: New files.
	* std-regs.c: New file.
	Partial fix for PR gdb/251.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Don't set tm_print_insn;
	it's no longer required.

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

	* Makefile.in (gdbtk-wrapper.o): Add missing dependencies.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_software_single_step): Use
	rs6000_breakpoint_from_pc() to fetch breakpoint instruction
	and size.  Use target_insert_breakpoint() and
	target_remove_breakpoint() to insert and remove breakpoints
	instead of explicit memory reads and writes.

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

	* config/powerpc/tm-ppc-eabi.h (ELF_OBJECT_FORMAT): Delete.
	* rs6000-tdep.c (rs6000_push_arguments): Eliminate
	ELF_OBJECT_FORMAT ifdef.

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_gdbarch_init): Use set_gdbarch_print_insn().

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

	From Jimi X <jimix@watson.ibm.com>:
	* rs6000-tdep.c (rs6000_fix_call_dummy): Delete unused macro
	definitions for TOC_ADDR_OFFSET and TARGET_ADDR_OFFSET.

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

	* fbsd-proc.c (child_pid_to_exec_file, fbsd_find_memory_regions):
	s/asprintf/xasprintf/.
	(fbsd_make_corefile_notes): s/strdup/xstrdup/.

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

	I believe Jeff Law denies responsability for this one:
	* config/pa/hpux11w.mh (MH_CFLAGS): Add -Dvfork=fork.
	* config/pa/hpux11.mh (MH_CFLAGS): Add -Dvfork=fork.
	* config/pa/hpux1020.mh (MH_CFLAGS): Add -Dvfork=fork.
	Work-around for PR gdb/366.

2002-04-07  Elena Zannoni  <ezannoni@redhat.com>

	* remote-e7000.c (write_small, e7000_read_inferior_memory,
	e7000_read_inferior_memory_large, e7000_insert_breakpoint,
	e7000_remove_breakpoint): Use paddr_nz() to print addresses.

2002-04-07  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_fp_frame_init_saved_regs,
	sh_nofp_frame_init_saved_regs): Use alloca() for 'where'
	information.

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

	* MAINTAINERS (Misc): List Daniel Jacobowitz as the GDBSERVER
	maintainer.

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

	* README (Reporting Bugs in GDB): Document the bug web page as the
	prefered way of submitting bugs.
	Fix PR gdb/402.

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

	* gdbarch.sh (FP_REGNUM, PC_REGNUM, SP_REGNUM): Allow default of
	-1.  Update comment.
	* gdbarch.h, gdbarch.c: Re-generate.

2002-04-07  Andreas Schwab  <schwab@suse.de>

	* m68klinux-nat.c (fill_fpregset): Properly pass address of
	buffer to regcache_collect.

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

	* gdbarch.sh (PS_REGNUM): Add.  Document.  Default to -1.
	* gdbarch.c, gdbarch.h: Re-generate.

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

	* symtab.c (lookup_symtab): Remove ``const'' from ``rp''
	declaration.  Fix -Werror.

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

	* gdbarch.sh (initialize_non_multiarch): Call init_gdbarch_swap.
	* gdbarch.c: Regenerate.

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

	* breakpoint.c (clear_command): Rewrite middle section to
	combine two loops with identical control conditions.
	Add a cleanup to eliminate a memory leak.
	* cli/cli-dump.c (restore_section_callback): Use paddr_nz.

2002-04-05  H.J. Lu  (hjl@gnu.org)

	* solib-svr4.c (bkpt_names): Add "__start".

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

	* sparc-tdep.c (sparc_push_dummy_frame): Use GDB_TARGET_IS_SPARC64
	as test for 64 bit target.

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

	* h8500-tdep.c (h8500_write_fp): Delete function.
	* dwarf2cfi.c (cfi_write_fp): Document as not used.
	* mips-tdep.c (mips_gdbarch_init): Do not set write_fp.
	* ia64-tdep.c (ia64_gdbarch_init): Do not set write_fp.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Do not set write_fp.
	* rs6000-tdep.c (rs6000_gdbarch_init): Do not set write_fp.
	* s390-tdep.c (s390_gdbarch_init): Do not set write_fp.
	(s390_write_fp):
	* sh-tdep.c (sh_gdbarch_init): Do not set write_fp.
	* x86-64-tdep.c (i386_gdbarch_init): Do not set write_fp.
	* d10v-tdep.c (d10v_gdbarch_init): Do not set write_fp.
	(d10v_write_fp): Delete function.
	* inferior.h (write_fp, generic_target_write_fp): Delete
	declarations.
	* regcache.c (generic_target_write_fp): Delete function.
	(write_fp): Delete function.
	* gdbarch.sh (TARGET_WRITE_FP): Delete.
	* gdbarch.h, gdbarch.c: Regenerate.
	* config/v850/tm-v850.h (TARGET_WRITE_FP): Delete macro.
	* config/sparc/tm-sp64.h (TARGET_WRITE_FP): Delete macro.
	(sparc64_write_fp): Delete declaration.
	* config/h8500/tm-h8500.h (TARGET_WRITE_FP): Delete macro.
	(h8500_write_fp): Delete declaration.

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

	* sparc-tdep.c (sparc64_write_fp): Delete.
	(sparc_push_dummy_frame): Replace write_fp call with code to store
	the FP directly.
	(sparc_gdbarch_init): Do not initialize write_fp.

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

	* rs6000-tdep.c (skip_prologue): Eliminate unused/unreachable
	clause.

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

	* stack.c (get_selected_block): Add new argument `addr_in_block',
	used to return the exact code address we used to select the block,
	not just the block.
	* blockframe.c (get_frame_block, get_current_block): Same.
	* frame.h (get_frame_block, get_current_block,
	get_selected_block): Update declarations.
	* linespec.c, stack.c, blockframe.c, breakpoint.c, findvar.c,
	linespec.c, varobj.c, printcmd.c, symtab.c: Callers changed.

2002-04-05  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (insert_breakpoints): Change 'hw' to 'hardware in
	warning message.

2002-04-05  J. Brobecker  <brobecker@gnat.com>

	* utils.c (xfullpath): New function.
	* defs.h (xfullpath): Add declaration.
	* source.c (openp): Use xfullpath in place of gdb_realpath to
	avoid resolving the basename part of filenames when the
	associated file is a symbolic link. This fixes a potential
	inconsistency between the filenames known to GDB and the
	filenames it prints in the annotations.
	* symtab.c (lookup_symtab): Use the new xfullpath function, in order
	to be able to match a filename with either the real filename, or
	the name of any symbolic link to this file.
	(lookup_partial_symtab): Ditto.

2002-04-04  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c: Add support for hardware breakpoints in overlays.
	(overlay_events_enabled): New state variable.
	(insert_breakpoints): Use overlay_events_enabled to decide
	whether to attempt to set a breakpoint at the overlay load addr.
	Handle bp_hardware_breakpoint as well as bp_breakpoint.
	(remove_breakpoint): Use overlay_events_enabled to decide
	whether breakpoints need to be removed from overlay load addr.
	Handle bp_hardware_breakpoint as well as bp_breakpoint.
	(bpstat_stop_status): Handle bp_hardware_breakpoint in overlays.
	(create_overlay_event_breakpoint, enable_overlay_breakpoints,
	disable_overlay_breakpoints): Update overlay_events_enabled.

2002-04-04  Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2read.c (struct function_range): New.
	(cu_first_fn, cu_last_fn, cu_cached_fn): New.
	(check_cu_functions): New.
	(read_file_scope): Initialize global function lists.
	Call dwarf_decode_line after processing children.
	(read_func_scope): Add to global function list.
	(dwarf_decode_lines): Call check_cu_functions everywhere
	record_line is called.  Call record_line with a linenumber
	of 0 to mark sequence ends.

2002-04-04  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-linux-nat.c (child_xfer_memory): x86-64 ptrace() ABI
	change sync with glibc.

2002-04-03  Jim Blandy  <jimb@redhat.com>

	* configure.in: Call AC_C_INLINE.
	* configure: Regenerated.

2002-04-01  Daniel Jacobowitz  <drow@mvista.com>

	* rs6000-tdep.c: Change #include of "bfd/libcoff.h"
	and "bfd/libbfd.h" to "libcoff.h" and "libbfd.h".

2002-03-31  Mark Kettenis  <kettenis@gnu.org>

	* NEWS: Mention gcore support on FreeBSD/i386.

	* fbsd-proc.c: New file.
	* config/i386/nm-fbsd.h (CHILD_PID_TO_EXEC_FILE): Define.
	* config/i386/fbsd.mh (NATDEPFILES): Add gcore.o and fbsd-proc.o.

	* lin-lwp.c (child_wait): Check SAVE_ERRNO instead of ERRNO in
	while statement.

2002-03-29  Jim Blandy  <jimb@redhat.com>

	* cli/cli-dump.c (_initialize_cli_dump): Older GCC's tolerate
	unescaped newlines in string literals, but newer ones don't.  So
	escape them.

2002-03-26  Michael Snyder  <msnyder@redhat.com>
	    Andrew Cagney <cagney@redhat.com>

	* cli/cli-dump.c: New file.  Dump memory to file,
	restore file to memory.
	* cli/cli-dump.h: New file.
	* Makefile.in: Add rules, dependencies for cli-dump.o.
	* NEWS: Mention new commands.

2002-03-28  Michael Snyder  <msnyder@redhat.com>

	* symfile.c (symbol_file_add): Move test for null symbols to later.

2002-03-27  Andrew Cagney  <ac131313@redhat.com>

	From veksler at il.ibm.com:
	* utils.c (gdb_realpath): If canonicalize_file_name fails, return
	the xstrduped original path.
	Fix PR gdb/417.

2002-03-27  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (_initialize_breakpoint): Clean up help string.
	* infcmd.c (_initialize_infcmd): Ditto.
	* language.c (_initialize_language): Ditto.
	* symfile.c (_initialize_symfile): Ditto.
	* top.c (_init_main): Ditto.
	* cli/cli-cmds.c (init_cli_cmds): Ditto.

2002-03-27  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (struct rs6000_framedata): Add fields for AltiVec
	vector registers handling.
	(skip_prologue): Handle new AltiVec instructions.  Fill in new
	fields of frame data.
	(frame_get_saved_regs): Fill in information for AltiVec registers.

2002-03-27  Jim Blandy  <jimb@redhat.com>

	* symtab.h (SYMBOL_INIT_MANGLED_NAME): Turn this macro's body into
	a function; leave this macro here to invoke that function.
	(symbol_init_mangled_name): Declaration for that function.
	* symtab.c (symbol_init_mangled_name): New function.

2002-03-27  Andrew Cagney  <ac131313@redhat.com>

	* valarith.c: Replace strerror with safe_strerror.
	* tracepoint.c: Ditto.
	* lin-lwp.c: Ditto.
	* go32-nat.c: Ditto.
	* inflow.c: Ditto.
	* gnu-nat.c: Ditto.

2002-03-27  Andreas Schwab  <schwab@suse.de>

	* event-top.c (command_line_handler): Remove useless if.

2002-03-27  Andreas Jaeger  <aj@suse.de>

	* dwarf2cfi.c: Give credit to Daniel Berlin, reformat copyright
	comment.

2002-03-27  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.h (X86_64_NUM_REGS, X86_64_NUM_GREGS): Delete #defines.
	(x86_64_num_regs, x86_64_num_gregs): Added extern variables.
	* x86-64-linux-nat.c (x86_64_regmap): Swapped RBX <> RDX, added DS, ES, FS, GS.
	(x86_64_linux_dr_get_status, supply_gregset),
	(fill_gregset): Changed X86_64_NUM_GREGS to x86_64_num_gregs.
	* x86-64-tdep.c (x86_64_register_raw_size_table): Delete.
	(x86_64_register_info_table): Add.
	(X86_64_NUM_REGS, X86_64_NUM_GREGS): Add.
	(x86_64_register_raw_size, x86_64_register_virtual_type),
	(x86_64_register_name, _initialize_x86_64_tdep): Changed to reflect new
	general x86_64_register_info_table.
	(i386_gdbarch_init): gdbarch_register_bytes is now set
	dynamicaly during initialization.
	* regformats/reg-x86-64.dat: Synced with changes to registers above.
	* gdbserver/linux-x86-64-low.c: Ditto.

2002-03-27  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/server.c (main): Call target_signal_to_host_p
	and target_signal_to_host on signals received from the remote.
	* gdbserver/remote-utils.c (prepare_resume_reply): Call
	target_signal_from_host on signals sent to the remote.
	* gdbserver/server.h: Add prototypes.  Include "gdb/signals.h".
	* gdbserver/Makefile.in: Add signals.o.  Add -I${INCLUDE_DIR}.

2002-03-27  Daniel Jacobowitz  <drow@mvista.com>

	* signals/signals.c: Include "server.h" in gdbserver build.
	(target_signal_from_name): Don't use STREQ.
	(_initialize_signals): Likewise.  Don't include function in
	gdbserver build.

2002-03-27  Daniel Jacobowitz  <drow@mvista.com>

	* signals.c: Moved to...
	* signals/signals.c: Here.
	* Makefile (signals.o): Update.

2002-03-26  Jeff Law (law@redhat.com)

	* somread.c (som_symtab_read): Remove some commented out code and
	updated related comments.  Do not set the minimal symbol table to
	mst_solib_trampoline for ST_ENTRY symbols with SS_LOCAL scope
	in a dynamic executable.
	* hppa-tdep.c (find_proc_framesize): Sanely handle the case
	where we are unable to find the minimal symbol for the given
	PC value.

2002-03-25  Jeff Law (law@redhat.com)

	* linux-proc.c (read_mapping): Scan up to end of line for filename.

2002-03-25  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.c (x86_64_skip_prologue): Rewritten from scratch.

2002-03-23  Andrew Cagney  <ac131313@redhat.com>

	* command.h: Update copyright.
	(struct cmd_list_element): Replace definition with opaque
	declaration.
	(enum cmd_types): Document that it will eventually be moved to
	cli/cli-decode.h
	(CMD_DEPRECATED, DEPRECATED_WARN_USER): Delete macros.
	(MALLOCED_REPLACEMENT): Delete macro.
	* Makefile.in (cli_decode_h): Add $(command_h).
	(top.o, completer.o, maint.o): Add dependency on $(cli_decode_h).
	* top.c: Include "cli/cli-decode.h".
	* completer.c: Include "cli/cli-decode.h".
	* maint.c: Include "cli/cli-decode.h".
	* cli/cli-decode.h: Include "command.h".
	(enum command_class): Delete.
	(enum cmd_types): Comment out.
	(enum cmd_auto_boolean): Delete.
	(enum var_types): Delete.

2002-03-23  Andrew Cagney  <ac131313@redhat.com>

	* cli/cli-decode.c: Include "gdb_assert.h".
	(add_set_or_show_cmd): New static function.
	(add_set_cmd): Rewrite.  Use add_set_or_show_cmd.
	(add_show_from_set): Rewrite. Use add_set_or_show_cmd.  Don't copy
	all fields, such as func, from the set command.

2002-03-23  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (sh-elf): Change warning flag to -w.

2002-03-23  Andrew Cagney  <cagney@redhat.com>

	* defs.h (error): Add printf format attribute.
	* thread-db.c (thread_from_lwp): Fix error format string.
	* stack.c (parse_frame_specification): Ditto.
	* cli/cli-decode.c (undef_cmd_error): Ditto.
	* scm-lang.c (scm_lookup_name): Ditto.
	* tracepoint.c (trace_error): Ditto.
	* remote-utils.c (usage): Ditto.
	* remote.c (compare_sections_command): Ditto.
	Fix PR gdb/328.

2002-03-22  Andrew Cagney  <ac131313@redhat.com>

	* gdbtypes.c (append_composite_type_field): New function.
	(init_composite_type): New function.
	* gdbtypes.h (append_composite_type_field): Declare.
	(init_composite_type): Ditto.

2002-03-22  Elena Zannoni  <ezannoni@redhat.com>

        * ppc-linux-tdep.c (ppc_sysv_abi_use_struct_convention): New
        function.
	* ppc-tdep.h (ppc_sysv_abi_use_struct_convention): Export.
        * rs6000-tdep.c (rs6000_gdbarch_init): Use different
        structure returning convention for SYSV ABI case, but not
        for GNU/Linux, FreeBSD, or NetBSD.

2002-03-22  Daniel Jacobowitz  <drow@mvista.com>

	* symtab.h (lookup_block_symbol): Add mangled_name argument
	to prototype.

	* symmisc.c (maintenance_check_symtabs): Call lookup_block_symbol
	with new mangled_name argument.
	* linespec.c (decode_line_1): Likewise.
	* valops (value_of_this): Likewise.
	* symtab.c (lookup_transparent_type): Likewise.
	(lookup_symbol_aux): Likewise.  Accept new mangled_name argument.
	(lookup_symbol): If we are given a mangled name, pass it down
	to lookup_symbol_aux.
	(lookup_block_symbol): If we are given a mangled name to check
	against, only return symbols which match it.

2002-03-22  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (child_create_inferior): Check for proper shell to use
	here, in case the user changes it on the fly.
	(_initialize_inftarg): Remove shell path considerations.

2002-03-21  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (rs6000_gdbarch_init): Use correct max size value
	for gdbarch_max_register_raw_size and max_register_virtual_size.
	Adjust copyright year.

2002-03-21  Daniel Jacobowitz  <drow@mvista.com>

	 * dbxread.c (process_one_symbol): Extend the first N_SLINE
	 in a function to cover the entire beginning of the function
	 as well if it does not already.

2002-03-21  Tom Rix  <trix@redhat.com>

	* rs6000-nat.c (rs6000_ptrace32): Renamed from ptrace32.
	(rs6000_ptrace64): Renamed from ptrace64.

2002-03-20  Martin M. Hunt  <hunt@redhat.com>

	* gdbserver/remote-utils.c (remote_open): Don't call
	getprotobyname, we're all using TCP here so just use
	IPPROTO_TCP.
	* gdbserver/gdbreplay.c (remote_open): Ditto.

2002-03-20  Martin M. Hunt  <hunt@redhat.com>

	* regcache.c (_initialize_regcache): No need to call
	build_regcache() at this time; it gets called whenever
	the gdbarch changes.

2002-03-20  David O'Brien  <obrien@FreeBSD.org>

	* sparc-nat.c:  Include sys/param.h where possible.

2002-03-20  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR gdb/422.
	* c-lang.c (c_create_fundamental_type): Handle FT_COMPLEX,
	FT_DBL_PREC_COMPLEX, and FT_EXT_PREC_COMPLEX.
	* dwarf2read.c (read_base_type): Set TYPE_TARGET_TYPE for
	complex types.
	* stabsread.c (rs6000_builtin_type): Likewise.
	(read_sun_floating_type): Likewise.

2002-03-19  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* stabsread.c (read_member_functions): Remove skip code for duplicate
	constructor/destructor methods.  Use standard parsing for these
	methods and just do not chain them to the list of methods after
	parsing.

2002-03-19  Alexandre Oliva  <aoliva@redhat.com>

	* coffread.c: Remove redundant static declarations.  Replace
	occurrences of `PTR' with `void *'.
	* elfread.c, mdebugread.c, minsyms.c, mipsread.c: Likewise.
	* top.h (quit_cover): Likewise.
	* defs.h (catch_errors): Likewise.

2002-03-18  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (XMALLOC): Define.
	* gdb-events.sh (XMALLOC): Delete macro.
	* gdb-events.c, gdb-events.h: Regenerate.
	* gdbarch.sh (XMALLOC): Delete macro.
	* gdbarch.c: Regenerate.
	* serial.c (XMALLOC): Delete macro.
	* ui-file.c (XMALLOC): Ditto.
	* ser-unix.h (XMALLOC): Ditto.
	* sh-tdep.c (XMALLOC): Ditto.
	* ui-out.c (XMALLOC): Ditto.
	* utils.c (XMALLOC): Ditto.
	* i386-tdep.c (XMALLOC): Ditto.
	* gdb-events.c (XMALLOC): Ditto.
	* d10v-tdep.c (XMALLOC): Ditto.
	* cli-out.c (XMALLOC): Ditto.

	* cli-out.c, d10v-tdep.c, gdb-events.c: Update copyright.
	* gdb-events.sh, i386-tdep.c, ser-unix.h, serial.c: Ditto.
	* ui-file.c, ui-out.c: Ditto.

2002-03-18  Andrew Cagney  <ac131313@redhat.com>

	* command.h (struct cmd_list_element): Add field context.
	(set_cmd_context, get_cmd_context): Declare.
	* cli/cli-decode.h: Ditto.
	* cli/cli-decode.c (get_cmd_context): New function.
	(set_cmd_context): New function.
	(add_cmd): Initialize context.
	Part of fixing PR gdb/145 and PR gdb/146.

2002-03-17  Andrew Cagney  <ac131313@redhat.com>

	* cli/cli-decode.c (cmd_type): New function.
	* command.h (cmd_type): Declare.
	* infrun.c (set_schedlock_func): Call function cmd_type.
	* kod.c (kod_set_os): Call cmd_type.
	* cris-tdep.c (cris_version_update): Use function cmd_type.
	(cris_mode_update, cris_abi_update): Ditto.

	* command.h: (execute_cmd_post_hook): Declare.
	(execute_cmd_pre_hook): Declare.
	* cli/cli-script.c (clear_hook_in_cleanup): New function.
	(execute_cmd_post_hook, execute_cmd_pre_hook): New
	functions. Execute pre/post hook while ensuring that afterwords
	hook_in is cleared.
	* top.c (execute_command): Use execute_cmd_post_hook, and
	execute_cmd_pre_hook to execute pre/post commands.
	* infrun.c (normal_stop): Pass stop_command and not pre_hook to
	hook_stop_stub.
	(hook_stop_stub): Call execute_cmd_pre_hook.

2002-03-17  Andrew Cagney  <ac131313@redhat.com>

	* kod.c (kod_set_os): Revert previous change.  Is called by ``info
	set'' and this leads to a core dump.  Move xstrdup of
	operating_system to after check that it is not NULL.

2002-03-17  Andrew Cagney  <ac131313@redhat.com>

	* kod.c (kod_set_os): Remove unnecessary check that
	``command->type'' is set_cmd.

	* valprint.c (set_input_radix): Use input_radix.
	(set_output_radix): Use output_radix.
	(set_input_radix_1, set_output_radix_1): Add FIXME - bad radix
	isn't reverted.

2002-03-16  Andrew Cagney  <ac131313@redhat.com>

	* value.h (struct value): Delete field ``substring_addr''.  Change
	aligner fields to force_doublest_align, force_longest_align,
	force_core_addr_align and force_pointer_aligh.

	* value.h (struct value): Fix typo in above change.

2002-03-16  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* ia64-tdep.c (ia64_gdbarch_init): Call set_gdbarch_frame_args_skip,
	to fix internal_error from ``maintenance print architecture''.

2002-03-16  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* cp-valprint.c (cp_is_vtbl_ptr_type): Handle vtbl field type
	for gcc versions after gcc-2.8.1.

2002-03-16  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* eval.c (evaluate_subexp_standard): Fix setup of ``this'' pointer
	for method resolution.  Restore adjustment of ``this'' pointer after
	calling value_struct_elt, which was accidentally removed during the
	HP merge.

2002-03-15  Andrew Cagney  <ac131313@redhat.com>

	* eval.c (evaluate_subexp_standard): Pass ``selected_frame'' to
	value_of_register.
	* findvar.c (value_of_register): Add ``frame'' parameter.  Pass to
	get_saved_register.
	* value.h (value_of_register): Update.

2002-03-14  Richard Henderson  <rth@redhat.com>

	* configure.in: Detect declaration for canonicalize_file_name.
	* utils.c (canonicalize_file_name): Declare, if needed.
	(gdb_realpath): Prefer realpath if available and usable.
	* config.in, configure: Rebuild.

2002-03-14  Richard Henderson  <rth@redhat.com>

	* dwarf2read.c (read_array_type): Accept DW_FORM_data8 as
	a constant array bound.

	* MAINTAINERS: Add myself to write-after-approval.

2002-03-14  Michael Snyder  <msnyder@redhat.com>

	* symfile.c (syms_from_objfile): Return immediately if no syms.
	(symbol_file_add): Return immediately if no syms.
	(find_sym_fns): Return immediately if no syms.

2002-03-13  Michal Ludvig  <mludvig@suse.cz>

	* gdbserver/remote-util.c (remote_open): Print remote-side's
	IP address when remote debugging over the network.

2002-03-12  David O'Brien  <obrien@FreeBSD.org>

	* config/sparc/fbsd.mh: Fix copyright.
	* config/sparc/fbsd.mt: Likewise.

2002-03-11  Richard Earnshaw  <rearnsha@arm.com>

	* MAINTAINERS: Fix typo in name of gdb warnings option.
	(x86-64): Fix formating so that this can be parsed by awk.

2002-03-10  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (defs_h): Add $(INCLUDE_DIR)/gdb/signals.h.
	* defs.h: Include "gdb/signals.h".
	(enum target_signal): Move to $(INCLUDE_DIR)/gdb/signals.h.

2002-03-10  Michal Ludvig  <mludvig@suse.cz>

	* x86-64-tdep.h (sys/reg.h, x86_64_regmap): Moved to x86-64-linux-nat.c
	* x86-64-linux-nat.c (sys/reg.h, x86_64_regmap): Moved here
	from x86-64-tdep.h

2002-03-10  Daniel Jacobowitz  <drow@mvista.com>
	    Don Howard <dhoward@redhat.com>

	* mips-tdep.c (ST0_FR): Define.
	(mips2_fp_compat): New function, temporarily disabled.
	(mips_read_fp_register_single): New function.
	(mips_read_fp_register_double): New function.
	(mips_print_register): Use them.
	(do_fp_register_row): Likewise.

2002-03-09  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add Jim Ingham and Klee Dienes to ``write after
	approval''.

2002-03-08  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* stabsread.c (read_member_functions): Fix is_stub test for
	static member functions, improve comment.

2002-03-07  Richard Earnshaw  <rearnsha@arm.com>

	* remote-rdi.c (myprint): Replace 'PTR' with 'void *'.
	(mywrite, mywritec, mypause, myreadc, mygets): Likewise.
	(_initialize_remote_rdi): Use add_set_boolean_cmd to register
	commands that set boolean values.
	(arm_rdi_remove_breakpoint): Rewrite to avoid uninitialized warning.
	(arm_rdi_resume): Always initialize PC.
	(arm_rdi_open): Don't use rslt as a boolean.
	(arm_rdi_create_inferior, arm_rdi_close, arm_rdi_resume)
	(arm_rdi_fetch_registers, arm_rdi_store_registers)
	(arm_rdi_xfer_memory, arm_rdi_files_info, arm_rdi_kill)
	(arm_rdi_insert_breakpoint, arm_rdi_remove_breakpoint): Likewise.

2002-03-06  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (gdb_cv_bigtoc): Check for -bbigtoc on AIX.
	* configure: Rebuilt.

2002-03-06  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (_initialize_m68hc11_tdep): Don't set tm_print_insn.
	(m68hc11_gdbarch_init): But use set_gdbarch_print_insn instead.

2002-03-06  Andrew Cagney  <ac131313@redhat.com>

	* cli/cli-decode.c (set_cmd_completer): New function.
	* command.h (set_cmd_completer): Declare.
	* cli/cli-decode.h (set_cmd_completer): Ditto.

	* breakpoint.c (_initialize_breakpoint): Use set_cmd_completer.
	* cli/cli-cmds.c (init_cli_cmds): Ditto.
	* win32-nat.c (_initialize_inftarg): Ditto.
	* remote-rdi.c (_initialize_remote_rdi): Ditto.
	* proc-api.c (_initialize_proc_api): Ditto.
	* hppa-tdep.c (_initialize_hppa_tdep): Ditto.
	* source.c (_initialize_source): Ditto.
	* exec.c (_initialize_exec): Ditto.
	* solib.c (_initialize_solib): Ditto.
	* top.c (init_main): Ditto.
	* tracepoint.c (_initialize_tracepoint): Ditto.
	* symfile.c (_initialize_symfile): Ditto.
	* printcmd.c (_initialize_printcmd): Ditto.
	* infcmd.c (_initialize_infcmd): Ditto.
	* corefile.c (_initialize_core): Ditto.

2002-03-05  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (Past Maintainers): Add Frank Ch. Eigler.

2002-03-05  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Fix Mac OS X and Objective-C/C++.

2002-03-05  Andrew Cagney  <ac131313@redhat.com>

	* NEWS: Update headings, 5.2 has branched.

2002-03-04  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (PTRACE_XFER_TYPE): Change to long.
	(num_regs, regmap): Move inside HAVE_LINUX_USRREGS.
	(register_addr, REGISTER_RAW_SIZE): Likewise.
	(usr_store_inferior_registers): Use PTRACE_XFER_TYPE.
	* gdbserver/linux-x86-64-low.c: Remove extra #endif.

2002-03-03  Michal Ludvig <mludvig@suse.cz>

	* MAINTAINERS (x86-64): Add myself.
	* x86-64-tdep.c (x86_64_push_arguments): Fixed typo naregs->nregs,
	changed value_ptr -> struct value *

2002-03-01  David O'Brien  <obrien@FreeBSD.org>

	* configure.host (sparc64-*-freebsd): Add.
	* configure.tgt: Likewise.
	* config/sparc/fbsd.mh: New file.
	* config/sparc/fbsd.mt: Likewise.
	* config/sparc/nm-fbsd.h: Likewise.
	* config/sparc/tm-fbsd.h: Likewise.

2002-03-01  Daniel Jacobowitz  <drow@mvista.com>

	* config/djgpp/fnchange.lst: Add regformats/reg-i386-linux.dat and
	regformats/reg-s390x.dat.

2002-03-01  Andrew Cagney  <ac131313@redhat.com>

	* utils.c: Add FIXME explaining true/false problem.

2002-02-28  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (Past Maintainers): Add J.T. Conklin.

2002-02-28  Michael Chastain  <mec@shout.net>

	* MAINTAINERS: Fix typo: gdb.satbs -> gdb.stabs .

2002-02-28  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-s390-low.c: New file.
	* regformats/reg-s390.dat: New file.
	* regformats/reg-s390x.dat: New file.
	* gdbserver/configure.srv: Add S/390.
	* gdbserver/Makefile.in: Add S/390.
	* configure.tgt: Enable gdbserver for S/390.

2002-02-28  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (_initialize_go32_nat): Don't use periods in the
	first line of the doc string for "info dos", except at the end of
	the sentence, since the short help stops at the first period.

2002-02-28  Jason Merrill  <jason@redhat.com>

	* dwarf2read.c (dwarf_cfi_name): Add new codes.

2002-02-27  Fred Fish  <fnf@redhat.com>

	* blockframe.c (generic_fix_call_dummy): Fix obvious typo in
	comment (dumy -> dummy).

2002-02-27  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* symtab.c (gdb_mangle_name): Handle fully mangled v3 abi physnames.

2002-02-27  Rodney Brown  <rbrown64@csc.com.au>

      * utils.c (gdb_realpath): Add pathconf fallback for sco3.2v5.

2002-02-27  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/acconfig.h: New file.
	* gdbserver/i387-fp.c: New file.
	* gdbserver/i387-fp.h: New file.
	* gdbserver/linux-x86-64.c: New file.
	* regformats/reg-x86-64.dat: New file.
	* configure.tgt: Add x86_64-*-linux* gdbserver support.
	* gdbserver/configure.srv: Add x86_64-*-linux* and regset support.
	* gdbserver/configure.in: Add support for regsets.
	* gdbserver/config.in: Regenerate.
	* gdbserver/configure: Regenerate.
	* gdbserver/Makefile.in: Likewise.  Add $(linux_low_h).
	* gdbserver/linux-low.h: New file.
	* gdbserver/linux-low.c: Include "linux-low.h".  Add support
	for regsets.
	* gdbserver/linux-arm-low.c: Include "linux-low.h".
	* gdbserver/linux-ia64-low.c: Include "linux-low.h".
	* gdbserver/linux-m68k-low.c: Include "linux-low.h".
	* gdbserver/linux-mips-low.c: Include "linux-low.h".
	* gdbserver/linux-ppc-low.c: Include "linux-low.h".
	* gdbserver/linux-sh-low.c: Include "linux-low.h".
	* gdbserver/linux-i386-low.c: Include "linux-low.h".  Include
	"i387-fp.h".  Add PTRACE_GETREGS and friends.
	* gdbserver/regcache.c (supply_register): New function.
	(supply_register_by_name): New function.
	(collect_register): New function.
	(collect_register_by_name): New function.

2002-02-27  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in (INTERNAL_CFLAGS): Remove -DGDBSERVER.
	(config.status): Add configure.srv dependency.
	(server_h): Add config.h dependency.

2002-02-27  Daniel Jacobowitz  <drow@mvista.com>

	* regformats/reg-i386-linux.dat: New file, with $orig_eax.
	* gdbserver/Makefile.in: Add rules for reg-i386-linux.o.
	* gdbserver/configure.srv: Change i386-*-linux* to use
	reg-i386-linux.o.

2002-02-26  Andrew Cagney  <ac131313@redhat.com>

	* x86-64-tdep.c: Re-indent.  Update copyright date.

2002-02-26  Andrew Cagney  <ac131313@redhat.com>

	From Michal Ludvig <mludvig@suse.cz>:
	* x86-64-tdep.c (value.h): Delete.
	(gdb_assert.h): Include.
	(x86_64_register_convert_to_virtual,
	x86_64_register_convert_to_raw ): Add check which lets only
	floating-point values to be converted.
	(value_push): Delete.
	(x86_64_push_arguments): Order of arguments pushed on stack fixed.
	(i386_gdbarch_init): Number of register_bytes fixed.

2002-02-26  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add x86-64 target.

2002-02-26  Andrew Cagney  <ac131313@redhat.com>

	* memattr.c (mem_command): Eliminate ``true'' and ``false''.
	* osfsolib.c (solib_map_sections): Ditto.
	* irix5-nat.c (solib_map_sections): Ditto.
	* corelow.c (gdb_check_format): Ditto.
	* symfile.c (symfile_bfd_open): Ditto.
	* solib.c (solib_map_sections): Ditto.
	Fix PR gdb/354.

2002-02-26  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (_initialize_remote): By default, disable ``e'' and
	``E'' step out-of-range packets.

2002-02-26  Andreas Schwab  <schwab@suse.de>

	* config/m68k/tm-linux.h (FRAME_SAVED_PC): Define as
	m68k_linux_frame_saved_pc.
	(IN_SIGTRAMP): Define as m68k_linux_in_sigtramp instead of
	in_sigtramp.
	(SIGCONTEXT_PC_OFFSET): Remove.
	* m68klinux-nat.c (m68k_linux_frame_saved_pc,
	m68k_linux_sigtramp_saved_pc): New functions.
	(IS_SIGTRAMP, IS_RT_SIGTRAMP): Define.
	(SIGCONTEXT_PC_OFFSET): Moved here from config/m68k/tm-linux.h.
	(UCONTEXT_PC_OFFSET): Define.
	(m68k_linux_in_sigtramp): Renamed from in_sigtramp, handle both
	non-RT and RT signal trampolines.

2002-02-26  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/tm-embed.h (TARGET_UPAGES): Delete.
	(TARGET_NBPG, STACK_END_ADDR): Delete
	(VARIABLES_INSIDE_BLOCK): Delete.

2002-02-25  Andrew Cagney  <ac131313@redhat.com>

	* utils.c (perror_with_name): Make string parameter constant.
	(print_sys_errmsg): Ditto.
	(query): Ditto.
	* defs.h (perror_with_name): Update.
	(print_sys_errmsg): Update.
	(query): Update.

2002-02-25  Daniel Jacobowitz  <drow@mvista.com>

	From Eliot Dresselhaus <eliot@ayrnetworks.com>:
	* gdbserver/linux-mips-low.c (cannot_fetch_register): Fix typo.

2002-02-25  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* rs6000-nat.c (set_host_arch): Do not switch to a new architecture
	if it already matches the current architecture from the exec file.
	Include arch-utils.h for gdbarch_info_init prototype.
	* Makefile.in (rs6000-nat.o): Update dependencies.

2002-02-25  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/djconfig.sh: Set NM=nm and CFLAGS="-g -O2" in the
	 list of exported variables.

2002-02-24  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/configure.srv: New file.
	* gdbserver/configure.in: Use configure.srv instead
	of the host/target makefile fragments.  Set GDBSERVER_DEPFILES
	from it.
	* gdbserver/configure: Regenerated.
	* gdbserver/terminal.h: New file.
	* gdbserver/Makefile.in: Update for configure changes.  Remove
	more unneeded include paths.

2002-02-24  Andrew Cagney  <ac131313@redhat.com>

	From wiz at danbala:
	* config/sparc/tm-sp64.h: Fix grammar and typos.
	Fix PR gdb/287.

2002-02-24  Andrew Cagney  <ac131313@redhat.com>

	* lin-lwp.c, thread-db.c, defs.h, cris-tdep.c: Replace ``Linux''
	with either ``GNU/Linux'' or ``Linux kernel''.  Update copyright.
	* m68klinux-nat.c, sparc-linux-nat.c, x86-64-linux-nat.c: Ditto.
	* x86-64-linux-tdep.c, gregset.h, gdb_wait.h: Ditto.
	* ia64-linux-nat.c, infrun.c, linux-proc.c: Ditto.
	* proc-service.c, i386-linux-tdep.c, ppc-linux-tdep.c: Ditto.
	* s390-tdep.c: Ditto.
	* config/nm-linux.h, config/alpha/nm-linux.h: Ditto.
	* config/alpha/tm-alpha.h, config/alpha/tm-alphalinux.h:
	* config/alpha/xm-alphalinux.h, config/i386/nm-linux.h: Ditto.
	* config/i386/nm-x86-64.h, config/i386/tm-linux.h: Ditto.
	* config/m68k/tm-linux.h, config/mips/nm-linux.h: Ditto.
	* config/mips/tm-linux.h, config/mips/xm-linux.h: Ditto.
	* config/powerpc/tm-linux.h, config/s390/nm-linux.h: Ditto.
	* config/s390/tm-linux.h, config/sh/tm-linux.h: Ditto.
	* config/sparc/nm-linux.h, config/sparc/tm-linux.h: Ditto.
	* config/sparc/tm-sp64linux.h, config/sparc/xm-linux.h: Ditto.
	Fix PR gdb/378.

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	* lin-thread.c: Delete file.
	* configure.in (gdb_cv_struct_reg_r_gs): Update comment to refer
	to gdb_proc_service.h.
	* configure: Re-generate.

	* ocd.c (ocd_open): Do not try to open the "ocd" device.
	* serial.c (serial_open): Delete check for "ocd".
	Fix PR gdb/349.

	* Makefile.in (linux-thread.o): Delete target.
	* linux-thread.c: Delete file.

	* config/djgpp/fnchange.lst: Rename bfd/elf32-sh64.c.  Tweak other
	renamed SH files to be consistent.

	* symtab.c (sort_search_symbols): Use xfree.

2002-02-23  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-tdep.c (arm_linux_init_abi): Register
	IN_SOLIB_CALL_TRAMPOLINE and SKIP_TRAMPOLINE_CODE
	* config/arm/tm-linux.h (IN_SOLIB_CALL_TRAMPOLINE): Replace old
	definition with undef, since we don't want the sysvr4 definition.
	(SKIP_TRAMPOLINE_CODE): Likewise.

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	From 2002-02-22 Alfred M. Szmidt <ams@kemisten.nu>:

	* configure.in: (AC_CHECK_FUNCS) Added test for
	canonicalize_file_name Regenerated.
        * config.in, configure: Regenerated.
        * utils.c: (gdb_realpath) If HAVE_CANONICALIZE_FILE_NAME is
	defined use canonicalize_file_name.

2002-02-23  Michael Chastain  <mec@shout.net>

	* MAINTAINERS: Remove Michael Chastain from "paper trail" list.

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	* README: Remove references to cygnus.com.
	* MAINTAINERS: Change Past Maintainer addresses to ``foo at bar
	dot com'' form.  Remove references to cygnus.com and sourceware.

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	From 2002-02-19 Paul Eggert <eggert@twinsun.com>:
	* Makefile.in (VER): Change "head -1" to "sed q", since POSIX
	1003.1-2001 no longer allows "head -1".
	* gdb/Makefile.in (version.c): Likewise.
	* gdb/doc/Makefile.in (GDBvn.texi): Likewise.
	* gdb/CONTRIBUTE: Change "diff -c3" to "diff -c", which is
	equivalent.  POSIX 1003.1-2001 no longer allows "diff -c3".

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	* cli/cli-decode.c (cmd_cfunc_eq): New function.
	* command.h (cmd_cfunc_eq): Declare.
	* cli/cli-decode.h (cmd_cfunc_eq): Ditto.

	* cli/cli-cmds.h (is_complete_command): Change parameter to a
	``struct cmd_list_element *''.
	* cli/cli-cmds.c (is_complete_command): Update.  Use
	cmd_cfunc_eq.
	* top.c (execute_command): Pass the command to
	is_complete_command.
	* tracepoint.c: Replace function.cfunc with cmd_cfunc_eq.

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	From 2002-02-20 Martin Schwidefsky <schwidefsky@de.ibm.com>:
	* config/s390/tm-s390.h (GDB_TARGET_IS_ESAME): Use renamed
	architecture defines.
	* s390-tdep.c (s390_gdbarch_init): Likewise.

2002-02-23  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-tdep.c (arm_linux_extract_return_value): Make static.
	(arm_linux_push_arguments): Likewise.
	(arm_linux_init_abi): Register them.  Also register linux-specific
	call_dummy_words.
	(find_minsym_and_objfile): Use strcmp, not STREQ.
	* config/arm/tm-linux.h (CALL_DUMMY_WORDS): Delete.
	(arm_linux_call_dummy_words): Delete declaration.
	(EXTRACT_RETURN_VALUE, PUSH_ARGUMENTS): Delete.
	(arm_linux_extract_return_value, arm_linux_push_arguments): Delete
	declarations.
	(LOWEST_PC): Delete.

2002-02-23  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* maint.c (print_section_info): Do not prepend `0x' to filepos
	output, it will be handled by local_hex_string_custom.

2002-02-23  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-nat.c (store_newfpe_single): Use regcache_collect.
	(store_newfpe_double, store_newfpe_extended, store_fpregister)
	(store_register, store_regs, fill_gregset, fill_fpregset): Likewise.

2002-02-22  Jim Blandy  <jimb@redhat.com>

	Indicate that the bcache functions don't change the strings
	they're passed.
	* bcache.h (bcache, hash): Add `const' keywords to declarations.
	* bcache.c (bcache, hash): Add `const' keywords to definitions.

2002-02-22  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (child_create_inferior): Fix create flags setting bug.

2002-02-21  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (register_loaded_dll): Just use raw name when we can't
	find the complete path to a loaded DLL.

2002-02-21  Fred Fish  <fnf@redhat.com>

	* dbxread.c (process_one_symbol): When finding an N_FUN symbol
	that marks the end of the range of a function, enter a line number
	entry that has a line number of zero and a PC offset that matches
	the end of the function.  This starts a range of PC's for which no
	line number information is known.
	* symtab.c (find_pc_sect_line): If our best fit is in a range of
	PC's for which no line number info is found (line number is zero)
	then we didn't find any valid line information.
	* symtab.h: Document use of zero line number entry.

2002-02-21  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-linux-nat.c (PTRACE_GETVRREGS, PTRACE_SETVRREGS): Define.
	(have_ptrace_getvrregs): Define for run time checks.
	(gdb_vrregset_t): New type for Altivec register handling.
	(fetch_register, store_register): Fetch/store altivec register
	when needed.
	(fetch_altivec_register, store_altivec_register): New functions.
	(supply_vrregset, fill_vrregset): New functions.
	(fetch_altivec_registers, store_altivec_registers): New functions.
	(fetch_ppc_registers, store_ppc_registers): Fetch/store altivec
	registers as well.

2002-02-21  Jiri Smid  <smid@suse.cz>

	* config/i386/x86-64linux.mh (NATDEPFILES): Remove x86-64-nat.o.

2002-02-21  Richard Earnshaw  <rearnsha@arm.com>

	* Makefile.in (armnbsd-nat.o): Update dependencies.
	* armnbsd-nat.c (supply_gregset): New function.  Common code to
	supply the integer register set.
	(supply_fparegset): New function.  Similar for FPA registers.
	(fetch_regs, fetch_fp_regs): Use them.
	(fetch_core_registers): Likewise.
	(fetch_elfcore_registers): New function.
	(arm_netbsd_elfcore_fns): New core-file type specification.
	(_initialize_arm_netbsd_nat): Register it.

2002-02-21  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-nat.c: Include gdbcore.h.
	(FETCH_INFERIOR_REGISTERS): Just error if this isn't defined.
	(fetch_regs, fetch_fp_regs, store_regs, store_fp_regs): Add explicit
	'void' to declaration, to shut up ARI.
	(fetch_core_registers): Make static.  Rewrite using supply_register.
	(arm_netbsd_core_fns): New core-file type specification.
	(_initialize_arm_netbsd_nat): New function.

2002-02-21  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (register_loaded_dll): Correctly check for invalid handle
	value.

2002-02-20  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (register_loaded_dll): Handle case where FindFirstFile
	fails.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* jv-exp.y (parse_number): Change type of implicit longs
	to builtin_type_uint64.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (mywait): Change argument to waitpid
	to be an integer instead of a `union wait'.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* mips-linux-nat.c: Call the operating system GNU/Linux.
	* mips-linux-tdep.c: Likewise.
	* mips-tdep.c: Likewise.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR gdb/265.
	* jv-exp.y (parse_number): Handle 64-bit integers.

2002-02-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/configure.in: Remove AM_PROC_CC_STDC.  Change
	AC_STDC_HEADERS to AC_HEADER_STDC.
	* gdbserver/configure: Regenerated.

2002-02-20  Richard Earnshaw  <rearnsha@arm.com>

	* arc-tdep.c (get_longjmp_target): Only compile this function if JB_PC
	is defined.
	* sparc-tdep.c (get_longjmp_target): Likewise.

2002-02-20  Richard Earnshaw  <rearnsha@arm.com>

	* News: Add news about ARM and Multi-arch.  Mention the new target
	arm*-*-netbsd*.

2002-02-19  Jim Blandy  <jimb@redhat.com>

	* stabsread.c (error_type_complaint): Improve error message.

2002-02-19  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/README: Update documentation.
	* gdbserver/configure.in: Update configury to match documentation.
	* gdbserver/Makefile.in: Likewise.
	* gdbserver/configure: Regenerated.
	* gdbserver/aclocal.m4: New file, generated by aclocal.
	* gdbserver/config.in: New file, generated by autoheader.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* config/djgpp/fnchange.lst: Add change rules for armnbsd-tdep.c and
	armnbsd-nat.c.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.h (enum arm_float_model): New enum.
	(struct gdbarch_tdep): Add fp_model.
	* arm-tdep.c (arm_gdbarch_init): Set fp_model in tdep.  Defer setting
	up floating-point conversions until we know the floating-point model
	in use by the inferior.  Don't complain about being unable to
	determine the ABI of the inferior when we don't have one.
	(arm_extract_return_value): Support different floating-point models.
	(arm_store_return_value): Likewise.
	* armnbsd-tdep.c (arm_netbsd_aout_init_abi): Set fp_model in tdep to
	ARM_FLOAT_SOFT.
	(arm_netbsd_elf_init_abi): Set fp_model to ARM_FLOAT_SOFT_VFP.

2002-02-19  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* i386-tdep.c (i386_gdbarch_init): Eliminate incorrect use
        of ``current_gdbarch''.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-nat.c : ANSIfy all function declarations.
	(fetch_register, fetch_regs, fetch_fp_register, fetch_fp_regs): New.
	(fetch_inferior_registers): Re-implement in terms of above.
	(store_register, store_regs, store_fp_register, store_fp_regs): New.
	(store_inferior_registers): Re-implement in terms of above.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-nat.c: Linux -> GNU/Linux when not talking about the
	kernel.
	* arm-linux-tdep.c: Likewise.
	* config/arm/tm-linux.h: Likewise.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* configure.tgt (arm*-*-netbsd*): This variant is now fully multi-arch.
	* config/arm/nbsd.mt (TM_FILE): Delete.
	* config/arm/tm-nbsd.h: Delete.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_gdbarch_init): Initialize TARGET_CHAR_SIGNED.
	Initialize CALL_DUMMY_LENGTH.

2002-02-19  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-tdep.c (arm_netbsd_aout_in_solib_call_trampoline): New
	function.
	(arm_netbsd_aout_init_abi): Initialize IN_SOLIB_CALL_TRAMPOLINE.
	* config/arm/tm-nbsd.h: Don't include config/tm-nbsd.h, it only
	defines one thing and that is incorrect for this port.
	(IN_SOLIB_CALL_TRAMPOLINE): Delete.

2002-02-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* go32-nat.c: add i386-tdep.h include to import FP_REGNUM_P macro.

2002-02-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (display_selector): New function. Displays information
	about the information returned by GetThreadSelectorEntry API function.
	(display_selectors): New function. Displays the infomation of
	the selector given as argument, or of CS, DS ans FS selectors
	if no argument is given.
	( _initialize_inftarg): Add "w32" as info prefix command.
	Add "info w32 selector" as command calling display_selectors.

2002-02-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* i386-tdep.c (get_longjmp_target): Fix compilation failure
	by setting dummy values to JB_PC and JB_ELEMENT_SIZE
	if not defined.

2002-02-18  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/nbsd.mt (TDEPFILES): Add solib-sunos.o.

2002-02-18  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_set_call_dummy_breakpoint_offset): New function.
	(arm_fix_call_dummy): Call it.
	(arm_call_dummy_breakpoint_offset): Delete.
	(arm_gdbarch_init): Initialize call_dummy_breakpoint_offset.
	* config/arm/tm-arm.h (CALL_DUMMY_BREAKPOINT_OFFSET): Delete.

2002-02-18  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (FRAME_CHAIN_VALID): Only require at level 2.
	Default to func_frame_chain_valid.
	* gdbarch.h, gdbarch.c: Re-generate.
	* frame.h (FRAME_CHAIN_VALID): Delete definition.

2002-02-18  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-linux-nat.c: Update copyright.
	(fetch_register, store_register): Add tid parameter, don't compute
	tid here.
	(fetch_ppc_registers, store_ppc_registers): Add tid
	parameter. Pass it along to callees.
	(fetch_inferior_registers, store_inferior_registers): Compute tid
	here, and pass it to calleed functions.
	(fill_gregset, supply_fpregset): Clean up formatting.

2002-02-18  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_gdbarch_init): Initialize coerce_float_to_double.
	* config/arm/tm-arm.h (COERCE_FLOAT_TO_DOUBLE): Delete.

2002-02-18  Richard Earnshaw  <rearnsha@arm.com>

	* gdbarch.sh (GET_LONGJMP_TARGET): Add rule.
	* gdbarch.c gdbarch.h: Regenerate.
	* breakpoint.c (create_longjmp_breakpoint): Always compile this
	function.
	(breakpoint_reset): Test GET_LONGJMP_TARGET_P().
	* infrun.c (GET_LONGJMP_TARGET): Delete default definition.
	(handle_inferior_event): Test GET_LONGJMP_TARGET_P().

	* arm-tdep.h (struct gdbarch_tdep): Add jb_pc and jb_elt_size fields.
	* arm-tdep.c (arm_get_longjmp_target): New function.
	(arm_gdbarch_init): Initialize jb_pc to -1.  If ABI handler changes
	this to a positive value register arm_get_longjmp_target as the
	longjmp handler.
	* arm-linux-tdep.c (arm_get_longjmp_target): Delete.
	(arm_linux_init_abi): Set up longjmp description in tdep.
	* armnbsd-nat.c (get_longjmp_target): Delete.
	* armnbsd-tdep.c (arm_netbsd_init_abi_common): Set up longjmp
	description in tdep.
	* config/arm/tm-nbsd.h (JB_ELEMENT_SIZE, JB_PC): Delete.
	(get_longjmp_target): Delete declaration.
	(GET_LONGJMP_TARGET): Delete.
	* config/arm/tm-linux.h (arm_get_longjmp_target): Delete declaration.
	(GET_LONGJMP_TARGET): Delete.

2002-02-17  Kevin Buettner  <kevinb@redhat.com>

	From Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>:
	* ia64-tdep.c (ia64_gdbarch_init): Eliminate incorrect use
	of ``current_gdbarch''.

2002-02-17  Tom Tromey  <tromey@redhat.com>

	* cli/cli-cmds.c (compare_strings): New function.
	(complete_command): Only print each unique item once.
	* completer.h (complete_line): Declare.
	* completer.c (complete_line): New function.
	(line_completion_function): Use it.

2002-02-16  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (TARGET_LONG_DOUBLE_BIT): Default to 64.
	* gdbarch.h, gdbarch.c: Re-generate.

2002-02-16  Daniel Jacobowitz  <drow@mvista.com>

	* valarith.c (value_x_unop): Fix decrement; support post-decrement.

2002-02-16  Daniel Jacobowitz  <drow@mvista.com>

	From Peter Schauer <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>:
	* valops.c (value_arg_coerce): Don't take the address of a reference
	to convert an argument to a reference.

2002-02-15  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (get_image_name): New function.
	(handle_load_dll): Use get_image_name function.
	(get_child_debug_event): Avoid registering debug events until possibly
	execed process is started.
	(child_create_inferior): Allow invocation via shell so that command
	line redirection, etc.  works ok.
	(_initialize_inftarg): Add new command: "set shell" to control whether
	a shell is used to start a process.

2002-02-15  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-mips-low.c (cannot_fetch_register): Use find_regno
	instead of find_register_by_number.
	(cannot_store_register): Likewise.

2002-02-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	* dwarf2read.c: Replace fprintf (stderr, ...) by
	fprintf_unfiltered (gdb_stderr, ...).

2002-02-15  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/gdbserver.1: Document --attach.

2002-02-15  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.h (struct gdbarch_tdep): Add fields for breakpoint
	descriptions.
	* arm-tdep.c (arm_default_arm_le_breakpoint)
	(arm_default_arm_be_breakpoint, arm_default_thumb_le_breakpoint)
	(arm_default_thumb_be_breakpoint): New.  Initialize them from
	traditional breakpoint defines.
	(arm_breakpoint_from_pc): Use new gdbarch_tdep entries.
	(arm_gdbarch_init): Initialize new breakpoint variables.
	* arm-linux-tdep.c (arm_linux_arm_le_breakpoint): New.
	(arm_linux_init_abi): Initialize linux-specific breakpoint.
	* armnbsd-tdep.c (arm_nbsd_arm_le_breakpoint): New.
	(arm_netbsd_aout_init_abi, arm_netbsd_elf_init_abi): Split common
	code out to ...
	(arm_netbsd_init_abi_common): ... here; new function.
	* config/arm/tm-arm.h (ARM_LE_BREAKPOINT, ARM_BE_BREAKPOINT)
	(THUMB_LE_BREAKPOINT, THUMB_BE_BREAKPOINT): Delete.
	* config/arm/tm-linux.h (ARM_LE_BREAKPOINT): Delete.
	* config/arm/tm-nbsd.h (ARM_LE_BREAKPOINT): Delete.

2002-02-15  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.h (enum arm_abi): New enum.
	(struct gdbarch_tdep): New structure.
	(LOWEST_PC): Provide a default.
	(arm_gdbarch_register_os_abi): Declare new function.
	* arm-tdep.c (arm_abi_names): New array.
	(process_note_abi_tag_sections): New function.
	(get_elfosabi): New function.
	(arm_gdbarch_register_os_abi): New function.
	(arm_gdbarch_init): Try to determine the ABI of the inferior.  If
	support for that ABI has been built in, then call the appropriate
	configuration routine.  Use gdbarch_num_regs() to get the number
	of registers.
	(arm_dump_tdep): New function.
	(arm_init_abi_eabi_v1, arm_init_abi_eabi_v2, arm_init_abi_apcs): New
	place-holder functions.
	(_initialize_arm_tdep): Register them.
	* config/arm/tm-arm.h (LOWEST_PC): Delete.

	* armnbsd-tdep.c: New file.
	* Makefile.in (armnbsd-tdep.o): Add dependencies.
	* config/arm/nbsd.mt (TDEPFILES): Add it.
	* config/arm/tm-nbsd.h (LOWEST_PC): Delete.

	* armnbsd-nat.c: Include regcache.h.
	* Makefile.in (armnbsd-nat.o): Update dependency list.

	* arm-tdep.c (arm_get_next_pc): Use printf_filtered for error message.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in: Fix typos in target rules.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	Fix part of PR gdb/267.
	* linespec.c (find_methods): Handle constructors specially for now.

2002-02-14  Corinna Vinschen  <vinschen@redhat.com>

	* arm-tdep.c (arm_push_arguments): Eliminate special float type
	handling.
	* config/arm/tm-arm.h (COERCE_FLOAT_TO_DOUBLE): Define to call
	standard_coerce_float_to_double().

2002-02-14  Christopher Faylor  <cgf@redhat.com>

	* config/i386/xm-cygwin.h: Revert inadvertent reinclusion of
	GDBINIT_FILENAME.

2002-02-14  Elena Zannoni  <ezannoni@redhat.com>

	* rs6000-tdep.c (rs6000_gdbarch_init): Don't call
	find_variant_by_name, because it confuses the multiarch
	framework. Return NULL if there isn't an architecture with the
	user supplied name, instead of forcing a different one without
	recording the change with the multiarch machinery.
	(find_variant_by_name): Delete.

2002-02-14  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* config/i386/i386sol2.mh (NATDEPFILES): Add i387-nat.o, needed by
	i386v4-nat.o now. Add gcore.o, Solaris x86 supports gcore.

2002-02-13  Martin M. Hunt  <hunt@redhat.com>

	* stack.c (print_frame_info_base): When calling
	print_frame_info_listing_hook, set current_source_symtab.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in: Add regformats directory to INCLUDE_CFLAGS,
	and remove unused $(INCLUDE_DIR).
	Add regcache.c to OBS.
	Add generated register protocol files to clean target.
	Update dependencies for new objects, obsolete old target code.

	* gdbserver/linux-low.c: Remove all platform-specific code to
	new files.  Remove various dead code.  Update to use regcache
	functionality.
	* gdbserver/remote-utils.c (fromhex): Add return statement
	to quiet warning.
	(putpkt): Dynamically allocate buf2 because PBUFSIZ is no longer
	constant.
	(input_interrupt): Add integer parameter to match prototype
	of a signal handler.
	(outreg): Use register_data ().
	(prepare_resume_reply): Use gdbserver_expedite_regs.
	* gdbserver/server.c (main): Dynamically allocate own_buf because
	PBUFSIZ is no longer constant.  Use registers_to_string () and
	registers_from_string ().
	* gdbserver/server.h: No longer include "defs.h".  Add prototypes
	for error (), fatal (), and warning ().  Update definition of
	PBUFSIZ to use regcache functionality.  Add include guard.
	* gdbserver/utils.c (fatal): Add missing ``const''.
	(warning): New function.

	* regformats/regdat.sh: Include "regcache.h" in generated files.
	Provide init_registers () function.
	* regformats/regdef.h: Add prototype for set_register_cache ().
	Add include guard.

	* gdbserver/linux-arm-low.c: New file.
	* gdbserver/linux-i386-low.c: New file.
	* gdbserver/linux-ia64-low.c: New file.
	* gdbserver/linux-m68k-low.c: New file.
	* gdbserver/linux-mips-low.c: New file.
	* gdbserver/linux-ppc-low.c: New file.
	* gdbserver/linux-sh-low.c: New file.

	* gdbserver/regcache.c: New file.
	* gdbserver/regcache.h: New file.

	* gdbserver/low-linux.c: Removed obsolete file.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	* config/arm/linux.mt: Update GDBSERVER_DEPFILES.
	* config/i386/linux.mt: Likewise.
	* config/ia64/linux.mt: Likewise.
	* config/m68k/linux.mh: Likewise.
	* config/powerpc/linux.mh: Likewise.
	* config/mips/linux.mt: Likewise.

	* config/sh/linux.mt: Add GDBSERVER_DEPFILES.

	* config/i386/i386lynx.mh: Mark gdbserver variables
	as (currently) obsolete for this target.
	* config/i386/nbsd.mt: Likewise.
	* config/i386/nbsdelf.mt: Likewise.
	* config/m32r/m32r.mt: Likewise.
	* config/m68k/m68klynx.mh: Likewise.
	* config/m68k/nbsd.mt: Likewise.
	* config/m68k/sun3os4.mh: Likewise.
	* config/mips/vr5000.mt: Likewise.
	* config/ns32k/nbsd.mt: Likewise.
	* config/pa/hppabsd.mh: Likewise.
	* config/pa/hppaosf.mh: Likewise.
	* config/powerpc/nbsd.mt: Likewise.
	* config/rs6000/rs6000lynx.mh: Likewise.
	* config/s390/s390.mt: Likewise.
	* config/s390/s390x.mt: Likewise.
	* config/sparc/sparclynx.mh: Likewise.
	* config/sparc/sun4os4.mh: Likewise.
	* config/i386/x86-64linux.mt: Likewise.
	* config/sparc/linux.mh: Likewise.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	* configure.tgt: Configure gdbserver only for known working
	targets.  Set ${build_gdbserver} instead of modifying ${configdirs}.
	* configure.in: Check ${build_gdbserver}.  Put gdbserver/ into
	SUBDIRS if it is configured.  Update comment for ${nativefile}.
	* configure: Regenerated.

2002-02-13  Michael Snyder  <msnyder@redhat.com>

	* config/i386/i386v42mp.mh: Add gcore.o to NATDEPFILES.

	* gcore.c (gcore_command): Use gcore_default_target instead of NULL.
	(default_gcore_mach): Just return 0, work around a problem in bfd.
	(default_gcore_target): OK to return NULL if exec_bfd is null.
	(make_mem_sec): Use a cast, avoid a warning.

	* procfs.c (find_memory_regions_callback): Use a cast instead of
	calling host_pointer_to_address (which complains if
	sizeof (host pointer) != sizeof (target pointer)).
	(procfs_make_note_section): Avoid overflow in psargs string.

	* procfs.c (procfs_make_note_section): Make the default
	implementation return an error.

2002-02-13  Rodney Brown  <rbrown64@csc.com.au>

	* procfs.c (procfs_make_note_section): Provide a default definition
	(for alpha-dec-osf4.0f). Fix typos.

2002-02-13  Elena Zannoni  <ezannoni@redhat.com>

	* linux-proc.c: Add include of regcache.h.
	* Makefile.in (linux-proc.o): Add dependency on regcache.h.

2002-02-13  Andrew Cagney  <ac131313@redhat.com>

	From 2002-01-18 Greg McGary <greg@mcgary.org>:
	* memattr.c (create_mem_region): Disallow useless empty region.
	Regions are half-open intervals, so allow [A..B) [B..C) as
	non-overlapping.

2002-02-13  Michael Chastain <mec@shout.net>

	* defs.h: Kill CONST_PTR.
	* c-lang.h (c_builtin_types): Change CONST_PTR to simple "const".
	* c-lang.c (c_builtin_types): Likewise.
	* ch-lang.c (ch_builtin_types): Likewise.
	* f-lang.c (f_builtin_types): Likewise.
	* language.c (unknown_builtin_types): Likewise.
	* m2-lang.c (m2_builtin_types): Likewise.
	* p-lang.c (pascal_builtin_types): Likewise.
	* scm-lang.c (c_builtin_types): Likewise.

2002-02-13  Keith Seitz  <keiths@redhat.com>

	* arm-tdep.h (arm_get_next_pc): Add declaration.

2002-02-13  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_use_struct_convention): Make static.  Move to be
	with other related struct-returning functions.
	(arm_extract_struct_value_address): New function.
	(arm_gdbarch_init): Initialize the above in multi-arch vector.  Also
	initialize float_format, double_format and long_double_format as
	appropriate to the endianness of the target.
	* config/arm/tm-arm.h (TARGET_DOUBLE_FORMAT): Delete.
	(arm_use_struct_convention): Delete declaration.
	(USE_STRUCT_CONVENTION, EXTRACT_STRUCT_VALUE_ADDRESS): Delete.

2002-02-13  Keith Seitz  <keiths@redhat.com>

        * defs.h (core_addr_to_string_nz): New function.

2002-02-13  Mark Kettenis  <kettenis@gnu.org>

	Apply missing bits of 2002-01-15 patch.
	* i386v4-nat.c (supply_fpregset): Use i387_supply_fsave.
	(fill_fpregset): Use i387_fill_fsave.

2002-02-12  Keith Seitz  <keiths@redhat.com>

	* utils.c (core_addr_to_string): Use phex instead of phex_nz.
	(core_addr_to_string_nz): New function.

2002-02-11  Richard Earnshaw  <rearnsha@arm.com>

	* arm-linux-nat.c: Really include arm-tdep.h.
	* config/arm/tm-linux.h (struct type, struct value): Declare.

2002-02-11  Michael Snyder  <msnyder@redhat.com>

	* procfs.c: Include elf-bfd.h (for elfcore_write functions).
	(gcore section): Ifdef for Solaris and Unixware only.
	(procfs_do_thread_registers): Unixware needs one lwpstatus
	per thread (not one prstatus or pstatus).
	(procfs_make_note_section): Iterate only over kernel threads (lwps),
	not over all gdb threads.  For unixware, call elfcore_write_pstatus
	once before iterating over threads.

2002-02-11  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.h: New file.
	* arm-tdep.c: Include arm-tdep.h.
	(arm_addr_bits_remove, arm_smash_text_address, arm_saved_pc_after_call)
	(arm_skip_prologue, arm_call_dummy_words, arm_fix_call_dummy)
	(arm_print_float_info, arm_register_type, convert_to_extended)
	(arm_elf_make_msymbols_special, arm_coff_make_msymbol_special)
	(arm_extract_return_value, arm_register_name): Make static.
	(arm_software_single_step): Similarly.  Fix types in declaration.
	(arm_register_byte, arm_register_raw_size, arm_register_virtual_size)
	(arm_store_return_value, arm_store_struct_return): New functions.
	(arm_gdbarch_init): Register the above functions.  Also register
	call_dummy_start_offset, sizeof_call_dummy_words,
	function_start_offset, inner_than, decr_pc_after_break, fp_regnum,
	sp_regnum, pc_regnum, register_bytes, num_regs, max_register_raw_size,
	max_register_virtual_size, register_size.  Set up
	prologue_cache.saved_regs here, rather than ...
	(_initialize_arm_tdep): ... here.
	* config/arm/tm-arm.h (struct type, struct value): Delete forward
	declarations.
	(arm_addr_bits_remove, arm_smash_text_address, arm_saved_pc_after_call)
	(arm_skip_prologue, arm_call_dummy_words, arm_fix_call_dummy)
	(arm_print_float_info, arm_register_type, convert_to_extended)
	(arm_elf_make_msymbols_special, arm_coff_make_msymbol_special)
	(arm_extract_return_value, arm_register_name): Delete declarations.
	(SMASH_TEXT_ADDRESS, ADDR_BITS_REMOVE, FUNCTION_START_OFFSET)
	(SKIP_PROLOGUE, SAVED_PC_AFTER_CALL, INNER_THAN, BREAKPOINT_FROM_PC)
	(DECR_PC_AFTER_BREAK, PRINT_FLOAT_INFO, REGISTER_SIZE, NUM_REGS)
	(REGISTER_NAME, REGISTER_BYTES, REGISTER_BYTE, REGISTER_RAW_SIZE)
	(REGISTER_VIRTUAL_SIZE, MAX_REGISTER_RAW_SIZE)
	(MAX_REGISTER_VIRTUAL_SIZE, REGISTER_VIRTUAL_TYPE, STORE_STRUCT_RETURN)
	(EXTRACT_RETURN_VALUE, STORE_RETURN_VALUE, CALL_DUMMY_WORDS)
	(SIZEOF_CALL_DUMMY_WORDS, CALL_DUMMY_START_OFFSET, FIX_CALL_DUMMY)
	(SOFTWARE_SINGLE_STEP_P, SOFTWARE_SINGLE_STEP)
	(ELF_MAKE_MSYMBOL_SPECIAL, COFF_MAKE_MSYMBOL_SPECIAL) Delete.
	(arm_pc_is_thumb, arm_pc_is_thumb_dummy, thumb_get_next_pc)
	(arm_get_next_pc): No-longer static -- these are needed by the RDI
	interface.
	* arm-linux-nat.c arm-linux-tdep.c armnbsd-nat.c: Include arm-tdep.h.
	* remote-rdi.c remote-rdp.c: Likewise.
	* Makefile.in (arm-linux-nat.o, arm-linux-tdep.o arm-tdep.o)
	(armnbsd-nat.o, remote-rdi.o, remote_rdp.o): Update dependencies.
	* config/arm/tm-nbsd.h (SOFTWARE_SINGLE_STEP_P): Delete bogus
	definition.

	* arm-tdep.h (ARM_A1_REGNUM, ARM_A4_REGNUM, ARM_AP_REGNUM)
	(ARM_SP_REGNUM, ARM_LR_REGNUM, ARM_PC_REGNUM, ARM_F0_REGNUM)
	(ARM_F3_REGNUM, ARM_F7_REGNUM, ARM_FPS_REGNUM, ARM_PS_REGNUM): Renamed
	from non-ARM_ prefixed definitions.
	* arm-tdep.c armnbsd-nat.c arm-linux-nat.c arm-linux-tdep.c: Update
	all uses of above.
	* remote-rdi.c remote-rdp.c: Likewise.
	* arm-linux-nat.c (ARM_CPSR_REGNUM): Renamed from CPSR_REGNUM.

2002-02-11  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_frameless_function_invocation)
	(arm_frame_args_address, arm_frame_locals_address, arm_frame_num_args)
	(arm_frame_chain, arm_init_extra_frame_info, arm_frame_saved_pc)
	(arm_read_fp, arm_frame_init_saved_regs, arm_push_dummy_frame)
	(arm_pop_frame, arm_get_next_pc): Make static.
	(arm_gdbarch_init): Register above in gdbarch structure.
	(arm_read_fp): Renamed from arm_target_read_fp.
	(arm_pc_is_thumb, arm_pc_is_thumb_dummy): Make static.
	* config/arm/tm-arm.h (arm_frameless_function_invocation)
	(arm_frame_args_address, arm_frame_locals_address, arm_frame_num_args)
	(arm_frame_chain, arm_init_extra_frame_info, arm_frame_saved_pc)
	(arm_target_read_fp, arm_frame_init_saved_regs, arm_push_dummy_frame)
	(arm_pop_frame, arm_get_next_pc, arm_pc_is_thumb)
	(arm_pc_is_thumb_dummy): Delete declarations.
	(INIT_EXTRA_FRAME_INFO, TARGET_READ_FP, FRAME_CHAIN)
	(FRAMELESS_FUNCTION_INVOCATION, FRAME_SAVED_PC, FRAME_ARGS_ADDRESS)
	(FRAME_LOCALS_ADDRESS, FRAME_NUM_ARGS, FRAME_ARGS_SKIP)
	(FRAME_INIT_SAVED_REGS, PUSH_DUMMY_FRAME, POP_FRAME): Delete.

2002-02-10  Daniel Jacobowitz  <drow@mvista.com>

	* symtab.c (compare_search_syms): New function.
	(sort_search_symbols): New function.
	(search_symbols): Sort symbols after searching rather than
	before.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* NEWS: Linux -> GNU/Linux.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: For for level one methods, disallow a definition
	when partially multi-arched.  Add comments explaining rationale.
	* gdbarch.h: Re-generate.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (EXTRA_STACK_ALIGNMENT_NEEDED): Don't require when
	multi-arch partial.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Map LEVEL onto a symbolic GT_LEVEL.  Exit on bad
	field.  Use diff -u.
	* gdbarch.c: Re-generate.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* config/mips/tm-mips.h (CALL_DUMMY_LOCATION): Delete.
	* gdbarch.sh (PUSH_RETURN_ADDRESS): Don't require when multi-arch
	partial.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (REGISTER_CONVERTIBLE): Don't require when
	multi-arch partial.
	(PUSH_ARGUMENTS): Switch to using predefault.
	* gdbarch.c: Regenerate.

2002-02-10  Andrew Cagney  <ac131313@redhat.com>

	* valops.c (PUSH_ARGUMENTS): Delete definition.
	* gdbarch.sh (PUSH_ARGUMENTS): Don't require when multi-arch
	partial.  Default to default_push_arguments.
	* gdbarch.h, gdbarch.c: Regenerate.

2002-02-09  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (throw_exception): Rename return_to_top_level.  Update
	comments.
	* utils.c (error_stream, internal_verror, quit): Ditto.
	* top.c (throw_exception, catcher): Ditto.
	* sparclet-rom.c (sparclet_load): Ditto.
	* remote.c (interrupt_query, minitelnet): Ditto.
	* remote-sds.c (interrupt_query): Ditto.
	* remote-mips.c (mips_error, mips_kill): Ditto.
	* ocd.c (interrupt_query): Ditto.
	* monitor.c (monitor_interrupt_query): Ditto.
	* m3-nat.c (suspend_all_threads, thread_resume_command): Ditto.
	* target.h: Update comment.

	* m3-nat.c, ocd.c, sparclet-rom.c: Update copyright.

2002-02-09  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (TARGET_LONG_DOUBLE_FORMAT): Default to
	default_double_format.
	* gdbarch.h, gdbarch.c: Re-generate.
	* findvar.c (floatformat_unknown): Delete variable definition.
	* doublest.h (floatformat_unknown): Delete variable declaration.

2002-02-09  Jim Blandy  <jimb@redhat.com>

	* stabsread.c (read_type): Add code to parse Sun's syntax for
	prototyped function types.

2002-02-09  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (SUBDIR_CLI_INITS): Set to SUBDIR_CLI_SRCS.
	(SUBDIR_MI_INITS): Set to SUBDIR_MI_SRCS.

2002-02-09  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* xcoffsolib.c (_initialize_xcoffsolib): Renamed from
	_initialize_solib.  Fixes name clash with solib.c:_initialize_solib,
	now _initialize_xcoffsolib gets called again and overrides the
	commands from solib.c in a native configuration.

2002-02-09  Mark Kettenis  <kettenis@gnu.org>

	* doublest.c (store_typed_floating): Don't try to return a value.
	Fixes PR gdb/290.

2002-02-08  Jim Blandy  <jimb@redhat.com>

	* c-typeprint.c (c_type_print_varspec_suffix): If a function type
	is prototyped and has no arguments, print its argument list as
	`(void)'.

2002-02-08  Chris Demetriou  <cgd@broadcom.com>

	* MAINTAINERS (write-after-approval): Add myself.
	(paper-trail): I've escaped!

2002-02-08  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (cygwin_pid_to_str): Revert 2002-02-08 change xasprintf
	changes.
	(_initialize_check_for_gdb_ini): Ditto.

2002-02-08  Martin M. Hunt  <hunt@redhat.com>

	* win32-nat.c (cygwin_pid_to_str): Fix typo.
	xaprintf -> xasprintf.

2002-02-08  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c: Remove use of printf and sprintf functions.

2002-02-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_frame_chain_valid): Make static.
	(arm_push_arguments): Likewise.
	(arm_gdbarch_init): New function.
	(_initialize_arm_tdep): Call it.
	* config/arm/tm-arm.h (GDB_MULTI_ARCH): Set to 1.
	(TARGET_DOUBLE_FORMAT): Test TARGET_BYTE_ORDER, not target_byte_order.
	(FRAME_CHAIN_VALID): Delete.
	(arm_frame_chain_valid): Delete declaration.
	(PUSH_ARGUMENTS): Delete.
	(arm_push_arguments): Delete declaration.
	(CALL_DUMMY_P): Delete.

2002-02-08  Andrew Cagney  <ac131313@redhat.com>
	    Corinna Vinschen  <vinschen@redhat.com>

	* gdbtypes.c (build_gdbtypes): Disable setting a specific float format
	on builtin float types.

2002-02-08  Daniel Jacobowitz  <drow@mvista.com>

	* utils.c: Include <curses.h> before "bfd.h".
	* tui/tui-hooks.c: Likewise.
	* tui/tui.c: Likewise.
	* tui/tuiCommand.c: Likewise.
	* tui/tuiData.c: Likewise.
	* tui/tuiDataWin.c: Likewise.
	* tui/tuiDisassem.c: Likewise.
	* tui/tuiGeneralWin.c: Likewise.
	* tui/tuiIO.c: Likewise.
	* tui/tuiLayout.c: Likewise.
	* tui/tuiRegs.c: Likewise.
	* tui/tuiSource.c: Likewise.
	* tui/tuiSourceWin.c: Likewise.
	* tui/tuiStack.c: Likewise.
	* tui/tuiWin.c: Likewise.

2002-02-07  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_nofp_frame_init_saved_regs): Extend where[] array
	to include space for pseudoregs as well. Update loops accordingly.
	(sh_fp_frame_init_saved_regs): Ditto.
	(sh_init_extra_frame_info, sh_pop_frame): Split long lines.

2002-02-07  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Andreas Schwab is GNU/Linux m68k maintainer.
	Add Richard Earnshaw to Arm maintainers.

2002-02-07  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (warning_begin): Delete declaration.

	* config/powerpc/tm-ppcle-eabi.h (TARGET_BYTE_ORDER_DEFAULT):
	Delete macro.

2002-02-07  Michael Snyder  <msnyder@redhat.com>

	* solib-legacy.c (legacy_svr4_fetch_link_map_offsets):
	Logic bug, remove misplaced else.

2002-02-07  Klee Dienes  <klee@apple.com>

	* fork-inferior.c (fork_inferior): Add '!' to the list of
	characters that need to be quoted when building a string for the
	shell.  Quote '!' specifically with a backslash, since CSH chokes
	when trying to evaluate "str!str".

2002-02-06  Nick Clifton  <nickc@cambridge.redhat.com>

	* rdi-share/host.h: Only provide a typedef for bool if it is not
	defined.

2002-02-04  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.h (enum bptype): Add new overlay event bp type.
	(enable_overlay_breakpoints, disable_overlay_breakpoints): Export.

	* breakpoint.c (create_internal_breakpoint): New function.
	(internal_breakpoint_number): Moved into create_internal_breakpoint.
	(create_longjmp_breakpoint): Use create_internal_breakpoint.
	(create_thread_event_breakpoint): Ditto.
	(create_solib_event_breakpoint): Ditto.
	(create_overlay_event_breakpoint): New function.
	(enable_overlay_breakpoints, disable_overlay_breakpoints): New funcs.
	(update_breakpoints_after_exec): Delete and re-initialize
	overlay event breakpoints after an exec.  Add FIXME comment
	about longjmp breakpoint.
	(print_it_typical): Ignore overlay event breakpoints.
	(print_one_breakpoint): Ditto.
	(mention): Ditto.
	(bpstat_what): Do not stop for overlay event breakpoints.
	(delete_breakpoint): Don't delete overlay event breakpoints.
	(breakpoint_re_set_one): Delete the overlay event breakpoint.
	(breakpoint_re_set): Re-create overlay event breakpoint.

	* symfile.c (overlay_auto_command): Enable overlay breakpoints.
	(overlay_manual_command): Disable overlay breakpoints.
	(overlay_off_command): Disable overlay breakpoints.

2002-02-06  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c: Include elf-bfd.h and coff/internal.h.
	(MSYMBOL_SET_SPECIAL, MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Move defines
	to here from config/tm-arm.h.
	(coff_sym_is_thumb): Make static.
	(arm_elf_make_msymbol_special): New function.
	(arm_coff_make_msymbol_special): New function.
	* config/arm/tm-arm.h (MSYMBOL_SET_SPECIAL): Delete definition.
	(MSYMBOL_IS_SPECIAL, MSYMBOL_SIZE): Likewise.
	(coff_sym_is_thumb): Delete declaration.
	(arm_elf_make_msymbol_special): Declare.
	(arm_coff_make_msymbol_special): Declare.
	(ELF_MAKE_MSYMBOL_SPECIAL): Call arm_elf_make_msymbol_special.
	(COFF_MAKE_MSYMBOL_SPECIAL): Call arm_coff_make_msymbol_special.

2002-02-06  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_software_single_step): ANSIfy function declaration.

2002-02-06  Richard Earnshaw  <rearnsha@arm.com>

	* gdbarch.sh (PRINT_FLOAT_INFO): Add rule.
	* gdbarch.c gdbarch.h: Regenerate.
	* arch-utils.c (default_print_float_info): New function.
	* arch-utils.h (default_print_float_info): Prototype it.
	* infcmd.c (float_info): Call PRINT_FLOAT_INFO.
	* doc/gdbint.texinfo (FLOAT_INFO): Mark as deprecated.
	(PRINT_FLOAT_INFO): Document it.

	* arm-tdep.c (arm_print_float_info): Renamed from arm_float_info.
	* config/arm/tm-arm.h (FLOAT_INFO): Delete.
	(PRINT_FLOAT_INFO): Define.

2002-02-06  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (_initialize_check_for_gdb_ini):
	Add typecast to sprintf argument to suppress a warning.

2002-02-05  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (last_sig): Changed type of variable to target_signal,
	to allow easier handling of pass state.
	(DEBUG_EXCEPTION_SIMPLE): New macro, used in handle_exception,
	that gives exception name and address.
	(handle_exception): Use DEBUG_EXCEPTION_SIMPLE macro
	and set last_sig value to ourstatus->value.sig. Some missing
	exceptions added.
	(child_continue): Correctly report continue_status.
	(get_child_debug_event,do_initial_child_stuff): Set last_sig to
	TARGET_SIGNAL_0 (new default value).
	(child_resume): consider sig argument passed to decide if
	the exception should be passed to debuggee or not.

2002-02-05  Michael Snyder  <msnyder@redhat.com>

	* regcache.c (fetch_register): Call target_fetch_register
	only if we don't call FETCH_PSEUDO_REGISTER.
	(store_register): Call target_store_register only if we
	don't call STORE_PSEUDO_REGISTER.

2002-02-05  Elena Zannoni  <ezannoni@redhat.com>

	* gdbarch.sh: Add definitions for COFF_MAKEMSYMBOL_SPECIAL and
	ELF_MAKE_MSYMBOL_SPECIAL.
	* gdbarch.c, gdbarch.h: Regenerate.
	* arch-utils.c (default_make_msymbol_special): New function.
	* arch-utils.h (default_make_msymbol_special): Export.
	* elfread.c (elf_symtab_read): Compile use of
	ELF_MAKE_MSYMBOL_SPECIAL unconditionally because it is now
	multiarched.
	* coffread.c (coff_symtab_read): Ditto, for
	COFF_MAKE_MSYMBOL_SPECIAL.

2002-02-05  Jim Blandy  <jimb@redhat.com>

	* solib-svr4.c (svr4_truncate_ptr): New function.
	(svr4_relocate_section_addresses): Do the address arithmetic with
	the appropriate truncation for target addresses, even when
	CORE_ADDR is larger than a target address.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (mywait): Cast second argument of waitpid
	to (int *).

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (kill_inferior): Remove commented out
	code.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

        * c-valprint.c (c_val_print): Handle TYPE_CODE_COMPLEX.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c: Remove unused include files.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c: Define PTRACE_ARG3_TYPE.
	(read_inferior_memory): Use it.
	(write_inferior_memory): Likewise.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c (create_inferior): Call strerror instead of
	grubbing through sys_errlist.

2002-02-05  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/linux-low.c: New file, copied exactly from low-linux.c.

2002-02-04  Pierre Muller  <muller@ics.u-strasbg.fr>
	* win32-nat.c (handle_exception): Handle Ctrl-Break exception.

2002-02-04  Andrew Cagney  <ac131313@redhat.com>

	* cli/cli-decode.c (do_cfunc, set_cmd_cfunc): New functions.
	(do_sfunc, set_cmd_sfunc): New functions.

	* command.h (struct cmd_list_element): Add field func.
	* cli/cli-decode.h (struct cmd_list_element): Ditto.
	* command.h (set_cmd_sfunc, set_cmd_cfunc): Declare.
	* cli/cli-decode.h: Ditto.

	* cli/cli-decode.c (help_cmd): Test for func not cfunc/sfunc.
	(help_all, help_cmd_list): Ditto.
	(find_cmd, complete_on_cmdlist): Ditto.
	* top.c (execute_command): Ditto.

	* cli/cli-setshow.c (do_setshow_command): Call func instead of
	function.sfunc.

	* infcmd.c (notice_args_read): Fix function signature.

	* cli/cli-cmds.c (init_cli_cmds): Use set_cmd_sfunc.
	* cli/cli-decode.c (add_set_cmd): Ditto.
	* utils.c (initialize_utils): Ditto.
	* maint.c (_initialize_maint_cmds): Ditto.
	* infrun.c (_initialize_infrun): Ditto.
	* demangle.c (_initialize_demangler): Ditto.
	* remote.c (add_packet_config_cmd): Ditto.
	* mips-tdep.c (_initialize_mips_tdep): Ditto.
	* cris-tdep.c (_initialize_cris_tdep): Ditto.
	* proc-api.c (_initialize_proc_api): Ditto.
	* kod.c (_initialize_kod): Ditto.
	* valprint.c (_initialize_valprint): Ditto.
	* top.c (init_main): Ditto.
	* infcmd.c (_initialize_infcmd): Ditto.
	* corefile.c (_initialize_core): Ditto.
	* arm-tdep.c (_initialize_arm_tdep): Ditto.
	* arch-utils.c (initialize_current_architecture): Ditto.
	(_initialize_gdbarch_utils): Ditto.
	* alpha-tdep.c (_initialize_alpha_tdep): Ditto.

	* cli/cli-decode.c (add_cmd): Use set_cmd_cfunc.
	* wince.c (_initialize_inftarg): Ditto.
	* symfile.c (_initialize_symfile): Ditto.
	* mips-tdep.c (_initialize_mips_tdep): Ditto.
	* language.c (_initialize_language): Ditto.
	* arc-tdep.c (_initialize_arc_tdep): Ditto.

2002-02-04  Michael Snyder  <msnyder@redhat.com>

	* memattr.c (_initialize_mem): Elaborate the help for 'mem' command.

2002-02-04  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/Makefile.in: Add regformats directory to INCLUDE_CFLAGS.
	Add rules for building the register data files.

2002-02-04  Daniel Jacobowitz  <drow@mvista.com>

	* regformats/regdat.sh: Add braces to the definition of
	expedite_regs_${arch}.

2002-02-04  Daniel Jacobowitz  <drow@mvista.com>

	* regformats/regdef.h (struct reg): Add comment describing the
	requirements for offset and size fields.

2002-02-04  Andreas Schwab  <schwab@suse.de>

	* config/ia64/linux.mh: Don't set NAT_CLIBS and REGEX.
	* config/ia64/linux.mt: Don't set GDBSERVER_LIBS.

2002-02-04  Richard Earnshaw  <rearnsha@arm.com>

	* gdbarch.sh (copyright): Update years in generated header.
	(SMASH_TEXT_ADDRESS): Add rule.
	* gdbarch.h, gdbarch.c: Re-generate.
	* coffread.c: Multi-arch uses of SMASH_TEXT_ADDRESS.
	* dbxread.c: Likewise.
	* dwarfread.c: Likewise.
	* elfread.c: Likewise.
	* somread.c: Likewise.

	* arm-tdep.c (arm_smash_text_address): New function.
	* config/arm/tm-arm.h (SMASH_TEXT_ADDRESS): Define in terms of above.

2002-02-04  Pierre Muller  <muller@ics.u-strasbg.fr>

	Add support for hardware watchpoints on win32 native.
	* win32-nat.c (CONTEXT_DEBUG_DR macro): Add use of
	CONTEXT_DEBUG_REGISTERS.
	(dr variable): New variable. Static array containing a local copy
	of debug registers.
	(debug_registers_changed): New variable.  Reflects when debug registers
	are changed and need to be written to inferior.
	(debug_registers_used): New variable. Reflects when any debug register
	was set, used when new threads are created.
	(cygwin_set_dr, cygwin_set_dr7, cygwin_get_dr6): New functions used by
	i386-nat code.
	(thread_rec): Set dr array if id is the thread of current_event .
	(child_continue, child_resume): Change the debug registers for all
	threads if debug_registers_changed.
	(child_add_thread): Change the debug registers if debug_registers_used.
	* config/i386/cygwin.mh: Add use of i386-nat.o file.
	Link nm.h to new nm-cygwin.h file.
	+ config/i386/nm-cygwin.h: New file. Contains the macros used for use
	of hardware registers.

2002-02-03  Andrew Cagney  <ac131313@redhat.com>

	* valprint.c (print_floating): Allow non TYPE_CODE_FLT types.
	Restore behavour broken by 2002-01-20 Andrew Cagney
	<ac131313@redhat.com> IEEE_FLOAT removal.

2002-02-03  Daniel Jacobowitz  <drow@mvista.com>

	* c-valprint.c (c_val_print): Pass a proper valaddr to
	cp_print_class_method.
	* valops.c (search_struct_method): If there is only one method
	and args is NULL, return that method.

2002-02-03  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.c (init_simd_type): Use TYPE_TAG_NAME instead of
	accessing tag_name directly.

2002-02-03  Daniel Jacobowitz  <drow@mvista.com>

	* ax-gdb.c (find_field): Use TYPE_TAG_NAME instead
	of accessing tag_name directly.

2002-02-03  Daniel Jacobowitz  <drow@mvista.com>

	PR gdb/280
	* gdbtypes.c (replace_type): New function.
	* gdbtypes.h (replace_type): Add prototype.
	* stabsread.c (read_type): Use replace_type.

2002-02-03  Richard Earnshaw  <rearnsha@arm.com>

	* Makefile.in (memattr.o): Add missing dependencies rule.

2002-02-03  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* breakpoint.c (break_at_finish_command): Really export.
	(break_at_finish_at_depth_command): Ditto.
	(tbreak_at_finish_command): Ditto.
	* hppa-tdep.c: Include completer.h.
	* Makefile.in (hppa-tdep.o): Add dependency on $(completer_h).
	(COMMON_OBS): Remove duplicate ui-file.o, frame.o, doublest.o.

2002-02-01  Andrew Cagney  <ac131313@redhat.com>

	* utils.c (do_write): New function.
	(error_stream): Rewrite combining the code from error_begin and
	verror.
	(verror): Rewrite using error_stream.
	(error_begin): Delete function.

2002-02-01  Andrew Cagney  <ac131313@redhat.com>

	* utils.c (error_begin): Make static.
	* defs.h (error_begin): Delete declaration.

	* linespec.c (cplusplus_error): Replace cplusplus_hint.
	(decode_line_1): Use cplusplus_error instead of error_begin,
	cplusplus_hint and return_to_top_level.
	* coffread.c (coff_symfile_read): Use error instead of error_begin
	and return_to_top_level.
	* infrun.c (default_skip_permanent_breakpoint): Ditto.

2002-02-01  Andrew Cagney  <ac131313@redhat.com>

	* language.h (type_error, range_error): Make string parameter
	constant.
	* language.c (warning_pre_print): Delete extern declaration.
	* dwarfread.c (warning_pre_print): Ditto.
	* language.c (type_error, range_error): Rewrite to use verror and
	vwarning instead of warning_begin.

2002-02-01  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (breakpoint_re_set): Delete ancient #if 0 code.
	(set_ignore_count): Move misplaced comment back where it belongs.

2002-02-01  Andrew Cagney  <ac131313@redhat.com>

	* command.h (NO_FUNCTION): Delete macro.
	* cli/cli-decode.h (NO_FUNCTION): Ditto.
	* top.c (execute_command): Replace NO_FUNCTION with NULL.
	* tracepoint.c (_initialize_tracepoint): Ditto.
	* cli/cli-decode.c (add_set_cmd): Ditto.
	* cli/cli-cmds.c (init_cli_cmds): Ditto.

2002-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* gnu-v3-abi.c (gnuv3_virtual_fn_field): Update comments.
	Update ``this'' pointer when calling virtual functions.

2002-02-01  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (create_temp_exception_breakpoint): Delete.
	* hppa-tdep.c: Deprecate xbreak, txbreak and bx commands.

2002-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* regformats/reg-arm.dat: New file.
	* regformats/reg-i386.dat: New file.
	* regformats/reg-ia64.dat: New file.
	* regformats/reg-m68k.dat: New file.
	* regformats/reg-mips.dat: New file.
	* regformats/reg-ppc.dat: New file.
	* regformats/reg-sh.dat: New file.
	* regformats/regdef.h: New file.
	* regformats/regdat.sh: New file.

2002-02-01  Richard Earnshaw  <reanrsha@arm.com>

	* arm-tdep.c (arm_frameless_function_invocation): Add some comments.
	(arm_frame_args_address, arm_frame_locals_address): New functions.
	(arm_frame_num_args): New function.
	* config/tm-arm.h (FRAME_ARGS_ADDRESS): Call arm_frame_args_address.
	(FRAME_LOCALS_ADDRESS): Call arm_frame_locals_address.
	(FRMA_NUM_ARGS): Call arm_frame_num_args.

2002-01-31  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (break_at_finish_command): Export.
	(break_at_finish_at_depth_command): Export.
	(tbreak_at_finish_command): Export.
	(_initialize_breakpoint): Delete "xbreak" and "tbreak" commands.
	* hppa-tdep.c (_initialize_hppa_tdep): Add "xbreak" and
	"tbreak" commands, which are HPPA specific.

	* printcmd.c (disassemble_command): Remove an ancient
	artifact of an old merge.

	* symfile.h (enum overlay_debugging_state):
	Define enum constant values for overlay mode.
	* symfile.c (overlay_debugging): Use enums instead of literals.
	(overlay_is_mapped, overlay_auto_command,
	overlay_manual_command): Ditto.

	* breakpoint.c (insert_breakpoints, remove_breakpoint,
	breakpoint_here_p, breakpoint_inserted_here_p,
	breakpoint_thread_match, bpstat_stop_status,
	describe_other_breakpoints, check_duplicates, clear_command):
	Coding standard fixes.

	* target.c (target_xfer_memory): Add spaces, coding standard.
	(do_xfer_memory): Add missing line to trust-readonly
	code: check bfd SEC_READONLY flag for section.

2002-01-31  Andrew Cagney  <ac131313@redhat.com>

	* PROBLEMS: Fix typo, 5.1->5.1.1.

2002-01-30  Daniel Jacobowitz  <drow@mvista.com>

	* symtab.c (find_pc_sect_psymtab): Do not search psymtabs for
	data symbols, since we search based on textlow and texthigh.
	(find_pc_sect_symtab): Likewise.

2002-01-30  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (vwarning): Declare.
	* utils.c (vwarning): New function.
	(warning): Call vwarning.
	(warning_begin): Delete function.

	* rs6000-nat.c (vmap_ldinfo): Use the function warning to print
	the warning message.
	* d10v-tdep.c (d10v_address_to_pointer) [0]: Delete call to
	warning_begin.

2002-01-30  Michael Snyder  <msnyder@redhat.com>

	* NEWS: Mention "set trust-readonly-sections" command.
	Mention generate-core-file command.

2002-01-15  Michael Snyder  <msnyder@redhat.com>

	* target.c: New command, "set trust-readonly-sections on".
	(do_xfer_memory): Honor the suggestion to trust readonly sections
	by reading them from the object file instead of from the target.
	(initialize_targets): Register command "set trust-readonly-sections".

2002-01-29  Andrew Cagney  <ac131313@redhat.com>

	* parse.c (target_map_name_to_register): Simplify, search regs and
	pseudo-regs using a single loop.

2002-01-30  Andrew Cagney  <ac131313@redhat.com>

	* PROBLEMS: Note that the i386 fix was missing from 5.1.1.

2002-01-15  Rodney Brown  <rbrown64@csc.com.au>

	* config/i386/tm-i386v4.h: Define HAVE_I387_REGS.
	* config/i386/i386v42mp.mh: Add i387-nat.o .
	* i386v4-nat.c: Include i387-nat.h.
	(supply_fpregset): Use i387_supply_fsave.
	(fill_fpregset): Use i387_fill_fsave.

2002-01-30  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_call_dummy_words): Define.
	* arm-linux-tdep.c (arm_linux_call_dummy_words): Define.
	* config/arm/tm-arm.h (CALL_DUMMY_P): Define.
	(CALL_DUMMY_WORDS): Define.
	(arm_call_dummy_words): Declare.
	* config/arm/tm-linux.h (CALL_DUMMY_WORDS): Define.
	(arm_linux_call_dummy_words): Declare.

2002-01-30  Andreas Schwab  <schwab@suse.de>

	* m68klinux-nat.c: Fix last change to use regcache_collect
	instead of referencing registers[] directly.

2002-01-29  Andrew Cagney  <ac131313@redhat.com>

	* parse.c (target_map_name_to_register): Delete code wrapped in
	#ifdef REGISTER_NAME_ALIAS_HOOK.

2002-01-28  Michael Snyder  <msnyder@redhat.com>

	* regcache.c (legacy_read_register_gen): Need to be able to
	read pseudo-register as well as real register.
	(legacy_write_register_gen): Ditto.

2002-01-28  Andrew Cagney  <ac131313@redhat.com>

	* config/mips/tm-wince.h (TARGET_BYTE_ORDER): Delete.
	* config/sparc/tm-sparc.h (TARGET_BYTE_ORDER): Delete.
	* config/ns32k/tm-umax.h (TARGET_BYTE_ORDER): Delete.
	* config/ia64/tm-ia64.h (TARGET_BYTE_ORDER): Delete.
	* config/m32r/tm-m32r.h (TARGET_BYTE_ORDER): Delete.
	* config/m68k/tm-m68k.h (TARGET_BYTE_ORDER): Delete.
	* config/m88k/tm-m88k.h (TARGET_BYTE_ORDER): Delete.
	* config/mn10200/tm-mn10200.h (TARGET_BYTE_ORDER): Delete.
	* config/pa/tm-hppa.h (TARGET_BYTE_ORDER): Delete.
	* config/sh/tm-wince.h (TARGET_BYTE_ORDER): Delete.
	* config/v850/tm-v850.h (TARGET_BYTE_ORDER): Delete.
	* config/vax/tm-vax.h (TARGET_BYTE_ORDER): Delete.
	* config/z8k/tm-z8k.h (TARGET_BYTE_ORDER): Delete.
	* config/i960/tm-i960.h (TARGET_BYTE_ORDER): Delete.
	* config/i386/tm-i386.h (TARGET_BYTE_ORDER): Delete.
	* config/h8500/tm-h8500.h (TARGET_BYTE_ORDER): Delete.
	* config/h8300/tm-h8300.h (TARGET_BYTE_ORDER): Delete.
	* config/fr30/tm-fr30.h (TARGET_BYTE_ORDER): Delete.
	* config/d30v/tm-d30v.h (TARGET_BYTE_ORDER): Delete.
	* config/alpha/tm-alpha.h (TARGET_BYTE_ORDER): Delete.

2002-01-28  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.c (TARGET_BYTE_ORDER_DEFAULT): Delete macro.
	(target_byte_order): Initialize to BFD_ENDIAN_BIG.
	(initialize_current_architecture): Update target_byte_order using
	information from BFD.
	* config/mcore/tm-mcore.h (TARGET_BYTE_ORDER_DEFAULT):
	* config/arm/tm-arm.h (TARGET_BYTE_ORDER_DEFAULT): Delete.

2002-01-28  Andrew Cagney  <ac131313@redhat.com>

	* config/vax/tm-vax.h (INVALID_FLOAT): Move macro from here...
	* vax-tdep.c (INVALID_FLOAT): To here.  Document why it is broken.

	* rs6000-tdep.c (rs6000_do_registers_info): Delete code wrapped in
	#ifdef INVALID_FLOAT.
	* infcmd.c (do_registers_info): Ditto.
	* values.c (unpack_double): Ditto.  Add comment.

	* config/ns32k/tm-umax.h (INVALID_FLOAT): Delete macro that was
	already commented out.

2002-01-26  Andreas Schwab  <schwab@suse.de>

	* config/m68k/nm-linux.h (FETCH_INFERIOR_REGISTERS): Define.
	* m68klinux-nat.c: Update ptrace interface for fetching/storing
	registers and add support for PTRACE_GETREGS.

2002-01-24  Andrew Cagney  <ac131313@redhat.com>

	GDB 5.1.1 released from 5.1 branch.
	* NEWS: Add 5.1.1 news.
	* README: Sync with 5.1 branch.

2002-01-23  Fred Fish  <fnf@redhat.com>

	* mdebugread.c (parse_partial_symbols): Only copy stabstring1 to
	stabstring on initial malloc.  Reallocing will copy it for us,
	if necessary.

2002-01-23  Elena Zannoni  <ezannoni@redhat.com>

        * Makefile.in (hpread_h): Delete.
        (HFILES_NO_SRCDIR): Remove hpread.h.
        (ALLDEPFILES): Remove hp-psymtab-read.c and hp-symtab-read.c.
        (hpread.o): Update dependencies.
        (hp-psymtab-read.o, hp-symtab-read.o): Remove.

        * hp-psymtab-read.c: Remove file.
        * hp-symtab-read.c: Remove file.
        * hpread.h: Remove file.

        * hpread.c: Merge all contents of hp-psymtab-read.c,
        hp-symtab-read.c and hpread.h into this file, as it was prior to
        January 1999.

        * config/pa/hpux11w.mh, config/pa/hpux11.mh,
        config/pa/hpux1020.mh, config/pa/hppaosf.mh,
        config/pa/hppahpux.mh, config/pa/hppabsd.mh (NATDEPFILES):
        Remove hp-psymtab-read.o and hp-symtab-read.o, add hpread.o.

2002-01-23  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-linux-nat.c (ppc_register_u_addr, supply_gregset,
	fill_gregset): Call gdbarch_tdep() just once, assign result to
	variable and use that, instead of calling the function several
	times.

2002-01-24  Alexandre Oliva  <aoliva@redhat.com>

	* configure.host: Accept sparcv9 as alias for sparc64.
	* configure.tgt: Likewise.

2002-01-22  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (build_so_list_from_mapfile)
	(aix5_relocate_main_executable): Fix xcalloc() calls so order of
	arguments is not reversed.
	* solib-sunos.c (sunos_relocate_main_executable): Likewise.
	* solib-svr4.c (svr4_relocate_main_executable): Likewise.

2002-01-22  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_pseudo_register_read): New function. Renamed and
	modified version of obsolete sh_fetch_pseudo_register.
	(sh_fetch_pseudo_register): Rename to sh_pseudo_register_read.
	(sh4_register_read): New function.
	(sh_pseudo_register_write): New function. Renamed and modified
	version of obsolete sh_store_pseudo_register.
	(sh_store_pseudo_register): Rename to sh_pseudo_register_write.
	(sh4_register_write): New function.
	(sh_gdbarch_init): Remove setting of gdbarch function
	fetch_pseudo_register and store_pseudo_register. Remove setting of
	register_convert_to_raw, register_convert_to_virtual,
	register_convertible.
	(sh_sh4_register_convertible): Delete. No longer needed. All is
	taken care by architecture specific functions
	register_read/register_write.
	(sh_sh4_register_convert_to_virtual): Make static.
	(sh_sh4_register_convert_to_raw): Ditto.

2002-01-22  Andrew Cagney  <ac131313@redhat.com>

	* doublest.c (floatformat_is_negative): Assert FMT is non NULL.
	(floatformat_is_nan, floatformat_mantissa): Ditto.

	* gdbtypes.c (_initialize_gdbtypes): Initialize TYPE_FLOATFORMAT
	for builtin_type_ieee_single_little, builtin_type_ieee_double_big,
	builtin_type_ieee_double_little,
	builtin_type_ieee_double_littlebyte_bigword,
	builtin_type_m68881_ext, builtin_type_i960_ext,
	builtin_type_m88110_ext, builtin_type_m88110_harris_ext,
	builtin_type_arm_ext_big, builtin_type_arm_ext_littlebyte_bigword,
	builtin_type_ia64_spill_big, builtin_type_ia64_spill_little and
	builtin_type_ia64_quad_big, builtin_type_ia64_quad_little.

2002-01-22  Corinna Vinschen  <vinschen@redhat.com>

	* xstormy16-tdep.c (xstormy16_scan_prologue): Add frameless
	parameter.  Set frameless flag if it exists and depended of
	whether the scanned function is frameless or not.
	(xstormy16_skip_prologue): If function is frameless, return
	result of xstormy16_scan_prologue().
	(xstormy16_frame_init_saved_regs): Adjust xstormy16_scan_prologue()
	call.

2002-01-21  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_fp_frame_init_saved_regs, sh_push_arguments,
	sh_generic_show_regs, sh3_show_regs, sh3e_show_regs,
	sh3_dsp_show_regs, sh4_show_regs, sh_dsp_show_regs,
	sh_sh4_register_byte, sh_sh4_register_raw_size,
	sh_sh3e_register_virtual_type, sh_sh4_register_virtual_type,
	sh_sh4_register_convertible, sh_sh4_register_convert_to_virtual,
	sh_sh4_register_convert_to_raw, sh_fetch_pseudo_register,
	sh_store_pseudo_register, sh_do_pseudo_register): Call
	gdbarch_tdep() just once, assign result to variable and use that,
	instead of calling the function several times.

2002-01-20  Mark Kettenis  <kettenis@gnu.org>

	* go32-nat.c (fetch_register): Use FP_REGNUM_P and FPC_REGNUM_P
	macros instead of LAST_FPU_CTRL_REGNUM.
	(store_register): Likewise.

2002-01-21  Jim Blandy  <jimb@redhat.com>

	* infcmd.c (run_command): Check that the `exec' target layer's BFD
	is up-to-date before running the program, not just when a program
	exits.

2002-01-21  Fred Fish  <fnf@redhat.com>

	* arm-tdep.c (thumb_skip_prologue): Quit scanning prologue
	when we have found all instructions we are looking for.

2002-01-21  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (arm_register_name): New function.
	(arm_registers_names): Make static.
	* config/arm/tm-arm.h (arm_register_names): Delete declaration.
	(arm_register_name): Declare.
	(REGISTER_NAME): Use it.

2002-01-21  Richard Earnshaw  <rearnsha@arm.com>
	    Kevin Buettner  <kevinb@redhat.com>

	Convert arm targets to new FRAME interface.
	* arm-tdep.c (struct frame_extra_info): Remove fsr.
	(arm_frame_find_save_regs): Delete.
	(arm_frame_init_saved_regs): New.
	(arm_init_extra_frame_info): Alloacte saved_regs as required.
	Allocate extra_info as required.  Convert all uses of fsr.regs
	to use saved_regs, similarly all uses of EXTRA_FRAME_INFO fields
	to use extra_info.
	(thumb_scan_prologue, arm_scan_prologue, arm_find_callers_reg)
	(arm_frame_chain, arm_frame_saved_pc, arm_pop_frame): Likewise.
	(check_prologue_cache, save_prologue_cache): Likewise.
	(_initialize_arm_tdep): Ensure prologue_cache is correctly set up.
	* config/arm/tm-arm.h (EXTRA_FRAME_INFO): Delete.
	(FRAME_FIND_SAVED_REGS): Delete.
	(arm_frame_find_saved_regs): Delete prototype.
	(arm_frame_init_saved_regs): New prototype.
	(FRAME_INIT_SAVED_REGS): Define.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* config/arc/tm-arc.h (IEEE_FLOAT): Delete.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	From Jeff Law <law@redhat.com>:
	* infttrace.c: Include <sys/pstat.h>.
	(child_pid_to_exec_file): Revamp.  Use pstat call to get the
	exec file if the ttrace equivalent fails.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* rdi-share/devsw.c (openLogFile): Delete unused ``struct tm lt''.
	(closeLogFile): Ditto.

2002-01-20  Michael Chastain  <mec@shout.net>

	* top.c (print_gdb_version): Bump copyright year to 2002.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (Blanket Write Privs): Add Kevin Buettner, Elena
	Zannoni and Eli Zaretskii.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* buildsym.c: Update copyright years.
	* c-typeprint.c: Likewise.
	* dwarf2read.c: Likewise.
	* f-typeprint.c: Likewise.
	* gdbtypes.c: Likewise.
	* gdbtypes.h: Likewise.
	* hp-symtab-read.c: Likewise.
	* hpread.c: Likewise.
	* mdebugread.c: Likewise.
	* p-typeprint.c: Likewise.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* remote-sim.c (gdbsim_open): Simplify code testing the macro
	TARGET_BYTE_ORDER_SELECTABLE_P.  Assume the target is always
	byte-order selectable.
	* sparc-tdep.c (sparc_target_architecture_hook): Ditto.
	* arch-utils.c: Ditto.
	(set_endian): Ditto.
	(set_endian_from_file): Ditto.
	* gdbserver/low-sim.c (create_inferior): Ditto.
	* gdbarch.sh: Ditto.
	* gdbarch.h: Re-generate.
	* config/powerpc/tm-ppc-eabi.h (TARGET_BYTE_ORDER_SELECTABLE_P):
	* config/sparc/tm-sparclite.h (TARGET_BYTE_ORDER_SELECTABLE):
	* config/sparc/tm-sparclet.h (TARGET_BYTE_ORDER_SELECTABLE):
	* config/mcore/tm-mcore.h (TARGET_BYTE_ORDER_SELECTABLE_P):
	* config/arm/tm-wince.h (TARGET_BYTE_ORDER_SELECTABLE_P):
	* config/arm/tm-linux.h (TARGET_BYTE_ORDER_SELECTABLE_P):
	* config/arc/tm-arc.h (TARGET_BYTE_ORDER_SELECTABLE):
	* config/arm/tm-arm.h (TARGET_BYTE_ORDER_SELECTABLE_P): Delete
	macro definition.
	* config/mips/tm-wince.h: Remove #undef of macro
	TARGET_BYTE_ORDER_SELECTABLE.
	* config/sh/tm-wince.h: Ditto.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.h (struct cplus_struct_type): Add is_artificial to
	member function fields.  Add accessor macro
	TYPE_FN_FIELD_ARTIFICIAL.
	* dwarf2read.c (dwarf2_add_member_fn): Check for artificial methods.
	* c-typeprint.c (c_type_print_base): Skip artificial member
	functions.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* f-typeprint.c: Delete unused function f_type_print_args.
	* p-typeprint.c: Delete unused function pascal_type_print_args.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.h (struct type): Fix whitespace.  Remove obsolete
	comment.  Add ``artificial'' to ``union field_location''.

	* dwarf2read.c: Remove ad-hoc TYPE_FIELD_ARTIFICIAL.

	* buildsym.c (finish_block): Initialize TYPE_FIELD_ARTIFICIAL to 0.
	* mdebugread.c (parse_symbol): Likewise.
	* stabsread.c (define_symbol): Likewise.
	* hp-symtab-read.c (hpread_function_type): Likewise, instead of
	initializing TYPE_FIELD_BITPOS to n (obsolete).
	(hpread_doc_function_type): Likewise.
	* hpread.c (hpread_function_type): Likewise.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* configure.in (host_makefile_frag): Only require a host makefile
	fragment when a native build.
	* configure: Re-generate.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* doublest.h (floatformat_from_type): Declare.
	* doublest.c (floatformat_from_type): New function.
	(convert_typed_floating): Use.

	* valprint.c (print_floating): Replace checks for IEEE_FLOAT with
	call to function floatformat_from_type.

	* gdbarch.sh (IEEE_FLOAT): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.
	* config/i960/tm-i960.h (IEEE_FLOAT): Delete macro.
	* config/i386/tm-i386.h (IEEE_FLOAT): Ditto.
	* config/z8k/tm-z8k.h (IEEE_FLOAT): Ditto.
	* config/sparc/tm-sparc.h (IEEE_FLOAT): Ditto.
	* config/pa/tm-hppa.h (IEEE_FLOAT): Ditto.
	* config/m88k/tm-m88k.h (IEEE_FLOAT): Ditto.
	* config/m68k/tm-m68k.h (IEEE_FLOAT): Ditto.
	* config/h8500/tm-h8500.h (IEEE_FLOAT): Ditto.
	* config/h8300/tm-h8300.h (IEEE_FLOAT): Ditto.
	* config/fr30/tm-fr30.h (IEEE_FLOAT): Ditto.
	* config/arm/tm-arm.h (IEEE_FLOAT): Ditto.
	* config/alpha/tm-alpha.h (IEEE_FLOAT): Ditto.

	* s390-tdep.c (s390_gdbarch_init): Do not set ieee_float.
	* x86-64-tdep.c (i386_gdbarch_init): Ditto.
	* sparc-tdep.c (sparc_gdbarch_init): Ditto.
	* sh-tdep.c (sh_gdbarch_init): Ditto.
	* mips-tdep.c (mips_gdbarch_init): Ditto.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
	* cris-tdep.c (cris_gdbarch_init): Ditto.

2002-01-20  Jiri Smid  <smid@suse.cz>

	* configure.host, configure.tgt: Support x86-64.
	* NEWS: Note new target x86-64.

	* config/i386/x86-64linux.mh (NATDEPFILES): x86-64-nat.o removed.
	* x86-64-linux-nat.c (x86_64_register_u_addr): New function.
	* config/i386/nm-x86-64.h (ATTACH_LWP): Removed.
	* Makefile.in (x86-64-tdep.o, x86-64-linux-tdep.o,
	x86-64-linux-nat.o): Fix dependencies.

2002-01-19  Andrew Cagney  <ac131313@redhat.com>

	* utils.c: Remove #ifndef MALLOC_INCOMPATIBLE.
	* config/sparc/xm-sun4os4.h (PTRACE_ARG3_TYPE): Move macro ....
	* config/sparc/nm-sun4os4.h (PTRACE_ARG3_TYPE): ... to here.
	* config/sparc/xm-sun4os4.h: Delete file.
	* config/sparc/sun4os4.mh (XM_FILE): Delete makefile variable.

2002-01-19  Andrew Cagney  <ac131313@redhat.com>

	* config/sparc/sparclynx.mh (XM_FILE): Delete.
	* config/rs6000/rs6000lynx.mh (XM_FILE): Delete.
	* config/m68k/m68klynx.mh (XM_FILE): Delete.
	* config/i386/i386lynx.mh (XM_FILE): Delete.
	* config/rs6000/xm-rs6000ly.h: Delete file.
	* config/sparc/xm-sparclynx.h: Delete file.
	* config/m68k/xm-m68klynx.h: Delete file.
	* config/i386/xm-i386lynx.h: Delete file.
	* config/xm-lynx.h: Delete file.
	* config/djgpp/fnchange.lst: Update.

2002-01-19  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_register_byte): New function.
	(alpha_register_raw_size): Ditto.
	(alpha_register_virtual_size): Ditto.
	(alpha_skip_prologue_internal): Renamed from
	alpha_skip_prologue.
	(alpha_skip_prologue): New version that calls
	alpha_skip_prologue_internal.
	(alpha_in_lenient_prologue): Use alpha_skip_prologue_internal.
	* config/alpha/tm-alpha.h (SKIP_PROLOGUE): Remove
	second argument from alpha_skip_prologue.
	(REGISTER_BYTE): Use alpha_register_byte.
	(REGISTER_RAW_SIZE): Use alpha_register_raw_size.
	(REGISTER_VIRTUAL_SIZE): Use alpha_register_virtual_size.
	(FRAMELESS_FUNCTION_INVOCATION): Use
	generic_frameless_function_invocation_not.
	(FRAME_NUM_ARGS): Use frame_num_args_unknown.
	(COERCE_FLOAT_TO_DOUBLE): Use standard_coerce_float_to_double.

2002-01-19  Andrew Cagney  <ac131313@redhat.com>

	* config/mips/xm-news-mips.h: Delete file.
	* config/mips/news-mips.mh (XM_FILE): Delete makefile variable.

	* config/m88k/xm-m88k.h: Delete file.
	* config/m88k/xm-dgux.h: Do not include xm-m88k.h.
	* config/m88k/xm-delta88v4.h: Ditto.
	* config/m88k/xm-delta88.h: Ditto.

	* config/alpha/xm-fbsd.h: Delete file.
	* config/alpha/fbsd.mh (XM_FILE): Delete makefile variable.

	* config/sparc/xm-sparc.h: Delete file.
	* Makefile.in (xm-sun4os4.h): Delete dependency.
	* config/sparc/xm-sun4sol2.h: Do not include xm-sparc.h.
	* config/sparc/xm-sun4os4.h: Ditto.
	* config/sparc/xm-linux.h: Ditto.

	* config/i386/xm-windows.h: Delete file.

2002-01-19  Andrew Cagney  <ac131313@redhat.com>

	* utils.c: Include <sys/param.h> for MAXPATHLEN.
	(gdb_realpath): Use MAXPATHLEN when PATH_MAX is not defined.

2002-01-19  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_call_dummy_words): New.
	* config/alpha/tm-alpha.h (CALL_DUMMY): Remove.
	(CALL_DUMMY_P): Define.
	(CALL_DUMMY_WORDS): Define.
	(SIZEOF_CALL_DUMMY_WORDS): Define.

2002-01-19  Per Bothner  <per@bothner.com>

	* gnu-v3-abi.c (gnuv3_rtti_type):  Guard that vtable_symbol_name
	isn't NULL, which can happen with some gcj-3.x-produced code.

2002-01-19  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_register_virtual_type): New function.
	(alpha_init_frame_pc_first): Ditto.
	(alpha_fix_call_dummy): Ditto.
	(alpha_store_struct_return): Ditto.
	(alpha_extract_struct_value_address): Ditto.
	* config/alpha/tm-alpha.h (REGISTER_VIRTUAL_TYPE): Use
	alpha_register_virtual_type.
	(STORE_STRUCT_RETURN): Use alpha_store_struct_return.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Use
	alpha_extract_struct_value_address.
	(FIX_CALL_DUMMY): Use alpha_fix_call_dummy.
	(INIT_FRAME_PC): Use init_frame_pc_noop.
	(INIT_FRAME_PC_FIRST): Use alpha_init_frame_pc_first.

2002-01-19  Mark Kettenis  <kettenis@gnu.org>

	* i386gnu-nat.c: Include "i386-tdep.h".
	(fetch_fpregs): Simplify code dealing with uninitialized floating
	point states such that it doesn't require FP7_REGNUM.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (frame_extra_info): New.
	(alpha_find_saved_regs): Make static.  Use
	frame->extra_info.
	(alpha_frame_init_saved_regs): New function.
	(alpha_frame_saved_pc): Use frame->extra_info.
	(temp_saved_regs): Don't declare as struct frame_saved_regs.
	(heuristic_proc_desc): Adjust for temp_saved_regs changes.
	(init_extra_frame_info): Rename to...
	(alpha_init_extra_frame_info): ...this.  Use frame->extra_info.
	(alpha_print_extra_frame_info): New function.
	(alpha_frame_locals_address): Ditto.
	(alpha_frame_args_address): Ditto.
	(alpha_pop_frame): Use frame->extra_info.
	* config/alpha/tm-alpha.h (FRAME_ARGS_ADDRESS): Use
	alpha_frame_args_address.
	(FRAME_LOCALS_ADDRESS): Use alpha_frame_locals_address.
	(alpha_find_saved_regs): Remove prototype.
	(FRAME_INIT_SAVED_REGS): Use alpha_frame_init_saved_regs.
	(EXTRA_FRAME_INFO): Remove.
	(INIT_EXTRA_FRAME_INFO): Use alpha_init_extra_frame_info.
	(PRINT_EXTRA_FRAME_INFO): Use alpha_print_extra_frame_info.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_osf_in_sigtramp): New function.
	(alpha_cannot_fetch_register): Ditto.
	(alpha_cannot_store_register): Ditto.
	(alpha_register_convertible): Ditto.
	(alpha_use_struct_convention): Ditto.
	* config/alpha/tm-alpha.h: Update copyright years.
	(IN_SIGTRAMP): Use alpha_osf_in_sigtramp.
	(INNER_THAN): Use core_addr_lessthan.
	(CANNOT_FETCH_REGISTER): Use alpha_cannot_fetch_register.
	(CANNOT_STORE_REGISTER): Use alpha_cannot_store_register.
	(REGISTER_CONVERTIBLE): Use alpha_register_convertible.
	(USE_STRUCT_CONVENTION): Use alpha_use_struct_convention.
	(FRAME_CHAIN): Remove unnecessary cast.

2002-01-18  Andrew Cagney  <ac131313@redhat.com>

	* NEWS: Document that testsuite/gdb.hp/gdb.threads-hp/ is
	obsolete.

2002-01-18  Andrew Cagney  <ac131313@redhat.com>

	* infptrace.c: Remove ATTRIBUTE_UNUSED.  Update copyright.
	* monitor.c, remote-array.c, remote-bug.c: Ditto.
	* remote-e7000.c, remote-es.c, remote-mips.c: Ditto.
	* remote-nindy.c, remote-os9k.c, remote-rdi.c: Ditto.
	* remote-rdp.c, remote-sds.c, remote-sim.c: Ditto.
	* remote-st.c, remote-vx.c, remote.c, win32-nat.c: Ditto.
	* x86-64-linux-nat.c: Ditto.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c (alpha_register_name): New function.
	* config/alpha/tm-alpha.h (REGISTER_NAMES): Remove.
	(REGISTER_NAME): Define.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/nm-nbsd.h (KERNEL_U_ADDR): Remove.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alpha-tdep.c: Update copyright years.
	(alpha_next_pc): New function.
	(alpha_software_single_step): Ditto.
	* config/alpha/tm-alpha.h: Add prototype for
	alpha_software_single_step.

2002-01-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* alphabsd-nat.c: Update copyright years.
	(fill_gregset): Use regcache_collect.
	(fill_fpregset): Likewise.
	(fetch_inferior_registers): Only fetch integer registers
	if requested to do so.
	(store_inferior_registers): Only store integer registers
	if requested to do so.

2002-01-17  Andrew Cagney  <ac131313@redhat.com>

	* config/alpha/alpha-osf3.mh (XDEPFILES): Delete.
	* config/alpha/alpha-osf2.mh (XDEPFILES): Delete.
	* config/alpha/alpha-osf1.mh (XDEPFILES): Delete.
	* config/alpha/alpha-linux.mh (XDEPFILES): Delete.
	* config/alpha/fbsd.mh (XDEPFILES): Delete.
	* config/arm/linux.mh (XDEPFILES): Delete.
	* config/arm/nbsd.mh (XDEPFILES): Delete.
	* config/i386/i386dgux.mh (XDEPFILES): Delete.
	* config/i386/i386sol2.mh (XDEPFILES): Delete.
	* config/i386/i386m3.mh (XDEPFILES): Delete.
	(NATDEPFILES): Move i387-tdep.o and core-aout.o to here.
	* config/i386/i386gnu.mh (XDEPFILES): Delete.
	* config/i386/fbsd.mh (XDEPFILES): Delete.
	* config/i386/i386bsd.mh (XDEPFILES): Delete.
	* config/i386/i386sco5.mh (XDEPFILES): Delete.
	* config/i386/i386v4.mh (XDEPFILES): Delete.
	* config/i386/i386v42mp.mh (XDEPFILES): Delete.
	* config/i386/i386sco4.mh (XDEPFILES): Delete.
	* config/i386/i386aix.mh (XDEPFILES): Delete.
	* config/i386/go32.mh (XDEPFILES): Delete.
	* config/i386/cygwin.mh (XDEPFILES): Delete.
	* config/i386/i386lynx.mh (XDEPFILES): Delete.
	* config/i386/i386mach.mh (XDEPFILES): Delete.
	* config/i386/i386v32.mh (XDEPFILES): Delete.
	* config/i386/linux.mh (XDEPFILES): Delete.
	* config/i386/nbsdelf.mh (XDEPFILES): Delete.
	* config/i386/ncr3000.mh (XDEPFILES): Delete.
	* config/i386/i386mk.mh (NATDEPFILES): Rename XDEPFILES.
	* config/i386/i386sco.mh (XDEPFILES): Delete.
	* config/i386/i386v.mh (XDEPFILES): Delete.
	* config/i386/nbsd.mh (XDEPFILES): Delete.
	* config/i386/ptx.mh (NATDEPFILES): Rename XDEPFILES.
	* config/i386/ptx4.mh (NATDEPFILES): Rename XDEPFILES.
	* config/i386/symmetry.mh (XDEPFILES): Delete.
	* config/i386/obsd.mh (XDEPFILES): Delete.
	* config/i386/x86-64linux.mh (XDEPFILES): Delete.
	* config/ia64/linux.mh (XDEPFILES): Delete.
	* config/ia64/aix.mh (XDEPFILES): Delete.
	* config/m68k/apollo68b.mh (XDEPFILES): Delete.
	* config/m68k/dpx2.mh (XDEPFILES): Delete.
	* config/m68k/3b1.mh (NATDEPFILES): Rename XDEPFILES.
	* config/m68k/apollo68v.mh (XDEPFILES): Delete.
	* config/m68k/hp300bsd.mh (XDEPFILES): Delete.
	* config/m68k/linux.mh (XDEPFILES): Delete.
	* config/m68k/m68klynx.mh (XDEPFILES): Delete.
	* config/m68k/m68kv4.mh (XDEPFILES): Delete.
	* config/m68k/nbsd.mh (XDEPFILES): Delete.
	* config/m68k/sun2os3.mh (XDEPFILES): Delete.
	* config/m68k/sun2os4.mh (XDEPFILES): Delete.
	* config/m68k/sun3os3.mh (XDEPFILES): Delete.
	* config/m68k/sun3os4.mh (XDEPFILES): Delete.
	* config/m88k/delta88.mh (XDEPFILES): Delete.
	* config/m88k/delta88v4.mh (XDEPFILES): Delete.
	* config/m88k/m88k.mh (XDEPFILES): Delete.
	* config/mips/littlemips.mh (NATDEPFILES): Rename XDEPFILES.
	* config/mips/linux.mh (XDEPFILES): Delete.
	* config/mips/irix6.mh (XDEPFILES): Delete.
	* config/mips/irix5.mh (XDEPFILES): Delete.
	* config/mips/irix4.mh (XDEPFILES): Delete.
	* config/mips/irix3.mh (XDEPFILES): Delete.
	* config/mips/decstation.mh (XDEPFILES): Delete.
	* config/mips/mipsm3.mh (XDEPFILES): Delete.
	(NATDEPFILES): Move core-aout.o to here.
	* config/ns32k/nbsd.mh (XDEPFILES): Delete.
	* config/pa/hpux1020.mh (XDEPFILES): Delete.
	* config/pa/hppabsd.mh (XDEPFILES): Delete.
	* config/pa/hppahpux.mh (XDEPFILES): Delete.
	* config/pa/hpux11w.mh (XDEPFILES): Delete.
	* config/pa/hppaosf.mh (XDEPFILES): Delete.
	* config/pa/hpux11.mh (XDEPFILES): Delete.
	* config/powerpc/aix.mh (XDEPFILES): Delete.
	* config/powerpc/nbsd.mh (XDEPFILES): Delete.
	* config/powerpc/linux.mh (XDEPFILES): Delete.
	* config/romp/rtbsd.mh: Rename XDEPFILES.
	* config/rs6000/rs6000lynx.mh (XDEPFILES): Delete.
	* config/rs6000/aix4.mh (XDEPFILES): Delete.
	* config/rs6000/rs6000.mh (XDEPFILES): Delete.
	* config/s390/s390.mh (XDEPFILES): Delete.
	* config/vax/vaxbsd.mh (NATDEPFILES): Rename XDEPFILES.
	* config/sparc/sun4sol2.mh (XDEPFILES): Delete.
	* config/sparc/sun4os4.mh (XDEPFILES): Delete.
	* config/sparc/sparclynx.mh (XDEPFILES): Delete.
	* config/sparc/nbsdelf.mh (XDEPFILES): Delete.
	* config/sparc/nbsd.mh (XDEPFILES): Delete.
	* config/sparc/linux.mh (XDEPFILES): Delete.
	* config/vax/vaxult.mh (XDEPFILES): Delete.
	* config/vax/vaxult2.mh (XDEPFILES): Delete.
	* Makefile.in (DEPFILES): Remove XDEPFILES.

2002-01-17  Andrew Cagney  <ac131313@redhat.com>

	* utils.c (internal_verror): Fix comments, default is yes not no.
	Update queries to match.  Default to quit and dump core.

2002-01-17  Andrew Cagney  <ac131313@redhat.com>

	* breakpoint.c: Update assuming #if UI_OUT is always true.  Update
	copyright.
	* defs.h, event-top.c, gdbcmd.h: Ditto.
	* infcmd.c, infrun.c, main.c, printcmd.c, remote.c: Ditto.
	* source.c, stack.c, symfile.c, symtab.c, thread.c: Ditto.
	* top.c, cli/cli-cmds.c, cli/cli-decode.c: Ditto.
	* cli/cli-script.c, cli/cli-script.h, cli/cli-setshow.c: Ditto.
	* mi/ChangeLog, mi/mi-cmd-break.c, mi/mi-cmd-stack.c: Ditto.
	* mi/mi-main.c:Ditto.

	* stack.c, symfile.c: Update copyright.

2002-01-17  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/low-hppabsd.c, gdbserver/low-lynx.c,
	gdbserver/low-nbsd.c, gdbserver/low-sim.c,
	gdbserver/low-sparc.c, gdbserver/low-sun3.c,
	gdbserver/low-linux.c, gdbserver/server.c: Correct copyright notices.

2002-01-17  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/low-hppabsd.c (myattach): New function, returning -1.
	* gdbserver/low-lynx.c (myattach): Likewise.
	* gdbserver/low-nbsd.c (myattach): Likewise.
	* gdbserver/low-sim.c (myattach): Likewise.
	* gdbserver/low-sparc.c (myattach): Likewise.
	* gdbserver/low-sun3.c (myattach): Likewise.

	* gdbserver/low-linux.c (myattach): New function.

	* gdbserver/server.c (attach_inferior): New function.
	(main): Handle "--attach".

2002-01-16  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (language support): Daniel Jacobwitz is C++
	maintainer.

2002-01-15  Daniel Jacobowitz  <drow@mvista.com>

	* c-typeprint.c (is_type_conversion_operator): Add additional
	check for non-conversion operators.

2002-01-15  Michael Snyder  <msnyder@redhat.com>

	* linux-proc.c: Add "info proc" command, a la procfs.c.
	(read_mapping): New function, abstract and re-use code.
	(linux_find_memory_regions): Use new func read_mapping.
	(linux_info_proc_cmd): New function, implement "info proc".
	(_initialize_linux_proc): Add new command "info proc".

2002-01-15  Michael Snyder  <msnyder@redhat.com>

	* symfile.c (generic_load): Use bfd_map_over_sections method
	instead of manipulating bfd structure members directly.
	(add_section_size_callback): New function, bfd sections callback
	used by generic_load.
	(load_sections_callback): New function, bfd sections callback
	used by generic_load.

2002-01-15  Elena Zannoni  <ezannoni@redhat.com>

	[Based on work by Jim Blandy]
	* gdbtypes.h (builtin_type_v16qi, builtin_type_v8hi): Export.
	(builtin_type_vec128): Export.
	* gdbtypes.c (builtin_type_v16qi, builtin_type_v8hi): New SIMD
	types.
	(builtin_type_vec128): New builtin type for 128 bit vector
	registers.
	(build_gdbtypes): Initialize builtin_type_v16qi and
	builtin_type_v8hi. Create the vec128 register builtin type
	structure.
	(build_builtin_type_vec128): New function.
	(_initialize_gdbtypes): Register builtin_type_v16qi and
	builtin_type_v8hi with gdbarch. Same for builtin_type_vec128.
	* rs6000-tdep.c (rs6000_register_virtual_type): Change type of
	AltiVec register to new builtin type.

2001-01-15  Daniel Jacobowitz  <drow@mvista.com>

	* stabsread.c (read_type): Pass dbx_lookup_type (typenums)
	to make_cv_type.

2002-01-14  Andrew Cagney  <ac131313@redhat.com>

	* config/pa/tm-hppa.h (DEPRECATED_CLEAN_UP_REGISTER_VALUE): Rename
	CLEAN_UP_REGISTER_VALUE.
	* regcache.c (supply_register): Update only call.

2002-01-14  Andrew Cagney  <ac131313@redhat.com>

	* configure.tgt: Mark a29k-*-aout*, a29k-*-coff*, a29k-*-elf*,
	a29k-*-ebmon*, a29k-*-kern*, a29k-*-none*, a29k-*-udi* and
	a29k-*-vxworks* targets as obsolete.

2002-01-14  Michael Snyder  <msnyder@redhat.com>

	* linux-proc.c (linux_do_thread_registers): Ignore fpxregs
	until we can resolve portability issues.
	* gregset.h: Remove references to fpxregs.
	* gcore.c (gcore_command): Initialize note_sec to NULL.

2002-01-13  Andrew Cagney  <ac131313@redhat.com>

	* signals.c (target_signal_to_name): Rewrite.  Only use
	signals[].name when in bounds and non-NULL.

2002-01-13  Andrew Cagney  <ac131313@redhat.com>

	From Petr Ledvina <ledvinap@kae.zcu.cz>:
	* signals.c (target_signal_to_name): Verify that SIG is within the
	bounds of the signals array.

2002-01-13  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Remove arm-coff and arm-pe from target list.

2002-01-13  Keith Seitz  <keiths@redhat.com>

	* stack.c (print_frame_info_base): Print the frame's pc
	only if when print_frame_info_listing_hook is not defined.

2002-01-13  Keith Seitz  <keiths@redhat.com>

	* varobj.c (varobj_set_value): Make sure that there were no
	errors evaluating the object before attempting to set its
	value.
	value_cast now properly adjusts VALUE_ADDRESS for baseclasses,
	so this offset adjustment is no longer necessary.
	(create_child): Don't set the error flag if the child is
	a CPLUS_FAKE_CHILD.
	(value_of_child): If value_fetch_lazy fails, return NULL
	so that callers will be notified that an error occurred.
	(c_value_of_variable): Delay check of variable's validity
	until later. We actually want all structs and unions to have
	the value "{...}".
	Do not return "???" for variables which could not be evaluated.
	This error condition must be returned to the caller so that it
	can get the error condition from gdb.
	(cplus_name_of_child): Adjust index for vptr before figuring
	out the name of the child.
	(cplus_value_of_child): If a child's (real) parent is not valid,
	don't even bother trying to give a value for it. Just return
	an error. Change all instances in this function.
	(cplus_type_of_child): If our parent is one of the "fake"
	parents, we need to get at the type of the real parent, and
	derive the child's true type using this information.

2002-01-13  Andrew Cagney  <ac131313@redhat.com>

	From 2002-01-09 John Marshall <johnm@falch.net>:
	* CONTRIBUTE, README, TODO: Change sourceware.cygnus.com to
	sources.redhat.com, and tweak some related URLs which had
	suffered from linkrot.

2002-01-13  Andrew Cagney  <ac131313@redhat.com>

	From Jeff law:
	* hppa-tdep.c (hppa_push_arguments): Correct handling of 5-7 byte
	structures passed in registers.

2002-01-13  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (save_npx) [__DJGPP_MINOR__ < 3]: Remove extraneous
	white space which prevented compilation.  Reported by DSK
	<dsk@student.unsw.edu.au>.

2002-01-11  Michael Snyder  <msnyder@redhat.com>

	* symfile.c (build_section_addr_info_from_section_tab):
	Use bfd access method instead of manipulating bfd directly.
	(syms_from_objfile): Ditto.
	(simple_overlay_update_1): Ditto.
	(simple_overlay_update): Ditto.
	(generic_load): Ditto.
	(overlay_unmapped_address): FIXME comment, bfd access methods.
	(sections_overlap): FIXME comment, bfd access methods.
	(pc_in_mapped_range): FIXME comment, bfd access methods.
	(pc_in_unmapped_range): FIXME comment, bfd access methods.
	(section_is_mapped): FIXME comment, bfd access methods.
	(section_is_overlay): FIXME comment, bfd access methods.

	* symfile.c (generic_load): Whitespace and long line cleanups.
	Remove duplicate variable, change several local variables to
	more appropriate data types.
	(print_transfer_performance): Use %lu instead of %ld for ulongs.

2002-01-12  Andrew Cagney  <ac131313@redhat.com>

	From Peter Schauer:
	* language.c (longest_local_hex_string_custom): Use phex_nz to
	convert NUM to a hex string.

2002-01-12  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_gdbarch_init): Move setting of long_bit earlier in
	the function.
	Update Copyright year.

2002-01-12  Andrew Cagney  <ac131313@redhat.com>

	* language.c (longest_raw_hex_string): Delete unused function.

2002-01-11  Petr Sorfa  <petrs@caldera.com>

	* MAINTAINERS (write-after-approval): Add myself.
	* dwarf2read.c (read_tag_string_type): Handling of
	DW_AT_byte_size.
	(read_tag_string_type): FORTRAN fix to prevent propagation of
	first string size.
	(set_cu_language): Handling of DW_LANG_Fortran95

2002-01-11  Richard Earnshaw  <rearnsha@arm.com>

	* armnbsd-nat.c (fetch_inferior_registers): Change inferior_pid ->
	GETPID(inferior_ptid).
	(store_inferior_registers): Likewise.

2002-01-10  Jason Merrill  <jason@redhat.com>

	* dwarf2read.c (decode_locdesc): Implement DW_OP_litn, DW_OP_dup.
	Fix DW_OP_minus.

2002-01-10  Andrew Cagney  <ac131313@redhat.com>

	* config/djgpp/fnchange.lst: Add renames for bfd/ChangeLog-0001
	and bfd/elf32-sh-nbsd.c.

2002-01-10  Michael Snyder  <msnyder@redhat.com>

	* NEWS: Mention --pid and corefile/proc-id behavior change.

	* Makefile.in: Add rules for gcore.o and linux-proc.o.
	* gcore.c: Include cli/cli-decode.h instead of command.h.

	* main.c (captured_main): Add new command line option "--pid".
	If the second command line argument (following the symbol-file)
	begins with a digit, try to attach to it before trying to open
	it as a corefile.
	(print_gdb_help): Document the "--pid" argument.

2002-01-10  Eli Zaretskii  <eliz@is.elta.co.il>

	* completer.c (command_completer): New function.

	* completer.h <command_completer>: Add prototype.

	* cli/cli-cmds.c (init_cli_cmds): Make command_completer be the
	completer for the "help" command.

2002-01-09  Jason Merrill  <jason@redhat.com>

	* c-typeprint.c (is_type_conversion_operator): Fix thinko.

2002-01-09  Michael Snyder  <msnyder@redhat.com>

	* i386-linux-nat.c (fill_fpxregset): Make global.
	(store_fpxregset): Ditto.

	* gregset.h (gdb_fpxregset_t): Define.
	(supply_fpxregset): Prototype.
	(fill_fpxregset): Prototype.

	* exec.c (exec_make_note_section): Don't call elfcore_write_prpsinfo.

2002-01-09  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/arm-tdep.h (arm_software_single_step): Remove PARAMS.
	* config/arm/nm-nbsd.h (arm_register_u_addr): Likewise.
	* config/arm/tm-nbsd.h (get_longjmp_target): Likewise.

2002-01-09  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Update target maintainer rules so that any
	Maintainer can approve a tested patch for a maintenance-only
	target.

2002-01-09  Richard Earnshaw  <rearnsha@arm.com>

	* MAINTAINERS (write-after-approval): Add myself.

	* arm-tdep.c (arm_init_extra_frame_info): Cast NULL argument to
	IN_SIGTRAMP.

2002-01-08  Michael Snyder  <msnyder@redhat.com>

	* linux-proc.c (child_pid_to_exec_file): Use readlink to get the
	real name of the executable, rather than the /proc name.

2002-01-03  Michael Snyder  <msnyder@redhat.com>

	Implement a "generate-core-file" command in gdb, save target state.
	* gcore.c: New file.  Implement new command 'generate-core-file'.
	Save a corefile image of the current state of the inferior.
	* linux-proc.c: Add linux-specific code for saving corefiles.
	* target.h (struct target_ops): Add new target vectors for saving
	corefiles; to_find_memory_regions and to_make_corefile_notes.
	(target_find_memory_regions): New macro.
	(target_make_corefile_notes): New macro.
	* target.c (update_current_target): Inherit new target methods.
	(dummy_find_memory_regions): New place-holder method.
	(dummy_make_corefile_notes): New place-holder method.
	(init_dummy_target): Initialize new dummy target vectors.
	* exec.c (exec_set_find_memory_regions): New function.
	Allow the exec_ops vector for memory regions to be taken over.
	(exec_make_note_section): New function, target vector method.
	* defs.h (exec_set_find_memory_regions): Export prototype.
	* procfs.c (proc_find_memory_regions): New function, corefile method.
	(procfs_make_note_section): New function, corefile method.
	(init_procfs_ops): Set new target vector pointers.
	(find_memory_regions_callback): New function.
	(procfs_do_thread_registers): New function.
	(procfs_corefile_thread_callback): New function.
	* sol-thread.c (sol_find_memory_regions): New function.
	(sol_make_note_section): New function.
	(init_sol_thread_ops): Initialize new target vectors.
	* inftarg.c (inftarg_set_find_memory_regions): New function.
	Allow to_find_memory_regions vector to be taken over.
	(inftarg_set_make_corefile_notes): New function.
	Allow to_make_corefile_notes vector to be taken over.
	* thread-db.c (thread_db_new_objfile): Don't activate thread-db
	interface layer if not target_has_execution (may be a corefile).
	* config/i386/linux.mh: Add gcore.o to NATDEPFILES.
	* config/sparc/sun4sol2.mh: Ditto.
	* config/alpha/alpha-linux.mh: Ditto.
	* config/arm/linux.mh: Ditto.
	* config/i386/x86-64linux.mh: Ditto.
	* config/ia64/linux.mh: Ditto.
	* config/m68k/linux.mh: Ditto.
	* config/mips/linux.mh: Ditto.
	* config/powerpc/linux.mh: Ditto.
	* config/sparc/linux.mh: Ditto.

2002-01-07  Michael Snyder  <msnyder@redhat.com>

	* arm-linux-nat.c: Remove references to regcache.c internal data
	(registers[] and register_valid[]).

2002-01-07  Michael Snyder  <msnyder@redhat.com>

	* linux-proc.c: New file.  Implement child_pid_to_exec_file,
	so that attaching to a pid will automatically read the process's
	symbol file and shlibs.
	* Makefile.in: Add rule for linux-proc.o.
	* config/nm-linux.h: Define CHILD_PID_TO_EXEC_FILE.
	* config/alpha/alpha-linux.mh: Add linux-proc.o to NATDEPFILES.
	* config/arm/linux.mh: Ditto.
	* config/i386/linux.mh: Ditto.
	* config/i386/x86-64linux.mh: Ditto.
	* config/ia64/linux.mh: Ditto.
	* config/m68k/linux.mh: Ditto.
	* config/mips/linux.mh: Ditto.
	* config/powerpc/linux.mh: Ditto.
	* config/sparc/linux.mh: Ditto.

2002-01-06  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c: Add i386-tdep.h dependency.

2002-01-07  Michael Snyder  <msnyder@redhat.com>

	* solib.c (info_sharedlibrary_command): Use TARGET_PTR_BIT
	instead of bfd_get_arch_size.  Don't bail out just because
	there's no exec_bfd.

	* cp-valprint.c (cp_print_value): FIXME comment, alloca size.
	* p-valprint.c (pascal_object_print_value): Ditto.
	* somread.c (som_symtab_read): Ditto.
	* symfile.c (simple_free_overlay_region_table): Ditto.
	* valops.c (value_assign): Ditto.

	* tracepoint.c (tracepoint_save_command): From Klee Dienes --
	use tilde_expand and strerror for opening save-tracepoints file.

	* thread-db.c (thread_db_new_objfile): Indendation fix.

	* infptrace.c (GDB_MAX_ALLOCA): New define.
	(child_xfer_memory): Use xmalloc/xfree instead of alloca if the
	size of the buffer exceeds GDB_MAX_ALLOCA (default 1 megabyte,
	can be overridden with whatever value is appropriate to the host).
	* infttrace.c (child_xfer_memory): Add FIXME warning about use of
	alloca to allocate potentially large buffer.
	* rs6000-nat.c (child_xfer_memory): Ditto.
	* symm-nat.c (child_xfer_memory): Ditto.
	* x86-64-linux-nat.c (child_xfer_memory): Ditto.

2002-01-07  Jackie Smith Cashion  <jsmith@redhat.com>

	From Nick Clifton  <nickc@redhat.com>
	* d10v-tdep.c: Set STACK_START to 0x200bffe.

2002-01-07  Michael Snyder  <msnyder@redhat.com>

	* solib-legacy.c (legacy_svr4_fetch_link_map_offsets):
	Don't use exec_bfd if it's NULL.

2002-01-06  Mark Kettenis  <kettenis@gnu.org>

	* valops.c (value_arg_coerce): Fix formatting.

2002-01-06  Andrew Cagney  <ac131313@redhat.com>

	* hp-psymtab-read.c: Include "gdb_string.h" instead of <string.h>.
	* gnu-nat.c: Ditto.

2002-01-06  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Note that alpha-dec-osf4.0a, arc-elf, arm-coff,
	arm-elf, arm-pe, d30v-elf, fr30-elf, h8300hms, h8500hms,
	i960-coff, m32r-elf, m68k-elf, m88k, mcore-elf, mn10200-elf,
	ns32k-netbsd, hppa1.1-hp-proelf, v850-elf, vax-dec-vms5.5 and
	z8k-coff have not been multi-arched.  Update z8k-coff build
	status.

2002-01-06  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Mark a29k target as obsolete.
	* Makefile.in (a29k-tdep.o, remote-adapt.o, remote-eb.o)
	(remote-mm.o, remote-udi.o): Obsolete.  Remove references in
	comments.
	* NEWS: Note that a29k targets are obsolete.
	* a29k-tdep.c: Mark as obsolete.
	* configure.tgt: Mark a29k-*-aout*, a29k-*-coff*, a29k-*-elf*,
	a29k-*-ebmon*, a29k-*-kern*, a29k-*-none*, a29k-*-udi* and
	a29k-*-vxworks* targets as obsolete.
	* remote-adapt.c: Obsolete.
	* remote-eb.c: Obsolete.
	* remote-mm.c: Obsolete.
	* remote-udi.c: Obsolete.
	* config/a29k/a29k-udi.mt: Obsolete.
	* config/a29k/a29k.mt: Obsolete.
	* config/a29k/tm-a29k.h: Obsolete.
	* config/a29k/tm-vx29k.h: Obsolete.
	* config/a29k/vx29k.mt: Obsolete.

2002-01-05  Andrew Cagney  <ac131313@redhat.com>

	* rs6000-tdep.c (rs6000_do_registers_info): Replace BIG_ENDIAN
	with BFD_ENDIAN_BIG.

2002-01-05  Andrew Cagney  <ac131313@redhat.com>

	* configure.in (AC_CHECK_HEADERS): Do not check for <endian.h>.
	* configure, config.in: Re-generate.
	* config/vax/xm-vaxbsd.h: Do not include <machine/endian.h>.
	* defs.h: Do not include <endian.h>.

2002-01-05  Jason Thorpe  <thorpej@wasabisystems.com>

	* acconfig.h (HAVE_PT_GETXMMREGS): New.
	* config.in: Regenerate.
	* configure.in: Update copyright years.
	Add test for PT_GETXMMREGS supplied by <sys/ptrace.h>.
	* configure: Regenerate.
	* i386bsd-nat.c: Update copyright years.
	(fill_gregset): Use regcache_collect.
	(fetch_inferior_registers): Only fetch integer registers
	if requested to do so.  Add support for XMM registers
	using PT_GETXMMREGS.
	(store_inferior_registers): Only store integer registers
	if requested to do so.  Add support for XMM registers
	using PT_SETXMMREGS.
	* i386nbsd-nat.c (fetch_inferior_registers): Remove.
	(store_inferior_registers): Remove.
	(fetch_core_registers): Use supply_gregset and i387_supply_fsave.
	(fetch_elfcore_registers): New function.
	(i386nbsd_elfcore_fns): New.
	(_initialize_i386nbsd_nat): Register i386nbsd_elfcore_fns.
	* config/i386/nbsd.mh (NATDEPFILES): Add i387-nat.o and
	i386bsd-nat.o.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/i386/nbsd.mt (TDEPFILES): Add i386bsd-nat.o.
	* config/i386/nbsdelf.mt (TDEPFILES): Likewise.
	* config/i386/tm-nbsd.h: Update copyright years.
	(HAVE_SSE_REGS): Define.
	(IN_SIGTRAMP): Define as i386bsd_in_sigtramp.
	(SIGTRAMP_START): Redefine as i386bsd_sigtramp_start.
	(SIGTRAMP_END): Redefine as i386bsd_sigtramp_end.
	(SIGCONTEXT_PC_OFFSET): Remove.
	(FRAME_SAVED_PC): Define as i386bsd_frame_saved_pc.

2002-01-05  Andrew Cagney  <ac131313@redhat.com>

	* configure.tgt: Remove powerpc-*-macos* target.
	* config/m68k/xm-mpw.h: Delete file.
	* config/xm-mpw.h: Delete file.
	* ser-mac.c: Delete file.
	* mpw-make.sed: Delete file.
	* mpw-config.in: Delete file.
	* mac-xdep.c: Delete file.
	* mac-gdb.r: Delete file.
	* mac-defs.h: Delete file.
	* mac-nat.c: Delete file.
	* config/powerpc/macos.mh: Delete file.
	* config/powerpc/macos.mt: Delete file.
	* config/powerpc/nm-macos.h: Delete file.
	* config/powerpc/tm-macos.h: Delete file.
	* source.c (openp, open_source_file): Remove obsolete code.
	* top.c	(gdb_readline): Ditto.
	* utils.c (query): Ditto.
	* event-top.c (display_gdb_prompt): Ditto.
	* Makefile.in (ser-mac.o): Delete obsolete target.
	* NEWS: Update.

2002-01-04  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (BIG_ENDIAN): Delete macro definition.
	* a29k-tdep.c, arch-utils.c, arm-tdep.c, ax-gdb.c, ch-exp.c,
	coffread.c, cris-tdep.c, d10v-tdep.c, d30v-tdep.c, defs.h,
	findvar.c, infcmd.c, mem-break.c, mips-tdep.c, mn10300-tdep.c,
	printcmd.c, remote-os9k.c, remote-rdi.c, remote-rdp.c,
	remote-sim.c, remote.c, rs6000-tdep.c, sh-tdep.c, sparcl-tdep.c,
	stabsread.c, valops.c, valprint.c, config/a29k/tm-a29k.h,
	config/a29k/tm-vx29k.h, config/arm/tm-arm.h,
	config/d30v/tm-d30v.h, config/fr30/tm-fr30.h,
	config/h8300/tm-h8300.h, config/h8500/tm-h8500.h,
	config/m32r/tm-m32r.h, config/m68k/tm-m68k.h,
	config/m88k/tm-m88k.h, config/mips/tm-mips.h, config/pa/tm-hppa.h,
	config/sparc/tm-sparc.h, config/z8k/tm-z8k.h, mi/mi-cmd-disas.c,
	mi/mi-main.c: Replace BIG_ENDIAN with BFD_ENDIAN_BIG.
	* gdbarch.sh: Replace BIG_ENDIAN with BFD_ENDIAN_BIG.
	* gdbarch.c: Re-generate.

2002-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* thread-db.c (thread_db_new_objfile): Do not enable thread_db
	for core files.

2002-01-04  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/arm/nbsd.mh (XDEPFILES): Remove ser-tcp.o.

2002-01-04  Andrew Cagney  <ac131313@redhat.com>

	* value.h (value_ptr): Delete typedef.

2002-01-04  Jason Thorpe  <thorpej@wasabisystems.com>

	* i386nbsd-nat.c: Update copyright years.
	Include i386-tdep.h.

2002-01-04  Elena Zannoni  <ezannoni@redhat.com>

	* stabsread.c: Update copyright years.

	From Debashis Mahata <debashis.mahata@wipro.com>:
	(read_struct_fields): Deal with Sun C compiler erroneous stab
	output for structs and unions.
        Fix PR gdb/269.

2002-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* p-valprint.c: Include "cp-abi.h" for baseclass_offset
	prototype.

2002-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* cp-abi.c: Fix whitespace.
	(baseclass_offset): New wrapper function.
	* cp-abi.h (baseclass_offset): Add prototype.
	(struct cp_abi_ops): Add baseclass_offset pointer.

	* valops.c (vb_match): Move to...
	* gnu-v2-abi.c (vb_match): here.
	* valops.c (baseclass_offset): Move to...
	* gnu-v2-abi.c (gnuv2_baseclass_offset): here, and rename.

	* gnu-v3-abi.c (gnuv3_baseclass_offset): New function.

	* gnu-v2-abi.c (init_gnuv2_ops): Initialize baseclass_offset.
	* gnu-v3-abi.c (init_gnuv3_ops): Likewise.
	* hpacc-abi.c (init_hpacc_ops): Likewise.

2002-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* valops.c (find_overload_match): Accept obj as a
	reference parameter.  Update it before returning.
	* value.h (find_overload_match): Update prototype.
	* eval.c (evaluate_subexp_standard): Pass object to
	find_overload_match by reference.

2002-01-03  Andrew Cagney  <ac131313@redhat.com>

	* valarith.c: Replace value_ptr with struct value pointer.  Remove
	register attribute from value declarations.
	* valops.c: Ditto.
	* value.h: Ditto.
	* scm-lang.c (scm_lookup_name): Ditto.

2002-01-03  Michael Snyder  <msnyder@redhat.com>

	Abstract the functionality of iterating over mapped memory
	regions into a general purpose iterator function.
	* procfs.c (iterate_over_mappings): New function, general purpose
	iterator for memory sections.
	(proc_iterate_over_mappings): Reimplement using iterate_over_mappings.
	(solib_mappings_callback): New function, callback for above.
	(info_proc_mappings): Reimpliment using iterate_over_mappings.
	(info_mappings_callback): New function, callback for above.

	* procfs.c (proc_set_watchpoint): Add cast to suppress warning.

2002-01-01  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.h (struct gdbarch_tdep): Add `os_ident' member.
	* i386-tdep.c: Include "elf-bfd.h".
	(process_note_abi_tag_sections): New function.
	(i386_gdbarch_init): Add code to recognize various OS/ABI
	combinations.

	* maint.c (_initialize_maint_cmds): Add missing \ in
	string-literal.

For older changes see ChangeLog-2001

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
