2001-12-30  Michael Snyder  <msnyder@redhat.com>

	* sparc-tdep.c (sparc-store-return-value): Whitespace fix-up.

2001-12-29  Elena Zannoni  <ezannoni@redhat.com>

        * Makefile.in (rs6000-tdep.o): Add dependency on parser-defs.h.

        * rs6000-tdep.c: Include parser-defs.h.
        (rs6000_register_virtual_type): Rewrite, including handling of
        AltiVec regs type.
        (altivec_register_p): New function.
        (rs6000_do_altivec_registers): New function.
        (rs6000_altivec_registers_info): New function.
        (rs6000_do_registers_info): New function.
        (R16): Define.
        (PPC_ALTIVEC_REGS): Define.
        (registers_powerpc): Add AltiVec registers.
        (registers_7400): Define.
        (variants): Add 7400 machine.
        (rs6000_gdbarch_init): Set the numbers of AltiVec registers.
        Initialize gdbarch_do)_registers_info.
        (rs6000_info_power_command): New function.
        (info_power_cmdlist): New static variable.
        (_initialize_rs6000_tdep): Add new 'info powerpc altivec' command.

        * ppc-tdep.h (struct gdbarch_tdep): Add altivec regnum fields.
        (altivec_register_p): Export.

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

	* i386bsd-nat.c (reg_offset): Fix typo.

	* i386-tdep.c (i386_push_dummy_frame): Don't write back the
	modified frame pointer until the old frame pointer has been saved.

2001-12-30  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.c (initialize_current_architecture): Test byte_order
	against BFD_ENDIAN_UNKNOWN.
	(gdbarch_info_init): Initialize byte_order to BFD_ENDIAN_UNKNOWN.
	* gdbarch.sh: Update comments on default value of byte_order.
	(verify_gdbarch, gdbarch_update_p): Test byte_order against
	BFD_ENDIAN_UNKNOWN.
	* gdbarch.h, gdbarch.c: Re-generate.

2001-12-27  Michael Snyder  <msnyder@redhat.com>

	* i386-linux-nat.c: Include i386-tdep.h.

	* maint.c (match_substring): GNU coding standards fixes.
	(print_bfd_section_info): Ditto.
	(print_objfile_section_info): Ditto.

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

	* maint.c (match_substring): Make parameters `string' and `substr'
	const.  Make local variable `tok' const.

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

	* config/i386/tm-i386.h (FP7_REGNUM, FIRST_FPU_CTRL_REGNUM,
	FCTRL_REGNUM, FPC_REGNUM, FSTAT_REGNUM, FTAG_REGNUM, FCS_REGNUM,
	FCOFF_REGNUM, FDS_REGNUM, FDOFF_REGNUM, FOP_REGNUM,
	LAST_FPU_CTRL_REGNUM, XMM0_REGNUM, XMM7_REGNUM, MXCSR_REGNUM,
	IS_FP_REGNUM, IS_SSE_REGNUM): Removed.
	(FP0_REGNUM): Define conditionally depending on HAVE_I387_REGS.
	(SIZEOF_FPU_CTRL_REGS): Hardcode value.
	* i386-tdep.h (struct gdbarch_tdep): Change such that it contains
	a single member `num_xmm_regs'.
	(FPC_REGNUM): New macro.
	(FIRST_FPU_REGNUM, LAST_FPU_REGNUM, FISRT_XMM_REGNUM,
	LAST_XMM_REGNUM, MXCSR_REGNUM, FIRST_FPU_CTRL_REGNUM,
	LAST_FPU_CTRL_REGNUM): Removed.
	(FCTRL_REGNUM, FSTAT_REGNUM, FTAG_REGNUM, FOP_REGNUM, XMM0_REGNUM,
	MXCSR_REGNUM): Define unconditionally.  Change macros to match the
	comment describing the register layout.
	(FISEG_REGNUM, FIOFF_REGNUM, FOSEG_REGNUM, FOOFF_REGNUM): New macros.
	(FP_REGNUM_P, FPC_REGNUM_P, SSE_REGNUM_P): New macros.
	(IS_FP_REGNUM, IS_FPU_CTRL_REGNUM, IS_SSE_REGNUM): Make obsolete,
	unconditionally define in terms of FP_REGNUM_P, FPC_REGNUM_P and
	SSE_REGNUM_P).
	(FCS_REGNUM, FCOFF_REGNUM, FDS_REGNUM, FDOFF_REGNUM): Make
	obsolete, unconditionally define in terms of FISEG_REGNUM,
	FIOFF_REGNUM, FOSEG_REGNUM, FOOFF_REGNUM.
	* i386-tdep.c (i386_gdbarch_init): Initialize `num_xmm_regs'
	member of `struct gdbarch_tdep'.
	* x86-64-tdep.c (i386_gdbarch_init): Change initialization of
	`struct gdbarch_tdep'.
	* i387-nat.c (FCS_REGNUM, FCOFF_REGNUM, FDS_REGNUM, FDOFF_REGNUM):
	Replace with FISEG_REGNUM, FIOFF_REGNUM, FOSEG_REGNUM and
	FOOFF_REGNUM.  Use FPC_REGNUM instead of FIRST_FPU_CTRL_REGNUM.
	Use XMM0_REGNUM instead of LAST_FPU_CTRL_REGNUM.

2001-12-25  Andrew Cagney  <ac131313@redhat.com>

	* cli/cli-script.c (execute_control_command): Replace value_ptr
	with a struct value pointer.
	* ch-lang.c (evaluate_subexp_chill): Ditto.
	* printcmd.c (printf_command): Ditto.
	* tracepoint.c (set_traceframe_context): Ditto.
	(encode_actions): Ditto.
	* eval.c (evaluate_subexp_standard): Ditto.

2001-12-25  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: When an int variable, print value using %d instead
	of %ld.
	* gdbarch.c: Re-generate.
	
2001-12-24  Tom Rix  <trix@redhat.com>

	* config/powerpc/aix.mt (TDEPFILES): Add xcoffread.o to fix a build 
	failure.

2001-12-21  Michael Snyder  <msnyder@redhat.com>

	* procfs.c (info_proc_cmd): Add the 'mappings' sub-command that
	was dropped a few years ago, when procfs.c was rewritten.
	(info_proc_mappings): New function, implement 'info proc mappings'.
	(mappingflags): New function.
	(_initialize_procfs): Document new option to 'info proc' command.

2001-12-21  Tom Tromey  <tromey@redhat.com>

	* configure, config.in: Rebuilt.
	* configure.in: Check for realpath.
	* defs.h (gdb_realpath): Declare.
	* symtab.h (partial_symtab): Added fullname field.
	* source.c (openp): Use gdb_realpath.
	(forget_cached_source_info): Clear full name of each partial
	symtab.
	* utils.c (gdb_realpath): New function.
	* symtab.c (lookup_symtab): Removed.
	(lookup_symtab_1): Renamed to lookup_symtab.
	(lookup_symtab): Look for real path.
	(lookup_partial_symtab): Likewise.

2001-12-21  Michael Snyder  <msnyder@redhat.com>

	* maint.c (match_substring): New function.  Tokenizer for
	maint info sections command arguments.
	(match_bfd_flag): Use match_substring.
	(print_bfd_section_info): Use match_substring.
	(print_objfile_section_info): Use match_substring.
	(maintenance_info_sections): Use match_substring.

2001-12-21  Orjan Friberg  <orjanf@axis.com>

        * configure.tgt: Delete CRIS from multi-arch targets.

	* config/cris/tm-cris.h: New file.
	
	* config/cris/cris.mt (TDEPFILES): Add corelow.o solib.o solib-svr4.o.
	(TM_FILE): New macro.

	* cris-tdep.c (cris_examine): Correct check for srp register.
	(supply_gregset, fetch_core_registers,
	cris_linux_svr4_fetch_link_map_offsets, cris_fpless_backtrace): 
	New functions.
	(_initialize_cris_tdep): Add core functions and new command.
	(cris_gdbarch_init): Define link map offsets.

Thu Dec 20 16:42:30 2001  Jeffrey A Law  (law@cygnus.com)

	* somsolib.c (som_solib_add): Ignore the solib limit threshhold
	if AUTO_SOLIB_LIMIT is not greater than zero.

	* somsolib.c (som_solib_create_inferior_hook): No longer warn
	about missing __d_pid symbol.

2001-12-20  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-linux-nat.c (ppc_ptrace_cannot_fetch_store_register):
	New function.
	(fetch_register): New function.
	(fetch_ppc_registers): New function.
	(fetch_inferior_registers): New function.
	(store_register): New function.
	(store_ppc_registers): New function.
	(store_inferior_registers): New function.
	(ppc_register_u_addr): Eliminate ustart parameter and its
	uses. Make static.
	(PT_READ_U, PT_WRITE_U, PTRACE_XFER_TYPE): Define if needed.
	Include sys/ptrace.h.

	* config/powerpc/nm-linux.h (FETCH_INFERIOR_REGISTERS): Define.
	(U_REGS_OFFSET, REGISTER_U_ADDR): Delete.

	* config/powerpc/linux.mh (NATDEPFILES): Delete core-aout.o.

2001-12-20  Elena Zannoni  <ezannoni@redhat.com>

        * rs6000-nat.c (fetch_register): Don't error out unless the
        register number is really bogus.

2001-12-20  Michael Snyder  <msnyder@redhat.com>

	* maint.c (maintenance_info_sections): Accept new argument
	'ALLOBJ', iterate over all object files.
	(print_section_table): Delete.  Replaced by:
	(print_section_info): New function.
	(print_bfd_section_info): New function.
	(print_objfile_section_info): New function.
	(_initialize_maint_commands): Add help for new features.

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

	* arm-tdep.c (arm_init_extra_frame_info): Add special case for
	call dummies.
	(arm_frame_saved_pc): Likewise.
	(arm_push_dummy_frame): Make sure all of the GPRs are saved.
	(arm_pop_frame): Eliminate special case for call dummies.  It
	is no longer needed now that the frame info is being properly
	initialized.

	* arm-tdep.c (arm_scan_prologue): Don't require "mov ip, sp"
	to be the first instruction in the prologue.  Also, revise
	the way the frame offset is computed for frameless functions.

2001-12-20  Michael Snyder  <msnyder@redhat.com>

	* maint.c (maintenance_info_sections): Pass string argument to
	print_section_table, so that it can be used to select sections.
	(print_section_table): Change PTR to void *.  Look at string arg
	to select sections by name and by flag attributes.
	(match_bfd_flags): New function.
	(print_bfd_flags): New function.

Thu Dec 20 11:37:50 2001  Jeffrey A Law  (law@redhat.com)

	* cli/cli-decode.c (add_cmd): Initialize pre_show_hook in
	the new command.

2001-12-20  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (struct packet_reg): Add field in_g_packet.
	(struct remote_state): Rename field g_packet to regs;
	(free_remote_state): Update.
	(init_remote_state): Add pseudo-registers to table.  Initialize
	in_g_packet.  Drop sentinal from table.
	(packet_reg_from_regnum, packet_reg_from_pnum): Update.
	(remote_fetch_registers): Handle registers not in the g-packet.
	(remote_store_registers): Ditto.

2001-12-20  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (TARGET_CHAR_SIGNED): Do not specify the print
	format.

2001-12-19  Jim Blandy  <jimb@redhat.com>

	* s390-tdep.c (s390_pop_frame_regular): Make sure the saved_regs
	array is actually set before we try to use it.

	* s390-tdep.c (s390_frame_saved_pc_nofix): If we get the saved PC
	out of the return address register, cache that in the frame's
	extra info, just as if we'd gotten it from the saved regs array;
	that way, it's not a lie to set the saved_pc_valid flag.

	* s390-tdep.c (s390_get_frame_info): Give orig_sp a reasonable
	value, even when fextra_info->stack_bought can't be trusted,

	* s390-tdep.c (s390_readinstruction): Don't call
	info->read_memory_func to read zero bytes.  Some targets'
	xfer_memory functions can't cope with that.

	* gdbarch.sh (TARGET_CHAR_SIGNED): New macro.
	* gdbarch.c, gdbarch.h: Regenerated.
	* gdbtypes.c (build_gdbtypes): If TARGET_CHAR_SIGNED is zero,
	set the TYPE_FLAG_UNSIGNED bit on the type.
	* s390-tdep.c (s390_gdbarch_init): On the S/390, characters
	are unsigned by default.
	* rs6000-tdep.c (rs6000_gdbarch_init): Same for PowerPC and
	RS6000.

2001-12-19  Elena Zannoni  <ezannoni@redhat.com>

        * corefile.c (do_captured_read_memory_integer,
        safe_read_memory_integer): New functions.
        * gdbcore.h (safe_read_memory_integer): Export.
        * arm-tdep.c (arm_scan_prologue): Use safe_read_memory_integer,
        to read the frame value, to capture calls to error().

2001-12-19  Jim Blandy  <jimb@redhat.com>

	* s390-tdep.c (s390_register_name): S390_LAST_REGNUM is, in fact,
	the last register number, not one greater than the last register
	number.

	* s390-tdep.c (s390_register_virtual_type): Replace clever but
	incorrect range comparison with correct, legible equivalent.

	* s390-tdep.c (s390_register_raw_size): Replace unnecessarily
	obscure range comparison with legible equivalent.

Wed Dec 19 12:18:57 2001  Jeffrey A Law  (law@redhat.com)

	* config/pa/tm-hppa.h (STORE_RETURN_VALUE): Use hppa_store_return_value.
	(EXTRACT_RETURN_VALUE): Similarly.
	* hppa-tdep.c (hppa_store_return_value): New function.
	(hppa_extract_return_value): New function.

	* infttrace.c (child_acknowledge_created_inferior): Pass
	correct argument to add_thread.
	(update_thread_state_after_attach): Likewise.

2001-12-19  Fernando Nasser  <fnasser@redhat.com>

	* config/arm/tm-arm.h: Properly define SOFTWARE_SINGLE_STEP_P.
	Always define SOFTWARE_SINGLE_STEP.
	* config/arm/tm-embed.h: Properly define SOFTWARE_SINGLE_STEP_P.
	* arm-tdep.c (arm_get_next_pc, thumb_get_next_pc, bitcount,
	shifted_reg_val): Always compile these functions.
	(arm_software_single_step): Fix second argument in function calls.

2001-12-19  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.h (gdbarch_info_init): Declare.
	* arch-utils.c: Include "arch-utils.h".
	(gdbarch_info_init): Define.
	(set_endian, set_architecture, set_gdbarch_from_file)
	(initialize_current_architecture): Use gdbarch_info_init.
	* rs6000-nat.c (set_host_arch): Ditto.
	* cris-tdep.c	(cris_version_update, cris_mode_update)
	(cris_abi_update): Ditto.

2001-12-19  Jim Blandy  <jimb@redhat.com>

	* c-lang.c (c_emit_char): Print ASCII 11 as '\v', to match
	ISO C, and our parser.  Print ASCII 0 as '\0', since that's what
	people are used to seeing.

2001-12-18  Jim Blandy  <jimb@redhat.com>

	* c-lang.c (c_printstr, c_builtin_types, cplus_builtin_types): 
	Fix indentation.

	* Makefile.in (c-exp.tab.o): Delete duplicate build rule.  Fix
 	dependency list on remaining build rule.

2001-12-18  Martin M. Hunt  <hunt@redhat.com>

	* ser-tcp.c (tcp_open): Disable Nagle algorithm which
	improves performance in some cases.

2001-12-17  Ben Harris  <bjh21@netbsd.org>

	* armbsd-nat.c: Remove file, renamed to armnbsd-nat.c.
	* armnbsd-nat.c: New file, renamed from armbsd-nat.c.
	* Makefile.in: Rename armbsd-nat.c to armnbsd-nat.c.
	* config/arm/nbsd.mh: Likewise.

2001-12-17  Corinna Vinschen  <vinschen@redhat.com>

	* NEWS: Note new target XStormy16.
	* MAINTAINERS: Add -Werror to XStormy16.

2001-12-17  Fernando Nasser  <fnasser@redhat.com>

	From Richard Earnshaw <rearnsha@arm.com>:
	* arm-tdep.c (arm_software_single_step): New function. Implements
	software single-stepping for ARM targets.
	(arm_get_next_pc, thumb_get_next_pc, bitcount, shifted_reg_val): Only
	needed for software single-stepping.
	* config/arm/tm-arm.h: Activate SOFTWARE_SINGLE_STEP_P.

2001-12-17  Fernando Nasser  <fnasser@redhat.com>

	From Richard Earnshaw <rearnsha@arm.com>:
	* config/arm/nbsd.mh, config/arm/nbsd.mt, config/arm/tm-nbsd.h,
	config/arm/nm-nbsd.h, config/arm/xm-nbsd.h: New files.
	* armbsd-nat.c: New file.
	* Makefile.in: Build it.
	* configure.host, configure.tgt: Support NetBSD/arm.

2001-12-17  Corinna Vinschen  <vinschen@redhat.com>

	* MAINTAINERS: Add myself as XStormy16 maintainer.

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

	* config/rs6000/tm-rs6000.h (solib.h): Conditionally include.

2001-12-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.c: Re-generate.
	
2001-12-15  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Remove powerpcle-eabi and rs6000-ibm-aix3.2 from
	target list.

2001-12-15  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (LITTLE_ENDIAN): Delete definition.
	* arch-utils.c, cris-tdep.c, d10v-tdep.c, defs.h, gdbarch.c,
	gdbarch.sh, remote-rdp.c, remote-sim.c, sh-tdep.c, sparc-tdep.c,
	config/alpha/tm-alpha.h, config/arm/tm-arm.h,
	config/i386/tm-i386.h, config/i960/tm-i960.h,
	config/ia64/tm-ia64.h, config/mcore/tm-mcore.h,
	config/mips/tm-wince.h, config/mn10200/tm-mn10200.h,
	config/ns32k/tm-umax.h, config/powerpc/tm-ppcle-eabi.h,
	config/sh/tm-wince.h, config/v850/tm-v850.h, config/vax/tm-vax.h,
	doc/gdbint.texinfo: Replace LITTLE_ENDIAN with BFD_ENDIAN_LITTLE.

2001-12-15  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.c (struct ui_out_table): Add field entry_level.
	(verify_field): New function.
	(verify_field_proper_position): Delete function.
	(verify_field_alignment): Delete function.
	(ui_out_field_int): Update to use verify_field.
	(ui_out_field_skip): Ditto.
	(ui_out_field_string): Ditto.
	(ui_out_field_fmt): Ditto.
	(ui_out_table_begin): Initialize table.entry_level.
	(ui_out_table_end): Clear table.entry_level.
	(ui_out_begin): Call verify_field before pushing the new tuple or
	list onto the stack.  Use table.entry_level.

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

	* config/djgpp/fnchange.lst: Add entries for opcodes/xstormy16-* files.

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

	* arch-utils.c (generic_register_virtual_size): Return TYPE_LENGTH
	of register's type.

2001-12-13  Jackie Smith Cashion  <jsmith@redhat.com>

	* cli/cli-script.c (print_command_lines): Remove extra
	"if", "else", "while", and "end" from show user output.

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

	* i387-nat.c (i387_fill_fxsave): Change type of ``val'' from char
	to short so that we don't memcpy() beyond the end of this buffer.
	Also, change shift value used in computing val to account for the
	fact that only eight bits are used.

2001-12-13  Corinna Vinschen  <vinschen@redhat.com>

	* Makefile.in: Add support for xstormy16.
	* configure.tgt: Ditto.
	* xstormy16-tdep.c: New file.
	* config/xstormy16/xstormy16.mt: New file.

2001-12-13  Andreas Schwab  <schwab@suse.de>

	* MAINTAINERS (write-after-approval): Add myself.

2001-12-12  Jim Blandy  <jimb@redhat.com>

	* Makefile.in (c-exp.tab.o): Add missing dependencies.

	* Makefile.in (c_lang_h): New variable.  Use it in dependency
	lists, instead of `c-lang.h' itself.

2001-12-11  Fred Fish  <fnf@redhat.com>

	* c-typeprint.c (c_type_print_base): Use type flags access macros
	to test bits.
	* ch-typeprint.c (chill_type_print_base): Ditto.
	* ch-valprint.c (chill_val_print): Ditto.
	* d10v-tdep.c (d10v_pointer_to_address): Ditto.
	* dwarf2read.c (dwarf2_add_member_fn): Ditto.
	* dwarfread.c (read_structure_scope): Ditto.
	* gdbtypes.c (create_range_type): Dittol
	(create_set_type): Ditto.
	(check_typedef): Ditto.
	* jv-typeprint.c (java_type_print_base): Ditto.
	* p-typeprint.c (pascal_type_print_base): Ditto
	* p-valprint.c (pascal_val_print): Ditto.
	* stabsread.c (read_cfront_member_functions): Ditto.
	(read_member_functions): Ditto.
	(cleanup_undefined_types): Ditto.
	* valprint.c (val_print): Ditto.

	* valops.c (hand_function_call): Remove is_prototyped
	variable and just use type flag test macro directly.

2001-12-11  Fred Fish  <fnf@redhat.com>

	* gdbtypes.c (print_bound_type): New function.
	(recursive_dump_type): Print type struct code values
	TYPE_CODE_BITSTRING, TYPE_CODE_COMPLEX, TYPE_CODE_TEMPLATE,
	and TYPE_CODE_TEMPLATE_ARG.
	(recursive_dump_type): Print type struct members
	upper_bound_type, lower_bound_type, cv_type, and as_type.
	Also always print the tagname member, even when it is NULL.

2001-12-11  Michael Snyder  <msnyder@redhat.com>

	* d10v-tdep.c (d10v_register_virtual_size): Delete.
	(d10v_gdbarch_init): Use generic_register_virtual_size.
	* rs6000-tdep.c (rs6000_register_virtual_size): Delete.
	(rs6000_gdbarch_init): Use generic_register_virtual_size.
	* x86-64-tdep.c (x86_64_register_virtual_size): Delete.
	(i386_gdbarch_init): Use generic_register_virtual_size.

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

	* values.c: Include "gdb_assert.h".
	(value_fn_field): Rearange to avoid -Wuninitialized warning.

2001-12-10  Fred Fish  <fnf@redhat.com>

	* values.c (value_fn_field): Add physname variable.  Use a minimal
	symbol if we don't find a full symbol.  Remove setting of the new
	value's type since that was already done by allocate_value().
	Remove obsolete commented out error call since callees need to
	handle a NULL return, which is possible result not an error.
	* eval.c (evaluate_subexp_standard): Move check for inlined
	functions to precede attempt to dereference a NULL argvec[0].

2001-12-10  Fred Fish  <fnf@redhat.com>

	* arm-linux-tdep.c (skip_hurd_resolver): Use NULL rather than
	zero in args to lookup_minimal_symbol.
	* linespec.c (decode_line_1): Ditto.
	* i386-linux-tdep.c (skip_hurd_resolver): Ditto.
	* minsyms.c (find_stab_function_addr): Ditto.
	* symfile.c (simple_read_overlay_table): Ditto.
	(simple_read_overlay_region_table): Ditto.

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

	* arch-utils.c (generic_register_virtual_size): New function.
	* arch-utils.h: Export generic version of register_virtual_size.
	* gdbarch.sh (REGISTER_VIRTUAL_SIZE): Use new function as default.
	* gdbarch.c: Regenerate.

2001-12-09  Fred Fish  <fnf@redhat.com>

	* gdbtypes.c (TYPE_FLAG_UNSIGNED, TYPE_FLAG_STUB): Use
	TYPE_UNSIGNED and TYPE_NOSIGN to determine when to print these
	rather than testing the bits directly.
	(TYPE_FLAG_NOSIGN, TYPE_FLAG_TARGET_STUB, TYPE_FLAG_STATIC,
	TYPE_FLAG_CONST, TYPE_FLAG_VOLATILE, TYPE_FLAG_PROTOTYPED,
	TYPE_FLAG_INCOMPLETE, TYPE_FLAG_CODE_SPACE, TYPE_FLAG_DATA_SPACE,
	TYPE_FLAG_VARARGS): Test for and print these bits as well.

2001-12-09  Fred Fish  <fnf@redhat.com>

	* gdbtypes.c (build_gdbtypes): For builtin_type_char, pass
	TYPE_FLAG_NOSIGN to init_type() rather than setting it after the
	type is created.

2001-12-09  Fred Fish  <fnf@redhat.com>

	* gdbtypes.h (TYPE_UNSIGNED, TYPE_NOSIGN, TYPE_CONST,
	TYPE_VOLATILE, TYPE_INCOMPLETE): Move macros that test the
	bits to location in file where the bits are defined.
	(TYPE_STUB, TYPE_TARGET_STUB, TYPE_STATIC, TYPE_PROTOTYPED,
	TYPE_CODE_SPACE, TYPE_DATA_SPACE): New test macros.

2001-12-09  Fred Fish  <fnf@redhat.com>

	* gdbtypes.c (allocate_stub_method): Replace hand crafted type
	initialization with call to the init_type() function.

2001-12-09  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.c (generic_register_raw_size): New function.
	* gdbarch.sh (REGISTER_RAW_SIZE): Use generic_register_raw_size as
	the static default.
	* gdbarch.c: Regenerate.	
	* arch-utils.h (generic_register_raw_size): Declare.

	* config/mips/tm-mips.h (REGISTER_RAW_SIZE): Delete macro.
	* mips-tdep.c (mips_register_raw_size): Make function static.
	(mips_gdbarch_init): Initialize register_raw_size.

2001-12-08  Fred Fish  <fnf@redhat.com>

	* dwarf2read.c (read_typedef):  Replace hand crafted type
	initialization with a call to the init_type() function, which
	is how the rest of gdb creates types.

2001-12-09  Fred Fish  <fnf@redhat.com>

	* mdebugread.c (cross_ref): Pass TYPE_FLAG_STUB to init_type()
	rather than setting it after the type is created.

2001-12-09  Elena Zannoni  <ezannoni@redhat.com>

	* config/rs6000/tm-rs6000.h (STAB_REG_TO_REGNUM): Remove
	definition, it is now multiarched.
	* ppc-tdep.h (struct gdbarch_tdep): Move from rs6000-tdep.c.  Add
	fields for special register numbers.
	* rs6000-tdep.c (rs6000_gdbarch_init): Initialize new tdep special
	regnum fields.
	(rs6000_saved_pc_after_call): Use gdbarch_tdep registers fields
	instead of hardcoded macros.
	(branch_dest, rs6000_pop_frame, rs6000_fix_call_dummy,
	ppc_push_return_address, rs6000_frame_saved_pc,
	frame_get_saved_regs, rs6000_frame_chain,
	rs6000_store_return_value): Ditto.
	(rs6000_stab_reg_to_regnum): New function.
	* ppcnbsd-nat.c (fetch_inferior_registers,
	store_inferior_registers, fetch_core_registers): Ditto.
	* ppc-linux-tdep.c (ppc_linux_in_sigtramp,
	ppc_linux_frame_init_saved_regs): Ditto.
	* ppc-linux-nat.c (ppc_register_u_addr, supply_gregset,
	fill_gregset): Ditto.
	* ppc-bdm.c (bdm_ppc_fetch_registers, bdm_ppc_store_registers):
	Ditto.

2001-12-08  Fred Fish  <fnf@redhat.com>

	* c-lang.c (c_create_fundamental_type): For FT_CHAR, pass
	TYPE_FLAG_NOSIGN to init_type() rather than setting it after the
	type is created.

2001-12-08  Fred Fish  <fnf@redhat.com>

	* dwarf2read.c (TYPE_FLAG_VARARGS): Remove from here.
	* gdbtypes.h (TYPE_FLAG_VARARGS): Add here and change value to
	not collide with other flag bits.

2001-12-08  Fred Fish  <fnf@redhat.com>

	* dwarf2read.c (read_base_type): Rename is_unsigned to type_flags.
	For unsigned types set TYPE_FLAG_UNSIGNED and pass it to
	init_type().

2001-12-08  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (cp-valprint.o): Add dependency on $(cp_abi_h).

2001-12-08  Jim Blandy  <jimb@redhat.com>

	* config/s390/s390.mh: Don't use the linux-thread.o module;
 	thread-db.o, lin-lwp.o, and proc-service.o should work just fine.

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

	* PROBLEMS: New file.
	* README: Move known problems to PROBLEMS file.

2001-12-07  Daniel Jacobowitz  <drow@mvista.com>

	* stabsread.c (read_member_functions): Skip member functions which
	are duplicates of the callable constructor/destructor.

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

	* s390-tdep.c (s390_store_return_value): Don't convert float
	values to double format when returning them; just return them in
	the first half of the FP register, as the ABI specifies.

2001-12-07  Daniel Jacobowitz  <drow@mvista.com>

	* valops.c (hand_function_call): Check for method arguments in
	TYPE_ARG_TYPES(), not in TYPE_FIELD ().

2001-12-07  Daniel Jacobowitz  <drow@mvista.com>

	* cp-valprint.c (cp_print_value): Preserve offset if
	the virtual base is outside of this object.

2001-12-07  Daniel Jacobowitz  <drow@mvista.com>

	* gdbtypes.c (finish_cv_type): New function.
	(check_typedef): Remove ``register'' keyword from argument. 
	Preserve const and volatile attributes across filling in
	opaque types.
	* gdbtypes.h (finish_cv_type): Add prototype.

	* hp-symtab-read.c (hpread_read_struct_type): Call finish_cv_type.
	* stabsread.c (read_struct_type): Likewise.
	* dwarf2read.c (read_structure_scope): Likewise.  Remove redundant
	assignment to die->type.

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

	* printcmd.c (print_scalar_formatted): Compare the length of the
	value against the lengths of the target's floating-point types,
	not the host's.  Add support for `long double'.

2001-12-07  Martin M. Hunt  <hunt@redhat.com>

	* configure.in: Check for sys/filio.h
	* configure: Rebuild.
	* config.in: Add HAVE_SYS_FILIO_H
	* ser-tcp.c: Conditionally include sys/filio.h.
	
2001-12-07  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.c (ui_out_table_begin): Initialize body_flag.
	(struct ui_out_table): New structure.  Move table fields to here.
	Rename headercurr to headernext.
	(struct ui_out): Remove table specific fields.  Add field table.
	(ui_out_table_begin, ui_out_table_body, ui_out_table_end): Update.
	(ui_out_table_header, ui_out_begin): Update.
	(verify_field_proper_position, verify_field_alignment): Update.
	(ui_out_new, clear_header_list, append_header_to_list): Update.
	(get_next_header): Rename get_curr_header.  Update comments and
	code.

2001-12-06  Andrew Cagney  <ac131313@redhat.com>

	* regcache.c (XCALLOC): Delete macro that should not have been
	added.

2001-12-07  Jiri Smid  <smid@suse.cz>

	* dwarf2cfi.c: New file.
	* dwarf2cfi.h: New file.
	* dwarf2read.c (dwarf_frame_offset, dwarf_frame_size): New variables.
	(dwarf_eh_frame_offset, dwarf_eh_frame_size): New variables.
	(dwarf2_read_section): Change to non static.
	(dwarf2_locate_sections): Add .debug_frame and .eh_frame section
	recognition.
	(FRAME_SECTION, EH_FRAME_SECTION): New define.
	* elfread.c (elf_symfile_read): Add call of frame informations build.
	* frame.h (frame_info): Add pointer to unwind_context.
	* symfile.h (dwarf2_build_frame_info): Add declaration.
	* gdbarch.sh (DWARF2_BUILD_FRAME_INFO): Add.
	* gdbarch.h, gdbarch.c: Regenerate.
	* Makefile.in: Add dwarf2cfi_h, dwarf2cfi.o
	* x86-64-tdep.c (i386_gdbarch_init): Initialize target vector to
	use debug frame info.

2001-12-06  Andrew Cagney  <ac131313@redhat.com>

	* defs.h: Do not include "mmalloc.h".
	(mcalloc, mmalloc, mrealloc, mfree): Delete declaration.
	* objfiles.c: Include "mmalloc.h".
	* utils.c: Include "mmalloc.h".
	(mmalloc, mfree, mrealloc, mmalloc): Make static, change PTR to
	void pointer.
	
2001-12-06  Andrew Cagney  <ac131313@redhat.com>

	* regcache.c (store_register, fetch_register): Only use
	fetch/store pseudo-register when function is present.  Assume
	target can handle all registers.
	(registers_changed): Simplify invalidate loop.
	(registers_fetched): Add comments.
	(register_buffer): Add regnum range assertion.  Remove code
	handling -ve regnum.
	(build_regcache): Make space for pseudo-registers when computing
	sizeof_registers.  Initialize register_offset.

	* gdbarch.sh (FETCH_PSEUDO_REGISTER): Change to a function with
	predicate.
	(STORE_PSEUDO_REGISTER): Ditto.
	* gdbarch.h, gdbarch.c: Re-generate.
	
2001-12-06  Jim Blandy  <jimb@redhat.com>

	* config/s390/nm-linux.h: Watchpoints are either continuable or
 	steppable, not both.  The S/390 has continuable watchpoints, so
 	delete the #definition of HAVE_STEPPABLE_WATCHPOINT.

2001-12-04  Pierre Muller  <muller@ics.u-strasbg.fr>

	* go32-nat.c (go32_fetch_registers): Remove call to register_buffer
	(which is now a static function in regcache.c)
	and use regcache_collect instead.

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

	* target.c (cleanup_target): Do not initialize to_query to
	return_zero.

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

	* s390-tdep.c (s390_get_frame_info): Recognize argument register
	spills that use the `stm' instruction.
	(is_arg_reg): New function.

2001-12-03 Keith Walker <keith.walker@arm.com>

	* gdbserver/low-linux.c (arm_register_u_addr): Added.
	(initialize_arch): Added for ARM target.
	* config/arm/nm-linux.h (U_REGS_OFFSET): Defined.
	(REGISTER_U_ADDR): Defined.
	* config/arm/tm-linux.h (ARM_GNULINUX_TARGET): Defined.

2001-12-04  Corinna Vinschen  <vinschen@redhat.com>

	* arm-tdep.c (arm_skip_prologue): Always skip prologue by scanning
	the prologue if source is assembler.

2001-12-04  Jackie Smith Cashion  <jsmith@redhat.com>

	* MAINTAINERS (write-after-approval): Add self.

	* d10v-tdep.c (d10v_gdbarch_init): Change size of long long to 8 bytes.
	
	From Andrew Cagney  <cagney@redhat.com>:
        * d10v-tdep.c (d10v_frame_chain_valid): Check if the caller's PC
        is in the entry function.
        (d10v_use_struct_convention): Store multi-field struct and union
        return values on the stack.
	
2001-12-04  Jim Blandy  <jimb@redhat.com>

	* s390-tdep.c (s390_get_frame_info): Recognize spills of reg
	arguments into their stack slots.

	* s390-tdep.c (s390_get_frame_info): More doc fixes.

	* s390-tdep.c (s390_get_frame_info): Doc fixes.

2001-12-04  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (cris_regnums): Add DCCR_REGNUM for completeness.
	(cris_examine): Add comment about solib prologue parsing.
	(bdap_prefix): Read offset with correct signedness and size.
	(move_to_preg_op): Don't rely on register numbering for register size.
	(none_reg_mode_move_from_preg_op): Ditto.

2001-12-04  Orjan Friberg  <orjanf@axis.com>

	* solib.c (solib_open): Make path relative if search for absolute path
	failed.  If search for relative path in solib_search_path failed, fall
	back to search for basename only.

2001-12-03  Martin M. Hunt  <hunt@redhat.com>

	* serial.h: Add a note to serial_open.

	* ser-tcp.c (tcp_open): Rewrite to use a non-blocking connect.
	Allow UI and CLI to abort connect.  Instead of trying 15 times
	with very long timeouts, just try one connect with a maximum timeout
	of 15 seconds.

2001-12-03  Kevin Buettner  <kevinb@redhat.com>

	* config/powerpc/tm-macos.h (solib.h): Include.
	* config/powerpc/tm-ppc-eabi.h (solib.h): Include.

2001-12-03  Michael Snyder  <msnyder@redhat.com>

	* symtab.c (search_symbols): Make sure alloca size is big enough.

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

	* MAINTAINERS: Prune m68k targets down to just m68k-elf.

2001-12-03  Jim Blandy  <jimb@redhat.com>

	* s390-tdep.c (s390_get_frame_info): Don't used fextra_info to set
 	orig_sp if it's not initialized.

2001-11-30  Pierre Muller  <muller@ics.u-strasbg.fr>

	* findvar.c (locate_var_value): Specify in which register a register
	variable is stored.

2001-11-30  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (mappings): Correct position of XMM registers,
	based on FXSAVE instruction structure.

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

	* jv-lang.c (get_java_class_symtab): Use xmmalloc instead of
	mmalloc.

	* coffread.c, dbxread.c, elfread.c, hp-psymtab-read.c, hpread.c,
	nlmread.c, objfiles.c, os9kread.c, somread.c, source.c, symfile.c,
	symmisc.c, xcoffread.c: Use xmfree instead of mfree.

	* jv-lang.c (add_class_symtab_symbol): Use xmrealloc instead of
	mrealloc.

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

	* i386-tdep.c (i386go32_frame_saved_pc): New function.
	* config/i386/tm-go32.h (i386go32_frame_saved_pc): Declare.
	(FRAME_SAVED_PC): Redefine to i386go32_frame_saved_pc.

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

	* defs.h: Update comment on HOST_BYTE_ORDER.
	* config/xm-aix4.h: Delete definition of HOST_BYTE_ORDER.
	* config/xm-nbsd.h, config/alpha/xm-alphalinux.h: Ditto.
	* config/alpha/xm-alphaosf.h, config/alpha/xm-fbsd.h: Ditto.
	* config/arm/xm-linux.h, config/i386/xm-cygwin.h: Ditto.
	* config/i386/xm-i386bsd.h, config/i386/xm-i386gnu.h: Ditto.
	* config/i386/xm-i386lynx.h, config/i386/xm-i386m3.h: Ditto.
	* config/i386/xm-i386mach.h, config/i386/xm-i386v.h: Ditto.
	* config/i386/xm-ptx.h, config/i386/xm-symmetry.h: Ditto.
	* config/ia64/xm-aix.h, config/ia64/xm-linux.h: Ditto.
	* config/m68k/xm-3b1.h, config/m68k/xm-apollo68b.h: Ditto.
	* config/m68k/xm-apollo68v.h, config/m68k/xm-delta68.h: Ditto.
	* config/m68k/xm-dpx2.h, config/m68k/xm-hp300bsd.h: Ditto.
	* config/m68k/xm-hp300hpux.h, config/m68k/xm-m68k.h: Ditto.
	* config/m68k/xm-m68klynx.h, config/m68k/xm-sun2.h: Ditto.
	* config/m68k/xm-sun3.h, config/m88k/xm-dgux.h: Ditto.
	* config/m88k/xm-m88k.h, config/mips/xm-irix3.h: Ditto.
	* config/mips/xm-irix5.h, config/mips/xm-linux.h: Ditto.
	* config/mips/xm-mips.h, config/mips/xm-mipsm3.h: Ditto.
	* config/mips/xm-mipsv4.h, config/mips/xm-news-mips.h: Ditto.
	* config/mips/xm-riscos.h, config/pa/xm-hppab.h: Ditto.
	* config/pa/xm-hppah.h, config/powerpc/xm-linux.h: Ditto.
	* config/romp/xm-rtbsd.h, config/rs6000/xm-rs6000.h: Ditto.
	* config/rs6000/xm-rs6000ly.h, config/s390/xm-linux.h: Ditto.
	* config/sparc/xm-sparc.h, config/sparc/xm-sparclynx.h: Ditto.
	* config/vax/xm-vax.h: Ditto.

	* config/a29k/tm-vx29k.h: Add #error as file depends on
	HOST_BYTE_ORDER.
	* config/a29k/tm-a29k.h: Ditto.
	* MAINTAINERS (a29k-amd-udi): Document as broken.

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

	* Makefile.in (tm-news.h, tm-isi.h, xm-news1000.h): Delete.
	(ALLDEPFILES): Delete news-xdep.c.
	(news-xdep.o): Delete.
	(isi-xdep.o): Delete.
	* configure.tgt: Delete m68*-isi-*, m68*-sony-*, m68*-rom68k-*,
	m68*-*bug-*, m68*-monitor-* and m68*-est-* targets.
	* configure.host: Delete m68030-sony-*, m68*-isi-* and m68*-sony-*
	Hosts.
	* m68k-tdep.c (isi_skip_prologue): Delete function.
	* news-xdep.c: Delete file.
	* isi-xdep.c: Delete file.
	* config/m68k/isi.mh: Delete file.
	* config/m68k/isi.mt: Delete file.
	* config/m68k/news.mh: Delete file.
	* config/m68k/news.mt: Delete file.
	* config/m68k/news1000.mh: Delete file.
	* config/m68k/nm-news.h: Delete file.
	* config/m68k/tm-isi.h: Delete file.
	* config/m68k/tm-news.h: Delete file.
	* config/m68k/xm-isi.h: Delete file.
	* config/m68k/xm-news.h: Delete file.
	* config/m68k/xm-news1000.h: Delete file.

	* kdb-start.c: Delete file.
	* stuff.c: Delete file.

	* NEWS: Note that a29k-nyu-sym1 and a29k-*-kern* were deleted.
	* configure.host: Delete a29k-*-* host.
	* configure.tgt: Delete a29k-*-kern* and a29k-*-sym1* targets.
	* config/a29k/a29k-kern.mt: Delete file.
	* config/a29k/nm-ultra3.h: Delete file.
	* config/a29k/tm-ultra3.h: Delete file.
	* config/a29k/ultra3.mh: Delete file.
	* config/a29k/ultra3.mt: Delete file.
	* config/a29k/xm-ultra3.h: Delete file.

	* NEWS: Note that i[3456]86-*-sunos* was deleted.
	* Makefile.in (sun386-nat.o): Delete.
	* configure.tgt: Delete i[3456]86-*-sunos* target.
	* configure.host: Delete i[3456]86-*-sunos* host.
	* sun386-nat.c: Delete.file.
	* config/i386/nm-sun386.h: Delete file.
	* config/i386/sun386.mh: Delete file.
	* config/i386/sun386.mt: Delete file.
	* config/i386/tm-sun386.h: Delete file.
	* config/i386/xm-sun386.h: Delete file.

	* NEWS: Note that ns32k-*-mach3*, ns32k-umax-*, ns32k-utek-sysv*
	and ns32k-utek-* were deleted.
	* Makefile.in (ultra3-nat.o, ultra3-xdep.o): Delete.
	(umax-xdep.o, ns32km3-nat.o): Delete.
	* configure.tgt: Delete ns32k-*-mach3*, ns32k-utek-sysv* and
	ns32k-utek-* targets.
	* configure.host: Delete ns32k-*-mach3*, ns32k-umax-* and
	ns32k-utek-sysv* hosts.
	* ultra3-nat.c: Delete file.
	* ultra3-xdep.c: Delete file.
	* umax-xdep.o: Delete file.
	* ns32km3-nat: Delete file.
	* config/ns32k/merlin.mh: Delete file.
	* config/ns32k/merlin.mt: Delete file.
	* config/ns32k/nm-umax.h: Delete file.
	* config/ns32k/ns32km3.mh: Delete file.
	* config/ns32k/ns32km3.mt: Delete file.
	* config/ns32k/tm-merlin.h: Delete file.
	* config/ns32k/tm-ns32km3.h: Delete file.
	* config/ns32k/umax.mh: Delete file.
	* config/ns32k/umax.mt: Delete file.
	* config/ns32k/xm-merlin.h: Delete file.
	* config/ns32k/xm-ns32km3.h: Delete file.
	* config/ns32k/xm-umax.h: Delete file.
	
	* NEWS: Note that m88*-harris-cxux* was deleted.
	* configure.host: Delete m88*-harris-cxux* host.
	* configure.tgt: Delete m88*-harris-cxux* target.
	* config/m88k/cxux.mh: Delete file.
	* config/m88k/cxux.mt: Delete file.
	* config/m88k/nm-cxux.h: Delete file.
	* config/m88k/tm-cxux.h: Delete file.
	* config/m88k/xm-cxux.h: Delete file.

	* NEWS: Note that powerpc-*-netware*, powerpcle-*-cygwin* and
	powerpcle-*-solaris* were deleted.
	* configure.host: Delete powerpcle-*-cygwin* and
	powerpcle-*-solaris* hosts.
	* configure.tgt: Delete powerpc-*-netware*, powerpcle-*-cygwin*
	and powerpcle-*-solaris* targets.
	* config/powerpc/cygwin.mh: Delete file.
	* config/powerpc/cygwin.mt: Delete file.
	* config/powerpc/nm-solaris.h: Delete.file.
	* config/powerpc/ppc-nw.mt: Delete file.
	* config/powerpc/solaris.mh: Delete file.
	* config/powerpc/solaris.mt: Delete file.
	* config/powerpc/tm-cygwin.h: Delete file.
	* config/powerpc/tm-ppc-nw.h: Delete file.
	* config/powerpc/tm-solaris.h: Delete file.
	* config/powerpc/xm-cygwin.h: Delete file.
	* config/powerpc/xm-mpw.h: Delete file.
	* config/powerpc/xm-solaris.h: Delete file.

	* NEWS, MAINTAINERS: Note that w65-*-* was deleted.
	* configure.tgt: Delete w65-*-*.
	* Makefile.in (w65-tdep.o): Delete.
	* config/w65/tm-w65.h: Delete file.
	* config/w65/w65.mt: Delete file.
	* w65-tdep.c: Delete file.
	
	* NEWS: Mention deleted tic80-*-*.
	* configure.tgt: Delete tic80-*-*.
	* Makefile.in (tic80-tdep.o): Delete.
	* config/tic80/tic80.mt: Delete.
	* config/tic80/tm-tic80.h: Delete.
	* tic80-tdep.c: Delete.
	* MAINTAINERS: Note that tic80 was deleted.

2001-11-30  Kevin Buettner  <kevinb@redhat.com>

	* ppc-linux-tdep.c (solib-svr4.h): Include.
	(ppc_linux_svr4_fetch_link_map_offsets): New function.
	* ppc-tdep.h (ppc_linux_svr4_fetch_link_map_offsets): Declare.
	* rs6000-tdep.c (solib-svr4.h): Include.
	(rs6000_gdbarch_init): Set up ppc_linux_svr4_fetch_link_map_offsets()
	as the link map offsets fetcher.

	* config/powerpc/aix.mt (TDEPFILES): Add solib-svr4.o.
	* config/powerpc/macos.mt (TDEPFILES): Likewise.
	* 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.
	* config/rs6000/aix4.mt (TDEPFILES): Likewise.
	* config/rs6000/rs6000.mt (TDEPFILES): Likewise.
	* config/rs6000/rs6000lynx.mt (TDEPFILES): Likewise.

2001-11-30  Kevin Buettner  <kevinb@redhat.com>

	From Louis Hamilton  <hamilton@redhat.com>:
	* arm-tdep.c (solib-svr4.h): Include.
	(arm_linux_svr4_fetch_link_map_offsets): New function.
	* config/arm/tm-linux.h (SVR4_FETCH_LINK_MAP_OFFSETS): Define.
	(arm_linux_svr4_fetch_link_map_offsets): Declare.

2001-11-30  Daniel Jacobowitz  <drow@mvista.com>

	* values.c (value_primitive_field): Add embedded_offset to the
	address of structure members.
	* gnu-v3-abi.c (gnuv3_rtti_type): Cast to base type before
	attempting to access vtable pointer.  Set using_enc_p if we cast.
	(gnuv3_virtual_fn_field): Call value_cast with structure rather than
	structure pointer.  Cast to base type before attempting to access
	vtable pointer.

2001-11-29  Elena Zannoni  <ezannoni@redhat.com>

	* Makefile.in (ppc-linux-nat.o): Add dependency on ppc-tdep.h.

	* ppc-tdep.h (PPC_GPLAST_REGNUM): Define.

	* ppc-linux-nat.c: Include ppc-tdep.h.
	(ppc_register_u_addr): Don't use the static array regmap[],
	dynamically define the mapping instead.
	(supply_gregset): Ditto.
	(fill_gregset): Ditto.
	(COPY_REG): Delete macro defintion.
	(regmap): Delete array.

2001-11-29  Jim Blandy  <jimb@redhat.com>

	Tighten up GDB's support for returning structs by value.
	* s390-tdep.c (s390_use_struct_convention): New function.
	(s390_gdbarch_init): Register it as the S/390's
 	USE_STRUCT_CONVENTION method.  Register
	generic_cannot_extract_struct_value_address as our
	EXTRACT_STRUCT_VALUE_ADDRESS method.
	* arch-utils.c (generic_cannot_extract_struct_value_address): New
 	function.
	* arch-utils.h: Add corresponding prototype.

	* values.c (value_being_returned): Make error message a proper
 	sentence.

2001-11-27 Keith Walker <keith.walker@arm.com>

	* dwarf2read.c (read_attribute_value): New function to handle
	DW_FORM_indirect
	(read_attribute): uses read_attribute_value

2001-11-29  Jim Blandy  <jimb@redhat.com>

	* s390-tdep.c (s390_frame_saved_pc_nofix): If the prologue didn't
	save the return address register, assume that the return address
	is still in there.

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

	* MAINTAINERS: Clarify obvious fix a little (as suggested by Eli
	Zaretskii).

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

	* mn10300-tdep.c (mn10300_analyze_prologue): Doc fixes.

2001-11-27  Jim Blandy  <jimb@redhat.com>

	* s390-tdep.c: Get frame chains and saved pc values properly from
 	dummy frames.
	(s390_frame_saved_pc_nofix): if `*fi' is a dummy frame, get the
 	saved PC from the dummy frame's registers.
	(s390_frame_chain): Same for the saved SP.
	(s390_gdbarch_init): Register `generic_save_dummy_frame_tos' as
 	the `SAVE_DUMMY_FRAME_TOS' method, so the dummy frame's `top' gets
 	set correctly.

	* s390-tdep.c (s390_frame_chain): Remember that the SP's element
	of the frame's saved_regs array is special.

	* s390-tdep.c (register_names): Call the general-purpose registers
	`r0' -- `r15', and the floating-point registers `f0' -- `f15', to
	match the assembly language.

2001-11-26 Pierre Muller  <muller@ics.u-strasbg.fr>

	* config/i386/tm-cygwin.h: Define HAVE_SSE_REGS if
	HAVE_CONTEXT_EXTENDED_REGISTERS is defined.
	* win32-nat.c: Define CONTEXT_DEBUGGER_DR that will also include
	extended registers if HAVE_SSE_REGS is defined.
	(mappings array): Add offset of extended registers.
	(thread_rec): Use new CONTEXT_DEBUGGER_DR macro.

2001-11-26  Tom Tromey  <tromey@redhat.com>

	* NEWS: Updated.
	* event-loop.c (start_event_loop): Call
	after_char_processing_hook.
	* event-top.h (after_char_processing_hook): Declare.
	* event-top.c (rl_callback_read_char_wrapper): Call
	after_char_processing_hook.
	(after_char_processing_hook): New global.
	* top.c (operate_saved_history): New global.
	(gdb_rl_operate_and_get_next): New function.
	(init_main): Add the operate-and-get-next defun.
	(gdb_rl_operate_and_get_next_completion): New function.

2001-11-26  Tom Tromey  <tromey@redhat.com>

	* NEWS: Update for --args.
	* infcmd.c (construct_inferior_arguments): Moved from ...
	* fork-child.c: ... here.

2001-11-26  Jim Blandy  <jimb@redhat.com>

	* symtab.c (find_pc_sect_line): Revert change of 2001-11-13; add
	comment explaining that hand-written assembly code can have line
	number info but no debug info for an enclosing function.

2001-11-26  Jakub Jelinek  <jakub@redhat.com>

	* sparc-nat.c (fetch_inferior_registers): Don't rely
	on CORE_ADDR being 32-bit.
	(store_inferior_registers): Likewise.

2001-11-25  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/config.sed: Fix an error in etc/ at "make install"
	time on non-LFN systems where standards*.inf* expands to nothing.

	* go32-nat.c (save_npx): Avoid a warning from GCC 3.x.

2001-11-24  Pierre Muller  <muller@ics.u-strasbg.fr>
	    Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (struct so_stuff): Add objfile *objfile field needed to
	be able to remove the DLL when unloaded.  Remove unused last field.
	(handle_unload_dll): New function to handle unloading of DLL.
	(solib_symbols_add): Change return type to struct objfile *.
	(get_child_debug_event): Call handle_unload_dll function.

2001-11-24  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (_initialize_check_for_gdb_ini): New function.
	* config/i386/xm-cygwin.h: Remove obsolete handling of __CYGWIN32__.
	(GDBINIT_FILENAME): Remove.

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

	Add x86 OpenBSD native configuration.
	* config/i386/obsd.mt, config/i386/tm-obsd.h, config/i386/obsd.mh,
	config/i386/nm-obsd.h: New files.
	* configure.host (i[3456]86-*-openbsd*): New host.
	* configure.tgt (i[3456]86-*-openbsd*): New target.
	* NEWS: Update.

2001-11-21  GDB Administrator  <gdbadmin@sourceware.cygnus.com>

	* GDB 5.1 was released.
	
2001-11-21  Tom Tromey  <tromey@redhat.com>

	Fix for PR gdb/209, PR gdb/156:
	* gdbarch.c, gdbarch.h: Rebuilt.
	* gdbarch.sh: Added `construct_inferior_arguments'.
	* cli/cli-decode.h (cmd_list_element): Added pre_show_hook.
	Typo fix.
	* cli/cli-setshow.c (do_setshow_command): Call the pre_show_hook.
	* infcmd.c (_initialize_infcmd): Set sfunc on `set args' command.
	(inferior_argc, inferior_argv): New globals.
	(notice_args_set): New function.
	(set_inferior_args): Clear inferior_argc and inferior_argv.
	(set_inferior_args_vector): New function.
	(get_inferior_args): Handle inferior argument vector.
	(run_command): Use get_inferior_args().
	(notice_args_read): New function.
	(_initialize_infcmd): Don't call set_inferior_args.
	* command.h: Typo fix.
	(cmd_list_element): Added pre_show_hook.
	* main.c (captured_main): Added --args option.
	(print_gdb_help): Document --args.
	* inferior.h (construct_inferior_arguments): Declare.
	(set_inferior_args_vector): Likewise.
	* fork-child.c (construct_inferior_arguments): New function.

2001-11-21  Kevin Buettner  <kevinb@redhat.com>

	* lin-lwp.c (lin_lwp_attach_lwp): Make sure SIGCHLD is in set of
	blocked signals.

	* lin-lwp.c (lin_lwp_attach_lwp): Mark main thread as stopped.

2001-11-20  Jim Blandy  <jimb@redhat.com>

	* target.h (TARGET_RANGE_PROFITABLE_FOR_HW_WATCHPOINT): Delete
	default definition; this is never used.

2001-11-20  Keith Seitz  <keiths@redhat.com>

	* varobj.c (c_value_of_child): Release memory for "name" when
	finshed using it.
	(c_type_of_child): Likewise.
	(cplus_value_of_child): Isolate the use of name_of_child to
	one case that needs it.
	Release memory for "name" when finished using it.

2001-11-20  Keith Seitz  <keiths@redhat.com>

	* top.c (gdb_init): Call init_ui_hook before initializing
	the default UI.

2001-11-19  Elena Zannoni  <ezannoni@redhat.com>

	* config/powerpc/nm-linux.h (ppc_register_u_addr): Add extern 
        declaration.

2001-11-19  Elena Zannoni  <ezannoni@redhat.com>

	* ppc-linux-nat.c (COPY_REG): Use regcache_collect instead of
	accessing registers[].
	(fill_fpregset): Ditto.

2001-11-19  Elena Zannoni  <ezannoni@redhat.com>

	* infptrace.c (fetch_register): Dynamically allocate buffer for
	register.
	(store_register): Use regcache_collect, instead of accessing the
	register buffer directly.

2001-11-19  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (find_proc_desc): Add cur_frame argument.  Pass
	cur_frame to heuristic_proc_desc.
	(heuristic_proc_desc): Add cur_frame argument.  Do not read SP
	if cur_frame == 0.
	(after_prologue): Pass cur_frame == 0 to find_proc_desc.
	(mips_frame_chain): Pass cur_frame == 1 to find_proc_desc.
	(mips_init_extra_frame_info): Likewise.

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

	* defs.h (return_to_top_level): Comment.

Mon Nov 19 14:58:52 2001  Andrew Cagney  <cagney@redhat.com>

	* remote.c (remote_open_1, remote_async_open_1): Use ISO C string
 	concatenation for error parameter.
	(remote_cisco_open): Ditto.

2001-11-19  Keith Seitz  <keiths@redhat.com>

	* varobj.c (c_value_of_child): Use the wrapper function,
	gdb_value_struct_elt.
	(cplus_value_of_child): Likewise.

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

	* i386-tdep.c (i386_gdbarch_init): Initialize num_regs.
	* config/i386/tm-i386.h (NUM_REGS): Delete.

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

	* i386-linux-nat.c (fill_gregset): Fix botched regcache_collect()
	conversion for I386_LINUX_ORIG_EAX_REGNUM.

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

	* config/i386/embed.mt (TM_FILE): Set to tm-i386.h.
	* config/i386/tm-embed.h: Delete.

2001-11-17  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (distclean): Explicitly delete Makefile et.al. in
	gdbserver sub directory.

2001-11-17  Andrew Cagney  <ac131313@redhat.com>

	* README: Mention need for alloca().  Mention problems with
	alpha-dec-osf4.0e.  Clarify that comments refer to GDB 5.1.

2001-11-17  Kevin Buettner  <kevinb@redhat.com>

	* i386-linux-nat.c (fill_gregset): Use regcache_collect() instead
	of accessing registers[] directly.

2001-11-17  Kevin Buettner  <kevinb@redhat.com>

	* i386-linux-nat.c (fill_gregset): Don't invoke read_register_gen()
	when fetching ORIG_EAX.

2001-11-17  Daniel Jacobowitz  <drow@mvista.com>

	* arm-linux-nat.c: Don't include <asm/ptrace.h>.
	(fetch_register): Use elf_gregset_t instead of struct pt_regs.
	(fetch_regs): Likewise.
	(store_register): Likewise.
	(store_regs): Likewise.

2001-11-17  Daniel Jacobowitz  <drow@mvista.com>

	* sparc-linux-nat.c (fill_gregset): Replace read_register_gen
	with regcache_collect.
	(fill_fpregset): Likewise.

2001-11-17  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in: Add mips-linux-nat.c, mips-linux-tdep.c,
	and sparc-linux-nat.c to ALLDEPFILES.  Add dependencies.
	* config/sparc/linux.mh: Add sparc-linux-nat.o to NATDEPFILES.
	* sparc-linux-nat.c: New file, from Mark Kettenis.

2001-11-16  Jakub Jelinek  <jakub@redhat.com>

	* dwarf2read.c (dwarf_str_buffer): New.
	(struct dwarf2_pinfo): Add dwarf_str_buffer and dwarf_str_size.
	(DWARF_STR_BUFFER, DWARF_STR_SIZE): Define.
	(dwarf2_has_info): Clear dwarf_str_offset.
	(dwarf2_build_psymtabs): Read .debug_str section if present.
	(dwarf2_build_psymtabs_hard): Save DWARF_STR_BUFFER and
	DWARF_STR_SIZE.
	(psymtab_to_symtab_1): Restore DWARF_STR_BUFFER and DWARF_STR_SIZE.
	(read_attribute): Handle DW_FORM_strp.
	(read_n_bytes, read_string): Remove HOST_CHAR_BIT != 8
	handling code.
	(read_indirect_string): New.
	(dump_die): Handle DW_FORM_strp.

2001-11-16  Jim Blandy  <jimb@redhat.com>

	* s390-tdep.c: Tweak argument-passing to match GCC bugs.
	(is_float_singleton, is_struct_like, is_float_like): New
 	functions, that isolate the weirdness.
	(is_double_or_float, is_simple_arg, pass_by_copy_ref,
 	is_double_arg): Use is_struct_like and is_float_like, rather than
 	testing the type codes ourselves.
	(s390_push_arguments): When passing args on the stack, align each
 	on to a four-byte boundary, regardless of what the type itself
 	needs.

2001-11-16  Ben Harris  <bjh21@netbsd.org>

	* Makefile.in (os9kread.o): Replace $< with autoconf-approved
	$(srcdir)/....
	(procfs.o): Ditto.
	(z8k-tdep.o): Ditto.

2001-11-16  Ben Harris  <bjh21@netbsd.org>

	* MAINTAINERS (write-after-approval): Add self.

2001-11-15  Jim Blandy  <jimb@redhat.com>

	* s390-tdep.c (is_simple_arg): Structs and unions exactly eight
	bytes long should be handled as DOUBLE_ARGs; don't recognize them
	as SIMPLE_ARGs.

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

	* remote.c (struct packet_reg): Declare.
	(struct remote_state): Add fields sizeof_g_packet and g_packet.
	(init_remote_state): Initialize sizeof_g_packet and g_packet.
	(free_remote_state): Free g_packet.
	(packet_reg_from_pnum, packet_reg_by_regnum): New functions.
	(remote_wait): Use above instead of gdbarch methods
	REGISTER_RAW_SIZE and REGISTER_BYTES.
	(remote_async_wait): Ditto.
	(remote_fetch_registers, remote_store_registers): Ditto.
	(store_register_using_P): Ditto.
	
2001-11-15  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (_initialize_remote): Don't multi-arch swap tty_input.
	Second attempt.

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

	* utils.c (phex_nz): For default case, set str to phex_nz return
	value.
	(phex): Ditto.

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

	* TODO (register_buffer): Delete.
	* regcache.c (register_buffer): Make static.
	(regcache_collect): New function.
	* regcache.h (register_buffer): Delete declaration.
	(regcache_collect): Declare.
	* remote.c (store_register_using_P): Rewrite using
	regcache_collect.
	(remote_store_registers): Ditto.
	* go32-nat.c (store_register): Ditto.

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

	* remote.c (struct remote_state): Declare.
	(get_remote_state): New function.
	(init_remote_state): New function.
	(remote_gdbarch_data_handle): New global.
	(build_remote_packet_sizes): Delete function, moved to
	init_remote_state.
	(register_remote_packet_sizes): Delete function.
	(actual_register_packet_size, remote_packet_size): Moved to
	``struct remote_state''.
	(PBUFSIZE): Delete. Replaced by rs->remote_packet_size.
	(free_remote_state): New function.
	(get_memory_packet_size, get_memory_read_packet_size)
	(set_thread, remote_unpack_thread_info_response)
	(remote_get_threadinfo, parse_threadlist_response)
	(remote_get_threadlist, remote_current_thread)
	(remote_threads_info, remote_threads_extra_info)
	(extended_remote_restart, get_offsets)
	(get_offsets, remote_check_symbols, remote_open_1)
	(remote_async_open_1, remote_detach, remote_async_detach)
	(remote_resume, remote_async_resume, remote_wait)
	(remote_async_wait, remote_fetch_registers)
	(store_register_using_P, remote_store_registers)
	(check_binary_download, putpkt_binary)
	(remote_insert_breakpoint, remote_remove_breakpoint)
	(remote_insert_watchpoint, remote_remove_watchpoint)
	(remote_insert_hw_breakpoint, remote_remove_hw_breakpoint)
	(compare_sections_command, remote_query)
	(remote_rcmd, remote_rcmd, packet_command)
	(remote_info_process): Update.

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

	* remote.c: Include "gdb_assert.h".
	(tty_input): Wire buffer to 400 bytes.
	(readsocket): Check tty_input doesn't overflow.
	(build_remote_gdbarch_data, _initialize_remote): Don't multi-arch
	tty_input.

2001-11-14  Michael Snyder  <msnyder@redhat.com>

	* d10v-tdep.c (d10v_pointer_to_address): Use new type flag
	TYPE_FLAG_CODE_SPACE to recognize a pointer that has been cast
	into the instruction address space.
	* Makefile.in (doublest.o): Add dependency on gdbtypes.h.

2001-11-14  Michael Snyder  <msnyder@redhat.com>
	Add address space identifiers to expression language for types.
	* c-exp.y (space_identifier, cv_with_space_id, 
	const_or_volatile_or_space_identifier_noopt, 
	const_or_volatile_or_space_identifier): New terminals.
	(ptype): Accept const_or_volatile_or_space_identifier.
	(typebase): Accept const_or_volatile_or_space_identifier.
	* c-typeprint.c (c_type_print_cv_qualifier): Rename to
	c_type_print_modifier.  Handle address space modified types.
	* gdbtypes.h (TYPE_FLAG_CODE_SPACE, TYPE_FLAG_DATA_SPACE):
	New type flags.
	(struct type): Add new field as_type for addr-space qualified types.
	(TYPE_AS_TYPE): New macro, retrieves the chain of types that are
	identical to this one except for address-space qualification.
	* gdbtypes.c (alloc_type): Initialize new field 'as_type'.
	(address_space_name_to_int): New function.
	(address_space_int_to_name): New function.
	(make_type_with_address_space): New function.
	(make_cv_type): Handle as_type field of new struct type object.
	* parse.c (check_type_stack_depth): New function.
	(push_type_address_space): New function.
	(follow_types): Handle types with address-space qualifier.
	* parser-defs.h (enum type_pieces): Add enum tp_space_identifier.

2001-11-14  Jim Blandy  <jimb@redhat.com>

	* s390-tdep.c (s390_pop_frame_regular): On the S/390, the frame
 	pointer and the SP are often the same, so we can't pop the frame
 	by setting the SP to the FP; we need to get the old SP from
	saved_regs.

	* s390-tdep.c (s390_extract_return_value): Returned `float' values
 	can simply be copied bitwise from the registers into the value
 	object's buffer.

	* s390-tdep.c (s390_get_frame_info): Initialize SP's element of
	the frame's saved_regs array correctly.

	* symfile.c (simple_read_overlay_table): Make sure we can find
	both `_novlys' and `_ovly_table' before we try anything else;
	print a helpful error message.
	(simple_overlay_update): No need to print error message here.

2001-11-14  Michael Snyder  <msnyder@redhat.com>

	* Makefile.in (doublest.o): Add dependency on gdbtypes.h.

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

	* arm-tdep.c (arm_register_type): New function.
	(arm_register_convertible): Delete.
	(arm_register_convert_to_virtual): Delete.
	(arm_register_convert_to_raw): Delete.
	* config/arm/tm-arm.h (REGISTER_CONVERTIBLE): Delete.
	(REGISTER_CONVERT_TO_VIRTUAL): Delete.
	(REGISTER_CONVERT_TO_RAW): Delete.
	(REGISTER_VIRTUAL_TYPE): Redefine as call to arm_register_type.
	(arm_register_type): Declare.
	
2001-11-13  Elena Zannoni  <ezannoni@redhat.com>

	From Andrew Cagney <cagney@redhat.com>:
	* gdbtypes.h (builtin_type_int128, builtin_type_uint128): Declare.
	* gdbtypes.c (_initialize_gdbtypes, build_gdbtypes): Initialize
	new builtin types.  

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

	* s390-tdep.c: Rewrite inferior function call code.  This may
	break zSeries support; that should be fixed soon.
	#include "gdb_assert.h".
	(is_integer_like, is_pointer_like, is_simple_arg,
	pass_by_copy_ref, extend_simple_arg, is_double_arg, round_up,
	round_down, alignment_of): New functions.
	(s390_push_arguments): Rewritten to handle passing large arguments
	by value, and to make more readable.

	* s390-tdep.c (s390_pop_frame): Call generic_pop_current_frame, to
	interact correctly with generic dummy frames.
	(s390_pop_frame_regular): Move the guts of the frame-popping code
	to here, to be called by generic_pop_current_frame.  Use the
	frame's saved_regs array; this works for `return' as well as
	inferior function calls.

	* s390-tdep.c (s390_gdbarch_init): Register the function
	`standard_coerce_float_to_double', since GCC for the S/390 follows
	the standard rules for passing floats.

	* valops.c (default_coerce_float_to_double,
	standard_coerce_float_to_double): Doc fixes.

	Patch from Peter Schauer:
	
	* symtab.c (find_pc_sect_line): If we can't find the function
	containing PC, we certainly won't have line number information for
	that location, so return zero immediately.

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

	* config/i960/tm-nindy960.h (REGISTER_CONVERTIBLE)
	(REGISTER_CONVERT_TO_RAW, REGISTER_CONVERT_TO_VIRTUAL): Delete
	undef.
	* i960-tdep.c (i960_register_type): New function.
	* config/i960/tm-i960.h (REGISTER_CONVERTIBLE): Delete.
	(REGISTER_CONVERT_TO_VIRTUAL): Delete.
	(REGISTER_CONVERT_TO_RAW): Delete.
	(REGISTER_VIRTUAL_TYPE): Update.  Call i960_register_type.

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

	* m88k-tdep.c (m88k_register_type): New function.
	* config/m88k/tm-m88k.h (REGISTER_CONVERTIBLE): Delete.
	(REGISTER_CONVERT_TO_VIRTUAL): Delete.
	(REGISTER_CONVERT_TO_RAW): Delete.
	(m88k_register_type): Declare.
	(REGISTER_VIRTUAL_TYPE): Update.  Call m88k_register_type.

2001-11-11  Mark Kettenis  <kettenis@elgar.my.domain>

	* i386-tdep.h (FPU_REG_RAW_SIZE): Define unconditionally.
	* i387-nat.c, i387-tdep.c: Unconditionally include "i386-tdep.h".
	* config/i386/tm-i386.h (FPU_REG_RAW_SIZE): Removed.
	(SIZEOF_FPU_REGS): Don't use FPU_REG_RAW_SIZE here.

2001-11-12  Jim Blandy  <jimb@redhat.com>

	Patch from Andreas Schwab <schwab@suse.de>:
	* eval.c (evaluate_subexp_standard): Fix memory leak: use alloca
	instead of xmalloc.

2001-11-12  Jim Blandy  <jimb@redhat.com>

	* corefile.c (write_memory_unsigned_integer,
	write_memory_signed_integer): New functions.
        (write_memory): Move to be with other write_memory_* functions.
	* gdbcore.h (write_memory_unsigned_integer,
	write_memory_signed_integer): New declarations.

2001-11-11  Geoffrey Keating  <geoffk@redhat.com>

	* dwarf2read.c (dwarf_decode_lines): Properly deal with
	unknown standard opcodes.

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

	* README (alpha-dec-osf5.1): Mention -DUSE_LDR_ROUTINES.
	(sparcv9-sun-solars2.8): Mention problem with 64 bit GCC 3.0.x.
	(i586-sco-sysv5uw7.1.1): Mention problem with threads.

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

	From Mark Kettenis  <kettenis@gnu.org>:
	* breakpoint.c (breakpoint_re_set_one): Don't discard SHLIB
	breakpoints when they fail.

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

	* printcmd.c, valprint.c, language.c, linespec.c, infcmd.c,
	gnu-nat.c, findvar.c, expprint.c, typeprint.c, stack.c, top.c:
	Replace value_ptr with struct value.

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

	* c-valprint.c, ch-lang.c, ch-valprint.c, cp-valprint.c,
	p-valprint.c, scm-exp.c, scm-lang.c, scm-valprint.c: Replace
	value_ptr with struct value.
	
2001-11-10  Andrew Cagney  <ac131313@redhat.com>

	* eval.c: Replace most occurances of value_ptr with struct value.

2001-11-09  Jim Blandy  <jimb@redhat.com>

	* s390-tdep.c: Don't use a call dummy.
	(s390_fix_call_dummy, s390_pc_in_call_dummy): Delete.
	(s390_push_return_address): Put the address of the inferior call
 	breakpoint in r14.
	(s390_gdbarch_init):
	- Provide trivial definition of s390_call_dummy_words; register it
	  with the gdbarch appropriately.
	- Delete S390x_call_dummy_words.
  	- Gather inferior-call-related settings into a group.
  	- Use generic dummy frames.
  	- Put the inferior call breakpoint at the entry point.
	- Use generic gdbarch methods: pc_in_call_dummy_at_entry_point,
	  generic_push_dummy_frame, generic_fix_call_dummy.
	- There is a call dummy breakpoint offset; it's zero.

	* s390-tdep.c: (s390_push_arguments): Write a back chain pointer
	into the dummy frame, to help us get backtraces.

	* values.c (value_as_address): If VAL is a function or method,
	just return its address; don't let COERCE_ARRAY convert its
	address to a pointer, and then have unpack_long convert it back to
	an address.

2001-11-06 Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-lang.c (is_pascal_string_type): New function to determine if a 
	type is a string type.
	* p-lang.h: Add prototype for is_pascal_string_type.
	* p-valprint.c (pascal_val_print) : Use is_pascal_string_type function 
	to display strings nicely.

2001-11-06 Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y (yylex): Only change case of expression if symbol is found.
	Also check for GPC standard name form.

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

	* gdb_indent.sh: New file.

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

	* s390-tdep.c (s390_get_frame_info): Initialize got_load_addr and
 	got_load_len, to placate compiler.

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

	* i386-tdep.c (i386_gdbarch_init): Fix typo.

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

	* s390-tdep.c (s390_gdbarch_init): Use func_frame_chain_valid, not
 	file_frame_chain_valid.

	* s390-tdep.c (s390_get_frame_info): If the prologue loads r12
 	from the constant pool, but doesn't add in the constant pool's
 	address to it, then this function probably isn't using r12 as a
	GOT pointer, and that load probably wasn't part of the prologue.

	* s390-tdep.c (s390_gdbarch_init): Use the default
 	prepare_to_proceed function established by config/nm-linux.h;
 	don't try to set it to linuxthreads_prepare_to_proceed.

Wed Nov  7 20:38:14 2001  Andrew Cagney  <cagney@redhat.com>

	* i386-tdep.c: Include "i386-tdep.h".
	(XMALLOC): Define.
	(i386_gdbarch_init): New function.
	(_initialize_i386_tdep): Register bfd_arch_i386.
	* config/i386/tm-i386.h (GDB_MULTI_ARCH): Define as
 	GDB_MULTI_ARCH_PARTIAL.
	* i386-tdep.h: When partially multi-arch, conditionally define
 	all macros.

Wed Nov  7 20:45:32 2001  Andrew Cagney  <cagney@redhat.com>

	* i386-tdep.c (set_disassembly_flavor): Delete function.
	(set_disassembly_flavor_sfunc): Delete function.

2001-11-07  Elena Zannoni  <ezannoni@redhat.com>

	* dbxread.c (set_namestring): New function, replacing the
	SET_NAMESTRING macro.
	(SET_NAMESTRING, CUR_SYMBOL_TYPE, CUR_SYMBOL_VALUE,
	CUR_SYMBOL_STRX, DBXREAD_ONLY, START_PSYMTAB, END_PSYMTAB): Delete
	definitions.
	(read_dbx_symtab): Don't include partial-stab.h any more. Don't
	reuse code in partial-stab.h, include the code directly, instead.

        * Makefile.in (dbxread.o): Remove dependency on partial-stab.h.
	(HFILES_NO_SRCDIR): Remove partial-stab.h.

	* partial-stab.h: Remove file.
	
2001-11-07  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: For multi-arch functions, check there is a
	predefault and use it as the static default.
	* gdbarch.c: Re-generate.

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

	* config/i386/tm-linux.h (I386_LINUX_ORIG_EAX_REGNUM): Define in
	terms of NUM_GREGS, NUM_FREGS and NUM_SSE_REGS instead of
	hardcoding the register number.

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

	* gdbarch.sh (USE_STRUCT_CONVENTION): Default to
	generic_use_struct_convention.
	* gdbarch.h, gdbarch.c: Regenerate.
	* values.c (USE_STRUCT_CONVENTION): Delete definition, moved to
	gdbarch.h.

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

	* gdbarch.sh (PC_IN_CALL_DUMMY): Require a value.
	* gdbarch.c: Regenerate.

2001-11-06  Fred Fish  <fnf@redhat.com>

	* complaints.c (info_verbose): Remove unneeded decl, is in defs.h.
	* dbxread.c: Ditto
	* dwarf2read.c: Ditto.
	* dwarfread.c: Ditto.
	* exec.c: Ditto.
	* hpread.c: Ditto.
	* hpread.h: Ditto.
	* mdebugread.c: Ditto.
	* os9kread.c: Ditto.
	* stack.c: Ditto.
	* symfile.c: Ditto.
	* tracepoint.c: Ditto.

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

	* MAINTAINERS: Update Andrew Cagney's responsibilities.  Mention
	David Taylor and Nick Duffek in past maintainers.
	
2001-11-06  Elena Zannoni  <ezannoni@redhat.com>

        * mdebugread.c (CUR_SYMBOL_TYPE, CUR_SYMBOL_VALUE, START_PSYMTAB,
        END_PSYMTAB, SET_NAMESTRING, HANDLE_RBRAC): Delete definitions.
        (parse_partial_symbols): Don't include partial-stab.h any
        more. Don't reuse code in partial-stab.h, include the code
        directly, instead. Simplify code from partial-stab.h eliminating
        ifdef DBXREAD_ONLY code.

        * Makefile.in (mdebugread.o): Remove dependency on partial-stab.h.

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

	* s390-nat.c: #include "regcache.h", to get declaration for
 	`supply_register'.  (The last change already added the dependency
 	of s390-nat.o on regcache.h.  Oops.)

	* Makefile.in (ALLDEPFILES): Add s390-tdep.c and s390-nat.c.
	(s390-tdep.o, s390-nat.o): New rules.

	* s390-nat.c (s390_register_u_addr): Pass proper arguments to
 	internal_error.

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

	* gdbarch.sh (CALL_DUMMY_LOCATION): Require a value.
	* gdbarch.c: Regenerate.

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

	* blockframe.c (get_prev_frame): Replace #ifdef
	INIT_EXTRA_FRAME_INFO with run-time test.

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

	* gdbarch.sh (push_return_address): Change to a function with
	predicate.
	* gdbarch.h, gdbarch.c: Re-generate.
	* valops.c (hand_function_call): Replace #ifdef
	PUSH_RETURN_ADDRESS with run-time test of PUSH_RETURN_ADDRESS_P.
	
2001-11-06  Corinna Vinschen  <vinschen@redhat.com>

	* arch-utils.c (generic_in_function_epilogue_p): New function.
	* arch-utils.h (generic_in_function_epilogue_p): Declare extern.
	* breakpoint.c (watchpoint_check): Add test whether the pc is   
	currently in the epilogue of a function.
	* gdbarch.c: Autogenerated from gdbarch.sh.
	* gdbarch.h: Ditto.
	* gdbarch.sh (function_list): Add `in_function_epilogue_p' definition.

2001-11-05  Jim Blandy  <jimb@redhat.com>

	* config/s390/s390.mh (NATDEPFILES): Don't split this across
	several lines with backslashes; the `sed' command in
	configure.in's AC_OUTPUT clause that comments out the NATDEPFILES
	assignment doesn't handle lines extended with backslashes.

	* configure.in (AC_OUTPUT): Handle assignments to NATDEPFILES
	using `+=' as well as `='.
	* configure: Regenerated.
	
2001-11-05  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (init_extra_frame_info): Change to a function with
	predicate.
	* gdbarch.h, gdbarch.c: Re-generate.	
	* blockframe.c (create_new_frame): Replace #ifdef
	INIT_EXTRA_FRAME_INFO with run-time test of
	INIT_EXTRA_FRAME_INFO_P.

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

	* gdbarch.sh (verify_gdbarch): Use a mem_file to accumulate all
	error messages.  Print in a single batch.
	* gdbarch.c: Re-generate.

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

	* i386-linux-nat.c (GETREGS_SUPPLIES, supply_gregset,
	fill_gregset): Add support for "orig_eax" register.

	Add support for "orig_eax" pseudo register on Linux/x86.
	* i386-linux-tdep.c: Include "inferior.h".
	(i386_linux_register_name, i386_linux_register_byte,
	i386_linux_register_raw_size): New functions.
	(i386_linux_write_pc): New function.
	* config/i386/tm-linux.h (I386_LINUX_ORIG_EAX_REGNUM): New define.
	(NUM_REGS, MAX_NUM_REGS, REGISTER_BYTES, REGISTER_NAME,
	REGISTER_BYTE, REGISTER_RAW_SIZE): Define to deal with additional
	register.
	(i386_linux_register_name, i386_linux_register_byte,
	i386_linux_register_raw_size): New prototypes.
	(TARGET_WRITE_PC): New define.
	(i386_linux_write_pc): New prototype.

	* i386-tdep.c (i386_register_offset): Renamed from
	i386_register_byte.  Made static.
	(i386_register_size): Renamed from i386_register_raw_size.  Made
	static.
	(i386_register_virtual_size): Removed.
	(i386_register_byte, i386_register_raw_size,
	i386_register_virtual_size): New functions.
	(_initialize_i386_tdep): Initialize i386_register_offset instead
	of i386_register_byte.  Remove code to initialize
	i386_register_virtual_size.
	* config/i386/tm-i386.h (REGISTER_BYTE): Redefine to use
	i386_register_byte function.
	(REGISTER_RAW_SIZE): Redefine to use i386_register_raw_size
	function.
	(REGISTER_VIRTUAL_SIZE): Redefine to use
	i386_register_virtual_size function.
	(i386_register_byte, i386_register_raw_size,
	i386_register_virtual_size): New functions.

	* Makefile.in (ALLDEPFILES): Add i387-nat.c.
	(i387-nat.o): Add dependencies.

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

	* README: Mention problem with alpha-dec-osf5.1.

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

	* utils.c (internal_verror): Restore calls to abort().
	Fix PR gdb/219.
	
2001-11-02  Michael Chastain  <mec@shout.net>

        * MAINTAINERS: Update my entry.

2001-11-01  Michael Snyder  <msnyder@redhat.com>

	* symtab.c (operator_chars): Allow '*' and '[' to be quoted in
	operator names, to avoid regexp expansion.
	(search_symbols): Alloca buffer is too small, may get clobbered.

2001-11-01  Fred Fish  <fnf@redhat.com>

	* coff-solib.c (coff_solib_add): Add new readsyms arg.
	* irix5-nat.c (solib_add): Ditto.
	* osfsolib.c (solib_add): Ditto.
	* pa64solib.c (pa64_solib_add): Ditto.
	* pa64solib.c (add_to_solist): Ditto.
	* pa64solib.c (read_dld_descriptor): Ditto.
	* solib.c (solib_add): Ditto.
	* somsolib.c (som_solib_add): Ditto.
	* win32-nat.c (child_solib_add): Ditto.
	* xcoffsolib.c (solib_add): Ditto.

	* coff-solib.h (coff_solib_add): Add new readsyms arg to prototype.
	* pa64solib.c (add_to_solist): Ditto.
	* pa64solib.c (read_dld_descriptor): Ditto.
	* pa64solib.h (pa64_solib_add): Ditto.
	* solib.h (solib_add): Ditto.
	* somsolib.h (som_solib_add): Ditto.
	* config/i386/tm-cygwin.h (child_solib_add): Ditto.

	* coff-solib.c (coff_solib_add):  If readsyms is zero don't read
	symbols but do any other needed work for shared libs.
	* irix5-nat.c: Ditto.
	* osfsolib.c (solib_add): Ditto.
	* solib.c (solib_add): Ditto.
	* win32-nat.c (child_solib_add): Ditto.
	* xcoffsolib.c (solib_add): Ditto.

	* irix5-nat.c (sharedlibrary_command): Pass 1 as readsyms to
	solib_add to force reading of shared library symbols.
	* osfsolib.c (sharedlibrary_command;): Ditto.
	* pa64solib.c (pa64_solib_sharedlibrary_command): Ditto.
	* solib.c (sharedlibrary_command): Ditto.
	* somsolib.c (som_solib_sharedlibrary_command): Ditto.
	* xcoffsolib.c (sharedlibrary_command): Ditto.

	* coff-solib.c (coff_solib_create_inferior_hook): Call solib_add
	unconditionally with auto_solib_add.
	* irix5-nat.c (solib_create_inferior_hook): Ditto.
	* osfsolib.c (solib_create_inferior_hook): Ditto.
	* solib.c (solib_create_inferior_hook): Ditto.
	* solib-osf.c (osf_solib_create_inferior_hook): Ditto.
	* solib-svr4.c (enable_break): Ditto.
	* solib-sunos.c (sunos_solib_create_inferior_hook): Ditto.

	* corelow.c (solib_add_stub): Add auto_solib_add to args passed
	via SOLIB_ADD.
	* sol-thread.c (sol_thread_attach): Ditto.
	* config/rs6000/nm-rs6000.h (SOLIB_ADD): Ditto.

	* infcmd.c (attach_command): Remove auto_solib_add decl.
	Call SOLIB_ADD directly with auto_solib_add.
	* infrun.c (handle_inferior_event): Ditto.

	* coff-solib.h (SOLIB_ADD): Add readsyms arg.
	* pa64solib.h (SOLIB_ADD): Ditto.
	* solib.h (SOLIB_ADD): Ditto.
	* somsolib.h (SOLIB_ADD): Ditto.
	* config/i386/tm-cygwin.h (SOLIB_ADD): Ditto.

	* fork-child.c (clone_and_follow_inferior): Remove unused
	auto_solib_add decl.

	* pa64solib.c (pa64_solib_add): Call add_to_solist with readsyms.
	(read_dld_descriptor): Ditto.
	(pa64_solib_add): Call read_dld_descriptor with	readsyms.
	(pa64_solib_in_dynamic_linker): Ditto.

	* corelow.c (symfile.h): Need this for auto_solib_add declaration.
	* sol-thread.c (symfile.h): Ditto.

2001-10-31  Andrew Cagney  <ac131313@redhat.com>

	* s390-nat.c (s390_remove_watchpoint): Use xfree.
	(s390_insert_watchpoint): Use xmalloc.

2001-10-31  Andrew Cagney  <ac131313@redhat.com>

	* varobj.c: Replace value_ptr with ``struct value *''.

2001-10-31  Andrew Cagney  <ac131313@redhat.com>

	* varobj.c: Re-indent.

2001-10-31  Andrew Cagney  <ac131313@redhat.com>

	* x86-64-tdep.c (value_push, x86_64_push_arguments): Replace
	``value_ptr'' with ``struct value *''.
	* s390-tdep.c (s390_push_arguments): Ditto.

2001-10-30  Andrew Cagney  <ac131313@redhat.com>

	* ppc-tdep.h: Add #ifndef wrapper.  Replace value_ptr with
	``struct value *''.
	(struct frame_info, struct value): Add opaque declarations.
	
2001-10-31  Corinna Vinschen  <vinschen@redhat.com>

	* arch-utils.c (generic_in_solib_call_trampoline): New function.
	* arch-utils.h (generic_in_solib_call_trampoline): Extern declaration.  
	* gdbarch.c: Regenerated from gdbarch.sh.
	* gdbarch.h: Ditto.
	* gdbarch.sh (function_list): Add `IN_SOLIB_CALL_TRAMPOLINE' definition.
	* infrun.c (IN_SOLIB_CALL_TRAMPOLINE): Remove macro.

2001-10-31  Andrew Cagney  <ac131313@redhat.com>

	From DJ Barrow.
	* s390-tdep.c: (s390_gdbarch_init): Don't initialize
	find_solib_trampoline_target.

2001-10-31  Andrew Cagney  <ac131313@redhat.com>

	* remote-vx.c (net_wait): Fix typo from PIDGET change.

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

	* config/i386/tm-i386.h (REGISTER_NAMES): Remove.
	(REGISTER_NAME): New define.
	(i386_register_name): New prototype.
	* i386-tdep.c (i386_register_names): New variable.
	(i386_register_name): New function.
	* config/i386/tm-i386os9k.h, config/i386/tm-ptx.h,
	config/i386/tm-symmetry.h: Undefine REGISTER_NAME instead of
	REGISTER_NAMES.

2001-10-31  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (register_loaded_dll): Attempt to ensure that the case of
	the loaded DLL matches the on-disk case since the debugging API does
	not seem to ensure this.  Calculate max name length here.
	(handle_load_dll): Move max name length calculation to
	register_loaded_dll.

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

	* arm-linux-nat.c: Include <asm/ptrace.h> explicitly.

2001-10-30  Keith Seitz  <keiths@redhat.com>

	* wrapper.h (gdb_value_struct_elt): New function.
	* wrapper.c (gdb_value_struct_elt): Ditto.
	(do_captured_value_struct_elt): Ditto.

2001-10-30  Andrew Cagney  <ac131313@redhat.com>

	* README, NEWS: Update for 5.1.

2001-10-30  Andrew Cagney  <ac131313@redhat.com>

	* configure.in (WERROR_CFLAGS): Use AC_TRY_COMPILE to test the
	-W... flags.
	* configure: Re-generate.

2001-10-30  Fred Fish  <fnf@redhat.com>

	* somsolib.c (som_solib_add): A megabyte is 1024*1024 bytes.
	* pa64solib.c (add_to_solist): Ditto.
	* win32-nat.c (_initialize_inftarg): Remove unnecessary
	initialization of auto_solib_add, it defaults to 1.

2001-10-27  Fred Fish  <fnf@redhat.com>

	* symfile.c (auto_solib_add): Update comment to note that
	this variable is now just used as a boolean to control shlib
	autoloading, and clarify when it is used.
	* symfile.h (auto_solib_add): Ditto.

	* symfile.c (auto_solib_limit): New variable that holds the
	autoloading threshold instead of overloading auto_solib_add.
	* symfile.h (auto_solib_limit): Ditto.

	* irix5-nat.c (_initialize_solib): Change auto-solib-add
	variable from var_zinteger to var_boolean and update help.
	* osfsolib.c (_initialize_solib): Ditto.
	* pa64solib.c (_initialize_pa64_solib): Ditto.
	* solib.c (_initialize_solib): Ditto.
	* somsolib.c (_initialize_som_solib): Ditto.
	* xcoffsolib.c (_initialize_solib): Ditto.

	* pa64solib.c (pa64_solib_total_st_size): Update comment to
	note that the new auto_solib_limit variable is used instead
	of overloading auto_solib_add variable.
	(_initialize_pa64_solib): Ditto.
	* somsolib.c (som_solib_total_st_size): Ditto.
	(_initialize_som_solib): Ditto.

	* pa64solib.c (_initialize_pa64_solib): Add new set/show
	commands for auto-solib-limit variable.
	* somsolib.c (_initialize_som_solib): Ditto

	* pa64solib.c (add_to_solist): Check that auto_solib_add is
	set and use auto_solib_limit as the threshold size instead
	of auto_solib_add.
	* somsolib.c (som_solib_add): Ditto, and also change warning
	text about size threshold exceeded.

2001-10-21  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386v.h: Don't include "regcache.h".
	(EXTRACT_RETURN_VALUE, STORE_RETURN_VALUE, FRAME_CHAIN,
	FRAMELESS_FUNCTION_INVOCATION, FRAME_SAVED_PC, FRAME_NUM_ARGS):
	Remove macros.  The versions from "tm-i386.h" should work fine
	(and in most cases even better).

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

	* i386-tdep.c (i386_extract_return_value): Use
	convert_typed_floating to extract floating-point value from
	register buffer.
	(i386_store_return_value): Use convert_typed_floating to store
	floating-point return balue in register buffer
	(i386_register_virtual_type): Change type of floating-point
	registers to builtin_type_i387_ext.
	(i386_register_convert_to_virtual): Use convert_typed_floating to
	do the conversion.
	(i386_register_convert_to_raw): Likewise.

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

	* doublest.h (convert_typed_floating): New prototype.
	* doublest.c (convert_typed_floating): New function.

2001-10-28  Mark Kettenis  <kettenis@gnu.org>

	* doublest.c: Improve comments a bit.
	(floatformat_from_length): New function.
	(NAN): Define to 0.0 if not already defined.
	(extract_floating): Rewrite to use floatformat_from_length.  Warn
	instead of error if LEN doesn't match a known floating-point type,
	and return NaN (or 0.0 if NaN isn't available) in that case.
	(store_floating): Likewise, but zero out the target byte-stream if
	LEN doesn't match a known floating-point type.
	(extract_typed_floating): Reformat a bit.
	(store_typed_floating): Reformat a bit.  Add comment about zeroing
	out padding in the target buffer.
	* doublest.h (extract_floating, store_floating): Fix comment about
	deprecation of these functions.  Add parameter names to prototypes.

2001-10-28  Mark Kettenis  <kettenis@gnu.org>

	* i387-tdep.c (print_i387_value): Use extract_typed_floating to
	convert RAW to a DOUBLEST instead of extract_floating.

	* gdbtypes.c (_initialize_gdbtypes): Set floating-point type for
	builtin_type_i387_ext to floatformat_i387_ext.

2001-10-24  Daniel Jacobowitz  <drow@mvista.com>

	* arm-linux-nat.c (fill_gregset): Do not check register_valid[].
	(fill_fpregset): Likewise.

2001-10-26  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (constraint): Loop through the whole cris_spec_regs
	struct, not just the NUM_SPECREGS first entries.
	(bdap_prefix): Read PC before autoincrement.

2001-10-24  Corinna Vinschen  <vinschen@redhat.com>

	* win32-nat.c (DebugSetProcessKillOnExit): New static function
	pointer to Windows' DebugSetProcessKillOnExit() function.
	(DebugActiveProcessStop): Ditto for DebugActiveProcessStop().
	(has_detach_ability): New function.
	(child_attach): If system has detach ability, enable it.
	(child_detach): If system has detach ability, actually  
	detach from process.
	Change tty output to Linux format.

2001-10-23  Jim Blandy  <jimb@redhat.com>

	Isolate STABS readers' use of the `textlow' and `texthigh' fields
	of `struct partial_symtab' to only a few locations.  This change
	is not supposed to affect the way the values are computed, only
	where they live.

	* dbxread.c (struct symloc): Add `textlow' and `texthigh' fields
	to the reader-specific structure.
	* mdebugread.c (struct symloc): Same.
	* dbxread.c (TEXTLOW, TEXTHIGH): New accessor macros.
	* mdebugread.c (TEXTLOW, TEXTHIGH): Same.
	* dbxread.c (dbx_symfile_read): After we've built all our partial
	symbol tables, set each partial symtab's `textlow' and `texthigh'
	fields from our reader-specific structure.
	* mdebugread.c (mdebug_build_psymtabs): Same.
	* dbxread.c (start_psymtab): Initialize the reader-specific
	structure's `textlow' and `texthigh' from the new psymtab's.
	* mdebugread.c (parse_partial_symbols, new_psymtab): Same.
	* dbxread.c (read_dbx_symtab, end_psymtab, read_ofile_symtab): Use
	the reader-specific `textlow' and `texthigh', not the generic
	psymtab fields.
	* mdebugread.c (parse_lines, parse_partial_symbols,
	psymtab_to_symtab_1): Same.
	* partial-stab.h: Same.

Tue Oct 23 18:59:42 2001  Andrew Cagney  <cagney@redhat.com>

	* hp-psymtab-read.c, hppah-nat.c, hppa-tdep.c: Fix -Wformat
	problems.

Tue Oct 23 14:16:10 2001  Andrew Cagney  <cagney@redhat.com>

	* somsolib.c (som_solib_add): Use core_addr_to_host_pointer.
	(som_solib_desire_dynamic_linker_symbols): Compare integers with
 	zero not NULL.
	* hp-psymtab-read.c (hpread_call_pxdb): Make parameter constant.

2001-10-21  Andrew Cagney  <ac131313@redhat.com>

	* top.c (print_gdb_version): Do not print ``(MI_OUT)''.  MI
	interface is always enabled.

2001-10-21  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in: Replace top.h with $(top_h). Replace expression.h
	with $(expression_h).  Replace command.h with $(command_h).
	(language_h): Define.  Replace language.h with $(language_h).
	Replace call-cmds.h with $(call_cmds_h).  Replace varobj.h with
	$(varobj_h).
	(wrapper_h, valprint_h, objfiles_h, complaints_h): Ditto.
	(serial_h, hpread_h, buildsym_h, stabsread_h): Ditto.
	(xcoffsolib_h, gdb_stabs_h, linespec_h): Ditto.
	(bcache_h, gdb_events_h, monitor_h): Ditto.
	(ser_unix_h, source_h): Ditto.
	(varobj_h): Update list.

	* call-cmds.h: Add CALL_CMDS_H macro wrapper.
	* solist.h: Add SOLIST_H macro wrapper.
	* monitor.h: Add MONITOR_H macro wrapper.
	* typeprint.h: Add TYPEPRINT_H macro wrapper.
	* xcoffsolib.h: Add XCOFFSOLIB_H macro wrapper.
	* valprint.h: Add VALPRINT_H macro wrapper.
	* top.h: Add TOP_H macro wrapper.
	
2001-10-21  Andrew Cagney  <ac131313@redhat.com>

	* config/a29k/tm-vx29k.h, i386-tdep.c: Include "value.h".
	* arm-tdep.c, exec.c, ia64-tdep.c, infrun.c: Ditto.
	* ppc-linux-tdep.c, remote-es.c, remote.c: Ditto.
	* rs6000-tdep.c, s390-tdep.c, x86-64-tdep.c: Ditto.
	* Makefile.in (arm-tdep.o, exec.o, i386-tdep.o, ia64-tdep.o)
	(infrun.o, ppc-linux-tdep.o, remote.o, rs6000-tdep.o)
	(x86-64-tdep.o): Update dependencies.
	* gdbarch.sh [!GDB_MULTI_ARCH]: Include "value.h".
	* gdbarch.h, gdbarch.c: Re-generate.

2001-10-21  Mark Kettenis  <kettenis@gnu.org>

	* infptrace.c (child_xfer_memory): Fix a few coding standards
	violations.

2001-10-21  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/README: Fix a typo and tweak for GDB 5.1.

2001-10-20  Andrew Cagney  <ac131313@redhat.com>

	* jv-lang.h: Add #ifndef JV_LANG_H wrapper.
	(struct value): Add opaque declaration.  Replace value_ptr with
	``struct value *''.
	* jv-valprint.c, jv-lang.c: Replace value_ptr with equivalent
	struct.

	* wrapper.h (struct value): Add opaque declaration.  Replace
	value_ptr with ``struct value *''.
	* wrapper.c: Replace value_ptr with ``struct value *''.
	* breakpoint.h, breakpoint.c: Ditto.
	* cp-abi.h, hpacc-abi.c, gnu-v2-abi.c, cp-abi.c: Ditto.

2001-10-20  Andrew Cagney  <ac131313@redhat.com>

	* alpha-nat.c: Include <alpha/coreregs.h> instead of
	<machine/reg.h>.
	(fetch_osf_core_registers): Define core_reg_mapping in a way that
	works on OSF5 as well as previous OSF versions.

2001-10-20  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (handle_load_dll): Avoid strlwr'ing loaded DLLs or cygwin
	may not be able to read them in certain situations.

2001-10-18  Andrew Cagney  <ac131313@redhat.com>

	* config/powerpc/nbsd.mt (SIM_OBS, SIM): Define.
	* config/powerpc/linux.mt (SIM, SIM_OBS): Ditto

2001-10-18  Andrew Cagney  <ac131313@redhat.com>

	* README: Mention problems with HP/UX.

2001-10-16  Andrew Cagney  <ac131313@redhat.com>

	Based on code by John Moore <jmore@redhat.com>:
	
	* utils.c (core_addr_to_string): New function for conversion of
	CORE_ADDR to string.
	(string_to_core_addr): New function to convert from string to
	CORE_ADDR.
	* defs.h: Added extern statements for the above.

2001-10-17  Jason Molenda  (jason-cl@molenda.com)

	* symtab.c (lookup_block_symbol):  Break out of linear search
        if we're past the range of possible matches.

2001-10-16  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (safe_symbol_file_add_stub): Improve logic for avoiding
	load of already loaded DLL.
	(register_loaded_dll): Convert loaded DLL name to "posix" format or it
	will confuse subsequent opening of the filename due to dos paths.
	(dll_symbol_command): Pass from_tty parameter to safe_symbol_file_add.

2001-10-15  Elena Zannoni  <ezannoni@redhat.com>

        * symtab.c (lookup_block_symbol): Update comment.

2001-10-15  Andrew Cagney  <ac131313@redhat.com>

	* value.h (value_as_address): Rename value_as_pointer.
	* eval.c, findvar.c, gnu-v2-abi.c, gnu-v3-abi.c, jv-lang.c,
	jv-valprint.c, printcmd.c, stack.c, top.c, valarith.c, valops.c,
	values.c: Update.

202001-10-15  Jim Ingham  <jingham@inghji.apple.com>

        * valarith.c (value_sub): Don't pass a raw type to
        value_from_pointer, it has to go through check_typedef first.

2001-10-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (fallbackdefault): Set to one when predefault is
	empty.
	* gdbarch.h: Regenerate.

2001-10-15  Andrew Cagney  <ac131313@redhat.com>

	* mips-tdep.c (mips_integer_to_address): New function.
	(mips_gdbarch_init): Initialize pointer_to_address,
	address_to_pointer and integer_to_address.

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

	* d10v-tdep.c (d10v_integer_to_address): New function.
	(d10v_gdbarch_init): Initialize integer_to_address.

	* values.c (value_as_pointer): Use INTEGER_TO_ADDRESS when
	available.

	* gdbarch.sh (INTEGER_TO_ADDRESS): New predicate and function.
	* gdbarch.h, gdbarch.c: Regenerate.

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

	* config/s390/nm-linux.h: Don't include <signal.h>.
	(lin_lwp_attach_lwp, ATTACH_LWP, lin_thread_get_thread_signals,
	GET_THREAD_SIGNAL): Remove.

	* config/nm-linux.h (struct objfile): Remove forward declaration.
	(linuxthreads_new_objfile): Remove prototype.
	(linuxthreads_pid_to_str): Remove prototype.
	(PREPARE_TO_PROCEED): Redefine in terms of
	lin_lwp_prepare_to_proceed.
	(struct target_waitstatus): Forward declaration.
	(child_wait): New prototype.
	(CHILD_WAIT): Define.
	(lin_lwp_attach_lwp, ATTACH_LWP, lin_thread_get_thread_signals,
	GET_THREAD_SIGNAL): Moved here from arch-specific files.
	* config/alpha/nm-linux.h, config/arm/nm-linux.h,
	config/ia64/nm-linux.h, config/mips/nm-linux.h,
	config/powerpc/nm-linux.h: Don't include <signal.h>.
	(lin_lwp_attach_lwp, ATTACH_LWP, lin_thread_get_thread_signals,
	GET_THREAD_SIGNAL): Remove.
	* config/i386/nm-linux.h: Likewise.
	(struct target_waitstatus, child_wait, CHILD_WAIT): Remove.
	* config/m68k/linux.mh, config/sparc/linux.mh (NATDEPFILES):
	Remove linux-thread.o.  Add proc-service.o, thread-db.o and
	lin-lwp.o.
	(LOADLIBES): New variable.

	* sparc-nat.c (fetch_core_registers): Remove redundant prototype.

	* proc-service.c (BUILD_LWP): Redefine in terms of ptid_build.

	Fix attaching to cloned processes.  This fixes PR gdb/61.
	* lin-lwp.c (struct lwp_info): Add new member `cloned'.
	(is_cloned) Removed.
	(lin_lwp_attach_lwp): Don't call stop_wait_callback.  Instead call
	waitpid explicitly.  Mark the LWP as cloned if waitpid fails and
	retry with __WCLONE flag.
	(lin_lwp_attach): Likewise.  Warn if attaching to a cloned process.
	(detach_callback): Replace use of is_cloned with explicit check on
	LWP id and process id.
	(stop_wait_callback): Replace use of is_cloned with check if LWP
	is marked as cloned.
	[CHILD_WAIT] (child_wait): New function.
	(lin_lwp_wait): Replace use of is_cloned with check if LWP is
	marked as cloned.  Mark newly detected LWPs as cloned if detected
	by waitpid with __WCLONE flag.
	(kill_wait_callback): Replace use of is_cloned with check if LWP
	is marked as cloned.
	* config/i386/nm-linux.h (struct target_waitstatus): Add forward
	declaration.
	(child_wait): Add prototype.
	(CHILD_WAIT): Define.

2001-10-13  Andrew Cagney  <ac131313@redhat.com>

	S/390 31 & 64 bit target and GNU/Linux native support.
	Contributed by D.J. Barrow <djbarrow@de.ibm.com> of IBM.
	* s390-nat.c, s390-tdep.c: New file.
	* config/s390/nm-linux.h, config/s390/s390.mh: New file.
	* config/s390/s390.mt, config/s390/s390x.mt: New file.
	* config/s390/tm-linux.h, config/s390/tm-s390.h: New file.
	* config/s390/xm-linux.h: New file.
	* NEWS: Update.
	* MAINTAINERS: Update.

2001-10-13  Andrew Cagney  <ac131313@redhat.com>

	From 2001-07-09 D.J. Barrow <djbarrow@de.ibm.com>:
        * gdbarch.sh: Fixed CALL_DUMMY_BREAKPOINT_OFFSET to check
	CALL_DUMMY_BREAKPOINT_OFFSET_P.
	* gdbarch.c: Regenerate.
	
2001-10-13  Mark Kettenis  <kettenis@gnu.org>

	* thread-db.c: Fix a few formatting mistakes.

2001-10-12  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (safe_symbol_file_add_stub): Properly initialize linked
	list pointer to beginning rather than one beyond beginning.

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

	* symtab.h (struct block): (ALL_BLOCK_SYMBOLS): New macro.

	* symtab.c (find_pc_sect_symtab): Use ALL_BLOCK_SYMBOLS.
	(make_symbol_completion_list): Likewise.
	(make_symbol_overload_list): Likewise.
	* buildsym.c (finish_block): Likewise.
	* breakpoint.c (get_catch_sals):  Likewise.
	* mdebugread.c (mylookup_symbol): Likewise.
	* objfiles.c (objfile_relocate): Likewise.
	* printcmd.c (print_frame_args): Likewise.
	* stack.c (print_block_frame_locals): Likewise.
	(print_block_frame_labels): Likewise.
	(print_frame_arg_vars): Likewise.
	* symmisc.c (dump_symtab): Likewise.
	* tracepoint.c (add_local_symbols): Likewise.
	(scope_info): Likewise.

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

	* minsyms.c (msymbol_hash): Use better hash function.
	(msymbol_hash_iw): Likewise.  Terminate loop at '(' properly.

	* objfiles.h: Increase MINIMAL_SYMBOL_HASH_SIZE to match modern
	binaries.

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

	* printcmd.c (print_frame_args):  Move symbol iteration explicitly
	inside the func != NULL block.

2001-10-12  Fernando Nasser  <fnasser@redhat.com>

	* MAINTAINERS (Misc): Add Ian Roxborough as tcl/, tk/ and itcl/
	maintainer.

2001-10-12  Pierre Muller  <muller@ics.u-strasbg.fr>

	* config/i386/tm-cygwin.h: Include tm-i386.h instead of tm-i386v.h.
	This fixes errors in "long long" handling for 'finish' and 'return'
	commands.

2001-10-12  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (safe_symbol_file_add_stub): Avoid adding a shared
	library if it has already been loaded.
	(safe_symbol_file_add_cleanup): Don't mess with stderr or we won't see
	any error messages.
	(safe_symbol_file_add): Ditto.
	(solib_symbols_add): Make static.  Accept 'from_tty' parameter.  Pass
	it to safe_symbol_file_add.
	(core_dll_symbols_add): Accomodate extra solib_symbols_add parameter.
	(child_solib_add): Ditto.

	* win32-nat.c (handle_exception): Don't print "first chance"
	exceptions.
	(get_child_debug_event): Continue from exceptions if !handle_exception.

2001-10-11  Tom Tromey  <tromey@redhat.com>

	* symtab.c (lookup_symtab): Removed.
	(lookup_symtab_1): Renamed to lookup_symtab.

2001-10-10  Christopher Faylor  <cgf@redhat.com>

	* win32-nat.c (get_child_debug_event): Close file handles created after
	process creation and DLL load.
	(child_create_inferior): Close unneeded process/thread handle after
	thread creation.

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

	* mn10300-tdep.c (mn10300_analyze_prologue): Doc fixes.

2001-10-10  Keith Seitz  <keiths@redhat.com>

	* varobj.c (cplus_value_of_child): Deal with a failure
	to dereference a pointer object.

2001-10-08  J. Brobecker <brobecker@gnat.com>

	* hpux-thread.c: rewrite find_active_thread() and find_tcb()
	to use ptid_t, instead of overloading the thread and the pid
	into the same 32-bit value. Make associated necessary adaptations.
	Also remove unused variable cached_active_thread.

2001-10-08  Nicholas Duffek  <nsd@redhat.com>

	* MAINTAINERS (powerpc, SCO/Unixware, Solaris/x86): Remove my
	entries.

2001-10-06  Mark Kettenis  <kettenis@beast.freebsd.org>

	* config/alpha/tm-fbsd.h (FRAME_CHAIN_VALID): Define.

2001-10-04  Tom Tromey  <tromey@redhat.com>

	* main.c (enable_external_editor): Don't declare.
	(captured_main): Don't set enable_external_editor.

2001-10-02  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (ALLDEPFILES): Add solib-svr4.c and solib-sunos.c
	to this list.
	(solib-sunos.o): Add dependencies.
	(solib-svr4.o): Revise dependencies.
	* solib-svr4.c: Remove SunOS shared library support.
	* solib-sunos.c: New file, created from solib-svr4.c, which still
	contains SunOS shared library support, but no SVR4 support.

	* config/i386/nbsd.mh (NATDEPFILES): Remove solib-svr4.o and
	solib-legacy.o from this list.  Add solib-sunos.o.
	* config/i386/sun386.mt (TDEPFILES): Likewise.
	* config/m68k/nbsd.mh (NATDEPFILES): Likewise.
	* config/m68k/sun2os4.mt (TDEPFILES): Likewise.
	* config/m68k/sun3os4.mt (TDEPFILES): Likewise.
	* config/ns32k/nbsd.mh (NATDEPFILES): Likewise.
	* config/sparc/nbsd.mh (NATDEPFILES): Likewise.
	* config/sparc/sun4os4.mt (TDEPFILES): Likewise.

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

        * Makefile.in (mipsread.o): Remove old dependency on partial-stab.h.

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

        * xcoffread.c (N_UNDF, N_ABS, N_TEXT, N_DATA, N_BSS, N_COMM, N_FN,
        N_EXT, N_INDR, N_SETA, N_SETT, N_SETD, N_SETB, N_SETV,
        CUR_SYMBOL_TYPE, CUR_SYMBOL_VALUE, START_PSYMTAB, END_PSYMTAB,
        SET_NAMESTRING): Delete definitions.
        Don't include language.h any more.
        Don't include partial-stab.h any more.
        (scan_xcoff_symtab): Don't jump through hoops to reuse code in
        partial-stab.h, include the code directly, instead.

        * Makefile.in (xcoffread.o): Remove dependency on partial-stab.h.

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

	* infcmd.c (do_registers_info): Delete code dumping large
	registers.  Handled by val_print.

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

	* gdbarch.sh (gdbarch_alloc): Name the new architecture
	``current_gdbarch'' so that it, and not the identically named
	global is refered to by macros.
	* gdbarch.c: Regenerate.

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

	* cli/cli-decode.c (add_set_boolean_cmd): Define.
	* cli/cli-decode.h (add_set_boolean_cmd): Declare.
	* command.h (add_set_boolean_cmd): Ditto.
	* remote.c (_initialize_remote): Use add_set_boolean_cmd for "set
	remotebreak"

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

	* gdbarch.sh (gdbarch_dump): Sort output.
	* gdbarch.c: Regenerate.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Don't use the previous
	architecture to infer the wordsize.  Previous architecture may not
	be a PowerPC.

2001-09-27  J. Brobecker <brobecker@gnat.com>

	* infttrace.c (kill_inferior): Issue a TT_PROC_EXIT request rather
	than a TT_PROC_STOP request to kill the inferior and its child
	processes. Otherwise, the inferior is not killed on HPUX 11.0.
	Removed the code that detaches the child processes since we just
	killed them.

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

	* serial.c (serial_set_cmdlist, serial_show_cmdlist): New
	variables.
	(serial_set_cmd, serial_show_cmd): New functions.
	(_initialize_serial): Add "set/show serial" command.

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

	* CONTRIBUTE: Update.

2001-09-26  Kevin Buettner  <kevinb@redhat.com>

	* solib-svr4.h (set_solib_svr4_fetch_link_map_offsets): Add
	argument ``gdbarch''.
	* solib-svr4.c (SVR4_FETCH_LINK_MAP_OFFSETS): Change default value.
	(default_svr4_fetch_link_map_offsets): Rename to
	legacy_fetch_link_map_offsets().
	(svr4_fetch_link_map_offsets): New function.
	(fetch_link_map_offsets, fetch_link_map_offsets_init): Deleted.
	(fetch_link_map_offsets_gdbarch_data): New static global.
	(set_solib_svr4_fetch_link_map_offsets): Add argument ``gdbarch''.
	Revise to invoke set_gdbarch_data().
	(init_fetch_link_map_offsets): Change return type and add an
	argument so that it may be used as a gdbarch_data initializer.
	(_initialize_svr4_solib): Eliminate use of gdbarch swap mechanism.
	Use gdbarch data mechanism instead.

2001-09-25  Jiri Smid  <smid@suse.cz>

	* x86-64-linux-tdep.c (LINUX_SIGINFO_SIZE): Add.
	(x86_64_linux_sigcontext_addr): Replace `sizeof (struct siginfo)'
	by LINUX_SIGINFO_SIZE.

2001-09-24  Andrew Cagney  <ac131313@redhat.com>

	* maint.c (maintenance_set_cmdlist, maintenance_show_cmdlist): New
	variables.
	(maintenance_set_profile_cmd): New function.
	(maintenance_show_cmd, maintenance_set_cmd): New functions.
	(_initialize_maint_cmds): Add "maintenance set" and "maintenance
	show" and, commented out, "maintenance set/show profile" commands.

2001-09-24  Andrew Cagney  <ac131313@redhat.com>

	* findvar.c (read_var_value): For LOC_INDIRECT and LOC_REF_ARG
	convert the pointer into a CORE_ADDRs.

2001-09-24  Andrew Cagney  <ac131313@redhat.com>

	* doublest.h (store_floating, extract_floating): Add comment
	indicating these functions are deprecated.
	(extract_typed_floating, store_typed_floating): Declare.
	* doublest.c: Include "gdbtypes.h".
	(extract_typed_floating, store_typed_floating): Define.

	* stabsread.c (define_symbol): Use store_typed_floating.
	* valarith.c (value_binop): Ditto.
	* values.c (unpack_long): Use extract_typed_floating.
	(unpack_double): Ditto.

2001-09-24  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (reg_mode_add_sub_cmp_and_or_move_op): Fetch operand1
	from correct register.

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

	* x86-64-linux-tdep.c (STRUCT_OFFSET): Removed.

2001-09-21  Jiri Smid   <smid@suse.cz>

	* config/i386/x86-64linux.mh: New file.
	* config/i386/x86-64linux.mt: New file.
	* config/i386/nm-x86_64.h: New file.
	* x86-64-linux-tdep.c: New file.
	* x86-64-linux-nat.c: New file.
	* x86-64-tdep.c: New file.
	* x86-64-tdep.h: New file.
	* i386-tdep.h: New file.
	* i387-nat.c: Include i386-tdep.h when multiarch.
	* i387-tdep.c: Ditto.
	* config/djgpp/fnchange.lst: Add entries for x86_64-linux-tdep.c
	and x86_64-linux-nat.c
	* Makefile.in: Add x86_64-linux-tdep.o, x86_64-tdep.o,
	x86_64-linux-tdep.o, x86_64-nat.o, update dependencies.

2001-09-21  Jiri Smid   <smid@suse.cz>

	* MAINTAINERS: Add myself to the write-after-approval list.
	* i386-nat.c (TARGET_HAS_DR_LEN_8, DR_LEN_8): Declare.
	(i386_length_and_rw_bits, i386_handle_nonaligned_watchpoint,
	i386_insert_watchpoint, i386_remove_watchpoint):  Add support for
	8-byte wide watchpoints.
	(i386_show_dr): Debug message format string change.

2001-09-21  Michael Snyder  <msnyder@redhat.com>

	* c-exp.y (typebase): Accept (signed long long) as a type expr.

2001-09-20  Michael Snyder  <msnyder@redhat.com>
	Changes by Daniel Berlin  <dan@cgsoftware.com>, to support
	better parsing of const and volatile type expressions.
	* c-exp.y (const_and_volatile, const_or_volatile_noopt, 
	const_or_volatile): New non-terminals.
	(ptype): Use new rule for const_or_volatile.
	(typebase): Use new rule for const_or_volatile_noopt.
	* parser-defs.h (enum type_pieces): New values tp_const, tp_volatile.
	* parse.c (follow_types): Handle tp_const and tp_volatile on the
	type stack: call make_cv_type to create new const/volatile type.

2001-09-20  Kevin Buettner  <kevinb@redhat.com>

	* solib-svr4.c (fetch_link_map_offsets): Add comment.
	(fetch_link_map_offsets_init): New static global.
	(set_solib_svr4_fetch_link_map_offsets, init_fetch_link_map_offsets):
	Revise implementation to use ``fetch_link_map_offsets_init''
	instead of ``fetch_link_map_offsets''.

2001-09-20  Alan Modra  <amodra@bigpond.net.au>

	* coffread.c: Replace all occurrences of bfd_read with bfd_bread.
	* dbxread.c: Likewise.
	* dwarf2read.c: Likewise.
	* dwarfread.c: Likewise.
	* somread.c: Likewise.
	* ultra3-nat.c: Likewise.
	* xcoffread.c: Likewise.

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

	* cris-tdep.c (cris_get_signed_offset): Change return type to an
	explicitly signed char.

	* config/mcore/tm-mcore.h (mcore_virtual_frame_pointer): Update
	function signature to match recent tracepoint.c:encode_actions
	changes.
	* mcore-tdep.c (mcore_virtual_frame_pointer): Ditto.

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

	* thread.c (do_captured_thread_select): Add uiout parameter.
	(do_captured_list_thread_ids): Ditto.
	* breakpoint.c (do_captured_breakpoint_query): Ditto.

	* breakpoint.c (gdb_breakpoint_query): Update.  Use
	catch_exceptions.
	* thread.c (gdb_list_thread_ids): Ditto.
	(gdb_thread_select): Ditto.
	(thread_command): Pass uiout to gdb_thread_select.

	* gdb.h (gdb_breakpoint_query): Add parameter ui_out.
	(gdb_thread_select, gdb_list_thread_ids): Ditto.

2001-09-13  Kevin Buettner  <kevinb@redhat.com>

	From Ilya Golubev <gin@mo.msk.ru>:
	* solib.c (clear_solib): Call `remove_target_sections' to fix
	stale pointers in `struct target_ops'.
	* irix5-nat.c (clear_solib): Likewise.
	* osfsolib.c (clear_solib): Likewise.

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

	* monitor.c (monitor_load): Don't delete symtab users, or reset
	inferior_ptid.
	
	* monitor.c (monitor_load): Fix indentation.

2001-09-11  Jim Blandy  <jimb@redhat.com>

	* printcmd.c (print_scalar_formatted): Compare the length of the
	value against the lengths of the target's floating-point types,
	not the host's.  Add support for `long double'.

	* printcmd.c (print_scalar_formatted): Fix indentation.

2001-09-10  Jim Blandy  <jimb@redhat.com>

	* rom68k-rom.c (init_rom68k_cmds): Set the flag indicating that
	programs running on the board can produce output.

2001-09-10  Jason Molenda  (jmolenda@apple.com)

        * NEWS: "ANS/ISO C" -> "ISO C".
        * MAINTAINERS (write-after-approval):  Update my entry.

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

	* config/xm-aix4.h (MEM_FNS_DECLARED): Removed.

	* config/arm/xm-linux.h, config/ia64/xm-linux.h,
	config/m68k/xm-linux.h, config/mips/xm-linux.h,
	config/powerpc/xm-linux.h, config/sparc/xm-linux.h: Remove
	redundant inclusion of <unistd.h>.

	* gdbtypes.h (struct block): Add forward declaration.

2001-09-07  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (enum return_reason): Renumber so that all values are
	negative.
	(RETURN_MASK): Negate reason.
	(catch_exception_ftype): Declare.
	(catch_exceptions): Declare.
	* top.c (catcher): New function, based on catch_errors.  Add in
	parameter func_uiout and out parameters func_val, func_caught and
	func_cleanup.  Change type of func to catch_exceptions_ftype.
	Save/restore uiout.
	(struct catch_errors_args): Define.
	(do_catch_errors): New function.
	(catch_errors): Rewrite, use do_catch_errors and catcher.
	(catch_exceptions): New function, use catcher.

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

	Correctly parse register values provided by the monitor.
	* rom68k-rom.c: #include "value.h".
	(is_hex_digit, hex_digit_value, is_whitespace,
	rom68k_supply_one_register): New static functions.
	(rom68k_supply_register): Call rom68k_supply_one_register, instead
	of monitor_supply_register; the latter was incorrectly parsing 
	the values.
	* Makefile.in (rom68k-rom.o): Note that this now #includes value.h.

2001-09-07  Mark Kettenis  <kettenis@gnu.org>

	* config/rs6000/xm-rs6000.h (setpgrp): Remove macro.  GDB defaults
	to using setpgid if available now.

2001-09-06  Keith Seitz  <keiths@redhat.com>

	From Ian Roxborough  <irox@redhat.com>
	* configure.in: Use ITCL_LIB_FULL_PATH and
	ITK_LIB_FULL_PATH to set Itcl and Itk dependancies
	for gdb.
	* configure: Regenerated.

2001-09-06  Kevin Buettner  <kevinb@redhat.com>
	
	* dbxread.c (process_one_symbol): Don't use error result from
	find_stab_function_addr().
	* partial-stab.h (case 'F'): Likewise.

	* partial-stab.h (case 'f'): Make SOFUN_ADDRESS_MAYBE_MISSING
	code match that used for case 'F'.  This fixes the divergence
	that was introduced by my 1999-09-14 changes to partial-stab.h.

2001-09-05  Elena Zannoni  <ezannoni@redhat.com>

        * gdbarch.sh: Move include of dis-asm.h so it is generated earlier
        in gdbarch.h.
        (TARGET_PRINT_INSN): Multiarch.
        * gdbarch.h: Regenerate.
        * gdbarch.c: Regenerate.

        * arch-utils.c (legacy_print_insn): New function.
        * arch-utils.h (legacy_print_insn): Export.

        * cris-tdep.c (cris_delayed_get_disassembler): Use
        TARGET_PRINT_INSN, instead of tm_print_insn.
        * d10v-tdep.c (print_insn): Ditto.
        * d30v-tdep.c (print_insn): Ditto.
        * m32r-tdep.c (dump_insn): Ditto.
        * v850-tdep.c (v850_scan_prologue): Ditto.
        * mcore-tdep.c (mcore_dump_insn): Ditto.
        * sh-tdep.c (sh_gdbarch_init): Set print_insn gdbarch field.

2001-09-05  Jim Blandy  <jimb@redhat.com>

	* gdbtypes.h (struct type): Doc fix.

2001-09-04  Elena Zannoni  <ezannoni@redhat.com>

	From Daniel Jacobowitz  <drow@mvista.com>	
	* dbxread.c (free_header_files): Make global.
	(init_header_files): Likewise.
	* stabsread.h (free_header_files): Add prototype.
	(init_header_files): Likewise.
	* mdebugread.c (mdebug_build_psymtabs): Initialize
	properly before using the stabs debug reader.

2001-09-04  Elena Zannoni  <ezannoni@redhat.com>

	From Daniel Jacobowitz  <drow@mvista.com>	
	* dbxread.c (dbx_symfile_read): Only reinitialize
	the psymbol list if mainline or if both static
	and global lists are empty.
	* dwarf2read.c (dwarf2_build_psymtabs): Likewise.
	* dwarfread.c (dwarf_build_psymtabs): Likewise.
	* xcoffread.c (xcoff_initial_scan): Likewise.
	* os9kread.c (os9k_symfile_read): Likewise.
	
2001-09-04  Elena Zannoni  <ezannoni@redhat.com>

	From Daniel Jacobowitz  <drow@mvista.com>	
	* mdebugread.c (psymtab_to_symtab_1): Handle N_SO stabs without
	a name specially.

2001-09-01  Mark Kettenis  <kettenis@gnu.org>

	Make GDB use libiberty regex implementation.
	* gdb_regex.h: Normalize protection against multiple inclusion.
	Include "xregex.h" instead of "gnu-regex.h".
	* cli/cli-cmds.c: Include "gdb_regex.h" instead of "gnu-regex.h".
	* cli/cli-decode.c: Likewise.
	* Makefile.in (REGEX): Remove.
	(GDB_CFLAGS): Remove reference to gnu-regex.h in comment.
	(ADD_FILES, ADD_DEPS): Remove $(REGEX).
	(POSSLIBS): Remove.
	(TAGFILES_NO_SRCDIR): Remove $(POSSLIBS).
	(irix5-nat.o, solib.o, solib-svr4.o, source.o, symtab.o,
	xcoffsolib.o, cli-decode.o, cli-cmd.o): Replace gnu-regex.h with
	gdb_regex.h in list of dependencies.
	(gnu-regex.o): Remove rule.
	* gnu-regex.c, gnu-regex.h: Remove files.

2001-08-31  Jason Molenda  (jmolenda@apple.com)

	* c-valprint.c (c_val_print):  Second call to check_typedef ()
	is no longer necessary.

2001-08-31  Kevin Buettner  <kevinb@redhat.com>

	* ia64-tdep.c (examine_prologue): Don't let a branch unit nop
	terminate the prologue scan.

2001-08-30  Jim Blandy  <jimb@redhat.com>

	* symfile.c (sections_overlap): New function.
	(map_overlay_command): Call sections_overlap, instead of using
	incorrect logic to recognize overlapping sections.

	* symfile.c (load_command): Invalidate the overlay cache.

2001-08-30  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/xm-i386.h (HOST_BYTE_ORDER): Removed.

2001-08-29  Kevin Buettner  <kevinb@redhat.com>

	From 2001-08-07  Daniel Jacobowitz  <drow@mvista.com>:
	* solib-svr4.c (enable_break): Check the inferior link map
	before assuming the inferior PC is at the start of the dynamic
	loader.

2001-08-28  Andrew Cagney  <cagney@toribio.toronto.redhat.com>

	* frame.h (struct frame_info): Fix documentation on fields
	saved_regs, next and prev.

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

	* event-top.c (async_stop_sig) [HAVE_SIGPROCMASK]: Some
	gratuitious whitespace changes.
	[!HAVE_SIGPROCMASK]: Call sigsetmask if HAVE_SIGSETMASK is defined.
	* top.c: Remove redundant logic to define HAVE_SIGSETMASK.
	(sigsetmask) Don't define macro.
	(stop_sig) [HAVE_SIGPROCMASK]: Add bit of code snatched from
	async_stop_sig from event-top.c.
	[!HAVE_SIGPROCMASK]: Call sigsetmask if HAVE_SIGSETMASK is
	defined.
	* configure.in (AC_CHECK_FUNCS): Put functions in alphabetical
	order.  Add sigsetmask.
	(AC_FUNC_VFORK, AC_FUNC_ALLOCA): Reorder such that they're in
	alphabetical order.
	* config/xm-aix4.h, config/alpha/xm-alphalinux.h,
	config/i386/xm-cygwin.h, config/rs6000/xm-rs6000.h
	(HAVE_SIGSETMASK): Remove.
	* aclocal.m4, config.in, configure: Regenerated.

2001-08-26  Andrew Cagney  <ac131313@redhat.com>

	From 2001-06-29 Andrew Cagney  <ac131313@redhat.com>:
	* config/powerpc/nbsd.mh (XM_FILE): Delete.

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

	* doublest.h (HOST_FLOAT_FORMAT): Delete macro.
	(HOST_DOUBLE_FORMAT): Delete macro.

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

	* config/xm-lynx.h, config/xm-nbsd.h, config/xm-sysv4.h,
	config/i386/xm-i386aix.h, config/m68k/xm-dpx2.h: Remove redundant
	inclusion of <limits.h>.

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

	* regcache.c (read_register_bytes): When REGISTER_NAME indicates
	that a register should be ignored, supply a value for the register
	from the raw registers[] buffer.

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

	* go32-nat.c (go32_create_inferior): Use xfree instead of free.
	* config/djgpp/fnchange.lst: Add entries for i386bsd-tdep.c and
	i386bsd-nat.c.

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

	* gdbtypes.h (builtin_type_ieee_single_big)
	(builtin_type_ieee_single_little, builtin_type_ieee_double_big)
	(builtin_type_ieee_double_little)
	(builtin_type_ieee_double_littlebyte_bigword)
	(builtin_type_i387_ext, 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)
	(builtin_type_ia64_quad_big)
	(builtin_type_ia64_quad_little): Declare.
	* gdbtypes.c (builtin_type_ieee_single_big)
	(builtin_type_ieee_single_little, builtin_type_ieee_double_big)
	(builtin_type_ieee_double_little)
	(builtin_type_ieee_double_littlebyte_bigword)
	(builtin_type_i387_ext, 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)
	(builtin_type_ia64_quad_big)
	(builtin_type_ia64_quad_little): Define.
	(_initialize_gdbtypes): Initialize builtin floatformat types.
	
2001-08-23  Mark Kettenis  <kettenis@gnu.org>

	* tracepoint.c (read_actions): Add FIXME for code depending on
	STOP_SIGNAL.

2001-08-23  Martin M. Hunt  <hunt@redhat.com>

	* remote-mips.c (pmon_load_fast): Add ui_load_progress_hook
	to download loop.
	(mips_load_srec): Ditto.

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

	* gdbtypes.c (build_gdbtypes): Initialize TYPE_FLOATFORMAT field
	of builtin_type_float, builtin_type_double and
	builtin_type_long_double.
	(recursive_dump_type): Print the floatformat name.
	* gdbtypes.h (struct type): Add type_specific field floatformat.
	(TYPE_FLOATFORMAT): Define

2001-08-21  Keith Seitz  <keiths@redhat.com>

	* printcmd.c (print_insn): Use the given stream for
	output.

2001-07-24  Andrew Cagney  <ac131313@redhat.com>

	* arm-tdep.c (convert_from_extended, convert_to_extended): Delete
	assembler version of function.
	(convert_from_extended, convert_to_extended): Rewrite. Use
	floatformat_to_doublest, floatformat_from_doublest,
	floatformat_arm_ext_big, floatformat_arm_ext_littlebyte_bigword.
	(arm_push_arguments): Use extract_floating and store_floating to
	perform floating point conversions.
	(SWAP_TARGET_AND_HOST): Delete macro.
	* arm-linux-tdep.c (arm_linux_push_arguments): Use
	extract_floating and store_floating to perform floating point
	conversions.

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

	* gdbtypes.h (struct type): Clarify meaning of field ``length''.

2001-08-17  Keith Seitz  <keiths@redhat.com>

	* varobj.c (varobj_update): Change first parameter to
	pointer to struct varobj*. This function can delete
	varobjs, so we need to give callers the new varobj
	when this happens.
	(value_of_root): Update "var", too, if "var_handle"
	changes.
	* varobj.h (varobj_update): Likewise.

2001-08-17  Keith Seitz  <keiths@redhat.com>

	* Makefile.in (varobj_h): Define.
	(mi-cmd-var.o): Depends on varobj_h.
	(gdbtk-varobj.o): Change varobj.h to $(varobj_h).

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

	* configure.in (GDBTK_SRC_DIR): We must have autoconf
	give us the absolute path to the source directory.
	* configure: Regenerated.
	* Makefile.in (GDBTK_SRC_DIR): Add variable so that
	autoconf can substitue it in for us.
	(gdbtk.o): Pass in GDBTK_SRC_DIR instead of srcdir. We
	really do need an absolute pathname.

2001-08-15  Keith Seitz  <keiths@redhat.com>

	* Makefile.in (GDBTK_VERSION): Set a version number.
	(GDBTK_LIBRARY): New variable to point to location where
	gdbtk will install its tcl library. Changed all refereneces
	to $(datadir)/insight1.0 to $(GDBTK_LIBRARY).
	(SUBDIR_GDBTK_ALL): Remove "all-gdbtk". No longer needed.
	(SUBDIR_GDBTK_CLEAN): Remove "clean-gdbtk". No longer needed.
	(all-gdbtk): Remove.
	(install-gdbtk): Remove.
	(gdbtk.o): Pass srcdir to file when compiling.

2001-08-15  Ian Roxborough  <irox@redhat.com>

	* Makefile.in: Changed all references to the install directory
	"gdbtcl" to read "insight1.0".

2001-08-15  Corinna Vinschen  <vinschen@redhat.com>

	* arch-utils.c (generic_skip_trampoline_code): New function.
	* arch-utils.h (generic_skip_trampoline_code): Declare external.
	* gdbarch.c: Regeberated from gdbarch.sh.
	* gdbarch.h: Ditto.
	* gdbarch.sh (SKIP_TRAMPOLINE_CODE): Multi-arch.
	* infrun.c: Remove default setting of SKIP_TRAMPOLINE_CODE macro.

2001-08-14  Daniel Jacobowitz  <drow@mvista.com>
	    H.J. Lu  (hjl@gnu.org)

	* partial-stab.h: valu should be a CORE_ADDR.

2001-08-14  H.J. Lu  (hjl@gnu.org)

	* dbxread.c (SWAP_SYMBOL): Removed.
	(INTERNALIZE_SYMBOL): Check sign extended vma.

2001-08-13  Christopher Faylor  <cgf@cygnus.com>

	* top.c (SIGSETJMP): Protect env argument with parentheses.
	(SIGLONGJMP): Protect env argument with parentheses.

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

	* config/mn10300/mn10300.mt (TM_FILE): Delete.
	* configure.tgt: Add mn10300 to list of mulit-arch targets.
	* config/mn10300/tm-mn10300.h: Delete file. Move contents ...
	* mn10300-tdep.c: To here.

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

	* config/i386/tm-symmetry.h (REGISTER_CONVERT_TO_VIRTUAL): Make
	val a DOUBLEST.  Use floatformat_to_doublest.
	(REGISTER_CONVERT_TO_RAW): Ditto.  Use foatformat_from_doublest.
	* config/m88k/tm-m88k.h (REGISTER_CONVERT_TO_VIRTUAL): Ditto.
	(REGISTER_CONVERT_TO_RAW): Ditto.

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

	* config/mn10300/tm-mn10300.h (PC_REGNUM, SP_REGNUM): Delete.
	* mn10300-tdep.c (mn10300_gdbarch_init): Initialize pc_regnum and
	sp_regnum.

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

	* doublest.c (convert_doublest_to_floatformat): Rename
	floatformat_from_doublest.  Make static.
	(convert_floatformat_to_doublest): Rename floatformat_to_doublest.
	Make static.
	(floatformat_to_doublest): New function.
	(floatformat_from_doublest): New function.
	(host_float_format, host_double_format, host_long_double_format):
	New static variables.
	(store_floating, extract_floating): Always use
	floatformat_to_doublest and floatformat_from_doublest.
	* doublest.h (HOST_LONG_DOUBLE_FORMAT): Delete macro.

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

	* config/mn10300/tm-mn10300.h (INIT_FRAME_PC): Delete.
	* mn10300-tdep.c (mn10300_gdbarch_init): Initialize init_frame_pc.

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

	* target.h (TARGET_VIRTUAL_FRAME_POINTER): Delete, multi-arched.
	* gdbarch.sh (TARGET_VIRTUAL_FRAME_POINTER): Add.
	* gdbarch.h, gdbarch.c: Regenerate.

	* arch-utils.h (legacy_virtual_frame_pointer): Declare.
	* arch-utils.c: Include "gdb_assert.h".
	(legacy_virtual_frame_pointer): Define.
	* Makefile.in (arch-utils.o): Depends on gdb_assert.h.

	* tracepoint.c (encode_actions): Make frame_reg an int.  Make
	frame_offset a LONGEST.
	* ax-gdb.c (gen_frame_args_address): Ditto.
	(gen_frame_locals_address): Ditto.
	* mn10300-tdep.c (mn10300_gdbarch_init): Initialize
	virtual_frame_pointer.
	(mn10300_virtual_frame_pointer): Make static.  Update parameter
	list to match function signature.
	* config/mn10300/tm-mn10300.h (TARGET_VIRTUAL_FRAME_POINTER): Delete.

2001-08-10  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh: Add architecture_changed event.
	* gdbarch.sh: Include gdb-event.h.
	(gdbarch_update_p): Notify UIs when architecture changes.
	* gdb-events.h: Regenerated.
	* gdb-events.c: Regenerated.
	* gdbarch.c: Regenerated.

2001-08-10  Michael Snyder  <msnyder@redhat.com>

	* regcache.c (legacy_write_register_gen): Don't 'optimize out'
	a write_register to a pseudo-reg.  Target_store_pseudo_register
	needs to get called, because these regs may be computed and may
	have side-effects.

2001-08-10  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh: Deal with event notifications with no
	arguments.

2001-08-10  Orjan Friberg  <orjanf@axis.com>

	* remote.c (read_frame): Correct off-by-one error in condition.

2001-08-08  Don Howard  <dhoward@redhat.com>

	* stabsread.c (read_type): Add support for const and volatile
	modifiers.

2001-08-02  Daniel Jacobowitz  <drow@mvista.com>

	* core-regset.c (fetch_core_registers):  Remove HAVE_GREGSET_T
	and HAVE_FPREGSET_T checks.  Use gdb_gregset_t and gdb_fpregset_t.

2001-08-02  Keith Seitz  <keiths@redhat.com>

	* defs.h (SLASH_STRING): If not defined, set
	to "/", regardless of _WIN32, __CYGWIN__, or
	whatnot.

2001-08-02  Mark Kettenis  <kettenis@gnu.org>

	* cli/cli-decode.h: Include "gdb_regex.h" instead of
	"gnu-regex.h".

	* NEWS: Update.

2001-08-02  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/i386/xm-go32.h: Include xm-i386.h.
	(HOST_BYTE_ORDER, HOST_LONG_DOUBLE_FORMAT): Remove definitions.

2001-08-02  Eli Zaretskii  <eliz@is.elta.co.il>

	The following changes avoid polluting global namespace with the
	`enable' and `disable' identifiers, because some platforms define
	in their system headers symbols with global scope that go by those
	names.

	* breakpoint.h (enum enable_state): Rename from `enum enable'.
	Also rename all the enum members to have the "bp_" prefix.
	(struct breakpoint): Rename the `enable' member to `enable_state'.
	(enum bpdisp): Rename all members to have the "disp_" prefix.

	* breakpoint.c: All users of `enum enable' and `enum bpdisp'
	changed.
	(args_for_catchpoint_enable): Rename the `enable' member to
	`enable_p'.  All users changed.

	* tracepoint.h (enum enable): Remove.
	(struct tracepoint): The member `enabled' is now `int enabled_p'.

	* tracepoint.c: All users of the `enabled' member changed.

	* printcmd.c (struct display): The `status' member is now an int.

	* memattr.h (struct mem_region): Rename the `status' member to
	`enabled_p'.
	(enum enable): Remove.

	* memattr.c: Change all users of the `status' member of struct
	mem_region to use `enabled_p' instead.

	* infcmd.c (run_stack_dummy): Use disp_del instead of del.

	* go32-nat.c: Remove the kludgey work-around for conflicts between
	<dos.h> and "breakpoint.h".

2001-08-02  Corinna Vinschen  <vinschen@redhat.com>

	* MAINTAINERS: Add myself to the write-after-approval list.
	* ser-tcp.c (tcp_open): Use `localhost' as default host if no
	hostname is given.

2001-08-01  Andrew Cagney  <ac131313@redhat.com>

	* doublest.h (store_floating, floatformat_to_doublest): Make IN
	paramter a const void pointer.
	(floatformat_from_doublest): Make IN const, Make OUT a void
	pointer.
	* doublest.c (floatformat_to_doublest): Update.
	(floatformat_from_doublest): Update.
	(extract_floating): Update.

2001-07-31  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (HOST_FLOAT_FORMAT, HOST_DOUBLE_FORMAT)
	(HOST_FLOAT_FORMAT, HOST_DOUBLE_FORMAT)
	(HOST_LONG_DOUBLE_FORMAT, DOUBLEST)
	(floatformat_to_doublest, floatformat_from_doublest)
	(floatformat_is_negative, floatformat_is_nan)
	(floatformat_mantissa, store_floating)
	(extract_floating): Move declaration from here.
	* doublest.h: To here.  New file.
	* utils.c (get_field, floatformat_to_doublest, put_field)
	(ldfrexp, floatformat_from_doublest, floatformat_is_negative)
	(floatformat_is_nan, floatformat_mantissa)
	(FLOATFORMAT_CHAR_BIT): Move from here.
	* doublest.c: To here.  New file.
	* findvar.c (store_floating, extract_floating): Move from here.
	* doublest.c: To here.
	* Makefile.in (SFILES): Add doublest.c.
	(COMMON_OBS): Add doublest.o.
	(doublest.o): Specify dependencies.
	(doublest_h): Define.

	* config/m88k/tm-m88k.h: Include "doublest.h".
	* config/i960/tm-i960.h: Ditto.
	* config/i386/tm-symmetry.h: Ditto.
	* rs6000-tdep.c, valarith.c: Ditto.
	* valprint.c, stabsread.c, sh-tdep.c: Ditto.
	* ia64-tdep.c, i387-tdep.c, i386-tdep.c: Ditto.
	* values.c, arm-tdep.c, arm-linux-tdep.c: Ditto.
	* alpha-tdep.c, ax.h, expression.h: Ditto.
	* sh-tdep.c, parse.c, top.c, value.h: Ditto.
	
	* Makefile.in (arm-tdep.o): Add $(doublest_h).
	(i386-tdep.o, i387-tdep.o, ia64-tdep.o): Ditto.
	(rs6000-tdep.o, stabsread.o, valarith.o): Ditto.
	(values.o, valprint.o, arm-linux-tdep.o): Ditto.
	(alpha-tdep.o, ax_h, parse.o, top.o, value_h): Ditto.
	(parser_defs_h): Ditto.
	(expression_h): Add $(doublest_h) and $(symtab_h).

2001-08-01  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in: Sort header definitions.
	(parser_defs_h, dis_asm_h, annotate_h, gdbthread_h): Define.
	Replace parser-defs.h with $(parser_defs_h).  Replace $(dis-asm_h)
	and $(dis-asm.h) with $(dis_asm_h).  Replace annotate.h with
	$(annotate_h).  Replace target.h with $(target_h).  Replace
	gdbthread.h with $(gdb_thread_h).  Replace symfile.h with $(symfile_h).

2001-07-31  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/xm-i386.h: New file.
	* config/i386/xm-fbsd.h: Removed.
	* config/i386/xm-linux.h: Removed.
	* config/i386/fbsd.mh: Reorganize a bit.
	(XM_FILE): Set to xm-i386.h instead of xm-fbsd.h.
	* config/i386/linux.mh (XM_FILE): Set to xm-i386.h insread of
	xm-linux.h.

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

	* dwarf2read.c (dwarf2_build_psymtabs_hard): Doc fix.

2001-07-27  Daniel Jacobowitz  <drow@mvista.com>

	* configure.in: Only invoke AC_FUNC_SETPGRP if not cross-compiling.
	Check for SETPGRP_VOID separately if cross-compiling and ISO C
	headers are available.

2001-07-30  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386sol2.h (STAB_REG_TO_REGNUM): Redefine to call
	i386_dwarf_reg_to_regnum.

	* i386-tdep.c (i386_register_convert_to_virtual): Replace
	assertion with a warning if we're asked to convert towards a
	non-floating-point type.  Zero out the the buffer where the data
	is supposed to be stored in that case.

2001-07-29  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/djconfig.sh: Unset CDPATH.

	* go32-nat.c (get_cr3): Temporary disable support for page tables
	in UMBs, as it is incomplete.

	Support for stepping through longjmp in DJGPP programs:

	* config/i386/tm-go32.h (JB_ELEMENT_SIZE, JB_PC): New macros.
	(GET_LONGJMP_TARGET): Define to call get_longjmp_target.
	(get_longjmp_target): Add prototype.

2001-07-28  Andrew Cagney  <ac131313@redhat.com>

	Fix some PID/TPID fallout for HP/UX.
	From 2001-07-22 Rodney Brown <rbrown64@csc.com.au>:
	* infttrace.c (ptrace_wait): Match external declaration,
	and match target_post_wait declaration.

2001-07-28  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add Orjan Friberg as cris target maintainer.
	(cris): Set --enable-gdb-build-warnings flag to -w.

2001-07-28  Andrew Cagney  <ac131313@redhat.com>

	From 2001-07-23 Andreas Schwab <schwab@suse.de>:
	* config/m68k/tm-m68k.h (TARGET_LONG_DOUBLE_FORMAT): Define.
	(TARGET_LONG_DOUBLE_BIT): Define.
	(REGISTER_VIRTUAL_SIZE): Return 12 for floating point registers.
	(MAX_REGISTER_VIRTUAL_SIZE): Increase to 12.
	(REGISTER_VIRTUAL_TYPE): Return builtin_type_long_double for
	floating point registers.
	(REGISTER_CONVERTIBLE, REGISTER_CONVERT_TO_VIRTUAL)
	(REGISTER_CONVERT_TO_RAW): Remove.
	* config/m68k/xm-linux.h (HOST_LONG_DOUBLE_FORMAT): Define.

2001-07-26  Andrew Cagney  <ac131313@redhat.com>

	* thread.c, breakpoint.c: Include "gdb.h".
	* Makefile.in (gdb_h): Define.
	(HFILES_NO_SRCDIR): Add gdb.h.
	(mi-cmd-break.o, mi-main.o, thread.o)
	(breakpoint.o): Add dependency on $(gdb_h).

	* defs.h (enum gdb_rc, gdb_breakpoint_query)
	(gdb_breakpoint, gdb_thread_select)
	(gdb_list_thread_ids): Move declaration from here ...
	* gdb.h: To here.  New file.

2001-07-28  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* Makefile.in (SUBDIR_TUI_OBS): Add tui-out.o, tui-hooks.o.
	(SUBDIR_TUI_SRCS): Add tui-out.c tui-hooks.c
	(SFILES): Likewise.
	(tui-out.o): Define dependencies.
	(tui-hooks.o): Likewise.

2001-07-28  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Update e-mail address of active @cygnus.com
	maintainers to @redhat.com.

2001-07-28  Andrew Cagney  <ac131313@redhat.com>

	* README (Known bugs): Delete section.
	(Kernel debugging): Delete section.
	(Languages other than C): Delete section.
	(Host/target specific installation notes) New section.

2001-07-28  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-i386.h (STAB_REG_TO_REGNUM, SDB_REG_TO_REGNUM,
	DWARF_REG_TO_REGNUM, DWARF2_REG_TO_REGNUM): New defines.
	(i386_stab_reg_to_regnum, i386_dwarf_reg_to_regnum): New
	prototypes.
	* config/i386/tm-fbsd.h, config/i386/tm-i386gnu.h,
	config/i386/tm-linux.h (STAB_REG_TO_REGNUM): Redefine to call
	i386_dwarf_reg_to_regnum.
	* i386-tdep.c (i386_stab_reg_to_regnum, i386_dwarf_reg_to_regnum):
	New functions.

	* i386-tdep.c: Include "gdb_assert.h"
	(i386_register_convert_to_virtual): Fix such that it can handle
	conversion to any floating-point type.  Assert that we are dealing
	with a floating-point first.
	(i386_register_convert_to_raw): Assert that TYPE is a
	floating-point type with length 12.

2001-07-27  John R. Moore  <jmoore@redhat.com>

	* configure.in: Added dependency of gdb on tcl/tk libraries.
	* Makefile.in: Likewise.
	* configure: Regenerated with the above using autoconf.

2001-07-26  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c (sh_gdbarch_init): Use SH_DEFAULT_NUM_REGS instead of
	NUM_REGS.
	(SH_DEFAULT_NUM_REGS): Define.

2001-07-26  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (read_memory_region): Make sure the segment limit was
	indeed set, to work around a Windows 2000 bug.

2001-07-25  Daniel Jacobowitz  <drow@mvista.com>

	* infptrace.c (child_xfer_memory): Add cast to CORE_ADDR.
	* infttrace.c (child_xfer_memory): Likewise.
	* symm-nat.c (child_xfer_memory): Likewise.
	* gdbserver/low-hppabsd.c (read_inferior_memory): Likewise.
	(write_inferior_memory): Likewise.
	* gdbserver/low-linux.c (read_inferior_memory): Likewise.
	(write_inferior_memory): Likewise.
	* gdbserver/low-lynx.c (read_inferior_memory): Likewise.
	(write_inferior_memory): Likewise.
	* gdbserver/low-nbsd.c (read_inferior_memory): Likewise.
	(write_inferior_memory): Likewise.
	* gdbserver/low-sparc.c (read_inferior_memory): Likewise.
	(write_inferior_memory): Likewise.
	* gdbserver/low-sun3.c (read_inferior_memory): Likewise.
	(write_inferior_memory): Likewise.

2001-07-25  Eli Zaretskii  <eliz@is.elta.co.il>

	* README: Mention how to make gdb.pdf.

	* NEWS: Update.

2001-07-24  Stephen P. Smith <ischis2@home.com>

	* MAINTAINERS (Stephen P. Smith): Added to write after approval 
	list.

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

	* mips-tdep.c (mips_push_arguments): Add comment explaining
	problem with LE o32 GCC.

2001-07-23  Elena Zannoni  <ezannoni@redhat.com>

	* config/powerpc/aix.mh (MH_LDFLAGS): Don't set these, the Gnu linker
	doesn't understand them.

2001-07-23  Elena Zannoni  <ezannoni@redhat.com>

	* memattr.c (mem_info_command): Reformat output to look more like
	'info break' output.
	(_initialize_mem): Improve help.

2001-07-23  Mark Kettenis  <kettenis@gnu.org>

	* configure.in (AC_CHECK_FUNCS): Add setpggrp.
	(AC_FUNC_SETPGRP): Add.
	* aclocal.m4, configure, config.in: Regenerated.
	* inflow.c (gdb_setpgid): Get rid of NEED_POSIX_SETPGID and
	SETPGRP_ARGS.  Always use setpgid if it is available, fall back on
	setpgrp if it isn't.  Use SETPGRP_VOID (defined by autoconf) to
	distinguish between the two setpgrp flavours.
	* config/xm-sysv4.h, config/arm/xm-linux.h,
	config/i386/xm-i386aix.h, config/i386/xm-sco.h,
	config/i386/xm-linux.h, config/i386/xm-ptx.h,
	config/m68k/xm-linux.h, config/powerpc/xm-linux.h,
	config/sparc/xm-linux.h, config/sparc/xm-sun4sol2.h,
	config/ia64/xm-linux.h (NEED_POSIX_SETPGID): Remove.
	* config/rs6000/xm-rs6000.h (SETPGRP_ARGS): Remove.

2001-07-23  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (read_memory_region): Set the granularity bit of the
	allocated segment according to its size, and adjust the limit to
	be page-aligned if the segment is page-granular.

	* (get_cr3, get_pde, get_pte, display_ptable_entry, go32_pde) 
	(display_page_table, go32_pte, go32_pte_for_address): New functions.
	(_initialize_go32_nat): Initialize and document them.

2001-07-22  Mark Kettenis  <kettenis@gnu.org>

	* i386gnu-nat.c: Include "i387-nat.h".
	(struct env387): Removed.
	(reg_offset): Fix comment.
	(fetch_fpregs): Use FCTRL_REGNUM and FOP_REGNUM instead of
	FIRST_FPU_CONTROL_REGNUM and LAST_FPU_CONTROL_REGNUM.  Rewrite to
	use i387_supply_fsave.
	(gnu_fetch_registers): Remove spurious whitespace.
	(convert_to_env387): Remove.
	(store_fpregs): Add argument regno.  Use i387_fill_fsave instead
	of convert_to_env387.
	(gnu_store_registers): Remove spurious whitespace.  Pass REGNO to
	store_fpregs.
	* config/i386/i386gnu.mt (TDEPFILES): Add i387-tdep.o.
	* config/i386/i386gnu.mh (XDEPFILES): Remove i387-tdep.o.
	(NATDEPFILES): Add i387-nat.o.

2001-07-22  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* Makefile.in (ALLDEPFILES): Add m68hc11-tdep.c.
	(m68hc11-tdep.o): Define dependencies.

2001-07-22  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (m68hc11_gdbarch_init): Define int at 16-bits.

2001-07-21  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* utils.c (init_page_info): Use tui_get_command_dimension.
	* printcmd.c (disassemble_command): Simplify tui specific code,
	use tui_is_window_visible, tui_show_assembly.

2001-07-21  Mark Kettenis  <kettenis@gnu.org>

	* i386bsd-nat.c: Do not include <sys/sysctl.h>.
	(_initialize_i386bsd_nat) [KERN_PS_STRINGS]: Move FreeBSD-specific
	code to ...
	* i386fbsd-nat.c: ... here.  New file.
	* config/i386/fbsd.mh (NATDEPFILES): Add i386-fbsd.o.
	* config/i386/nm-fbsd.h (CHILD_RESUME): Define.
	* Makefile.in (ALLDEPFILES): Add i386fbsd-nat.c.
	(i386fbsd-nat.o): Add dependencies.
	
2001-07-19  Daniel Jacobowitz  <drow@mvista.com>

	* signals.c: New file.
	* Makefile.in: Add signals.o.
	* target.c (struct signals, target_signal_to_name)
	(target_signal_from_name, target_signal_from_host)
	(do_target_signal_to_host, target_signal_to_host_p)
	(target_signal_to_host, target_signal_from_command): Move to
	signals.c.
	(initialize_targets): Move check of struct signals to...
	* signals.c (_initialize_signals): Here.

2001-07-19  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add Michael Chastain as C++ testsuite maintainer.

2001-07-19  Andrew Cagney  <ac131313@redhat.com>

	From Stephen Smith:
	* configure.tgt (i*86-*-pe*): New target.

2001-07-19  Andrew Cagney  <ac131313@redhat.com>

	From 2001-07-16 Rodney Brown <rbrown64@csc.com.au>:
	* infttrace.c (child_thread_alive): Fix gdb_tid typo.
	* somsolib.c (no_shared_libraries): Provide stub.
	* xcoffsolib.c (no_shared_libraries): Provide stub.

2001-07-18  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* Makefile.in (COMMON_OBS): Remove tui-file.o.
	(SUBDIR_TUI_OBS): Add it here.
	(SUBDIR_TUI_SRCS): Move tui-file.c and tui-file.h here.
	(main.o): Remove dependency with tui-file.h.

2001-07-17  Elena Zannoni  <ezannoni@redhat.com>

	* Makefile.in (tui-file.o): Update dependencies.

2001-07-17  Elena Zannoni  <ezannoni@redhat.com>

	* top.c (catch_errors): Convert PTR to void * in parameters list.
	(quit_cover): Ditto.

2001-07-17  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* source.c (find_source_lines): Remove tui test, must be replaced
	by appropriate warning hook.
	(print_source_lines): Remove tui hacks, must be replaced by cli.
	(forward_search_command): Remove tui hacks, can be replaced by
	appropriate calls to identify_source_line when tui scrolls.
	(reverse_search_command): Likewise.

2001-07-16  Nick Duffek  <nsd@redhat.com>

	* remote.c (init_remote_ops, init_remote_cisco_ops,
	init_remote_async_ops): Set to_pid_to_str and
	to_extra_thread_info correctly and in the same order as declared
	in target.h.

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

	* remote.c: Revert below.  Included more than intended.

2001-07-16  Nick Duffek  <nsd@redhat.com>

	* remote.c (init_remote_ops, init_remote_cisco_ops,
	init_remote_async_ops): Set to_pid_to_str and
	to_extra_thread_info correctly and in the same order as declared
	in target.h.

2001-07-16  Nick Duffek  <nsd@redhat.com>

	* findvar.c (read_var_value): Apply value_as_pointer() to
	addresses retrieved from the target for LOC_BASEREG and
	LOC_BASEREG_ARG variables.

2001-07-16  Orjan Friberg  <orjanf@axis.com>

	* NEWS: New target CRIS.

2001-07-16  Elena Zannoni  <ezannoni@redhat.com>

        * top.c (show_commands): Remove extern decl of history_get, it's
	already in readline/history.h.
	
2001-07-16  Elena Zannoni  <ezannoni@redhat.com>

        * top.c (is_complete_command, init_cmd_lists, init_cli_cmds,
        execute_user_command, do_setshow_command, get_prompt, init_proc,
        serial_log_command): Remove extern declarations.  Include
        cli/cli-cmds.h, cli/cli-script.h, cli/cli-setshow.h, serial.h.
        * gdbcmd.h (execute_user_command): Remove declaration, it's already
        in cli/cli-script.h.
        * command.h (do_setshow_command): Remove declaration, it's already
        in cli/cli-setshow.h.
        * infrun.c: Include "cli/cli-script.h" for execute_user_command.
        * Makefile.in (infrun.o): Update dependencies.
        (top.o): Ditto.
        * cli/cli-setshow.h: Add comment for do_setshow_command.

2001-07-16  Eli Zaretskii  <eliz@is.elta.co.il>

	* cli/cli-cmds.c (shell_escape) [GLOBAL_CURDIR]: Condition the
	call to chdir on this symbol rather than on __DJGPP__.
	(CANT_FORK) [__MSDOS__]: Move from here...
	* defs.h (CANT_FORK) [__MSDOS__]: ...to here.
	(GLOBAL_CURDIR) [__MSDOS__]: Define.

2001-07-16  Orjan Friberg  <orjanf@axis.com>

	* configure.tgt: Recognise the CRIS architecture.
	* config/cris/cris.mt: New file for CRIS target.
	* cris-tdep.c: New file for CRIS target.
	
2001-07-15  Elena Zannoni  <ezannoni@redhat.com>

	* top.c (quit_cover, float_handler): Move definition up before use.
	(gdb_init): Move to end of file, to avoid calls to not yet defined
	functions.  
	Delete prototypes.
	
2001-07-14  Andrew Cagney  <ac131313@redhat.com>

	* serial.h (SERIAL_ASYNC): Delete.
	(DEPRECATED_SERIAL_FD): Delete.
	(SERIAL_DEBUG): Delete.
	(SERIAL_DEBUG_P): Delete.
	(SERIAL_DRAIN_OUTPUT): Delete.
	(SERIAL_FLUSH_OUTPUT): Delete.
	(SERIAL_FLUSH_INPUT): Delete.
	(SERIAL_SEND_BREAK): Delete.
	(SERIAL_RAW): Delete.
	(SERIAL_GET_TTY_STATE): Delete.
	(SERIAL_SET_TTY_STATE): Delete.
	(SERIAL_PRINT_TTY_STATE): Delete.
	(SERIAL_NOFLUSH_SET_TTY_STATE): Delete.
	(SERIAL_SETBAUDRATE): Delete.
	(SERIAL_SETSTOPBITS): Delete.
	(SERIAL_CAN_ASYNC_P): Delete.
	(SERIAL_IS_ASYNC_P): Delete.
	(SERIAL_UN_FDOPEN): Delete.
	(SERIAL_READCHAR): Delete.
	(SERIAL_CLOSE): Delete.
	(SERIAL_FDOPEN): Delete.
	(SERIAL_OPEN): Delete.
	* ser-unix.c: Update.
	* sparclet-rom.c: Update.
	* remote-bug.c: Update.
	* dsrec.c: Update.
	* xmodem.c: Update.
	* nindy-share/ttyflush.c: Update.
	* nindy-share/Onindy.c: Update.
	* utils.c: Update.
	* serial.c: Update.
	* remote-nindy.c: Update.
	* inflow.c: Update.
	* sparcl-tdep.c: Update.
	* sh3-rom.c: Update.
	* remote.c: Update.
	* remote-utils.c: Update.
	* remote-st.c: Update.
	* remote-sds.c: Update.
	* remote-rdp.c: Update.
	* remote-os9k.c: Update.
	* remote-nrom.c: Update.
	* remote-mips.c: Update.
	* remote-es.c: Update.
	* remote-e7000.c: Update.
	* remote-array.c: Update.
	* ocd.c: Update.
	* nindy-share/nindy.c: Update.
	* monitor.c: Update.
	
2001-07-14  Andrew Cagney  <ac131313@redhat.com>

	* mn10200-tdep.c: Replace value_ptr with ``struct value *''.
	* mcore-tdep.c: Ditto.
	* sparc-tdep.c: Ditto.
	* sh-tdep.c: Ditto.
	* rs6000-tdep.c: Ditto.
	* ppc-linux-tdep.c: Ditto.
	* m68hc11-tdep.c: Ditto.
	* ia64-tdep.c: Ditto.
	* i386-tdep.c: Ditto.
	* arm-linux-tdep.c: Ditto.
	* hppa-tdep.c: Ditto.
	* h8500-tdep.c: Ditto.
	* fr30-tdep.c: Ditto.
	* arm-tdep.c: Ditto.
	* alpha-tdep.c: Ditto.
	* d30v-tdep.c: Ditto.
	* d10v-tdep.c: Ditto.
	* m32r-tdep.c: Ditto.
	* mips-tdep.c: Ditto.
	* v850-tdep.c: Ditto.

2001-07-15  Elena Zannoni  <ezannoni@redhat.com>
 
	* top.c (readline_line_completion_function, noop_completer): Move
 	from here...  
	* completer.c (readline_line_completion_function, noop_completer):
 	...to here.
	* gdbcmd.h (readline_line_completion_function, noop_completer):
 	Move declarations from here...  
	* completer.h (readline_line_completion_function, noop_completer):
 	...to here.
	* corefile.c: Include completer.h.
	* source.c: Ditto.
	* symfile.c: Ditto.
	* Makefile.in: Update dependencies.

2001-07-15  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (go32_create_inferior): Support command lines longer
	than 126 characters.

2001-07-14  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* NEWS: New target 68HC11/68HC12.

2001-07-14  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* utils.c (query): Remove tui hacks; tui must use the query_hook.
	* top.c (command_loop): Remove tui insert_mode hacks; don't call
	tuiCleanUp because this must be made with atexit by tui.
	* symfile.c (symbol_file_command): Remove call to TUIDO
	* stack.c (show_and_print_stack_frame_stub): Remove tui check;
	not necessary when using the selected frame hooks.
	(print_stack_frame_stub): Likewise.
	(print_frame_info_base): Likewise.
	(print_frame_info): Likewise.
	(up_silently_command): Likewise.
	(down_silently_command): Likewise.
	(show_stack_frame): Likewise for TUIDO.
	(select_frame): Likewise.
	(select_and_print_frame): Likewise.
	(stack_publish_stopped_with_no_frame): Remove.
	(select_and_maybe_print_frame): Remove.
	* main.c (captured_main): Remove tui_fileopen and tuiInit; tui
	must use the initialize ui hook.
	* infrun.c (normal_stop): Remove call to TUIDO; tui must use the
	selected frame hooks.
	* event-top.c (command_handler): Remove tui insert_mode hack.
	* defs.h: Remove TUIDO; Only include tui.h.
	* breakpoint.c (mention): Remove calls to TUIDO.
	(delete_breakpoint): Remove tui hacks; tui must install
	the breakpoint hooks.

2001-07-14  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/xm-linux.h (KERNEL_U_ADDR): Move from here...
	* config/i386/nm-linux.h: ...to here.  Change comments about user
	area/struct a bit.

	* config/i386/xm-linux.h (HAVE_TERMIOS): Really remove.

	* Makefile.in (ALLDEPFILES): Add i386bsd-nat.c and i386bsd-tdep.c
	(i386bsd-tdep.o, i386bsd-nat.o): New targets.

2001-07-13  Elena Zannoni  <ezannoni@redhat.com>

	* remote-e7000.c (fetch_regs_from_dump): If register set is null,
	generate an internal error.
	(e7000_fetch_registers): Initialize variable 'wanted'.
	(e7000_wait): Initialize variable 'wanted_nopc'.
	(e7000_store_register): Fix sprintf compiler warnings.
	(sub2_from_pc): Ditto.
	(e7000_open): Close the descriptor, not the name.
	(e7000_load): Fix compiler warnings.
	(sub2_from_pc): Ditto.
	* Makefile.in (remote-e7000.o): Can now compile with -Werror.

2001-07-13  Mark Kettenis  <kettenis@gnu.org>

	* i386bsd-nat.c: Include <signal.h>, <stddef.h> and
	<sys/sysctl.h>.
	(store_inferior_registers): Wrap long line.
	(i386bsd_dr_get_status): Fix typo in comment.
	(_initialize_i386bsd_nat): New function.  * i386bsd-tdep.c: New
	file.  * config/i386/tm-fbsd.h (IN_SIGTRAMP): New define.
	(i386bsd_in_sigtramp): New prototype.
	(SIGTRAMP_START, SIGTRAMP_END): Redefine in terms...
	(i386bsd_sigtramp_start, i386bsd_sigtramp_end): ...these new
	(external) variables.
	(SIGCONTEXT_PC_OFFSET): Removed.
	(FRAME_SAVED_PC): New define.
	(i386bsd_frame_saved_pc): New function.  * config/i386/fbsd.mt
	(TDEPFILES): Add i386bsd-tdep.o.

2001-07-12  Daniel Jacobowitz  <drow@mvista.com>

	* mips-linux-tdep.c (_initialize_mips_linux_tdep):  Use ISO C
	definition.

2001-07-13  Mark Kettenis  <kettenis@gnu.org>

	* lin-lwp.c (lin_lwp_wait): Avoid check for resumed LWPs if there
	are no registered LWPs yet.

2001-07-12  Daniel Jacobowitz  <drow@mvista.com>

	* config/i386/nm-linux.h (CANNOT_FETCH_REGISTER): Call the right
	function.
	(CANNOT_STORE_REGISTER): Likewise.

2001-07-12  Keith Seitz  <keiths@redhat.com>

	* remote-rdp.c: Include "serial.h"

2001-07-12  Daniel Jacobowitz  <drow@mvista.com>

	* gdbserver/remote-utils.c (remote_open):  Set VMIN to 1
	in HAVE_TERMIO/HAVE_TERMIOS cases.

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

	* lin-lwp.c (stop_wait_callback): Add support for flushing
	signals.  Use that in favour of the old code to get rid of
	superfluous SIGINTs.
	(lin_lwp_wait): Use the new support in stop_wait_callback to
	flush all but one SIGINT.

	* i386-tdep.c (i386_extract_return_value): Undo 2001-07-11 changes
	to comment.
	(i386_store_return_value): Improve comments about storing
	floating-point return values.

	* config/arm/xm-linux.h, config/i386/xm-linux.h,
	config/m68k/xm-linux.h, config/powerpc/xm-linux.h,
	config/sparc/xm-linux.h, config/ia64/xm-linux.h (HAVE_TERMIOS):
	Removed.  Taken care of by autoconf and terminal.h.

2001-07-12  Daniel Jacobowitz  <drow@mvista.com>

	* mips-tdep.c (mips_type_needs_double_align): New function.
	(mips_push_arguments): Align o32 structs to even argument
	registers if necessary.

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

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

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

	* config/powerpc/xm-linux.h: Fix corrupted file.

	* configure.in: Add check for sigsetjmp.
	* config/m68k/xm-linux.h (HAVE_SIGSETJMP): Removed.
	* config/xm-sysv4.h (HAVE_SIGSETJMP): Removed.
	* configure, config.in: Regenerated.

2001-07-11  Elena Zannoni  <ezannoni@redhat.com>

	* config/sh/tm-sh.h (struct gdbarch_tdep): Add
	FLOAT_ARGLAST_REGNUM, RETURN_REGNUM, ARG0_REGNUM, ARGLAST_REGNUM,
	PR_REGNUM fields.

	* sh-tdep.c (sh_skip_prologue_hard_way): Rename from
	skip_prologue_hard_way().
	(skip_prologue_hard_way): Make it a function pointer.
        (sh_print_register): Use function pointer do_pseudo_register,
	instead of sh_do_pseudo_register.
        (sh_do_registers_info): Ditto.
        (sh_gdbarch_init): Initialize do_pseudo_register.
	(IS_MOV_TO_R14): Rename from IS_MOV_R14.
	(skip_prologue_hard_way): Update.
	(sh_gdbarch_init): Move setting of frame_chain,
	get_saved_register, init_extra_frame_info, push_arguments,
	extract_return_value, pop_frame, store_struct_return,
	extract_struct_value_address, use_struct_convention,
	init_extra_frame_info to before target specific settings.
	(sh_gdbarch_init): Initialize new tdep fields
	FLOAT_ARGLAST_REGNUM, RETURN_REGNUM, ARG0_REGNUM, ARGLAST_REGNUM,
	PR_REGNUM.
	(sh_push_arguments): Use new gdbarch_tdep fields
	{ARG0,ARGLAST}_REGNUM.
	(sh_saved_pc_after_call, sh_nofp_frame_init_saved_regs,
	sh_init_extra_frame_info, sh_push_return_address,
	sh_generic_show_regs, sh3_show_regs, sh3e_show_regs,
	sh3_dsp_show_regs, sh4_show_regs, sh_dsp_show_regs): Update to use
	gdbarch_tdep->PR_REGNUM.
	(dr_reg_base_num, fv_reg_base_num): Move to earlier in the file.
	
2001-07-11  Daniel Jacobowitz  <drow@mvista.com>

	* config/mips/tm-linux.h: Include "tm-linux.h" instead of copying
	from it.  Move definitions of REALTIME_LO and REALTIME_HI above
	include.

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

	* MAINTAINERS: List myself for MIPS/Linux
	port.

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

	* gdbserver/remote-utils.c (remote_open): Only
	check for F_SETOWN if we had F_SETFL and FASYNC.

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

	From Michael Fedrowitz  <michael.fedrowitz@informatik.uni-ulm.de>:

	* config/m68k/linux.mh: Remove core-regset.o.
	* m68klinux-nat.c: Fix comment.
	(supply_gregset): Change argument to elf_gregset_t *.
	(supply_fpregset): Change argument to elf_fpregset_t *.
	(fetch_core_registers): New function.
	(linux_elf_core_fns): Define.
	(_initialize_m68k_linux_nat): New function.

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

	* configure.tgt: Mark d10v as pure multi-arch.
	* config/d10v/tm-d10v.h: Delete file.
	* config/d10v/d10v.mt (TM_FILE): Delete.

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

	* serial.h (typedef serial_t): Delete. Replace all references to
	serial_t with `struct serial *'.
	* serial.c: Update.
	* nindy-share/ttyflush.c: Update.
	* nindy-share/ttyflush.c: Update.
	* nindy-share/Onindy.c: Update.
	* nindy-share/nindy.c: Update.
	* remote-rdp.c: Update.
	* remote-sds.c: Update.
	* remote-st.c: Update.
	* remote-nindy.c: Update.
	* remote-mips.c: Update.
	* remote-e7000.c: Update.
	* remote-os9k.c: Update.
	* remote-nrom.c: Update.
	* remote-es.c: Update.
	* remote-array.c: Update.
	* ocd.c: Update.
	* mon960-rom.c: Update.
	* dsrec.c: Update.
	* inflow.c: Update.
	* ser-e7kpc.c: Update.
	* sparclet-rom.c: Update.
	* srec.h: Update.
	* ser-tcp.c: Update.
	* ser-go32.c: Update.
	* sparcl-tdep.c: Update.
	* w89k-rom.c: Update.
	* utils.c: Update.
	* sh3-rom.c: Update.
	* remote.c: Update.
	* ser-pipe.c: Update.
	* ser-unix.c: Update.
	* ser-unix.h: Update.
	* xmodem.c: Update.
	* xmodem.h: Update.

2001-07-11  J.T. Conklin  <jtc@redback.com>

	From Greg McGary <greg@mcgary.org>:
	* gdbserver/remote-utils.c (remote_open): Set gdbserver as "owner"
	of SIGIO.
	(input_interrupt): Don't block on read, in case we got redundant
	SIGIO.  Don't gripe about redundant SIGIO.
	* gdbserver/low-hppabsd.c (mywait): Use waitpid().  Enable SIGIO
	handler while waiting.
	* gdbserver/low-linux.c (mywait): Likewise.
	* gdbserver/low-nbsd.c (mywait): Likewise.
	* gdbserver/low-sparc.c (mywait): Likewise.

2001-07-11  Keith Seitz  <keiths@redhat.com>

	* infrun.c (print_stop_reason): Add missing uiout field
	"reason" for SIGNAL_RECEIVED case.

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

	* config/alpha/nm-linux.h (TARGET_ELF64, PSIGNAL_IN_SIGNAL_H):
	Remove unused macro's.

	* config/powerpc/nm-linux.h (NO_SYS_REG_H): Remove, it's no longer
	used.

2001-07-11  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (info_dos_cmdlist): New variable.
	(go32_info_dos_command): New function.
	(_initialize_go32_nat): Convert all DOS-specific commands into
	subcommands of "info dos".  Suggested by Andrew Cagney
	<ac131313@redhat.com>.

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

	* config/nm-linux.h: Fix comments.

	* thread-db.c (enable_thread_event_reporting): Correct warning
	message about getting thread death breakpoint.
	Reported by John S Kallal <jskallal@home.com>.

	* i386-tdep.c (i386_extract_return_value): "Fix" comment.
	(i386_store_return_value): Frob FPU status and tag word to make
	sure the return value is the only value on the FPU stack.

	* config/tm-linux.h: Do not include <signal.h>.  Instead provide
	reasonable defaults for REALTIME_LO and REALTIME_HI if they're not
	already defined.
	* config/nm-linux.h: Include <signal.h>.
	[__SIGRTMIN] (REALTIME_LO, REALTIME_HI): Define to __SIGRTMIN and
	(__SIGRTMAX + 1) respectively.

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

	* mcore-rom.c: Include "serial.h".
	* Makefile.in (mcore-rom.o): Depends on "serial.h".

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

	* Makefile.in (remote-bug.o): Depends on serial.h.
	* remote-bug.c: Include "serial.h".
	* MAINTAINERS: Mark m88k target as buildable.
	* TODO: Update.

2001-07-10  Jim Blandy  <jimb@redhat.com>

	Clean up the D10V port so that GDB and the target program no
	longer disagree on how big pointers are.
	* findvar.c (value_from_register): Remove special case code for D10V.
	* printcmd.c (print_frame_args): Same.
	* valops.c (value_at, value_fetch_lazy): Same.
	* values.c (unpack_long): Same.
	* gdbarch.sh: Changes to effect the following:
	* gdbarch.h (GDB_TARGET_IS_D10V, D10V_MAKE_DADDR,
	gdbarch_d10v_make_daddr_ftype, gdbarch_d10v_make_daddr,
	set_gdbarch_d10v_make_daddr, D10V_MAKE_IADDR,
	gdbarch_d10v_make_iaddr_ftype, gdbarch_d10v_make_iaddr,
	set_gdbarch_d10v_make_iaddr, D10V_DADDR_P,
	gdbarch_d10v_daddr_p_ftype, gdbarch_d10v_daddr_p,
	set_gdbarch_d10v_daddr_p, D10V_IADDR_P,
	gdbarch_d10v_iaddr_p_ftype, gdbarch_d10v_iaddr_p,
	set_gdbarch_d10v_iaddr_p, D10V_CONVERT_DADDR_TO_RAW,
	gdbarch_d10v_convert_daddr_to_raw_ftype,
	gdbarch_d10v_convert_daddr_to_raw,
	set_gdbarch_d10v_convert_daddr_to_raw, D10V_CONVERT_IADDR_TO_RAW,
	gdbarch_d10v_convert_iaddr_to_raw_ftype,
	gdbarch_d10v_convert_iaddr_to_raw,
	set_gdbarch_d10v_convert_iaddr_to_raw): Delete declarations.
	* gdbarch.c: Delete the corresponding definitions.
	(struct gdbarch): Delete members d10v_make_daddr,
	d10v_make_iaddr, d10v_daddr_p, d10v_iaddr_p,
	d10v_convert_daddr_to_raw, and d10v_convert_iaddr_to_raw.
	(startup_gdbarch): Remove initializers for the above.
	(verify_gdbarch, gdbarch_dump): Don't verify or dump them any
	more.
	* d10v-tdep.c (d10v_register_virtual_type): Rather that
	claiming the stack pointer and PC are 32 bits long (which they
	aren't), say that the stack pointer is an int16_t, and the
	program counter is a function pointer.  This allows the rest
	of GDB to make the appropriate conversions between the code
	pointer format and real addresses.
	(d10v_register_convertible, d10v_register_convert_to_virtual,
	d10v_register_convert_to_raw): Delete function; no registers
	are convertible now, so we use
	generic_register_convertible_not instead.
	(d10v_address_to_pointer, d10v_pointer_to_address): New gdbarch
	methods.
	(d10v_push_arguments, d10v_extract_return_value): Remove special
	cases for code and data pointers.
	(d10v_gdbarch_init): Set gdbarch_ptr_bit to 16, so that GDB and
	the target agree on how large pointers are.  Say that addresses
	are 32 bits long.  Register the address_to_pointer and
	pointer_to_address conversion functions.  Since no registers are
	convertible now, register generic_register_convertible_not as the
	gdbarch_register_convertible method instead of
	d10v_register_convertible.  Remove registrations for
        d10v_register_convert_to_virtual,
	d10v_register_convert_to_raw, gdbarch_d10v_make_daddr,
	gdbarch_d10v_make_iaddr, gdbarch_d10v_daddr_p,
	gdbarch_d10v_iaddr_p, gdbarch_d10v_convert_daddr_to_raw, and
	gdbarch_d10v_convert_iaddr_to_raw.
	
	* printcmd.c (print_scalar_formatted): If we are printing an
	address, remember that TARGET_ADDR_BIT is not always equal to
	TARGET_PTR_BIT.

	* valops.c (value_cast): When casting a pointer to an integer,
	don't convert it to an address.

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

	* remote-utils.h (struct serial): Declare as opaque.  Remove
	include of "serial.h".
	* Makefile.in (remote_utils_h): Update.

	* monitor.h (struct serial): Declare as opaque.  Remove include of
	"serial.h".
	(struct monitor_ops): Replace serial_t with `struct serial *'.
	* monitor.c (monitor_desc): Ditto.

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

	* mips-linux-tdep.c: New file.
	* mips-linux-nat.c: New file.
	* config/mips/linux.mh: New file.
	* config/mips/linux.mt: New file.
	* config/mips/xm-linux.h: New file.
	* config/mips/nm-linux.h: New file.
	* config/mips/tm-linux.h: New file.
	* configure.host: Recognize mips*-*-linux*.
	* configure.tgt: Likewise.
	* NEWS: Mention mips*-*-linux* port.

2001-07-09  Andrew Cagney  <ac131313@redhat.com>

	* serial.h (struct serial): Rename `struct _serial_t'.
	* serial.c (XMALLOC): Define.
	(serial_open): Update. Use XMALLOC.
	(serial_fdopen): Ditto.

2001-07-07  Andrew Cagney  <ac131313@redhat.com>

	* gdbtypes.h (builtin_type_void_data_ptr): Rename
	builtin_type_ptr.
	* gdbtypes.c (builtin_type_void_data_ptr): Update.
	(build_gdbtypes): Update.
	(_initialize_gdbtypes): Update.
	* values.c (value_as_pointer): Update.
	* utils.c (host_pointer_to_address): Update.
	(address_to_host_pointer): Update.

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

	* remote-udi.c (udi_wait): Make type, instead of name, of first
	parameter a ptid_t.

2001-07-07  Andrew Cagney  <ac131313@redhat.com>

	* ser-mac.c: Make obsolete.
	* Makefile.in (ser-mac.o): Ditto.

2001-07-08  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c (go32_get_windows_version, print_mem, go32_sysinfo)
	(read_memory_region, get_descriptor, display_descriptor)
	(go32_sldt, go32_sgdt, go32_sidt): New functions.
	(top-level): Include ctype.h, utsname.h, dos.h, and go32.h.  Ifdef
	away `disable' from dos.h, since breakpoint.h defines an enum
	member of the same name, and GCC 2.7.2 barfs.
	(_initialize_go32_nat): Provide new commands dos-sysinfo, dos-ldt,
	dos-gdt, and dos-idt, all of them in the "info" class

2001-07-07  Kevin Buettner  <kevinb@redhat.com>

	* procfs.c (create_procinfo): Allocate space for saved_entryset
	and saved_exitset.
	(destroy_one_procinfo): Free space allocated to saved_entryset
	and saved_exitset.

2001-07-07  Andrew Cagney  <ac131313@redhat.com>

	* TODO (5.1): Update.

2001-07-07  Andrew Cagney  <ac131313@redhat.com>

	* symtab.c (main_name): New function.
	(set_main_name): New function.
	* symtab.h: Declare.
	* TODO: Update

	From 2000-03-05 Anthony Green <green@redhat.com>:
	* dbxread.c (process_one_symbol): Handle the N_MAIN stab by
	setting main_name.
	* blockframe.c (inside_main_func): Use main_name instead of
	"main".
	* symtab.c (find_main_psymtab): Ditto.
	* source.c (select_source_symtab): Ditto.
	* nlmread.c (nlm_symfile_read): Ditto.
	* rs6000-tdep.c (skip_prologue): Ditto.

2001-07-07  Andrew Cagney  <ac131313@redhat.com>

	* TODO: Convert most items into PRs.

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

	* lin-lwp.c (status_to_str): New function.
	(lin_lwp_wait): Use it to print debug messages where appropriate.

2001-07-06  Michael Chastain  <chastain@redhat.com>

	* i387-tdep.c (print_i387_value): Fix pointer glitch.

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

	* lin-lwp.c (count_events_callback): Fix formatting.  Turn check
	commented with "paranoia" into gdb_assert.
	(select_event_lwp_callback): Likewise.
	(cancel_breakpoints_callback): Bail out early if LP is the event
	LWP.  Add comment about backup up breakpoints.  Fix formatting and
	debug message.
	(select_event_lwp): Make solely repsonsible for switching event
	LWP.  Fix formatting and remove bogus "ERROR" debug message.
	Don't backup breakpoints from here.
	(lin_lwp_wait): Don't touch LP->status, let select_event_lwp
	handle that.  Only call select_event_lwp if we're not waiting for
	a specific LWP, i.e. when PID == -1.  Backup breakpoints from here.

2001-07-06  Michael Snyder  <msnyder@redhat.com>

	* procfs.c (procfs_resume): Silence noisy warning.

2001-06-12  Michael Snyder  <msnyder@redhat.com>

	* lin-lwp.c: Prevent thread starvation by using a monte carlo 
	method to choose which of several event threads to handle next.

	(stop_wait_callback): Defer pushback of breakpoint events until
	later; add SIGTRAP events to the queue of unhandled events.
	Keep calling waitpid until SIGSTOP retrieved.  If more than one
	non-SIGSTOP event is retrieved, push them back onto the process
	queue using kill.
	(count_events_callback, select_singlestep_lwp_callback, 
	select_event_lwp_callback, cancel_breakpoints_callback, 
	select_event_lwp): New functions.  Implement monte carlo method 
	for selecting which of several SIGTRAP threads to handle next.  
	Push back the breakpoint event for all threads other than the 
	selected one.
	(lin_lwp_wait): Call select_event_lwp to decide which of several
	sigtrapped lwps to handle next.
	(resume_callback): Disable code that attempts to handle
	step_resume breakpoints.  Let core gdb handle this.
	
2001-07-06  Jim Blandy  <jimb@redhat.com>

	* gdbtypes.h (builtin_type_void_func_ptr): New builtin type.
	* gdbtypes.c (builtin_type_void_func_ptr): Define the variable.
	(build_gdbtypes): Initialize it.
	(_initialize_gdbtypes): Swap it.

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

	* mips-tdep.c (mips32_op): Correct offset.
	(itype_op): Likewise.
	(itype_rs): Fix formatting.
	(itype_immediate): Fix formatting.
	(jtype_op): Correct offset.
	(jtype_target): Fix formatting.
	(rtype_op): Correct offset.
	(rtype_rs): Fix formatting.
	(rtype_rt): Likewise.
	(rtype_rd): Likewise.
	(rtype_shamt): Likewise.
	(rtype_funct): Likewise.

	(mips32_next_pc):  Fix formatting and comments.  Recognize
	coprocessor 1 branches.  Check the correct field for BLT family
	branches.  Use itype_rt instead of itype_rs for the second register
	of a BNE or BNEL branch.  Move (unreachable) default case.

2001-07-04  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.h (struct ui_out_impl): Add field is_mi_like_p.
	(ui_out_is_mi_like_p): Declare.
	* ui-out.c (ui_out_is_mi_like_p): Define.
	(default_ui_out_impl): Initialize is_mi_like_p to zero.
	* cli-out.c (cli_ui_out_impl): Ditto.
	* breakpoint.c (print_it_typical): Use ui_out_is_mi_like_p.
	(watchpoint_check, print_one_breakpoint, mention): Ditto.
	* infrun.c (print_stop_reason, normal_stop): Ditto.

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

	* mips-tdep.c (mips_software_single_step): New function.
	* config/mips/tm-mips.h: Add prototype for
	mips_software_single_step.

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

	* ppc-linux-nat.c (supply_gregset): Use elf_greg_t instead
	of greg_t.
	(fill_gregset): Likewise.

2001-07-05  Andrew Cagney  <ac131313@redhat.com>

	* objfiles.c (open_mapped_file): Use lbasename instead of
	basename.

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

	* d10v-tdep.c (d10v_frame_chain, d10v_frame_init_saved_regs,
	show_regs, d10v_read_pc, d10v_write_pc, d10v_read_sp,
	d10v_write_sp, d10v_write_fp, d10v_read_fp,
	d10v_push_return_address): Call the functions d10v_make_daddr,
	d10v_make_iaddr, d10v_convert_iaddr_to_raw, and
	d10v_convert_daddr_to_raw, not the global macros D10V_MAKE_DADDR,
	D10V_MAKE_IADDR, D10V_CONVERT_IADDR_TO_RAW, and
	D10V_CONVERT_DADDR_TO_RAW.

	* dwarf2read (dwarf2_build_psymtabs_hard): Doc fix.

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

	* config/i386/xm-go32.h (HOST_I386): Removed.
	* config/i386/xm-linux.h (HOST_I386): Removed.

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

	* i387-tdep.c (print_i387_value): Add extra space after final full
	stop in comment.

2001-07-04  Andrew Cagney  <ac131313@redhat.com>

	* TODO (5.1): Update.  Doco changes committed.

2001-06-29  Andrew Cagney  <ac131313@redhat.com>

	* config/arm/tm-arm.h: Include "floatformat.h".

2001-06-29  Andrew Cagney  <ac131313@redhat.com>

	* i387-tdep.c: Include "gdb_assert.h".
	(print_i387_value): Use extract_floating to extract the FP value
	from a zero padded local buffer.

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

	* TODO: Delete all thread items.  The thread code was overhauled.

2001-07-04  Elena Zannoni  <ezannoni@redhat.com>

	* memattr.c (create_mem_region): Move n to next memory region,
	to avoid infinite loop.

	* memattr.h: Add copyright statement.
	* memattr.c: Ditto.

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

	* dwarf2read.c (struct partial_die_info): New member: has_pc_info.
	(read_partial_die): Delete fourth argument; we return this info in
	the struct partial_die_info object itself now.
	(dwarf2_build_psymtabs_hard, scan_partial_symbols): Use the
	has_pc_info field of the partial die struct, rather than passing a
	variable by reference to read_partial_die.

	* dwarf2read.c (dwarf2_build_psymtabs_hard): Remove extraneous
	code in loop condition.

2001-07-03  Michael Snyder  <msnyder@redhat.com>

	* thread_db (find_new_threads_callback, thread_db_thread_alive, 
	attach_thread): Update comments.

2001-06-29  Ken Whaley  <ken@believe.com>

	* thread-db.c (attach_thread): Check for TD_THR_ZOMBIE in addition
	to TD_THR_UNKNOWN when looking for defunct zombie threads.
	(thread_db_thread_alive): Ditto.
	(find_new_threads_callback): Ditto.

2001-07-02  Daniel Jacobowitz  <drow@mvista.com>

	* MAINTAINERS: Add myself to the write-after-approval list.

2001-07-02  Daniel Jacobowitz  <drow@mvista.com>

	* solib-svr4.c: Include "elf/mips.h".
	(elf_locate_base): Make DT_MIPS_RLD_MAP block unconditional.

2001-07-02  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c (read_comp_unit, sibling_die, dump_die,
	dump_die_list, store_in_ref_table, follow_die_ref): Make these
	static; they're private functions.

2001-07-01  Mark Elbrecht <snowball@bigfoot.com>

	* coffread.c (coff_symfile_read): Parse DWARF2 info if present.

2001-06-28  Elena Zannoni  <ezannoni@redhat.com>

	* TODO: Add import of readline 4.2 as a gdb 5.2 task.

2001-06-29  Andrew Cagney  <ac131313@redhat.com>

	* config/djgpp/fnchange.lst: Sort.

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

	* config/djgpp/fnchange.lst: Rename mi0-var-block.exp,
	mi0-var-cmd.exp, mi0-var-child.exp and mi0-var-display.exp.

2001-06-29  Andreas Jaeger  <aj@suse.de>

	* MAINTAINERS: Add myself to the write-after-approval list.

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

	* remote-array.c (SWAP_TARGET_AND_HOST): Delete macro.
	(get_hex_word): Don't use HOST_BYTE_ORDER.
	(array_fetch_registers): Add variable ``reg''.  Use
	store_unsigned_integer to byte-swap the register.  Delete unused
	local ``regs''.

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

	* MAINTAINERS: Add Per Bothner to Java maintainers.

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

	* rdi-share/unixcomm.c (SERIAL_PREFIX): Always provide a default.
	* rdi-share/hostchan.h (__unix): Hack, provide a default value.
	* rdi-share/host.h (__unix): Hack, define when __NetBSD__.
	* TODO: Update.
	* MAINTAINERS: Update.  arm-elf builds.

2001-06-28  Jim Blandy  <jimb@redhat.com>

	* d10v-tdep.c (d10v_ts2_dmap_register): Doc fix.

	* d10v-tdep.c (d10v_frame_chain_valid, d10v_use_struct_convention,
	d10v_breakpoint_from_pc, d10v_register_byte,
	d10v_register_raw_size, d10v_register_virtual_size,
	d10v_register_virtual_type, d10v_register_convertible,
	d10v_register_convert_to_virtual, d10v_register_convert_to_raw,
	d10v_make_daddr, d10v_make_iaddr, d10v_daddr_p, d10v_iaddr_p,
	d10v_convert_iaddr_to_raw, d10v_convert_daddr_to_raw,
	d10v_store_struct_return, d10v_store_return_value,
	d10v_extract_struct_value_address, d10v_frame_saved_pc,
	d10v_saved_pc_after_call, d10v_pop_frame, d10v_skip_prologue,
	d10v_frame_chain, d10v_frame_init_saved_regs,
	d10v_init_extra_frame_info, d10v_read_pc, d10v_write_pc,
	d10v_read_sp, d10v_write_sp, d10v_write_fp, d10v_read_fp,
	d10v_push_return_address, d10v_push_arguments,
	d10v_extract_return_value): Make these functions static.

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

	From Fernando Nasser:
	* infrun.c (handle_inferior_event): Handle "nexti" inside function
	prologues.
	
2001-06-28  Michael Snyder  <msnyder@redhat.com>

	* infrun.c (handle_inferior_event): Replace prev_pc test in all
	calls to bpstat_stop_status (removed in 1999-09-24).  This test
	helps distinguish stepping over a breakpoint trap from stepping
	thru a jump to the instruction after a breakpoint trap.
	(handle_inferior_event): Don't bother writing the PC if
	DECR_PC_AFTER_BREAK is zero (optimization).
	* breakpoint.c (bpstat_stop_status): Add comment explaining the
	purpose and usage of the "not_a_breakpoint" argument in computing
	the breakpoint address.

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

	From 2000-12-03 Stephane Carrez <Stephane.Carrez@worldnet.fr>:
	* monitor.c (setmem_resp_delim_pattern): New regexp pattern.
	(setreg_resp_delim_pattern): Likewise.
	(setmem_resp_delim_fastmap): New buffer.
	(setreg_resp_delim_fastmap): Likewise.
	(monitor_open): Initialize above regexp if they are defined.
	(monitor_write_memory): Use regexp to check the result of write.
	(monitor_store_register): Likewise to check result of register set.

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

	From 2000-06-14 John Marshall <john_w_marshall@palm.com>:
	* coff-solib.c: Include symfile.h and objfiles.h to make
	OBJF_SHARED visible.

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

	* configure.in (--enable-gdbmi): Enable by default.
	* configure: Regenerate.
	* TODO: Update.
	* NEWS: Update

2001-06-28  Joel Brobecker  <brobecker@act-europe.fr>

        * solib-osf.c (osf_in_dynsym_resolve_code): Add a comment
        explaining the consequences of always returning zero. No code
        change.

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

	From 2001-06-08 Daniel Jacobowitz <djacobowitz@mvista.com>:
	* defs.h (enum target_signal): Add TARGET_SIGNAL_REALTIME_65
	to TARGET_SIGNAL_REALTIME_127.
	* target.c (struct signals): Add SIG63 to SIG127.
	(target_signal_from_host): Handle up to 127 signals.
	(do_target_signal_to_host): Likewise.
	
2001-06-27  Andrew Cagney  <ac131313@redhat.com>

	* remote-sds.c (sds_start_remote): Change type of ``c'' to int
	from possibly unsigned char.

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

	* ser-ocd.c: Delete file.
	* Makefile.in (ALLDEPFILES): Remove ser-ocd.c
	(ser-ocd.o): Delete target.
	* TODO: Update.
	* NEWS: Update.

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

	* MAINTAINERS (Write After Approval): Sort.
	(Past Maintainers): Daniel Berlin stepped down as C++ maintainer.

2001-06-26  Andrew Cagney  <ac131313@redhat.com>

	* breakpoint.c (breakpoint_1): Always output the breakpoint
	headings.  Leave it to ui-out to decide which

2001-06-25  Andrew Cagney  <ac131313@redhat.com>

	* stack.c (print_frame): For ui_out, output a list of arguments.

2001-06-25  Kevin Buettner  <kevinb@redhat.com>

	* MAINTAINERS (paper trail): Update.

2001-06-25  Michael Snyder  <msnyder@redhat.com>

	* infrun.c: Eliminate the "thread_step_needed" state variable, 
	and replace it with a relatively simple test in resume.
	(resume): Replace thread_step_needed logic with a test for
	stepping, breakpoint_here_p and breakpoints_inserted.
	Move CANNOT_STEP_BREAKPOINT logic to after thread_step logic.
	(proceed): Discard thread_step_needed logic.
	(wait_for_inferior, fetch_inferior_event, handle_inferior_event):
	Discard thread_step_needed logic.

2001-06-24  Fernando Nasser  <fnasser@redhat.com>

	* remote-rdi.c (arm_rdi_wait): Fix return type in prototype.
	* rdi-share/host.h: Add missing parenthesis in conditional.

2001-06-22  J.T. Conklin  <jtc@redback.com>

	* configure.in: include nlist.h when checking for member som_addr
	in struct so_map.
	* configure: regenerate.

2001-06-21  Keith Seitz  <keiths@redhat.com>

	* cli-out.c (cli_out_new): Initialize new structure member
	"suppress_output".

2001-06-20  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.h (ui_out_table_header): Add parameter ``col_name''.
	(table_header_ftype): Ditto.
	* cli-out.c (cli_table_header): Update.
	* ui-out.c (ui_out_table_header): Update.
	(uo_table_header): Update.
	(default_table_header): Update.
	(append_header_to_list): Update.
	(struct ui_out_header): Add field ``col_name''.
	(append_header_to_list): Use xstrdup.  Initialize col_name.
	* breakpoint.c (breakpoint_1): Pass COL_NAME to
	ui_out_table_header.

2001-06-19  Andrew Cagney  <ac131313@redhat.com>

	* cli-out.c: Include "gdb_assert.h'.
	(struct ui_out_data): Add field ``suppress_output.
	(cli_table_begin): When NR_ROWS is zero, suppress_output.
	(cli_table_end): Clear suppress_output.
	(cli_table_body): Check suppress_output.
	(cli_table_header, cli_begin): Ditto.
	(cli_end, cli_field_int, cli_field_skip): Ditto.
	(cli_field_string, cli_field_fmt, cli_spaces): Ditto.
	(cli_text, cli_message, cli_wrap_hint): Ditto.
	* breakpoint.c (breakpoint_1): Close the ui_out table before
	printing the breakpoint not found message.

2001-06-18  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.c (ui_out_table_begin): Add parameter ``nr_rows''.
	(default_table_begin): Ditto.
	(uo_table_begin): Ditto.
	* cli-out.c (cli_table_begin): Ditto.
	* ui-out.h (ui_out_table_begin): Update
	(table_begin_ftype): Update.
	* breakpoint.c (breakpoint_1): Pass nr_printable_breakpoints to
	ui_out_table_begin.

2001-06-16  Andrew Cagney  <ac131313@redhat.com>

	* breakpoint.c (breakpoint_1): Restructure.  Compute the
	nr_printable_breakpoints.  Move the header output to before the
	main print breakpoints loop.
	(user_settable_breakpoint): New function.

2001-06-18  Andrew Cagney  <ac131313@redhat.com>

	* infrun.c, breakpoint.c: Use strncmp as the "mi" test.  Allow,
	"mi", "mi0" and "mi1".

2001-06-17  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Generate an error when conflicting macro
	definitions.  Generate an error when both pure multi-arch and
	"tm.h".
	* gdbarch.h, gdbarch.c: Regenerate.
	* defs.h (GDB_MULTI_ARCH_TM): Rewrite definition.
	
2001-06-17  Andrew Cagney  <ac131313@redhat.com>

	* config/sparc/tm-sun4sol2.h (GDB_MULTI_ARCH): Down grade to
	GDB_MULTI_ARCH_PARTIAL from two.

2001-06-17  Fernando Nasser  <fnasser@redhat.com>

	From 2001-06-15  Eirik Fuller  <eirik@hackrat.com>
	* cli/cli-script.c (free_command_lines): Reset list pointer.

2001-06-16  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.c (init_frame_pc_default): New function
	* arch-utils.h (init_frame_pc_default): Declare.
	* gdbarch.sh (INIT_FRAME_PC): Default to init_frame_pc_default and
	not init_frame_pc_noop.
	* gdbarch.h, gdbarch.c: Re-generate.
	* blockframe.c (INIT_FRAME_PC): Delete macro definition.
	* mips-tdep.c (mips_gdbarch_init): Set init_frame_pc to
	init_frame_pc_noop.

2001-06-16  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.c: Regenerate.  Out-of-sync with gdbarch.sh.

2001-06-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (CANNOT_FETCH_REGISTER): Multi-arch.
	(CANNOT_STORE_REGISTER): Ditto.
	* infptrace.c (CANNOT_FETCH_REGISTER): Delete definition.
	(CANNOT_STORE_REGISTER): Ditto.
	* regcache.c (CANNOT_STORE_REGISTER): Ditto.
	* lynx-nat.c (CANNOT_STORE_REGISTER): Ditto.
	* arch-utils.h (cannot_register_not): Define.
	* arch-utils.c (cannot_register_not): Declare.
	
2001-06-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Clarify pre/post default
	(INIT_FRAME_PC_FIRST, INIT_FRAME_PC): Multiarch.
	* blockframe.c (get_prev_frame): Remove #ifdef from around
	INIT_FRAME_PC_FIRST call.
	* arch-utils.c (init_frame_pc_noop): Define.
	* arch-utils.h (init_frame_pc_noop): Declare.
	* config/mips/tm-mips.h (INIT_FRAME_PC_FIRST): Delete.
	(INIT_FRAME_PC, mips_init_frame_pc_first): Ditto.
	* mips-tdep.c (mips_init_frame_pc_first): Make static.
	(mips_gdbarch_init): Initialize init_frame_pc_first.
	(mips_dump_tdep): Update.

2001-06-15  Michael Snyder  <msnyder@redhat.com>

	* infrun.c (context_switch): New function.  Abstract the operation
	of saving and restoring infrun's state when switching threads.
	(handle_inferior_event): Normalize the handling of the 'thread hop'
	event (when the wrong thread hits a thread-specific breakpoint, 
	and we need to solo-step that thread past the breakpoint).
	Call keep_going, instead of target_resume.  Handle the subsequent
	singlestep-trap as a normal event instead of just resuming.

2001-06-15  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.c (core_addr_identity): New function.  Rename
	default_convert_from_func_ptr_addr.
	* gdbarch.sh (CONVERT_FROM_FUNC_PTR_ADDR): Update.
	(ADDR_BITS_REMOVE): Define.  Default to core_addr_identity.
	* defs.h (ADDR_BITS_REMOVE): Delete macro definition.
	* config/mips/tm-mips.h (ADDR_BITS_REMOVE): Delete definition.
	* mips-tdep.c (mips_addr_bits_remove): Make static.
	(mips_gdbarch_init): Initialize addr_bits_remove.

2001-06-15  Andrew Cagney  <ac131313@redhat.com>

	From 2001-02-26  D.J. Barrow <djbarrow@de.ibm.com>:
	* configure.tgt: Add S/390 31 & 64 bit target configuration.
	* configure.host: Ditto for host.

2001-06-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (EXTRACT_STRUCT_VALUE_ADDRESS_P): Delete definition.
	(EXTRACT_STRUCT_VALUE_ADDRESS): Change to a function with
	predicate.
	* gdbarch.h, gdbarch.c: Regenerate.
	* values.c (value_being_returned): Change the reference to
	EXTRACT_STRUCT_VALUE_ADDRESS_P to a function call.

2001-06-15  Joel Brobecker <brobecker@act-europe.fr>

        * MAINTAINERS: Add Paul Hilfinger and Joel Brobecker to the
        Write After Approval list.

2001-06-14  Michael Snyder  <msnyder@redhat.com>

	* remote.c (show_remote_protocol_qSymbol_packet_cmd, 
	set_remote_protocol_qSymbol_packet_cmd): New functions.
	(init_all_packet_configs, show_remote_cmd): Add qSymbol packet.
	(remote_check_symbols): New function.  Implement qSymbol packet, 
	allowing target to request symbol lookup service from gdb.
	(remote_open_1, remote_async_open_1): Call remote_check_symbols,
	allowing symbol lookup from exec_bfd on connection to target.
	(remote_new_objfile): New function.  Catch new objfile notifications
	from shared library module, and call remote_check_symbols.
	(_initialize_remote): Hook remote_new_objfile into the shared
	library notification chain.  Add "set remote symbol-lookup" command.

2001-06-14  Keith Seitz  <keiths@redhat.com>

	* tracepoint.c (trace_command): We now have tracepoint
	events. Get rid of those ugly hooks.
	(tracepoint_operation): Likewise.
	(trace_pass_command): Likewise.

2001-06-13  Michael Snyder  <msnyder@redhat.com>

	* gdbthread.h (struct thread_info): Add new fields: 
	current_line, current_symtab, step_sp, for saved infrun state.
	* thread.c (save_infrun_state, load_infrun_state): Save and
	restore current_line, current_symtab, and step_sp.
	(add_thread): Rather than adding assignments to initialize
	the new fields, just use memset (tp, 0, sizeof (*tp).
	This way future new fields will not be overlooked.
	* infrun.c (handle_inferior_event): Save and restore save_sp,
	current_line, and current_symtab when switching threads.

2001-06-13  Elena Zannoni  <ezannoni@redhat.com>

	* MAINTAINERS: Add Andrew Cagney as co-maintainer of
        testsuite/gdb.mi.

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

	* symtab.c (lookup_symtab_1): Replace basename with lbasename.
	(lookup_partial_symtab, file_matches): Ditto.
	(make_source_files_completion_list): Ditto.
	(make_file_symbol_completion_list): Ditto.  Make local char*
	variable ``tail'' constant.
	(make_source_files_completion_list): Ditto with ``base_name''.
	* source.c (open_source_file): Use lbasename. Make ``p'' const
	char *.

2001-06-13  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/i386/xm-go32.h (SLASH_P, ROOTED_P, SLASH_CHAR)
	(SLASH_STRING): Remove unused definitions.
	* config/i386/xm-cygwin.h: Likewise.

2001-06-12  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.c (ui_out_list_begin): Add parameter ``id''.
	(make_cleanup_ui_out_list_begin_end): Ditto.  Open the list.
	* ui-out.h: Update declarations.

Mon Jun 11 17:26:43 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* source.c (openp): Make parameters ``path'' and ``string''
 	constant.
	(openp): Use alloca to safely duplicate ``string''. Make local
 	variables ``p'' and ``p1'' constant. Delete char* casts.
	* defs.h: Update.

	* symtab.c (lookup_symtab_1): Make parameter ``name'' constant.
	(lookup_symtab, lookup_partial_symtab): Ditto.
	* symtab.h (lookup_symtab, lookup_partial_symtab): Update.

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

	* ui-out.h (ui_out_table_begin): Make char* parameters constant.
	(ui_out_table_header, ui_out_field_int): Ditto.
	(ui_out_field_core_addr, ui_out_field_string): Ditto.
	(ui_out_field_stream, ui_out_field_fmt): Ditto.
	(ui_out_field_skip, ui_out_text, ui_out_message): Ditto.
	* ui-out.c (ui_out_table_begin, ui_out_table_header): Update.
	(ui_out_field_core_addr, ui_out_field_stream): Update.
	(ui_out_field_string, ui_out_field_fmt): Update.
	(ui_out_text, ui_out_message): Update.
	(append_header_to_list): Make char* parameters constant.
	(uo_table_header, uo_table_begin): Ditto.
	(uo_field_int, uo_field_skip): Ditto.
	(uo_field_string, uo_field_fmt): Ditto.
	(uo_text, uo_message): Ditto.

2001-06-11  Eli Zaretskii  <eliz@is.elta.co.il>

	* completer.c (gdb_completer_loc_break_characters): New variable.
	(line_completion_function): If we are completing on locations,
	back up the start of word pointer past all characters which can
	appear in a location spec.
	(location_completer): New function.

	* completer.h: Add prototype for location_completer.

	* symtab.c (make_source_files_completion_list)
	(add_filename_to_list, not_interesting_fname): New functions.
	(filename_seen): New function, body extracted from
	output_source_filename.
	(output_source_filename): Call filename_seen to check if the file
	was already printed.
	(make_symbol_completion_list): If TEXT includes a
	double-quoted string, return an empty list, not NULL.
	(make_file_symbol_completion_list): New function, similar to
	make_symbol_completion_list but with an additional argument
	SRCFILE.

	* symtab.h (make_file_symbol_completion_list)
	(make_source_files_completion_list): Add prototypes.

	* breakpoint.c (_initialize_breakpoint): Make location_completer
	be the completion function for all commands which set breakpoints
	and watchpoints.
	(top-level): #include "completer.h".

	* tracepoint.c (_initialize_tracepoint): Make location_completer
	be the completion function for the "trace" command.
	(top-level): #include "completer.h".

	* printcmd.c (_initialize_printcmd): Make location_completer be
	the completion function for the "print", "inspect", "call", and
	"disassemble" commands.
	(top-level): #include "completer.h".

	* infcmd.c (_initialize_infcmd): Make location_completer be the
	completion function for the "go", "jump", and "until" commands.
	(top-level): #include "completer.h".

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

	* gnu-regex.c: Eliminate obsolete check for _MSC_VER.
	* utils.c (notice_quit): Remove dummy function only used for _MSC_VER.
	* values.c (unpack_double): Remove obsolete check for _MSC_VER.
	* defs.h: Ditto.
	* m32r-rom.c: Ditto.
	* p-exp.y: Ditto.
	* ser-e7kpc.c: Ditto.  Define WIN32_LEAN_AND_MEAN under _WIN32, for
	faster compilation.
	(get_ds_base): Remove _MSC_VER version of this function.
	* nindy-share/ttyflush.c: Ditto.
	* rdi-share/host.h: Ditto.
	* ser-go32.c (dos_readchar): Remove call to obsolete function.
	* remote-sim.c (gdb_os_poll_quit): Ditto.
	* remote-e7000.c (expect): Remove obsolete #if 0'ed code.

	* main.c (captured_main): Eliminate special Cygwin checks.
	* ser-tcp.c: Remove unneeded __CYGWIN__ guard against system include.

2001-06-09  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (gdbcmd_h): Add ui_out_h.
	(breakpoint.o, infcmd.o, main.o, printcmd.o, stack.o): Ditto.
	(thread.o, top.o): Ditto.

	* ui-out.h (table_begin_ftype): Make string parameters constant.
	(table_header_ftype): Ditto.
	(field_int_ftype): Ditto.
	(field_skip_ftype): Ditto.
	(field_string_ftype): Ditto.
	(field_fmt_ftype): Ditto.
	(text_ftype): Ditto.
	(message_ftype): Ditto.
	* cli-out.c (cli_table_begin): Ditto.
	(cli_table_header): Ditto.
	(cli_field_int): Ditto.
	(cli_field_skip): Ditto.
	(cli_field_string): Ditto.
	(cli_field_fmt): Ditto.
	(cli_text): Ditto.
	(cli_message): Ditto.
	(out_field_fmt): Ditto.
	* ui-out.c (default_table_begin): Ditto.
	(default_table_header): Ditto.
	(default_field_int): Ditto.
	(default_field_skip): Ditto.
	(default_field_string): Ditto.
	(default_field_fmt): Ditto.
	(default_text): Ditto.
	(default_message): Ditto.

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

	* breakpoint.c (delete_breakpoint): Pass mark_inserted to 
	remove_breakpoint, so that the subsequent test for
	bpt->inserted will succeed, and duplicates will be fixed up.

2001-06-08  Per Bothner  <per@bothner.com>

	* dwarf2read.c (set_cu_language):  Handle DW_LANG_Java.

2001-06-07  Keith Seitz  <keiths@redhat.com>

	* tracepoint.c (tracepoint_opertation): Add ui event
	notifications.
	(trace_pass_command): Ditto.
	
2001-06-07  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (Write After Approval): Note the entry criteria.
	(HP/PA): Jeff Law stepped down

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

	* gdbarch.sh: Make sure that '[' doesn't interpret interesting
	variable values as operators.

2001-06-07  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh: Fix quote escaping which was obsoleted
	by last patch.

2001-06-07  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh: Make if statements and tests
	a little more portable.
	Don't use shell's echo command to put strings containing
	escaped characeters into a file -- different flavors of /bin/sh
	require differnt levels of escaping. Use cat <<EOF instead.
	Our internal field separator is a colon. Change all
	commands which assume it is a space.

2001-06-06  Mark Kettenis  <kettenis@gnu.org>

	* lin-lwp.c (struct lwp_info): Add member `resumed'.
	(iterate_over_lwps): Make sure we can handle CALLBACK deleting the
	LWP it's called for.
	(lin_lwp_attach): Mark LWP as resumed to make sure the fake
	SIGSTOP is reported.
	(resume_clear_callback): New function.
	(resume_set_callback): New function.
	(lin_lwp_resume): Mark all LWP's that we're going to resume as
	resumed, and unmark all others.
	(status_callback): Only report a pending wait status if we pretend
	that LP has been resumed.
	(resumed_callback): New function.
	(lin_lwp_wait): Add assertions to check that LWP's are properly
	marked as resumed.  Partially revert 2001-05-25 patch by Michael
	Snyder: do not resume all threads.  Add comment explaining the
	problems associated with this bit of code.

2001-06-07  Keith Seitz  <keiths@redhat.com>

	* MAINTAINTERS: Syd Polk is stepping down from
	maintaining libgui. I am replacing him.

2001-06-07  Eli Zaretskii  <elis@is.elta.co.il>

	* config/mips/tm-irix6.h: New file.

	* config/mips/irix6.mh: New file.

	* config/mips/irix6.mt: New file.

	* config/mips/xm-irix6.h: New file.

	* config/mips/nm-irix6.h: New file.

	* mips-tdep.c (mips_gdbarch_init) <MIPS_ABI_N32>: Set up the
	disassembler info in tm_print_insn_info as appropriate for the N32
	ABI.  Force N32 ABI to be the default if the CPU is R8000 or
	R10000.

	* configure.tgt (mips*-sgi-irix6*): Map to irix6.

	* configure.host (mips*-sgi-irix6*): Ditto.

2001-06-07  Andrew Cagney  <ac131313@redhat.com>

	* gnu-v3-abi.c: Include "gdb_assert.h".
	(build_gdb_vtable_type): Replace abort() with gdb_assert().

2001-06-06  Jim Blandy  <jimb@redhat.com>

	* cp-abi.h: Rearrange code to put documentation comments above the
	functions we export.  The actual function table itself simply
	refers to those functions.  Minor doc fixes.

	* gdbarch.sh: Changes to effect the following:
	* gdbarch.c (initialize_non_multiarch): New function.
	* gdbarch.h (initialize_non_multiarch): New declaration.
	* arch-utils.c (initialize_current_architecture): For
	non-multiarch configurations, call initialize_non_multiarch.

2001-06-06  Andrew Cagney  <ac131313@redhat.com>

	* symfile.c (compare_psymbols): Replace PTR with void*. Delete
	declaration.
	(compare_symbols): Ditto.

2001-06-06  Jonathan Larmour  <jlarmour@redhat.com>

	* arch-utils.c (generic_prepare_to_proceed): Allow for having
	stopped due to a Ctrl-C as well as breakpoints.

	* hppa-tdep.c (hppa_prepare_to_proceed): Add FIXME as this may not
	support thread switches after Ctrl-C.
	* lin-lwp.c (lin_lwp_prepare_to_proceed): Ditto.
	* linux-thread.c (linuxthreads_prepare_to_proceed): Ditto.
	* m3-nat.c (mach3_prepare_to_proceed): Ditto.

2001-06-06  Jim Blandy  <jimb@redhat.com>

	* gdbarch.sh, gdbarch.c: Revert change of 2001-06-01; all
	per-architecture data should be registered at initialization time,
	before any gdbarch objects get used, so the generality is
	unnecessary.

2001-06-06  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh (function_list): Add tracepoint_create,
	tracepoint_delete, and tracepoint_modify events.
	* gdb-events.c: Regenerated.
	* gdb-events.h: Regenerated.

2001-06-06  Keith Seitz  <keiths@redhat.com>

	* gdb-events.sh: Update copyrights.
	Change free to xfree.
	* gdb-events.c: Regenerated.
	* gdb-events.h: Regenerated.

2001-06-06  Eli Zaretskii  <eliz@is.elta.co.il>

	* source.c (mod_path, openp): Use #ifdef HAVE_DOS_BASED_FILE_SYSTEM
	instead of #if HAVE_DOS_BASED_FILE_SYSTEM.
	* completer.c: Ditto.
	* cli/cli-cmds.c (cd_command): Ditto.

2001-06-04  Eli Zaretskii  <eliz@is.elta.co.il>

	* mips-tdep.c (show_mipsfpu_command): Remove unused variable msg.
	(mips_set_processor_type_command): Remove unused variable j.
	(mips_breakpoint_from_pc): Declare breakpoint instruction
	sequences as unsigned char, to avoid compiler warnings.

	* source.c (mod_path, openp): Use HAVE_DOS_BASED_FILE_SYSTEM
	instead of system-specific define's like _WIN32 and __MSDOS__.
	Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH instead of SLASH_P and
	ROOTED_P.
	(top-level): #include "filenames.h".

	* solib.c (solib_open): Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH
	instead of SLASH_CHAR, ROOTED_P and SLASH_P.
	(top-level): #include "filenames.h".

	* defs.h (SLASH_P, SLASH_CHAR, ROOTED_P): Remove definitions.
	(SLASH_STRING): Define only for _WIN32.

	* completer.c: Use HAVE_DOS_BASED_FILE_SYSTEM instead of
	__MSDOS_.

	* cli/cli-cmds.c (cd_command): Use IS_DIR_SEPARATOR and
	IS_ABSOLUTE_PATH instead of SLASH_P and ROOTED_P.  Replace
	system-specific ifdefs with HAVE_DOS_BASED_FILE_SYSTEM.
	(top-level): #include "filenames.h".

	* go32-nat.c (go32_wait): Change the return value to ptid_t.

	* config/djgpp/fnchange.lst: Add two new files in the
	gdb/testsuite/gdb.c++/ directory to the remapped names.

	* config/djgpp/djconfig.sh (lt_cv_sys_max_cmd_len): Set to 12KB.

2001-06-01  Jim Blandy  <jimb@redhat.com>

	Expand the gdbarch per-architecture data vector as needed, rather
	than requiring that all per-architecture data be registered before
	the first gdbarch object is allocated.
	* gdbarch.sh: Changes to effect the following:
	* gdbarch.c (alloc_gdbarch_data, init_gdbarch_data): Delete
	declarations and definitions.
	(check_gdbarch_data): New function, and declaration.
	(gdbarch_alloc): Don't call alloc_gdbarch_data; leaving the fields
	zero is good enough.
	(free_gdbarch_data): Tolerate a null data pointer.  Free only
	those data items gdbarch->data actually has allocated.
	(set_gdbarch_data, gdbarch_data): Call check_gdbarch_data.
	(gdbarch_update_p): No need to call init_gdbarch_data.

2001-06-01  Kevin Buettner  <kevinb@redhat.com>

	* ia64-tdep.c (is_float_or_hfa_type_recurse): Call check_typedef()
	on types that we wish to recurse on.
	(slot_alignment_is_next_even): New function.
	(ia64_push_arguments): Call slot_alignment_is_next_even() to
	examine the type in order to decide if it's necessary to skip
	an odd slot.

2001-06-01  Michael Snyder  <msnyder@redhat.com>

	* thread.c (delete_step_resume_breakpoint): New function.
	Maintain internal consistency of the thread list while deleting
	a step_resume_breakpoint.
	* gdbthread.h (delete_step_resume_breakpoint): Export.
	* breakpoint.c (bpstat_find_step_resume_breakpoint):
	Make thread-aware: don't return a step_resume_breakpoint 
	for the wrong thread.
	* infrun.c (wait_for_inferior): Call delete_step_resume_breakpoint
	instead of delete_breakpoint_current_contents.
	(fetch_inferior_event): Ditto.
	(handle_inferior_event): Call delete_step_resume_breakpoint
	instead of delete_breakpoint.
	* infrun.c (handle_inferior_event): After singlestepping over a
	thread-specific breakpoint, use currently_stepping() to decide
	whether to step or continue.

2001-06-01  Jim Blandy  <jimb@redhat.com>

	* gnu-v3-abi.c (gnu_v3_abi_ops, vtable_type_gdbarch_data): Make
	these static --- there's no reason other files should use these.

	* partial-stab.h (case N_FUN: case 'f':, case N_FUN: case 'F':)
	Fix memory leak.

	* partial-stab.h: New complaint: function_outside_compilation_unit.
	(case N_FUN: case 'f':, case N_FUN: case 'F':): If pst is zero,
	complain, and don't try to set pst's start address.

2001-05-31  Kevin Buettner  <kevinb@redhat.com>

	* ia64-linux-tdep.c (IA64_LINUX_SIGCONTEXT_OFFSET):  Revise to
	match the location at which the kernel is placing the sigcontext
	struct.

	* ia64-tdep.c (max_skip_non_prologue_insns): New static global.
	(refine_prologue_limit): New function.
	(examine_prologue):  Further limit number of instructions
	scanned by calling refine_prologue_limit().  Revise way in
	which the end of prologue address is computed for frameless
	functions.

2001-05-29  Christopher Faylor  <cgf@redhat.com>

	* partial-stab.h: Revert previous patch.

2001-05-29  Christopher Faylor  <cgf@redhat.com>

	* partial-stab.h: Consistently guard against pst being NULL.

2001-05-29  Alexandre Oliva  <aoliva@redhat.com>

	* symfile.c (compare_psymbols, compare_symbols): Declare using
	PTR, as in the definition.
	* minsyms.c (compare_minimal_symbols): Likewise.
	* coffread.c (find_targ_sec): Likewise.
	* elfread.c (free_elfinfo, elf_locate_sections): Likewise.
	* mipsread.c (alphacoff_locate_sections): Likewise.
	* mdebugread.c (compare_blocks): Likewise.

2001-05-25  Nick Duffek  <nsd@redhat.com>

	* solib.c (update_solib_list): Move target_resize_to_sections()
	into solib_map_sections() loop.
	(info_sharedlibrary_command): Try bfd_arch_bits_per_address() if
	bfd_get_arch_size() fails.

2001-05-25  Nick Duffek  <nsd@redhat.com>

	* Makefile.in (osfsolib.c, osfsolib.o): Rename to solib-osf.c and
	solib-osf.o.
	* config/alpha/alpha-osf1.mh (NATDEPFILES): Replace osfsolib.o
	with solib-osf.o and solib.o.
	* config/alpha/alpha-osf2.mh: Likewise.
	* config/alpha/alpha-osf3.mh: Likewise.
	* solib-osf.c: New file, renamed and largely rewritten from
	osfsolib.c.

2001-05-25  Michael Snyder  <msnyder@redhat.com>

	* lin-lwp.c (lin_lwp_attach_lwp): Call stop_wait_callback,
	to consume the SIGSTOP generated by PTRACE_ATTACH.
	(stop_wait_callback): If a SIGTRAP or a SIGINT event is consumed,
	try again to get the SIGSTOP event.
	(lin_lwp_wait): Resume all threads when ignoring a signal.
	This will insure that newly attached threads get resumed.
	* lin-lwp.c (stop_wait_callback): Discard redundant SIGINT events.
	* remote.c (remote_write_bytes): Update 'p' packet pointer.

2001-05-25  Jim Blandy  <jimb@redhat.com>

	* gnu-v2-abi.c (gnuv2_virtual_fn_field): There's no need to clear
	VALUE_POINTED_TO_OFFSET here; if value_cast doesn't return a
	useful value, then we should fix that instead.

2001-05-24  Nick Duffek  <nsd@redhat.com>

	* solist.h (struct so_list): Document the requirement that
	current_sos initialize some fields to 0.

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

	* gnu-nat.c: Include <ctype.h>.
	(gnu_pid_to_exec_file): Add PID parameter.
	(set_sig_thread_cmd): Use PIDGET on return value from
	thread_id_to_pid.
	(proc_string): Use MERGEPID to construct argument to
	pid_to_thread_id.

2001-05-22  Kevin Buettner  <kevinb@redhat.com>

	* breakpoint.c (breakpoint_address_is_meaningful): New function.
	(check_duplicates): Don't compare non-meaningful addresses.

2001-05-22  Michael Snyder  <msnyder@redhat.com>

	* thread-db.c: Allow for defunct zombie threads.	
	(attach_thread): Do not attempt to attach zombie thread.
	(thread_db_thread_alive): Return false for defunct zombie thread.
	(find_new_threads_callback): Don't add defunct zombie thread to list.

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

	Add support for the GNU V3 C++ ABI.
	(Includes changes by Dan Berlin.)

        * gnu-v3-abi.c: New file.
	* minsyms.c: #include "value.h" and "cp-abi.h".
	(install_minimal_symbols): Check the minimal symbol table for
	symbols that look mangled in the V3 style, and select the V3 ABI
	if we find any.
	* Makefile.in (SFILES): Add gnu-v3-abi.c.
	(COMMON_OBS): Add gnu-v3-abi.o.
	(gnu-v3-abi.o): Add new rule.
	(minsyms.o): Depend on $(cp_abi_h) and $(value_h).

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

	* values.c (value_primitive_field): If we're extracting a base
	class, then the type of the result should be the base class being
	extracted, not the type of which it is a base class.

	* value.h (struct value): Doc fix, and rearrange members to place
	them near their explanations.

2001-05-21  Michael Snyder  <msnyder@redhat.com>

	* remote.c (remote_async_wait): Added new variable fieldsize.
	Add fieldsize (return value of hex2bin) to string pointer p.

2001-05-20  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11-tdep.c (m68hc11_pop_frame): Fix stack pointer computation.
	(m68hc11_analyze_instruction): Update the pc correctly.
	(m68hc11_guess_from_prologue): Take into account the stack correction
	for the saving address.

2001-05-07  Daniel Berlin  <dan@cgsoftware.com>

	Changes by Jim Ingham:
	
	* values.c (value_change_enclosing_type): New function.  If the
	new enclosing type is larger than the old one, we need to allocate
	more space.
	* value.h: Add value_change_enclosing_type prototype.
	* valops.c (value_cast): Use it.
	(value_assign): Use it.
	(value_addr): Use it.
	(value_ind): Use it.
	(value_full_object): Use it.
	
2001-05-07  Daniel Berlin  <dan@cgsoftware.com>

	* values.c (value_static_field): Handle static fields that have a
	constant value.

2001-05-17  Michael Snyder  <msnyder@redhat.com>

	* blockframe.c (create_new_frame): Zero all the fields via memset,
	rather than zeroing them one by one.

2001-05-17  Eli Zaretskii  <eliz@is.elta.co.il>

	* top.c (user_args): Remove unused declaration.

2001-05-16  Michael Snyder  <msnyder@redhat.com>

	* infcmd.c (do_registers_info): Move alloca outside of loop.

2001-05-15  John S Kallal  <jskallal@home.com>

	* remote.c (remote_wait): Added new variable fieldsize.
	Add fieldsize (return value of hex2bin) to string pointer p.

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

	* sparc-tdep.c (sparc_gdbarch_init): Get the architecture from
	info.bfd_arch_info.

2001-05-14  Kevin Buettner  <kevinb@redhat.com>

	* lin-lwp.c (detach_callback, lin_lwp_wait, lin_lwp_pid_to_str):
	Adjust format strings for printing LWPs to account for the fact
	that the type returned by GET_LWP() is now a long instead of an
	int.

2001-05-14  Kevin Buettner  <kevinb@redhat.com>

	* inferior.h (null_ptid, minus_one_ptid): New variable declarations.
	(ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_lwp)
	(ptid_get_tid, ptid_equal): New function declarations.
	* infrun.c (null_ptid, minus_one_ptid): New variables.
	(ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_lwp)
	(ptid_get_tid, ptid_equal): New functions.
	(_initialize_infrun): Initialize null_ptid, minus_one_ptid,
	inferior_ptid, and target_last_wait_ptid.

	* defs.h (ptid_t): Redefine to be a struct rather than an int.
	(pid_to_ptid, null_ptid, ptid_equal): Delete these macros.
	(PIDGET, TIDGET, MERGEPID): Redefine these macros using the
	new ptid accessors and constructor.

	* config/i386/tm-i386v42mp.h (PIDGET, TIDGET, LIDGET, MERGEPID,
	MKLID, MKTID, ISTID): Provide new definitions for these macros.
	The old macros are retained, but disabled via #if 0 in order
	to aid in future restructuring.  See FIXME.

	* arm-linux-nat.c (PIDGET, TIDGET): Delete macro definitions.
	* i386-linux-nat.c (PIDGET, TIDGET): Likewise.
	* infptrace.c (PIDGET, TIDGET): Likewise.
	* lin-lwp.c (PIDGET0, PIDGET, TIDGET, MERGEPID): Likewise.
	* lin-thread.c (PIDGET0, PIDGET, TIDGET, MERGEPID): Likewise.
	* proc-service.c (MERGEPID): Likewise.
	* procfs.c (PIDGET, TIDGET, MERGEPID): Likewise.
	* thread-db.c (PIDGET0, PIDGET, TIDGET, MERGEPID): Likewise.
	* config/nm-linux.h (PIDGET0, PIDGET, TIDGET, MERGEPID): Likewise.
	* config/i386/tm-i386sol2.h (PIDGET0, PIDGET, TIDGET, MERGEPID):
	Likewise.
	* config/sparc/tm-sun4sol2.h (PIDGET0, PIDGET, TIDGET, MERGEPID):
	Likewise.

	* lin-lwp.c (THREAD_FLAG): Delete macro definition.
	(GET_LWP): Redefine in terms of ptid_get_lwp().
	(GET_PID): Redefine in terms of ptid_get_pid().
	(is_lwp): Redefine without the need for THREAD_FLAG.
	(BUILD_LWP): Redefine in terms of ptid_build().
	* lin-thread.c (THREAD_FLAG): Delete macro definition.
	(GET_LWP): Redefine in terms of ptid_get_lwp().
	(GET_PID): Redefine in terms of ptid_get_pid().
	(GET_THREAD): Redefine in terms of ptid_get_tid().
	(BUILD_THREAD, BUILD_LWP): Redefine in terms of ptid_build().
	(is_lwp, is_thread): Redefine.
	(linux_child_wait, check_all_signal_numbers)
	(linuxthreads_discard_global_state, attach_thread): Declare these
	functions to squash warnings about missing declarations.
	* sol-thread.c (THREAD_FLAG): Delete macro definition.
	(GET_PID): Redefine in terms of ptid_get_pid().
	(GET_LWP): Redefine in terms of ptid_get_lwp().
	(GET_THREAD): Redefine in terms of ptid_get_tid().
	(BUILD_THREAD, BUILD_LWP): Redefine in terms of ptid_build().
	(is_lwp, is_thread): Redefine.
	* thread-db.c (THREAD_FLAG): Delete macro definition.
	(GET_PID): Redefine in terms of ptid_get_pid().
	(GET_LWP): Redefine in terms of ptid_get_lwp().
	(GET_THREAD): Redefine in terms of ptid_get_tid().
	(BUILD_THREAD, BUILD_LWP): Redefine in terms of ptid_build().
	(is_lwp, is_thread): Redefine.

	* corelow.c (add_to_thread_list, get_core_register_section):
	Eliminate hacks needed to prevent regressions when inferior_ptid
	wasn't wide enough to hold the core file thread id in the pid
	component of inferior_ptid.

2001-05-14  Michael Snyder  <msnyder@redhat.com>

	* remote.c (hex2bin): 	Make first argument const.
	Require explicit count, don't accept null-terminated str.
	(remote_resume, remote_async_resume): White space fix-up.
	(remote_write_bytes): Set nr_bytes to return value of bin2hex.

2001-05-13  Mark Kettenis  <kettenis@gnu.org>

	* symtab.c (lookup_symtab_1): Use lbasename (NAME) instead of
	basename (NAME).  The FreeBSD basename returns a pointer to a
	static buffer, even if it's simply returning a string identical to
	its argument.
	(lookup_partial_symtab): Likewise.

2001-05-14  Michael Snyder  <msnyder@redhat.com>

	* solib.c, solib.h: Add comment for function no_shared_libraries.
	
2001-05-14  Kevin Buettner  <kevinb@redhat.com>

	* solib.h (no_shared_libraries): Make declaration match definition
	in solib.c.

2001-05-14  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (remote_write_bytes): Set nr_bytes before returning it.
	* solib.h (no_shared_libraries): Declare.

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

	* gdbarch.sh (struct gdbarch_info): Delete field bfd_architecture.
	(gdbarch_update_p): Rewrite logic filling in INFO struct.  Use
	user specified values when available.
	* rs6000-tdep.c (rs6000_gdbarch_init): Update.  Get the
	architecture from info.bfd_arch_info.
	* gdbarch.c, gdbarch.h: Regenerate.

2001-05-12  Fernando Nasser  <fnasser@redhat.com>

	* remote-e7000.c (e7000_open): Check for bad baud rate.
	* remote-st.c (st2000_open): Ditto.

2001-05-11  Jim Blandy  <jimb@redhat.com>

	* thread.c (do_captured_list_thread_ids): Use ui_out_tuple_begin
	and ui_out_tuple_end instead of ui_out_list_begin and
	ui_out_list_end.

	* Makefile.in (gnu-v2-abi.o): Add $(demangle_h) to list of
	dependencies.  Reorder dependencies to match #includes in file,
	for easier verification.
	
Fri May 11 13:32:50 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* breakpoint.c: Replace ui_out_list_begin, ui_out_list_end and
 	make_cleanup_ui_out_list_end with ui_out_tuple_begin,
 	ui_out_tuple_end and make_cleanup_ui_out_tuple_begin_end.
	* cli/cli-setshow.c: Ditto.
	* printcmd.c: Ditto.
	* stack.c: Ditto.

	* ui-out.h (enum ui_out_type): Fix tipo - tupple -> tuple.
	* ui-out.c (ui_out_list_begin): Delete ``lstid'' parameter.
	(ui_out_tuple_begin): New function.
	(ui_out_tuple_end): New function.
	(ui_out_tuple_begin_end): New function.
	(make_cleanup_ui_out_list_begin_end): Replace
 	make_cleanup_ui_out_list_end function.
	* ui-out.h (ui_out_list_begin): Update declaration.
	(make_cleanup_ui_out_list_begin_end): Replace
 	make_cleanup_ui_out_list_end declaration.
	(ui_out_tuple_begin, ui_out_tuple_end): Declare.
	(ui_out_tuple_begin_end): Declare.

2001-05-11  Jim Blandy  <jimb@redhat.com>

	* gnu-v2-abi.c: Don't #include "gdb_regex.h".  We don't use it.

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

	From 2001-03-26 Rodney Brown <RodneyBrown@mynd.com>
	* config/pa/tm-hppa.h: Remove trigraph.
	* hp-symtab-read.c (hpread_type_translate): Provide return value.
	(hpread_read_struct_type): Remove trigraph. Add parameter in
	`warning'.
	(hpread_read_array_type): Provide return value.
	(hpread_type_lookup): Avoid ambiguous `else'. Provide return
	value.
	* hppa-tdep.c (initialize_hp_cxx_exception_support): Remove
	trigraph.

2001-05-11  Jim Blandy  <jimb@redhat.com>

	* mips-tdep.c (mips_store_return_value,
	mips_extract_return_value): Pass arguments to
	return_value_location in the proper order.

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

	* Makefile.in (VERSION): Delete.  Moved to file ``version.in''.
	(version.c): Depends on file ``version.in''.  Extract version
	number from ``version.in'' file.
	(clean mostlyclean): Update.
	* version.in: New file.
	* NEWS: Update.
	
2001-05-11  Kevin Buettner  <kevinb@redhat.com>

	* breakpoint.c (set_raw_breakpoint): Add new parameter
	representing the breakpoint's type.  Adjust all callers.
	(create_longjmp_breakpoint, create_temp_exception_breakpoint)
	(create_thread_event_breakpoint): Don't test for zero return
	value from set_raw_breakpoint().  It can never be zero.
	(create_exception_catchpoint, watch_command_1): Move logic
	which calculates the breakpoint type prior to the call to
	set_raw_breakpoint().

2001-05-11  Fernando Nasser  <fnasser@redhat.com>

	* ser-unix.c (rate_to_code): Issue warning if baud rate is invalid.
	(hardwire_setbaudrate): Set errno to EINVAL and return with error
	if the conversion of the baud rate to code fails.

2001-05-10  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.h (make_cleanup_ui_out_begin_end): Declare.
	* ui-out.c (struct ui_out_end_cleanup_data): Define.
	(do_cleanup_end): New function.  Replace do_list_end.
	(make_cleanup_ui_out_end): New function.
	(make_cleanup_ui_out_begin_end): New function.
	(make_cleanup_ui_out_list_end): Use make_cleanup_ui_out_end.

2001-05-10  Elena Zannoni  <ezannoni@redhat.com>

        * MAINTAINERS: Declare xcoffread.c open to all maintainers,
        and make Kevin Buettner (kevinb@redhat.com) the reference person.

2001-05-10  Elena Zannoni  <ezannoni@redhat.com>

	* proc-api.c (ioctl_with_trace): Fix uninitialized variable.

2001-05-10  Fernando Nasser  <fnasser@redhat.com>

	* MAINTAINERS: Add testsuite subdirectory co-maintainers.

Thu May 10 16:26:47 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (mi-main.o): Compile with -Werror.

2001-05-10  Michael Snyder  <msnyder@redhat.com>

	* remote.c (remote_open_1): Call no_shared_libraries, so that
	symbols for shared libraries can be reloaded per session.
	(remote_async_open_1): Ditto.
	* remote.c (bin2hex, hex2bin): New functions.  Factor out these
	two conversions which are coded for repeatedly in this module.
	(remote_threads_extra_info, remote_wait, remote_async_wait, 
	store_register_using_P, remote_store_registers, remote_write_bytes,
	remote_read_bytes, remote_rcmd): Use bin2hex and hex2bin instead
	of coding the conversions inline.
	(fromhex): Not exported, change from extern to static.

2001-05-10  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.c (initialize_current_architecture): Delete obsolete
	``info architecture'' command.
	(info_architecture): Delete function.

2001-05-10  Andrew Cagney  <ac131313@redhat.com>

	* TODO (5.1, 5.2): Update.

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

	* MAINTAINERS: Jim Ingham is no longer maintaining Arm related
	stuff.

2001-05-10  Keith Seitz  <keiths@cygnus.com>

	* Makefile.in (SUBDIR_GDBTK_OBS): Add gdbtk-bp.o, gdbtk-register.o
	and gdbtk-stack.o.
	(SUBDIR_GDBTK_SRCS): Ditto for the sources.
	(gdbtk-bp.o): New rule.
	(gdbtk-register.o): New rule.
	(gdbtk-stack.o): New rule.
	(gdbtk-cmds.o): Update dependencies.
	(gdbtk.o): Ditto.
	(gdbtk-hooks.o): Ditto.
	(gdbtk-varobj.o): Ditto.

2001-05-10  Fernando Nasser  <fnasser@redhat.com>

	* varobj.c (c_number_of_children): Fix memory leak. Delete unwanted old
	variables, not just unregister them.

2001-05-10  Fernando Nasser  <fnasser@redhat.com>

	* varobj.c (c_number_of_children): Check for target type of void*,
	not the target type name.  Allow dereferencing char*.

2001-05-10  Fernando Nasser  <fnasser@redhat.com>

	* symfile.c (symbol_file_add_main_1): New static function. 
	Passes the flags arguments to  symbol_file_add() and takes care
	of any necessary reinitializations.
        (symbol_file_command): Call symbol_file_add_main_1() instead of
        symbol_file_add().  
        (symbol_file_add_main): Ditto.

2001-05-09  Kevin Buettner  <kevinb@redhat.com>

	* lin-lwp.c (lin_lwp_pid_to_str): Revert inadvertent format
	string change in 2001-05-03 changes.
	(lin_lwp_wait): Revert GET_LWP coercion introduced in 2001-05-03
	changes.

2001-05-09  Kevin Buettner  <kevinb@redhat.com>

	* lin-lwp.c (lin_lwp_attach): Use PIDGET() to fetch the pid
	component from inferior_ptid.
	(lin_lwp_detach): Use pid_to_ptid() to convert from a pid to a
	ptid.

2001-05-09  Elena Zannoni  <ezannoni@redhat.com>

	* sh3-rom.c (_initialize_sh3_rom): Get rid of specific _WINDOWS
 	conditional for help with connections through parallel ports,
 	given that the actual code for downloading through a parallel port
 	is not conditionalized.

	* sh-tdep.c: Remove WIN32_WCE conditional. The wince sh target is
 	unmaintaned, and probably on its way to obsolescence.
	
2001-05-09  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_frame_saved_pc): New function.
	* config/i386/tm-i386.h (FRAME_SAVED_PC): Redefine in terms of
	i386_frame_saved_pc.
	(i386_frame_saved_pc): New prototype.

	* i386-tdep.c (i386_register_virtual_type): New function.
	(i386_register_convertible): New function.
	* config/i386/tm-i386.h (REGISTER_VIRTUAL_TYPE): Redefine in terms
	of i386_register_virtual_type.
	(REGISTER_CONVERTIBLE): Redefine in terms of
	i386_register_convertible.
	(i386_register_virtual_type, i386_register_convertible): New
	prototypes.

2001-05-08  Jim Blandy  <jimb@redhat.com>

	* Makefile.in (mn10300-tdep.o): New rule.

	* Makefile.in (gdb_string_h): Define.  Use it throughout.
	Some rules were already using this, even though it isn't defined.

	* Makefile.in (obstack_h, target_h): Define; these are already
	used elsewhere, but have been expanding to the empty string.
	(memattr_h): Define; needed by target_h.

	* mn10300-tdep.c (mn10300_extract_return_value): Mark this as
	static.  (This was accidentally omitted from the earlier patch.)
	
	* mn10300-tdep.c (mn10300_dwarf2_reg_to_regnum): New function.
	(mn10300_gdbarch_init): Register it as the architecture's
	dwarf2_reg_to_regnum method.

	Correct and expand handling of `movm' instruction, and register
	saves in general.
	* config/mn10300/tm-mn10300.h (D0_REGNUM, A0_REGNUM, MDRQ_REGNUM,
	MCRH_REGNUM, MCRL_REGNUM, MCVF_REGNUM): New definitions.
	(enum movm_register_bits): New enum.
	* mn10300-tdep.c (set_movm_offsets): Use symbolic names for the
	bits, not hex literals.  Handle the `other', `exreg0', and
	`exother' bits.  Correct handling of `exreg1': it saves r4, r5,
	r6, and r7, not r2, r3, r4, and r5.
	(saved_regs_size): New function.
	(mn10300_frame_chain, mn10300_frame_saved_pc): Use it, instead
	of computing the same thing inline, incorrectly.

	* mn10300-tdep.c (mn10300_gdbarch_init): We do have a
	dummy_breakpoint_offset; it's zero.

	* mn10300-tdep.c (mn10300_pop_frame): Split the mn10300-specific
	stuff out into mn10300_pop_frame_regular, and use
	generic_pop_current_frame.  This lets us share code, and also
	makes this function's prototype match that expected by gdbarch.
	Make this function static.
	(mn10300_pop_frame_regular): New function.
	(mn10300_gdbarch_init): Register mn10300_pop_frame as the
	gdbarch's pop_frame method.
	* config/mn10300/tm-mn10300.h (POP_FRAME): Delete definition.
	(mn10300_pop_frame): Delete declaration.

	* mn10300-tdep.c (mn10300_saved_pc_after_call,
	mn10300_extract_return_value,
	mn10300_extract_struct_value_address, mn10300_store_return_value,
	mn10300_use_struct_convention, mn10300_breakpoint_from_pc,
	mn10300_frame_chain, mn10300_skip_prologue,
	mn10300_push_arguments, mn10300_push_return_address,
	mn10300_store_struct_return, mn10300_frame_saved_pc,
	mn10300_init_extra_frame_info, mn10300_frame_init_saved_regs):
	Make these functions static; they should only be visible to the
	outside world as gdbarch methods.

	* config/mn10300/tm-mn10300.h (mn10300_find_callers_reg): Delete
	unused declaration.
	
	* mn10300-tdep.c (mn10300_gdbarch_init): Put the gdbarch methods
	in some rational order.

	* mn10300-tdep.c (mn10300_gdbarch_init): Rather than using
	generic_pc_in_call_dummy, use pc_in_call_dummy_at_entry_point.

	Use gdbarch for most target parameters for the MN10300, rather
	than the tm-*.h file.
	* config/mn10300/tm-mn10300.h (MAX_REGISTER_VIRTUAL_SIZE,
	REGISTER_BYTES, FP_REGNUM, BREAKPOINT_FROM_PC,
	FUNCTION_START_OFFSET, DECR_PC_AFTER_BREAK, INNER_THAN,
	SAVED_PC_AFTER_CALL, INIT_EXTRA_FRAME_INFO, FRAME_INIT_SAVED_REGS,
	FRAME_CHAIN, FRAME_CHAIN_VALID, FRAME_SAVED_PC,
	EXTRACT_RETURN_VALUE, EXTRACT_STRUCT_VALUE_ADDRESS,
	STORE_RETURN_VALUE, STORE_STRUCT_RETURN, SKIP_PROLOGUE,
	FRAME_ARGS_SKIP, FRAME_ARGS_ADDRESS, FRAME_LOCALS_ADDRESS,
	FRAME_NUM_ARGS, POP_FRAME, USE_GENERIC_DUMMY_FRAMES, CALL_DUMMY,
	CALL_DUMMY_START_OFFSET, CALL_DUMMY_BREAKPOINT_OFFSET,
	CALL_DUMMY_LOCATION, FIX_CALL_DUMMY, CALL_DUMMY_ADDRESS,
	TARGET_READ_FP, PUSH_RETURN_ADDRESS, PUSH_DUMMY_FRAME,
	SAVE_DUMMY_FRAME_TOS, PUSH_ARGUMENTS, PC_IN_CALL_DUMMY,
	REG_STRUCT_HAS_ADDR, USE_STRUCT_CONVENTION, GET_SAVED_REGISTER):
	Delete definitions.  We register gdbarch methods for these now.
	(struct frame_info, struct type, struct value): Delete forward
	declarations of these types; they're no longer necessary, since we
	don't have function declarations here any more.
	* mn10300-tdep.c: #include "arch-utils.h", to get declarations for
	some default gdbarch methods.
	(mn10300_store_struct_return): Return void, as expected by
	gdbarch.
	(mn10300_init_extra_frame_info): Take initial `fromleaf' argument,
	as expected by gdbarch.
	(mn10300_frame_init_saved_regs): Provide dummy definition for
	this, as required by gdbarch.
	(mn10300_gdbarch_init): Add mn10300_call_dummy_words, as expected
	by gdbarch.  Register gdbarch methods or values for all the stuff
	removed from tm-10300.h, listed above.

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

	* cli-out.c (cli_begin, cli_end): Replace cli_list_begin and
	cli_list_end.
	(cli_ui_out_impl): Update.

	* ui-out.c (default_begin, default_end): Replace
	default_list_begin and default_list_end.
	(default_ui_out_impl): Update.
	(uo_begin, uo_end): Replace ou_list_begin and uo_list_end.
	(ui_out_begin, ui_out_end): Replace ui_out_list_begin and
	ui_out_list_end.
	(ui_out_list_begin, ui_out_list_end): New.  Compatibility
	functions.
	(struct ui_out_level): Add field type.
	(push_level, pop_level): Update.  Add type parameter.

	* ui-out.h (enum ui_out_type): Declare.
	(ui_out_begin, ui_out_end): Declare.
	(ui_out_begin_ftype, ui_out_end_ftype): Replace list_begin_ftype
	and list_end_ftype.
	(struct ui_out_impl): Update.

2001-05-07  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.h (list_begin_ftype, list_end_ftype): Rename argument
	``list_flag'' to ``depth''.
	* ui-out.c (default_list_begin, default_list_end): Update.
	(uo_list_begin, uo_list_end): Update.
	(MAX_UI_OUT_LEVELS): Define.
	(struct ui_out_level): Define.
	(top-level): Include "gdb_assert.h".
	(struct ui_out): Add fields ``level'' and ``levels''.  Delete
 	fields ``list_flag'' and ``field_count''.
	(ui_out_new): Update.
	(verify_field_proper_position): Update.
	(current_level, push_level, pop_level): New functions.
	(ui_out_list_begin): Use push_level.
	(ui_out_list_end): Use pop_level.
	(ui_out_field_int): Use current_level.
	(ui_out_field_skip): Ditto.
	(ui_out_field_fmt): Ditto.

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

	* language.c (longest_local_hex_string_custom): Strlen test is 
	inverted -- reverse the sense of the test.

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

	* config/i386/tm-i386v.h (struct frame_info, struct
	frame_saved_regs):  Remove declarations.
	(i386_frame_num_args): Remove prototype.

2001-05-07  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: I'm no longer actively maintaining the mn10300
	target.

2001-05-04  Andrew Cagney  <ac131313@redhat.com>
 
 	* main.c (captured_main): Delete #ifndef _WIN32 conditional for
 	WinGDB.
 
2001-05-06  Kevin Buettner  <kevinb@redhat.com>

	* inferior.h (save_inferior_ptid): Declare.
	* infrun.c (save_inferior_ptid, restore_inferior_ptid): Define.

	* hpux-thread.c (save_inferior_ptid, restore_inferior_ptid):
	Delete these functions.
	* lin-lwp.c (save_inferior_ptid, restore_inferior_ptid): Likewise.
	* lin-thread.c (save_inferior_ptid, restore_inferior_ptid): Likewise.
	* linux-thread.c (save_inferior_ptid, restore_inferior_ptid):
	Likewise.
	* proc-service.c (save_inferior_ptid, restore_inferior_ptid):
	Likewise.
	* sol-thread.c (save_inferior_ptid, restore_inferior_ptid): Likewise.
	* thread-db.c (save_inferior_ptid, restore_inferior_ptid): Likewise.

	* somsolib.c (reset_inferior_ptid): Delete.
	(som_solib_remove_inferior_hook): Use save_inferior_ptid() to
	build the cleanup struct.

	* breakpoint.c (reattach_breakpoints, detach_breakpoints): Use
	a cleanup to save/restore inferior_ptid.

2001-05-06  Mark Kettenis  <kettenis@gnu.org>

	Implement attach/detach for multi-threaded programs on Linux.
	* thread-db.c (keep_thread_db): Adjust comment.
	(deactivate_target): Removed.
	(thread_db_new_objfile): Don't call deactivate_target.  Implement
	guts of deactivate_target inline instead.
	(attach_thread): Call ATTACH_LWP unconditionally if defined.
	(thread_db_attach): New function.
	(thread_db_detach): Don't call deactivate_target.  Do necessary
	cleanup inline instead.  Set inferior_ptid to LWP corresponding to
	the current user-level thread.
	(thread_db_kill): Set inferior_ptid to LWP corresponding to the
	current user-level thread.
	(thread_db_create_inferior): Deactivate target vector if
	KEEP_THREAD_DB is zero.
	(thread_db_mourn_inferior): Don't call deactivate_target.  Do
	necessary cleanup inline instead.
	(init_thread_db_ops): Initialize to_attach field to
	thread_db_attach.
	* lin-lwp.c (lin_lwp_mourn_inferior): Remove prototype.
	(stop_wait_callback): Add prototype.
	(init_lwp_list): Add comment about when to re-initialize the LWP
	list.
	(lin_lwp_attach_lwp): Only call ptrace for cloned processes.
	Avoid adding publicates to the LWP list.  Only mark an LWP as
	signalled if it doesn't correspond to a cloned process.
	(lin_lwp_attach): Add initial process to the LWP list.  Make sure
	it's stopped and fake a SIGSTOP.
	(detach_callback): New function.
	(lin_lwp_detach): Implement.
	(lin_lwp_create_inferior): Don't re-initialize LWP list here.
	Call child_ops.to_create_inferior directly instead of via
	target_beneath local.
	(lin_lwp_mourn_inferior): Call child_ops.to_mourn_inferior
	directly instead of via target_beneath local.

2001-05-06  Eli Zaretskii  <eliz@is.elta.co.il>

	* symtab.c (lookup_symtab_1, lookup_partial_symtab): Use basename
	instead of non-portable search for `/'.  Use FILENAME_CMP instead
	of STREQ, to account for case-insensitive filesystems.
	(top-level): #include "filenames.h".

2001-05-05  Jim Blandy  <jimb@redhat.com>

	* breakpoint.c (check_duplicates): Use the breakpoint's type, not
	its address, to decide whether it's a watchpoint or not.  Zero
	is a valid code address.
	(update_breakpoints_after_exec): Admonishing comments.
	* breakpoint.h (struct breakpoint): Doc fixes.

	* breakpoint.c (check_duplicates): Take a breakpoint object as an
	argument, rather than an address and section.  All callers changed.

2001-05-03  Kevin Buettner  <kevinb@redhat.com>

	* defs.h (ptid_t): New typedef.
	(pid_to_ptid, null_ptid, minus_one_ptid, ptid_equal): New macros.

	* a68v-nat.c, alphabsd-nat.c, arch-utils.c, arm-linux-nat.c,
	blockframe.c, breakpoint.c, breakpoint.h,
	config/i386/nm-i386sol2.h, config/i386/tm-i386sco5.h,
	config/ia64/nm-linux.h, config/m68k/nm-hp300bsd.h,
	config/mips/nm-irix4.h, config/mips/nm-irix5.h,
	config/pa/nm-hppah.h, config/pa/tm-hppa.h,
	config/rs6000/nm-rs6000.h, config/sparc/nm-sun4sol2.h,
	corelow.c, cxux-nat.c, d10v-tdep.c, dink32-rom.c,
	dve3900-rom.c, fork-child.c, frame.c, gnu-nat.c, go32-nat.c,
	hp300ux-nat.c, hppa-tdep.c, hppab-nat.c, hppah-nat.c,
	hpux-thread.c, i386-linux-nat.c, i386aix-nat.c, i386b-nat.c,
	i386bsd-nat.c, i386gnu-nat.c, i386mach-nat.c, i386nbsd-nat.c,
	infcmd.c, inferior.h, inflow.c, infptrace.c, infrun.c,
	inftarg.c, infttrace.c, lin-lwp.c, lin-thread.c,
	linux-thread.c, lynx-nat.c, m3-nat.c, m32r-rom.c,
	m68knbsd-nat.c, m88k-nat.c, mac-nat.c, mips-nat.c,
	mon960-rom.c, monitor.c, ns32knbsd-nat.c, ocd.c, ppc-bdm.c,
	ppcnbsd-nat.c, proc-service.c, procfs.c, ptx4-nat.c,
	regcache.c, remote-adapt.c, remote-array.c, remote-bug.c,
	remote-e7000.c, remote-es.c, remote-mips.c, remote-mm.c,
	remote-nindy.c, remote-os9k.c, remote-rdi.c, remote-rdp.c,
	remote-sds.c, remote-sim.c, remote-st.c, remote-udi.c,
	remote-vx.c, remote.c, rs6000-nat.c, sol-thread.c,
	solib-aix5.c, solib-svr4.c, somsolib.c, sparc-nat.c,
	standalone.c, sun3-nat.c, sun386-nat.c, symm-nat.c, target.c,
	target.h, thread-db.c, thread.c, top.c, ultra3-nat.c,
	uw-thread.c, v850ice.c, win32-nat.c, wince.c, xcoffsolib.c
	(inferior_pid):  Rename to inferior_ptid everywhere - even in
	comments and obsolete ports.  In cases where this variable
	really is supposed to be used as a process id, use PIDGET() to
	extract the process id component from inferior_ptid.  The
	other cases, either involving other variables whose types had
	to be changed or functions whose signatures had to changed
	are listed separately below.

	* arm-linux-nat.c (get_thread_id): Change type of argument
	representing a combined process/thread id from ``int'' to
	``ptid_t''.  Also change parameter name to ptid.
	* breakpoint.h, breakpoint.c (breakpoint_thread_match): Likewise.
	* corelow.c (core_file_thread_alive): Likewise.
	* d10v-tdep.c (d10v_read_pc, d10v_write_pc): Likewise.
	* defs.h (*target_wait_hook): Likewise.
	* gdbthread.h (thread_info, delete_thread, pid_to_thread_id)
	(find_thread_pid, save_infrun_state, load_infrun_state): Likewise.
	* gnu-nat.c (gnu_thread_alive, gnu_pid_to_str, gnu_wait)
	(gnu_resume): Likewise.
	* go32-nat.c (go32_wait, go32_resume): Likewise.
	* h8500-tdep.c (h8500_read_pc, h8500_write_pc): Likewise.
	* hppa-tdep.c (target_read_pc, target_write_pc): Likewise.
	* hppah-nat.c (child_pid_to_str, hppa_tid_to_str,
	(hppa_pid_or_tid_to_str, child_post_startup_inferior)
	(child_thread_alive): Likewise.
	* hpux-thread.c (hpux_thread_notice_signals, hpux_thread_alive)
	(hpux_pid_to_str, hpux_thread_wait, hpux_thread_resume): Likewise.
	* i386-linux-nat.c (child_resume): Likewise.
	* ia64-linux-nat.c (enable_watchpoints_in_psr, fetch_debug_register)
	(store_debug_register, fetch_debug_register_pair)
	(store_debug_register_pair, ia64_linux_insert_watchpoint)
	(ia64_linux_remove_watchpoint, ia64_linux_stopped_by_watchpoint):
	Likewise.
	* ia64-tdep.c (ia64_read_pc, ia64_write_pc): Likewise.
	* inferior.h (read_pc_pid, generic_target_read_pc, write_pc_pid)
	(generic_target_write_pc, ptrace_wait, child_resume)
	(get_last_target_status): Likewise.
	* infptrace.c (ptrace_wait, child_resume): Likewise.
	* inftarg.c (child_wait, child_post_wait, child_thread_live)
	(child_pid_to_str): Likewise.
	* infttrace.c (ptrace_wait, child_thread_alive, child_resume)
	(hppa_pid_or_tid_to_str, child_post_startup_inferior): Likewise.
	* lin-lwp.c (add_lwp, delete_lwp, find_lwp_pid, lin_lwp_attach_lwp)
	(lin_lwp_resume, lin_lwp_wait, lin_lwp_thread_alive)
	(lin_lwp_pid_to_str): Likewise.
	* lin-thread.c (thread_db_alive, thread_db_pid_to_str)
	(thread_db_resume, thread_db_wait): Likewise.
	* linux-thread.c (linuxthreads_thread_alive, linuxthreads_pid_to_str)
	(linuxthreads_resume, linuxthreads_wait): Likewise.
	* lynx-nat.c (child_wait, child_thread_alive, child_resume)
	(child_pid_to_str): Likewise.
	* m3-nat.c (mach_really_wait, m3_resume): Likewise.
	* mac-nat.c (child_wait, child_resume): Likewise.
	* mips-tdep.c (mips_read_pc): Likewise.
	* monitor.c (monitor_wait, monitor_resume): Likewise.
	* ocd.c, ocd.h (ocd_thread_alive, ocd_resume): Likewise.
	* ppc-bdm.c (bdm_ppc_wait): Likewise.
	* procfs.c (do_attach, procfs_wait, procfs_resume)
	(procfs_notice_signals, procfs_thread_alive, procfs_pid_to_str)
	(procfs_set_watchpoint, procfs_stopped_by_watchpoint)
	(procfs_find_LDT_entry): Likewise.
	* regcache.c (read_register_pid, read_signed_register_pid)
	(write_register_pid, generic_target_read_pc, read_pc_pid)
	(generic_target_write_pc, write_pc_pid): Likewise.
	* regcache.h (read_register_pid, read_signed_register_pid)
	(write_register_pid): Likewise.
	* remote-adapt.c (adapt_wait, adapt_resume): Likewise.
	* remote-array.c (array_wait, array_resume): Likewise.
	* remote-bug.c (bug_wait, bug_resume): Likewise.
	* remote-e7000.c (e7000_wait, e7000_resume): Likewise.
	* remote-eb.c (eb_wait, eb_resume): Likewise.
	* remote-es.c (es1800_wait, es1800_resume): Likewise.
	* remote-mips.c (mips_wait, mips_resume): Likewise.
	* remote-mm.c (mm_wait, mm_resume): Likewise.
	* remote-nindy.c (nindy_wait, nindy_resume): Likewise.
	* remote-os9k.c (rombug_wait, rombug_resume): Likewise.
	* remote-rdi.c (arm_rdi_wait, arm_rdi_resume): Likewise.
	* remote-rdp.c (remote_rdp_resume, remote_rdp_wait): Likewise.
	* remote-sds.c (sds_wait, sds_resume): Likewise.
	* remote-sim.c (gdbsim_wait, gdbsim_resume): Likewise.
	* remote-st.c (st2000_wait, st2000_resume): Likewise.
	* remote-udi.c (udi_wait, udi_resume): Likewise.
	* remote-vx.c (vx_wait, vx_resume): Likewise.
	* remote.c (remote_current_thread, remote_resume, remote_wait)
	(remote_async_resume, remote_async_wait, remote_cisco_wait)
	(remote_thread_alive): Likewise.
	* sol-thread.c (thread_to_lwp, lwp_to_thread, sol_thread_resume)
	(sol_thread_wait, sol_thread_notice_signals, sol_thread_alive)
	(solaris_pid_to_str): Likewise.
	* symm-nat.c (child_wait, child_resume): Likewise.
	* target.c (debug_to_resume, debug_to_wait, debug_to_post_wait)
	(debug_to_notice_signals, debug_to_thread_alive)
	(normal_target_post_startup_inferior, normal_pid_to_str)
	(debug_to_post_startup_inferior): Likewise.
	* target.h (to_resume, to_wait, to_post_wait)
	(to_post_startup_inferior, to_notice_signals, to_thread_alive)
	(to_pid_to_str [all in struct target_ops]): Likewise.
	(child_post_wait, child_thread_alive, normal_pid_to_str): Likewise.
	* thread-db.c (thread_from_lwp, lwp_from_thread, thread_db_wait)
	(attach_thread, detach_thread, thread_db_resume, check_event)
	(thread_db_post_startup_inferior, thread_db_thread_alive)
	(thread_db_pid_to_str): Likewise.
	* thread.c (add_thread, delete_thread, find_thread_pid)
	(pid_to_thread_id, in_thread_list, load_infrun_state)
	(save_infrun_state, switch_to_thread, restore_current_thread)
	(make_cleanup_restore_current_thread): Likewise.
	* top.c (target_wait_hook): Likewise.
	* uw-thread.c (dbgpid, thr_to_lwp, lwp_to_thr, add_thread_uw)
	(uw_thread_resume, libtrhead_stub, uw_thread_wait, uw_thread_alive)
	(uw_thread_pid_to_str): Likewise.
	* v850ice.c (v850ice_wait, v850ice_resume): Likewise.
	* win32-nat.c (child_wait, child_resume, win32_child_thread_alive)
	(cywin_pid_to_str): Likewise.
	* wince.c (child_wait, child_resume, win32_child_thread_alive):
	Likewise.
	* config/nm-linux.h (linuxthreads_pid_to_str): Likewise.
	* config/nm-lynx.h (child_wait, lynx_pid_to_str): Likewise.
	* config/alpha/nm-linux.h (lin_lwp_attach_lwp): Likewise.
	* config/arm/nm-linux.h (lin_lwp_attach_lwp): Likewise.
	* config/h8500/tm-h8500.h (h8500_read_pc, h8500_write_pc): Likewise.
	* config/i386/nm-i386sol2.h (procfs_stopped_by_watchpoint)
	(procfs_set_watchpoint): Likewise.
	* config/i386/nm-linux.h (lin_lwp_attach_lwp): Likewise.
	* config/i386/nm-ptx4.h (child_wait): Likewise.
	* config/i386/nm-symmetry.h (child_wait): Likewise.
	* config/i386/tm-cygwin.h (cygwin_pid_to_str): Likewise.
	* config/ia64/nm-linux.h (ia64_linux_stopped_by_watchpoint)
	(ia64_linux_insert_watchpoint, ia64_linux_remove_watchpoint)
	(lin_lwp_attach_lwp): Likewise.
	* config/mips/nm-irix4.h, config/mips/nm-irix5.h
	(procfs_stopped_by_watchpoint, procfs_set_watchpoint): Likewise.
	* config/pa/nm-hppah.h (child_pid_to_str, hppa_tid_to_str)
	(hppa_pid_or_tid_to_str): Likewise.
	* config/pa/tm-hppa.h (target_read_pc, target_write_pc): Likewise.
	* config/powerpc/nm-linux.h (lin_lwp_attach_lwp): Likewise.
	* config/sparc/nm-sun4sol2.h (procfs_stopped_by_watchpoint)
	(procfs_set_watchpoint): Likewise.

	* gdbthread.h (thread_id_to_pid): Change return type which
	represents a combined process/thread id from ``int'' to
	``ptid_t''.
	* gnu-nat.c (gnu_wait): Likewise.
	* go32-nat.c (go32_wait): Likewise.
	* hpux-thread.c (hpux_thread_wait): Likewise.
	* inferior.h (procfs_first_available): Likewise.
	* inftarg.c (child_wait): Likewise.
	* infttrace.c (ptrace_wait): Likewise.
	* lin-lwp.c (lin_lwp_wait): Likewise.
	* lin-thread.c (thread_db_wait): Likewise.
	* linux-thread.c (linuxthreads_wait): Likewise.
	* lynx-nat.c (child_wait): Likewise.
	* m3-nat.c (mach_really_wait): Likewise.
	* mac-nat.c (child_wait): Likewise.
	* monitor.c (monitor_wait): Likewise.
	* ppc-bdm.c (bdm_ppc_wait): Likewise.
	* procfs.c (do_attach, procfs_wait, procfs_first_available): Likewise.
	* remote-adapt.c (adapt_wait): Likewise.
	* remote-array.c (array_wait): Likewise.
	* remote-bug.c (bug_wait): Likewise.
	* remote-e7000.c (e7000_wait): Likewise.
	* remote-eb.c (eb_wait): Likewise.
	* remote-es.c (es1800_wait): Likewise.
	* remote-mips.c (mips_wait): Likewise.
	* remote-mm.c (mm_wait): Likewise.
	* remote-nindy.c (nindy_wait): Likewise.
	* remote-os9k (rombug_wait): Likewise.
	* remote-rdi.c (arm_rdi_wait): Likewise.
	* remote-rdp.c (remote_rdp_wait): Likewise.
	* remote-sds.c (sds_wait): Likewise.
	* remote-sim.c (gdbsim_wait): Likewise.
	* remote-st.c (st2000_wait): Likewise.
	* remote-udi.c (udi_wait): Likewise.
	* remote-vx.c (vx_wait): Likewise.
	* remote.c (remote_wait, remote_async_wait, remote_current_thread)
	(remote_cisco_wait): Likewise.
	* sol-thread.c (thread_to_lwp, lwp_to_thread, sol_thread_wait):
	Likewise.
	* symm-nat.c (child_wait): Likewise.
	* target.c (debug_to_wait): Likewise.
	* target.h (to_wait [in struct target_ops]): Likewise.
	* thread.c (thread_id_to_pid): Likewise.
	* thread-db.c (thread_from_lwp, lwp_from_thread, thread_db_wait):
	Likewise.
	* top.c (*target_wait_hook): Likewise.
	* uw-thread.c (lwp_to_thr, uw_thread_wait): Likewise.
	* v850ice.c (v850ice_wait): Likewise.
	* win32-nat.c (child_wait): Likewise.
	* wince.c (child_wait): Likewise.
	* config/nm-lynx.h (child_wait): Likewise.
	* config/i386/nm-ptx4.h (child_wait): Likewise.
	* config/i386/nm-symmetry.h (child_wait): Likewise.

	* arch-utils.c (generic_prepare_to_proceed): Rename wait_pid
	to wait_ptid and change its type from ``int'' to ``ptid_t''.
	* breakpoint.c (reattach_breakpoints, detach_breakpoints): Likewise,
	but rename saved_inferior_pid to saved_inferior_ptid.
	* d10v-tdep.c (d10v_read_pc, d10_write_pc): Likewise, but rename
	save_pid to save_ptid.
	* gdbthread.h (struct thread_info): Likewise, but rename pid to ptid.
	* hppah-nat.c (child_pid_to_exec): Likewise, but rename
	saved_inferior_pid to saved_inferior_ptid.
	* hpux-thread.c (main_ptid): Likewise, but rename from main_pid.
	* infrun.c (previous_inferior_pid [static global]): Likewise,
	but rename to previous_inferior_ptid.
	(resume): Likewise, but rename resume_pid to resume_ptid.
	(struct execution_control_state): Likewise, but rename
	pid to ptid, saved_inferior_pid to saved_inferior_ptid,
	and waiton_pid to waiton_ptid.
	(target_last_wait_pid): Likewise, but rename to
	target_last_wait_ptid.
	* infttrace.c (saved_real_pid): Likewise, but rename to
	saved_real_ptid.
	(child_pid_to_exec_file): Likewise, but rename saved_inferior_pid
	to saved_inferior_ptid.
	* lin-lwp.c (struct lwp_info): Likewise, but rename pid to ptid.
	(trap_ptid): Likewise, but renamed from trap_pid.
	* lin-thread.c (handle_new_thread): Likewise, but rename gdb_pid
	to gdb_ptid.
	* linux-thread.c (detach_thread): Likewise, but rename pid to ptid.
	(thread_db_wait): Likewise, but rename ret_pid to retptid.
	* procfs.c (procfs_wait): Likewise, for retval whose name
	doesn't change.  Also, ``temp'' becomes two separate variables,
	one named temp_tid (an int) and the other temp_ptid.
	(procfs_notice_thread): Likewise (type change) for gdb_threadid
	whose name does not change.
	* regcache.c (registers_ptid): Likewise, but renamed from
	registers_pid.
	(read_register_pid, read_signed_register_pid, write_register_pid):
	Likewise, but rename save_pid to save_ptid.
	(read_pc_pid, write_pc_pid): Likewise, but rename saved_inferior_pid
	to saved_inferior_ptid.
	* remote.c (remote_newthread_step): Likewise, but rename pid to ptid.
	* sol-thread.c (struct ps_prochandle): Likewise.
	(sol_thread_resume): Likewise, for save_pid which becomes save_ptid.
	(sol_thread_wait): Likewise, for rtnval whose name does not
	change, and for save_pid which becomes save_ptid.
	(solaris_pid_to_str): Likewise for lwp whose name does not change.
	(sol_find_new_threads_callback): Likewise, for pid which becomes
	ptid.
	* target.h (target_resume, target_wait, target_post_wait)
	(target_post_startup_inferior, target_notice_signals)
	(target_thread_alive): Likewise.
	* thread.c (info_threads_command): Likewise, but rename
	current_pid to current_ptid.
	(struct current_thread_cleanup): Likewise, but rename field
	inferior_pid to inferior_ptid.
	* thread-db.c (find_new_threads_callback): Likewise, but rename
	pid to ptid.
	* uw-thread.c (thr_to_lwp): Likewise for lid whose name does not
	change.
	(lwp_to_tr): Likewise fo tid whose name remains unchanged.
	(thr_infpid, lwp_infpid, notice_thread, libthread_stub): Likewise,
	but rename pid to ptid.
	* config/alpha/nm-linux.h (ATTACH_LWP): Likewise.
	* config/arm/nm-linux.h (ATTACH_LWP): Likewise.
	* config/i386/nm-linux.h (ATTACH_LWP): Likewise.
	* config/ia64/nm-linux.h (ATTACH_LWP): Likewise.
	* config/pa/nm-hppah.h (target_tid_to_str): Likewise.
	* config/powerpc/nm-linux.h (ATTACH_LWP): Likewise.

	* arch-utils.c (generic_prepare_to_proceed):  Test for the
	"zero" ptid by using ptid_equal() to test to see if variable
	in question is the same as null_ptid.  This replaces a direct
	test against zero.
	* cxux-nat.c (add_shared_symbol_files): Likewise.
	* i386aix-nat.c, i386b-nat.c (i386_float_info): Likewise.
	* infcmd.c (run_command): Likewise.
	* inflow.c (kill_command): Likewise.
	* infttrace.c (call_ttrace): Likewise.
	* lin-lwp.c (lin_lwp_prepare_to_proceed): Likewise.
	* lin-thread.c (thread_db_kill): Likewise.
	* procfs.c (procfs_kill_inferior, procfs_mourn_inferior): Likewise.
	* remote-es.c (es1800_kill): Likewise.
	* sol-thread.c (sol_thread_create_inferior): Likewise.
	* solib.c (locate_base): Likewise.
	* target.c (nosupport_runtime): Likewise.
	* thread-db.c (thread_db_wait): Likewise.
	* top.c (quit_confirm, quit_force): Likewise.
	* uw-thread (lwp_infpid, uw_thread_resume): Likewise.

	* infrun.c (handle_inferior_event, stop_stepping, normal_stop):
	Use ptid_equal to compare value of process/thread ids instead of
	``=='' and ``!='' operators.
	lin-lwp.c (delete_lwp, lin_lwp_prepare_to_proceed)
	(stop_wait_callback, lin_lwp_wait): Likewise.
	* procfs.c (procfs_wait): Likewise.
	* regcache.c (read_register_bytes, read_register_gen)
	(write_register_gen, read_register, read_register_pid)
	(read_signed_register, read_signed_register_pid, write_register)
	(write_register_pid, supply_register): Likewise.
	* remote-vx.c (vx_resume): Likewise.
	* sol-thread.c (sol_thread_wait): Likewise.
	* symm-nat.c (kill_inferior): Likewise.
	* thread.c (delete_thread, find_thread_pid, pid_to_thread_id)
	(in_thread_list, info_threads_command, switch_to_thread)
	(restore_current_thread): Likewise.
	* uw-thread (libtread_stub): Likewise.

	* arm-linux-nat.c (GET_THREAD_ID): Change PID to PTID.

	* corelow.c (add_to_thread_list): Convert argument in add_thread()
	call to a ptid_t.
	* gnu-nat.c (inf_validate_procs): Likewise.
	* linux-thread.c (stop_thread, update_stop_threads): Likewise.
	* remote.c (record_currthread, remote_threads_info): Likewise.
	* win32-nat.c (child_add_thread): Likewise.

	* hpux-thread.c (save_inferior_pid, restore_inferior_pid): Rename,
	respectively, to save_inferior_ptid() and restore_inferior_ptid().
	Adjust implementations to operate on ``ptid_t'' instead of ``int''.
	* lin-lwp.c (save_inferior_pid, restore_inferior_pid): Likewise.
	* lin-thread.c (save_inferior_pid, restore_inferior_pid): Likewise.
	* linux-thread.c (save_inferior_pid, restore_inferior_pid): Likewise.
	* proc-service.c (save_inferior_pid, restore_inferior_pid): Likewise.
	* sol-thread.c (save_inferior_pid, restore_inferior_pid): Likewise.
	* thread-db.c (save_inferior_pid, restore_inferior_pid): Likewise.

	* infrun.c (RESUME_ALL): New macro representing the -1 ptid
	to be passed to target_resume() when all threads should resume.
	(resume): Set resume_ptid to RESUME_ALL rather than -1.
	(handle_inferior_event): Invoke target_resume() with RESUME_ALL
	instead of -1.
	* irix5-nat.c (solib_create_inferior_hook): Convert -1 to
	a ptid_t in target_resume() call.
	* osfsolib.c (solib_create_inferior_hook): Likewise.
	* solib-svr4.c (solib_create_inferior_hook): Likewise.

	* lin-lwp.c (PIDGET, PIDGET0): Rename original PIDGET macro to
	PIDGET0.  Define new PIDGET macro which uses PIDGET0, the only
	difference being that the 0xffff pattern will be interpreted
	as -1.
	* lin-thread.c (PIDGET, PIDGET0): Likewise.
	* thread-db.c (PIDGET, PIDGET0): Likewise.
	* config/nm-linux.h (PIDGET, PIDGET0): Likewise.
	* config/i386/tm-i386sol2.h (PIDGET, PIDGET0): Likewise.
	* config/i386/tm-i386v42mp.h (PIDGET, PIDGET0): Likewise.
	* config/sparc/tm-sun4sol2.h (PIDGET, PIDGET0): Likewise.

	* m3-nat.c (init_m3_ops): Fix typo; initialize to_wait field to
	mach_really_wait rather than mach_really__wait.
	* lin-thread.c (check_for_thread_event): Fix warning; make function
	actually return a value.

	* gdbarch.sh (TARGET_READ_PC, TARGET_WRITE_PC): Change type of
	``pid'' arguments from ``int'' to ``ptid_t''.  Also renamed
	pid to ptid.
	* gdbarch.h, gdbarch.c: Regenerated.

2001-05-03  Jonathan Larmour  <jlarmour@redhat.com>

	* rdi-share/devsw.c: Include <time.h> for struct tm

2001-05-03  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/fnchange.lst: Add mappings for the new
	opcodes/openrisc-* files.

2001-05-01  Michael Snyder  <msnyder@redhat.com>

	* lin-lwp.c: Change printf to fprintf_unfiltered.
	* Makefile.in: Add rules for thread-db.o, lin-lwp.o, proc-service.o.

2001-05-01  Nicholas Duffek  <nsd@redhat.com>

	* config/rs6000/tm-rs6000.h (IN_SOLIB_RETURN_TRAMPOLINE): Define.
	(rs6000_in_solib_return_trampoline): Declare.
	* rs6000-tdep.c (rs6000_in_solib_return_trampoline): New
	function.
	(rs6000_skip_trampoline_code): Skip bigtoc fixup code.
	* xcoffread.c (read_xcoff_symtab): Perform the ISFCN function
	check after the CSECT check rather than before it.  Allocate
	separate symtabs for CSECTs whose names begin with '@'.
	(scan_xcoff_symtab): Don't ignore symbols beginning with '@'.
	Activate the misc_func_recorded mechanism for whose names begin
	with '@'.

2001-04-30  J.T. Conklin  <jtc@redback.com>

	* ppcnbsd-nat.c (fetch_inferior_registers)
 	(store_inferior_registers, fetch_core_registers): Changed to use
	fpreg[] instead of r_regs[] to access floating point registers.

2001-04-30  Elena Zannoni  <ezannoni@redhat.com>

	* sh-tdep.c: Get rid of the function prototypes.
	(sh_sh4_build_float_register_type): Move earlier in file.
	(fv_reg_base_num): Ditto.
	(dr_reg_base_num): Ditto.

2001-04-30  Michael Snyder  <msnyder@redhat.com>

	* thread-db.c: Revert 2001-04-26 change for debugging output.
	* lin-lwp.c: Ditto.
	* lin-lwp.c: Add set/show debug lin-lwp command.  Use this
	command to turn extra debugging output on / off.

2001-04-30  Eli Zaretskii  <eliz@is.elta.co.il>

	* buildsym.c (start_subfile): Use FILENAME_CMP instead of STREQ.
	(top-level): #include filenames.h.

	* dwarf2read.c (dwarf2_start_subfile): Use IS_ABSOLUTE_PATH and
	FILENAME_CMP, to DTRT on non-Posix platforms.
	(top-level): #include filenames.h.


2001-04-27  Andrew Cagney  <ac131313@redhat.com>

	* gdbtypes.c (check_stub_method): Always initialize ``p''.

2001-04-27  Andrew Cagney  <ac131313@redhat.com>

	* configure.host: Delete romp host.
	* TODO: Update.

2001-04-27  Andrew Cagney  <ac131313@redhat.com>

	* TODO: Updates to 5.1.  No more targets to obsolete.

2001-04-27  Don Howard  <dhoward@redhat.com>

	(Changes from Kevin Buettner, with minor update by Don Howard.)
	
	* i387-nat.c (i387_supply_fxsave, i387_fill_fxsave, i387_tag): Fix
	typos in which hexadecimal constants were really intended to be
	binary constants.
	(i387_tag): Swap logic regarding zero vs non-zero exponents.
	* MAINTAINERS (Misc): Added myself to the write-after-approval
	list.

2001-04-26  Jim Blandy  <jimb@redhat.com>

	(Changes from Daniel Berlin, with revisions by Jim Blandy.)
	
	Abstract out operations specific to particular C++ ABI's, and
	invoke them through a function table.  This removes the C++ ABI
	dependencies scattered throughout the code, and allows us to
	cleanly add support for new C++ ABI's.
	* cp-abi.h, cp-abi.h, gnu-v2-abi.c, hpacc-abi.c: New files.
	* c-typeprint.c, c-valprint.c, dbxread.c, eval.c, gdbtypes.c,
	jv-typeprint.c, linespec.c, symtab.c, typeprint.c, valops.c:
	#include "cp-abi.h".  These files all use functions now declared
	there.
	* symtab.h (OPNAME_PREFIX_P, VTBL_PREFIX_P, DESTRUCTOR_PREFIX_P):
	Deleted.  These services are now provided by functions declared in
	cp-abi.h.
	* value.h (value_rtti_type, value_virtual_fn_field): Same.
	* values.c (value_virtual_fn_field): Same, for this definition.
	* valops.c (value_rtti_type): Same.	
	* c-typeprint.c (c_type_print_base): Use the functions from
	"cp-abi.h", instead of the old macros, or hard-coded ABI-specific
	tests.
	* dbxread.c (record_minimal_symbol): Same.
	* gdbtypes.c (get_destructor_fn_field, virtual_base_index,
	virtual_base_index_skip_primaries): Same.
	* jv-typeprint.c (java_type_print_base): Same.
	* linespec.c (find_methods, decode_line_1): Same.
	* symtab.c (gdb_mangle_name): Same.
	* Makefile.in (SFILES): Add the new .c files mentioned above.
	(cp_abi_h): New variable.
	(COMMON_OBS): Add gnu-v2-abi.o, hpacc-abi.o, and cp-abi.o.
	(cp-abi.o, gnu-v2-abi.o, hpacc-abi.o): New targets.
	(c-typeprint.o, c-valprint.o, dbxread.o, eval.o, gdbtypes.o,
	jv-typeprint.o, symtab.o, linespec.o, typeprint.o, valops.o): Add
	dependency on $(cp_abi_h).

2001-04-26  Michael Snyder  <msnyder@redhat.com>

	* thread-db.c (_initialize_thread_db): Add set/show command
	"debug-linux-threads" for debugging output.
	* lin-lwp.c (various): Use global "debug_linux_threads to 
	turn on extra debugging output.
	* lin-lwp.c: Minor cleanups in comments.
	* target.c (normal_pid_to_str): Get rid of an ancient hack.
	* remote.c (remote_pid_to_str): New function for remote target.

2001-04-24  Jim Blandy  <jimb@redhat.com>

	* c-typeprint.c (c_type_print_cv_qualifier): Don't print `const'
	qualifier on C++ references; all references are innately const.

2001-04-20  Mark Kettenis  <kettenis@gnu.org>

	* event-top.h: Fix formatting.

2001-04-17  Andrew Cagney  <ac131313@redhat.com>

	* source.c (openp): Obsolete #ifdef MPW code.
	(open_source_file): Ditto.
	* event-top.c (display_gdb_prompt): Ditto.
	* utils.c (query): Ditto.
	(init_page_info): Ditto.
	(init_page_info): Delete #ifndef MPW.
	* top.c (gdb_readline): Ditto.
	* mac-xdep.c: Obsolete.
	* mac-gdb.r: Obsolete.
	* config/powerpc/xm-mpw.h: Obsolete.
	* config/xm-mpw.h: Obsolete.
	* mpw-make.sed: Obsolete.
	* mpw-config.in: Obsolete.
	* TODO: Update
	* NEWS: Update

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

	* i386-tdep.c (i386_frameless_function_invocation): New function.
	* config/i386/tm-i386.h (FRAMELESS_FUNCTION_INVOCATION): Redefine
	in terms of i386_frameless_function_invocation.  Adjust comment.
	(i386_frameless_function_invocation): New prototype.

2001-04-18  Martin M. Hunt  <hunt@redhat.com>

	* top.c (gdb_init): Don't call cli_out_new() to
	create global uiout if init_ui_hook is set.  uiout will
	have to be initialized there.

2001-04-18  Andrew Cagney  <ac131313@redhat.com>

	* arch-utils.c: Include "regcache.h".

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

	* i386-tdep.c (i386_saved_pc_after_call): New function.
	* config/i386/tm-i386.h (SAVED_PC_AFTER_CALL): Redefine in terms
	of i386_saved_pc_after_call.
	(i386_saved_pc_after_call): New prototype.

2001-04-17  Michael Snyder  <msnyder@redhat.com>

	* i386-nat.c: Fix typo in comment.
	* solib.c (no_shared_libraries): New function.  Discard all symbols
	from shared libraries.
	(_initialize_solib): Add command "nosharedlibrary" as complement
	to the command "sharedlibrary".  Unloads symbols for all solibs.

2001-04-16  Andrew Cagney  <ac131313@redhat.com>

	* configure.host (m68030-sony-*, m68*-isi-*, m68*-sony-*):
	* configure.tgt (m68*-rom68k-*, m68*-*bug-*, m68*-monitor-*)
	(m68*-est-*, m68*-sony-*, m68*-isi-*):
	* Makefile.in (xm-news1000.h, tm-news.h, xm-news.h): Obsolete..
	* config/m68k/xm-news.h: Obsolete.
	* config/m68k/tm-news.h: 
	* config/m68k/xm-news1000.h: Obsolete.
	* config/m68k/news.mh: Obsolete.
	* config/m68k/news.mt: Obsolete.
	* config/m68k/nm-news.h: Obsolete.
	* config/m68k/news1000.mh: Obsolete.
	* news-xdep.c: Obsolete.
	* Makefile.in (isi-xdep.o): Obsolete.
	(ALLDEPFILES): Delete isi-xdep.c.
	(tm-isi.h): Obsolete.
	* m68k-tdep.c (altos_skip_prologue): Update comments.
	(isi_skip_prologue): Obsolete.
	* isi-xdep.c: Obsolete.
	* config/m68k/xm-isi.h: Obsolete.
	* config/m68k/isi.mh: Obsolete.
	* config/m68k/tm-isi.h: Obsolete.
	* config/m68k/isi.mt: Obsolete.

	* TODO: Update.
	* NEWS: Update.

2001-04-17  Michael Snyder  <msnyder@redhat.com>

	* remote.c (remote_open_1): On opening the remote target, activate
	the solib_create_inferior_hook, so that it can detect when the
	target loads shared libraries.
	(remote_async_open_1): Ditto.

2001-04-17  Michael Snyder  <msnyder@redhat.com>

	* breakpoint.c (print_one_breakpoint): Handle 64-bit addresses.
	* tracepoint.c (tracepoints_info): Handle 64-bit addresses.

2001-04-17  Michael Snyder  <msnyder@redhat.com>

	* thread-db.c (check_thread_signals): When looping over all
	signals, ignore signal zero.
	(disable_thread_signals): Ditto.

2001-04-17  Eirik Fuller <eirik@netapp.com>

	* thread.c (do_captured_thread_select): Allow the argument to the
	thread command to be an expression rather than a literal integer.

2001-04-17  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-tdep.c (i386_linux_saved_pc_after_call): Use
	read_memory_unsigned_integer instead of read_memory_integer.

2001-04-16  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (map_index_vs_section_name_okay): New function.
	(aix5_relocate_main_executable): Don't use file offsets for
	determining corresponding sections and map file entries.  Call
	map_index_vs_section_name_okay() to do this instead.

2001-04-16  Kevin Buettner  <kevinb@redhat.com>

	* procfs.c (open_with_retry): New function.
	(open_procinfo_files, load_syscalls, proc_iterate_over_mappings)
	(proc_get_LDT_entry): Call open_with_retry() instead of open().

2001-04-16  Kevin Buettner  <kevinb@redhat.com>

	* ia64-linux-nat.c (ia64_linux_stopped_by_watchpoint): Adjust
	comparison against TRAP_HWBKPT constant yet again to account
	for the various values used by different kernel versions.

2001-04-16  Daniel Berlin  <dan@cgsoftware.com>

	* demangle.c (_initialize_demangler): Use xcalloc on the
	demangling_style_names, and make it a null terminated array of
	names, to avoid a crash.

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

	* i386-tdep.c (i386_frame_chain): New function.
	* config/i386/tm-i386.h (FRAME_CHAIN): Redefine in terms of
	i386_frame_chain.
	(i386_frame_chain): New prototype.

2001-04-14  J.T. Conklin  <jtc@redback.com>
	
	* target.h (target_ops): Removed to_core_file_to_sym_file vector
 	function.
	* corelow.c (core_ops): Updated for above change.
	* gnu-nat.c (core_ops): Likewise.
	* inftarg.c (child_ops): Likewise.
	* monitor.c (monitor_ops): Likewise.
	* ppc-bdm.c (bdm_ppc_ops): Likewise.
	* remote-adapt.c (adapt_ops): Likewise.
	* remote-bug.c (bug_ops): Likewise.
	* remote-e7000.c (e7000_ops): Likewise.
	* remote-eb.c (eb_ops): Likewise.
	* remote-es.c (es1800_ops, es1800_child_ops): Likewise.
	* remote-mm.c (mm_ops): Likewise.
	* remote-nindy.c (nindy_ops): Likewise.
	* remote-nrom.c (nrom_ops): Likewise.
	* remote-os9k.c (rombug_ops): Likewise.
	* remote-rdp.c (remote_rdp_ops): Likewise.
	* remote-sim.c (gdbsim_ops): Likewise.
	* remote-st.c (st2000_ops): Likewise.
	* v850ice.c (v850ice_ops): Likewise.
	* target.c (cleanup_target): Likewise
	(update_current_target): Likewise.
	(setup_target_debug): Likewise
	(debug_to_core_file_to_sym_file): Removed.

	* corefile.c (core_file_command) [HPUXHPPA]: Removed code that
 	sets symbol file from information obtained from the core file.
	* corelow.c (core_file_to_sym_file): Removed.
	
2001-04-13  Fernando Nasser  <fnasser@redhat.com>

	From  Adam Mirowski  <Adam.Mirowski@Sun.COM>
	Fixed Insight on Solaris. It was not possible to debug a process
	because of EINTR "errors".
	* procfs.c: (procfs_wait): if proc_wait_for_stop() fails
	with EINTR, retry the call.

2001-04-12  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (enum maptype): Delete.
	(struct lm_info): Add new member ``nmappings''.  Make ``mapping''
	member a pointer instead of a statically sized array.
	(build_so_list_from_mapfile): Dynamically allocate ``mapping''
	array.
	(aix5_relocate_main_executable, aix5_relocate_section_addresses,
	aix5_find_global_pointer): Search for correct mapping to use
	based on file offset instead of knowledge of whether the section
	is read-only or read/write.
	(aix5_find_gate_addresses): Use the first mapping instead of
	the (now defunct) MT_READONLY mapping.

2001-04-12  Nicholas Duffek  <nsd@redhat.com>

	* xcoffread.c (scan_xcoff_symtab): Ignore symbols beginning with
	"@".

2001-04-12  Kevin Buettner  <kevinb@redhat.com>

	* config/i386/fbsd.mh (NATDEPFILES): Add i386-nat.o.

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

	Obsolete i[3456]86-*-sunos* (aka Sun386) host and target.
	* config/i386/sun386.mh: Obsolete.
	* config/i386/sun386.mt: Obsolete.
	* config/i386/xm-sun386.h: Obsolete.
	* config/i386/tm-sun386.h: Obsolete.
	* config/i386/nm-sun386.h: Obsolete.
	* Makefile.in (ALLDEPFILES): Delete sun386-nat.c.
	(sun386-nat.o): Target is obsolete.
	* sun386-nat.c: Obsolete.
	* configure.tgt (i[3456]86-*-sunos*): Obsolete.
	* configure.host (i[3456]86-*-sunos*): Obsolete.
	* NEWS: Update.
	* TODO: Update.

2001-04-10  J.T. Conklin  <jtc@redback.com>

	* maint.c: Fix typo in comment.

2001-04-09  Keith Seitz  <keiths@cygnus.com>

	* MAINTAINERS: Swap with Syd Polk as a gdbtk maintainer.

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

	* fork-child.c (fork_inferior, clone_and_follow_inferior): 
	Document fact that apparent call to vfork() might actually be
	a call to fork() instead.
	* ser-pipe.c (pipe_open): Likewise.

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

	* printcmd.c (print_frame_args): Use a cleanup to invoke
	ui_out_list_end() so that the list count nesting flag will
	be decremented properly when an error occurs.
	* stack.c (print_frame): Likewise.

2001-04-06  J.T. Conklin  <jtc@redback.com>

	* dcache.c (dcache_write_line): Fixed bugs where cache line was
 	not written to target correctly.

	* gdbserver/low-hppabsd.c (read_inferior_memory): Add explicit 
	void return value;
	* gdbserver/low-nbsd.c: Likewise.
	* gdbserver/low-sparc.c: Likewise.
	* gdbserver/low-sun3.c: Likewise.

2001-04-06  Geoffrey Keating  <geoffk@redhat.com>

	* config/rs6000/nm-rs6000.h (PTRACE_ATTACH): Don't define.
	(PTRACE_DETACH): Don't define.

2001-04-06  David Smith  <dsmith@redhat.com>

	* arch-utils.c (default_prepare_to_proceed)
	(generic_prepare_to_proceed): Added new functions.
	* arch-utils.h: New function declarations for
	default_prepare_to_proceed() and generic_prepare_to_proceed().
	* gdbarch.sh: Added PREPARE_TO_PROCEED.
	* gdbarch.c: Regenerated.
	* gdbarch.h: Regenerated.
	* inferior.h: Added get_last_target_status() declaration.
	* infrun.c (get_last_target_status): Added new function.
	(handle_inferior_event): Saves last pid and waitstatus, which will
	get returned by get_last_target_status(). 

	* hppa-tdep.c (prepare_to_proceed):  Added comment stating that
	prepare_to_proceed() is potentially redundant since
	default_prepare_to_proceed() has been added.
	* linux-thread.c (prepare_to_proceed): Ditto.
	* lin-lwp.c (prepare_to_proceed): Ditto.
	* m3-nat.c (prepare_to_proceed): Ditto.
	
2001-04-05  Andrew Cagney  <ac131313@redhat.com>

	Obsolete powerpcle-*-cygwin* and powerpcle-*-solaris* platforms
	and powerpc-*-netware* target.
	* configure.host (powerpcle-*-cygwin*, powerpcle-*-solaris*):
	Obsolete.
	* configure.tgt (powerpc-*-netware*, powerpcle-*-cygwin*)
	(powerpcle-*-solaris*): Obsolete.
	* config/powerpc/tm-cygwin.h: Obsolete.
	* config/powerpc/cygwin.mt: Obsolete.
	* config/powerpc/xm-cygwin.h: Obsolete.
	* config/powerpc/cygwin.mh: Obsolete.
	* config/powerpc/nm-solaris.h: Obsolete.
	* config/powerpc/xm-solaris.h: Obsolete.
	* config/powerpc/tm-solaris.h: Obsolete.
	* config/powerpc/solaris.mt: Obsolete.
	* config/powerpc/tm-ppc-nw.h: Obsolete.
	* config/powerpc/ppc-nw.mt: Obsolete.
	* TODO: Update.
	* NEWS: Update.

2001-04-06  Fernando Nasser  <fnasser@redhat.com>

	* buildsym.c (record_line): Turn off unused addr bits.

2001-04-06  Fernando Nasser  <fnasser@redhat.com>

	From David Deephanphongs <deephan@telocity.com>
	* inferior.h:   Fix declarations of get_inferior_args and 
	set_inferior_args, which were missing the trailing 's'.

2001-04-05  Jeff Holcomb  <jeffh@redhat.com>

	* monitor.c (monitor_supply_register): Only report an error if we
	don't get a valid value.

2001-04-05  Eli Zaretskii  <eliz@is.elta.co.il>

	* README: Don't mention gdba.el.

2001-04-05  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

        From  Jimmy Guo  <guo@cup.hp.com>
        * top.c (init_main): set prompt if annotation_level>1,
        this is necessary when annotation_level is set to 2 via
        --annotate=2 command line option.

2001-04-04  Andrew Cagney  <ac131313@redhat.com>

	Obsolete a29k-*-* host and a29k-*-sym1* and a29k-*-kern* targets.
	* configure.tgt (a29k-*-sym1*, a29k-*-kern*): Obsolete.
	* configure.host (a29k-*-*): Obsolete.
	* Makefile.in (ALLDEPFILES): Remove ultra3-nat.c and
	ultra3-xdep.c.
	(ultra3-nat.o, ultra3-xdep.o): Obsolete.
	* config/a29k/tm-ultra3.h: Obsolete.
	* config/a29k/ultra3.mt: Obsolete.
	* config/a29k/ultra3.mh: Obsolete.
	* config/a29k/nm-ultra3.h: Obsolete.
	* config/a29k/xm-ultra3.h: Obsolete.
	* ultra3-xdep.c: Obsolete.
	* ultra3-nat.c: Obsolete.
	* config/a29k/a29k-kern.mt: Obsolete.
	* NEWS: Update.
	* TODO: Update.

Wed Apr  4 21:48:42 2001  Christopher Faylor <cgf@cygnus.com>

	* main.c: Remove windows.h use.
	(gdbtk_test): Use PATH_MAX for home var calculation.
	* remote-e7000.c (e7000_parse_device): Accomodate Cygwin as well as
	Win32 in colon test.
	* ser-tcp.c: Use modern __CYGWIN__ conditional.
	* source.c (mod_path): Add __CYGWIN__ conditional to WIN32 test.
	(openp): Ditto.
	* symfile.c (symfile_bfd_open): Ditto.

2001-04-04  Martin M. Hunt  <hunt@redhat.com>

	* main.c (captured_main): For GDBtk, don't use tui_fileopen().
	Handle all stream setup in gdbtk_init

2001-04-04  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_extract_return_value): Don't return the return
	value of a void function.
	(i386_store_return_value): Likewise.

2001-04-03  Andrew Cagney  <ac131313@redhat.com>

	Obsolete w65-*-* target.
	* configure.tgt (w65-*-*): Obsolete.
	* config/w65/w65.mt: Obsolete.
	* config/w65/tm-w65.h: Obsolete.
	* w65-tdep.c: Obsolete.
	* NEWS: Update.  Fix TiC80 description.
	* TODO: Update.

2001-04-03  Andrew Cagney  <ac131313@redhat.com>

	Obsolete tic80-*-* target.
	* configure.tgt (tic80-*-*): Obsolete.
	* config/tic80/tic80.mt: Obsolete.
	* config/tic80/tm-tic80.h: Obsolete.
	* tic80-tdep.c: Obsolete.
	* TODO: Update
	* NEWS: Update.

2001-04-02  J.T. Conklin  <jtc@redback.com>

	* remote-mips.c (S_IROTH): Moved definition from here.
	* gdb_stat.h (S_IROTH): to here.

	* remote.c (remote_protocol_e, remote_protocol_E): Define.
	(set_remote_protocol_e_packet_cmd)
	(set_remote_protocol_E_packet_cmd)
	(show_remote_protocol_e_packet_command)
	(show_remote_protocol_E_packet_command): New functions.
	(init_all_packet_configs): Initialize remote_protocol_e and
	remote_protocol_E.
	(remote_resume, remote_async_resume): Support e/E command
	packets.
	(show_remote_cmd): Show state of remote_protocol_e and 
	remote_protocol_E.
	(_initialize_remote): Add "set remote step-over-range-packet" 
	and "set remote step-over-range-w-signal-packet" to CLI.

2001-04-01  Andrew Cagney  <ac131313@redhat.com>

	Obsolete ns32k-*-mach3*, ns32k-umax-*, ns32k-utek-sysv* and
	ns32k-utek-*.
	* Makefile.in (ALLDEPFILES): Delete umax-xdep.c and ns32km3-nat.c.
	(umax-xdep.o, ns32km3-nat.o): Obsolete.
	* configure.tgt (ns32k-*-mach3*, ns32k-utek-sysv*, ns32k-utek-*):
	Obsolete.
	* configure.host (ns32k-*-mach3*, ns32k-umax-*, ns32k-utek-sysv*):
	Obsolete.
	* config/ns32k/merlin.mh: Obsolete.
	* config/ns32k/merlin.mt: Obsolete.
	* config/ns32k/xm-merlin.h: Obsolete.
	* config/ns32k/tm-merlin.h: Obsolete.
	* config/ns32k/nm-umax.h: Obsolete.
	* config/ns32k/umax.mh: Obsolete.
	* config/ns32k/umax.mt: Obsolete.
	* config/ns32k/xm-umax.h: Obsolete.
	* umax-xdep.c: Obsolete.
	* config/ns32k/ns32km3.mh: Obsolete.
	* config/ns32k/ns32km3.mt: Obsolete.
	* config/ns32k/tm-ns32km3.h: Obsolete.
	* config/ns32k/xm-ns32km3.h: Obsolete.
	* ns32km3-nat.c: Obsolete.
	* ns32k-tdep.c (merlin_skip_prologue): Obsolete.
	(merlin_frame_num_args): Ditto.
	* NEWS: Update.
	* TODO: Update.

2001-04-02  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/fnchange.lst: Tweak due to
	expect/example/chesslib.c.

2001-04-02  Kevin Buettner  <kevinb@redhat.com>

	* m88k-tdep.c (examine_prologue): Change type of ``insn'' from
	unsigned int to unsigned long.  Also, fix format string.
	(pop_frame):  Fix PC_IN_CALL_DUMMY() call so that it doesn't
	use an undeclared variable.  Also, delete declaration and
	initialization of ``fp'' because it is otherwise unused.
	* remote-bug.c (sleep): Delete declaration.
	(bug_store_register, bug_write_memory, bug_read_memory)
	(bug_insert_breakpoint, bug_remove_breakpoint): Fix sprintf()
	format statements and cast certain sprintf() arguments to
	eliminate warnings.
	(bug_load): Likewise for call to printf_filtered().
	* config/m88k/tm-m88k.h (FIX_CALL_DUMMY): Eliminate
	assignment to ``pc''.  The necessary assignment is done in
	hand_function_call() after the invocation of FIX_CALL_DUMMY().

2001-03-20  Daniel Berlin  <dberlin@redhat.com>
	
	* symtab.c (completion_list_add_name): Remove duplicate string checks,
	readline already does this, and it's much faster at it, too.

2001-04-01  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c: Minor tweaks, to pacify the ari script.

2001-04-01  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_extract_struct_value_address): New function.
	* config/i386/tm-i386.h (EXTRACT_STRUCT_VALUE_ADDRESS): Redefine
	in terms of i386_extract_struct_value_address.
	(i386_extract_struct_value_address): New prototype.

	* i386-linux-nat.c (i386_linux_dr_get): Change type of return
	value to `unsigned long'.  Change type of `value' to `unsigned
	long'.
	(i386_linux_dr_set): Change type of second argument to `unsigned
	long'.
	(i386_linux_dr_set_control): Change type of first argument to
	`unsigned long'.
	(i386_linux_dr_get_status): Change type of return value to
	unsigned long.
	* config/i386/nm-linux.h (i386_linux_dr_set_control,
	i386_linux_dr_get_status): Adjust prototypes accordingly. 

2001-03-31  Kevin Buettner  <kevinb@redhat.com>

	* ia64-linux-nat.c (ia64_linux_stopped_by_watchpoint): Change
	TRAP_HWBKPT constant to match that in the kernel headers for
	Linux/IA-64.

2001-03-31  Mark Kettenis  <kettenis@gnu.org>

	* i386bsd-nat.c: Include "gdb_assert.h".
	[HAVE_PT_GETDBREGS] (DBREG_DRX): Define if not
	already defined.
	[HAVE_PT_GETDBREGS] (i386bsd_dr_set, i386bsd_dr_set_control,
	i386bsd_dr_set_addr, i386bsd_dr_reset_addr,
	i386bsd_dr_get_status): New functions.
	* config/i386/nm-fbsd.h [HAVE_PT_GETDBREGS]
	(I386_USE_GENERIC_WATCHPOINTS): Define.
	Include "i386/nm-i386.h".
	(I386_DR_LOW_SET_CONTROL, I386_DR_LOW_SET_ADDR,
	I386_DR_LOW_RESET_ADDR, I386_DR_LOW_GET_STATUS): New macros.
	(i386bsd_dr_set_control, i386bsd_dr_set_addr,
	i386bsd_dr_reset_addr, i386bsd_dr_get_status): New prototypes.
	* acconfig.h (HAVE_PT_GETDBREGS): New configure macro.
	* configure.in: Cleanup a few comments.  Check for PT_GETDBREGS
	ptrace request.
	* config.in, configure: Regenerate.

	* i386-nat.c (i386_insert_aligned_watchpoint): Set address
	register before enabling it by setting the control register.
	(i386_remove_aligned_watchpoint): Reset address register after
	disabling it by setting the control register.

	* i386-tdep.c (i386_extract_return_value): If the type of the
	return value is TYPE_STRUCT and the number of fields is one, call
	ourselves with TYPE set tp the type of the first field.
	(i386_store_return_value): Likewise.
	This fixes a problem with returning structs consisting of a single
	`float' or `double' on *BSD.

2001-03-30  Mark Kettenis  <kettenis@gnu.org>

	* lin-lwp.c (lin_lwp_resume): Don't mark LWP as not stopped until
	we're absolutely sure we're going to resume it.

	* thread-db.c (check_event): Don't report an error if we encounter
	a thread creation event for a thread that's already in the thread
	list, since that may legitemately happen.  Instead only call
	attach_thread if it's not already in the thread list.

2001-03-28  Andrew Cagney  <ac131313@redhat.com>

	* config/pa/xm-hppah.h (malloc): Really delete declaration
	(MALLOC_INCOMPATIBLE): Really delete macro.
	* cli/cli-cmds.c (apropos_command): Use xcalloc.

2001-03-28  Andrew Cagney  <ac131313@redhat.com>

	* configure.in (build_warnings): Add -Wuninitialized.
	* configure: Regenerate.

	* v850-tdep.c (v850_scan_prologue): Initialize ``insn2''.
	* sparc-tdep.c (sparc64_push_arguments): Add default case to
	switch.
	* sh-tdep.c (sh_do_fp_register): Replace ``?:'' printf format
	expression with if statement.
	* mn10200-tdep.c (mn10200_analyze_prologue): Initialize
	``stack_size''.
	* mips-tdep.c (show_mipsfpu_command): Add default case to switch.
	(mips_dump_tdep): Fix setting of ef_mips_arch.
	* mcore-tdep.c (mcore_analyze_prologue): Initialize ``fp_regnum''.
	* dsrec.c (make_srec): Always initialize ``binbuf''.
	* monitor.c (monitor_read_memory_single): Do not pass an
	uninitialized buffer to monitor_error. Make ``i'' more local.

2001-03-28  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Change ns32k target to ,-Werror.

	* ns32k-tdep.c: Include "gdbcore.h"
	(flip_bytes): Change first argument to void*. Add forward
	declaration.
	(sign_extend): Add declaration.
	(merlin_frame_num_args): Add final else clause to if-else chain.
	(umax_frame_num_args): Ditto.
	* config/ns32k/tm-umax.h (ns32k_localcount): Declare.
	(flip_bytes): Ditto.

2001-03-28  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-tdep.c (FRAMELESS_SIGNAL): Moved here from
	config/i386/nm-linux.h (including comment).
	(i386_linux_frame_chain): New function implementing guts of the
	former FRAME_CHAIN macro, but using read_memory_unsigned_integer
	instead of read_memory_integer.
	(i386_linux_frame_saved_pc): Removed doc pointing to
	i386/tm-linux.h for an explanation of FRAMELESS_SIGNAL since that
	now lives in this file.
	* config/i386/tm-linux.h (FRAMELESS_SIGNAL): Moved to
	i386-linux-tdep.c (including comment).
	(FRAME_CHAIN): Redefined in terms of i386_linux_frame_chain.
	(i386_linux_frame_chain): New prototype.

	* gdbserver/low-linux.c [I386_GNULINUX_TARGET]: Cleanup code and
	make it work again.
	(NUM_FREGS): Redefine to 0.
	(NUM_REGS): Redefine as NUM_GREGS.
	(i386_register_byte, i386_register_raw_size): Update from
	i386-tdep.c.  Add comment about their origin.
	(regmap, register_u_addr): Take these from i386-linux-nat.c.
	(i386_register_u_addr): Removed.

	* i386-linux-nat.c (i386_linux_dr_get): Return 0 if ptrace call
	fails instead of calling perror_with_name.  This should fix
	debugging remote i386 targets with a native Linux/x86 GDB.  Add
	FIXME for this hack.

2001-03-19  J.T. Conklin  <jtc@redback.com>

	* arch-utils.c (#include "gdbthread.h"): Removed.
	(#include "symfile.h"): Removed. 
	(XMALLOC): Removed unused macro.
	* breakpoint.c (tbreak_command): Removed local declaration.
	(awatch_command, do_enable_breakpoint, set_breakpoint_count):
 	Remove duplicate declarations.
	(bpstat_should_step, bpstat_have_active_hw_watchpoints)
	(remove_solib_event_breakpoints): Fix indentation botch.
	* c-typeprint.c (#include "command.h"): Removed.
	(#include "gdbcmd.h"): Removed.
	* ch-exp.c (ch_terminal_match_float_literal, parse_expr)
	(parse_primval, parse_untyped_expr, parse_opt_untyped_expr):
 	Removed duplicate declarations.
	* ch-typeprint.c (#include "command.h"): Removed.
	(#include "gdbcmd.h"): Removed.
	* corefile.c (#include "frame.h"): Removed
	(#include "symfile.h"): Removed.
	(#include "language.h"): Removed.
	* dbxread.c (#include "command.h"): Removed.
	* environ.c (#include "gdbcore.h"): Removed.
	* event-loop.c (#include "top.h"): Removed.
	* f-typeprint.c (#include "command.h"): Removed.
	(#include "gdbcmd.h"): Removed.
	(#include "language.h"): Removed.
	(#include "typeprint.h"): Removed.
	(#include "frame.h"): Removed.
	* gdbtypes.h (print_type_scalar): Removed declaration.
	* infcmd.c (#include "completer.h"): Removed.
	* language.c (#include "frame.h"): Removed.
	* m2-typeprint.c (#include "command.h"): Removed.
	(#include "gdbcmd.h"): Removed.
	(#include "language.h"): Removed.
	* m2-valprint.c (#include "valprint.h"): Removed.
	* p-typeprint.c (#include "command.h"): Removed.
	(#include "gdbcmd.h"): Removed.
	* p-valprint.c (#include "typeprint.h"): Removed.
	* parse.c (#include "linespec.h"): Removed.
	* regcache.c (#include "frame.h"): Removed.
	* remote.c (#include "frame.h"): Removed.
	(getpkt_sane): Make static.
	* source.c (#include "completer.h"): Removed.
	* stack.c (#include "symfile.h"): Removed.
	(#include "objfiles.h"): Removed.
	* symfile.c (#include "completer.h"): Removed.
	* tracepoint.c (#include "completer.h"): Removed.
	* values.c (#include "frame.h"): Removed.
	* varobj.c (#include "valprint.h"): Removed.
	* wrapper.c (#include "frame.h"): Removed.
	
	* memattr.c (create_mem_region): Removed unused variable.
	* remote-nrom.c: Removed spurious semicolon after init_nrom_ops.

2001-03-27  Nick Clifton  <nickc@redhat.com>

	* remote-rdp.c (rdp_set_command_line): Add missing double quote.

2001-03-27  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (build_so_lib_from_mapfile): Use xfree() instead
	of free().

2001-03-27  Eli Zaretskii  <eliz@is.elta.co.il>

	* TODO (Cleanups): Remove the item about converting docs to GFDL.

2001-03-26  Kevin Buettner  <kevinb@redhat.com>

	* ia64-tdep.c (slotN_contents, replace_slotN_contents): Change
	type of ``bundle'' from unsigned char * to char *.
	(ia64_get_saved_register): Use alloca() to allocate register
	buffers.

	* solib-aix5.c (build_so_lib_from_mapfile): Fix xasprintf() usage.

2001-03-26  Kevin Buettner  <kevinb@redhat.com>

	* proc-utils.h (procfs_ctl_t): New typedef.
	* proc-api.c (write_with_trace): Change type of ``opcode'' from
	long to procfs_ctl_t.  Don't assume that the target has defined
	BREAKPOINT.  Handle case in which PCRESET is the same as PCUNSET.
	* proc-events.c (sys/syscall.h, sys/fault.h): Include conditionally.
	* procfs.c (sys/fault.h, sys/syscall.h): Include conditionally.
	(gdb_sigset_t, gdb_sigaction_t, gdb_siginfo_t, gdb_premptysysset)
	(gdb_praddsysset, gdb_prdelsysset, gdb_pr_issyssetmember):
	Conditionally define as appropriate for AIX/non-AIX systems.  Use
	these defines/typedefs as appropriate elsewhere in file.
	(struct procinfo): Change type of saved_sigset and saved_sighold
	from sigset_t to gdb_sigset_t.  Make saved_exitset and
	saved_entryset pointer variables.  Add two new fields, num_syscalls
	and syscall_names.
	(DYNAMIC_SYSCALLS): Define when HAVE_PRSYSENT_T is defined.
	(sysset_t_size, sysset_t_alloc): New functions.
	(load_syscalls, free_syscalls, find_syscall): New functions for
	platforms which define DYNAMIC_SYSCALLS.
	(create_procinfo): Call load_syscalls.
	(destroy_one_procinfo): Call free_syscalls.
	(GDBRESET): Don't define twice.
	(proc_modify_flag): Change type of operation code array `arg'
	from long to procfs_ctl_t.
	(proc_stop_process, proc_wait_for_stop, proc_run_process)
	(proc_set_traced_signals, proc_set_traced_faults)
	(proc_set_traced_sysentry, proc_set_traced_sysexit)
	(proc_set_held_signals, proc_clear_current_fault)
	(proc_set_current_signal, proc_clear_current_signal, proc_set_gregs)
	(proc_set_fpregs, proc_kill, proc_set_watchpoint): Likewise for `cmd'.
	(proc_set_traced_sysentry): Dynamically allocate variable sized
	struct gdb_proc_ctl_pcsentry.  Also, free it at function exit.
	(proc_set_traced_sysexit): Dynamically allocate variable
	sized struct gdb_proc_ctl_pcsexit.  Also, free it at
	function exit.
	(proc_get_traced_sysentry, proc_get_traced_sysexit): Add new code
	for reading the sysset_t struct on AIX5.
	(procfs_debug_inferior): Don't assume that SYS_exit will be
	defined.  Add new code for finding certain syscalls on AIX5.
	(syscall_is_lwp_exit, syscall_is_exit, syscall_is_exec)
	(syscall_is_lwp_create): New functions.
	(procfs_wait): Restructured code which checks for certain
	system calls to use the new syscall_is_... functions.
	(procfs_notice_signals): Account for the fact that saved_entryset
	and saved_exitset in struct procinfo are now pointers.

2001-03-26  Kevin Buettner  <kevinb@redhat.com>

	* symtab.c (find_pc_sect_line): Revise method used for finding
	the ending pc.

2001-03-26  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-tdep.c (i386_linux_sigtramp_saved_pc,
	i386_linux_sigtramp_saved_sp): Make static.
	(i386_linux_frame_saved_pc): New function based on the old
	FRAME_SAVED_PC macro, but use read_memory_unsigned_integer instead
	of read_memory_integer.
	* config/i386/tm-linux.h (sigtramp_saved_pc): Remove definition.
	(i386_linux_sigtramp_saved_pc): Remove prototype.
	(FRAME_SAVED_PC): Redefine in terms of i386_linux_frame_saved_pc.
	(i386_linux_frame_saved_pc): New prototype.

2001-03-26  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Document m88k as a ``Known problem in 5.1''.
	* TODO (GDB 5.1 - Cleanups): Update.

2001-03-26  Andrew Cagney  <ac131313@redhat.com>

	* fork-child.c (clone_and_follow_inferior): Delete #ifdef
	HAVE_VFORK.

2001-03-26  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-symmetry.h (PUSH_ARGUMENTS): #undef.

	* i386-tdep.c (i386_push_arguments, i386_store_struct_return): New
	functions.
	* config/i386/tm-i386.h (PUSH_ARGUMENTS): New macro.
	(STORE_STRUCT_RETURN): Redefine in terms of
	i386_store_struct_return.
	(i386_push_arguments, i386_store_struct_return): New prototypes.
	* config/i386/tm-i386v.h (STORE_STRUCT_RETURN): Remove.  It's
	definition was identical to the definition in "i386/tm-i386.h" so
	the new definition should suffice too.

2001-03-26  Eli Zaretskii  <eliz@is.elta.co.il>

	* event-loop.c (toplevel) [!HAVE_POLL] [NO_FD_SET]: Remove unused
	definitions for SELECT, NBBY, FD_SETSIZE, NFDBITS, and MASK_SIZE.

	* config/djgpp/djconfig.sh: Add copyright notice.

	* ser-go32.c (rawclock): Remove prototype; include time.h instead.
	(ISR, dos_hookirq, isr_t): Convert K&R definition to ANSI C.
	(top level) <string.h>: Include gdb_string.h instead.
	(dos_noop, dos_raw, dos_noflush_set_tty_state) 
	(dos_print_tty_state, dos_info): Remove ATTRIBUTE_UNUSED.

	* go32-nat.c (go32_create_inferior): Move the declaration of
	`environ' to here from the top level.
	(top level) <_initialize_go32_nat>: Remove redundant prototype.
	<gdb_string.h>: Include it instead of string.h.
	(store_register): Call register_buffer instead of accessing
	registers[] directly.
	(redir_cmdline_delete, redir_cmdline_parse, redir_to_debugger) 
	(redir_to_debugger, redir_debug_init) [__DJGPP_MINOR__ < 3]: Put
	the function names at the start of the line.
	(go32_set_dr): Throw internal_error if the argument is not a valid
	debug register number.
	(go32_open, go32_close, go32_attach, go32_detach, go32_resume) 
	(go32_wait, go32_xfer_memory, go32_files_info) 
	(go32_terminal_info): Remove ATTRIBUTE_UNUSED.

2001-03-25  Jim Blandy  <jimb@redhat.com>

	* mips-tdep.c (mips_gdbarch_init): Tweak indentation.

2001-03-25  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	From  Andrew Cagney  <ac131313@redhat.com>

        * coffread.c: Include "gdb_assert.h".
	(coff_symtab_read): Cast the integer s_sclass to a long before
 	casting it to a pointer.

2001-03-25  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	From  Andrew Cagney  <ac131313@redhat.com>
	
        * coffread.c (coff_symtab_read): Initialize
 	``fcn_first_line_addr''.  Check that the ``.bf'' always preceeds
 	the ``.ef'' info.
	* dbxread.c (find_text_range): Initialize ``start'' and ``end''.

2001-03-23  Andrew Cagney  <ac131313@redhat.com>

	* config/sparc/tm-sp64.h (GDB_MULTI_ARCH): Down grade to
 	GDB_MULTI_ARCH_PARTIAL from two.  SOFTWARE_SINGLE_STEP is not
 	multi-arch.

	* gdbarch.sh (SOFTWARE_SINGLE_STEP): Add.
	* gdbarch.h, gdbarch.c: Re-generate.

	* target.h (SOFTWARE_SINGLE_STEP_P)
	(SOFTWARE_SINGLE_STEP): Delete macro definitions.

2001-03-23  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh (gdbarch_register_read, gdbarch_register_write): Add.
	* gdbarch.h, gdbarch.c: Regenerate.
	
	* regcache.h (regcache_read, regcache_write): Declare.
	(registers, register_valid, register_buffer): Add note that these
	interfaces are deprecated.
	
	* regcache.c: Include "gdb_assert.h".
	(legacy_write_register_gen): Rename write_register_gen.
	(legacy_read_register_gen): Rename read_register_gen.
	(regcache_read, regcache_write): New function.
	(read_register_gen, write_register_gen): New function.
	(write_register): Simplify.  Use write_register_gen.
	(read_register): Ditto using read_register_gen.
	(read_signed_register): Ditto.
	(read_register_bytes): Ditto!!!!
	(supply_register): Add note that CLEANUP_REGISTER_VALUE is being
	replaced by gdbarch_register_read.

	* TODO (GDB 5.2 - Cleanups): Add list of gdbarch methods to
	deprecate.

2001-03-23  Jim Blandy  <jimb@redhat.com>

	Fix from Dan Berlin:

	* stabsread.c (read_cpp_abbrev): Properly construct the names of
	virtual function table pointer fields.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (xfree, mcalloc, mmalloc, mrealloc, mfree, xmmalloc,
	xmrealloc): Move existing declarations to the one place and
	re-order to be consistent.
	(xmcalloc, xmfree): Declare.
	(xmmalloc, xmrealoc): Assume ISO-C - use size_t and void* in
	declaration.
	
	* utils.c (size_t): Delete #ifdef defining size_t.
	(mmalloc, mrealloc, mcalloc, mfree): Re-order.
	(mmalloc, mrealloc, mcalloc): Document as only calls in GDB
	corresponding malloc, realloc, calloc.
	(mfree): Call free directly.
	(xmmalloc, xmrealloc): Clean up. Assume ISO-C.
	(xmcalloc, xmfree): New functions. Copy old xcalloc and xfree
	function bodies to here.
	(xcalloc, xfree): Call xmcalloc and xmfree respectfully.
	
2001-03-23  Andrew Cagney  <ac131313@redhat.com>

	* fork-child.c (fork_inferior): Make ``argv'', ``exec_file'' and
	``shell_file'' static locals.

	* jv-lang.c (java_link_class_type): Initialize ``field'' and
	``method''.
	
	* jv-valprint.c (java_value_print): Initialize ``next_element''.

2001-03-23  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/nm-i386.h: Fix formatting and change reference to
	i386-tdep.c to i386-nat.c.

2001-03-23  David Smith  <dsmith@redhat.com>

	* configure.in: Corrected spelling errors.
	* configure: Regenerated.

2001-03-22  Andrew Cagney  <ac131313@redhat.com>

	* TODO (GDB 5.1 - Cleanups): Add more targets to obsolete.

2001-03-22  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (NTSSTART): Delete.
	(NTSOBS): Delete.
	(kdb): Delete target.
	* kdb-start.c, stuff.c: Mark as obsolete.
	* NEWS: Update.

2001-03-22  Andrew Cagney  <ac131313@redhat.com>

	* config/pa/xm-hppah.h (HPPA_COMPILER_BUG): Delete. GDB only
	compiles using an ISO-C compiler.
	(MALLOC_INCOMPATIBLE): Ditto.
	* linespec.c (decode_line_1): Delete hack to work around
	HPPA_COMPILER_BUG.

2001-03-22  Andrew Cagney  <ac131313@redhat.com>

	* exec.c (xfer_memory): Always initialize section.
	* infrun.c (normal_stop): Always initialize source_flag.

2001-03-22  Andrew Cagney  <ac131313@redhat.com>

	* TODO (Remote Protocol Support): Review.  Add notes about ``!'',
	non-use of a continue address and typical use of ``q'' packet.

2001-03-22  Eli Zaretskii  <eliz@is.elta.co.il>

	Make DJGPP use the new unified support for hardware
	breakpoints and watchpoints on x86 targets:

	* config/i386/nm-go32.h <top level>: Don't include nm-i386v.h,
	include nm-i386.h instead.
	(TARGET_HAS_HARDWARE_WATCHPOINTS, HAVE_CONTINUABLE_WATCHPOINT)
	(TARGET_CAN_USE_HARDWARE_WATCHPOINT, STOPPED_BY_WATCHPOINT)
	(TARGET_REGION_OK_FOR_HW_WATCHPOINT, DECR_PC_AFTER_HW_BREAK)
	(target_stopped_data_address, target_insert_watchpoint)
	(target_remove_watchpoint, target_insert_hw_breakpoint)
	(target_remove_hw_breakpoint): Don't define.
	(I386_USE_GENERIC_WATCHPOINTS, I386_DR_LOW_SET_CONTROL)
	(I386_DR_LOW_SET_ADDR, I386_DR_LOW_RESET_ADDR)
	(I386_DR_LOW_GET_STATUS): Define to call appropriate go32_*
	functions from go32-nat.c.

	* config/i386/go32.mh (NATDEPFILES): Add i386-nat.o.

	* go32-nat.c <top level>: Remove prototypes for watchpoint-
	related functions.  Remove definitions of watchpoint-related
	macros.
	(go32_mourn_inferior): Call i386_cleanup_dregs instead of the
	private cleanup_dregs function.
	(cleanup_dregs, go32_insert_watchpoint)
	(go32_insert_aligned_watchpoint, go32_handle_nonaligned_watchpoint)
	(go32_remove_watchpoint, go32_remove_aligned_watchpoint)
	(go32_region_ok_for_watchpoint, go32_stopped_by_watchpoint)
	(go32_remove_hw_breakpoint, go32_insert_hw_breakpoint): Remove.
	(go32_set_dr, go32_set_dr7, go32_get_dr6): New functions.

2001-03-21  Kevin Buettner  <kevinb@redhat.com>

	* ia64-tdep.c (fetch_instruction): Warn about slot numbers greater
	than two instead of generating an error.
	
2001-03-21  Jim Blandy  <jimb@redhat.com>

	* cp-valprint.c: Reformat to bring into line with GNU coding
	standards.

2001-03-21  Mark Kettenis  <kettenis@gnu.org>

	Make Linux use the new unified support for hardware breakpoints
	and watchpoints on x86 targets.
	* i386-linux-nat.c: Doc fixes.  Include "gdb_assert.h".
	[HAVE_SYS_DEBUGREG_H]: Include <sys/debugreg.h>.
	(DR_FIRSTADDR, DR_LASTADDR, DR_STATUS, DR_CONTROL): Define to
	appropriate value if not already defined.
	(register_u_addr): New function.
	(kernel_u_size): New function.
	(i386_linux_dr_get, i386_linux_dr_set): New functions.
	(i386_linux_dr_set_control, i386_linux_dr_set_addr,
	i386_linux_reset_addr, i386_linux_dr_get_status): New functions.
	* config/i386/nm-linux.h: Don't include "nm-i386v.h".
	(I386_USE_GENERIC_WATCHPOINTS): Define and include "nm-i386.h".
	(TARGET_HAS_HARDWARE_WATCHPOINTS,
	TARGET_CAN_USE_HARDWARE_WATCHPOINTS, HAVE_CONTINUABLE_WATCHPOINT,
	STOPPED_BY_WATCHPOINT, target_insert_watchpoint,
	target_remove_watchpoint): Remove macros.
	(i386_stopped_by_watchpoint, i386_insert_watchpoint,
	i386_remove_watchpoint): Remove prototypes.
	(register_u_addr): New prototype.
	(REGISTER_U_ADDR): Define in terms of register_u_addr.
	(i386_linux_dr_set_control, i386_linux_dr_set_addr,
	i386_linux_reset_addr, i386_linux_dr_get_status): New prototypes.
	(I386_DR_LOW_SET_CONTROL, I386_DR_LOW_SET_ADDR,
	I386_DR_LOW_RESET_ADDR, I386_DR_LOW_GET_STATUS): New macros.
	* config/i386/linux.mh (NATDEPFILES): Replace i386v-nat.o with
	i386-nat.o.

2001-03-21  Jim Blandy  <jimb@redhat.com>

	Fix from Dan Berlin:

	* linespec.c (find_methods): Whitespace differences aren't
	significant in *un*mangled method names.  Use strcmp_iw to compare
	them, not STREQ.

2001-03-21  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Allow a non- multi-arch target to override a
	predicate.
	* gdbarch.h: Regenerate.

2001-03-21  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Avoid use of ``!''.

2001-03-20  Andrew Cagney  <ac131313@redhat.com>

	* target.h (enum target_signal): Move definition from here.
	* defs.h (enum target_signal): To here.

	* config/arc/tm-arc.h (arc_software_single_step): Change type of
	first parameter to enum target_signal.
	* config/rs6000/tm-rs6000.h (rs6000_software_single_step): Ditto.
	* config/sparc/tm-sparc.h (sparc_software_single_step): Ditto.
	* rs6000-tdep.c (rs6000_software_single_step): Update.
	
2001-03-20  Andrew Cagney  <ac131313@redhat.com>

	* frame.h (SIZEOF_FRAME_SAVED_REGS): Report an error if macro
	already defined.
	
	From 2000-08-25 Stephane Carrez <Stephane.Carrez@worldnet.fr>:
        * stabsread.c (define_symbol): A parameter ('R'), a local ('r'),
        or a reference ('a') can be in a pseudo register.
        * infcmd.c (do_registers_info): Must take into account the pseudo
        registers to print their value.
        (registers_info): Likewise.
        * stack.c (frame_info): Likewise.
        * frame.h (SIZEOF_FRAME_SAVED_REGS): Save the pseudo registers.

2001-03-21  Eli Zaretskii  <eliz@is.elta.co.il>

	Unified support for hardware breakpoints and watchpoints on
	x86 targets:

	* config/i386/nm-i386.h: New file.

	* config/i386/nm-i386.h: (i386_cleanup_dregs)
	(i386_insert_watchpoint, i386_remove_watchpoint)
	(i386_region_ok_for_watchpoint, i386_stopped_by_hwbp)
	(i386_stopped_data_address, i386_insert_hw_breakpoint)
	(i386_remove_hw_breakpoint): Declare prototypes.
	[I386_USE_GENERIC_WATCHPOINTS] (TARGET_CAN_USE_HARDWARE_WATCHPOINT):
	Define if not already defined.
	(TARGET_REGION_OK_FOR_HW_WATCHPOINT, HAVE_CONTINUABLE_WATCHPOINT)
	(STOPPED_BY_WATCHPOINT, target_stopped_data_address)
	(target_insert_watchpoint, target_remove_watchpoint)
	(target_insert_hw_breakpoint, target_remove_hw_breakpoint): Define
	to call the appropriate i386_* functions.

	* i386-nat.c: New file.

	* i386-nat.c (I386_DR_CONTROL_MASK, I386_DR_LOCAL_ENABLE)
	(I386_DR_GLOBAL_ENABLE, I386_DR_DISABLE, I386_DR_SET_RW_LEN)
	(I386_DR_GET_RW_LEN, I386_DR_WATCH_HIT): New macros.
	(dr_mirror, dr_status_mirror, dr_control_mirror, dr_ref_count)
	(maint_show_dr): New variables.
	(i386_cleanup_dregs, i386_show_dr, i386_length_and_rw_bits)
	(i386_insert_aligned_watchpoint, i386_remove_aligned_watchpoint)
	(i386_handle_nonaligned_watchpoint, i386_insert_watchpoint)
	(i386_remove_watchpoint, i386_region_ok_for_watchpoint)
	(i386_stopped_data_address, i386_stopped_by_hwbp)
	(i386_insert_hw_breakpoint, i386_remove_hw_breakpoint): New
	functions.
	(_initialize_i386_nat): New function.
	[I386_USE_GENERIC_WATCHPOINTS]: Add new	maint command
	`show-debug-regs', sets maint_show_dr to non-zero value and
	activates debugging print-outs in functions which insert, remove,
	and test watchpoints and hardware breakpoints.

	* Makefile.in (i386-nat.o): New target.
	(ALLDEPFILES): Add i386-nat.o.

2001-03-21  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c: Add back _initialize_i386_tdep prototype with
	appropriate comment.

2001-03-20  Kevin Buettner  <kevinb@redhat.com>

	* config/alpha/alpha-linux.mh (NATDEPFILES): Use proc-service.o,
	thread-db.o, and lin-lwp.o for thread support instead of
	linux-thread.o and lin-thread.o.
	* config/alpha/nm-linux.h (PREPARE_TO_PROCEED, GET_THREAD_SIGNALS)
	(ATTACH_LWP): Define to use the following lin-lwp.c functions...
	(lin_lwp_prepare_to_proceed, lin_thread_get_thread_signals)
	(lin_lwp_attach_lwp): Declare.

2001-03-20  Jim Blandy  <jimb@redhat.com>

	Fix from Dan Berlin:
	
	* Makefile.in: Clean up dependencies on ../include/demangle.h.
	(demangle_h): New variable.
	(jv-typeprint.o, jv-valprint.o, linespec.o): Use it.

2001-03-20  Andrew Cagney  <ac131313@redhat.com>

	* target.h (SOFTWARE_SINGLE_STEP_P): Add empty parameter list.
	* breakpoint.c (bpstat_stop_status): Update.
	* infrun.c (handle_inferior_event): Ditto.
	* mips-tdep.c (mips_dump_tdep): Ditto.
	* infrun.c (resume): Ditto.
	* infptrace.c (child_resume): Ditto.
	* config/mips/tm-wince.h (SOFTWARE_SINGLE_STEP_P): Ditto.
	* config/sh/tm-wince.h (SOFTWARE_SINGLE_STEP_P): Ditto.
	* config/sparc/tm-sparc.h (SOFTWARE_SINGLE_STEP_P): Ditto.
	* config/powerpc/tm-linux.h (SOFTWARE_SINGLE_STEP_P): Ditto.
	* config/arm/tm-wince.h (SOFTWARE_SINGLE_STEP_P): Ditto.
	* config/arc/tm-arc.h (SOFTWARE_SINGLE_STEP_P): Ditto.
	* config/powerpc/tm-ppc-eabi.h (SOFTWARE_SINGLE_STEP_P): Ditto.

2001-03-20  Andrew Cagney  <ac131313@redhat.com>

	* config/powerpc/tm-linux.h (SOFTWARE_SINGLE_STEP): Replace abort
	with internal_error.

2001-03-20  Jim Blandy  <jimb@redhat.com>

	Fix from Dan Berlin:
	
	* linespec.c (find_methods): Just call CHECK_TYPEDEF on t, rather
	than asking for sym_class's type; that's circuitous.  Remove
	sym_class, since the last use of it is gone.

2001-03-20  Eli Zaretskii  <eliz@is.elta.co.il>

	* breakpoint.c (print_it_typical) <bp_access_watchpoint> [UI_OUT]:
	Correct the order of calls to ui_out_field_string and
	ui_out_list_begin when bs->old_val is NULL.

2001-03-19  Kevin Buettner  <kevinb@redhat.com>

	* configure.in (AC_CHECK_HEADERS): Check for existence of nlist.h.
	* configure: Regenerate.
	* config.in: Regenerate.
	* solib-legacy.c (nlist.h): Include if HAVE_NLIST_H is defined.

2001-03-19  Kevin Buettner  <kevinb@redhat.com>

	* config/i386/i386v42mp.mh (NATDEPFILES): List all files on
	same line to avoid problems with Unixware 7's make when building
	a cross debugger.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (malloc): Move declaration from here.
	* utils.c (malloc): To here.
	* config/pa/xm-hppah.h (malloc): Delete declaration.

	* gnu-nat.c (make_proc): Use xmalloc instead of malloc.
	* hp-psymtab-read.c (hpread_call_pxdb): Ditto.
	(hpread_quick_traverse): Ditto.
	* infttrace.c (create_thread_info): Ditto.
	(kill_inferior): Ditto.
	* gnu-nat.c (make_inf): Ditto, and don't check return value.
	* procfs.c (proc_update_threads): Ditto.
	* valprint.c (print_decimal_chars): Ditto.
	* gdbtypes.c (cfront_mangle_name): Use xasprintf instead of
	malloc and sprintf.
	* remote-rdp.c (rdp_set_command_line): Ditto.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (realloc): Move declaration from here.
	* utils.c (realloc): To here.
	* config/pa/xm-hppah.h (realloc): Delete declaration.
	* lin-thread.c (insert_thread): Use xrealloc instead of realloc.
	* symfile.c (add_filename_language): Ditto.
	* event-loop.c (create_file_handler): Ditto.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* defs.h (free): Move declaration from here.
	* utils.c (free): To here.
	(xfree): Document as the only call to free().
	* config/pa/xm-hppah.h (free): Delete declaration.

2001-03-19  Kevin Buettner  <kevinb@redhat.com>

	* config/ia64/linux.mh (NATDEPFILES): Add proc-service.o to
	this list.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* eval.c (evaluate_subexp): Remove #ifdef __STDC__ and ``inline''.
	* config/mips/xm-mips.h (offsetof): Define when !GNUC not !STDC.
	* cli/cli-cmds.c (init_cli_cmds): Remove #ifdef __STDC__

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* TODO: List known problems with TUI.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Jimmy Guo stepped down as a maintiner (TUI,
	gdb.hp).

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* remote.c (remote_cisco_section_offsets): Do not cast result from
	bfd_get_section_name.
	(compare_sections_command): Ditto.
	(remote_cisco_section_offsets): Make ``p'' a const pointer.
	(compare_sections_command): Ditto for ``sectname''.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	From Mon Nov 20 13:59:29 2000 Andrew Cagney <cagney@b1.cygnus.com>:
	* valops.c (hand_function_call): Simplify computation of the
	address of the pushed argument.
 
2001-03-17  Andrew Cagney  <ac131313@redhat.com>

	* p-exp.y (parse_number): Avoid shift overflow when ``long''.
	Code copied from c-exp.y.

2001-03-18  Kevin Buettner  <kevinb@redhat.com>

	* acconfig.h (HAVE_STRUCT_LINK_MAP_WITH_L_MEMBERS)
	(HAVE_STRUCT_LINK_MAP_WITH_LM_MEMBERS)
	(HAVE_STRUCT_SO_MAP_WITH_SOM_MEMBERS): New configure macros.
	* configure.in (HAVE_STRUCT_LINK_MAP32): Move this test out
	of the Solaris procfs testing section.  Instead, group with...
	(HAVE_STRUCT_LINK_MAP_WITH_L_MEMBERS)
	(HAVE_STRUCT_LINK_MAP_WITH_LM_MEMBERS)
	(HAVE_STRUCT_SO_MAP_WITH_SOM_MEMBERS): New <link.h> tests.
	* configure: Regenerate.
	* config.in: Regenerate.

	* solib-legacy.c (legacy_svr4_fetch_link_map_offsets): Use
	new configure macros to choose which (if any) code to
	compile in.  Added code to explicitly handle *BSD systems;
	these systems were previously handled only through macro
	redefinition.  Also, due to the way the autoconf tests are set
	up, this function will no longer return a non-zero value when
	GDB is configured as a cross debugger.  I.e, cross debuggers
	will no longer be able to "accidentally" get the host system's
	link map offsets.

2001-03-18  Kevin Buettner  <kevinb@redhat.com>

	* config/i386/nbsd.mh (NATDEPFILES): List all files on the same
	line to avoid build problem on NetBSD 1.4.

2001-03-17  Michael Chastain  <chastain@redhat.com>

	* win32-nat.c (child_attach): check args for NULL before passing
	to strtoul.  This fixes PR gdb/43.

2001-03-17  Mark Kettenis  <kettenis@gnu.org>

	* i387-nat.h: Doc Fix.

	* i386-tdep.c: Fix formatting.
	(i386_get_frame_setup, i386_follow_jump, codestream_read,
	codestream_seek, codestream_fill, skip_trampoline_code,
	gdb_print_insn_i386, _initialize_i386_tdep): Remove redundant
	prototypoes.

2001-03-17  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/tm-linux.h (TARGET_ANALYZE_FLOATING): Remove.  It's
	no longer used.  Also remove associated FIXME.

2001-03-16  Andrew Cagney  <ac131313@redhat.com>

	* gdbarch.sh: Add classes ``m'' and ``M'' for pure multi-arch.  Do
	not generate macro wrappers for multi-arch functions or
	predicates.
	(class_is_info_p, class_is_predicate_p): Update.
	(class_is_function_p, class_is_variable_p): Ditto.
	(class_is_multiarch_p): New class function.

2001-03-16  J.T. Conklin  <jtc@redback.com>

	* config/h8300/tm-h8300.h (FRAME_ARGS_ADDRESS): Changed to use
	h8300_frame_args_address from frame_args_address.
	(FRAME_LOCALS_ADDRESS): Changed to use h8300_frame_locals_address
	from frame_locals_address.
	(PRINT_REGISTER_HOOK): Changed to use h8300_print_register_hook
	from print_register_hook.
	(h8300_frame_args_address): Declare.
	(h8300_frame_find_saved_regs): Declare.
	(h8300_frame_locals_address): Declare.
	(h8300_frame_saved_pc): Declare.
	(h8300_pop_frame): Declare.
	(h8300_print_register_hook): Declare.
	* h8300-tdep.c (h8300_frame_find_saved_regs): Removed declaration.
	(h8300_frame_args_address): Renamed from frame_args_address.
	(h8300_frame_locals_address): Renamed from frame_locals_address.
	(h8300_pop_frame): Renamed from pop_frame.
	(h8300_print_register_hook): Renamed from print_register_hook.

2001-03-16  Kevin Buettner  <kevinb@redhat.com>

	* solib-svr4.c (bfd_lookup_symbol):  Change type of
	``storage_needed'' from unsigned int to long in order to
	match return type of bfd_get_symtab_upper_bound() and
	bfd_get_dynamic_symtab_upper_bound().
	* solib-aix5.c (bfd_lookup_symbol): Likewise.  Also, eliminate
	REASONABLE_LIMIT hack which had been added to work around this
	problem.

2001-03-15  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (bfd_lookup_symbol, build_so_list_from_mapfile)
	(aix5_relocate_main_executable, aix5_clear_solib): Replace calls
	to free() with calls to xfree().
	(bfd_lookup_symbol): Eliminate use of PTR.
	(build_so_list_from_mapfile): Use xasprintf() instead of sprintf().

2001-03-15  Martin Hunt  <hunt@redhat.com>

	* linespec.c (decode_line_1): Remove trailing quote
	when parsing double quotes.

2001-03-15  Kevin Buettner  <kevinb@redhat.com>

	* uw-thread.c (read_thr_debug, read_map, read_lwp, thread_iter)
	(libthread_stub, libthread_init): Pass NULL for the mem_attrib
	argument in the to_xfer_memory calls.

2001-03-15  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Fix typo - w65 not w64.  Still doesn't build.
	* TODO (GDB 5.1 - Cleanups): Add status of targets being obsoleted.

2001-03-15  Andrew Cagney  <ac131313@redhat.com>

	* wince.c (child_xfer_memory): Add attrib parameter.
	* symm-nat.c (child_xfer_memory): Ditto.
	* mac-nat.c (child_xfer_memory): Ditto.
	* infttrace.c (child_xfer_memory): Ditto.
	* procfs.c (procfs_xfer_memory): Ditto.
	* lin-thread.c (thread_db_xfer_memory): Ditto.
	* gnu-nat.c (gnu_xfer_memory): Ditto.

2001-03-14  Andrew Cagney  <ac131313@redhat.com>

	* NEWS: Mention that Harris/CXUX m88k is obsolete.

2001-03-13  Andrew Cagney  <ac131313@redhat.com>

	* config/mips/tm-mips.h: Include "regcache.h" for macros refering
	to regcache functions.
	* config/m68k/tm-m68k.h: Ditto.
	* config/i386/tm-i386v.h: Ditto.
	* config/mcore/tm-mcore.h: Ditto.
	* config/m88k/tm-m88k.h: Ditto.
	* config/m68k/tm-news.h: Ditto.
	* config/m68k/tm-linux.h: Ditto.
	* config/m68k/tm-delta68.h: Ditto.
	* config/m68k/nm-sun3.h: Ditto.
	* config/m32r/tm-m32r.h: Ditto.
	* config/i386/tm-symmetry.h: Ditto.
	* config/i386/tm-sun386.h: Ditto.
	* config/i386/tm-i386.h: Ditto.
	* config/i386/nm-symmetry.h: Ditto.
	* config/i386/nm-sun386.h: Ditto.
	* config/i386/nm-ptx4.h: Ditto.
	* config/i386/nm-i386mach.h: Ditto.
	* config/h8500/tm-h8500.h: Ditto.
	* config/h8300/tm-h8300.h: Ditto.
	* config/fr30/tm-fr30.h: Ditto.
	* config/d30v/tm-d30v.h: Ditto.
	* config/arm/tm-arm.h: Ditto.
	* config/arc/tm-arc.h: Ditto.
	* config/alpha/tm-alpha.h: Ditto.
	* config/a29k/tm-vx29k.h: Ditto.
	* config/a29k/tm-a29k.h: Ditto.
	* config/w65/tm-w65.h: Ditto.
	* config/vax/tm-vax.h: Ditto.
	* config/v850/tm-v850.h: Ditto.
	* config/tic80/tm-tic80.h: Ditto.
	* config/sparc/tm-sparclite.h: Ditto.
	* config/sparc/tm-sparclet.h: Ditto.
	* config/sparc/tm-sparc.h: Ditto.
	* config/sparc/nm-sun4sol2.h: Ditto.
	* config/sparc/nm-sun4os4.h: Ditto.
	* config/sparc/nm-nbsd.h: Ditto.
	* config/powerpc/nm-solaris.h: Ditto.
	* config/pa/tm-hppao.h: Ditto.
	* config/pa/tm-hppa.h: Ditto.
	* config/pa/nm-hppab.h: Ditto.
	* config/ns32k/tm-umax.h: Ditto.
	* config/ns32k/tm-merlin.h: Ditto.
	* config/nm-m3.h: Ditto.
	* config/nm-gnu.h: Ditto.

2001-03-14  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Update list of targets. Mark arm-* and v850-elf as
	broken.  Mark sh-*, ia64-linux and ns32k-netbsd as buildable.
	Specify an m88k target.  Include sample GAWK script to generate
	target list.  Delete non-existant romp target.
	* TODO (GDB 5.1 - Cleanups): Update.

2001-03-14  Keith Seitz  <keiths@cygnus.com>

	* linespec.c (decode_line_1): Skip argptr over a leading
	double quote. Prevents alloc of 0 bytes and memcpy of -1 bytes.

2001-03-14  Kevin Buettner  <kevinb@redhat.com>

	* config/djgpp/fnchange.lst (ia64-aix-nat.c): Add entry.

2001-03-13  Andrew Cagney  <ac131313@redhat.com>

	* ui-out.h: Remove #if __STDC__, assume an ISO-C compiler.
	* m3-nat.c: Ditto.
	* p-lang.h: Ditto.
	* printcmd.c (printf_command): Ditto.
	* ch-exp.c (match_integer_literal): Ditto.
	* scm-tags.h: Ditto.
	* ser-go32.c: Ditto.
	* hppa-tdep.c (unwind_command): Ditto.
	* defs.h (volatile): Delete macro definition.  Assume __STDC__.
	* remote-adapt.c (volatile): Ditto.
	* remote-eb.c (volatile): Ditto.
	* remote-mm.c (volatile): Ditto.
	* defs.h (alloca): Assume __STDC__, declare returning void *.

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

	* inferior.h (ARCH_NUM_REGS): Delete definition.
	* stack.c (frame_info): Use NUM_REGS, not ARCH_NUM_REGS.
	* regcache.c (registers_changed): Ditto.
	(registers_fetched): Ditto.
	* infptrace.c (fetch_inferior_registers): Ditto.
	(store_inferior_registers): Ditto.
	* infcmd.c (do_registers_info): Ditto.
	(registers_info): Ditto.
	* i386-linux-nat.c (old_fetch_inferior_registers): Ditto.
	(old_store_inferior_registers): Ditto.
	* gdbserver/low-linux.c (register_addr): Ditto.
	* gdbserver/low-hppabsd.c (register_addr): Ditto.
	* core-aout.c: Don't include "inferior.h".
	(fetch_core_registers): Use NUM_REGS not ARCH_NUM_REGS.
	(register_addr): Ditto.

2001-03-13  Fernando Nasser  <fnasser@redhat.com>

	From Steven Johnson <sjohnson@neurizon.net>
	* cli/cli-script.c (define_command): Fix setting of post hooks.

2001-03-13  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-tdep.c: Fix formatting and clarify comments.
	(i386_linux_svr4_fetch_link_map_offsets): Use NULL instead of 0
	where appropriate.

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

	* gnu-nat.c: Include "gdb_assert.h" instead of <assert.h>.
	(proc_update_sc): Use gdb_assert instead of assert.
	(proc_abort): Ditto.
	(inf_set_step_thread): Ditto.
	(gnu_wait): Ditto.
	(S_exception_raise_request): Ditto.
	(gnu_terminal_init_inferior): Ditto.

2001-03-09  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (solib-svr4.o): Depend on solib-svr4.c, not solib.c.
	(solib-legacy.o): New makefile target.
	* solib-legacy.c: New file.
	* solib-svr4.h (SVR4_FETCH_LINK_MAP_OFFSETS): Delete.
	(default_svr4_fetch_link_map_offsets): Delete.
	(set_solib_svr4_fetch_link_map_offsets): Declare.
	(legacy_svr4_fetch_link_map_offsets_hook): Declare.
	* solib-svr4.c (elf/common.h): Include.
	(link.h): Only include for SunOS shared library support.
	(_SYSCALL32): Don't define.
	(SVR4_FETCH_LINK_MAP_OFFSETS): Define.
	(default_svr4_fetch_link_map_offsets): Made static; added forward
	declaration.
	(fetch_link_map_offsets): New static global.
	(legacy_svr4_fetch_link_map_offsets_hook): New global variable.
	(default_svr4_fetch_link_map_offsets):  Rewritten.  The guts
	of what used to be in this function now reside in
	legacy_svr4_fetch_link_map_offsets() in solib-legacy.c.
	(open_symbol_file_object): Fix declaration in SunOS section
	of the code.
	(set_solib_svr4_fetch_link_map_offsets): New extern function.
	(init_fetch_link_map_offsets): New static function.
	(_initialize_svr4_solib): Put static global fetch_link_map_offsets
	under multiarch control.

	* config/alpha/alpha-linux.mt (TDEPFILES): Add solib-legacy.o to
	list.
	* config/alpha/fbsd.mh (NATDEPFILES): Likewise.
	* config/arm/linux.mt (TDEPFILES): Likewise.
	* config/i386/fbsd.mh (NATDEPFILES): Likewise.
	* config/i386/i386dgux.mh (NATDEPFILES): Likewise.
	* config/i386/i386gnu.mh (NATDEPFILES): Likewise.
	* config/i386/i386sco5.mh (NATDEPFILES): Likewise.
	* config/i386/i386sol2.mt (TDEPFILES): Likewise.
	* config/i386/i386v4.mh (NATDEPFILES): Likewise.
	* config/i386/i386v42mp.mh (NATDEPFILES): Likewise.
	* config/i386/linux.mt (TDEPFILES): Likewise.
	* config/i386/nbsd.mh (NATDEPFILES): Likewise.
	* config/i386/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/i386/ncr3000.mt (TDEPFILES): Likewise.
	* config/i386/ptx4.mh (XDEPFILES): Likewise.
	* config/i386/sun386.mt (TDEPFILES): Likewise.
	* config/ia64/linux.mt (TDEPFILES): Likewise.
	* config/m68k/linux.mt (TDEPFILES): Likewise.
	* config/m68k/m68kv4.mh (NATDEPFILES): Likewise.
	* config/m68k/nbsd.mh (NATDEPFILES): Likewise.
	* config/m68k/sun2os4.mt (TDEPFILES): Likewise.
	* config/m68k/sun3os4.mt (TDEPFILES): Likewise.
	* config/m88k/delta88v4.mh (NATDEPFILES): Likewise.
	* config/mips/mipsv4.mh (NATDEPFILES): Likewise.
	* config/ns32k/nbsd.mh (NATDEPFILES): Likewise.
	* config/powerpc/linux.mt (TDEPFILES): Likewise.
	* config/powerpc/nbsd.mh (NATDEPFILES): Likewise.
	* config/powerpc/solaris.mh (NATDEPFILES): Likewise.
	* config/sh/linux.mt (TDEPFILES): Likewise.
	* config/sparc/linux.mt (TDEPFILES): Likewise.
	* config/sparc/nbsd.mh (NATDEPFILES): Likewise.
	* config/sparc/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/sparc/sp64linux.mt (TDEPFILES): Likewise.
	* config/sparc/sun4os4.mt (TDEPFILES): Likewise.
	* config/sparc/sun4sol2.mh (NATDEPFILES): Likewise.

2001-03-09  Kevin Buettner  <kevinb@redhat.com>

	* utils.c (xmrealloc, xcalloc): Return NULL for zero-sized requests.

2001-03-09  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (Write After Approval): Update Philip Blundell.

2001-03-09  Keith Seitz  <keiths@cygnus.com>

	* MAINTAINERS: Add myself to write after approval list.

2001-03-09  Mark Kettenis  <kettenis@gnu.org>

	* i387-tdep.c (print_i387_status_word): Fix printing of Stack
	fault flag.  It is bit 6 of the x87 FPU status word, not bit 7.

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

	* configure.host (m88*-harris-cxux*): Mark as obsolete.
	* configure.tgt: Ditto.
	* config/m88k/xm-cxux.h: Ditto.
	* config/m88k/tm-cxux.h: Ditto.
	* config/m88k/nm-cxux.h: Ditto.
	* config/m88k/cxux.mt: Ditto.
	* config/m88k/cxux.mh: Ditto.

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

	* Makefile.in: Delete rules for obsolete files.

Thu Mar  8 15:43:40 2001  David Taylor  <taylor@redhat.com>

	* stack.c (parse_frame_specification): For one argument case,
 	handle the situation where the argument is an integer, not an
 	address -- arguably the most common case.  This matters on
	targets where pointers and addresses are different.

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

	* TODO: Revise 5.1 list.  Delete PARAMS task.  Add coding standard
	review.  Clarify GNU/LINUX/sparc.  Move other tasks to 5.2 or
	general.

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

	* TODO (GDB 5.1 Known Problems): Document problem of building GDB
	with SID on Solaris 8.

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

	* defs.h: Provide prototypes for floatformat_is_negative,
	floatformat_is_nan and floatformat_mantissa.
	* utils.c: Include "gdb_assert.h".
	(floatformat_is_negative): New function.
	(floatformat_is_nan): New function.
	(floatformat_mantissa): New function.
	* valprint.c: Include "floatformat.h".
	(print_floating): Get rid of the Linux-specific
	TARGET_ANALYZE_FLOATING macro and rewrite NaN detection with the
	help these new functions.  Print NaN's in a format conforming to
	ISO C99.

2001-03-07  Eli Zaretskii  <eliz@is.elta.co.il>

	* top.c (init_main): Make `set history file name' complete on file
	names.

2001-03-06  J.T. Conklin  <jtc@redback.com>

	* Makefile.in (LINTFLAGS): Update to contain all of the macros
	which define include paths used when compiling.

	* util.c (savestring, msavestring): Change type of length argument.
	* defs.h (savestring, msavestring): Update to match.

	* symtab.h (decode_line_1): Removed declaration.

	* symfile.c (#include <assert.h>): Removed.

	* arch-utils.c (#include <ctype.h>): Removed.
	* c-typeprint.c: Likewise.
	* dbxread.c: Likewise.
	* gdbtypes.c: Likewise.
	* target.c: Likewise.
	* os9kread.c: Likewise.

	* c-valprint.c (#include "demangle.h"): Removed.
	* ch-typeprint.c: Likewise.
	* eval.c: Likewise.
	* f-typeprint.c: Likewise.
	* f-valprint.c: Likewise.
	* m2-typeprint.c: Likewise.
	* typeprint.c: Likewise.
	* p-typeprint.c: Likewise.
	* valarith.c: Likewise.
	* valprint.c: Likewise.

	* m2-typeprint.c (#include "gdb_string.h"): Removed.
	* nlmread.c: Likewise.

	* mdebugread.c (#include "gdb-stabs.h"): Removed.
	* minsyms.c: Likewise.
	* mipsread.c: Likewise.
	* nlmread.c: Likewise.

	* m2-typeprint.c (#include "obstack.h"): Removed.
	* m2-valprint.c: Likewise.

	* event-loop.c (#include <setjmp.h>): Removed.

2001-03-06  Stan Shebs  <shebs@apple.com>

	* MAINTAINERS: Remove self from specific maintenance domains
	(macos, gdbserver, documentation, testsuite).

2001-03-06  Kevin Buettner  <kevinb@redhat.com>

	* 29k-share/udi/udip2soc.c, Makefile.in, a29k-tdep.c,
	a68v-nat.c, abug-rom.c, aclocal.m4, alpha-nat.c, alpha-tdep.c,
	annotate.c, annotate.h, arc-tdep.c, arch-utils.c,
	arch-utils.h, arm-tdep.c, ax-gdb.c, ax-gdb.h, ax-general.c,
	ax.h, bcache.c, bcache.h, blockframe.c, breakpoint.c,
	breakpoint.h, buildsym.c, buildsym.h, c-exp.y, c-lang.c,
	c-lang.h, c-typeprint.c, c-valprint.c, call-cmds.h, ch-exp.c,
	ch-lang.c, ch-lang.h, ch-typeprint.c, ch-valprint.c,
	cli/cli-cmds.h, cli/cli-decode.c, cli/cli-decode.h,
	cli/cli-script.c, cli/cli-script.h, cli/cli-setshow.h,
	cli/cli-utils.h, cli-out.c, cli-out.h, coff-solib.c,
	coff-solib.h, coffread.c, command.h, complaints.c,
	complaints.h, completer.c, completer.h,
	config/a29k/nm-ultra3.h, config/a29k/tm-a29k.h,
	config/a29k/tm-ultra3.h, config/a29k/tm-vx29k.h,
	config/a29k/xm-ultra3.h, config/alpha/nm-fbsd.h,
	config/alpha/nm-linux.h, config/alpha/nm-osf.h,
	config/alpha/nm-osf2.h, config/alpha/nm-osf3.h,
	config/alpha/tm-alpha.h, config/alpha/tm-alphalinux.h,
	config/alpha/xm-alphalinux.h, config/alpha/xm-alphaosf.h,
	config/alpha/xm-fbsd.h, config/arc/tm-arc.h,
	config/arm/nm-linux.h, config/arm/tm-arm.h,
	config/arm/tm-embed.h, config/d10v/tm-d10v.h,
	config/d30v/tm-d30v.h, config/fr30/tm-fr30.h,
	config/h8300/tm-h8300.h, config/h8500/tm-h8500.h,
	config/i386/nm-fbsd.h, config/i386/nm-gnu.h,
	config/i386/nm-i386bsd.h, config/i386/nm-i386mach.h,
	config/i386/nm-i386sco.h, config/i386/nm-i386sol2.h,
	config/i386/nm-i386v.h, config/i386/nm-i386v4.h,
	config/i386/nm-i386v42mp.h, config/i386/nm-linux.h,
	config/i386/nm-nbsd.h, config/i386/nm-nbsdelf.h,
	config/i386/nm-ptx4.h, config/i386/nm-sun386.h,
	config/i386/nm-symmetry.h, config/i386/tm-cygwin.h,
	config/i386/tm-fbsd.h, config/i386/tm-i386.h,
	config/i386/tm-i386aix.h, config/i386/tm-i386bsd.h,
	config/i386/tm-i386gnu.h, config/i386/tm-i386lynx.h,
	config/i386/tm-i386m3.h, config/i386/tm-i386mk.h,
	config/i386/tm-i386nw.h, config/i386/tm-i386os9k.h,
	config/i386/tm-i386sco5.h, config/i386/tm-i386sol2.h,
	config/i386/tm-i386v.h, config/i386/tm-i386v4.h,
	config/i386/tm-i386v42mp.h, config/i386/tm-linux.h,
	config/i386/tm-nbsd.h, config/i386/tm-ptx.h,
	config/i386/tm-ptx4.h, config/i386/tm-sun386.h,
	config/i386/tm-symmetry.h, config/i386/tm-vxworks.h,
	config/i386/xm-fbsd.h, config/i386/xm-i386bsd.h,
	config/i386/xm-i386gnu.h, config/i386/xm-i386m3.h,
	config/i386/xm-i386mach.h, config/i386/xm-i386mk.h,
	config/i386/xm-i386sco.h, config/i386/xm-i386v4.h,
	config/i386/xm-linux.h, config/i386/xm-nbsd.h,
	config/i386/xm-ptx.h, config/i386/xm-ptx4.h,
	config/i386/xm-sun386.h, config/i386/xm-symmetry.h,
	config/i960/tm-i960.h, config/i960/tm-mon960.h,
	config/i960/tm-nindy960.h, config/i960/tm-vx960.h,
	config/ia64/nm-aix.h, config/ia64/nm-linux.h,
	config/ia64/tm-aix.h, config/ia64/tm-ia64.h,
	config/ia64/tm-linux.h, config/ia64/xm-aix.h,
	config/ia64/xm-linux.h, config/m68k/nm-apollo68b.h,
	config/m68k/nm-delta68.h, config/m68k/nm-dpx2.h,
	config/m68k/nm-hp300bsd.h, config/m68k/nm-hp300hpux.h,
	config/m68k/nm-linux.h, config/m68k/nm-sun3.h,
	config/m68k/tm-apollo68b.h, config/m68k/tm-cisco.h,
	config/m68k/tm-dpx2.h, config/m68k/tm-es1800.h,
	config/m68k/tm-hp300bsd.h, config/m68k/tm-hp300hpux.h,
	config/m68k/tm-isi.h, config/m68k/tm-linux.h,
	config/m68k/tm-m68k.h, config/m68k/tm-m68kv4.h,
	config/m68k/tm-mac.h, config/m68k/tm-monitor.h,
	config/m68k/tm-nbsd.h, config/m68k/tm-news.h,
	config/m68k/tm-os68k.h, config/m68k/tm-sun3.h,
	config/m68k/tm-vx68.h, config/m68k/xm-3b1.h,
	config/m68k/xm-apollo68b.h, config/m68k/xm-dpx2.h,
	config/m68k/xm-hp300bsd.h, config/m68k/xm-hp300hpux.h,
	config/m68k/xm-linux.h, config/m68k/xm-m68kv4.h,
	config/m68k/xm-mpw.h, config/m68k/xm-news.h,
	config/m68k/xm-sun2.h, config/m68k/xm-sun3.h,
	config/m68k/xm-sun3os4.h, config/m88k/nm-delta88v4.h,
	config/m88k/tm-delta88.h, config/m88k/tm-delta88v4.h,
	config/m88k/tm-m88k.h, config/m88k/xm-cxux.h,
	config/m88k/xm-delta88.h, config/m88k/xm-delta88v4.h,
	config/m88k/xm-dgux.h, config/mcore/tm-mcore.h,
	config/mips/nm-irix3.h, config/mips/nm-irix4.h,
	config/mips/nm-irix5.h, config/mips/nm-mips.h,
	config/mips/nm-news-mips.h, config/mips/tm-bigmips.h,
	config/mips/tm-embed.h, config/mips/tm-embed64.h,
	config/mips/tm-embedl.h, config/mips/tm-embedl64.h,
	config/mips/tm-irix3.h, config/mips/tm-irix5.h,
	config/mips/tm-mips.h, config/mips/tm-mips64.h,
	config/mips/tm-mipsm3.h, config/mips/tm-mipsv4.h,
	config/mips/tm-tx39.h, config/mips/tm-tx39l.h,
	config/mips/tm-vr4100.h, config/mips/tm-vr4300.h,
	config/mips/tm-vr4300el.h, config/mips/tm-vr4xxx.h,
	config/mips/tm-vr4xxxel.h, config/mips/tm-vr5000.h,
	config/mips/tm-vr5000el.h, config/mips/xm-irix3.h,
	config/mips/xm-irix4.h, config/mips/xm-irix5.h,
	config/mips/xm-mips.h, config/mips/xm-mipsm3.h,
	config/mips/xm-mipsv4.h, config/mips/xm-news-mips.h,
	config/mips/xm-riscos.h, config/mn10200/tm-mn10200.h,
	config/mn10300/tm-mn10300.h, config/nm-gnu.h,
	config/nm-linux.h, config/nm-lynx.h, config/nm-m3.h,
	config/nm-sysv4.h, config/none/nm-none.h,
	config/none/tm-none.h, config/none/xm-none.h,
	config/ns32k/nm-nbsd.h, config/ns32k/nm-umax.h,
	config/ns32k/tm-merlin.h, config/ns32k/tm-nbsd.h,
	config/ns32k/tm-ns32km3.h, config/ns32k/tm-umax.h,
	config/ns32k/xm-merlin.h, config/ns32k/xm-ns32km3.h,
	config/pa/nm-hppab.h, config/pa/nm-hppah.h,
	config/pa/nm-hppao.h, config/pa/tm-hppa.h,
	config/pa/tm-hppa64.h, config/pa/tm-hppah.h,
	config/pa/xm-hppab.h, config/pa/xm-hppah.h,
	config/powerpc/nm-aix.h, config/powerpc/nm-linux.h,
	config/powerpc/nm-macos.h, config/powerpc/nm-nbsd.h,
	config/powerpc/tm-cygwin.h, config/powerpc/tm-linux.h,
	config/powerpc/tm-macos.h, config/powerpc/tm-ppc-aix.h,
	config/powerpc/tm-ppc-eabi.h, config/powerpc/tm-ppc-nw.h,
	config/powerpc/tm-ppcle-eabi.h, config/powerpc/tm-solaris.h,
	config/powerpc/xm-aix.h, config/powerpc/xm-linux.h,
	config/powerpc/xm-mpw.h, config/rs6000/nm-rs6000.h,
	config/rs6000/tm-rs6000.h, config/rs6000/tm-rs6000ly.h,
	config/rs6000/xm-aix4.h, config/rs6000/xm-rs6000.h,
	config/sh/tm-linux.h, config/sh/tm-sh.h, config/sh/tm-wince.h,
	config/sparc/nm-linux.h, config/sparc/nm-nbsd.h,
	config/sparc/nm-nbsdelf.h, config/sparc/nm-sparclynx.h,
	config/sparc/nm-sun4os4.h, config/sparc/nm-sun4sol2.h,
	config/sparc/tm-linux.h, config/sparc/tm-sp64.h,
	config/sparc/tm-sp64sim.h, config/sparc/tm-sparc.h,
	config/sparc/tm-sparclet.h, config/sparc/tm-sparclite.h,
	config/sparc/tm-sparclynx.h, config/sparc/tm-spc-em.h,
	config/sparc/tm-sun4os4.h, config/sparc/tm-sun4sol2.h,
	config/sparc/xm-sun4os4.h, config/sparc/xm-sun4sol2.h,
	config/tic80/tm-tic80.h, config/tm-linux.h, config/tm-lynx.h,
	config/tm-sysv4.h, config/v850/tm-v850.h, config/vax/tm-vax.h,
	config/w65/tm-w65.h, config/xm-aix4.h, config/xm-lynx.h,
	config/xm-mpw.h, config/xm-nbsd.h, config/xm-sysv4.h,
	config/z8k/tm-z8k.h, configure.in, core-aout.c, core-regset.c,
	core-sol2.c, corefile.c, corelow.c, cp-valprint.c,
	cpu32bug-rom.c, cxux-nat.c, d10v-tdep.c, d30v-tdep.c,
	dbug-rom.c, dbxread.c, dcache.c, dcache.h, defs.h,
	delta68-nat.c, demangle.c, dink32-rom.c, dpx2-nat.c, dsrec.c,
	dstread.c, dve3900-rom.c, dwarf2read.c, dwarfread.c,
	elfread.c, environ.c, environ.h, eval.c, event-loop.c,
	event-loop.h, event-top.c, exec.c, expprint.c, f-exp.y,
	f-lang.c, f-lang.h, f-typeprint.c, f-valprint.c, findvar.c,
	fork-child.c, fr30-tdep.c, frame.c, frame.h, gdb-events.c,
	gdb-events.h, gdb-events.sh, gdb-stabs.h, gdb.1, gdb_string.h,
	gdb_thread_db.h, gdbcmd.h, gdbcore.h, gdbserver/Makefile.in,
	gdbserver/gdbreplay.c, gdbserver/gdbserver.1,
	gdbserver/low-hppabsd.c, gdbserver/low-linux.c,
	gdbserver/low-lynx.c, gdbserver/low-nbsd.c,
	gdbserver/low-sim.c, gdbserver/low-sparc.c,
	gdbserver/low-sun3.c, gdbserver/remote-utils.c,
	gdbserver/server.c, gdbserver/server.h, gdbserver/utils.c,
	gdbthread.h, gdbtypes.c, gdbtypes.h, gnu-nat.c, gnu-nat.h,
	gnu-regex.c, gnu-regex.h, h8300-tdep.c, h8500-tdep.c,
	hp-psymtab-read.c, hp-symtab-read.c, hp300ux-nat.c,
	hppa-tdep.c, hppab-nat.c, hppah-nat.c, hppam3-nat.c, hpread.c,
	hpread.h, hpux-thread.c, i386-tdep.c, i386aix-nat.c,
	i386b-nat.c, i386gnu-nat.c, i386ly-tdep.c, i386m3-nat.c,
	i386mach-nat.c, i386nbsd-nat.c, i386nbsd-tdep.c, i386v-nat.c,
	i386v4-nat.c, i387-tdep.c, i960-tdep.c, infcmd.c, inferior.h,
	inflow.c, infptrace.c, infrun.c, inftarg.c, infttrace.c,
	irix4-nat.c, irix5-nat.c, isi-xdep.c, jv-exp.y, jv-lang.c,
	jv-lang.h, jv-typeprint.c, jv-valprint.c, kdb-start.c,
	kod-cisco.c, kod.c, language.c, language.h, lin-thread.c,
	linespec.c, linespec.h, linux-thread.c, lynx-nat.c, m2-exp.y,
	m2-lang.c, m2-lang.h, m2-typeprint.c, m2-valprint.c, m3-nat.c,
	m32r-rom.c, m32r-tdep.c, m68k-tdep.c, m68klinux-nat.c,
	m68knbsd-nat.c, m88k-nat.c, m88k-tdep.c, mac-nat.c,
	mac-xdep.c, main.c, maint.c, mcore-rom.c, mcore-tdep.c,
	mdebugread.c, mem-break.c, minimon.h, minsyms.c, mips-nat.c,
	mips-tdep.c, mipsm3-nat.c, mipsread.c, mipsv4-nat.c,
	mn10200-tdep.c, mn10300-tdep.c, mon960-rom.c, monitor.c,
	monitor.h, news-xdep.c, nindy-share/env.h, nindy-tdep.c,
	nlm/Makefile.in, nlmread.c, ns32k-tdep.c, ns32km3-nat.c,
	ns32knbsd-nat.c, objfiles.c, objfiles.h, ocd.c, ocd.h,
	op50-rom.c, os9kread.c, osfsolib.c, p-exp.y, pa64solib.c,
	pa64solib.h, parse.c, parser-defs.h, partial-stab.h,
	ppc-bdm.c, ppc-linux-nat.c, ppc-linux-tdep.c, ppcbug-rom.c,
	ppcnbsd-nat.c, printcmd.c, proc-api.c, proc-events.c,
	proc-flags.c, proc-utils.h, proc-why.c, procfs.c, ptx4-nat.c,
	rdi-share/Makefile.in, rdi-share/aclocal.m4, regcache.c,
	regcache.h, remote-adapt.c, remote-array.c, remote-bug.c,
	remote-e7000.c, remote-eb.c, remote-es.c, remote-est.c,
	remote-hms.c, remote-mips.c, remote-mm.c, remote-nindy.c,
	remote-nrom.c, remote-os9k.c, remote-rdi.c, remote-rdp.c,
	remote-sds.c, remote-sim.c, remote-st.c, remote-udi.c,
	remote-utils.c, remote-utils.h, remote-vx.c, remote.c,
	remote.h, reply_mig_hack.awk, rom68k-rom.c, rs6000-nat.c,
	rs6000-tdep.c, scm-exp.c, scm-lang.c, scm-lang.h, scm-tags.h,
	scm-valprint.c, ser-e7kpc.c, ser-mac.c, ser-ocd.c, ser-pipe.c,
	ser-tcp.c, ser-unix.c, serial.c, serial.h, sh-tdep.c,
	sh3-rom.c, sol-thread.c, solib-aix5.c, solib-svr4.c, solib.c,
	solib.h, solist.h, somread.c, somsolib.c, somsolib.h,
	source.c, sparc-nat.c, sparc-tdep.c, sparcl-tdep.c,
	sparclet-rom.c, srec.h, stabsread.c, stabsread.h, stack.c,
	standalone.c, stop-gdb.c, stuff.c, sun3-nat.c, sun386-nat.c,
	symfile.c, symfile.h, symm-nat.c, symm-tdep.c, symmisc.c,
	symtab.c, symtab.h, target.c, target.h, terminal.h, thread.c,
	tic80-tdep.c, top.c, top.h, tracepoint.c, tracepoint.h,
	typeprint.c, ui-file.c, ui-file.h, ui-out.h, ultra3-nat.c,
	ultra3-xdep.c, umax-xdep.c, utils.c, v850-tdep.c, v850ice.c,
	valarith.c, valops.c, valprint.c, value.h, values.c, varobj.h,
	vax-tdep.c, version.h, vx-share/vxWorks.h, vx-share/xdr_ld.c,
	vx-share/xdr_ptrace.c, vx-share/xdr_ptrace.h,
	vx-share/xdr_rdb.c, w65-tdep.c, w89k-rom.c, win32-nat.c,
	wrapper.c, wrapper.h, xcoffread.c, xcoffsolib.c, xcoffsolib.h,
	xmodem.c, xmodem.h, z8k-tdep.c: Update/correct copyright
	notices.

2001-03-05  Kevin Buettner  <kevinb@redhat.com>

	* acconfig.h (HAVE_PRSYSENT_T, HAVE_PR_SIGSET_T,
	HAVE_PR_SIGACTION64_T, HAVE_PR_SIGINFO64_T): New configure
	macros.
	* configure.in (prsysent_t, pr_sigset_t, pr_sigaction64_t,
	pr_siginfo64_t): Test for these typedefs in <sys/procfs.h>.
	(sys/fault.h, sys/select.h): Test for presence of these
	header files.
	(ia64-*-aix*): Define NEW_PROC_API for this host.
	* configure: Regenerate.
	* config.in: Regenerate.

	* configure.host (ia64-*-aix*): New host.
	* configure.tgt (ia64-*-aix*): New target.

2001-03-05  Andrew Cagney  <ac131313@redhat.com>

	* TODO (GDB 5.1 Known Problems): Document z8k as broken.

Mon Mar  5 11:56:09 2001  Christopher Faylor <cgf@cygnus.com>

	* wince.c: Change realloc to xrealloc throughout.
	(handle_load_dll): Use void * rather than PTR in argument.

2001-03-04  Andrew Cagney  <ac131313@redhat.com>

	* ocd.h (ocd_xfer_memory): Add ``attrib'' parameter.
	* ocd.c (ocd_xfer_memory): Ditto.
	* ser-ocd.c (ocd_setstopbits): New function. Add to ocd_ops.
	* MAINTAINERS: Document powerpc-eabi and powerpcle-eabi as
	buildable with ,-Werror.

	* Makefile.in (symfile_h): Define.
	(mcore-tdep.o): Add $(symfile_h), $(gdbcore_h) and $(inferior_h).
	* mcore-tdep.c: Include "symfile.h", "gdbcore.h" and "inferior.h".
	* MAINTAINERS: Document mcore-elf and mcore-pe as buildable with
	,-Werror.

	* dsrec.c (make_srec): Fix internal_error fmt arg.
	* MAINTAINERS: Document i960-coff as buildable with ,-Werror.

2001-03-03  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (aix5_relocate_main_executable): Don't use ANOFFSET
	as an lvalue.

2001-03-02  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (paper trail): Update.

	* CONTRIBUTE: Update note on ``Fix PR gdb/4706'' convention.

2001-03-02  Andrew Cagney  <ac131313@redhat.com>

	From 2001-03-01 Tom Rix <trix@redhat.com>:
	* mn10200-tdep.c (mn10200_frame_chain): Pass 0 for ``pc''
	parameter to mn10200_analyze_prologue.

	* config/mn10200/tm-mn10200.h: Include "regcache.h".
	* MAINTAINERS: Document that mn10200-elf target is buildable.

2001-03-02  Kevin Buettner  <kevinb@redhat.com>

	* config/ia64/xm-aix.h (GDB_GREGSET_T, GDB_FPREGSET_T): Move defines
	from here...
	* config/ia64/nm-aix.h (GDB_GREGSET_T, GDB_FPREGSET_T): ...to here.
	(MONTEREY): Don't define.
	(AIX5): Define.

2001-03-02  Matt Hiller  <hiller@redhat.com>

	* config/mn10300/tm-mn10300.h (E0_REGNUM): Correct to 15.

2001-03-02  Kevin Buettner  <kevinb@redhat.com>

	* sparc-nat.c (sparc-nat.c): Don't include self.

2001-03-01  J.T. Conklin  <jtc@redback.com>

	* defs.h (__CYGWIN__): Moved conditional which defines __CYGWIN__
 	if __CYGWIN32__ is set from here.
	* config/i386/xm-cygwin.h: To here.
	* config/powerpc/xm-cygwin.h: To here.

	* i386-stub.c (handle_exception): Use 'T' response packet.

2001-03-01  Michael Snyder  <msnyder@mvstp600e.cygnus.com>

	* m32r-tdep.c: Fix cut and paste error in comment.

2001-02-28  Michael Snyder  <msnyder@mvstp600e.cygnus.com>

	* symtab.c (print_msymbol_info): Print addresses by portable method
	longest_local_hex_string_custom.  Allow for 64-bit addresses.

2001-03-01  J.T. Conklin  <jtc@redback.com>

	* gdbtypes.h (builtin_type_f_integer): Removed duplicate declaration.
	(MAX_OF_TYPE): Wrap macro definition in parenthesis.
	(MIN_OF_TYPE): Likewise.
	
	* memattr.h (mem_access_mode): Removed extraneous trailing comma.

2001-03-01  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (os9kread.o): Do not compile with WERROR_CFLAGS.
	* os9kread.c (os9k_process_one_symbol): Add assert to detect
	``loses if sizeof (char *) > sizeof (int)''.

2001-03-01  Andrew Cagney  <ac131313@redhat.com>

	* gdb_assert.h: Document pragmatics behind gdb_assert's case.

2001-03-01  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (gdbtk-cmds.o): Add $(regcache_h) to dependency
	lists.
	(mi-main.o): Ditto.

2001-03-01  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (regcache_h): Define. Add $(regcache_h) to
	dependency lists.

2001-02-28  Michael Snyder  <msnyder@mvstp600e.cygnus.com>

	* printcmd.c (print_address_numeric): Update comments to refer
	to sizeof addr, not sizeof pointer.
	(x_command): Remove needless whitespace (shorten long line).
	
	* breakpoint.c (print_one_breakpoint): Formatting clean-up.
	(read_memory_nobpt): Ditto.
	(ep_is_catchpoint): Ditto.
	(ep_is_shlib_catchpoint): Ditto.
	(ep_is_exception_catchpoint): Ditto.
	(describe_other_breakpoints): Ditto.

Wed Feb 28 20:37:36 2001  Andrew Cagney  <ac131313@redhat.com>

	* regcache.h (register_valid): Fix comment documenting valid
	states.

Tue Feb 27 23:56:23 2001  Andrew Cagney  <ac131313@redhat.com>

	From Steven Johnson:
	* regcache.h: New file.
	
	* value.h (read_register_bytes, read_register_gen)
	(write_register_gen, write_register_bytes)
	(read_register, read_register_pid)
	(read_signed_register, read_signed_register_pid)
	(write_register, write_register_pid)
	(register_cached, set_register_cached)
	(register_changed, register_buffer)
	(registers_changed, supply_register): Move declaration from here.
	* regcache.h: To here.
	* gdbcore.h (registers_fetched): Ditto.
	* inferior.h (registers, registers_valid): Ditto.

	* regcache.c (generic_target_read_pc, read_pc_pid, read_pc,
	generic_target_write_pc, write_pc_pid, write_pc,
	generic_target_read_sp, read_sp, generic_target_write_sp,
	write_sp, generic_target_read_fp, read_fp,
	generic_target_write_fp, write_fp): Add note that these functions
	will be moved from this file.
	
	* a29k-tdep.c: Include "regcache.h".
	* a68v-nat.c: Ditto.
	* abug-rom.c: Ditto.
	* alpha-nat.c: Ditto.
	* alpha-tdep.c: Ditto.
	* alphabsd-nat.c: Ditto.
	* arc-tdep.c: Ditto.
	* arm-linux-nat.c: Ditto.
	* arm-linux-tdep.c: Ditto.
	* arm-tdep.c: Ditto.
	* blockframe.c: Ditto.
	* core-aout.c: Ditto.
	* core-sol2.c: Ditto.
	* corelow.c: Ditto.
	* cpu32bug-rom.c: Ditto.
	* cxux-nat.c: Ditto.
	* d10v-tdep.c: Ditto.
	* d30v-tdep.c: Ditto.
	* dbug-rom.c: Ditto.
	* dink32-rom.c: Ditto.
	* dve3900-rom.c: Ditto.
	* findvar.c: Ditto.
	* fr30-tdep.c: Ditto.
	* frame.c: Ditto.
	* go32-nat.c: Ditto.
	* h8300-tdep.c: Ditto.
	* h8500-tdep.c: Ditto.
	* hp300ux-nat.c: Ditto.
	* hppa-tdep.c: Ditto.
	* hppab-nat.c: Ditto.
	* hppah-nat.c: Ditto.
	* hppam3-nat.c: Ditto.
	* hpux-thread.c: Ditto.
	* i386-linux-nat.c: Ditto.
	* i386-linux-tdep.c: Ditto.
	* i386-tdep.c: Ditto.
	* i386aix-nat.c: Ditto.
	* i386b-nat.c: Ditto.
	* i386bsd-nat.c: Ditto.
	* i386gnu-nat.c: Ditto.
	* i386ly-tdep.c: Ditto.
	* i386m3-nat.c: Ditto.
	* i386mach-nat.c: Ditto.
	* i386nbsd-nat.c: Ditto.
	* i386v4-nat.c: Ditto.
	* i387-nat.c: Ditto.
	* i387-tdep.c: Ditto.
	* i960-tdep.c: Ditto.
	* ia64-aix-nat.c: Ditto.
	* ia64-linux-nat.c: Ditto.
	* ia64-tdep.c: Ditto.
	* infptrace.c: Ditto.
	* infrun.c: Ditto.
	* irix4-nat.c: Ditto.
	* irix5-nat.c: Ditto.
	* lin-lwp.c: Ditto.
	* lin-thread.c: Ditto.
	* lynx-nat.c: Ditto.
	* m3-nat.c: Ditto.
	* m32r-rom.c: Ditto.
	* m32r-tdep.c: Ditto.
	* m68hc11-tdep.c: Ditto.
	* m68k-tdep.c: Ditto.
	* m68klinux-nat.c: Ditto.
	* m68knbsd-nat.c: Ditto.
	* m68knbsd-tdep.c: Ditto.
	* m88k-nat.c: Ditto.
	* m88k-tdep.c: Ditto.
	* mac-nat.c: Ditto.
	* mcore-rom.c: Ditto.
	* mcore-tdep.c: Ditto.
	* mi/mi-main.c: Ditto.
	* mips-nat.c: Ditto.
	* mips-tdep.c: Ditto.
	* mipsm3-nat.c: Ditto.
	* mipsv4-nat.c: Ditto.
	* mn10200-tdep.c: Ditto.
	* mn10300-tdep.c: Ditto.
	* monitor.c: Ditto.
	* ns32km3-nat.c: Ditto.
	* ns32knbsd-nat.c: Ditto.
	* ocd.c: Ditto.
	* pa64solib.c: Ditto.
	* ppc-bdm.c: Ditto.
	* ppc-linux-nat.c: Ditto.
	* ppc-linux-tdep.c: Ditto.
	* ppcbug-rom.c: Ditto.
	* ppcnbsd-nat.c: Ditto.
	* ptx4-nat.c: Ditto.
	* regcache.c: Ditto.
	* remote-adapt.c: Ditto.
	* remote-array.c: Ditto.
	* remote-bug.c: Ditto.
	* remote-e7000.c: Ditto.
	* remote-eb.c: Ditto.
	* remote-es.c: Ditto.
	* remote-est.c: Ditto.
	* remote-hms.c: Ditto.
	* remote-mips.c: Ditto.
	* remote-mm.c: Ditto.
	* remote-nindy.c: Ditto.
	* remote-os9k.c: Ditto.
	* remote-rdi.c: Ditto.
	* remote-rdp.c: Ditto.
	* remote-sds.c: Ditto.
	* remote-sim.c: Ditto.
	* remote-st.c: Ditto.
	* remote-udi.c: Ditto.
	* remote-utils.c: Ditto.
	* remote-vx.c: Ditto.
	* remote-vx29k.c: Ditto.
	* remote-vx68.c: Ditto.
	* remote-vx960.c: Ditto.
	* remote-vxmips.c: Ditto.
	* remote-vxsparc.c: Ditto.
	* remote.c: Ditto.
	* rom68k-rom.c: Ditto.
	* rs6000-nat.c: Ditto.
	* rs6000-tdep.c: Ditto.
	* sh-tdep.c: Ditto.
	* sh3-rom.c: Ditto.
	* sol-thread.c: Ditto.
	* solib-svr4.c: Ditto.
	* somsolib.c: Ditto.
	* sparc-nat.c: Ditto.
	* sparc-tdep.c: Ditto.
	* sparcl-tdep.c: Ditto.
	* sparclet-rom.c: Ditto.
	* sun3-nat.c: Ditto.
	* sun386-nat.c: Ditto.
	* symm-nat.c: Ditto.
	* target.c: Ditto.
	* thread-db.c: Ditto.
	* thread.c: Ditto.
	* tic80-tdep.c: Ditto.
	* tracepoint.c: Ditto.
	* ultra3-nat.c: Ditto.
	* umax-xdep.c: Ditto.
	* uw-thread.c: Ditto.
	* v850-tdep.c: Ditto.
	* v850ice.c: Ditto.
	* valops.c: Ditto.
	* w65-tdep.c: Ditto.
	* w89k-rom.c: Ditto.
	* win32-nat.c: Ditto.
	* wince.c: Ditto.
	* z8k-tdep.c: Ditto.

2001-02-28  Matt Hiller  <hiller@redhat.com>	
	
	* MAINTAINERS: Add Matt Hiller to Write After Approval list.

2001-02-27  Matt Hiller  <hiller@redhat.com>

	* mn10300-tdep.c (mn10300_stab_reg_to_regnum): New function.
	(mn10300_gdbarch_init): Set appropriate elements of gdbarch to
	mn10300_stab_reg_to_regnum.

Tue Feb 27 16:56:13 2001  David Taylor  <taylor@redhat.com>

	* symtab.c (search_symbols): Fix off by one error in test for
	error.

2001-02-23  Andrew Cagney  <ac131313@redhat.com>

	* config/sparc/sp64linux.mt: New file.
	* configure.tgt: Recognize sparc64-*-linux* as a sp64linux target.
	* configure.host: Recognize sparc64-*-linux* as a linux host.

	From 2000-03-17 Jakub Jelinek <jakub@redhat.com>:
	* config/sparc/tm-sp64linux.h: New file.
	
2001-02-24  Kevin Buettner  <kevinb@redhat.com>

	* buildsym.c (push_subfile, pop_subfile): Replace call to abort()
	with call to internal_error().
	* dbxread.c (process_one_symbol): Likewise.
	* exec.c (build_section_table, xfer_memory): Likewise.
	* h8500-tdep.c (h8500_register_size, h8500_register_virtual_type):
	Likewise.
	* hpread.c (hpread_type_translate, hpread_read_array_type)
	(hpread_type_lookup): Likewise.
	* i386-tdep.c (gdb_print_insn_i386): Likewise.
	* i960-tdep.c (mem): Likewise
	* inflow.c (set_sigio_trap, clear_sigio_trap): Likewise.
	* infptrace.c (child_resume): Likewise.
	* infttrace.c (_initialize_infttrace): Likewise.
	* language.c (binop_result_type, add_language): Likewise.
	* lynx-nat.c (store_inferior_registers): Likewise.
	* m3-nat.c (port_chain_insert, m3_trace_me): Likewise.
	* mdebugread.c (parse_partial_symbols): Likewise.
	* monitor.c (monitor_printf_noecho, monitor_printf)
	(monitor_dump_regs): Likewise.
	* ocd.c (stu_put_packet): Likewise.
	* printcmd.c (decode_format, print_scalar_formatted): Likewise.
	* remote-bug.c (bug_open): Likewise.
	* remote-e7000.c (fetch_regs_from_dump, e7000_wait): Likewise.
	* remote-es.c (es1800_read_bytes): Likewise.
	* remote-mips.c (common_breakpoint): Likewise.
	* remote-rdp.c (send_rdp): Likewise.
	* remote-sds.c (putmessage): Likewise.
	* sparc-nat.c (fetch_inferior_registers, store_inferior_registers):
	Likewise.
	* sparcl-tdep.c (sparclite_download): Likewise.
	* symtab.c (lookup_partial_symbol): Likewise.
	* target.c (push_target, pop_target, initialize_targets): Likewise.
	* utils.c (internal_verror, malloc_botch, wrap_here, decimal2str):
	Likewise.
	* valprint.c (print_decimal, print_longest, print_longest)
	(strcat_longest): Likewise.
	* w65-tdep.c (init_frame_pc, w65_push_dummy_frame): Likewise.
	* xmodem.c (xmodem_send_packet): Likewise.
	* z8k-tdep.c (init_frame_pc, z8k_push_dummy_frame): Likewise.
	* config/h8500/tm-h8500.h (STORE_STRUCT_RETURN): Likewise.
	* config/mn10200/tm-mn10200.h (EXTRACT_RETURN_VALUE)
	(STORE_RETURN_VALUE): Likewise.
	* config/ns32k/nm-umax.h (REGISTER_U_ADDR): Likewise.
	* config/ns32k/xm-merlin.h (REGISTER_U_ADDR): Likewise.
	* config/z8k/tm-z8k.h (STORE_STRUCT_RETURN, STORE_RETURN_VALUE):
	Likewise.

2001-02-23  Andrew Cagney  <ac131313@redhat.com>

	* CONTRIBUTE: Document how to cite a problem report.
	* TODO: Note need to replace CONTRIBUTE with generated file.

	* CONTRIBUTE: Mention that patches do not need to include the
	generated files gdbarch.h and gdbarch.c.
	
2001-02-21  Andrew Cagney  <ac131313@redhat.com>

	* value.h (get_saved_register): Move from here.
	* frame.h: To here.

2001-02-21  Kevin Buettner  <kevinb@redhat.com>

	* solib.h (in_svr4_dynsym_resolve_code): Delete declaration.
	(in_solib_dynsym_resolve_code): Add declaration.
	(IN_SOLIB_DYNSYM_RESOLVE_CODE): Changed define to invoke
	in_solib_dynsym_resolve_code() rather than
	in_svr4_dynsym_resolve_code().  Also, removed the ifdefs
	which caused this macro to only be defined when
	SVR4_SHARED_LIBS is defined.
	* solib.c (in_solib_dynsym_resolve_code): New function.
	* solist.h (struct target_so_ops): Add new member
	in_dynsym_resolve_code.
	* solib-aix5.c (aix5_in_dynsym_resolve_code): Renamed from
	in_svr4_dynsym_resolve_code.  Also, made static.
	(_initialize_aix5_solib): Initialize in_dynsym_resolve_code
	member in aix5_so_ops.
	* solib-svr4.c (svr4_in_dynsym_resolve_code): Renamed from
	in_svr4_dynsym_resolve_code.  Also, added second version
	of this function which will be used when SVR4_SHARED_LIBS
	is not defined.
	(_initialize_svr4_solib): Initialize in_dynsym_resolve_code
	member in svr4_so_ops.

	* ia64-aix-nat.c, ia64-aix-tdep.c, config/ia64/aix.mh,
	config/ia64/aix.mt, config/ia64/nm-aix.h, config/ia64/tm-aix.h,
	config/ia64/xm-aix.h: New files.
	* ia64-tdep.c (_initialize_ia64_tdep): Remove declaration.
	(ia64_aix_sigcontext_register_address): New declaration.
	(ia64_gdbarch_init): Provide for initialization of 
	sigcontext_register_address member of struct tdep when
	on target is detected to be running AIX.
	* config/ia64/linux.mt (TDEPFILES): Add ia64-aix-tdep.o to
	this list.

2001-02-20  Kevin Buettner  <kevinb@redhat.com>

	* ia64-tdep.c (ia64_frameless_function_invocation): Implement.
	* config/ia64/linux.mh (NATDEPFILES): Use thread-db.o and lin-lwp.o
	for thread support instead of linux-thread.o and lin-thread.o.
	* config/ia64/nm-linux.h (PREPARE_TO_PROCEED, GET_THREAD_SIGNALS,
	ATTACH_LWP): Define to use the following lin-lwp.c functions...
	(lin_lwp_prepare_to_proceed, lin_thread_get_thread_signals,
	lin_lwp_attach_lwp): Declare.

2001-02-20  Andrew Cagney  <ac131313@redhat.com>

	* mips-tdep.c (do_fp_register_row, do_fp_register_row): Fix printf
	formatting.

2001-02-20  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c (solib-svr4.h): Remove include.
	(solib_break_names): Delete names which aren't actually
	used by AIX5.
	(bkpt_names): Remove.
	(aix5_relocate_main_executable, bfd_lookup_symbol): Replace calls
	to STREQ() with equivalent calls to strcmp().
	(in_svr4_dynsym_resolve_code, enable_break, bfd_lookup_symbol,
	aix5_solib_create_inferior_hook): Revise comments.
	(enable_break): Remove old ``bkpt_names'' code.

2001-02-19  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (SFILES): Add frame.c .
	(COMMON_OBS): Add frame.o .
	(frame.o): New target.

	* frame.c (find_saved_register): 
	(default_get_saved_register): 
	(get_saved_register): 
	(read_relative_register_raw_bytes_for_frame): 
	(read_relative_register_raw_bytes): Moved to here.
	* regcache.c: From here.

2001-02-20  Kevin Buettner  <kevinb@redhat.com>

	* solib-aix5.c: New file.

2001-02-20  Martin M. Hunt  <hunt@redhat.com>

	* solib.c (info_sharedlibrary_command): Don't assume pointers
	are the same size of long, call	longest_local_hex_string_custom().

	* solib-svr4.c (LM_ADDR): LM_ADDR is a signed offset, so
	extract_signed_integer() should be called instead of
	extract_address().

2001-02-20  Martin M. Hunt  <hunt@redhat.com>	
	
	* MAINTAINERS: Add Martin Hunt to Write After Approval list.

2001-02-19  Andrew Cagney  <ac131313@redhat.com>

	Frm 2001-02-09 Jim Kingdon <jkingdon@engr.sgi.com>:
	* mips-tdep.c (mips_register_raw_size): If FP_REGISTER_DOUBLE,
	then floating point registers are 8 bytes.

2001-02-19  Michael Snyder  <msnyder@mvstp600e.cygnus.com>

	* parse.c (write_exp_msymbol): Make the type CORE_ADDR, to 
	accomodate 64-bit addresses.

2001-02-19  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	From Peter Schauer <Peter.Schauer@regent.e-technik.tu-muenchen.de>
 	* symtab.c (lookup_symbol_aux): Call lookup_symbol_aux, not
 	lookup_symbol, when trying to find a symbol with a mangled name,
 	to avoid infinite recursion.

2001-02-18  Andrew Cagney  <ac131313@redhat.com>

	* TODO (5.2): Mention G++ 3.0 ABI.  General cleanups.

2001-02-19  Jonathan Larmour  <jlarmour@redhat.com>

	* arm-tdep.c (check_prologue_cache): Fix off by 1 error.
	(save_prologue_cache): Ditto.

2001-02-19  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	From: innadadadavida@yahoo.com:
	* partial-stab.h (switch): Check that pst is not null
 	before dereferencing it.

2001-02-19  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

        From Andrew Cagney  <cagney@b1.cygnus.com>:
	* symfile.c (add_symbol_file_command): Always initialize
 	my_cleanup using a NULL cleanup.

2001-02-19  Eli Zaretskii  <eliz@is.elta.co.il>

	* demangle.c (demangling_style_names): New variable.
	(_initialize_demangler): Fill demangling_style_names with the
	names of known demangling styles from libiberty_demanglers[].  Use
	add_set_enum_cmd instead of add_set_cmd, to get completion on
	demangling style names.

	* proc-api.c (_initialize_proc_api): Make `procfs-file' use
	file-name completion.

	* remote-rdi.c (_initialize_remote_rdi): Ditto for `rdilogfile'.

	* solib.c (_initialize_solib): Ditto for `solib-search-path' and
	`solib-absolute-prefix'.

	* tracepoint.c (_initialize_tracepoint): Ditto for
	`save-tracepoints'.

	* win32-nat.c (_initialize_inftarg): Ditto for `dll-symbols'.

	* cli/cli-cmds.c (init_cli_cmds): Make `shell' and `make' use
	file-name completion.

	* infcmd.c (_initialize_infcmd): Make the following commands use
	the file-name completer: `tty', `args', `path', `paths', and
	`run'.

2001-02-18  Eli Zaretskii  <eliz@is.elta.co.il>

	* go32-nat.c: Include i387-nat.h.
	(fetch_register): New function, uses some of the guts of
	go32_fetch_registers and calls i387_supply_register.
	(go32_fetch_registers): Most of the code moved into
	fetch_register.  Use i387_supply_fsave.
	(store_register): Use i387_fill_fsave instead of custom code.
	(go32_store_registers): Use i387_fill_fsave.

	* Makefile.in (go32-nat.o): Depend on i387-nat.h.

	* config/i386/go32.mh (NATDEPFILES): Add i387-nat.o.

	* completer.c (gdb_completer_file_name_break_characters): Remove
	slash from file-name break characters.
	[__MSDOS__]: Special definition for DOS/Windows file names.
	(line_completion_function): When completing on file names, bump
	`p' to the first file-name constituent character of `word', before
	invoking the completer.

2001-02-17  Mark Kettenis  <kettenis@gnu.org>

	* i387-nat.c: Include "i387-nat.h".  Use regnum instead of regno
	consistently for parameter names.  Fix comments accordingly.
	(i387_supply_register): New function.
	(i387_supply_fsave): Implement using i387_supply_register.
	* i387-nat.h: Use regnum instead of regno consistently for
	parameter names.  Fix comments accordingly.
	(i387_supply_register): New prototype.

2001-02-16  Michael Snyder  <msnyder@mvstp600e.cygnus.com>

	* remote.c (build_remote_gdbarch_data): Use new TARGET_ADDR_BIT 
	instead of TARGET_PTR_BIT (to support Harvard architectures).

2001-02-16  Andrew Cagney  <ac131313@redhat.com>

	From 2001-02-11 Paul Hilfinger <hilfingr@lisbon.int.act-europe.fr>
	* hpux-thread.c (hpux_thread_xfer_memory): Add mem_attrib 
	argument to parameter list and to call in order to conform to 
	to_xfer_memory field of struct target_ops.

2001-02-12  Michael Chastain  <chastain@redhat.com>

	* somsolib.c (som_solib_add_solib_objfile): Do not use
	section relocation feature of syms_from_objfile.  Do my own
	section relocation, offsetting each section of the som by
	either text_addr - text_link_addr or data_start.

2001-02-16  Andrew Cagney  <ac131313@redhat.com>

	* TODO (5.1): Move ``Hardware watchpint problems'' out of 5.1.

2001-02-16  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS (paper trail): Update.

2001-02-16  Mark Kettenis  <kettenis@gnu.org>

	* target.h (target_fetch_registers): Fix comment.

2001-02-15  Andrew Cagney  <ac131313@redhat.com>

	* f-exp.y: Include <ctype.h>.
	(parse_number): Ensure that ``i'' is always initialized.

2001-02-14  Jim Kingdon  <jkingdon@engr.sgi.com>

	* MAINTAINERS: Add myself to paper trail section.

2001-02-14  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* configure.in (AC_CHECK_HEADERS): Add sys/file.h.
	* configure, config.in: Regenerate.
	* corelow.c: Include <sys/file.h> if present.

2001-02-14  Andrew Cagney  <ac131313@redhat.com>

	* inflow.c (terminal_ours_1): Initialize ``osigtou''.  Only
 	declare when have SIGTTOU.

2001-02-14  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/fnchange.lst: Add entries for gdb/gdbtk/*/ChangeLog-*.

2001-02-12  Jim Kingdon  <jkingdon@engr.sgi.com>

	* MAINTAINERS: Update my email address.

2001-02-11  Eli Zaretskii  <eliz@is.elta.co.il>

	* NEWS: Document that "info symbol" works with COFF debug info and
	its variants.

	* minsyms.c (lookup_minimal_symbol_by_pc_section): Don't skip
	symbols whose SYMBOL_BFD_SECTION is NULL.

2001-02-10  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	Get rid of AIX specific PC_LOAD_SEGMENT, replace with PC_SOLIB.
	* xcoffsolib.c (xcoff_solib_address):  Renamed from
	pc_load_segment_name.  Return NULL if address is not in a shared
	library.  Cleanup shared library name construction, using xasprintf.
	Format shared library member names consistent with format in exec.c.
	(solib_info):  Format shared library member names consistent with
	format in exec.c.
	* config/rs6000/nm-rs6000.h:  Replace PC_LOAD_SEGMENT with PC_SOLIB,
	using xcoff_solib_address for PC_SOLIB definition.
	* stack.c (print_frame):  Remove PC_LOAD_SEGMENT code, no longer
	needed.

2001-02-10  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* mipsread.c (read_alphacoff_dynamic_symtab):  Replace alloca calls
	with xmalloc calls and cleanups.

2001-02-10  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* rs6000-nat.c (child_xfer_memory):  Add missing parameter
	'struct mem_attrib *' required by 2001-01-23 change.

2001-02-08  Jim Kingdon  <jkingdon@engr.sgi.com>

	Updates to "make TAGS":
	* Makefile.in (ALLDEPFILES): Remove altos-xdep.c arm-convert.s
	arm-xdep.c convex-tdep.c convex-xdep.c pyr-tdep.c pyr-xdep.c
	tahoe-tdep.c.
	(TAGFILES_NO_SRCDIR): Add $(SUBDIR_CLI_SRCS).

2001-02-08  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/fnchange.lst: Remove extraneous "too many dots".

Wed Feb  7 22:39:26 2001  Andrew Cagney  <cagney@redhat.com>

	From Dean Luick <luick@cray.com>:
	* defs.h (continuation): Remove unused global variable.

Wed Feb  7 22:28:31 2001  Andrew Cagney  <cagney@redhat.com>

	* configure.tgt: Remove references to convex, pyramid, altos and
 	tahoe.
 	* configure.host: Ditto.
	* MAINTAINERS: Ditto.
	* NEWS: Update.

	* tahoe-tdep.c: Delete obsolete file.
	* pyr-xdep.c: Ditto.
	* pyr-tdep.c: Ditto.
	* convex-tdep.c: Ditto.
	* convex-xdep.c: Ditto.
	* config/tahoe/xm-tahoe.h: Ditto.
	* config/tahoe/tm-tahoe.h: Ditto.
	* config/tahoe/tahoe.mt: Ditto.
	* config/tahoe/tahoe.mh: Ditto.
	* config/pyr/xm-pyr.h: Ditto.
	* config/pyr/tm-pyr.h: Ditto.
	* config/pyr/pyramid.mt: Ditto.
	* config/pyr/pyramid.mh: Ditto.
	* config/m68k/xm-altos.h: Ditto.
	* config/m68k/tm-altos.h: Ditto.
	* config/m68k/altos.mt: Ditto.
	* config/m68k/altos.mh: Ditto.
	* config/convex/xm-convex.h: Ditto.
	* config/convex/tm-convex.h: Ditto.
	* config/convex/convex.mt: Ditto.
	* config/convex/convex.mh: Ditto.
	* config/convex/Convex.notes: Ditto.
	* config/arm/xm-arm.h: Ditto.
	* config/arm/nm-arm.h: Ditto.
	* config/arm/arm.mt: Ditto.
	* config/arm/arm.mh: Ditto.
	* arm-convert.s: Ditto.
	* arm-xdep.c: Ditto.
	* altos-xdep.c: Ditto.

Wed Feb  7 19:41:21 2001  Andrew Cagney  <cagney@redhat.com>

	* defs.h (internal_error, internal_verror): Add __FILE__ and
 	__LINE__ parameter.
	* utils.c (internal_error, internal_verror): Update.

	* v850-tdep.c: Update calls to internal_error.
	* utils.c: Ditto.
	* ui-out.c: Ditto.
	* ui-file.c: Ditto.
	* target.h: Ditto.
	* symtab.h: Ditto.
	* symm-nat.c: Ditto.
	* sparc-tdep.c: Ditto.
	* source.c: Ditto.
	* serial.c: Ditto.
	* rs6000-tdep.c: Ditto.
	* rs6000-nat.c: Ditto.
	* remote.c: Ditto.
	* remote-vx.c: Ditto.
	* remote-sim.c: Ditto.
	* remote-mips.c: Ditto.
	* regcache.c: Ditto.
	* objfiles.h: Ditto.
	* objfiles.c: Ditto.
	* mn10300-tdep.c: Ditto.
	* mips-tdep.c: Ditto.
	* maint.c: Ditto.
	* m68k-tdep.c: Ditto.
	* m3-nat.c: Ditto.
	* language.c: Ditto.
	* infptrace.c: Ditto.
	* inferior.h: Ditto.
	* infcmd.c: Ditto.
	* ia64-tdep.c: Ditto.
	* i386-tdep.c: Ditto.
	* i386-linux-nat.c: Ditto.
	* hppah-nat.c: Ditto.
	* go32-nat.c: Ditto.
	* findvar.c: Ditto.
	* f-lang.c: Ditto.
	* elfread.c: Ditto.
	* event-loop.c: Ditto.
	* dwarf2read.c: Ditto.
	* dsrec.c: Ditto.
	* d30v-tdep.c: Ditto.
	* d10v-tdep.c: Ditto.
	* cli/cli-setshow.c: Ditto.
	* cli/cli-script.c: Ditto.
	* ch-exp.c: Ditto.
	* breakpoint.c: Ditto.
	* ax-gdb.c: Ditto.
	* arch-utils.c: Ditto.
	* a29k-tdep.c: Ditto.
	* gdb_assert.h: Ditto.
	* gdbarch.sh: Ditto.
	* gdbarch.h, gdbarch.c: Re-generate.
	
2001-02-07  Andrew Cagney  <ac131313@redhat.com>

	From Mark Kettenis <kettenis@gnu.org>:
	* event-top.h [!STOP_SIGNAL]: #include <signal.h>.

2001-02-07  Andrew Cagney  <ac131313@redhat.com>

	* remote-sim.c (dump_mem): Cleanup printf format argument.
	* MAINTAINERS: Update, mn10300-elf now builds.

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

	* event-top.c: Remove duplicate #include <signal.h>.

2001-02-06  Andrew Cagney  <ac131313@redhat.com>

	* sol-thread.c (restore_inferior_pid): Save the PID in a freshly
 	allocated buffer.
	(save_inferior_pid): Restore the PID from that tempoary
 	buffer. Delete the buffer.
	* utils.c (make_cleanup_close, do_close_cleanup): Ditto for FD.

2001-02-06  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add ``The Obvious Fix Rule''.

2001-02-06  Andrew Cagney  <ac131313@redhat.com>

	* MAINTAINERS: Add Michael Snyder to Solaris/SPARC list.

2001-02-06  Andrew Cagney  <ac131313@cygnus.com>

	* gdbarch.sh: Include "gdb_assert.h".
	(struct gdbarch): Change ``nr_data'' to unsigned.
	(alloc_gdbarch_data, free_gdbarch_data): New functions.
	(gdbarch_free): Free the data-pointer vector.  Use xfree to delete
 	architecture vector.
 	(struct gdbarch_data, struct gdbarch_data_registration): Move init
 	method to gdbarch_data.  Add free method, make index unsigned.
	(struct gdbarch_data_registry): Make nr unsigned.
	(register_gdbarch_data): Add free parameter. Store in
 	gdbarch_data.
	(init_gdbarch_data): Use set_gdbarch_data.
	(set_gdbarch_data): New function.
	
	* gdbarch.h, gdbarch.c: Re-generate.
	
2001-02-06  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* ser-unix.c (hardware_print_tty_state) [HAVE_SGTTY]: Call
	fprintf_filtered with correct arguments.

2001-02-06  Michael Snyder  <msnyder@makita.cygnus.com>
	Submitted by Paul Hilfinger (hilfingr@gnat.com) 
	and Andrei Petrov (and@genesyslab.com).
	* findvar.c: Buffers of size MAX_REGISTER_RAW_SIZE or REGISTER_BYTES
	must be allocated dynamically, since these are no longer constants.
	* infcmd.c: Ditto.
	* regcache.c: Ditto.
	* remote.c: Ditto.
	* sol-thread.c: Ditto.
	* valops.c: Ditto.
	* config/sparc/sun4sol2.mh (MH_CFLAGS): Add -I/usr/include/v9, as a
	work-around for a missing Sun header file in solaris for sparc64.

2001-02-04  Philip Blundell  <philb@gnu.org>

	* config/arm/linux.mh (NATDEPFILES): Add proc-service.o,
	thread-db.o, lin-lwp.o; remove lin-thread.o, linux-thread.o.
	* config/arm/nm-linux.h (PREPARE_TO_PROCEED, ATTACH_LWP,
	GET_THREAD_SIGNALS): Define.
	* arm-linux-nat.c (fill_gregset): Correct type of argument.
	(supply_gregset): Likewise.
	(fill_fpregset): Likewise.
	(supply_fpregset): Likewise.

Tue Feb  6 11:58:57 2001  David Taylor  <taylor@redhat.com>

	* valops.c (value_cast): If casting a scalar to a pointer, do not
 	issue a message about truncation unless it exceeds the length of
 	an address, not the length of a pointer.  This is because what the
 	user gives us is an address, not a pointer, and we will ultimately
 	convert it (via ADDRESS_TO_POINTER) to a pointer, not truncate it
 	to a pointer.  This allows things like "print *(int *)0x01000234"
 	to work without generating a misleading message on a target having
 	two byte pointers and four byte addresses.

2001-02-05  Christopher Faylor  <cgf@cygnus.com>

	* win32-nat.c: Change PTR to void * throughout.

2001-02-05  J.T. Conklin  <jtc@redback.com>

	* signals.h: Removed.
	* event-top.c (#include <signal.h>): Changed from signals.h.
	* inflow.c: Likewise.
	* mac-xdep.c: Likewise.
	* ser-pipe.c: Likewise.
	* ser-tcp.c: Likewise.
	* standalone.c: Likewise.
	* top.c: Likewise.
	* utils.c: Likewise.
	* Makefile.in: Removed signals.h from dependencies.

2001-02-05  Christopher Faylor  <cgf@cygnus.com>

	Change suggested by Dean Luick <luick@cray.com>
	* inferior.h (step_over_calls_kind): Remove trailing comma from
	last enum element.
	(step_over_calls): Declare as extern rather than global.

2001-02-05  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* sh-tdep.c: Update copyright.
	(sh_extract_return_value): Rewrite.
	(sh3e_sh4_extract_return_value): New function.
	(sh_gdbarch_init): Initialize gdbarch_extract-return_value to new
 	version of the function for sh3e and sh4 CPUs.

2001-02-05  Michael Chastain  <chastain@redhat.com>

	* hppah-nat.c (child_xfer_memory): Add parameter 'struct mem_attrib *'
	to conform with interface change.

2001-02-04  Eli Zaretskii  <eliz@is.elta.co.il>

	* config/djgpp/fnchange.lst: Tweak to make consistent with the
	new files.

	* config/djgpp/djconfig.sh: Use explicit absolute file name when
	invoking `find'.

	* ser-go32.c (dos_write) [UART_FIFO_WORKS]: Use outportsb only if
	UART_FIFO_WORKS is defined.  Otherwise use outportb.
	From Francisco Pastor <fpastor.etra-id@etra.es>

	* go32-nat.c (go32_xfer_memory): Make the argument list consistent
	with target.h's `to_xfer_memory' member.

2001-02-02  J.T. Conklin  <jtc@redback.com>

	* ppc-bdm.c (#include <signal.h>): Removed.
	* remote-array.c: Likewise.
	* remote-bug.c: Likewise.
	* remote-e7000.c: Likewise.
	* remote-mips.c: Likewise.
	* remote-os9k.c: Likewise.
	* remote-st.c: Likewise.
	* remote-udi.c: Likewise.
	* remote-vx29k.c: Likewise.
	* remote-vx68.c: Likewise.
	* remote-vx960.c: Likewise.
	* remote-vxmips.c: Likewise.
	* remote-vxsparc.c: Likewise.

2001-02-02  John Moore  <jmoore@redhat.com>

	* remote-utils.h (sr_set_device): Changed free() to xfree() where 
	appropriate.  Also changed Copyright to include 2001.
	* symtab.h (obstack_chunk_free, SYMBOL_INIT_DEMANGLED_NAME): Likewise.
	* value.h (value_free): Likewise.
	* gdbarch.sh (gdbarch_free): Likewise.
	* gdbarch.c, gdbarch.h: Regenerated.

2001-02-02  John Moore  <jmoore@redhat.com>

        * cli/cli-cmds.c (apropos_command): Changed occurance of free() to 
	xfree().  Also changed Copyright to include 2001.

2001-02-02  J.T. Conklin  <jtc@redback.com>

	* monitor.c (#include "gdb_wait.h"): Removed.
	* ocd.c: Likewise.
	* ppc-bdm.c: Likewise.
	* remote-adapt.c: Likewise.
	* remote-array.c: Likewise.
	* remote-bug.c: Likewise.
	* remote-e7000.c: Likewise.
	* remote-eb.c: Likewise.
	* remote-es.c: Likewise.
	* remote-mips.c: Likewise.
	* remote-mm.c: Likewise.
	* remote-nindy.c: Likewise.
	* remote-os9k.c: Likewise.
	* remote-rdi.c: Likewise.
	* remote-rdp.c: Likewise.
	* remote-sds.c: Likewise.
	* remote-sim.c: Likewise.
	* remote-st.c: Likewise.
	* remote-udi.c: Likewise.
	* remote-vx.c: Likewise.
	* remote-vx29k.c: Likewise.
	* remote-vx68.c: Likewise.
	* remote-vx960.c: Likewise.
	* remote-vxmips.c: Likewise.
	* remote-vxsparc.c: Likewise.
	* remote.c: Likewise.
	* ser-pipe.c: Likewise.
	* ser-unix.c: Likewise.
	* Makefile.in: Updated dependencies.

2001-01-31  David Smith  <dsmith@redhat.com>

	* event-loop.c: Change inclusion of string.h to gdb_string.h and
	updated the copyright notice.
	* ser-pipe.c: Ditto.
	* mi/mi-cmds.c: Ditto.
	* mi/mi-console.c: Ditto.
	* mi/mi-getopt.c: Ditto.
	* mi/mi-parse.c: Ditto.

2001-01-31  David Smith  <dsmith@redhat.com>

	* MAINTAINERS: Add David Smith to Write After Approval list.

Tue Jan 30 15:43:08 2001  Andrew Cagney  <cagney@cygnus.com>

	* cli/cli-utils.c (putchar_filtered): Move function from here.
	* utils.c (putchar_filtered): To here.
	* cli/cli-utils.h (putchar_filtered): Move declaration from here.
	* defs.h (putchar_filtered): To here.
	
Tue Jan 30 17:27:11 2001  Andrew Cagney  <cagney@redhat.com>

	* configure.in (AC_CHECK_FUNCS): Replace vfork test with
 	AC_FUNC_VFORK macro.
	* config.in, configure: Re-generate.

	* gdb_vfork.h: New file.
	* ser-pipe.c (pipe_open): Update. Include "gdb_vfork.h".
	* fork-child.c (fork_inferior): Ditto.
	
Tue Jan 30 17:09:07 2001  Andrew Cagney  <cagney@redhat.com>

	* defs.h (strsave): Delete declaration.
	* utils.c (strsave): Delete definition.
	* TODO (strsave): Update

	* mac-xdep.c (tilde_expand): Replace strsave with xstrdup.
	* sparcl-tdep.c (sparclite_open): Ditto.
	* mips-tdep.c (mips_set_processor_type_command):  Ditto.
	(_initialize_mips_tdep):  Ditto.
	* solib.c (solib_open):  Ditto.
	* symfile.c (add_filename_language):  Ditto.
	(set_ext_lang_command):  Ditto.
	* source.c (init_source_path):  Ditto.
	(mod_path):  Ditto.
	* sh3-rom.c (sh3_open):  Ditto.
	(sh3e_open):  Ditto.
	* serial.c (serial_open):  Ditto.
	* remote-mips.c (common_open):  Ditto.
	* monitor.c (monitor_open):  Ditto.
	* m32r-rom.c (m32r_upload_command):  Ditto.
	* infcmd.c (path_command):  Ditto.
	* f-exp.y (parse_number):  Ditto.
	* breakpoint.c (create_longjmp_breakpoint):  Ditto.
	(create_thread_event_breakpoint):  Ditto.
	* arc-tdep.c (arc_set_cpu_type_command):  Ditto.
	(_initialize_arc_tdep):  Ditto.

Tue Jan 30 15:14:26 2001  Andrew Cagney  <cagney@skil>

	* cli/cli-script.c (define_command): Check for a bad hook value in
 	switch statement.

2001-01-30  J.T. Conklin  <jtc@redback.com>

	* configure/sh/embed.mt: New file.
	* configure/sh/linux.mt: New file.
	* configure/sh/sh.mt: Removed.
	* configure.tgt (sh-*-hms,sh-*-coff*,sh-*-elf*,sh-*-linux): New targets.
	(sh-*-*): Removed.

2001-01-29  Michael Chastain  <chastain@redhat.com>

	* symtab.c (lookup_block_symbol): Use 'namespace' parameter in
	symbol comparisons in binary search.

2001-01-27  Christopher Faylor  <cgf@cygnus.com>

	* win32-nat.c (child_xfer_memory): Add missing argument required by
	2001-01-23 change.

2001-01-27  Mark Kettenis  <kettenis@gnu.org>

	* ui-out.c (do_list_end): New function.
	(make_cleanup_ui_out_list_end): New function.
	* ui-out.h: Provide prototype for make_cleanup_ui_out_list_end.
	* stack.c (print_frame) [UI_OUT]: Call
	make_cleanup_ui_out_list_end to make sure we mark the end of the
	list if we do a non-local exit.  At the end of the function,
	instead of calling ui_out_list_end directly, let do_cleanups
	handle it.

2001-01-26  Fernando Nasser  <fnasser@redhat.com>

	Fix double parsing of filenames passed as command line arguments
	to GDB (causes weird handling of escape characters).
	Also, remove dependencies on the CLI from libgdb.
	* call-cmds.h: Remove declaration of exec_file_command().
	* gdbcore.h: Remove declaration of exec_file_command().
	Add declarations for exec_open() and exec_file_clear().
	* symfile.h: Add declarations for symbol_file_add_main() and
	symbol_file_clear().
	* exec.c (exec_open): New function. Implements to_open for exec
	targets.
	(exec_file_clear): New function. Makes GDB forget about a previously
	specified executable file.
	(exec_file_attach): Move parsing of arguments from here ...
	(exec_file_command): ... to here.
	(init_exec_ops): Use exec_open(), not exec_file_command() to
	implement to_open for exec targets.
	* symfile.c (symbol_file_add_main): New function. Call symbol_file_add()
	with default values.  Used when the file name has already been parsed.
	(symbol_file_clear): New function. Makes GDB forget about previously
	read symbols.
	(symbol_file_command): Call the above function instead of inline code.
	* main.c: Include "symfile.h" and "gdbcore.h" instead of the deprecated
	"call-cmds.h".
	(captured_main): Call exec_file_attach() and symbol_file_add_main()
	instead of exec_file_command() and symbol_file_command().
	(captured_main): Add comment.
	* corefile.c: Include "symfile.h".
	(core_file_command): Call symbol_file_add_main() instead of
	symbol_file_command().
	(reopen_exec_file): Call exec_open() instead of exec_file_command().
	* infcmd.c: Include "symfile.h".
	(attach_command): Call symbol_file_add_main() instead of 
        symbol_file_command().
	* infrun.c: Remove comment about the inclusion of "symfile.h",
	not any longer appropriate.
	(follow_exec): Call symbol_file_add_main() instead of 
        symbol_file_command().
	* remote-es.c: Include "symfile.h".
	(es1800_load): Call symbol_file_add_main() instead of 
        symbol_file_command().
	* remote-vx.c: Remove comment about the inclusion of "symfile.h",
        not any longer appropriate.
	(vx-wait): Call symbol_file_add_main() instead of 
        symbol_file_command().
	* solib-svr4.c (open_symbol_file_object): Call symbol_file_add_main()
	instead of symbol_file_command().
	* v850ice.c (ice_file): Call exec_open(), exec_file_attach() and
	symbol_file_add_main() instead of exec_file_command() and
	symbol_file_command().
	* Makefile.in: Update dependencies.

2001-01-26  Jeff Holcomb  <jeffh@redhat.com>

	* remote-udi.c (udi_open): Change strdup to xstrdup.
	* thread.c (thread_apply_all_command): Change strdup to xstrdup.
	Update copyright message.
	* varobj.c (delete_variable_1): Likewise.

	* gdb_string.h: Remove declaration of strdup.  Update copyright
	message.
	* config/xm-mpw.h: Likewise.
	* config/i386/xm-i386mach.h: Likewise.
	* config/m68k/xm-apollo68b.h: Likewise.
	* config/m68k/xm-hp300bsd.h: Likewise.
	* config/rs6000/xm-rs6000.h: Likewise.
	* config/vax/xm-vaxult.h: Remove declaration of strdup.
	* config/vax/xm-vaxult2.h: Likewise.

2001-01-26  Jeff Holcomb  <jeffh@redhat.com>

	* MAINTAINERS: Add Jeff Holcomb to Write After Approval list.

2001-01-25  J.T. Conklin  <jtc@redback.com>

	* target.c (target_xfer_memory_partial): Return -1 on failure due
 	to invalid access mode attribute.

2001-01-25  Christopher Faylor  <cgf@cygnus.com>

	* win32-nat.c (_initialize_core_win32): Prototype correctly.

2001-01-25  Mark Kettenis  <kettenis@gnu.org>

	* config/alpha/tm-fbsd.h: Update copyright.
	(USE_STRUCT_CONVENTION): Define in terms of
	alphabsd_use_struct_convention.
	* config/alpha/fbsd.mt (TDEPFILES): Add alphafbsd-tdep.c.
	* alphafbsd-tdep.c: New file.

2001-01-24  Fernando Nasser  <fnasser@redhat.com>

	* top.c (print_gdb_version): Update Copyright year.

2001-01-24  J.T. Conklin  <jtc@redback.com>

	* dcache.c (dcache_write_line): Fix typo.

	* memattr.c (delete_mem_region): Replace free() with xfree().
	(mem_number): Add explicit type.

	* sol-thread.c (sol_thread_xfer_memory): Add attrib argument.
	(rw_common): Likewise.

2001-01-24  Fernando Nasser  <fnasser@redhat.com>

	* infcmd.c (get_inferior_args, set_inferior_args): Accessor functions
	for the inferior program arguments.
	(run_command, run_no_args_command, init_infcmd)): Use accessor
	functions to set the inferior program arguments.
	* inferior.h: Add definitions to the accessor functions above.

2001-01-23  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c (read_tag_const_type, read_tag_volatile_type):
	Implement these correctly, using make_cv_type.

2001-01-23  J.T. Conklin  <jtc@redback.com>

	* exec.c (xfer_memory): Add attrib argument.
	* infptrace.c (child_xfer_memory): Likewise.
	* lin-lwp.c (lin_lwp_xfer_memory): Likewise.
	* monitor.c (monitor_xfer_memory): Likewise.
	* remote-adapt.c (adapt_xfer_inferior_memory): Likewise.
	* remote-array.c (array_xfer_memory): Likewise.
	* remote-bug.c (bug_xfer_memory): Likewise.
	* remote-e7000.c (e7000_xfer_inferior_memory): Likewise.
	* remote-eb.c (eb_xfer_inferior_memory): Likewise.
	* remote-es.c (es1800_xfer_inferior_memory): Likewise.
	* remote-mips.c (mips_xfer_memory): Likewise.
	* remote-mm.c (mm_xfer_inferior_memory): Likewise.
	* remote-nindy.c (nindy_xfer_inferior_memory): Likewise.
	* remote-os9k.c (rombug_xfer_inferior_memory): Likewise.
	* remote-rdi.c (arm_rdi_xfer_memory): Likewise.
	* remote-rdp.c (remote_rdp_xfer_inferior_memory): Likewise.
	* remote-sds.c (sds_xfer_memory): Likewise.
	* remote-sim.c (gdbsim_xfer_inferior_memory): Likewise.
	* remote-st.c (st2000_xfer_inferior_memory): Likewise.
	* remote-udi.c (udi_xfer_inferior_memory): Likewise.
	* remote-vx.c (vx_xfer_memory): Likewise.
	* remote.c (remote_xfer_memory): Likewise.
	* target.c (debug_to_xfer_memory, do_xfer_memory): Likewise.
	* target.h (child_xfer_memory, do_xfer_memory, xfer_memory): Likewise.
	* thread-db.c (thread_db_xfer_memory): Likewise.

	* target.h (#include "memattr.h"): Added.
	(target_ops.to_xfer_memory): Add attrib argument.

	* wince.c (_initialize_inftarg): Removed call to set_dcache_state.
	* dcache.h (set_dcache_state): Removed declaration.
	* dcache.c (set_dcache_state): Removed definition
	
	* dcache.c: Update module comment, as dcache is now enabled and
 	disabled with memory region attributes instead of by the global
 	variable "remotecache".  Add comment describing the interaction
	between dcache and memory region attributes.
	(dcache_xfer_memory): Add comment describing benefits of moving
	cache writeback to a higher level.
	(dcache_struct): Removed cache_has_stuff field.  This was used to
 	record whether the cache had been accessed in order to invalidate
 	it when it was disabled.  However, this is not needed because the
 	cache is write through and the code that enables, disables, and
 	deletes memory regions invalidate the cache.  Add comment which
 	suggests that we could be more selective and only invalidate those
	cache lines containing data from those memory regions.
	(dcache_invalidate): Updated.
	(dcache_xfer_memory): Updated.
	
	(dcache_alloc): Don't abort() if dcache_enabled_p is clear.
	(dcache_xfer_memory): Removed code that called do_xfer_memory() to
 	perform a uncached transfer if dcache_enabled_p was clear.  This
 	function is now only called if caching is enabled for the memory
	region.
	(dcache_info): Always print cache info.

	* target.c (do_xfer_memory): Add attrib argument.
	(target_xfer_memory, target_xfer_memory_partial): Break transfer
 	into chunks defined by memory regions, pass region attributes to
 	do_xfer_memory().
	* dcache.c (dcache_read_line, dcache_write_line): Likewise.

	* Makefile.in (SFILES): Add memattr.c.
	(COMMON_OBS): Add memattr.o.
	(dcache.o): Add target.h to dependencies.
	* memattr.c: New file.
	* memattr.h: Likewise.

	* config/m32r/m32r.mt (GDBSERVER_LIBS): Added ../../intl/libintl.a.
	* config/mips/vr5000.mt (GDBSERVER_LIBS): Likewise.
	* config/tic80/tic80.mt (GDBSERVER_LIBS): Likewise.
	* gdbserver/low-sim.c (#include "defs.h"): Removed.
	(mygeneric_load): Rename from generic_load.
	
	* gdbserver/low-hppabsd.c (#include "server.h"): Added.
	(#include "defs.h"): Removed.
	(inferior_pid, perror_with_name): Remove declarations.
	* gdbserver/low-linux.c: Likewise.
	* gdbserver/low-nbsd.c: Likewise.
	* gdbserver/low-sparc.c: Likewise.
	* gdbserver/low-sun3.c: Likewise.

	* i386-stub.c: Re-indent.
	* m68k-stub.c: Re-indent.

2001-01-22  Nicholas Duffek  <nsd@redhat.com>

	* gdbarch.sh (PARM_BOUNDARY): Define.
	* gdbarch.c: Regenerate.
	* gdbarch.h: Regenerate.

2001-01-22  J.T. Conklin  <jtc@redback.com>

	* ns32k-tdep.c: #include "frame.h"
	* config/ns32k/tm-umax.h (FRAME_FIND_SAVED_REGS): Restore.  It
 	appears to have been inadvertantly removed sometime in May 1999.

	* Revert 2000-11-09 changes where shared library objects were
 	moved from NATDEPFILES to TDEPFILES on NetBSD targets.  While
	we'd like to be able to debug dynamically linked executables,
	this makes it impossible to build a cross debugger on a many
	hosts.

	* config/i386/nbsd.mt: Remove solib.o, solib-svr4.o from TDEPFILES.
        * config/i386/nbsdelf.mt: Likewise.
        * config/m68k/nbsd.mt: Likewise.
        * config/ns32k/nbsd.mt: Likewise.
        * config/powerpc/nbsd.mt: Likewise.
        * config/sparc/nbsd.mt: Likewise.
        * config/sparc/nbsdelf.mt: Likewise.
        * config/i386/nbsd.mh: Add solib.o, solib-svr4.o to NATDEPFILES.
        * config/i386/nbsdelf.mh: Likewise. 
        * config/m68k/nbsd.mh: Likewise.
        * config/ns32k/nbsd.mh: Likewise.
        * config/powerpc/nbsd.mh: Likewise.
        * config/sparc/nbsd.mh: Likewise.

2001-01-19  Jason Merrill  <jason@redhat.com>

	* dbxread.c (read_ofile_symtab): Stay with AUTO_DEMANGLING for G++.
	(process_one_symbol): Likewise.
	* dwarfread.c (handle_producer): Likewise.

Thu Jan 18 12:08:57 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (build_warnings): Disable -Wuninitialized until GDB
 	compiles with -Wuninitialized,-Werror.
	* configure: Regenerate.

	* MAINTAINERS: Add list of buildable targets.

Thu Jan 18 12:48:04 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* defs.h (STRCMP): Delete macro.

	* objfiles.c (objfile_relocate): Replace STRCMP with call to
 	strcmp.
	* symtab.c (lookup_partial_symbol, lookup_block_symbol): Ditto.
	* symfile.c (compare_symbols):  Ditto.
	* standalone.c (open):  Ditto.
	* remote-es.c (verify_break):  Ditto.
	* cli/cli-decode.c (add_cmd, add_show_from_set): Ditto.

	* symfile.c (compare_psymbols): Delete comment refering to STRCMP.

Thu Jan 18 12:25:06 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* varobj.c (FREEIF): Delete macro.
	(varobj_set_value, free_variable): Replace FREEIF with ``xfree''
 	call.

2001-01-18  Nick Clifton  <nickc@redhat.com>

	* arc-tdep.c (arc_cpu_type_table): Add new arc core numbers.
	(arc_print_insn): No bfd available, so pass NULL to
	arc_get_disassembler.

2001-01-09  James Ingham  <jingham@inghji.apple.com>

         * symtab.c (lookup_symbol_aux): Call lookup_symbol_aux to lookup
 	 a mangled symbol rather than recursing into lookup_symbol, since
 	 this will just re-unmangle the name & call lookup_symbol_aux -
 	 leading to an infinite recursion.

2001-01-18  Mark Kettenis  <kettenis@gnu.org>

	* infcmd.c (print_return_value): Restore another space lost by
	switch to UIOUT. ``$NN='' should be ``$NN =''.

Fri Jan 19 02:31:40 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* target.h (TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT)
	* breakpoint.c (TARGET_REGION_OK_FOR_HW_WATCHPOINT): Wrap macro
 	definition in parenthesis.

Fri Jan 19 02:13:40 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-10-27 Mark Salter <msalter@redhat.com>:
	* remote.c (remote_remove_hw_breakpoint): Add 'len' field to Z
 	packet.
	(remote_insert_hw_breakpoint): Ditto.

2001-01-17  J.T. Conklin  <jtc@redback.com>

	* config/m68k/tm-nbsd.h (USE_STRUCT_CONVENTION): Define.
	(BPT_VECTOR, REMOTE_BPT_VECTOR): Change to 0xf.
	* config/m68k/nbsd.mt (TDEPFILES): Add m68knbsd-tdep.o.
	* m68knbsd-tdep.c: New file.

	* i386nbsd-tdep.c: Remove #if 0'd out #includes.

	* m68knbsd-nat.c: #include gdbcore.h.

Wed Jan 17 09:41:58 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: Add J.T. Conklin to Blanket Write Privs.

2001-01-16  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* procfs.c (procfs_stopped_by_watchpoint): Don't die if process
	goes away -- just return false (ie. not stopped by watchpoint).
	* source.c (openp): Fix typo in comment.

2001-01-12  Nicholas Duffek  <nsd@redhat.com>

	* blockframe.c (generic_get_saved_register): Spelling fix.
	* frame.h (FRAME_FP): Spelling fix.

Fri Jan 12 18:29:46 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* infcmd.c (print_return_value): Restore space lost by switch to
 	UIOUT. ``$NN='' should be ``$NN =''.
	
2001-01-08  Nicholas Duffek  <nsd@redhat.com>

	* regcache.c (set_register_cached, register_buffer,
	real_register, pseudo_register fetch_register, store_register):
	New functions.
	(register_changed, read_relative_register_raw_bytes_for_frame,
	registers_changed, registers_fetched, read_register_bytes,
	read_register_gen, write_register_gen, read_register,
	read_signed_register, write_register, supply_register): Replace
	register_valid[] with register_cached() and
	set_register_cached().
	(read_register_bytes, read_register_gen, write_register_gen,
	read_register, read_signed_register, write_register,
	supply_register): Replace registers[] with register_buffer().
	(read_register_bytes, read_register_gen, read_register,
	read_signed_register): Call fetch_register().
	(write_register_gen, write_register): Call real_register() and
	store_register().
	(write_register_bytes): Call store_register().
	* value.h (set_register_cached, register_buffer): Prototype.
	* remote.c (remote_fetch_registers): Allocate regs[] with a
	run-time size.  Replace register_valid[] with
	set_register_cached().
	(store_register_using_P, remote_store_registers): Replace
	registers[] with register_buffer().

2001-01-08  Nicholas Duffek  <nsd@redhat.com>

	* regcache.c: Change "write-back" comment to "write-through".
	Change "regno" to "regnum".
	(read_register, read_signed_register): Remove "raw" from return
	value description.
	(supply_register): Spelling fix.
	* value.h: Change "regno" to "regnum".

2001-01-08  Fernando Nasser  <fnasser@redhat.com>

	* Makefile.in (install-gdbtk): Add .itcl files to the list of files
	to be installed.

2001-01-04  Michael Snyder  <msnyder@mvstp600e.cygnus.com>

	* mips-tdep.c (mips_coerce_float_to_double): Fix typo in comment.

2001-01-04  Nicholas Duffek  <nsd@redhat.com>

	* valops.c (VALUE_SUBSTRING_START): Delete.

2001-01-04  Nicholas Duffek  <nsd@redhat.com>

	* Makefile.in (SUBDIR_CLI_OBS): Add cli/cli-utils.o.
	(SUBDIR_CLI_SRCS): Add cli/cli-utils.c.
	(cli_utils_h): New variable.
	(cli/cli-utils.o): New rule.
	* cli/cli-utils.c: New file.
	* cli/cli-utils.h: New file.

2001-01-04  Nicholas Duffek  <nsd@redhat.com>

	* config/i386/tm-i386.h (REGISTER_CONVERT_TO_VIRTUAL,
	REGISTER_CONVERT_TO_RAW): Delete trailing semicolon.

2001-01-03  J.T. Conklin  <jtc@redback.com>

	* alphabsd-nat.c, i386-linux-nat.c, i386bsd-nat.c: Fix typo in
 	comment.

2001-01-02  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* sh-tdep.c (sh_default_store_return_value):  Allow for small return type.
	(sh3e_sh4_store_return_value): Call sh_default_store_return_value for
	non-float types.
	* sparc-tdep.c (sparc_frame_chain): Fix typo in comment.
	Update copyright notice.
	
For older changes see ChangeLog-2000

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
