2006-12-31  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-nat.c (lin_lwp_attach_lwp): Return a status.  Do not
	add the LWP to our list until we are attached.  Warn instead
	of erroring if the attach fails.
	* linux-nat.h (lin_lwp_attach_lwp): New prototype.
	* linux-thread-db.c (attach_thread): Call lin_lwp_attach_lwp
	directly.  Do not add the thread to our list until we are
	successfully attached.
	* config/nm-linux.h (lin_lwp_attach_lwp, ATTACH_LWP): Delete.

2006-12-31  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure.ac: Add tests for TD_VERSION and TD_NOTLS.
	* linux-thread-db.c (thread_db_err_str): Recognize TD_NOTALLOC,
	TD_VERSION, and TD_NOTLS.
	* configure, config.in: Regenerated.

2006-12-31  Joel Brobecker  <brobecker@adacore.com>

	* i386-tdep.c (i386_analyze_stack_align): Add handling of two
	other possible code sequences that perform a stack realignment.

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

	* sparc64-tdep.h (SPARC64_PSTATE_AG, SPARC64_PSTATE_IE) 
	(SPARC64_PSTATE_PRIV, SPARC64_PSTATE_AM, SPARC64_PSTATE_PEF) 
	(SPARC64_PSTATE_RED, SPARC64_PSTATE_TLE, SPARC64_PSTATE_CLE) 
	(SPARC64_PSTATE_PID0, SPARC64_PSTATE_PID1): New defines.
	* sparc64nbsd-nat.c: Include "gdbcore.h".
	(sparc64nbsd_supply_pcb): Get %pc from stack if necessary.  Supply
	processor state register.
	* sparc64obsd-tdep.c (sparc64obsd_trapframe_cache) 
	(sparc64obsd_trapframe_this_id) 
	(sparc64obsd_trapframe_prev_register) 
	(sparc64obsd_trapframe_sniffer): New functions.
	(sparc64obsd_trapframe_unwind): New variable.
	(sparc64obsd_init_abi): Append trapframe unwinder.
	* Makefile.in (sparc64nbsd-nat.o): Update dependencies.

2006-12-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* infrun.c (handle_inferior_event): Don't call
	ENSURE_VFORKING_PARENT_REMAINS_STOPPED.
	* target.h (ENSURE_VFORKING_PARENT_REMAINS_STOPPED): Delete.
	(RESUME_EXECD_VFORKING_CHILD_TO_GET_PARENT_VFORK): Delete.

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

	* sparc-tdep.c (sparc_psr_type, sparc_fsr_type): New variables.
	(sparc_init_types): New function.
	(sparc32_register_type): Use appropriate flag types for %fsr and
	%prs.
	(_initialize_sparc_tdep): Call sparc_init_types.

	* memory-map.c (memory_map_end_element): Move variable
	declarations to the begining of the block.

2006-12-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* ia64-tdep.c (get_kernel_table): Correct signedness in check
	for a negative return value.

2006-12-27  Gary Funck  <gary@intrepid.com>

	* dwarf2read.c (dwarf_attr_name, dwarf_cfi_name)
	(dwarf_stack_op_name, dwarf_tag_name)
	(dwarf_type_encoding_name): Decode additional DWARF 2
	and DWARF 3 codes into their corresponding string names.

	* MAINTAINERS (Write After Approval): Add myself.

2006-12-26  Joel Brobecker  <brobecker@adacore.com>

	* sparc64-tdep.c (sparc64_extract_return_value): Add handling
	for array types.
	(sparc64_store_return_value): Likewise.

2006-12-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* breakpoint.c (watchpoint_check): Double-check the found frame.

2006-12-17  Nick Hudson  <skrll@netbsd.org>
	    Mark Kettenis  <kettenis@gnu.org>

	* i386nbsd-nat.c: Include "nbsd-nat.h".
	(_initialize_i386nbsd_nat): Update target vector to use
	nbsd_pid_to_exec_file.
	* config/i386/nbsdelf.mh (NATDEPFILES): Add nbsd-nat.o.
	* config/i386/nbsdaout.mh (NATDEPFILES): Add nbsd-nat.o.
	* nbsd-nat.c: New file.
	* nbsd-nat.h: New file.
	* Makefile.in (ALLDEPFILES): Add nbsd-nat.c.
	(nbsd_nat_h): New variable.
	(nbsd-nat.o): New dependency.

2006-12-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (ALLDEPFILES): Remove mipsv4-nat.c.
	(mipsv4-nat.o): Delete.
	* mipsv4-nat.c: Delete.

2006-12-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* dve3900-rom.c: Delete file.
	* Makefile.in (dve3900-rom.o): Delete.

2006-12-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* vx-share/README: Delete file.

2006-12-16  Mark Kettenis  <kettenis@gnu.org>

	* i386obsd-nat.c: Include "gdbcore.h", "regcache.h", "target.h",
	<machine/frame.h>, <machine/pcb.h>, "i386bsd-nat.h" and
	"bsd-kvm.h".
	(i386obsd_supply_pcb): New function.
	(_initialize_i386obsd_nat): Construct and add target
	vector. Enable libkvm interface.
	* Makefile.in (i386obsd-nat.o): Update dependencies.
	* config/i386/obsd.mh (NATDEPFILES): Remove i386nbsd-nat.c

	* sparcobsd-tdep.c: Fix typo.

	Add OpenBSD/sh native support.
	* NEWS (New native configurations): Mention OpenBSD/sh.
	* configure.host: Add sh*-*-openbsd*.
	* shnbsd-nat.c: Include "inf-ptrace.h".
	(shnbsd_fetch_inferior_registers): Rename from
	fetch_inferior_registers.  Make static.
	(shnbsd_store_inferior_registers): Rename from
	store_inferior_registers.  Make static.
	(_initialize_shnbsd_nat): New function.
	* Makefile.in (shnbsd-nat.o): Update dependencies.
	* config/sh/nbsd.mh (NAT_CLIBS, NAT_FILE): Remove.
	(NATDEPFILES): Remove infptrace.o and inftarg.o.  Add
	inf-ptrace.o.

	Add OpenBSD/sh support.
	* NEWS (New targets): Mention OpenBSD/sh.
	* configure.tgt: Add sh*-*-openbsd*.
	* shnbsd-tdep.c (_initialize_shnbsd_tdep): Register handler for
	GDB_OSABI_OPENBSD_ELF.
	* config/sh/obsd.mt: New file.

	* ppcnbsd-tdep.c: Fix typo in comment.

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

	* remote-fileio.c (remote_fileio_mode_to_target): Use
	S_ISREG/S_ISDIR/S_ISCHR macros instead of S_IFREG/S_IFDIR/S_IFCHR.

2006-12-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* breakpoint.c (insert_bp_location): Add newline to note.

2006-12-15  Alan Modra  <amodra@bigpond.net.au>

	* spu-linux-nat.c (spu_bfd_iovec_stat): New function.
	(spu_bfd_open): Adjust bfd_openr_iovec call.

2006-12-13  Jim Blandy  <jimb@codesourcery.com>

	* value.c (value_copy): Copy the full 'location' contents, instead
	of assuming that copying ADDRESS will bring over everything in the
	union.

2006-12-13  Markus Deuling  <deuling@de.ibm.com>

	* spu-tdep.c (spu_init_vector_type): New function.
	(spu_builtin_type_vec128.): New static variable.
	(spu_register_type): Return spu_builtin_type_vec128 as default.
	(_initialize_spu_tdep): Call spu_init_vector_type.

2006-12-09  Corinna Vinschen  <vinschen@redhat.com>

	* win32-nat.c (env_sort): Remove.
	(win32_create_inferior): Remove code which creates a Windows
	environment.  Use Cygwin function call instead.  Propagate
	current environment to inferior process.

2006-12-09  Nick Roberts  <nickrob@snap.net.nz>

	* varobj.c (varobj_update): Ensure frame is restored when
	variable object is out of scope.

2006-12-08  Eli Zaretskii  <eliz@gnu.org>

	* MAINTAINERS: Clarify the meaning of an ``obvious fix'' in the
	docs.

2006-12-08  Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c (varobj_create): Don't call release_value.
	(varobj_set_value): Likewise.
	(install_new_value): Call coerce_ref and release_value
	on the value. Add asserts.

2006-12-08  Nick Roberts  <nickrob@snap.net.nz>

	* mi/mi-cmd-var.c (mi_cmd_var_update):  Fix memory leak.

2006-12-06  Jim Blandy  <jimb@codesourcery.com>

	* gdbtypes.c: Revert 2006-12-05 change, and explain why.

2006-12-06  Andrew Stubbs  <andrew.stubbs@st.com>

	* event-top.c (command_handler): On EOF, print 'quit' and run quit
	command via execute_command such that hooks and trace work.
	* utils.c (defaulted_query): On EOF, print default answer and newline.

2006-12-06  Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c (cplus_value_of_child): When accessing
	base suboject, don't specially process references.
	
2006-12-05  Adam Nemet  <anemet@caviumnetworks.com>

	* MAINTAINERS (Write After Approval): Add myself.

2006-12-05  Jim Blandy  <jimb@codesourcery.com>

	* gdbtypes.c (built_gdbtypes): Don't set builtin_type_void here.
	(_initialize_gdbtypes): Do it here, and don't swap it when the
	architecture changes.

2006-12-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* cp-valprint.c, p-valprint.c: Revert last change.

2006-12-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention MIPS remote autodetection, mips64 gdbserver,
	"set mem inaccessible-by-default", and "set breakpoint auto-hw".

2006-12-05  H.J. Lu  <hongjiu.lu@intel.com>

	* cp-valprint.c (cp_print_value_fields): Initialize tmp_obstack.
	(cp_print_value): Likewise.
	* p-valprint.c (pascal_object_print_value_fields): Likewise.
	(pascal_object_print_value): Likewise.

2006-12-05  Adam Nemet  <anemet@caviumnetworks.com>

	* target.c (debug_to_remove_watchpoint): Call
	to_remove_watchpoint.  Print target_remove_watchpoint.

2006-12-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* elfread.c (elf_symtab_read): Treat weak functions as global.

2006-11-30  Jim Blandy  <jimb@codesourcery.com>

	* ada-lang.c (value_subscript_packed): Don't bother to set the
	lvalue type of the returned value here;
	ada_value_primitive_packed_val takes care of that.

2006-11-30  Nick Roberts  <nickrob@snap.net.nz>

	* mi/mi-cmd-var.c (mi_cmd_var_list_children): Remove unused
	variable.

2006-07-29  Vladimir Prus  <vladimir@codesourcery.com>
	
	* mi/mi-cmd-var.c (print_varobj): New function.
	(mi_cmd_var_create): Use the above.
	(mi_cmd_var_list_children): Likewise.

2006-07-29  Vladimir Prus  <vladimir@codesourcery.com>

	* MAINTAINERS (Write After Approval): Add myself.

2006-11-29  Andrew Stubbs  <andrew.stubbs@st.com>

	* solib.c (solib_open): Treat bare file names as relative paths.

2006-11-29  Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c (varobj_set_value): Don't compare the old
	and the new value here.  Don't assign new value here.
	Instead, call install_new_value.

2006-11-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* regformats/reg-mips64.dat: New file.

2006-11-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (mips-tdep.o, target-descriptions.o): Update.
	* target-descriptions.c (struct property): New.
	(struct target_desc): Add properties member.
	(tdesc_property, set_tdesc_property): New.
	* target-descriptions.h (tdesc_property, set_tdesc_property):
	Declare.
	* mips-tdep.c (PROPERTY_GP32, PROPERTY_GP64): New constants.
	(struct gdbarch_tdep): Add register_size_valid_p and register_size.
	(mips_isa_regsize): Use them.
	(mips_register_g_packet_guesses): New.
	(mips_gdbarch_init): Call it.  If a target description is supplied,
	check for internal properties.  Check for register size mismatches.
	* remote.c (send_g_packet, process_g_packet): New functions, split
	out from fetch_registers_using_g.
	(fetch_registers_using_g): Use them.
	(struct remote_g_packet_guess, remote_g_packet_guess_s)
	(struct remote_g_packet_data, remote_g_packet_data_handle)
	(remote_g_packet_data_init, register_remote_g_packet_guess)
	(remote_read_description): New.
	(init_remote_ops, init_remote_async_ops): Set to_read_description.
	(_initialize_remote): Register remote_g_packet_data_handle.
	* remote.h (register_remote_g_packet_guess): Declare.

2006-11-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (SFILES): Add new and missed files.
	(target_descriptions_h): New.
	(COMMON_OBS): Add target-descriptions.o.
	(arch-utils.o, infcmd.o, remote.o, target.o): Update.
	(target-descriptions.o): New.
	* arch-utils.c (gdbarch_info_fill): Check for a target
	description.
	* target-descriptions.c, target-descriptions.h: New files.
	* gdbarch.sh: Add target_desc to info.  Declare it in gdbarch.h.
	Correct typos.
	(gdbarch_list_lookup_by_info): Check target_desc.
	* gdbarch.c, gdbarch.h: Regenerated.
	* target.c (update_current_target): Mention to_read_description.
	(target_pre_inferior): Call target_clear_description.
	(target_read_description): New.
	* target.h (struct target_ops): Add to_read_description.
	(target_read_description): New prototype.
	* infcmd.c (post_create_inferior): Call target_find_description.
	* remote.c (remote_open_1): Likewise.
	(extended_remote_create_inferior): Add a comment.
	(extended_remote_async_create_inferior): Likewise.

2006-11-29  Nick Roberts  <nickrob@snap.net.nz>

	* linux-thread-db.c: Include <signal.h>.

2006-11-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/tm-linux.h: Delete file.
	* config/alpha/alpha-linux.mt (DEPRECATED_TM_FILE): Set to tm-alpha.h.
	* config/alpha/tm-alphalinux.h: Delete file.
	* config/arm/linux.mt (DEPRECATED_TM_FILE): Set to tm-arm.h
	* config/arm/tm-linux.h: Delete file.
	* config/i386/tm-linux.h: Do not include "config/tm-linux.h".
	* config/ia64/tm-linux.h: Do not include "config/tm-linux.h".
	* config/m32r/linux.mt (DEPRECATED_TM_FILE): Remove.
	* config/mips/tm-linux.h:  Do not include "config/tm-linux.h".
	* config/pa/linux.mt (DEPRECATED_TM_FILE): Set to tm-hppa.h.
	* config/pa/tm-linux.h: Delete file.
	* config/powerpc/tm-linux.h: Do not include "config/tm-linux.h".
	* config/s390/linux.mt (DEPRECATED_TM_FILE): Remove.
	* config/sh/linux.mt (DEPRECATED_TM_FILE): Set to tm-sh.h.
	* config/sh/tm-linux.h: Delete file.
	* alpha-linux-tdep.c: Include "symtab.h".
	(alpha_linux_init_abi): Call set_gdbarch_skip_trampoline_code.
	* i386-linux-tdep.c: Include "symtab.h".
	(i386_linux_init_abi): Call set_gdbarch_skip_trampoline_code.
	* ia64-linux-tdep.c: Include "symtab.h".
	(ia64_linux_init_abi): Call set_gdbarch_skip_trampoline_code.
	* m32r-linux-tdep.c: Include "symtab.h".
	(m32r_linux_init_abi): Call set_gdbarch_skip_trampoline_code.
	* mips-linux-tdep.c: Include "symtab.h".
	(mips_linux_init_abi): Call set_gdbarch_skip_trampoline_code.
	* sh-linux-tdep.c: Include "symtab.h".
	(sh_linux_init_abi): Call set_gdbarch_skip_trampoline_code.
	* s390-tdep.c (s390_gdbarch_init): Call
	set_gdbarch_skip_trampoline_code.
	* s390-nat.c: Do not include "tm.h".
	* Makefile.in (alpha-linux-tdep.o): Add dependency on $(symtab_h).
	(i386-linux-tdep.o): Likewise.
	(ia64-linux-tdep.o): Likewise.
	(m32r-linux-tdep.o): Likewise.
	(mips-linux-tdep.o): Likewise.
	(sh-linux-tdep.o): Likewise.
	(s390-nat.o): Remove dependency on $(tm_h).

2006-11-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/nm-linux.h: Do not include <signal.h>.
	(REALTIME_LO, REALTIME_HI): Do not define.
	* signals/signals.c (REALTIME_HI): Fix off-by-one bug.

2006-11-28  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-cmd-var.c (mi_cmd_var_create): Fix cleanup
        handlers. Free expression.

2006-11-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/tm-linux.h (REALTIME_LO, REALTIME_HI): Do not define.
	* config/mips/tm-linux.h (REALTIME_LO, REALTIME_HI): Likewise.

	* config/rs6000/tm-rs6000ly.h (REALTIME_LO, REALTIME_HI): Move to ...
	* config/nm-lynx.h (REALTIME_LO, REALTIME_HI): ... here.

	* config/i386/nto.mh (NAT_FILE): Define.
	* config/i386/nto.mt (DEPRECATED_TM_FILE): Remove.
	* config/i386/tm-nto.h: Delete file.
	* config/tm-nto.h: Delete file.
	* config/nm-nto.h: New file.

	* Makefile.in (nto-tdep.o): Add dependency on $(objfiles_h).
	* nto-tdep.c: Include "objfiles.h" and <string.h>.

	* coff-solib.h (SOLIB_UNLOADED_LIBRARY_PATHNAME): Define as "".
	* xcoffread.c (read_xcoff_symtab): Initialize fcn_stab_saved.
	* config/rs6000/rs6000lynx.mt (TDEPFILES): Add xcoffread.o.

2006-11-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2-frame.c (decode_frame_entry_1): Skip unknown augmentations
	without skipping the CIE.

2006-11-28  Vladimir Prus  <vladimir@codesourcery.com>

	Fetch varobj values from memory in a single place,
	and only fetch the values that are really needed.
	* varobj.c (struct varobj): Clarify comment.
	(my_value_equal): Remove.
	(install_new_value): New function.
	(type_of_child): Remove.
	(varobj_create): Use install_new_value.
	(varobj_set_value): Use value_contents_equal, not
	my_value_equal.
	(varobj_update): Use install_new_value.
	(create_child): Likewise. Inline type_of_child here.
	(value_of_child): Don't fetch the value.
	(c_value_of_root): Likewise.
	(c_value_of_variable): Likewise.
	(type_changeable): Improve comments.

2006-11-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (struct remote_arch_state): Doc fix.
	(compare_pnums): New function.
	(init_remote_state): Only allocate packet_reg structures for raw
	registers.  Define the g/G packet format separately from creating
	packet_reg.  Don't use DEPRECATED_REGISTER_BYTE.
	(packet_reg_from_regnum, packet_reg_from_pnum): Only iterate over
	raw registers.
	(register_bytes_found): Delete.
	(fetch_register_using_p): Take a struct packet_reg.  Handle disabled
	'p' packet here.  Use packet_ok.
	(fetch_registers_using_g): New function, split out of
	remote_fetch_registers.  Check the 'g' packet more strictly.  Save
	its actual size and contents.  Eliminate BUF.  Only iterate over
	raw registers.
	(remote_fetch_registers): Use the new functions for 'p' and 'g'.
	Mark unavailable registers.
	(store_register_using_P): Likewise to fetch_register_using_p.
	(store_registers_using_G): New function, split out of
	remote_store_registers.  Only iterate over raw registers.  Don't
	use register_bytes_found.
	(remote_store_registers): Likewise to remote_fetch_registers.

2006-11-28  Pedro Alves  <pedro_alves@portugalmail.pt>

	* coffread.c (cs_to_bfd_section): New function.
	(cs_to_section): Use cs_to_bfd_section.
	(record_minimal_symbol): Take the coff_symbol* parameter instead
	of the symbol's name as a char*.
	Add 'int section' parameter. Call prim_record_minimal_symbol_and_info
	instead of prim_record_minimal_symbol_and_info.
	Change return type to struct minimal_symbol *.
	(coff_symtab_read): Adapt to new record_minimal_symbol's signature.
	Make all minimal symbol creations go through record_minimal_symbol.

2006-11-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* symtab.c (find_pc_sect_line): Do not return a line before
	the start of a symtab.

2006-11-24  Ulrich Weigand  <uweigand@de.ibm.com>

	* NEWS: SPU target is already supported in GDB 6.6.

2006-11-24  Ulrich Weigand  <uweigand@de.ibm.com>

	* Makefile.in (mips-linux-tdep.o) Add $(solib_h) dependency.
	(nto-procfs.o): Likewise.
	* mips-linux-tdep.c: Include "solib.h".
	* nto-procfs.c: Likewise.
	* config/nm-linux.h: Do not include "solib.h".
	* config/nm-nbsd.h: Likewise.
	* config/tm-linux.h: Likewise.
	* config/alpha/nm-osf.h: Likewise.
	* config/frv/tm-frv.h: Likewise.
	* config/i386/nm-fbsh.h: Likewise.
	* config/i386/nm-i386gnu.h: Likewise.
	* config/i386/nm-i386sco5.h: Likewise.
	* config/i386/nm-i386sol2.h: Likewise.
	* config/i386/nm-i386v4.h: Likewise.
	* config/i386/nm-i386v42mp.h: Likewise.
	* config/i386/tm-i386sol2.h: Likewise.
	* config/i386/tm-nto.h: Likewise.
	* config/mips/nm-irix5.h: Likewise.
	* config/mips/tm-nbsd.h: Likewise.
	* config/pa/tm-hppah.h: Likewise.
	* config/powerpc/tm-ppc-eabi.h: Likewise.
	* config/rs6000/tm-rs6000.h: Likewise.
	* config/sh/tm-nbsd.h: Likewise.
	* config/sparc/nm-sol2.h: Likewise.
	* config/sparc/tm-sol2.h: Likewise.
	* config/arm/nbsdaout.mh: Remove NAT_FILE.
	* config/i386/nbsdaout.mh: Likewise.
	* config/i386/nbsdelf.mh: Likewise.
	* config/i386/obsdaout.mh: Likewise.
	* config/m68k/nbsdaout.mh: Likewise.
	* config/m68k/obsd.mh: Likewise.
	* config/sparc/nbsdaout.mh: Likewise.
	* config/cris/cris.mt: Remove DEPRECATED_TM_FILE.
	* config/i386/linux64.mt: Likewise.
	* config/m68k/linux.mt: Likewise.
	* config/m68k/nbsd.mt: Likewise.
	* config/sparc/linux.mt: Likewise.
	* config/sparc/linux64.mt: Likewise.
	* config/vax/nbsd.mt: Likewise.

2006-11-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* NEWS: New port to Cell Broadband Engine SPU.
	* MAINTAINERS: Add myself as spu maintainer.

2006-11-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (arm-tdep.o): Update dependencies.
	* arm-tdep.c (thumb_skip_prologue): Remove.
	(thumb_analyze_prologue): New function.
	(arm_skip_prologue): Use thumb_analyze_prologue.
	(thumb_scan_prologue): Ditto.

2006-11-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* configure.tgt: Enable gdbserver for SPU target.
	* configure.ac: Build gdbserver when gdb_native is yes.
	* configure: Regenerate.
	* regformats/reg-spu.dat: New file.

2006-11-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* osabi.c (gdbarch_lookup_osabi): Do not return
	GDB_OSABI_UNINITIALIZED.

2006-11-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/powerpc/spu-linux.mh: New file.
	* config/spu/spu.mt: New file.
	* configure.ac: Provide gdb_native configuration variable.
	* configure: Regenerate.
	* configure.host: Support powerpc64 to spu 'pseudo-native' mode.
	* configure.tgt: Add "spu" target_cpu and "spu*-*-*" target.
	* Makefile.in (spu_tdep_h): New variable.
	(ALLDEPFILES): Add spu-linux-nat.c and spu-tdep.c
	(spu-linux-nat.o, spu-tdep.o): Add dependencies.
	* spu-linux-nat.c: New file.
	* spu-tdep.c: New file.
	* spu-tdep.h: New file.

2006-11-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* findvar.c (address_from_register): New function.
	* value.h (address_from_register): Add prototype.
	* dwarf2loc.c (dwarf_expr_read_reg): Use address_from_register.

2006-11-22  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.c: Include "memattr.h".
	(automatic_hardware_breakpoints): New.
	(show_automatic_hardware_breakpoints): New.
	(insert_bp_location): Automatically use
	hardware breakpoints.
	(_initialize_breakpoint): Register the "auto-hw"
	variable.
	* Makefile.in (breakpoint.o): Update dependencies.

2006-11-21  Vladimir Prus  <vladimir@codesourcery.com>

	* memattr.h (enum mem_access_mode): New value
	MEM_NONE.
	* memattr.c (unknown_mem_attrib): New.
	(inaccessible_by_default): New.
	(show_inaccessible_by_default): New.
	(lookup_mem_region): Check inaccessible_by_default.
	(dummy_cmd): New.
	(mem_set_cmdlist, mem_show_cmdlist): New.
	(_initialize_mem): Register new "set" and "show"
	commands.
	* target.c (memory_xfer_partial): If memory type
	is MEM_NONE, return an error.
	Clip to region size when calling to_xfer_partial.
	If upper limit of memory range is 0, don't clip
	anything.

2006-11-20  Joel Brobecker  <brobecker@adacore.com>

	* README: Remove obsolete information.

2006-11-20  Andrew Cagney  <cagney@redhat.com>

	* linux-nat.h: Refer to GNU/Linux or Linux kernel.
	* linux-nat.c (lin_lwp_attach_lwp, linux_nat_thread_alive): Ditto.
	* infcmd.c (attach_command): Ditto.
	* hppa-linux-tdep.c (hppa_linux_regset): Ditto.
	* mn10300-linux-tdep.c: Ditto.  Update copyright year.
	* frv-linux-tdep.c: Ditto.  Update copyright year.

2006-11-19  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Add a new section for changes since GDB 6.6. Rename
	the section "Changes since GDB 6.5" into "Changes in GDB 6.6".
	Move a couple of items into the new section as they did not
	make it to 6.6.

2006-11-19  Joel Brobecker  <brobecker@adacore.com>

	GDB 6.6 branch created (branch timestamp: 2006-11-15 12:00)
	* version.in: Bump version to 6.6.50.20061119-cvs.

2006-11-18  Pedro Alves  <pedro_alves@portugalmail.pt>

	* prologue-value.c (clear_entries): Fix memory leak.

2006-11-18  Pedro Alves  <pedro_alves@portugalmail.pt>

	* parse.c (write_exp_msymbol): Check SYMBOL_BFD_SECTION before
	dereferencing it.

2006-11-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* utils.c (string_to_core_addr): Use error instead of
	internal_error.
	* mi/mi-main.c (mi_execute_command): Check for a NULL message.

2006-11-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention QPassSignals.

2006-11-16  Maxim Grigoriev  <maxim2405@gmail.com>

	* MAINTAINERS (Responsible Maintainers): Add myself for Xtensa.
	(Write After Approval): Add myself.

2006-11-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (PACKET_QPassSignals): New.
	(last_pass_packet, remote_pass_signals): New.
	(remote_protocol_features): Add QPassSignals.
	(remote_query_supported): Correct an infinite loop.
	(remote_open_1): Reset last_pass_packet.
	(remote_resume): Call remote_pass_signals.
	(_initialize_remote): Register "set remote pass-signals".

2006-11-14  Maxim Grigoriev  <maxim@tensilica.com>

	* NEWS: New port to Xtensa.
	* Makefile.in: Add dependencies for Xtensa files.
	* configure.tgt (xtensa*, xtensa*-*-elf*): New.
	* configure.host (xtensa*-*-elf*): New.
	* config/xtensa/xtensa.mt: New file.
	* xtensa-config.c: New file.
	* xtensa-tdep.h: New file.
	* xtensa-tdep.c: New file.

2006-11-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (set_remote_cmd): Call help_list.
	(show_remote_cmd): Skip legacy aliases.  Handle non-show_cmd
	entries.  Add missed cleanup.
	* cli/cli-setshow.c (cmd_show_list): Handle non-show_cmd entries.

2006-11-13  Paul Gilliam  <pgilliam@us.ibm.com>

	* ppc-linux-tdep.c (ppc_linux_sigtramp_cache): Don't futz with
	the floating point registers if there aren't any.

2006-11-12  Ben Harris  <bjh21@NetBSD.org>

	* arm-tdep.c (arm_unwind_pc): Use arm_addr_bits_remove.

2006-11-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* frame.c (frame_register_unwind_location): New function.
	(get_prev_frame_1): Check for UNWIND_NO_SAVED_PC.
	(frame_stop_reason_string): Handle UNWIND_NO_SAVED_PC.
	* frame.h (enum unwind_stop_reason): Add UNWIND_NO_SAVED_PC.

2006-11-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* arch-utils.c (target_byte_order_user): Renamed from
	target_byte_order.
	(target_byte_order_auto, selected_byte_order): Removed.
	(show_endian): Check target_byte_order_user.
	(set_endian): Always update the architecture.  Set
	target_byte_order_user after success.
	(target_architecture_auto): Removed.
	(target_architecture_user): New.
	(selected_architecture_name, show_architecture): Check it.
	(set_architecture): Set target_architecture_user after success.
	(gdbarch_from_bfd): Check the argument.
	(default_byte_order): New.
	(initialize_current_architecture): Set the global default
	architecture and endianness.
	(gdbarch_info_fill): Remove GDBARCH argument.  Do not check the
	previous architecture.  Use exec_bfd, global selected architecture
	and endianness, and global defaults.
	* arch-utils.h (selected_byte_order): Remove prototype.
	(gdbarch_info_fill): Update.
	* exec.c (exec_file_attach): Update the architecture after removing
	the current file.
	* gdbarch.sh: Update comments.
	(find_arch_by_info): Remove OLD_GDBARCH argument.  Update call to
	gdbarch_info_fill.
	(gdbarch_find_by_info): Update call to find_arch_by_info.
	* gdbarch.h, gdbarch.c: Regenerated.
	* remote-sim.c (gdbsim_open): Use TARGET_BYTE_ORDER.

2006-11-09  Joel Brobecker  <brobecker@adacore.com>

	* sparc-tdep.c (sparc_fetch_instruction): Read instruction
	using read_memory_nobpt.

2006-11-06  Jim Blandy  <jimb@codesourcery.com>

	* dwarf2loc.c (dwarf_expr_read_reg): Use frame_register_read
	instead of frame_register.  Doc fix.

2006-11-04  Vladimir Prus  <vladimir@codesourcery.com>

	* serial.c (serial_open): Strip leading spaces from program 
	name when opening pipe.

2006-11-03  Jim Blandy  <jimb@codesourcery.com>

         * dwarf2loc.c (dwarf_expr_read_reg): Use frame_unwind_register
         instead of frame_register.  Doc fix.

2006-11-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (struct dwarf2_per_cu_data): Update comment.
	(load_full_comp_unit): Take OBJFILE argument and use it.
	(dwarf2_build_psymtabs_hard): Skip partial units.
	(process_queue): Pass OBJFILE to load_full_comp_unit.  Check
	type_hash for read in CUs.  Test psymtab for NULL.

2006-11-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-tdep.c (arm_gdbarch_init): Handle EF_ARM_EABI_VER5.

2006-10-31  Vladimir Prus  <vladimir@codesourcery.com>
	
	* commands.h (enum command_class): Use different
	values for class_deprecated and class_run.
	* cli/cli-decode.c: (print_help_for_command): New.
	(apropos_cmd): Use the above.
	(help_list): Mention 'help all'
	and 'apropos' when printing top-level help.
	(help_all): Print the class name before printing
	commands in that class.  Don't print prefix commands
	here, instead pass recurse flag to help_cmd_list.
	Print list of unclassified commands at the end.
	(help_cmd_list): When recursing, use all_commands class.
	Recurse only if the class of the command matches.

2006-10-27  Andreas Schwab  <schwab@suse.de>

	* gdbcmd.h (detachlist): Declare.
	* infcmd.c (_initialize_infcmd): Define "detach" as prefix
	command.
	* linux-fork.c (_initialize_linux_fork): Rename
	"detach-checkpoint" to "detach checkpoint" and "detach-fork" to
	"detach fork".
	* cli/cli-cmds.c (detachlist): Define.
	(init_cmd_lists): Initialize it.
	* cli/cli-cmds.h (detachlist): Declare.

2006-10-25  Jim Blandy  <jimb@codesourcery.com>

	* p-valprint.c (pascal_object_print_value): Add 'static' keyword
	to function definition, to match declaration earlier in file.

2006-10-21  Paul Brook  <paul@codesourcery.com>

	* remote.c (remote_fetch_registers): Fix error message.

2006-10-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* gcore.c (MAX_COPY_BYTES): Define.
	(gcore_copy_callback): Use it to limit allocation.

2006-10-19  Ulrich Weigand  <uweigand@de.ibm.com>

	* linux-thread-db.c (check_for_thread_db): Don't attempt to use
	thread_db for remote targets.
	* remote.c (remote_new_objfile): Always call predecessor on
	new_objfile event chain.

2006-10-19  Joel Brobecker  <brobecker@adacore.com>

	* solib.c (libpthread_solib_p): New function.
	(solib_add): Always read the symbols from the libpthread library.

2006-10-19  Andrew Stubbs  <andrew.stubbs@st.com>

	* breakpoint.c (describe_other_breakpoints): Add thread parameter.
	Annotate display with thread number where appropriate.
	(create_breakpoints): Add thread parameter to call to
	describe_other_breakpoints.

2006-10-18  Jim Blandy  <jimb@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* utils.c (query): Use defaulted_query.
	(defaulted_query): Handle having no default answer.  Print out
	messages even if we have no terminal.  Prevent memory corruption.

2006-10-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* frame.c (struct frame_info): Add stop_reason.
	(get_prev_frame_1): Set stop_reason.  Don't call error for
	stop reasons.
	(get_frame_unwind_stop_reason, frame_stop_reason_string): New.
	* frame.h (enum unwind_stop_reason): New.
	(get_frame_unwind_stop_reason, frame_stop_reason_string): New
	prototypes.
	* stack.c (frame_info): Print the stop reason.
	(backtrace_command_1): Print the stop reason for errors.

2006-10-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* inferior.h (start_remote): Update prototype.
	* infrun.c (start_remote): Take FROM_TTY.  Call
	post_create_inferior.
	* monitor.c (monitor_open): Update call to start_remote.
	* remote-sds.c (sds_start_remote, sds_open): Likewise.
	* remote.c (remote_start_remote): Likewise.
	(remote_start_remote_dummy): Removed.
	(remote_open): Update call to remote_start_remote.  Do not call
	post_create_inferior here.

2006-10-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* solib-svr4.c (debug_loader_offset_p, debug_loader_offset)
	(debug_loader_name, svr4_default_sos): New.
	(svr4_current_sos): Call svr4_default_sos.
	(enable_break): Add a comment about AT_BASE.  Set the new
	variables and retry solib_add.
	(svr4_clear_solib): Clear the new variables.

2006-10-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention support for TLS without debugging information.

2006-10-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote-sim.c (gdbsim_kill): Call target_mourn_inferior.
	(gdbsim_load): Don't bother to adjust inferior_ptid here.
	(gdbsim_create_inferior): Mark the simulator as running.
	(gdbsim_open): Don't bother fetching registers.  Mark
	the target as not running.
	(gdbsim_xfer): When the program is not running, pass memory
	requests down.
	(gdbsim_mourn_inferior): Mark the target as not running.
	* target.c (target_mark_running, target_mark_exited): New.
	* target.h (target_has_execution): Update the comment.
	(target_mark_running, target_mark_exited): New prototypes.

2006-10-17  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.c (free_valchain): Minor reformatting.

2006-10-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* solib-svr4.c (LM_ADDR_CHECK): Suggest shared library mismatch.

2006-10-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (symtab.o): Update.
	* symtab.h (matching_bfd_sections): New prototype.
	* symtab.c (matching_bfd_sections): New.
	(find_pc_sect_psymbol, find_pc_sect_symtab): Use it.
	* minsyms.c (lookup_minimal_symbol_by_pc_section): Likewise.
	* printcmd.c (sym_info): Ignore separate debug objfiles.

2006-10-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_pid_to_str): Capitalize "Thread".

2006-10-15  Daniel Jacobowitz  <dan@codesourcery.com>

	PR remote/2158
	* remote.c (remote_write_bytes): Throttle packet alignment
	for small packets.

2006-10-16  Jeff Johnston  <jjohnstn@redhat.com>
 
	* linux-thread-db.c (thread_db_wait): Don't bother continuing if
	the wait result indicates the program terminated with a
	signal (from gdb-6.3-ia64-sigill-20051115.patch, a patch for
	Fedora Core 5).
	
2006-10-11  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (dwarf_decode_lines): Call record_line upon
	encountering a different subfile.

2006-10-11  Denis Pilat  <denis.pilat@st.com>

	* tui/tui-source.c (tui_set_source_content): handle source 
	files that contain non unix end-of-line.
	
2006-10-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* ser-mingw.c (free_pipe_state, pipe_wait_handle): Update
	for changes to pipe_select_thread.
	(pipe_done_wait_handle): New.
	(_initialize_ser_windows): Reference it.

2006-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (expprint.o, parse.o, target.o): Update.
	* dwarf2loc.c (dwarf_expr_tls_address): Move body to
	target_translate_tls_address.  Call it.
	* eval.c (evaluate_subexp_standard): Handle UNOP_MEMVAL_TLS.
	* expprint.c (print_subexp_standard): Likewise.
	(op_name_standard, dump_subexp_body_standard): Likewise.
	* expression.h (enum exp_opcode): Add UNOP_MEMVAL_TLS.
	(union exp_element): Add objfile.
	* parse.c (write_exp_elt_objfile): New function.
	(msym_tls_symbol_type): New.
	(write_exp_msymbol): Handle TLS.
	(operator_length_standard): Handle UNOP_MEMVAL_TLS.
	(build_parse): Initialize msym_tls_symbol_type.
	* parser-defs.h (write_exp_elt_objfile): New prototype.
	* target.c (target_translate_tls_address): New.
	* target.h (target_translate_tls_address): Add prototype.

2006-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib.c (solib_open): Handle an empty solib_absolute_prefix like a
	missing one.

2006-10-09  Daniel Jacobowitz  <dan@codesourcery.com>

	* solib.c (solib_read_symbols): Stop if the file was not found.

2006-10-09  Paul Pluzhnikov  <ppluzhnikov@charter.net>

	PR c++/2116
	* valops.c (find_overload_match): Check for a NULL name.

2006-10-06 Joel Brobecker  <brobecker@adacore.com>

	Fix PR symtab/2018
	* dwarf2read.c (read_array_type): Set the type name if the name
	attribute is present.

2006-10-05  Joel Brobecker  <brobecker@adacore.com>

        * blockframe.c (block_innermost_frame): Rewrite frame search logic.

2006-10-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (gdb_expat_h): New.
	(xml_support_h): Add gdb_expat.h dependency.
	(memory-map.o, xml-support.o): Likewise.
	* gdb_expat.h: New file.
	* xml-support.h: Include it.
	* memory-map.c, xml-support.c: Likewise.  Remove XML_STATUS_OK
	definitions.

2006-10-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (get_remote_state_raw): Renamed from get_remote_state.
	(get_remote_state): New function.
	(init_remote_state, _initialize_remote): Use get_remote_state_raw.

2006-10-04  Fred Fish  <fnf@specifix.com>

	* vec.c: Include defs.h first.  This pulls in config.h which can
	affect other includes.

2006-10-04  Joel Brobecker  <brobecker@adacore.com>

	* somread.c (som_symtab_read): Avoid using alloca for potentially
	large buffers.

2006-10-04  Daniel Jacobowitz  <dan@codesourcery.com>

	* arch-utils.h (gdbarch_info_fill): Remove duplicate prototype.

2006-10-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* memory-map.c (XML_STATUS_OK, XML_STATUS_ERROR): Provide default
	definitions.
	* xml-support.c (XML_STATUS_OK, XML_STATUS_ERROR): Likewise.

2006-09-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_write_bytes_aux): Doc fix.

2006-09-21  Vladimir Prus  <vladimir@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (SFILES): Add target-memory.c.
	(COMMON_OBS): Add target-memory.o.
	* memattr.c (lookup_mem_region): Adjust handling for
	the top of memory.  Improve comments.
	* remote.c (packet_check_result): New function, split out
	from packet_ok.  Recognize "E." as an error prefix.
	(packet_ok): Use it.
	(remote_write_bytes_aux): New function, renamed from
	remote_write_bytes.  Take packet header, packet format,
	and length flag as arguments.
	(remote_write_bytes): Rewrite to use remote_write_bytes_aux.
	(remote_send_printf, restore_remote_timeout)
	(remote_flash_timeout, remote_flash_erase, remote_flash_write)
	(remote_flash_done): New.
	(remote_xfer_partial): Handle flash writes.
	(init_remote_ops, init_remote_async_ops): Set to_flash_erase
	and to_flash_done.
	* symfile.c (struct load_section_data): Include a pointer to
	the cumulative stats and a request queue.  Move most members
	to other types.
	(struct load_progress_data, struct load_progress_section_data): New
	types.
	(load_progress): Handle a NULL baton and zero bytes.  Update for
	type changes.
	(load_section_callback): Create memory write requests instead of
	writing to memory.  Don't print the progress message here.
	(clear_memory_write_data): New function.
	(generic_load): Use target_write_memory_blocks.
	* target-memory.c: New file.
	* target.c (update_current_target): Mention new uninherited methods.
	(memory_xfer_partial): Issue an error for flash writes.
	(target_flash_erase, target_flash_done): New functions.
	(target_write_with_progress): Call the progress callback at the
	start also.
	* target.h (enum target_object): Add TARGET_OBJECT_FLASH.
	(target_write_with_progress): Update comment.
	(struct target_ops): Add to_flash_erase and to_flash_done.
	(target_flash_erase, target_flash_done, struct memory_write_request)
	(memory_write_request_s, enum flash_preserve_mode)
	(target_write_memory_blocks): New, including a vector type
	for memory_write_request_s.

2006-09-21  Vladimir Prus  <vladimir@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>

	* Makefile.in (SFILES): Add memory-map.c and xml-support.c.
	(memory_map_h, xml_support_h): New.
	(target_h): Add vec_h dependency.
	(COMMON_OBS): Add memory-map.o and xml-support.o.
	(memory-map.o, xml-support.o): New rules.
	(remote.o): Update.
	* exceptions.h (enum errors): Add XML_PARSE_ERROR.
	* infcmd.c (run_command_1, attach_command): Call target_pre_inferior.
	* memattr.c (default_mem_attrib): Initialize blocksize.
	(target_mem_region_list, mem_use_target)
	(target_mem_regions_valid, mem_region_cmp, mem_region_init)
	(require_user_regions, require_target_regions)
	(invalidate_target_mem_regions): New.
	(create_mem_region): Use mem_region_init.
	(mem_clear): Move higher.	
	(lookup_mem_region): Use require_target_regions.
	(mem_command): Implement "mem auto".
	(mem_info_command): Handle target-supplied regions and flash
	attributes.
	(mem_enable_command, mem_disable_command, mem_delete_command): Use
	require_user_regions.
	(_initialize_mem): Mention "mem auto" in help.
	* memattr.h (enum mem_access_mode): Add MEM_FLASH.
	(struct mem_attrib): Add blocksize.
	(invalidate_target_mem_regions, mem_region_init, mem_region_cmp): New
	prototypes.
	* remote.c: Include "memory-map.h".
	(PACKET_qXfer_memory_map): New enum value.
	(remote_protocol_features): Add qXfer:memory-map:read.
	(remote_xfer_partial): Handle memory maps.
	(remote_memory_map): New.
	(init_remote_ops, init_remote_async_ops): Set to_memory_map.
	(_initialize_remote): Register qXfer:memory-map:read.
	* target.c (update_current_target): Mention to_memory_map.
	(target_memory_map, target_pre_inferior): New.
	(target_preopen): Call target_pre_inferior.
	* target.h: Include "vec.h".
	(enum target_object): Add TARGET_OBJECT_MEMORY_MAP.
	(struct target_ops): Add to_memory_map.
	(target_memory_map, target_pre_inferior): New prototypes.
	* memory-map.c, memory-map.h, xml-support.c, xml-support.h: New files.

2006-09-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* ada-lex.l (HIGH_BYTE_POSN, is_digit_in_base, digit_to_int)
	(strtoulst): Moved to ...
	* utils.c (HIGH_BYTE_POSN, is_digit_in_base, digit_to_int)
	(strtoulst): ... here.  Enhanced to behave more similarly
	to strtoul.
	* defs.h (strtoulst): New prototype.

2006-09-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (memattr_h, memattr.o): Update.
	* memattr.h: Include "vec.h".
	(struct mem_region): Remove linked list pointer.
	(mem_region_s): New typedef and corresponding vector.
	* memattr.c: Include "vec.h".
	(mem_region_chain): Delete.
	(mem_region_list): New vector pointer.
	(mem_region_lessthan): New function.
	(create_mem_region): Remove unused return value.  Use vector
	operations.  Remove linear search.
	(delete_mem_region): Delete.
	(lookup_mem_region): Use vector operations.  Add a FIXME.
	(mem_info_command): Update to work with vectors.
	(mem_enable, mem_enable_command, mem_disable, mem_disable_command)
	(mem_free, mem_delete): Likewise.

2006-09-21  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.h: New file.
	* vec.c: New file.
	* Makefile.in (SFILES): Add vec.c.
	(vec_h): New.
	(COMMON_OBJS): Add vec.o.
	(vec.o): New target.

2006-09-20  Daniel Jacobowitz  <dan@codesourcery.com>

	PR remote/2154
	* remote.c (remote_thread_alive): Remove local buf.
	(remote_get_threadinfo): Remove local threadinfo_pkt.
	(remote_get_threadlist): Remove unused threadlist_packet.
	(remote_current_thread): Remove local buf.
	(remote_threads_info): Set bufp after getpkt.
	(remote_threads_extra_info): Remove local bufp.
	(get_offsets): Set buf after getpkt.
	(remote_check_symbols): Set reply after getpkt.
	(remote_vcont_probe): Set buf after getpkt.
	(remote_resume): Set buf after set_thread.
	(remote_wait, remote_async_wait): Set buf after getpkt.
	(fetch_register_using_p): Set buf after remote_send.
	(remote_fetch_registers): Likewise.
	(store_register_using_P): Don't use buf after remote_send.
	(check_binary_download, remote_write_bytes)
	(remote_read_bytes, remote_rcmd): Remove local buf.

2006-09-17  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-cmd-stack.c (mi_cmd_stack_list_args): Don't emit error
	if high requested frame number is larger than number of available 
	frames.
	
2006-09-16  Nick Roberts  <nickrob@snap.net.nz>

	* linux-nat.c (linux_test_for_tracefork): Don't leave zombie
	process.

2006-09-16  Andrzej Zaborowski  <balrog@zabor.org>

	* interps.c (interpreter_exec_cmd): Restore interpreter properties.

2006-09-10  Daniel Jacobowitz  <dan@codesourcery.com>

	PR threads/2149
	* infrun.c (handle_inferior_event): Context switch after fork
	and exec events.

2006-09-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* infcall.c (call_function_by_hand): Check for function pointer
	types.

2006-09-10  Andreas Schwab  <schwab@suse.de>

	* m68k-tdep.c (m68k_analyze_register_saves): Fix decoding of
	`move.l %R,-(%sp)'.

2006-09-07  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Don't emit 
	error if high requested frame number is larger then number 
	of available frames.
	
2006-09-07  Joel Brobecker  <brobecker@adacore.com>

	From Stephan Springl  <springl-gdb@bfw-online.de>
	* fork-child.c (fork_inferior): Fix typo.

2006-08-28  DJ Delorie  <dj@redhat.com>

	* m32c-tdep.c (m32c_decode_srcdest4): Initialize fields in sd
	that may not be initialized elsewhere.
	(m32c_decode_sd23): Likewise.

2006-08-25  Daniel Jacobowitz  <dan@codesourcery.com>

	* buildsym.c (finish_block): Don't adjust the boundaries of
	nested functions.

2006-08-24  Andreas Schwab  <schwab@suse.de>

	* symfile.c (add_symbol_file_command): Fix off-by-one when
	extending sect_opts.

2006-08-24  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el: Refer to next release of Emacs as 22.1.

2006-08-23  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el (gdbmi): Remove gdb-force-update, initialize
	other variables.
	(gdbmi-send): Ensure any text properties can be removed.
	(gdbmi-prompt1): Update to gdb-ui.el
	(gud-gdbmi-marker-filter): Defer setting of gud-running.
	Keep gdb-done-regexp for partial-output-buffer.
	(gdb-stack-list-frames-handler): Add face to function names.

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

	* valprint.c (val_print_type_code_flags): Fix GNU coding standards
	violation.

	* alpha-tdep.c (alpha_register_to_value, alpha_value_to_register)
	(alpha_push_dummy_call, alpha_extract_return_value)
	(alpha_breakpoint_from_pc, alpha_read_insn)
	(alpha_get_longjmp_target, alpha_supply_int_regs)
	(alpha_fill_int_regs, alpha_supply_fp_regs, alpha_fill_fp_regs)
	(alpha_next_pc): Use gdb_byte instead of (unsigned) char where
	appropriate.

	* sparc64-tdep.c (sparc64_pstate_type, sparc64_fsr_type)
	(sparc64_fprs_type): New variables.
	(sparc64_init_types): New function.:
	(sparc64_register_info): Use appropriate flag types for %fsr and
	%fprs.
	(sparc64_pseudo_register_info): Use appropriate type for %pstate.
	(_initialize_sparc64_tdep): New function.

	* valprint.c (val_print_type_code_flags): Fix for bitfields larger
	than 32 bits.

	* gdbtypes.c (init_flags_type): Set all fields to zero instead of
	just the first one.

2006-08-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (INTERNAL_CPPFLAGS): New.
	(INTERNAL_CFLAGS_BASE): Use it.

2006-08-22  Michael Snyder  <Michael.Snyder@PalmSource.com>

	* MAINTAINERS: Update my email address.

2006-08-19  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (amd64_linux_tdep_h): New.
	(amd64-linux-nat.o, amd64-linux-tdep.o): Update.
	* amd64-linux-nat.c (amd64_linux_gregset64_reg_offset): Add
	ORIG_RAX.
	(_initialize_amd64_linux_nat): Set amd64_native_gregset64_num_regs.
	* amd64-linux-tdep.c (amd64_linux_register_name)
	(amd64_linux_register_type, amd64_linux_register_reggroup_p)
	(amd64_linux_write_pc): New.
	(amd64_linux_init_abi): Use them, and update num_regs.
	* amd64-linux-tdep.h: New file.
	* amd64-tdep.c (amd64_register_name, amd64_register_type): Make
	public.
	* amd64-tdep.h (amd64_register_name, amd64_register_type): New
	prototypes.

	* regformats/reg-x86-64-linux.dat: New file.

2006-08-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* infrun.c (handle_inferior_event): Check the current frame ID
	before unwinding to the previous frame.

2006-08-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (quirk_gcc_member_function_pointer): Add GCC PR
	number in a comment.

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

	* sparc-nat.c (sparc_xfer_wcookie): Signal EOF.  Tweak comment.

2006-08-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (quirk_gcc_member_function_pointer): New.
	(read_structure_type): Call it.

2006-08-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention "set trust-readonly-sections" fix.

2006-08-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c, target.c: Strip trailing whitespace.

2006-08-15  Daniel Jacobowitz  <dan@codesourcery.com>

	PR remote/1966
	* dcache.c (dcache_write_line): Use target_write.
	(dcache_read_line): Use target_read.
	* mi/mi-main.c (mi_cmd_data_read_memory): Use target_read.
	* symfile.c (struct load_section_data): Add new per-section
	members.
	(load_progress): New function.
	(load_section_callback): Pass load_progress to the new
	target_write_with_progress.
	* target.c (current_xfer_partial, memory_xfer_partial): New.
	(target_xfer_partial): New prototype.
	(target_xfer_memory, target_xfer_partial_p, xfer_using_stratum)
	(do_xfer_memory, target_xfer_memory_partial)
	(target_read_memory_partial, target_write_memory_partial): Delete.
	(trust_readonly): Move higher in the file.
	(update_current_target): Use current_xer_partial.
	(target_xfer_partial): Use memory_xfer_partial.  Handle
	TARGET_OBJECT_RAW_MEMORY specially.
	(target_read_memory): Use target_read.
	(target_write_memory): Use target_write.
	(default_xfer_partial): Call to_xfer_partial directly.
	(target_write_with_progress): New function, based on target_write.
	(target_write): Call it.
	* target.h (enum target_object): Add TARGET_OBJECT_RAW_MEMORY.
	(target_write_with_progress): New prototype.
	(do_xfer_memory, target_read_memory_partial)
	(target_write_memory_partial): Delete prototypes.

2006-08-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_write_bytes): Take a const buffer argument.
	Do the checks from remote_xfer_memory.
	(remote_read_bytes): Do the checks from remote_xfer_memory.
	(remote_xfer_memory): Remove checks pushed into lower level
	functions.
	(remote_xfer_partial): Call remote_write_bytes and remote_read_bytes
	directly.
	* remote.h (remote_write_bytes): Update prototype.

2006-08-11  Andrew Stubbs  <andrew.stubbs@st.com>

	* NEWS: Add 'set trace-commands' command.

2006-08-10  Andrew Stubbs  <andrew.stubbs@st.com>

	* cli/cli-script.c (execute_user_command): Update command_next_depth
	on user-command call.

2006-08-09  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Add entry for new substitute-path commands.

2006-08-08  Joel Brobecker  <brobecker@adacore.com>

	* source.c: #include gdb_assert.h.
	(substitute_path_rule): New struct.
	(substitute_path_rules): New static global variable.
	(substitute_path_rule_matches): New function.
	(get_substitute_path_rule): New function.
	(rewrite_source_path): New function.
	(find_and_open_source): Add source path rewriting support.
	(strip_trailing_directory_separator): New function.
	(find_substitute_path_rule): New function.
	(add_substitute_path_rule): New function.
	(delete_substitute_path_rule): New function.
	(show_substitute_path_command): New function.
	(unset_substitute_path_command): New function.
	(set_substitute_path_command): New function.
	(_initialize_source): Add new substitute-path commands.
	* Makefile.in (source.o): Add dependency on gdb_assert.h.

2006-08-08  Joel Brobecker  <brobecker@adacore.com>

	* i386-tdep.c (i386_follow_jump): Use read_memory_nobpt to read
	instructions.
	(i386_analyze_struct_return): Likewise.
	(i386_skip_probe): Likewise.
	(i386_match_insn): Likewise.
	(i386_analyze_frame_setup): Likewise.
	(i386_analyze_register_saves): Likewise.
	(i386_skip_prologue): Likewise.

2006-08-08  Joel Brobecker  <brobecker@adacore.com>

	* gdbcore.h (read_memory_nobpt): New function name instead of
	deprecated_read_memory_nobpt.
	* breakpoint.c (read_memory_nobpt): New function name instead
	of deprecated_read_memory_nobpt.
	Adjust calls to old deprecated_read_memory_nobpt accordingly.
	* alpha-tdep.c: Adjust calls to deprecated_read_memory_nobpt
	accordingly.
	* alphanbsd-tdep.c: Likewise.
	* frame.c: Likewise.
	* frv-tdep.c: Likewise.
	* hppa-linux-tdep.c: Likewise.
	* hppa-tdep.c: Likewise.
	* i386-linux-nat.c: Likewise.
	* m68klinux-tdep.c: Likewise.
	* mips-tdep.c: Likewise.
	* s390-tdep.c: Likewise.

2006-08-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure.ac: Check for expat.
	* acinclude.m4: Include AC_LIB_HAVE_LINKFLAGS dependencies.
	* Makefile.in (LIBEXPAT): New.
	(CLIBS): Include $(LIBEXPAT).
	* README: Mention expat.
	* configure, config.in: Regenerated.

2006-08-08  Joel Sherrill <joel.sherrill@oarcorp.com>

	* config/sparc/embed.mt: New file.
	* configure.tgt (sparc-*-rtems*): Use embed.mt.

2006-08-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (objfiles.o, symfile.o): Update.
	* objfiles.c: Include "expression.h" and "parser-defs.h".
	(free_objfile): Clear global blocks.
	* symfile.c: Include "parser-defs.h".
	(clear_symtab_users): Clear global blocks.

2006-08-08  Thiemo Seufer  <ths@mips.com>

	* breakpoint.c (update_breakpoints_after_exec): Fix type mismatch.

2006-08-08  Vladimir Prus  <vladimir@codesourcery.com>

	* symfile.c (download_write_size): Remove.
	(show_download_write_size): Remove.
	(load_section_callback): Don't use download_write_size.
	(_initialize_symfile): Don't register download_write_size.
	* NEWS: Mention 'download-write-size' removal.

2006-08-06  Daniel Jacobowitz  <dan@codesourcery.com>

	* expprint.c (print_subexp_standard, dump_subexp_body_standard): Add
	support for member pointers.

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

	* arm-tdep.h: Add multiple inclusion protection.
	(struct gdbarch): Add forward declaration.
	(armobsd_regset_from_core_section): New prototype.
	* armbsd-tdep.c: New file.
	* armobsd-tdep.c: Include "gdb_string.h".
	(armobsd_init_abi): Set regset_from_core_section.
	(armobsd_core_osabi_sniffer): New function.
	(_initialize_armobsd_tdep): Register armobsd_core_osabi_sniffer.
	* Makefile.in (ALLDEPFILES): Add armbsd-tdep.c.
	(armbsd-tdep.o): New dependency.
	(armnbsd-tdep.o): Update dependencies.
	* config/arm/obsd.mt (TDEPFILES): Add armbsd-tdep.o and corelow.o.

2006-08-02  Thiemo Seufer  <ths@mips.com>

	* linux-thread-db.c (thread_db_get_thread_local_address): Fix type
	mismatch.
	* tui/tui-stack.c (tui_show_frame_info): Likewise.

2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* c-exp.y (type): Remove incorrect pointer to member case.
	* objc-exp.y (type): Likewise.
	* p-exp.y (type): Likewise.

2006-08-01  Mark Kettenis  <kettenis@gnu.org>

	* arm-tdep.h (enum struct_return): New.
	(struct gdbarch_tdep): Add struct_return member.
	* arm-tdep.c (arm_return_value): Return
	RETURN_VALUE_STRUCT_CONVENTION for aggregates when the ABI uses
	pcc_struct_return.
	(arm_gdbarch_init): Default to reg_struct_return.
	* armobsd-tdep.c (armobsd_init_abi): Set pcc_struct_return.

2006-07-31  Mark Kettenis  <kettenis@gnu.org>

	* alpha-tdep.h (ALPHA_S0_REGNUM): New define.
	* alphabsd-nat.c: Include <sys/types.h>, <sys/signal.h>,
	<machine/pcb.h> and "bsd-kvm.h".
	(alphabsd_supply_pcb): New function.
	(_initialize_alphabsd_nat): Enable libkvm interface.
	* Makefile.in (alphabsd-nat.o): Update dependencies.
	* config/alpha/fbsd.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.
	* config/alpha/nbsd.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.

2006-07-31  Fred Fish  <fnf@specifix.com>

	* arm-tdep.c (arm_make_prologue_cache): Use FRAME_OBSTACK_ZALLOC
	instead of calling frame_obstack_zalloc directly.
	(arm_make_stub_cache): Ditto.
	* frame-unwind.h: Ditto.
	* frame.c (create_new_frame): Ditto.

2006-07-27  Bob Wilson  <bob.wilson@acm.org>

	* MAINTAINERS (Write After Approval): Add myself.

2006-07-27  Bob Wilson  <bob.wilson@acm.org>

	* main.c (captured_main): Print a newline after calling
	print_gdb_version instead of waiting until after the symbol file
	has been read.  Adjust error_pre_print, quit_pre_print, and
	warning_pre_print values.

2006-07-27  Roger Sayle  <roger@eyesopen.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* irix5-nat.c (fetch_core_registers): Simplify and correct logic.

2006-07-27  Daniel Jacobowitz  <dan@codesourcery.com>

	* target.h (target_read_stralloc): New prototype.
	* target.c (target_read_alloc_1): Renamed from target_read_alloc.
	Take new PADDING argument.
	(target_read_alloc): Use it.
	(target_read_stralloc): New function.

2006-07-26  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_protocol_features): Correct qPart to qXfer.

2006-07-25  Daniel Jacobowitz  <dan@codesourcery.com>

	* eval.c (evaluate_subexp_for_address): Don't incorrectly discard
	calls to C++ operator*.

2006-07-24  Roger Sayle  <roger@eyesopen.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* solib-irix.c (gdb_int32_bytes): Use gdb_byte instead of char.
	(gdb_int64_bytes): Likewise.
	(fetch_lm_info): Use .b fields of gdb_int32_bytes and gdb_int64_bytes
	as first argument to extract_unsigned_integer to silence compiler
	warnings.

2006-07-24  Frederic Riss  <frederic.riss@st.com>

	* dwarf2read.c (struct dwarf2_per_objfile): Add has_section_at_zero 
	field.
	(dwarf2_locate_sections): Initialize 
	dwarf2_per_objfile->has_section_at_zero.
	(dwarf2_get_pc_bounds): Use dwarf2_per_objfile->has_section_at_zero 
	instead of HAS_RELOC test.
	(read_partial_die): Ditto.

2006-07-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* corefile.c (reopen_exec_file): Only check for an open exec file.
	Use exec_file_attach.
	* exec.c (exec_open): Make static.
	(exec_file_command): Don't use target_preopen.  Query directly about
	changing the file.
	* gdbcore.h (exec_open): Remove prototype.

2006-07-24  Frederic Riss  <frederic.riss@st.com>

	* regcache.c (struct regcache): Make register_valid_p a signed char 
	array.

2006-07-24  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-thread-db.c (thread_db_wait): Remove libthread_db
	after exec events.

2006-07-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention Windows cross debugging support.

2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-nat.c (linux_nat_add_target): Remove extern.
	* linux-nat.h (thread_db_init): New prototype.

2006-07-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure.tgt: Build gdbserver for Cygwin and mingw32.

2006-07-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/i386/cygwin.mt (DEPRECATED_TM_FILE): Delete.
	* config/i386/nm-cygwin.h: Add contents of tm-cygwin.h.
	* config/i386/tm-cygwin.h: Delete file.

2006-07-22  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* infrun.c (handle_inferior_event): Typo.

2006-07-21  Andrew Stubbs  <andrew.stubbs@st.com>

	* cli/cli-cmds.c (source_verbose, trace_commands): New variables.
	(source_script): New function.
	(source_verbose_cleanup): New function.
	(source_command): Move old contents to source_script.
	Make function static. Parse -v option and call source_script.
	(init_cli_cmds): Update source command help.
	Add 'set trace-commands' command.
	* cli/cli-script.c (command_next_depth): New static variable.
	(suppress_next_print_command_trace): New static variable.
	(reset_command_nest_depth): New function.
	(print_command_trace): New function.
	(execute_control_command): Split the continue_control and break_control
	cases, add calls to print_command_trace and count the nest depth.
	(while_command): Set suppress_next_print_command_trace.
	(if_command): Likewise.
	* top.c (execute_command): Call print_command_trace.
	* cli/cli-cmds.h (source_verbose, trace_commands): New extern variables.
	(source_command): Change to source_script.
	* main.c (captued_main): Use source_script instead of source_command.
	* top.h (source_command): Change to source_script.
	* event-top.c (display_gdb_prompt): Call reset_command_nest_depth.
	* cli/cli-script.h (print_command_trace): Export.
	(reset_command_nest_depth): Likewise.

2006-07-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* eval.c (evaluate_struct_tuple): Skip static fields.

2006-07-19  Mark Kettenis  <kettenis@gnu.org>

	* alphaobsd-tdep.c: Include "obsd-tdep.h".
	(alphaobsd_init_abi): Set skip_solib_resolver.
	* Makefile.in (alphaobsd-tdep.o): Update dependencies.
	* config/alpha/obsd.mt (TDEPFILES): Add obsd-tdep.o.

	* arm-tdep.c (arm_gdbarch_init): Get default floating-point model
	from ELF flags for binaries produced by the GNU toolchain.

2006-07-18  Nathan Sidwell  <nathan@codesourcery.com>

	* remote-fileio.c (remote_fileio_func_rename): Reorder to process
	input buffer before reading memory.
	(remote_fileio_func_stat): Likewise.

2006-07-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* blockframe.c (find_pc_partial_function): Use the minimal symbol
	size to control the cache entry, if available.
	* minsyms.c (lookup_minimal_symbol_by_pc_section): Handle minimal
	symbols with zero and non-zero sizes differently.

2006-07-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-thread-db.c (td_thr_getfpregs_p, td_thr_getgregs_p)
	(td_thr_setfpregs_p, td_thr_setgregs_p, thread_db_get_info)
	(thread_db_fetch_registers, thread_db_store_registers)
	(thread_db_thread_alive, thread_db_state_str): Delete.
	(thread_db_load): Don't look up regset functions.
	(thread_db_pid_to_str): Simplify.
	(thread_db_extra_thread_info): New.
	(init_thread_db_ops): Do not set to_fetch_registers,
	to_store_registers, or to_thread_alive.  Set to_extra_thread_info.
	* Makefile.in: Remove linux-thread-db.o rule.

2006-07-18  Mark Kettenis  <kettenis@gnu.org>

	* armobsd-tdep.c: Include "trad-frame.h" and "tramp-frame.h".
	(armobsd_sigframe_init): New function.
	(armobsd_sigframe): New variable.
	(armobsd_init_abi): Prepend armobsd_sigframe unwinder.
	* Makefile.in (armobsd-tdep.o): Update dependencies.

2006-07-18  Denis PILAT  <denis.pilat@st.com>

	* monitor.c: Remove unused prototypes.

2006-07-18  Vladimir Prus  <vladimir@codesourcery.com>

	* target.c (tcomplain): Mark with ATTR_NORETURN.

	* defs.h (print_transfer_performance): Improve comments.

2006-07-17  Mark Kettenis  <kettenis@gnu.org>

	* printcmd.c: Coding style fixes: add missing spaces in comments
	and wrapping long lines.
	(delete_display, enable_display_command, disable_display_command)
	(printf_command, display_info, undisplay_command, free_display)
	(display_command, x_command, address_info, set_command)
	(inspect_command, call_command, print_command, print_command_1)
	(validate_format, print_formatted, decode_format, sym_format):
	Remove prototypes.
	(x_command): Make static.
	(printf_command): Convert error into internal consistency check.
	(address_info): Avoid assignment within function call.
	(printf_command): Avoid redundant cast.
	* tracepoint.c (x_command): Remove extern prototype.

	* armobsd-tdep.c (armobsd_init_abi): Set skip_solib_resolver.
	* Makefile.in (armobsd-tdep.o): Update dependencies.
	* config/arm/obsd.mt (TDEPFILES): Add obsd-tdep.o.

2006-07-16  Mark Kettenis  <kettenis@gnu.org>

	* armobsd-tdep.c: New file.
	* Makefile.in (ALLDEPFILES): Add armobsd-tdep.c.
	(armobsd-tdep.o): New dependency.
	* config/arm/obsd.mt: New file.
	* configure.tgt: (arm*-*-openbsd*): Set gdb_target to obsd.

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

	* arm-tdep.c (arm_saved_pc_after_call): Delete.
	(arm_gdbarch_init): Do not set deprecated_saved_pc_after_call.

2006-07-16  Alfred M. Szmidt  <ams@gnu.org>
	
	* gnu-nat.c: Undefine _process_user_ before including
	<hurd/process_request.h>.
	(gnu_resume): Supply missing argument to error().
	(gnu_read_inferior): Add extra parenthesis around arithmetic
	expression to silence warnings from GCC.
	(gnu_write_inferior): Likewise.
	(gnu_xfer_memory): Changed type of MYADDR to `gdb_byte *'.

2006-07-16  Mark Kettenis  <kettenis@gnu.org>

	* armnbsd-tdep.c (arm_netbsd_elf_init_abi): Use
	svr4_ilp_fetch_link_map_offsets.

2006-07-15  Mark Kettenis  <kettenis@gnu.org>

	* armnbsd-tdep.c: Don't include "nbsd-tdep.h".
	* config/arm/nbsd.mt (TDEPFILES): Remove nbsd-tdep.o.
	(DEPRECATED_TM_FILE): Remove.
	* Makefile.in (armnbsd-tdep.o): Update dependencies.
	
2006-07-14  Joel Brobecker  <brobecker@adacore.com>

	* PROBLEMS: Document threads/2137.

2006-07-13  Mark Kettenis  <kettenis@gnu.org>

	* config/alpha/tm-nbsd.h: Remove file.
	* config/alpha/nbsd.mt (DEPRECATED_TM_FILE): Remove.

2006-07-13  Corinna Vinschen  <vinschen@redhat.com>

	* mips-tdep.c (mips_integer_to_address): Simplify be calling
	extract_signed_integer directly.  Fix comment.

2006-07-13  Corinna Vinschen  <vinschen@redhat.com>

	* m32c-tdep.c (m32c_banked_register): New function.
	(m32c_banked_read): Use m32c_banked_register function to evaluate
	real register number.
	(m32c_banked_write): Ditto.
	(m32c_virtual_frame_pointer): New function.
	(m32c_gdbarch_init): Add set_gdbarch_virtual_frame_pointer call.

2006-07-13  Nathan Sidwell  <nathan@codesourcery.com>

	* m68k-tdep.c (m68k_frame_align): New.
	(m68k_gdbarch_init): Set frame_align here.

2006-07-13  Denis PILAT  <denis.pilat@st.com>

	* interps.c (interpreter_completer): Allocate one more item to the
	'matches' list and set them all to 0 with a xcalloc.

2006-07-13  Nick Roberts  <nickrob@snap.net.nz>

	* annotate.c (annotate_frame_begin): Re-instate frame-begin
	annotation for level 3 annotations.

2006-07-13  Paul N. Hilfinger  <Hilfinger@adacore.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* infcall.c (value_arg_coerce): Use value_cast_pointers for
	references.  Avoid value_cast to a reference type.  Don't silently
	convert pointers to references.
	* valops.c (value_cast_pointers): New, based on value_cast.
	(value_cast): Use it.  Reject reference types.
	(value_ref): New.
	(typecmp): Use it.
	* value.h (value_cast_pointers, value_ref): New prototypes.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (unpack_varlen_hex): Correct type of retval.
	Reported by Zhigang Gong <zhigang.gong@gmail.com>.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (dwarf2_symbol_mark_computed): Handle corrupted
	or missing location list information.  Suggested by Jan
	Kratochvil <lace@jankratochvil.net>.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (arm_linux_tdep_h): New variable.
	(arm-linux-nat.o, arm-linux-tdep.o): Update.
	* arm-linux-nat.c: Include "arm-linux-tdep.h".
	(typeNone, typeSingle, typeDouble, typeExtended)
	(FPWORDS, ARM_CPSR_REGNUM, FPREG, FPA11)
	(fetch_nwfpe_single, fetch_nwfpe_double, fetch_nwfpe_none)
	(fetch_nwfpe_extended, fetch_nwfpe_register, store_nwfpe_single)
	(store_nwfpe_double, store_nwfpe_extended, store_nwfpe_register):
	Delete.
	(fetch_fpregister, fetch_fpregs, store_fpregister, store_fpregs):
	Use gdb_byte buffers, NWFPE_FPSR_OFFSET, supply_nwfpe_register,
	and collect_nwfpe_register.
	(fill_gregset, supply_gregset, fill_fpregset, supply_fpregset): Use
	new regset functions.
	* arm-linux-tdep.c: Include "regset.h" and "arm-linux-tdep.h".
	(arm_apcs_32): New declaration.
	(ARM_LINUX_SIZEOF_GREGSET, arm_linux_supply_gregset)
	(arm_linux_collect_gregset, typeNone, typeSingle, typeDouble)
	(typeExtended, supply_nwfpe_register, collect_nwfpe_register)
	(arm_linux_supply_nwfpe, arm_linux_collect_nwfpe)
	(arm_linux_regset_from_core_section): New.
	(arm_linux_init_abi): Register arm_linux_regset_from_core_section.
	* arm-linux-tdep.h: New file.
	* arm-tdep.h (struct regset): Declare.
	(struct gdbarch_tdep): Add gregset, fpregset members.
	* config/arm/linux.mh (NATDEPFILES): Remove corelow.o and
	core-regset.o.
	* config/arm/linux.mt (TDEPFILES): Add corelow.o.

2006-07-12  Jan Kratochvil  <lace@jankratochvil.net>

	* infrun.c (handle_inferior_event): Fixed typos in printf.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>

	* remote.c (REMOTE_ALIGN_WRITES): New.
	(remote_write_bytes): Align large write packets.  Remove unused
	payload_start variable.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (PACKET_qXfer_auxv): New, renamed from PACKET_qPart_auxv.
	(remote_supported_packet): Remove #if 0.
	(remote_protocol_features): Add qPart:auxv:read.
	(remote_unescape_input): New function.
	(readchar): Don't mask off the high bit.
	(read_frame): Use fputstrn_filtered for packet data.
	(getpkt_sane): Return the number of bytes read or -1.  Use
	fputstrn_unfiltered.
	(remote_read_qxfer): New.
	(remote_xfer_partial): Use it for TARGET_OBJECT_AUXV.
	(_initialize_remote): Update packet registration.
	* defs.h (fputstrn_filtered): New prototype.
	* utils.c (fputstrn_filtered): New.
	* NEWS: Mention qXfer.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* target.c (target_read): Stop if target_read_partial returns 0
	when some bytes have already been read.
	(target_write): Likewise for target_write_partial.
	(target_read_partial, target_write_partial): Make static.
	(target_read_alloc): New.
	* target.h: Doc fixes.
	(target_read_partial, target_write_partial): Delete prototypes.
	(target_read_alloc): New prototype.

	* auxv.c (target_auxv_read): Delete.
	(target_auxv_search, fprint_target_auxv): Use target_read_alloc.
	* auxv.h (target_auxv_read): Delete prototype.
	* avr-tdep.c (avr_io_reg_read_command): Use target_read_alloc.
	* ia64-tdep.c (getunwind_table, get_kernel_table): Likewise.
	* linux-nat.c (linux_nat_make_corefile_notes): Likewise.
	* procfs.c (procfs_make_note_section): Likewise.
	* remote.c (remote_xfer_partial): Don't loop here.
	* sparc-tdep.c (sparc_fetch_wcookie): Use target_read.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-linux-tdep.c: Doc fixes.
	(ARM_SIGCONTEXT_R0, ARM_UCONTEXT_SIGCONTEXT)
	(ARM_OLD_RT_SIGFRAME_SIGINFO, ARM_OLD_RT_SIGFRAME_UCONTEXT)
	(ARM_NEW_RT_SIGFRAME_UCONTEXT, ARM_NEW_SIGFRAME_MAGIC): New
	constants.
	(arm_linux_sigreturn_init, arm_linux_rt_sigreturn_init): Support
	the new signal frame layouts.

2006-07-12  Mike Frysinger  <vapier@gentoo.org>:
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (init.c) [LANG, LC_ALL]: Set to `c'.
	* gdb_indent.sh, gdb_mbuild.sh, observer.sh: Likewise.
	* gdbarch.sh: Correct comment.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* MAINTAINERS: Add Alfred Szmidt for the Hurd.

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

	* alpha-tdep.h (ALPHA_INSN_SIZE): New define.

2006-07-10  Mark Kettenis  <kettenis@gnu.org>

	* alphaobsd-tdep.c: New file.
	* alphanbsd-tdep.c (_initialize_alphanbsd_tdep): Do not register a
	handler for GDB_OSABI_OPENBSD_ELF.
	* Makefile.in (ALLDEPFILES): Add alphaobsd-tdep.c.
	(alphaobsd-tdep.o): New target.
	* config/alpha/obsd.mt: New file.
	* configure.tgt (alpha*-*-openbsd*): Set gdb_target to obsd.

2006-07-10  Richard Henderson  <rth@redhat.com>

	* alpha-tdep.h (struct gdbarch_tdep): Add return_in_memory.
	* alpha-tdep.c (alpha_register_byte): Remove.
	(alpha_extract_struct_value_address): Remove.
	(alpha_return_value): New.
	(alpha_return_in_memory_always): New.
	(alpha_gdbarch_init): Set tdep->return_in_memory.  Don't call
	set_gdbarch_deprecated_register_byte.  Do call set_gdbarch_return_value
	instead of set_gdbarch_deprecated_use_struct_convention,
	set_gdbarch_extract_return_value, set_gdbarch_store_return_value,
	or set_gdbarch_deprecated_extract_struct_value_address.
	* alphafbsd-tdep.c (alphafbsd_return_in_memory): Rename from
	alphafbsd_use_struct_convention, remove gcc_p argument.
	(alphafbsd_init_abi): Set tdep->return_in_memory instead of
	set_gdbarch_deprecated_use_struct_convention.

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

	* alphabsd-tdep.h (alphanbsd_regset_from_core_section): New
	prototype.
	* alphanbsd-tdep.c (alphanbsd_regset_from_core_section): Handle
	a.out-style core file format here.  Make global.
	(alphanbsd_regset_from_core_section): Remove.
	(alphanbsd_sigtramp_offset): Make static.
	(alphanbsd_aout_init_abi): Remove.
	(alphanbsd_core_osabi_sniffer): Return GDB_OSABI_NETBSD_ELF for
	a.out style core files.
	(_initialize_alphanbsd_tdep): Do not register a handler for
	GDB_OSABI_NETBSD_AOUT.

	* alphabsd-tdep.h: Tweak comments.
	(SIZEOF_STRUCT_REG, SIZEOF_STRUCT_FPREG): Remove.
	* alphanbsd-tdep.c: Reorder includes.  Include "regset.h".
	(ALPHANBSD_SIZEOF_GREGS, ALPHANBSD_SIZEOF_FPREGS): New defines.
	(alphanbsd_supply_fpregset, alphanbsd_supply_gregset)
	(alphanbsd_aout_supply_gregset): New functions.
	(alphanbsd_gregset, alphanbsd_fpregset, alphanbsd_aout_gregset):
	New variables.
	(alphanbsd_regset_from_core_section)
	(alphanbsd_aout_regset_from_core_section): New functions.
	(fetch_core_registers, fetch_elfcore_registers): Remove functions.
	(alphanbsd_core_fns, alphanbsd_elf_fns): Remove variables.
	(alphanbsd_init_abi): Set regset_from_core_section.
	(alphanbsd_aout_init_abi, alphanbsd_core_osabi_sniffer): New
	functions.
	(_initialize_alphanbsd_tdep): Register NetBSD core file sniffer.
	Use alphanbsd_aout_init_abi whre appropriate.  Don't call
	deprecated_add_core_fns.
	* Makefile.in (alphanbsd-tdep.o): Update dependencies.

	* alphabsd-tdep.c (alphabsd_supply_reg, alphabsd_fill_reg)
	(alphabsd_supply_fpreg, alphabsd_fill_fpreg): Add missing spaces.

	* alphanbsd-tdep.c (alphanbsd_init_abi): Use
	svr4_lp64_fetch_link_map_offsets instead of
	nbsd_lp64_solib_svr4_fetch_link_map_offsets.

2006-07-06  Andrew Stubbs  <andrew.stubbs@st.com>

	* parse.c (write_exp_elt_opcode, write_exp_elt_sym, write_exp_elt_block
	write_exp_elt_longcst, write_exp_elt_dblcst, write_exp_elt_type,
	write_exp_elt_intern): Zero initialize tmp.

2006-07-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_xfer_partial): Remove KOD support.
	* target.h (enum target_object): Remove TARGET_OBJECT_KOD.
	* MAINTAINERS: Move Kernel Object Display entry to past maintainers.
	* Makefile.in (SFILES, kod_h, COMMON_OBS, kod.o, kod-cisco.o):
	Remove KOD support.
	* mi/mi-cmds.c (mi_cmds): Remove dummy KOD commands.
	* NEWS: Mention KOD.
	* kod.h, kod.c, kod-cisco.c: Delete files.

2006-07-04  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (init_remote_state): Use xrealloc instead of xmalloc.

2006-07-03  Nathan J. Williams  <nathanw@wasabisystems.com>

	* bsd-kvm.c (bsd_kvm_open): Open the KVM interface read-write if
	write_files is set.

2006-06-24  Eli Zaretskii  <eliz@gnu.org>

	* defs.h (DIRNAME_SEPARATOR) [!__CYGWIN__ && _WIN32]: Define to `;'.

2006-06-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-tdep.c (arm_register_type): Use unsigned types for registers.
	Add special types for sp and pc.
	* Makefile.in (arm-tdep.o): Update.

2006-06-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_escape_output): New function.
	(remote_write_bytes): Use remote_escape_output.

2006-06-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention qSupported.
	* remote.c (struct remote_state): Add explicit_packet_size.
	(get_remote_packet_size): Check explicit_packet_size.
	(get_memory_packet_size): Likewise.
	(PACKET_qSupported): New enum value.
	(struct protocol_feature, remote_supported_packet)
	(remote_packet_size, remote_protocol_features)
	(remote_query_supported): New.
	(remote_open_1): Reset explicit_packet_size.  Call
	remote_query_supported.
	(_initialize_remote): Register qSupported.

2006-06-21  Andrew Stubbs  <andrew.stubbs@st.com>

        * cli/cli-script.c (realloc_body_list): Zero new parts of body_list.

2006-06-20  Joel Brobecker  <brobecker@adacore.com>

	* GDB 6.5 released from GDB 6.5 branch.

2006-06-19  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_eabi_push_dummy_call): For 32 bit ABI, to
	decide how many registers it takes to pass a floating point
	argument, what matters is the size of a floating point register
	(not the size of a general purpose register).
	(mips_o32_push_dummy_call): Ditto.

2006-06-19  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>

	* configure.tgt: Add gdbserver support for m32r-linux.

2006-06-18  Mark Kettenis  <kettenis@gnu.org>

	* m68klinux-tdep.c (m68k_linux_init_abi): Fix typo in comment.

2006-06-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* infrun.c (insert_step_resume_breakpoint_at_caller): New function,
	based on insert_step_resume_breakpoint_at_frame.
	(handle_inferior_event): Update comments.  Use
	insert_step_resume_breakpoint_at_caller.
	(insert_step_resume_breakpoint_at_frame): Revise comments.

2006-06-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (read_unspecified_type): New function.
	(read_type_die): Handle DW_TAG_unspecified_type.
	(Committed by Julian Brown.)

2006-06-13  Daniel Jacobowitz  <dan@codesourcery.com>

	* symfile.c (load_command): Check for a changed executable before
	"load".

2006-06-13  Fred Fish  <fnf@specifix.com>

	* mips-tdep.c (mips_find_long_section): New function.
	(mips_gdbarch_init): Use it to set long and pointer sizes.

2006-06-13  Nathan Sidwell  <nathan@codesourcery.com>

	* remote-file.io.c (remote_fileio_func_system): Treat zero length
	string as NULL.  Adjust for NULL pointer argument.
	* doc/gdb.texinfo (system): Document behaviour with zero length
	string.

2006-06-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (set_remote_protocol_packet_cmd)
	(show_remote_protocol_packet_cmd): New prototypes.
	(remote_set_cmdlist, remote_show_cmdlist): Move higher.
	(struct packet_config): Make name and title const.
	(add_packet_config_cmd): Remove unnecessary arguments.
	(_initialize_remote): Update calls.

2006-06-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* mingw-hdep.c (gdb_select): Always check for NULL fd sets
	before calling FD_ISSET.  Correct check for exceptfds which
	previously tested writefds.

2006-06-09  Daniel Jacobowitz  <dan@codesourcery.com>
	    Julian Brown  <julian@codesourcery.com>

	* dwarf2read.c (partial_read_comp_unit_head): Accept version 3.

2006-06-09  Julian Brown  <julian@codesourcery.com>

	* MAINTAINERS (Write After Approval): Add myself.

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

	* mips-tdep.c (fp_register_arg_p): Recognize floating point typedefs.

2006-06-08  Nathan Sidwell  <nathan@codesourcery.com>

	* m68k-tdep.c (m68k_dwarf_reg_to_regnum): New.
	(m68k_gdbarch_init): Set it for dwarf & dwarf2 reg number
	conversion. Use M68K_NUM_REGS for number of regs.

	* remote-fileio.c (remote_fileio_reset): New.
	* remote-fileio.h (remote_fileio_reset): Prototype.
	* remote.c (extended_remote_restart, remote_open_1): Call it.

	* remote.c (remote_open_1): Do preopen tasks before
	irreversably destroying state.

2006-06-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (struct remote_state): New type, only containing
	buf and buf_size.
	(remote_state): New variable.
	(get_remote_state): New function.
	(struct remote_arch_state): Renamed from struct remote_state.
	Removed buf and buf_size.
	(get_remote_arch_state): Renamed from get_remote_state.  All
	necessary callers updated to call this function.
	(init_remote_state): Initialize the architecture-specific state.
	Update the target-specific state if necessary.
	(get_remote_packet_size): New function.  All previous references
	changed to use this accessor function.
	(packet_reg_from_regnum, packet_reg_from_pnum): Take a
	remote_arch_state instead of a remote_state.  All callers changed.
	(_initialize_remote): Initialize the packet buffer here.

2006-06-06  Nathan Sidwell  <nathan@codesourcery.com>

	* remote.c (remote_insert_watchpoint): Return -1, rather than
	fatal error if packet is disabled.
	(remote_remove_watchpoint, remote_insert_hw_breakpoint,
	remote_remove_hw_breakpoint): Likewise.

2006-06-02  Nick Roberts  <nickrob@snap.net.nz>

	* breakpoint.c (print_it_typical): Use EXEC_ASYNC_LOCATION_REACHED.

2006-05-31  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c: Comment tweaks.

2006-05-31  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (top_builddir): Update comments.
	(INTL_DIR, INTL_SRC): Delete.
	(INTL, INTL_DEPS, INTL_CFLAGS): Update.
	* acinclude.m4: Include new gettext macros.
	* configure.ac: Use ZW_GNU_GETTEXT_SISTER_DIR.  Remove copied
	CATALOGS code.
	* aclocal.m4, configure: Regenerated.

2006-05-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (arm-linux-nat.o): Update dependencies.
	* arm-linux-nat.c: Include "gdb_proc_service.h".
	(PTRACE_GET_THREAD_AREA): Define.
	(ps_get_thread_area): New function.

2006-05-28  Alexandre Oliva  <aoliva@redhat.com>

	* dwarf2-frame.h (enum dwarf2_frame_reg_rule): Add
	DWARF2_FRAME_REG_SAVED_VAL_OFFSET and
	DWARF2_FRAME_REG_SAVED_VAL_EXP.
	* dwarf2-frame.c (execute_cfa_program): Handle val_offset,
	val_offset_sf and val_expression.
	(dwarf2_frame_prev_register): Handle the new reg rules.
	(dwarf2_frame_this_id): Use pc instead of function entry point.

2006-05-28  Alexandre Oliva  <aoliva@redhat.com>

	* dwarf2-frame.c (struct dwarf2_cie): Add signal_frame field.
	(dwarf2_frame_sniffer): Use it.
	(decode_frame_entry_1): Set it according to augmentation "S".

2006-05-27  Joel Brobecker  <brobecker@adacore.com>

	From Peter Schauer <peterschauer@gmx.net>
	* m2-typeprint.c (m2_record_fields): Move variable declarations
	to the begining of the block.
        
2006-05-23  Mark Mitchell  <mark@codesourcery.com>

	* mt-tdep.c (mt_register_name): Correct out-of-range logic to
	include additional registers. 

	* mt-tdep.c (mt_gdb_regnums): Add ZI2, ZQ2, Ichannel2,
	Iscramb2, Qscramb2, Qchannel2.
	(mt_register_name): Likewise.
	(mt_copro_register_type): Describe ZI2 and ZQ2.

	* mt-tdep.c (mt_gdb_regnums): Define
	MT_COPRO_PSEUDOREG_MAC_REGNUM.
	(mt_register_name): Use it.
	(mt_copro_register_type): Likewise.
	(mt_register_type): Likewise.
	(mt_pseudo_register_read): Likewise.  Read the MAC register, not
	the coprocessor register.
	(mt_pseudo_register_write): Likewise.

2006-05-21  Christopher Faylor  <cgf@timesys.com>

	* win32-nat.c (cygwin_exceptions): New variable.
	(handle_exception): Treat a cygwin exception like a normal exception if
	cygwin_exceptions is true.
	(_initialize_win32_nat): Add "set cygwin-exceptions" handler.

2006-05-20  Gaius Mulley  <gaius@glam.ac.uk>

	* NEWS: (Improved Modula-2 language support): New section.

2006-05-19  Joel Brobecker  <brobecker@adacore.com>

	* configure: Regenerate using proper version of autoconf.

2006-05-19  Fred Fish  <fnf@specifix.com>

	* Makefile.in: Fix spelling of 'explicitly' and 'explicit'.
	* dwarfread.c: Fix spelling of 'unexpected'.
	* mips-tdep.c: Fix spelling of 'possible' and 'Determine'.
	* stack.c: Fix spelling of 'RETURN_VALUE'.
	
2006-05-18  Paul Gilliam  <pgilliam@us.ibm.com

	* solib-svr4.c (enable_break): Breakup a long line into 3 shorter ones.

2006-05-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2-frame.c: Include "value.h".
	(read_reg): Use unpack_long and register_type.
	* Makefile.in (dwarf2-frame.o): Update.

2006-05-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote-rdp.c: Deleted.
	* NEWS: Mention removal of remote-rdp.c.

	* Makefile.in (ALLDEPFILES): Remove remote-rdp.c.
	(remote-rdp.o): Delete.
	* README: Remove description of remote-rdp.c.
	* arm-tdep.c (arm_breakpoint_from_pc): Remove obsolete comment.
	* config/arm/embed.mt (TDEPFILES): Remove remote-rdp.o.

2006-05-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* ser-e7kpc.c: Include <time.h> if it is available.

2006-05-16  Joel Brobecker  <brobecker@adacore.com>

	* version.in (version.in): Bump version number to 6.5.50 now
	that the gdb-6.5 branch has been created.
	* NEWS: Create a new section for changes that are included
	since gdb-6.5. Name the "since gdb-6.4" section as the "in gdb-6.5"
	section.

2006-05-16  Jim Blandy  <jimb@codesourcery.com>

	* MAINTAINERS (Authorized Committers): Gaius Mulley has accepted
	the Global Maintainers' invitation to be an authorized committer
	for the Modula-2 support.

2006-05-15  Mark Kettenis  <kettenis@gnu.org>

	* ppcobsd-nat.c: Include "gdb_assert.h".
	[PT_GETFPREGS] (getfpregs_supplies): New function.
	(ppcobsd_fetch_registers, ppcobsd_fetch_registers): Hanlde OS
	versions that have PT_GETFPREGS.
	(_initialize_ppcobsd_nat) [PT_GETFPREGS]: Initialize
	ppcobsd_fpreg_offsets.
	* ppcobsd-tdep.h (ppcobsd_fpreg_offsets, ppcobsd_fpregset):
	Declare.
	* ppcobsd-tdep.c (ppcobsd_fpreg_offsets, ppcobsd_fpregset): New
	variables.
	(_initialize_ppcobsd_tdep): Initialize ppcobsd_fpreg_offsets.
	* Makefile.in (ppcobsd-nat.o): Update dependencies.

2006-05-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure.ac: Use GCC_HEADER_STDINT.
	* acinclude.m4: Include stdint.m4.
	* Makefile.in (gdb_stdint_h): Define.
	(distclean): Remove gdb_stdint.h.
	(Makefile, stamp-h): Update rules to generate only the correct
	files.
	(gdb_stdint.h, stamp-int): New rules.
	* config.in, configure: Regenerated.

2006-05-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* valprint.c: Include "exceptions.h".
	(val_print): If something goes wrong while printing, supply an
	error message.

2006-05-15  Peter O'Gorman  <gdb-patches@mlists.thewrittenword.com>

	* source.c (get_current_source_symtab_and_line)
	(set_current_source_symtab_and_line): Use { 0 }.
	* cli/cli-cmds.c (list_command): Likewise.

2006-05-14  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el (gdbmi-send): Correct regexp for repeat commands.
	(gdbmi): Use new variable name gdb-pc-address.
	(gdbmi-frame-handler):  Use new variable name gdb-pc-address.
	Check that a match has been found.

2006-05-13  Gaius Mulley  <gaius@glam.ac.uk>

	* m2-lang.h: Added function extern prototypes for
	m2_is_long_set and get_long_set_bounds.
	* m2-typeprint.c: Complete replacement.
	(m2_print_type): Walk the Modula-2 type tree.
	(m2_type_name): New function.
	(m2_range): New function.
	(m2_typedef): New function.
	(m2_array): New function.
	(m2_pointer): New function.
	(m2_ref): New function.
	(m2_unknown): New function.
	(m2_union): New function.
	(m2_procedure): New function.
	(m2_print_bounds): New function.
	(m2_short_set): New function.
	(m2_is_long_set): New function.
	(m2_get_discrete_bounds): New function.
	(m2_is_long_set_of_type): New function.
	(m2_long_set): New function.
	(m2_record_fields): New function.
	(m2_enum): New function.
	* dwarf2read.c: Modified.
	(read_set_type): New function.
	(process_die): Call read_set_type.
	(read_base_type): Modifed.
	(set_cu_language): Added Modula-2 case clause.
	* m2-valprint.c: Complete replacement.
	(print_function_pointer_address): New function.
	(get_long_set_bounds): New function.
	(m2_print_long_set): New function.
	(print_unpacked_pointer): New function.
	(print_variable_at_address): New function.
	(m2_val_print): Replaced.
	* gdb/MAINTAINERS (Write After Approval): Added
	Gaius Mulley  <gaius@glam.ac.uk>

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

	* ppcnbsd-tdep.h: Update copyright year.  Include <stddef.h>
	(ppcnbsd_supply_reg, ppcnbsd_fill_reg, ppcnbsd_supply_fpreg)
	(ppcnbsd_fill_fpreg): Remove prototypes.
	(struct regset): Add forward declaration.
	(ppcnbsd_gregset, ppcnbsd_fpregset): Extern declarations.
	* ppcnbsd-tdep.c: Update copyright year.  Include "gdbtypes.h",
	"regset.h" and "gdb_string.h".  Don't include "breakpoint.h",
	"value.h", target.h and nbsd-tdep.h".  Reorder includes.
	(REG_FIXREG_OFFSET, REG_LR_OFFSET, REG_CR_OFFSET, REG_XER_OFFSET)
	(REG_CTR_OFFSET, REG_PC_OFFSET, SIZEOF_STRUCT_REG)
	(FPREG_FPR_OFFSET, FPREG_FPSCR_OFFSET, SIZEOF_STRUCT_FPREG):
	Remove macros.
	(ppcnbsd_supply_reg, ppcnbsd_fill_reg, ppcnbsd_supply_fpreg)
	(ppcnbsd_fill_fpreg): Remove functions.
	(fetch_core_registers, fetch_elfcore_registers): Remove functions.
	(ppcnbsd_core_fns, ppcnbsd_elfcore_fns): Remove variables.
	(ppcnbsd_reg_offsets): New variable.
	(ppcnbsd_gregset, ppcnbsd_fpregset): New variables.
	(ppcnbsd_sigtramp_cache_init): Deal with new signal trampoline
	introduced in NetBSD 2.0.
	(ppcnbsd_sigtramp): Provide complete signal trampoline.
	(ppcnbsd2_sigtramp): New variable.
	(ppcnbsd_init_abi): Set svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets.  Set regset_from_core_section.
	Add ppcnbs2_sigtramp unwinder.
	(_initialize_ppcnbsd_tdep): Don't use deprecated_add_core_fns.
	Initialize ppcnbsd_reg_offsets.
	* ppcnbsd-nat.c: Update copyright year.  Reorder includes.
	(getregs_supplies): Use regnum instead of regno.
	(getfpregs_supplies): Likewise.
	(ppcnbsd_fetch_inferior_registers): Likewise.  Call
	ppc_supply_gregset and ppc_suppply_fpregset instead of
	ppcnbsd_supply_reg and ppcnbsd_supply_fpreg
	(ppcnbsd_store_inferior_registers): Likewise.  Call
	ppc_collect_gregset and ppc_collect_fpregset instead of
	ppcnbsd_fill_reg and ppcnbsd_fill_fpreg.
	(ppcnbsd_supply_pcb): Use `gdb_byte *' instead of `char *'.
	(_initialize_ppcnbsd_nat): Add some whitespace.
	* Makefile.in (ppcnbsd-nat.o, ppcnbsd-tdep.o): Update dependencies.
	* config/powerpc/nbsd.mh (NATDEPFILES): Remove infptrace.o.
	(NAT_FILE): Remove.
	* config/powerpc/nbsd.mt (TDEPFILES): Remove nbsd-tdep.o.

2006-05-11  Alfred M. Szmidt  <ams@gnu.org>

	* gnu-nat.c (inf_validate_procs): Don't use lvalue in assignments.

2006-05-11  Fred Fish  <fnf@specifix.com>

	* symtab.c (skip_prologue_using_sal): Handle single line functions
	like "foo(){}", which may optimize down to a single return inst.

2006-05-10  Steve Ellcey  <sje@cup.hp.com>

	* hppa-hpux-tdep.c (initialize_hp_cxx_exception_support): Remove
	message.

2006-05-09  Andreas Schwab  <schwab@suse.de>

	* dwarf2-frame.c (struct dwarf2_fde): Add eh_frame_p.
	(execute_cfa_program): Add parameter eh_frame_p.  Call
	dwarf2_frame_eh_frame_regnum when true.
	(dwarf2_frame_cache): Pass eh_frame_p from fde to
	execute_cfa_program.
	(decode_frame_entry_1): Call dwarf2_frame_eh_frame_regnum when
	processing .eh_frame.  Copy eh_frame_p to the new fde.
	(struct dwarf2_frame_ops): Add eh_frame_regnum.
	(dwarf2_frame_set_eh_frame_regnum): Define.
	(dwarf2_frame_eh_frame_regnum): Define.

	* dwarf2-frame.h (dwarf2_frame_set_eh_frame_regnum): Declare.
	(dwarf2_frame_eh_frame_regnum): Declare.

2006-05-06  David S. Miller  <davem@sunset.davemloft.net>

	* linux-nat.c (linux_nat_do_thread_registers): Check for
	NULL collect_regset method.

2006-05-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (s390_collect_regset): New function.
	(s390_gregset, s390x_gregset, s390_fpregset): Add it.

2006-05-06  Nick Roberts  <nickrob@snap.net.nz>

	* dwarf2read.c: Make LOC_OPTIMIZED_OUT the default value for a
	symbol.

2006-05-05  Ulrich Weigand  <uweigand@de.ibm.com>

	* linux-nat.c (exit_lwp): Fix NULL pointer access.
	(linux_nat_handle_extended): New parameter STOPPING.
	(wait_lwp): Call it with STOPPING equals 1.
	(linux_nat_wait): Call it with STOPPING equals 0.

2006-05-05  Ulrich Weigand  <uweigand@de.ibm.com>

	* linux-nat.c (linux_nat_wait): Do not short-cut reporting
	of 'uninteresting' signals when single-stepping.

2006-05-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* MAINTAINERS: Move NEWS to the documentation entry.

2006-05-05  David S. Miller  <davem@sunset.davemloft.net>

	* linux-nat.c (linux_nat_do_thread_registers): Use the
	regset_from_core_section infrastructure if the target
	supports it.
	* Makefile.in: Update dependencies.
	* linux-thread-db.c (thread_db_store_registers): Use
	regcache_raw_collect.

2006-05-05:  Paul Gilliam  <pgilliam@us.ibm.com>

	* ppc-linux-nat.c: Clean up types for ptrace.
	Replace (CORE_ADDR) with  (uintptr_t) to avoid the size difference
	between a CORE_ADDR and a void* on ppc64 systems compiled for 32-bits.

2006-05-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_disconnect): Add TARGET argument.
	* target.c (debug_to_disconnect): Delete.
	(update_current_target): Do not inherit to_disconnect.
	(target_disconnect): Search for a target to implement to_disconnect.
	(setup_target_debug): Do not reference to_disconnect.
	* target.h (struct target_ops): Add target argument to
	to_disconnect.

2006-05-06  Fred Fish  <fnf@specifix.com>

	* mips-tdep.c (mips_o64_push_dummy_call): Left shift big endian
	structs or unions independent of ABI register size.

2006-05-06  Fred Fish  <fnf@specifix.com>

	* mips-tdep.c (mips_o64_return_value): Replace stub that always
	returned RETURN_VALUE_STRUCT_CONVENTION with a real function.

2006-05-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* mi/mi-main.c (captured_mi_execute_command): Check the return
	value of -interpreter-exec.

2006-05-03  Vladimir Prus  <ghost@cs.msu.su>

	* varobj.c (c_value_of_variable): Ignore top-level references.
	(Committed by Jim Blandy.)

2006-04-30  Mark Kettenis  <kettenis@gnu.org>

	* breakpoint.c (insert_single_step_breakpoint): Make a failure to
	insert a single-step breakpoint an error instead of a warning.

2006-05-01  Nathan J. Williams  <nathanw@wasabisystems.com>

	* ppcnbsd-tdep.c (ppcnbsd_return_value): Change type of last two
	arguments from void * to gdb_byte *.

2006-04-26  Michael Snyder  <msnyder@redhat.com>

	* linux-fork.c (_initialize_linux_fork): Rename "delete-fork"
	command to "delete fork" (no hyphen), compatible with other
	"delete" commands.
	(info_forks_command): Accept a fork ID argument, for info
	on a single fork.  Report if no matching forks.

2006-04-25  Mark Kettenis  <kettenis@gnu.org>

	* breakpoint.c (remove_single_step_breakpoints): Bail out early if
	no breakpoints are inserted.

	From Masaki MURANAKA <monaka@monami-software.com>:
	* mips-mdebug-tdep.c (mips_mdebug_frame_prev_register): Change
	type of last argument to `gdb_byte *'

2006-04-25  Jim Blandy  <jimb@codesourcery.com>

	Add support for 'target remote |' on MinGW.
	* ser-mingw.c (struct pipe_state): New structure.
	(make_pipe_state, free_pipe_state, cleanup_pipe_state)
	(pipe_windows_open, pipe_windows_close, pipe_windows_read)
	(pipe_windows_write, pipe_wait_handle): New functions.
	(_initialize_ser_windows): Register a "pipe" interface based on
	them.

2006-04-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* ser-mingw.c: Include <conio.h>.
	(struct ser_console_state, struct net_windows_state): Add exit_select,
	have_stopped, thread.
	(pipe_select_thread, console_select_thread)
	(net_windows_select_thread): Don't create a local state copy or
	close stop_select.  Exit on exit_select instead of stop_select.  Set
	have_stopped.
	(console_select_thread): Don't report control keypresses as pending
	input.
	(pipe_select_thread): Allow stop_select to interrupt sleeping.
	(set_console_wait_handle): Create exit_select and have_stopped.
	Save the thread handle.  Check _kbhit before starting a thread.
	(ser_console_done_wait_handle): New.
	(ser_console_close): Close new handles.  Wait for the thread to
	exit.
	(new_windows_select_thread): Assert that an event occurred.
	(net_windows_wait_handle): Check for pending input before starting
	a thread.
	(net_windows_done_wait_handle): New.
	(net_windows_open): Create exit_select and have_stopped.
	Save the thread handle.
	(net_windows_close): Close new handles.  Wait for the thread to
	exit.
	(_intiialize_ser_windows): Register done_wait_handle methods.

	* serial.c [USE_WIN32API] (serial_done_wait_handle): New.
	* serial.h [USE_WIN32API] (struct serial_ops): Add done_wait_handle.
	[USE_WIN32API] (serial_done_wait_handle): New prototype.
	* mingw-hdep.c (gdb_select): Use serial_done_wait_handle.

2006-04-23  Andreas Schwab  <schwab@suse.de>

	* rs6000-tdep.c: Include "reggroups.h" only once.
	* Makefile.in (rs6000-tdep.o): Update dependencies.

2006-04-21  Frederic Riss  <frederic.riss@st.com>

	* dwarf2read.c (dwarf2_start_subfile): Change prototype to accept
	compilation directory as last argument. 
	Always pass comp_dir as second argument to start_subfile and prepend
	dirname to the filename when necessary. 
	Remove now superfluous search for pre-existing subfile.
	(dwarf_decode_lines): Pass the compilation directory to
	dwarf2_start_subfile.

2006-04-20  Michael Snyder  <msnyder@redhat.com>

	* 2006-03-22  Jim Blandy  <jimb@redhat.com>
	Add support for the Renesas M32C and M16C.

	* configure.tgt (m32c-*-*): New entry.
	* config/m32c/m32c.mt: New file.
	* m32c-tdep.c: New file.
	* Makefile.in (elf_m32c_h): New variable.
	(m32c-tdep.o): New rule.
	* NEWS: Mention new target.
	* MAINTAINERS: Designate Jim Blandy as responsible maintainer.

2006-04-20  Michael Snyder  <msnyder@redhat.com>

	* remote.c: Fix spelling error in comment.

2006-04-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* m68klinux-tdep.c (m68k_linux_sigtramp_frame_prev_register):
	Correct type of VALUEP.  Reported by Jean-Rene Peulve
	<jr.peulve@wanadoo.fr>.

2006-04-19  Masaki Muranaka  <monaka@monami-software.com>

	* m32r-rom.c: On MinGW, include winsock.h instead of sys/types.h,
	netdb.h, netinet/in.h.
	(m32r_upload_command); Add calls WSAStartup().
	* remote-m32r-sdi.c: On MinGW, include winsock.h instead of
	netinet/in.h.

2006-04-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* breakpoint.c (deprecated_read_memory_nobpt): Update to use
	shadow_len.
	(insert_bp_location, reattach_breakpoints, remove_breakpoint)
	(delete_breakpoint): Update calls to changed methods.
	(deprecated_insert_raw_breakpoint, deprecated_remove_raw_breakpoint)
	(single_step_breakpoints, insert_single_step_breakpoint)
	(remove_single_step_breakpoints): New.
	* breakpoint.h (struct bp_target_info): New.
	(struct bp_location): Replace shadow_contents with
	target_info and overlay_target_info.
	(deprecated_insert_raw_breakpoint, deprecated_remove_raw_breakpoint)
	(insert_single_step_breakpoint, remove_single_step_breakpoints): New
	prototypes.
	* gdbarch.sh: Forward declare struct bp_target_info in gdbarch.h.
	(memory_insert_breakpoint, memory_remove_breakpoint): Update second
	argument.
	* mem-break.c (default_memory_insert_breakpoint): Update.  Set
	placed_address, placed_size, and shadow_len.
	(default_memory_remove_breakpoint): Update.  Don't use
	BREAKPOINT_FROM_PC.
	(memory_insert_breakpoint, memory_remove_breakpoint): Update.
	* target.c (update_current_target): Update prototypes for changed
	functions.
	(debug_to_insert_breakpoint, debug_to_remove_breakpoint)
	(debug_to_insert_hw_breakpoint, debug_to_remove_hw_breakpoint):
	Update.
	* target.h: Forward declare struct bp_target_info.
	(struct target_ops): Use a bp_target_info argument for
	to_insert_breakpoint, to_remove_breakpoint,
	to_insert_hw_breakpoint, and to_remove_hw_breakpoint.
	(target_insert_breakpoint, target_remove_breakpoint)
	(target_insert_hw_breakpoint, target_remove_hw_breakpoint)
	(memory_insert_breakpoint, memory_remove_breakpoint)
	(default_memory_insert_breakpoint, default_memory_remove_breakpoint):
	Update.
	* config/i386/nm-i386.h: Forward declare struct bp_target_info.
	(i386_insert_hw_breakpoint, i386_remove_hw_breakpoint): Update.
	(target_insert_hw_breakpoint, target_remove_hw_breakpoint): Likewise.

	* gdbarch.c, gdbarch.h: Regenerated.

	* alpha-tdep.c (alpha_software_single_step): Use
	insert_single_step_breakpoint and remove_single_step_breakpoints.
	Remove unused statics.
	* arm-tdep.c (arm_software_single_step): Likewise.  Add a note.
	* cris-tdep.c (cris_software_single_step): Likewise.
	* mips-tdep.c (mips_software_single_step): Likewise.
	* rs6000-tdep.c (rs6000_software_single_step): Likewise.
	* sparc-tdep.c (sparc_software_single_step): Likewise.
	* wince.c (struct thread_info_struct): Remove step_prev.
	(undoSStep): Use remove_single_step_breakpoints.
	(wince_software_single_step): Use insert_single_step_breakpoint.

	* corelow.c (ignore): Remove unneeded prototype.  Update arguments.
	* exec.c (ignore): Likewise.
	* sol-thread.c (ignore): Likewise.

	* procfs.c (dbx_link_shadow_contents): Delete.
	(dbx_link_bpt): New.
	(procfs_mourn_inferior): Remove it if necessary.
	(remove_dbx_link_breakpoint): Use it.
	(insert_dbx_link_bpt_in_file): Set it.
	(procfs_init_inferior): Don't update dbx_link_bpt_addr.
	* rs6000-nat.c (exec_one_dummy_insn): Use
	deprecated_insert_raw_breakpoint and
	deprecated_remove_raw_breakpoint.
	* solib-irix.c (shadow_contents, breakpoint_addr): Delete.
	(base_breakpoint): New.
	(disable_break): Use it.
	(enable_break): Set it.

	* i386-nat.c (i386_insert_hw_breakpoint, i386_remove_hw_breakpoint):
	Update.
	* ia64-tdep.c (ia64_memory_insert_breakpoint)
	(ia64_memory_remove_breakpoint): Likewise.
	* m32r-tdep.c (m32r_memory_insert_breakpoint)
	(m32r_memory_remove_breakpoint): Likewise.
	* monitor.c (monitor_insert_breakpoint, monitor_remove_breakpoint):
	Likewise.  Remove unnecessary prototypes.  Use placed_address
	and placed_size.  Removed useless read from memory.
	* nto-procfs.c (procfs_insert_breakpoint)
	(procfs_remove_breakpoint, procfs_insert_hw_breakpoint)
	(procfs_remove_hw_breakpoint): Update.
	* ocd.c (ocd_insert_breakpoint, ocd_remove_breakpoint): Likewise.
	* ocd.h (ocd_insert_breakpoint, ocd_remove_breakpoint): Likewise.
	* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint): Likewise.
	* ppc-tdep.h (ppc_linux_memory_remove_breakpoint): Likewise.
	* remote-e7000.c (e7000_insert_breakpoint)
	(e7000_remove_breakpoint): Likewise.
	* remote-m32r-sdi.c (m32r_insert_breakpoint)
	(m32r_remove_breakpoint): Likewise.
	* remote-mips.c (mips_insert_breakpoint)
	(mips_remove_breakpoint): Likewise.
	* remote-rdp.c (remote_rdp_insert_breakpoint)
	(remote_rdp_remove_breakpoint): Likewise.
	(rdp_step): Use deprecated_insert_raw_breakpoint and
	deprecated_remove_raw_breakpoint.
	* remote-sds.c (sds_insert_breakpoint, sds_remove_breakpoint):
	Update.
	* remote-sim.c (gdbsim_insert_breakpoint, gdbsim_remove_breakpoint):
	Delete.
	(init_gdbsim_ops): Use memory_insert_breakpoint and
	memory_remove_breakpoint.
	* remote-st.c (st2000_insert_breakpoint)
	(st2000_remove_breakpoint): Update.  Remove unused
	BREAKPOINT_FROM_PC.
	* remote.c (remote_insert_breakpoint, remote_remove_breakpoint):
	Update.  Use placed_address and placed_size.
	(remote_insert_hw_breakpoint, remote_remove_hw_breakpoint): Likewise.

2006-04-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (extended_remote_restart): Pass the correct length
	to getpkt.

2006-04-11  Jim Blandy  <jimb@codesourcery.com>

	* serial.c (serial_open): Check for special cases at the front of
	the "device" name before scanning for the ':' that would indicate
	an IP-based connection.

2006-04-10  Christopher Faylor  <cgf@timesys.com>

	* win32-nat.c (open_symbol_file_object): New function.
	(in_dynsym_resolve_code): Ditto.
	(init_win32_ops): Fill in fields which ought not to be NULL.

2006-04-10  Christopher Faylor  <cgf@timesys.com>

	* win32-nat.c (do_win32_fetch_inferior_registers): Don't do anything
	with saved context if __COPY_CONTEXT_SIZE is not defined.
	(handle_output_debug_string): Ditto.

2006-04-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-linux-tdep.c (arm_linux_extract_return_value): Use gdb_byte.

2006-04-09  David S. Miller  <davem@sunset.davemloft.net>

	* sparc64-linux-tdep.c (sparc64_linux_init_abi): Append dwarf2
	frame sniffer.
	* sparc-tdep.c (sparc32_gdbarch_init): Make sure to call
	dwarf2_frame_set_init_reg() before gdbarch_init_osabi() so
	that the latter can override.
	* Makefile.in (sparc64-linux-tdep.o): Update dependencies.

2006-04-09  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (struct s390_prologue_data): New field 'stack'.
	(s390_store): Call pv_area_store to track stack slots.
	(s390_load): Call pv_area_fetch to track stack slots.
	(s390_check_for_saved): New function.
	(s390_analyze_prologue): Call pv_area_scan.  Allocate and free stack.

2006-04-09  Ulrich Weigand  <uweigand@de.ibm.com>

	* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
	* s390-tdep.c: Include "prologue-value.h".
	(struct prologue_value): Remove.
	(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
	pv_constant_last, pv_add, pv_add_constant, pv_subtract,
	pv_logical_and, pv_is_identical, pv_is_register): Remove.
	(compute_x_addr): Remove, replace by ...
	(s390_addr): ... this new function.
	(struct s390_prologue_data): Use pv_t instead of prologue_value.
	(s390_store, s390_load): Likewise.
	(s390_prologue_frame_unwind_cache): Likewise.
	(s390_analyze_prologue): Likewise.  Also, simplify and combine
	several conditional statements.

2006-04-08  Jim Blandy  <jimb@codesourcery.com>

	* Makefile.in (COMMON_OBS): List prologue-value.o.  (Omitted from
	last patch.)

2006-04-08  David S. Miller  <davem@sunset.davemloft.net>

	* sparc-linux-tdep.c (sparc32_linux_step_trap): New.
	(sparc32_linux_init_abi): Hook it into tdep->step_trap.
	(sparc32_linux_core_gregset,
	sparc32_linux_supply_core_gregset,
	sparc32_linux_collect_core_gregset,
	sparc32_linux_supply_core_fpregset,
	sparc32_linux_collect_core_fpregset): New.
	(sparc32_linux_init_abi): Register them with generic sparc
	core regset infrastructure.
	* sparc64-linux-tdep.c (sparc64_linux_step_trap): New.
	(sparc64_linux_init_abi): Hook it into tdep->step_trap.
	(sparc64_linux_core_gregset,
	sparc64_linux_supply_core_gregset,
	sparc64_linux_collect_core_gregset,
	sparc64_linux_supply_core_fpregset,
	sparc64_linux_collect_core_fpregset): New.
	(sparc64_linux_init_abi): Register them with generic sparc
	core regset infrastructure.	
	* Makefile.in: Update dependencies.

2006-04-07  David S. Miller  <davem@sunset.davemloft.net>

	* linux-nat.c (linux_nat_thread_alive): Handle targets that
	do not implement PTRACE_PEEKUSER.

2006-04-07  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_wait): Convert warning to error before
	parsing corrupt packets.

2006-04-07  Andrew Stubbs  <andrew.stubbs@st.com>

	* cli/cli-script.c (struct user_args): Add command field.
	(arg_cleanup): Free command string.
	(setup_user_args): Copy the command line before relying on it.

2006-04-06  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.c (_initialize_breakpoint): Add "del" as an alias
	of the "delete" command.

2006-04-06  Randolph Chung  <tausq@debian.org>

	* MAINTAINERS (Patch champions): Add myself.

2006-04-05  Andreas Schwab  <schwab@suse.de>

	* Makefile.in: Update dependencies.

2006-04-05  David S. Miller  <davem@sunset.davemloft.net>

	* sparc-tdep.c (sparc32_dwarf2_frame_init_reg): New.
	(sparc32_gdbarch_init): Pass it to dwarf2_frame_set_init_reg.
	* Makefile.in (sparc-tdep.o): Update dependencies.
	* sparc-linux-tdep.c (sparc32_linux_sigframe_init): Pull register
	window out of the correct stack frame.
	* sparc64-linux-tdep.c (sparc64_linux_sigframe_init): Likewise.
	* dwarf2-frame.c (dwarf2_frame_ops init_reg): Add "next_frame"
	argument.
	(dwarf2_frame_default_init_reg): Likewise.
	(dwarf2_frame_set_init_reg): Update init_reg arg.
	(dwarf2_frame_init_reg): Take "next_frame" and pass it to
	ops->init_reg().
	(dwarf2_frame_cache): Pass next_frame to dwarf2_frame_init_reg.
	* dwarf2-frame.h (dwarf2-frame_set_init_reg): Update declaration.
	* cris-tdep.c (cris_dwarf2_frame_init_reg): Add next_frame arg.
	* s390-tdep.c (s390_dwarf2_frame_init_reg): Likewise.
	* sh-tdep.c (sh_dwarf2_frame_init_reg): Likewise.
	* sparc64-tdep.c (sparc64_dwarf2_frame_init_reg): Likewise.
	* sparc-tdep.c (sparc32_struct_return_from_sym): New function.
	(sparc32_frame_cache): Call it.
	(sparc32_dwarf2_struct_return_p): New function.
	(sparc_dwarf2_frame_init_reg): Use it to determine if the function
	returns a structure and thus we have to indicate the return PC and
	NPC are 4 bytes later than usual.
	* sparc-linux-tdep.c (sparc32_linux_init_abi): Append
	dwarf2 frame sniffer.
	* Makefile.in (sparc-linux-tdep.o): Update dependencies.
	
2006-04-04  David S. Miller  <davem@davemloft.net>

	* config/linux.mh (NATDEPFILES): Remove sparc-sol2-nat.o
	* config/linux64.h (NATDEPFILES): Likewise
	* sparc-linux-nat.c (supply_gregset, supply_fpregset, fill_gregset,
	fill_fpregset): New.
	* sparc64-linux-nat.c (supply_gregset, supply_fpregset, fill_gregset,
	fill_fpregset): New.
	* Makefile.in (sparc-linux-nat.o, sparc64-linux-nat.o): Update for
	new includes.
	
2006-04-04  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (elf_common_h): Define.

2006-04-03  Andrew Stubbs  <andrew.stubbs@st.com>

	* sh-tdep.c (sh_dwarf2_frame_init_reg): New function.
	(sh_gdbarch_init): Call dwarf2_frame_set_init_reg().

2006-03-31  Andrew Stubbs  <andrew.stubbs@st.com>

	* value.h (struct internalvar): Add field 'endian'.
	* value.c (lookup_internalvar): Initialise endian.
	(value_of_internalvar): Flip the endian of built-in types if required.
	(set_internalvar): Set the endian.
	(show_convenience): Access the value through value_of_internalvar().

2006-03-30  Vladimir Prus  <ghost@cs.msu.su>

	* remote.c (watchpoint_to_Z_packet): Use values of Z_packet_type enum
	instead of hardcoded integer literals.

2006-03-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* cli/cli-script.c (insert_args): Handle NULL user_args.

2006-03-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-tdep.c (thumb_scan_prologue): Don't try to analyze
	the function at zero if we have no symbols.

2006-03-30  Adrien Kunysz  <a_kunysz@yahoo.com>

	* i386-stub.c (getpacket): Fix array overflow.
	* m32r-stub.c (getpacket): Likewise.
	* m68k-stub.c (getpacket): Likewise.
	* sh-stub.c (getpacket): Likewise.
	* sparc-stub.c (getpacket): Likewise.

2006-03-30  Daniel Jacobowitz  <dan@codesourcery.com>
 
	* frame.h (set_current_sal_from_frame): New prototype.
	* stack.c (set_current_sal_from_frame): Make global.
	* infrun.c (normal_stop): Call set_current_sal_from_frame.

2006-03-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-thread-db.c: Include "linux-nat.h".
	(check_for_thread_db): New function, split out from
	thread_db_new_objfile.  Remove dead check for active
	thread_db on inapplicable targets.
	(thread_db_new_objfile): Call check_for_thread_db.
	* Makefile.in (linux-thread-db.o): Update.
	* linux-nat.c (child_post_attach): Call check_for_thread_db.
	(linux_child_post_startup_inferior): Likewise.
	(lin_lwp_attach_lwp): Call target_post_attach instead of
	child_post_attach.
	* linux-nat.h (check_for_thread_db): New prototype.

2006-03-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (struct remote_state): Add BUF and BUF_SIZE.
	(init_remote_state): Initialize the new fields.
	(get_memory_packet_size): Update BUF and BUF_SIZE if necessary.
	(set_thread, remote_thread_alive, 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)
	(remote_check_symbols, remote_open_1, remote_detach)
	(remove_vcont_probe, remote_vcont_resume, remote_resume)
	(remote_wait, remote_async_wait, fetch_register_using_p)
	(remote_fetch_registers, store_register_using_P)
	(remote_store_registers, check_binary_download, remote_write_bytes)
	(remote_read_bytes, remote_insert_breakpoint)
	(remote_remove_breakpoint, remote_insert_watchpoint)
	(remote_remove_watchpoint, remote_insert_hw_breakpoint)
	(remote_remove_hw_breakpoint, compare_sections_command)
	(remote_xfer_partial, remote_rcmd, packet_command)
	(remote_get_thread_local_address): Use the global incoming buffer
	instead of alloca or xmalloc.  Limit outgoing packets to
	rs->remote_packet_size and incoming packets to rs->buf_size.
	Update calls to getpkt and remote_send.
	(remote_send): Take arguments by reference.
	(putpkt_binary): Eliminate junkbuf.  Use skip_frame.
	(skip_frame): New function.
	(read_frame): Take arguments by reference.  Expand the packet
	buffer instead of issuing an error.
	(getpkt, getpkt_sane): Take arguments by reference.
	* remote.h (getpkt): Update prototype and doc.
	* tracepoint.c (remote_get_noisy_reply): Take arguments by
	reference.
	(target_buf): Change from array to pointer.
	(target_buf_size): New variable.
	(remote_set_transparent_ranges): Update call to getpkt.
	(trace_start_command, trace_stop_command, trace_status_command):
	Update calls to remote_get_noisy_reply.
	(finish_tfind_command): Take arguments by reference.
	(trace_find_command, trace_find_pc_command)
	(trace_find_tracepoint_command, trace_find_line_command):
	(trace_find_range_command, trace_find_outside_command): Update
	calls to finish_tfind_command.
	(_initialize_tracepoint): Initialize target_buf_size and target_buf.

2005-03-30  Randolph Chung  <tausq@debian.org>

	* hppa-linux-tdep.c: Include regset.h.
	(GR_REGNUM, TR_REGNUM, greg_map): New.
	(hppa_linux_supply_regset, hppa_linux_supply_fpregset): New.
	(hppa_linux_regset, hppa_linux_fpregset): New.
	(hppa_linux_regset_from_core_section): New.
	(hppa_linux_init_abi): Set regset_from_core_section.
	(_initialize_hppa_linux_tdep): Register osabi handler for
	64-bit Linux.
	* Makefile.in (hppa-linux-tdep.o): Update dependencies.
	* config/pa/linux.mh: Stop using core-regset.o

2006-03-30  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_find_unwind_entry_in_block): New.
	(hppa_frame_cache): Use new function to find unwind entry.
	(hppa_frame_this_id): Likewise.
	(hppa_frame_unwind_sniffer): Likewise.

2006-03-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention the removal of NLM.

2006-03-29  Steve Ellcey  <sje@cup.hp.com>

	* Makefile.in (nlm): Remove target.
	* configure.tgt (i[34567]86-*-netware*): Do not set build_nlm.
	* configure.ac: Remove AC_CONFIG_SUBDIRS of nlm.
	* configure: Regenerate.
	* doc/gdb.texinfo: Remove gdbserve.nlm documentation.
	* nlm: Remove directory.

2006-03-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (utils.o): Update.
	* top.c (in_user_command): New.
	(command_line_input): Use input_from_terminal_p.
	(input_from_terminal_p): Don't check caution.  Handle
	stdin == NULL for Insight.
	* top.h (in_user_command, caution): New declarations.
	* utils.c: Include "top.h".
	(query, defaulted_query): Check caution here.  Move the call
	to input_from_terminal_p higher.
	* cli/cli-script.c (do_restore_user_call_depth): Only decrement
	the depth.  Update in_user_command if necessary.
	(execute_user_command): Don't clobber old_chain.  Set
	in_user_command.  Let do_restore_user_call_depth handle
	user_call_depth.
	(read_command_lines): Check whether to prompt before calling
	Insight hooks.
	* tui/tui-hooks.c (tui_query_hook): Remove newly unnecessary
	input_from_terminal_p check.

2006-03-29  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-nat.c (s390_insert_watchpoint): Add missing argument.
	(s390_remove_watchpoint): Likewise.

2006-03-28  Jim Blandy  <jimb@codesourcery.com>

	* prologue-value.c, prologue-value.h: New files.
	* Makefile.in (prologue_value_h): New variable.
	(HFILES_NO_SRCDIR): List prologue-value.h.
	(SFILES): List prologue-value.c.
	(COMMON_OBS): List prologue-value.o.
	(prologue-value.o): New rule.

2006-03-27  Michael Snyder  <msnyder@redhat.com>

	* xstormy16-tdep.c (xstormy16_return_value, xstormy16_push_dummy_call,
	xstormy16_pointer_to_address, xstormy16_address_to_pointer, 
	xstormy16_frame_prev_register): Change void* to gdb_byte*.
	(xstormy16_push_dummy_call): Add block-local char* val, 
	to avoid type conflict with outer scope variable.

2006-03-27  Andrew Stubbs  <andrew.stubbs@st.com>

	* sh-tdep.c (sh_gdbarch_init): Add missing architectures.

2006-03-27  Nick Roberts  <nickrob@snap.net.nz>

	PR mi/1429
	* varobj.c (c_name_of_child, c_value_of_child): Allow non-zero
	offsets for languages like Fortran.

2006-03-26  Randolph Chung  <tausq@debian.org>

	* config/pa/hppa64.mt: Use HPUX version of the tm file.

2006-03-25  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el (gdbmi-send): Improve regexp to repeat commands.
	Try to deal with continuation line.
	(gdbmi, gdbmi-prompt1, gud-gdbmi-marker-filter): Update to new
	variable names.
	(gdb-break-list-regexp, gdb-stack-list-frames-regexp): 
	Future proof against new fields being added to MI output.
	(gdbmi-prompt2, gdb-break-list-handler,gdb-get-source-file)
	(gdbmi-frame-handler): Update to new variable name
	gdb-get-buffer-create.
	(gdbmi-frame-handler): Use hollow-right-triangle for all selected
	frames which except the innermost (where execution has stopped).

2006-03-24  Randolph Chung  <tausq@debian.org>

	* solib-som.c (link_map_start): Don't error out if there is
	not yet a link map.

2006-03-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-nat.c (linux_ops_saved): New.
	(super_mourn_inferior, kill_inferior, threaded, linux_nat_ops)
	(child_mourn_inferior, child_wait, linux_nat_create_inferior)
	(linux_nat_fetch_registers, linux_nat_store_registers)
	(linux_nat_child_post_startup_inferior, init_linux_nat_ops): Delete.
	(init_lwp_list): Don't set threaded.
	(add_lwp): Don't modify threaded.
	(delete_lwp): Don't mention non-threaded mode.
	(linux_nat_switch_fork): New.
	(linux_nat_attach): Update inferior_ptid.
	(linux_nat_wait): Handle num_lwps == 0 at entry.  Don't check
	threaded flag.
	(linux_nat_kill): Handle pending forks and saved forks.
	(linux_nat_mourn_inferior): Handle saved forks.
	(linux_nat_pid_to_str): Don't use the LWP form when there is
	only one thread.
	(linux_target): Don't set to_wait, to_kill, or to_mourn_inferior.
	(linux_nat_add_target): New.
	(_initialize_linux_nat): Don't initialize the linux native target
	here.
	* linux-nat.h (linux_nat_add_target, linux_nat_switch_fork): New
	prototypes.
	* linux-fork.c: Include "linux-nat.h".
	(add_fork): Update initial PID.
	(fork_load_infrun_state): Call linux_nat_switch_fork.
	* Makefile.in (linux-fork.o): Update.

	* alpha-linux-nat.c (_initialize_alpha_linux_nat): Use
	linux_nat_add_target instead of add_target.
	* amd64-linux-nat.c (_initialize_amd64_linux_nat): Likewise.
	* arm-linux-nat.c (_initialize_arm_linux_nat): Likewise.
	* hppa-linux-nat.c (_initialize_hppa_linux_nat): Likewise.
	* ia64-linux-nat.c (_initialize_ia64_linux_nat): Likewise.
	* i386-linux-nat.c (_initialize_i386_linux_nat): Likewise.
	* m32r-linux-nat.c (_initialize_m32r_linux_nat): Likewise.
	* m68klinux-nat.c (_initialize_m68k_linux_nat): Likewise.
	* mips-linux-nat.c (_initialize_mips_linux_nat): Likewise.
	* ppc-linux-nat.c (_initialize_ppc_linux_nat): Likewise.
	* s390-nat.c (_initialize_s390_nat): Likewise.
	* sparc-linux-nat.c (_initialize_sparc_linux_nat): Likewise.
	* sparc64-linux-nat.c (_initialize_sparc64_linux_nat): Likewise.

2006-03-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-fork.c: Include "gdb_assert.h".
	(fork_load_infrun_state): Set inferior_ptid and stop_pc here.
	Update the register cache and selected frame also.
	(linux_fork_mourn_inferior): Use fork_load_infrun_state.  Return
	to single fork mode if necessary.
	(linux_fork_context): Remove bits handled by fork_load_infrun_state.
	* Makefile.in (linux_fork_h): New.
	(linux-fork.o, linux-nat.o): Update.

2006-03-23  Andreas Schwab  <schwab@suse.de>

	* config/s390/s390.mh (NATDEPFILES): Add linux-fork.o.

2006-03-18  Jim Blandy  <jimb@codesourcery.com>

	* symtab.h (enum address_class): Doc fix.

2006-03-16  Michael Snyder  <msnyder@redhat.com>

	* tracepoint.c (tracepoint_save_command): Fix typo in error msg.
	* target.c (push_target): Fix typo in comment.
	* remote.c (remote_watch_data_address): Fix typo in comment.
	* i386-tdep.c (i386_push_dummy_call): Fix typo in comment.

2006-03-15  Kevin Buettner  <kevinb@redhat.com>

	* frv-linux-tdep.c (gdbcore.h, regcache.h, regset.h, gdb_string.h):
	Include.
	(FRV_ELF_NGREG, FRV_PT_PSR, FRV_PT_ISR, FRV_PT_CCR, FRV_PT_CCCR)
	(FRV_PT_LR, FRV_PT_LCR, FRV_PT_PC, FRV_PT_GNER0, FRV_PT_GNER1)
	(FRV_PT_IACC0H, FRV_PT_IACC0L, FRV_PT_GR, FRV_PT_TBR)
	(FRV_PT_EXEC_FDPIC_LOADMAP, FRV_PT_INTERP_FDPIC_LOADMAP): Define.
	(frv_elf_greg_t, frv_elf_gregset_t, frv_elf_fpreg_t)
	(frv_elf_fpregset_t): Define types.
	(frv_linux_supply_gregset, frv_linux_supply_fpregset)
	(frv_linux_regset_from_core_section: New functions.
	(frv_linux_gregset, frv_linux_fpregset): New static globals.
	(frv_linux_init_abi): Register the `regset_from_core_section' method.
	* Makefile.in (frv-linux-tdep.o): Update dependencies.
	* solib-frv.c (frv_current_sos): Relocate main executable after
	loading core file.
	(frv_clear_solib): Clean up space associated with
	`main_executable_lm_info'.
	* config/frv/frv.mt (TDEPFILES): Add corelow.o to this list.

2006-03-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (mips_linux_tdep_h): New.
	(mpis-linux-nat.o, mips-linux-tdep.o): Update.
	* mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and
	<sys/ptrace.h>.
	(have_ptrace_regsets, super_fetch_registers, super_store_registers)
	(mips64_linux_regsets_fetch_registers)
	(mips64_linux_regsets_store_registers, mips64_linux_fetch_registers)
	(mips64_linux_store_registers): New.
	(_initialize_mips_linux_nat): Override to_fetch_registers and
	to_store_registers.
	* mips-linux-tdep.h: New file.
	* mips-linux-tdep.c: Include "mips-linux-tdep.c".
	(ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t)
	(elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO)
	(FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC)
	(EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE)
	(MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t)
	(mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t)
	(MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR)
	(MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR)
	(MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI)
	(MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS)
	(MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete.
	(supply_32bit_reg): Use gdb_byte.
	(supply_64bit_reg): New.
	(mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset)
	(mips_fill_fpregset, fetch_core_registers, supply_gregset)
	(fill_gregset, supply_fpregset): Update for renamed types.
	(mips64_supply_gregset): Use gdb_byte and supply_64bit_reg.
	(mips64_fill_gregset): Make global.  Handle 32-bit register
	sizes.
	(mips64_fill_fpregset): Make global.  Use gdb_byte.  Handle
	FP regsets properly.

2006-03-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* mips-linux-tdep.c (mips_supply_gregset): Renamed from supply_gregset.
	(mips_fill_gregset): Renamed from fill_gregset.
	(mips_supply_fpregset): Renamed from supply_fpregset.
	(mips_fill_fpregset): Renamed from fill_fpregset.
	(fetch_core_registers): Update calls.
	(supply_gregset, fill_gregset, supply_fpregset, fill_fpregset): New
	functions.

2006-03-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* mips-tdep.c (mips_gdbarch_init): Default 64-bit ELF files to N64.

2006-03-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* mips-tdep.c (is_mips16_addr, mips32_next_pc, add_offset_16):
	Correct arithmetic for 64-bit CORE_ADDR.

2006-03-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* mips-linux-tdep.c: Include "floatformat.h".
	(mips_linux_init_abi): Use 128-bit long double for N32 and N64.
	* mips-tdep.c (mips_n32n64_return_value): Support 128-bit long
	double.
	(print_gp_register_row): Don't print spaces before ignored
	or floating point registers.
	* Makefile.in (mips-linux-tdep.o): Update.

2006-03-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* mips-mdebug-tdep.c (compare_pdr_entries): Use bfd_get_signed_32
	for code addresses.
	(non_heuristic_proc_desc): Likewise.

2006-03-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* mips-linux-nat.c: Include "gdb_proc_service.h".
	(PTRACE_GET_THREAD_AREA): Define.
	(ps_get_thread_area): New.
	* Makefile.in (mips-linux-nat.o): Update.

2006-03-13  Jim Blandy  <jimb@codesourcery.com>

	* MAINTAINERS: Use my work address.

2006-03-09  Michael Snyder  <msnyder@redhat.com>

	* linux-nat.c (kill_inferior): Just call target_mourn_inferior
	instead of getting tricky for the multi-fork case.
	* linux-fork.c (linux_fork_killall): Call PT_KILL and waitpid
	for each fork, and then use init_fork_list to delete them.

2006-03-08  Alexandre Oliva  <aoliva@redhat.com>

	* solib-svr4.c (svr4_current_sos): Move up initialization of
	l_addr, such that it clearly covers all cases.

2006-03-08  Andreas Schwab  <schwab@suse.de>

	* ia64-tdep.c (ia64_libunwind_frame_this_id): Adapt use of
	libunwind_frame_prev_register to use a gdb_byte buffer and
	extract_unsigned_integer.
	(ia64_libunwind_sigtramp_frame_prev_register): Likewise.

	* libunwind-frame.c (libunwind_frame_prev_register): Change type
	of last argument to `gdb_byte *'
	* libunwind-frame.h: Adjust declaration.

2006-03-08  Paul Brook  <paul@codesourcery.com>

	* arm-tdep.c (arm_push_dummy_call): Remove stack alignment.
	(arm_frame_align): New function.
	(arm_gdbarch_init): Use it.

2006-03-03  Khem Raj <khem@mvista.com>

	* remote-rdp.c (remote_rdp_xfer_inferior_memory): Use gdb_byte.
	Committed by Andrew Cagney.
	
2006-03-02  Corinna Vinschen  <vinschen@redhat.com>

	* mn10300-tdep.c (mn10300_push_dummy_call): Write breakpoint
	address to MDR register.

2006-03-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdbtypes.c (lookup_struct_elt_type): Correct noerr for recursive
	calls.

2006-03-01  Randolph Chung  <tausq@debian.org>

	* somread.c (som_symfile_read): Update comment and remove unneeded 
	use of a deprecated variable.

2006-03-01  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.h (unwind_table_entry): Update field names to match HP
	runtime specification.
	* hppa-tdep.c (internalize_unwinds, hppa_frame_cache): Likewise.
	(unwind_command): Likewise.

2006-03-01  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_frame_cache): Handle Region_Description and
	Pseudo_SP_Set in unwind record.

2006-03-01  Randolph Chung  <tausq@debian.org>

	* hppa-hpux-tdep.c (initialize_hp_cxx_exception_support): Use
	TDEP->is_elf to determine if we are working with a SOM binary.
	(null_symtab_and_line): Remove unused variable.
	* config/pa/hppa64.mt: Use tm-hppa.h.
	* config/pa/tm-hppa64.h: Remove file.

2006-03-01  Wu Zhou  <woodzltc@cn.ibm.com>

	 * f-typeprint.c (f_type_print_base): Delete the redundant space.

2006-02-28  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (mn10300-linux-tdep.o): Update dependencies.
	* mn10300-linux-tdep.c (frame.h, trad-frame.h, tramp-frame.h):
	Include.
	(am33_linux_sigframe_cache_init): New function.
	(am33_linux_sigframe, am33_linux_rt_sigframe): New signal frame
	descriptions.
	(AM33_SIGCONTEXT_D0, AM33_SIGCONTEXT_D1, AM33_SIGCONTEXT_D2)
	(AM33_SIGCONTEXT_D3, AM33_SIGCONTEXT_A0, AM33_SIGCONTEXT_A1)
	(AM33_SIGCONTEXT_A2, AM33_SIGCONTEXT_A3, AM33_SIGCONTEXT_E0)
	(AM33_SIGCONTEXT_E1, AM33_SIGCONTEXT_E2, AM33_SIGCONTEXT_E3)
	(AM33_SIGCONTEXT_E4, AM33_SIGCONTEXT_E5, AM33_SIGCONTEXT_E6)
	(AM33_SIGCONTEXT_E7, AM33_SIGCONTEXT_LAR, AM33_SIGCONTEXT_LIR)
	(AM33_SIGCONTEXT_MDR, AM33_SIGCONTEXT_MCVF, AM33_SIGCONTEXT_MCRL)
	(AM33_SIGCONTEXT_MCRH, AM33_SIGCONTEXT_MDRQ, AM33_SIGCONTEXT_SP)
	(AM33_SIGCONTEXT_EPSW, AM33_SIGCONTEXT_PC, AM33_SIGCONTEXT_FPUCONTEXT):
	New constants.
	(am33_linux_init_osabi): Register signal frame unwinders.

2006-02-28  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (mn10300_analyze_prologue):  Implement backtrack
	out of pattern match by saving relevant state.  Fix stack size
	adjustment bug.

2006-02-28  Alexandre Oliva  <aoliva@redhat.com>

	* solib-svr4.h (struct link_map_offsets): Add l_ld_offset and
	l_ld_size fields.
	* solib-svr4.c (struct lm_info): Add l_addr field.
	(LM_ADDR_FROM_LINK_MAP): Renamed from LM_ADDR.
	(HAS_LM_DYNAMIC_FROM_LINK_MAP): New.
	(LM_DYNAMIC_FROM_LINK_MAP): New.
	(LM_ADDR_CHECK): New.  Use it instead of LM_ADDR.
	(svr4_current_sos): Initialize l_addr.  Adjust.
	(svr4_relocate_section_addresses): Adjust.
	(svr4_ilp32_fetch_link_map_offsets): Define new members.
	(svr4_lp64_fetch_link_map_offsets): Likewise.
	* solib-legacy.c (legacy_svr4_fetch_link_map_offsets): Likewise.
	* mipsnbsd-tdep.c (mipsnbsd_ilp32_fetch_link_map_offsets): Likewise.
	(mipsnbsd_lp64_fetch_link_map_offsets): Likewise.
	* Makefile.in (solib-svr4.o): Depend on $(elf_bfd_h).

2006-02-26  David S. Miller  <davem@sunset.davemloft.net>

	* config/sparc/linux.mt (TDEPFILES): Add sol2-tdep.o.
	* config/sparc/linux64.mt (TDEPFILES): Likewise.

2006-02-27  Alan Modra  <amodra@bigpond.net.au>

	* ppc-linux-nat.c (ppc_linux_insert_watchpoint): Correct return type.
	(ppc_linux_remove_watchpoint): Likewise, and args.

2006-02-26  Mark Kettenis  <kettenis@gnu.org>

	* i386obsd-tdep.c (i386obsd_trapframe_sniffer): Also recognize
	"soft" interrupts.

2006-02-24  Charles Wilson  <cygwin@cwilson.fastmail.fm>

	* gdb/defs.h: unconditionally include <fcntl.h>, and
	ensure that O_BINARY is defined.
	* gdb/solib.c(solib_open): ensure solib files are opened in
	binary mode.
	* gdb/corelow.c: Remove O_BINARY macro definition.
	* gdb/exec.c: Remove O_BINARY macro definition
	* gdb/remote-rdp.c: Remove O_BINARY macro definition
	* gdb/source.c: Remove O_BINARY macro definition
	* gdb/symfile.c: Remove O_BINARY macro definition

2006-02-24  Randolph Chung  <tausq@debian.org>

        * hppa-hpux-tdep.c (hppa_hpux_push_dummy_code): Initialize 
	argreg.
        * solib-som.c (som_solib_remove_inferior_hook): Remove unused 
	function.

2006-02-24  Wu Zhou  <woodzltc@cn.ibm.com>

	* f-exp.y: Symbol '%' is not used as the modulus operator in
	Fortran.  Delete this from Fortran expression.
	It is now used by Fortran 90 and later to access the member
	of derived type.  Add this into Fortran expression.
	* f-valprint.c (f_val_print): Add code to handle TYPE_CODE_STRUCT.
	Print each elements in the derived type.
	* f-typeprint.c (print_equivalent_f77_float_type): Add a parameter
	level into the function definition to do indented printing.  And
	call fprintfi_filtered instead to do indented printing.
	(f_type_print_base): Replace fprintf_filtered with the indented
	version (fprintfi_filtered).
	(f_type_print_base): Call indented print_equivalent_f77_float_type.
	(f_type_print_base): Add code to handle TYPE_CODE_STRUCT.  Print
	the definition of the derived type.

2006-02-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb_curses.h: Provide a fallback prototype for tgetnum.

2006-02-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* doublest.h: Conditionalize DOUBLEST on PRINTF_HAS_LONG_DOUBLE
	also.
	(DOUBLEST_FORMAT): Rename to DOUBLEST_PRINT_FORMAT.
	(DOUBLEST_SCAN_FORMAT): New.
	* ada-lex.l (PRINTF_HAS_LONG_DOUBLE): Remove redefinitions.
	(processReal): Use DOUBLEST_SCAN_FORMAT.
	* c-exp.y (parse_number): Likewise.
	* jv-exp.y (parse_number): Likewise.
	* objc-exp.y (parse_number): Likewise.
	* p-exp.y (parse_number): Likewise.

2006-02-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* event-top.c (async_do_nothing, async_disconnect)
	(async_stop_sig, async_float_handler): Remove duplicated
	prototypes.
	(handle_sighup): Guard prototype with SIGHUP.
	(async_do_nothing): Guard function and prototype with
	SIGQUIT || SIGHUP.
	(async_disconnect): Guard prototype with SIGHUP.
	(async_stop_sig): Guard prototype with STOP_SIGNAL.

2006-02-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* maint.c (maintenance_dump_me): Remove unnecessary prototype.

2006-02-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* win32-termcap.c (tputs): Return 0.

2006-02-21  Mark Kettenis  <kettenis@gnu.org>

	* configure.ac: Introduce ---enable-werror, which adds -Werror to
	the compiler command line.  Enabled by default.  Disable with
	--disable-werror.
	* configure regenerate.

2006-02-21  Daniel Jacobowitz  <dan@codesourcery.com>

        * elfread.c (elf_symtab_read): Skip symbols which BFD considers
	special.

2006-02-21  Andrew Stubbs  <andrew.stubbs@st.com>

	* defs.h (directory_switch): Add prototype.
	* main.c (captured_main): Use directory_switch() instead of
	directory_command() to add directories from the -d switch.
	* source.c (directory_switch): New function.
	(add_path): Use buildargv() to parse spaces in filenames properly.
	Strip multiple trailing '/' rather than just one.

2006-02-21  Andrew Stubbs  <andrew.stubbs@st.com>

	* symfile.c (add_symbol_file_command): Use buildargv(), instead of
	hand decoding the command line, to allow use of quotes and spaces.
	(_initialize_symfile): Reorganize the help message for add-symbol-file
	such that 'help files' shows a better message.

2006-02-21  Andrew Stubbs  <andrew.stubbs@st.com>

	* sh-tdep.c (sh_generic_show_regs): Reformat both code and output.
	(sh3_show_regs, sh2e_show_regs, sh2a_show_regs): Likewise.
	(sh2a_nofpu_show_regs, sh3e_show_regs, sh3_dsp_show_regs): Likewise.
	(sh4_show_regs, sh4_nofpu_show_regs, sh_dsp_show_regs): Likewise.

2006-02-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-nat.c (lin_thread_get_thread_signals): Default to __SIGRTMIN
	and __SIGRTMIN + 1.

2006-02-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c: Add an enumeration for configurable remote
	packets.
	(remote_protocol_packets, set_remote_protocol_packet_cmd)
	(show_remote_protocol_packet_cmd): New.
	(remote_protocol_vcont)
	(set_remote_protocol_vcont_packet_cmd)
	(show_remote_protocol_vcont_packet_cmd)
	(remote_protocol_qSymbol)
	(set_remote_protocol_qSymbol_packet_cmd)
	(show_remote_protocol_qSymbol_packet_cmd)
	(remote_protocol_P, set_remote_protocol_P_packet_cmd)
	(show_remote_protocol_P_packet_cmd)
	(remote_protocol_Z)
	(set_remote_protocol_Z_software_bp_packet_cmd)
	(show_remote_protocol_Z_software_bp_packet_cmd)
	(set_remote_protocol_Z_hardware_bp_packet_cmd)
	(show_remote_protocol_Z_hardware_bp_packet_cmd)
	(set_remote_protocol_Z_write_wp_packet_cmd)
	(show_remote_protocol_Z_write_wp_packet_cmd)
	(set_remote_protocol_Z_read_wp_packet_cmd)
	(show_remote_protocol_Z_read_wp_packet_cmd)
	(set_remote_protocol_Z_access_wp_packet_cmd)
	(show_remote_protocol_Z_access_wp_packet_cmd)
	(remote_protocol_binary_download)
	(set_remote_protocol_binary_download_cmd)
	(show_remote_protocol_binary_download_cmd)
	(remote_protocol_qPart_auxv)
	(set_remote_protocol_qPart_auxv_packet_cmd)
	(show_remote_protocol_qPart_auxv_packet_cmd)
	(remote_protocol_qGetTLSAddr)
	(set_remote_protocol_qGetTLSAddr_packet_cmd)
	(show_remote_protocol_qGetTLSAddr_packet_cmd)
	(remote_protocol_p)
	(set_remote_protocol_p_packet_cmd)
	(show_remote_protocol_p_packet_cmd): Delete.

	(init_all_packet_configs): Simplify.
	(set_remote_protocol_Z_packet_cmd)
	(show_remote_protocol_Z_packet_cmd)
	(remote_check_symbols, remote_vcont_probe, remote_vcont_resume)
	(remote_fetch_registers, remote_prepare_to_store)
	(remote_store_registers, check_binary_download)
	(remote_write_bytes, remote_insert_breakpoint)
	(remote_remove_breakpoint, remote_insert_watchpoint)
	(remote_remove_watchpoint, remote_insert_hw_breakpoint)
	(remote_remove_hw_breakpoint, remote_xfer_partial)
	(remote_get_thread_local_address): Update for packet array.
	(_initialize_remote): Likewise; also update for common
	set/show commands.

2006-02-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* symfile.c (place_section): Correct retry logic.

2006-02-19  Christopher Faylor  <cgf@timesys.com>

	* win32_nat.c (cygwin_load_start): New variable.
	(cygwin_load_end): Ditto.
	(have_saved_context): Ditto.
	(saved_context): Ditto.
	(max_dll_name_len): Delete obsolete variable.
	(do_win32_fetch_inferior_registers): Use context saved from cygwin1.dll
	if we are in a cygwin signal rather than a windows signal.
	(solib_symbols_add): Detect and store beginning and end of cygwin DLL
	if dll being loaded is the cygwin DLL.
	(register_loaded_dll): Remove calculation of max_dll_name_len.
	(win32_clear_solib): Ditto.
	(handle_load_dll): Delete obsolete variable.  Remove unneeded call to
	solib_add.
	(handle_output_debug_string): Detect and store signal information sent
	by Cygwin here.
	(handle_exception): Silently pass on errors in the cygwin DLL.  Return
	-1 on first pass exception.
	(win32_continue): Remove spurious clearing of continue_status.
	(get_win32_debug_event): Deal differently first chance exception.

2006-02-19  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_in_solib_call_trampoline): Only use if no
	unwind entry.

2006-02-16  Fred Fish  <fnf@specifix.com>

	* eval.c (evaluate_subexp_standard):  For OP_TYPE, return
	a non lval value zero, of the appropriate type, when avoiding
	side effects.
	* typeprint.c (ptype_eval): Remove function and declaration.
	(ptype_command): Simplify to just a call to whatis_exp.

2006-02-15  Paul Brook  <paul@codesourcery.com>

	* arm-tdep.c (arm_skip_prologue, thumb_get_next_pc, arm_get_next_pc):
	Load insn opcodes as unsigned values.

2006-02-14  Alexandre Oliva  <aoliva@redhat.com>

	* doublest.h (DOUBLEST): Use long double only if we can scan
	it in.  Undefine HAVE_LONG_DOUBLE otherwise.
	(DOUBLEST_FORMAT): New.
	* c-exp.y (parse_number): Use it.
	* jv-exp.y (parse_number): Likewise.
	* objc-exp.y (parse_number): Likewise.
	* p-exp.y (parse_number): Likewise.
	* varobj.c (free_variable): Silence type-punning warnings.
	* tui/tui-data.h (struct tui_list): Change type of list member.
	* tui/tui-data.c: Remove no-longer-needed type casts.
	(source_windows): Silence type-punning warnings.
	* tui/tui-stack.c, tui/tui-win.c, tui/tui-winsource.c: Likewise.

2006-02-13  Mark Kettenis  <kettenis@gnu.org>

	Fix PR breakpoints/2080.
	* i386-tdep.c (struct i386_frame_cache): Add stack_align member.
	(i386_analyze_stack_align): New function.
	(i386_analyze_prologue): Use i386_analyze_stack_align.
	(i386_frame_cache): Deal with stack realignment.

2006-02-14  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el: Use more functions from gdb-ui.el.
	(gdb-break-list-regexp): Match "what" field if present.
	(gdb-stack-list-frames-regexp): Match "from" field if present.
	(gdb-stack-list-frames-handler): Present output like "info
	breakpoints" so regexps can be shared with gdb-ui

2006-02-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention native Windows support.
	* Makefile.in (gdb_select_h, ser_tcp_h): New.
	(ALLDEPFILES): Add ser-mingw.c.
	(event-loop.o, inflow.o, mingw-hdep.o, posix-hdep.o, ser-base.o)
	(ser-tcp.o, ser-unix.o): Update.
	(ser-mingw.o): New rule.
	* configure: Regenerated.
	* configure.ac: Add ser-mingw.o for mingw32.
	* ser-mingw.c: New file.
	* event-loop.c: Include "gdb_select.h".
	(gdb_select): Remove, moved to mingw-hdep.c and posix-hdep.c.
	* ser-base.c: Include "gdb_select.h".
	(ser_base_wait_for): Use gdb_select.
	* serial.c (serial_for_fd): New function.
	(serial_fdopen): Try "terminal" before "hardwire".  Initialize
	the allocated struct serial.
	(serial_wait_handle): New function.
	* serial.h (serial_for_fd, serial_wait_handle): New prototypes.
	(struct serial_ops) [USE_WIN32API]: Add wait_handle.
	* gdb_select.h: New file.
	* ser-tcp.c: Include "ser-tcp.h".  Remove unused "ser-unix.h" include.
	(net_close, net_read_prim, net_write_prim): Make global.
	(net_open): Likewise.  Pass an exception set to select.  Whitespace fix.
	Document why we can not use gdb_select.
	(_initialize_ser_tcp) [USE_WIN32API]: Do not register TCP support here.
	* ser-tcp.h: New file.
	* inflow.c (gdb_has_a_terminal): Don't initialize stdin_serial here.
	(handle_sigio): Use gdb_select.
	(initialize_stdin_serial): New function.
	* terminal.h (initialize_stdin_serial): New prototype.
	* top.c (gdb_init): Call initialize_stdin_serial.
	* mingw-hdep.c (gdb_select): New function, moved from gdb_select in
	event-loop.c.  Add exception condition support.  Use serial_for_fd
	and serial_wait_handle.  Fix timeout handling.
	* posix-hdep.c: Include "gdb_select.h".
	(gdb_select): New function.
	* remote-st.c (connect_command): Use gdb_select.
	* ser-unix.c: Include "gdb_select.h".
	(hardwire_send_break, wait_for): Use gdb_select.

2006-02-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (mingw-hdep.o, posix-hdep.o): New dependencies.
	(ALLDEPFILES): Add mingw-hdep.c and posix-hdep.c.
	* configure.ac: Add gdb_host_obs to CONFIG_OBS.  Set gdb_host_obs
	to posix-hdep.o by default.
	* configure: Regenerated.
	* configure.host: Document gdb_host_obs.  Add an entry for
	i[34567]86-*-mingw32*.
	* mingw-hdep.c, posix-hdep.c: New files.
	* utils.c (safe_strerror): Remove, moved to posix-hdep.o.

2006-02-10  Joel Brobecker  <brobecker@adacore.com>

	* defs.h (gdb_osabi): New enum value GDB_OSABI_AIX.
	* osabi.c (gdb_osabi_name): Add name of new value GDB_OSABI_AIX.
	* rs6000-tdep.h: New file.
	* rs6000-tdep.c: Include "rs6000-tdep.h".
	(rs6000_gdbarch_init): Remove enabling of software single step.
	Will be done in the AIX-specific initialization routine.
	* rs6000-aix-tdep.c: New file.
	* config/powerpc/aix.mt (TDEPFILES): Add rs6000-aix-tdep.o.
	* Makefile.in (rs6000_tdep_h): New variable.
	(rs6000-tdep.o): Update dependencies.
	(rs6000-aix-tdep.o): New rule.

2006-02-10  Joel Brobecker  <brobecker@adacore.com>

        * aix-thread.c (_initialize_aix_thread): Use add_setshow_boolean_cmd
        instead of add_setshow_zinteger_cmd to defined the aix-thread
        boolean setting.

2006-02-10  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el: Update to reflect changes in Emacs 22.0.50.

2006-02-09  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (struct dwarf2_per_cu_data): Reduce length to
	30 bits.  Add load_all_dies flag.
	(load_partial_dies): Load all DIEs if per_cu->load_all_dies is set.
	Load DW_TAG_member by default.  Remove internal_error call.
	(find_partial_die): Reload the compilation unit if we can not find
	a DIE in the cache.  Call internal_error here if we still can not
	find the DIE.

2006-02-10  Nick Roberts  <nickrob@snap.net.nz>

	* breakpoint.c (print_one_breakpoint): Add break to case
	bp_catch_vfork in switch statement.

2006-02-08  Wu Zhou  <woodzltc@cn.ibm.com>

	* config/i386/nm-i386sol2.h: Update copyright year.
	* config/mips/nm-irix5.h: Ditto.
	* config/sparc/nm-sol2.h: Ditto.
	* s390-nat.c: Ditto.
	* ppc-linux-nat.c: Ditto.

2006-02-08  Wu Zhou  <woodzltc@cn.ibm.com>

	* breakpoint.c (TARGET_REGION_OK_FOR_HW_WATCHPOINT): Delete.
	* config/i386/nm-i386sol2.h (TARGET_REGION_OK_FOR_HW_WATCHPOINT): New.
	(TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Delete.
	* config/mips/nm-irix5.h (TARGET_REGION_OK_FOR_HW_WATCHPOINT): New.
	(TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Delete.
	* config/sparc/nm-sol2.h (TARGET_REGION_OK_FOR_HW_WATCHPOINT): New.
	(TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Delete.
	* inf-ttrace.c (inf_ttrace_region_ok_for_hw_watchpoint): New.
	(inf_ttrace_region_size_ok_for_hw_watchpoint): Delete.
	(inf_ttrace_target): Delete to_region_size_ok_for_hw_watchpoint and
	add to_region_ok_for_hw_watchpoint.
	* s390-nat.c (s390_region_size_ok_for_hw_watchpoint): Delete.
	(s390_region_ok_for_hw_watchpoint): New.
	(_initialize_s390_nat): Delete to_region_size_ok_for_hw_watchpoint
	and add to_region_ok_for_hw_watchpoint.
	* target.c (default_region_size_ok_for_hw_watchpoint, 
	debug_to_region_size_ok_for_hw_watchpoint): Delete prototype.
	(update_current_target): Delete to_region_size_ok_for_hw_watchpoint
	inheritance and default_region_size_ok_for_hw_watchpoint.
	(default_region_ok_for_hw_watchpoint): If len is less than or equal
	the length of void pointer, return ok.
	(default_region_size_ok_for_hw_watchpoint): Delete.
	(debug_to_region_size_ok_for_hw_watchpoint): Delete.
	(setup_target_debug): Delete to_region_size_ok_for_hw_watchpoint.
	* target.h (struct target_ops): Delete 
	to_region_size_ok_for_hw_watchpoint.
	(TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Delete.
	
2006-02-08  Ben Elliston  <bje@au1.ibm.com>
	    Wu Zhou  <woodzltc@cn.ibm.com>

	* ppc-linux-nat.c (PTRACE_GET_DEBUGREG, PTRACE_SET_DEBUGREG,
	PTRACE_GETSIGINFO): Define.
	(last_stopped_data_address): New.
	(ppc_linux_check_watch_resources): New function.
	(ppc_linux_region_ok_for_hw_watchpoint): New function.
	(ppc_linux_insert_watchpoint): New function.
	(ppc_linux_remove_watchpoint): New function.
	(ppc_linux_stopped_data_address): New function.
	(ppc_linux_stopped_by_watchpoint): New function.
	(_initialize_ppc_linux_nat): Set the above hardware watchpoint
	related target vectors.
	* rs6000-tdep.c (rs6000_gdbarch_init): Set PPC architectures
	to have nonsteppable watchpoint.
	* target.c (default_region_ok_for_hw_watchpoint,
	debug_to_region_ok_for_hw_watchpoint): New prototypes.
	(update_current_target): Inherit to_region_ok_for_hw_watchpoint
	and set default to_region_ok_for_hw_watchpoint.
	(default_region_ok_for_hw_watchpoint): New function.
	(debug_to_region_ok_for_hw_watchpoint): New function.
	(setup_target_debug): Set to_region_ok_for_hw_watchpoint of 
	debug_target.
	* target.h (struct target_ops): Add a new target vector 
	to_region_ok_for_hw_watchpoint.
	(TARGET_REGION_OK_FOR_HW_WATCHPOINT): Define this if it is not
	defined anyplace else.

2005-02-07  Joel Brobecker  <brobecker@adacore.com>
	* symfile.c (add_symbol_file_command): Abort if the user forgot
	to provide the address when the file has been loaded.

2006-02-07  Daniel Jacobowitz  <dan@codesourcery.com>

	* MAINTAINERS: Update file based on maintainers survey.  Add
	a note to Past Maintainers.  Move unresponsive or inactive
	maintainers to Authorized Committers or Past Maintainers as
	appropriate.  Correct Jim Kingdon's email address.  Remove
	vacant areas of responsibility.

2006-02-06  Vladimir Prus  <ghost@cs.msu.su>

	* breakpoint.c (print_one_breakpoint): For MI-like UI, output
	fullname field.

2006-02-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* exceptions.h (enum errors): Rename NO_ERROR to GDB_NO_ERROR.
	* exceptions.c (exception_none, exceptions_state_mc_init)
	(throw_vfatal): Use GDB_NO_ERROR.

2006-02-02  Mark Kettenis  <kettenis@gnu.org>

	* solib-svr4.h (struct link_map_offsets): Remove r_debug_size and
	r_map_size members.  Add r_version_offset, r_version_size and
	r_ldsomap_offset members.
	* solib-svr4.c (solib_svr4_r_map): Renamed from
	fetch_link_map_member.  Simplify using read_memory_typed_address.
	(solib_svr4_r_ldsomap): New function.
	(open_symbol_file_object): Use solib_svr_r_map.
	(svr4_current_sos): Use solib_svr4_r_map and look for the dynamic
	linker by using solib_svr4_r_ldsomap.
	(svr4_ilp32_fetch_link_map_offsets)
	(svr4_lp64_fetch_link_map_offsets): Adjust for changes to `struct
	link_map_offsets'.
	* solib-legacy.c (legacy_svr4_fetch_link_map_offsets): Adjust for
	changes to `struct link_map_offsets'.
	* mipsnbsd-tdep.c (mipsnbsd_ilp32_fetch_link_map_offsets)
	(mipsnbsd_lp64_fetch_link_map_offsets): Adjust for changes to
	`struct link_map_offsets'.

2006-02-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-nat.c (struct saved_ptids, threads_to_delete)
	(record_dead_thread, prune_lwps, find_thread_from_lwp)
	(exit_lwp): New.
	(linux_nat_resume): Call prune_lwps.
	(wait_lwp, linux_nat_wait): Call exit_lwp.

2006-02-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* printcmd.c (printf_command): Make format string checking
	stricter.  Add separate cases for long_arg, ptr_arg, and
	long_double_arg.
	* utils.c (xstrvprintf): Improve the error message issued
	for a bad format string.
	* Makefile.in (GDB_WARN_CFLAGS_NO_FORMAT, INTERNAL_CFLAGS_BASE):
	New variables.
	(gnu-v3-abi.o, monitor.o, procfs.o, linux-thread-db.o): Remove
	$(NO_WERROR_CFLAGS).
	(printcmd.o): Likewise.  Use $(GDB_WARN_CFLAGS_NO_FORMAT) and
	enable -Werror.

2006-02-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (remote.o): Update.
	* remote.c (show_packet_config_cmd): Shorten messages.
	(remote_set_cmdlist, remote_show_cmdlist): Make file-static.
	(show_remote_cmd): Iterate.
	(_initialize_remote): Remove remote_set_cmdlist,
	remote_show_cmdlist.

2006-02-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (gdbtypes_h, gdbtypes.o, utils.o): Update.
	* defs.h (hashtab_obstack_allocate, dummy_obstack_deallocate): Add
	prototypes.
	* dwarf2read.c (read_subroutine_type): Use TYPE_ZALLOC.
	(hashtab_obstack_allocate, dummy_obstack_deallocate): Moved to...
	* utils.c (hashtab_obstack_allocate, dummy_obstack_deallocate):
	...here.
	* gdbtypes.c: Include "hashtab.h".
	(build_gdbtypes): Remove extra prototype.
	(struct type_pair, type_pair_hash, type_pair_eq)
	(create_copied_types_hash, copy_type_recursive): New.
	* gdbtypes.h: Include "hashtab.h".
	(TYPE_ZALLOC): New.
	(create_copied_types_hash, copy_type_recursive): New prototypes.
	* objfiles.c (free_objfile): Call preserve_values.
	* symfile.c (reread_symbols): Likewise.
	(clear_symtab_users): Remove calls to clear_value_history and
	clear_internalvars.
	* value.c (clear_value_history, clear_internalvars): Removed.
	(preserve_one_value, preserve_values): New functions.
	* value.h (clear_value_history, clear_internalvars): Removed.
	(preserve_values): New prototype.

	* tracepoint.c (_initialize_tracepoint): Do not initialize convenience
	variables here.

2006-01-29  Mark Kettenis  <kettenis@gnu.org>

	* amd64-tdep.c (amd64_classify): Handle TYPE_CODE_BOOL.
	Fixes PR tdep/2075.

2006-01-27  Joel Brobecker  <brobecker@adacore.com>

	* MAINTAINERS: Use a consistent email address for brobecker.

2006-01-27  Joel Brobecker  <brobecker@adacore.com>

	* infcmd.c (post_create_inferior): Fix copy/paste error introduced
	in the previous change.

2006-01-24  Daniel Jacobowitz  <dan@codesourcery.com>

	PR gdb/1914
	* fork-child.c (fork_inferior): Don't call
	solib_create_inferior_hook.
	* infcmd.c (post_create_inferior): Call solib_add,
	solib_create_inferior_hook, and re_enable_breakpoints_in_shlibs.
	(attach_command): Don't call solib_add or
	re_enable_breakpoints_in_shlibs.  Call post_create_inferior
	instead.
	* remote.c (remote_open_1): Don't call solib_create_inferior_hook
	or observer_notify_inferior_created.  Call post_create_inferior
	instead.
	* corelow.c: Don't include "observer.h".
	(solib_add_stub): Deleted.
	(core_open): Don't call observer_notify_inferior_created or
	solib_add_stub.  Call post_create_inferior instead.
	* inf-ptrace.c: Don't include "observer.h".
	(inf_ptrace_attach): Don't call observer_notify_inferior_created.
	* inf-ttrace.c: Don't include "observer.h".
	(inf_ttrace_attach): Don't call observer_notify_inferior_created.
	* inferior.h (solib_create_inferior_hook): Remove redundant
	prototype.
	* inftarg.c: Don't include "observer.h".
	(child_attach): Don't call observer_notify_inferior_created.
	* Makefile.in: Update dependencies.

2006-01-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* infcmd.c: Include "observer.h".
	(post_create_inferior): New function.
	(run_command_1): Call it.  Also call proceed.
	* inferior.h (post_create_inferior): New prototype.
	* Makefile.in (infcmd.o): Update.

	* gnu-nat.c (gnu_create_inferior): Don't call proceed.
	* go32-nat.c (go32_create_inferior): Likewise.
	* nto-procfs.c (procfs_create_inferior): Likewise.
	* procfs.c (procfs_create_inferior): Likewise.
	* remote-sim.c (gdbsim_create_inferior): Likewise.
	* remote.c (extended_remote_create_inferior)
	(extended_remote_async_create_inferior): Likewise.
	* win32-nat.c (win32_create_inferior): Likewise.
	* wince.c (child_create_inferior): Likewise.

	* monitor.c (monitor_create_inferior): Don't call proceed.
	Set the PC manually.
	* ocd.c (ocd_create_inferior): Likewise.
	* remote-e7000.c (e7000_create_inferior): Likewise.
	* remote-m32r-sdi.c (m32r_create_inferior): Likewise.
	* remote-mips.c (mips_create_inferior): Likewise.
	* remote-rdp.c (remote_rdp_create_inferior): Likewise.
	* remote-sds.c (sds_create_inferior): Likewise.
	* remote-st.c (st2000_create_inferior): Likewise.

	* inf-ptrace.c (inf_ptrace_create_inferior): Don't call
	proceed or observer_notify_inferior_created.
	* inf-ttrace.c (inf_ttrace_create_inferior): Likewise.
	* inftarg.c (child_create_inferior): Likewise.

2006-01-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-thread-db.c (thread_db_mourn_inferior): Remove breakpoints
	after mourning the inferior.

2006-01-24  Jim Blandy  <jimb@redhat.com>

	* valarith.c (binop_user_defined_p): Handle refs to typedefs.

2006-01-24  Fred Fish  <fnf@specifix.com>

	* parse.c (source.h): Include.
	(parse_exp_in_context):  Use static source context if no
	other context found.

2006-01-23  Andrew Stubbs  <andrew.stubbs@st.com>

	* sh-tdep.c: Include reggroups.h.
	(sh_register_reggroup_p): New function.
	(sh_gdbarch_init): Add call to set_gdbarch_register_reggroup_p.
	* Makefile.in (sh-tdep.o): Add dependency on reggroups.h.

2006-01-23  Andrew Stubbs  <andrew.stubbs@st.com>

	* cli/cli-cmds.c: Include fcntl.h.
	(source_command): Use the GDB search path to find script files.

2006-01-22  Daniel Jacobowitz  <dan@codesourcery.com>

	PR tdep/2029
	Suggested by Till Straumann <strauman@slac.stanford.edu>:
	* rs6000-tdep.c (skip_prologue): Update check for later mtlr
	instructions.  Handle PIC bcl.

2006-01-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/djgpp/README: Typo fix.
	* config/djgpp/fnchange.lst: Update.

2006-01-22  Mark Kettenis  <kettenis@gnu.org>

	* sparc-tdep.h (struct gdbarch_tdep): Add step_trap member.
	(sparc_address_from_register): New prototype.
	(sparcnbsd_step_trap): New prototype.
	* sparc-tdep.c (sparc_address_from_register): Make globally
	visible.
	(sparc_analyze_control_transfer): Change prototype to accept
	`struct gdbarch *' as first argument.  Allow for optional hnadling
	for trap instructions.
	(sparc_step_trap): New function.
	(sparc_software_single_step): Adjust call to
	sparc_analyze_control_trabsfer.
	(sparc32_gdbarch_init): Initialize TDEP->step_trap.
	* sparcnbsd-tdep.c (sparcnbsd_step_trap): New function.
	(sparc32nbsd_init_abi): Set TDEP->step_trap.
	* sparc64obsd-tdep.c (sparc64obsd_init_abi): Set TDEP->step_trap.
	* sparc64nbsd-tdep.c (sparc64nbsd_init_abi): Set TDEP->step_trap.

	* sparc-tdep.c (sparc32_return_value): Convert to use
	RETURN_VALUE_ABI_PRESERVES_ADDRESS instead of
	RETURN_VALUE_STRUCT_CONVENTION.
	(sparc32_extract_struct_value_address): Remove.

2006-01-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* avr-tdep.c (avr_address_to_pointer, avr_pointer_to_address)
	(avr_extract_return_value, avr_frame_prev_register): Use gdb_byte.

2006-01-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* solib.c (info_sharedlibrary_command): Avoid internal_error.

2006-01-21  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_mxcsr_type): New variable.
	(i386_init_types): Initialize i386_mxcsr_type.
	(i386_register_type): Return i386_mxcsr_type for %mxcsr.
	* i386-tdep.c (i386_mxcsr_type): New extern.
	* amd64-tdep.c (amd64_register_info): Return i386_mxcsr_type for
	%mxcsr.

2006-01-20  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (remote-rdi.o): Remove.
	(rdi-share/libangsd.a): Likewise.
	* README: Don't mention remote-rdi.c.
	* NEWS: Mention removal of rdi-share.
	* configure.ac: Don't configure rdi-share subdirectory.
	* remote-rdi.c: Remove.
	* config/arm/embed.mt (TDEPFILES): Remove remote-rdi.o.
	(TDEPLIBS): Remove rdi-share/libangsd.a.
	* rdi-share/Makefile.am: Remove.
	* rdi-share/Makefile.in: Likewise.
	* rdi-share/README.CYGNUS: Likewise.
	* rdi-share/aclocal.m4: Likewise.
	* rdi-share/adp.h: Likewise.
	* rdi-share/adperr.h: Likewise.
	* rdi-share/angel.h: Likewise.
	* rdi-share/angel_bytesex.c: Likewise.
	* rdi-share/angel_bytesex.h: Likewise.
	* rdi-share/angel_endian.h: Likewise.
	* rdi-share/ardi.c: Likewise.
	* rdi-share/ardi.h: Likewise.
	* rdi-share/armdbg.h: Likewise.
	* rdi-share/buffers.h: Likewise.
	* rdi-share/chandefs.h: Likewise.
	* rdi-share/channels.h: Likewise.
	* rdi-share/chanpriv.h: Likewise.
	* rdi-share/configure: Likewise.
	* rdi-share/configure.in: Likewise.
	* rdi-share/crc.c: Likewise.
	* rdi-share/crc.h: Likewise.
	* rdi-share/dbg_conf.h: Likewise.
	* rdi-share/dbg_cp.h: Likewise.
	* rdi-share/dbg_hif.h: Likewise.
	* rdi-share/dbg_rdi.h: Likewise.
	* rdi-share/devclnt.h: Likewise.
	* rdi-share/devices.h: Likewise.
	* rdi-share/devsw.c: Likewise.
	* rdi-share/devsw.h: Likewise.
	* rdi-share/drivers.c: Likewise.
	* rdi-share/drivers.h: Likewise.
	* rdi-share/etherdrv.c: Likewise.
	* rdi-share/ethernet.h: Likewise.
	* rdi-share/host.h: Likewise.
	* rdi-share/hostchan.c: Likewise.
	* rdi-share/hostchan.h: Likewise.
	* rdi-share/hsys.c: Likewise.
	* rdi-share/hsys.h: Likewise.
	* rdi-share/logging.c: Likewise.
	* rdi-share/logging.h: Likewise.
	* rdi-share/msgbuild.c: Likewise.
	* rdi-share/msgbuild.h: Likewise.
	* rdi-share/params.c: Likewise.
	* rdi-share/params.h: Likewise.
	* rdi-share/rx.c: Likewise.
	* rdi-share/rxtx.h: Likewise.
	* rdi-share/serdrv.c: Likewise.
	* rdi-share/serpardr.c: Likewise.
	* rdi-share/sys.h: Likewise.
	* rdi-share/tx.c: Likewise.
	* rdi-share/unixcomm.c: Likewise.
	* rdi-share/unixcomm.h: Likewise.

2006-01-21  Mark Kettenis  <kettenis@gnu.org>

	* hppa-linux-tdep.c (hppa_linux_sigtramp_frame_prev_register):
	Change type of last argument to `gdb_byte *'.

2006-01-20  Mark Kettenis  <kettenis@gnu.org>

	* hppa-tdep.h (hppa_in_solib_call_trampoline)
	(hppa_skip_trampoline_code): New prototypes.
	* hppa-tdep.c (struct insn_pattern): New.
	(hppa_long_branch_stub, hppa_long_branch_pic_stub)
	(hppa_import_stub, hppa_import_pic_stub, hppa_plt_stub): Moved
	here from hppa-linux-tdep.c
	(HPPA_MAX_INSN_PATTERN_LEN): New define.
	(hppa_match_insns, hppa_match_insns_relaxed, hppa_in_dyncall)
	(hppa_in_solib_call_trampoline, hppa_skip_trampoline_code): New
	functions based on functions removed from hppa-linux-tdep.c.
	* hppa-linux-tdep.c (hppa_long_branch_stub)
	(hppa_long_branch_pic_stub, hppa_import_stub)
	(hppa_import_pic_stub, hppa_plt_stub): Moved to hppa-tdep.c.
	(insns_match_pattern_relaxed, hppa_linux_in_dyncall)
	(hppa_linux_in_solib_call_trampoline)
	(hppa_linux_skip_trampoline_code): Removed.
	(hppa_linux_init_abi): Set TDEP->in_solib_call_tranpoline to
	hppa_in_solib_call_trampoline and skip_trampoline_code to
	hppa_skip_trampoline_code.
	* hppabsd-tdep.c (hppabsd_init_abi): Set
	TDEP->in_solib_call_trampoline and skip_trampoline_code.

2006-01-20  Jim Blandy  <jimb@redhat.com>

	* MAINTAINERS: Change my E-mail address.

	* configure.ac: Add -Wno-pointer-sign to list of build warnings.
	* configure: Regenerated.

2006-01-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* MAINTAINERS: Overhaul.

2006-01-18  Mark Kettenis  <kettenis@gnu.org>

	Based on a previous patch form Michal Ludvig:
	* amd64-tdep.c (amd64_sse_type): Remove.
	(amd64_register_info): Use i386_eflags_type and i386_sse_type
	where appropriate.
	(AMD64_NUM_REGS): Use ARRAY_SIZE.
	(amd64_register_type): Remove code to build amd_sse_type.
	* i386-tdep.c (i386_eflag_type): New variable.
	(i386_mmx_type, i386_sse_type): Make global.
	(i386_init_types): New function.
	(i386_build_mmx_type, i386_build_sse_type): Remove functions.
	(i386_register_type): Return i386_eflag_type, i386_sse_type and
	i386_mmx_type when appropriate.
	(_initialize_i386_tdep): Call i386_init_types.
	* i386-tdep.h (i386_eflags_type, i386_mmx_type, i386_sse_type):
	Declare extern.

	Based on a previous patch form Michal Ludvig:
	* gdbtypes.c (append_flags_type_flag, init_flags_type): New
	functions.
	(is_integral_type, rank_one_type, recursive_dump_type): Add
	support for TYPE_CODE_FLAGS.
	* gdbtypes.h (enum type_code): Add TYPE_CODE_FLAGS.
	(append_flags_type_field, init_flags_type): New prototypes.
	* ada-valprint.c (ada_val_print_1): Add support for
	TYPE_CODE_FLAGS.
	* c-valprint.c (c_val_print): Likewise.
	* f-valprint.c (f_val_print): Likewise.
	* p-valprint.c (pascal_val_print): Likewise.
	* valprint.c (val_print_type_code_flags): New function.
	* valprint.h (val_print_type_code_flags): New prototype.
	* value.c (unpack_long, value_from_longest): Add support for
	TYPE_CODE_FLAGS.

2006-01-17  Christopher Faylor  <cgf@timesys.com>

	* MAINTAINERS: Very belatedly remove myself from from the list of
	people caught up in the paper trail.

2006-01-17  Jim Blandy  <jimb@redhat.com>

	* symtab.h (struct general_symbol_info): Use gdb_byte for
	value.bytes.
	* stabsread.c (define_symbol): Use gdb_byte for the buffer holding
	a floating-point constant's value.
	* dwarf2read.c (dwarf2_const_value): Remove casts of value buffer
	to char *.
	* findvar.c (read_var_value): Eliminate needless temporary.

	* dwarf2-frame.c (dwarf2_read_section): Update forward declaration
	to match prior change to dwarf2_read_section's type.

2006-01-16  Paul Gilliam  <pgilliam@us.ibm.com>

	* ppc-tdep.h (PPC_MAX_EPILOGUE_INSTRUCTIONS): New define.
	* rs6000-tdep.c (insn_changes_sp_or_jumps)
	(rs6000_in_function_epilogue_p): New functions.
	(rs6000_gdbarch_init): Set in_function_epilogue_p.

2006-01-17  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c (struct dwarf2_per_objfile, struct comp_unit_head)
	(struct line_header, struct partial_die_info, struct dwarf_block):
	Use gdb_byte for members that refer to Dwarf section contents.
	(dwarf2_read_abbrevs, dwarf2_read_section, dwarf_decode_lines,
	dwarf_decode_macros, load_comp_unit, load_partial_dies,
	locate_pdi_sibling, partial_read_comp_unit_head, peek_die_abbrev,
	read_1_byte, read_1_signed_byte, read_2_bytes, read_4_bytes,
	read_8_bytes, read_address, read_attribute, read_attribute_value,
	read_comp_unit, read_comp_unit_head, read_die_and_children,
	read_die_and_siblings, read_full_die, read_indirect_string,
	read_initial_length, read_n_bytes, read_offset, read_partial_die,
	read_signed_leb128, read_string, read_unsigned_leb128,
	skip_children, skip_leb128, skip_one_die): Same.

2006-01-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* complaints.c (stop_whining): Make signed.
	* linux-thread-db.c (thread_db_store_registers): Use gdb_byte.

2006-01-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c, remote-fileio.c, remote.h: Update copyright
	notices.

2006-01-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (peek_die_abbrev, read_address, read_initial_length)
	(read_offset): Change BYTES_READ argument to unsigned int.
	(dwarf2_build_psymtabs_easy, read_comp_unit_head)
	(create_all_comp_units, dwarf2_get_pc_bounds)
	(dwarf_decode_line_header, var_decode_location)
	(dwarf_decode_macros): Change local BYTES_READ variables to
	unsigned int.
	(read_indirect_string): Remove obsolete cast.

2006-01-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote-fileio.c (remote_fileio_return_success): Take a gdb_byte
	argument.
	(remote_fileio_func_open, remote_fileio_func_rename)
	(remote_fileio_func_unlink, remote_fileio_func_stat)
	(remote_fileio_func_fstat, remote_fileio_func_gettimeofday)
	(remote_fileio_func_system): Cast the arguments to
	remote_read_bytes and remote_write_bytes.
	(remote_fileio_func_read, remote_fileio_func_write): Use a
	gdb_byte buffer.
	* remote.h (remote_read_bytes, remote_write_bytes): Update
	prototypes.
	* remote.c (hex2bin, bin2hex): Use gdb_byte for the BIN argument.
	(threadref_to_int): Replace bogus char * cast.
	(remote_unpack_thread_info_response): Use int for tag.
	(remote_threads_extra_info, remote_check_symbols): Cast string
	arguments to hex2bin.
	(remote_wait): Use a char buffer for packets and a gdb_byte
	buffer for registers.
	(remote_async_wait): Likewise.
	(remote_prepare_to_store, store_register_using_P)
	(remote_store_registers): Use gdb_byte buffers.
	(remote_write_bytes, remote_read_bytes): Use a gdb_byte pointer
	for MYADDR and char buffers for strings.
	(remote_xfer_partial): Add casts for string operations on READBUF.
	(remote_rcmd): Cast strings passed to bin2hex.

2006-01-16  Mark Mitchell  <mark@codesourcery.com>

	* aclocal.m4: Regenerate.

2006-01-16  Nathan Sidwell  <nathan@codesourcery.com>

	* mt-tdep.c (enum mt_gdb_regnums): Add MT_COPRO_PSEUDOREG_ARRAY,
	MT_COPRO_PSEUDOREG_DIM_1, MT_COPRO_PSEUDOREG_DIM_2,
	MT_COPRO_PSEUDOREG_REGS members.  Adjust MT_NUM_PSEUDO_REGS.
	(mt_register_name): Lazily synthesize name for coprocessor pseudo
	array registers.
	(mt_copro_register_type): New. Broken out of ...
	(mt_register_type): ... here.  Use it.  Deal with coprocessor
	pseudo array.
	(mt_select_coprocessor): New.
	(mt_pseudo_register_read, mt_pseudo_register_write): Deal with
	coprocessor pseudo array.

2006-01-16  Andrew Stubbs  <andrew.stubbs@st.com>

	* breakpoint.c (insert_breakpoints): Check that a thread exists
	before inserting thread specific breakpoints.

2006-01-15  Mark Kettenis  <kettenis@gnu.org>

	* osabi.c (generic_elf_osabi_sniffer): Fix typo in previous
	commit.

	* alpha-tdep.c (alpha_gdbarch_init): Set cannot_step_breakpoint.
	* config/alpha/nm-osf.h (CANNOT_STEP_BREAKPOINT): Remove.
	* config/alpha/nm-linux.h (CANNOT_STEP_BREAKPOINT): Remove.
	* config/alpha/nm-nbsd.h: Remove file.
	* config/alpha/nm-fbsd.h: Remove file
	* config/alpha/nbsd.mh (NAT_FILE): Remove.
	* config/alpha/fbsd.mh (NAT_FILE): Remove.

2006-01-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* macroexp.c (expand): Initialize argc.
	* stabsread.c (read_type): Handle errors from read_args.
	(read_args): Return NULL for errors.

2006-01-15  Mark Kettenis  <kettenis@gnu.org>

	* osabi.c (generic_elf_osabi_sniffer): Use memcmp instead of
	strcmp to compare string to a byte buffer.

2006-01-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* printcmd.c (output_command): Always initialize fmt.size.
	(printf_command): Use gdb_byte.
	* symfile.c (separate_debug_file_exists): Use gdb_byte.
	(load_section_callback, read_target_long_array): Likewise.
	(simple_read_overlay_table, simple_read_overlay_region_table)
	(simple_overlay_update_1): Correct calls to read_target_long_array.
	* valprint.c (partial_memory_read): Change MYADDR to a gdb_byte *.
	Also change local pointers.
	(val_print_string): Use gdb_byte.

2006-01-15  Mark Kettenis  <kettenis@gnu.org>

	* alphafbsd-tdep.c: Include "solib-svr4.h".
	(alphafbsd_init_abi): Set solib_svr4_fetch_link_map_offsets to
	svr4_lp64_fetch_link_map_offsets.
	* Makefile.in (alphafbsd-tdep.o): Update dependencies.
	* config/alpha/fbsd.mt (TDEPFILES): Add corelow.o, solib.o and
	solib-svr4.o.
	* config/alpha/fbsd.mh (NATDEPFILES): Remove solib.o, solib-svr4.o
	and solib-legacy.o.
	* config/alpha/nm-fbsd.h: Don't include "solib.h".

2006-01-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* source.c (_initialize_source): Use add_setshow_integer_cmd.

2006-01-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-fork.c (delete_fork_command, detach_fork_command): Use
	PIDGET.

2006-01-15  Mark Kettenis  <kettenis@gnu.org>

	* arm-linux-tdep.c (arm_linux_svr4_fetch_link_map_offsets):
	Remove.
	(arm_linux_init_abi): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets.
	* cris-tdep.c (cris_linux_svr4_fetch_link_map_offsets): Remove
	function.
	(cris_gdbarch_init): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets.
	* mips-linux-tdep.c (mips_linux_svr4_fetch_link_map_offsets)
	(mips64_linux_svr4_fetch_link_map_offsets): Remove functions.
	(mips_linux_init_abi): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets or svr4_lp64_fetch_link_map_offsets
	where appropriate.
	* nbsd-tdep.c (nbsd_ilp32_solib_svr4_fetch_link_map_offsets):
	Simply call svr4_ilp32_fetch_link_map_offsets.
	(nbsd_lp64_solib_svr4_fetch_link_map_offsets): Simply call
	svr4_lp64_fetch_link_map_offsets.
	* ppc-linux-tdep.c (ppc_linux_svr4_fetch_link_map_offsets): Remove
	function.
	(ppc_linux_init_abi): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets.
	* s390-tdep.c (s390_svr4_fetch_link_map_offsets)
	(s390x_svr4_fetch_link_map_offsets): Remove functions.
	(s390_gdbarch_init): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets or svr4_lp64_fetch_link_map_offsets
	where appropriate.

2006-01-15  Mark Kettenis  <kettenis@gnu.org>

	* arm-tdep.c (arm_return_value): Change type of readbuf and
	writebuf arguments to `gdb_byte *'.

	* s390-tdep.c: Do not include "tm.h" and "../bfd/bfd.h".
	* Makefile.in (s390-tdep.o): Update dependencies.

2006-01-14  Mark Kettenis  <kettenis@gnu.org>

	* sol2-tdep.h. sol2-tdep.c: New files.
	* amd64-sol2-tdep.c: Include "sol2-tdep.h".
	(amd64_sol2_init_abi): Set skip_solib_resolver.
	* i386-sol2-tdep.c: Include "sol2-tdep.h".
	(i386_sol2_init_abi): Set skip_solib_resolver.
	* sparc-sol2-tdep.c: Include "sol2-tdep.h".
	(sparc32_sol2_init_abi): Set skip_solib_resolver.
	* sparc64-sol2-tdep.c: Include "sol2-tdep.h".
	(sparc64_sol2_init_abi): Set skip_solib_resolver.
	* Makefile.in (sol2_tdep_h): New variable.
	(ALLDEPFILES): Add sol2-tdep.c.
	(sol2-tdep.o): New target.
	(amd64-sol2-tdep.o, i386-sol2-tdep.o, sparc-sol2-tdep.o)
	(sparc64-sol2-tdep.o): Update dependencies
	* config/i386/i386sol2.mt (TDEPFILES): Add sol2-tdep.o.
	* config/i386/sol2-64.mt (TDEPFILES): Add sol2-tdep.o.
	* config/sparc/sol2.mt (TDEPFILES): Add sol2-tdep.o.
	* config/sparc/sol2-64.mt (TDEPFILES): Add sol2-tdep.o.

	* hppa-linux-tdep.c: Fix copyright indentation.

	* hppa-tdep.h (enum hppa_regnum): Add HPPA_FP31R_REGNUM.
	* hppabsd-nat.c (hppabsd_fpregset_supplies_p)
	(hppabsd_supply_fpregset, hppabsd_collect_fpregset): New
	functions.
	(hppabsd_fetch_registers, hppabsd_store_registers): Handle
	floating-point registers.

2006-01-13  Mark Mitchell  <mark@codesourcery.com>

	* event-loop.c (gdb_select): Detect file descriptors that have
	been closed.

2006-01-13  Mark Kettenis  <kettenis@gnu.org>

	* hppabsd-tdep.c (hppabsd_init_abi): Set long_double_bit to 64,
	and long_double_format accordingly.

2006-01-12  Paul N. Hilfinger <hilfinger@adacore.com>

	* ada-exp.y (yyerror): Change message to ignore the argument, avoiding
	translation problems.
	* ada-lang.c (ada_value_struct_elt): Change interface and handling
	of errors to avoid translation problem (and less than optimal error
	messages).
	(ada_value_tag, ada_tag_name_1, ada_tag_name_2,	ada_evaluate_subexp):
	Use new interface to ada_value_struct_elt.
	* ada_lang.h (ada_value_struct_elt): Update declaration to new 
	interface.
	
	* ChangeLog: remove reference to ada-tasks.c from entry of
	2006-01-07.
	
2006-01-11  Mark Kettenis  <kettenis@gnu.org>

	* remote.c (get_memory_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) 
	(remote_check_symbols, remote_open_1, remote_detach) 
	(remote_async_wait, remote_fetch_registers) 
	(remote_store_registers, check_binary_download, putpkt_binary) 
	(remote_insert_breakpoint, remote_insert_watchpoint) 
	(remote_remove_watchpoint, remote_insert_hw_breakpoint) 
	(remote_remove_hw_breakpoint, remote_xfer_partial, remote_rcmd) 
	(packet_command): Remove redundant parenthesis.

2006-01-10  Mark Kettenis  <kettenis@gnu.org>

	* corefile.c (read_memory_integer, read_memory_unsigned_integer)
	(read_memory_typed_address, write_memory)
	(write_memory_unsigned_integer, write_memory_signed_integer): Use
	gdb_byte where appropriate.

	* mi/mi-main.c (mi_cmd_data_read_memory): Change type of mbus into
	'gdb_byte *'.

	* target.h (target_read_memory_partial,	target_write_memory_partial):
	Change second argument to 'gdb_byte *'.
	* target.c (target_xfer_memory_partial): Change third argument to
	'gdb_byte *'.
	(target_read_memory_partial, target_write_memory_partial): Change
	second argument to 'gdb_byte *'.

	* linespec.c (decode_objc): Make i1 and i2 unsigned.
	(find_method): Set values.sals to NULL.

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

	* amd64obsd-nat.c (amd64obsd_supply_pcb): Use 'gdb_byte *' instead
	of 'char *' in cast.

2006-01-07  Paul N. Hilfinger <hilfinger@adacore.com>

	* ada-exp.y, ada-lex.l, ada-typeprint.c: I18n markup.
	* ada-lang.c: I18n markup.  
	Editorial: change "can not" => "cannot" throughout.

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

	* Makefile.in: Sort dependencies.

2006-01-07  Eli Zaretskii  <eliz@gnu.org>

	* top.c (control_level): Remove unused variable.

2006-01-06  Fred Fish  <fnf@specifix.com>

	* objfiles.c (source.h): Include.
	(free_objfile): Update comment about clear_symtab_users().
	(free_objfile): Check all symtabs of objfile being freed and if
	one of them is the current source symtab, call
 	clear_current_source_symtab_and_line().

2006-01-04  Michael Snyder  <msnyder@redhat.com>

	Checkpoint/Restart for Linux.
	* linux-nat.c: Add support for debugging multiple forks.
	Add #include for linux-fork.h (interface spec).
	(super_mourn_inferior): New function pointer.
	(child_mourn_inferior): New function / target method.
	(linux_target): Claim to_mourn_inferior method pointer.
	(child_follow_fork): Call interface to linux-fork, conditionally
	add new fork processes to list of debugged processes.
	(kill_inferior): Use interface to linux-fork to kill
	multiple processes.

	* linux-fork.h: New file.
	* linux-fork.c: New file.  Support for debugging multiple forks
	of the same program.  Support for checkpoint and restart commands.

	* infrun.c (nullify_last_target_wait_ptid): New function.

	* Makefile.in: Add linux-fork.
	* config/*/linux.mh: Add linux-fork.
	* NEWS: Mention new functionality.

2006-01-02  Paul Hilfinger  <hilfingr@nile.gnat.com>

	* ada-exp.y (syntax definitions,write_var_or_type,write_name_assoc): 
	Change uses of "illegal" to "invalid".
	
2006-01-02  Paul N. Hilfinger  <hilfinger@adacore.com>

	* ada-exp.y: Considerable reorganization to move functionality
	from ada-lex.l to here, where it is logically more appropriate.
	The original reason, however, was to prevent premature name
	lookups for selector names in record aggregates.
	(BLOCKNAME, TYPENAME, OBJECT_RENAMING): Remove; lexer now returns
	NAME for all of these.
	(VAR): New artificial token to clarify precedence rules.
	(OTHERS): New lexeme.
	(empty_stoken): New symbol.
	(%union): Remove ssym, voidval.
	(%type): Remove <voidval> type declarations.
	(syntax definitions): Add aggregates.
	Remove distinction between NAME, TYPENAME, BLOCKNAME, OBJECT_RENAMING.
	Rename some non-terminals to be closer to reference manual usage.
	Tighten up expression syntax to disallow certain non-Ada 
	constructions such as X and then Y or else Z.
	(ada_parse): Remove initialization of left_block_context.
	(write_var_from_name): Remove.
	(write_var_or_type): New function, containing previous code from
	defunct write_var_from_name and name_lookup.
	(block_lookup): New function, moved from ada-lex.l
	(select_possible_type_sym): New function, factored out of
	name_lookup, which used to be in ada-lex.l.
	(find_primitive_type): Ditto.
	(chop_selector): Ditto.
	(write_ambiguous_var): New function, factored out of defunct
	write_var_from_name.
	(write_selectors): New function.
	(write_name_assoc): New function.
	(write_exp_op_with_string): New function.

	* ada-lex.l (processId): Change interface to return stoken.
	(tempbuf, resize_tempbuf, tempbuf_size, tempbuf_len): Remove.
	(block_lookup, name_lookup): Remove.  Functionality moved to
	ada-exp.y.
	(state IN_STRING): Remove.
	(rules): Handle string escapes in processString.
	Add 'others' token.
	Return all NAMEs, BLOCKNAMEs, OBJECT_RENAMINGs, TYPENAMEs in
	yylval.sval (as simple strings).
	All name look-ups now handled in ada-exp.y.
	Introduce "::" (COLONCOLON) token and return as separate token.
	(processId): Change return convention.  Comment.
	Leave leading "'" in place.
	(processString): New function.
	(find_dot_all): Add note to comment.
	Fix problem that allowed match only at the end.

	* ada-lang.c: Introduce aggregates.
	(find_struct_field): Add new parameter to count fields skipped, and
	allow other output parameters to be NULL.
	(value_tag_from_contents_and_address, ada_value_struct_elt): Use 
	new find_struct_field.
	(ada_index_struct_field, assign_aggregate, ada_is_array_type)
	(num_visible_fields, ada_index_struct_field_1, ada_index_struct_field)
	(num_component_specs, assign_component, assign_aggregate):
	(aggregate_assign_from_choices,aggregate_assign_positional)
	(aggregate_assign_others,add_component_interval):
	New functions.
	(ada_evaluate_subexp): Declare.
	Add aggregate-related operators.
	(ada_forward_operator_length): Declare.
	(resolve_subexp): Add cases for new aggregate operators and OP_NAME.
	Consolidate Ada operators, using ada_forward_operator_length.
	(ada_search_struct_field): Search in forward order.
	(ADA_OPERATORS): Add new aggregate operators.
	(ada_operator_length, ada_op_name, ada_forward_operator_length)
	(ada_dump_subexp_body, ada_print_subexp): Handle new aggregate 
	operators and OP_NAME.
	(ada_type_of_array): Use longest_to_int.
	(value_assign_to_component): New function.
	(ada_forward_operator_length, ada_op_name, ada_dump_subexp_body):
	Add OP_NAME case.
	(ada_forward_operator_length, ada_dump_subexp_body):
	Add OP_STRING case.

	* ada-lang.h (enum ada_operator): Add OP_AGGREGATE, OP_OTHERS,
	OP_CHOICES, OP_DISCRETE_RANGE, OP_POSITIONAL.

2006-01-02  Paul N. Hilfinger  <hilfinger@adacore.com>

	* ada-lang.c (process_raise_exception_name): Remove extraneous 
        definition from unsubmitted code.

	(is_lower_alphanum): New function.
	(ada_decode):  Add support for decoding protected object subprograms
	and entries, and of entities declared inside protected object
	subprograms. 
	Also add missing handling for__{DIGITS}+ suffixes.
	Allow '$<digits>' as valid overloading suffix.
	(is_name_suffix): Add handling for protected type entriy suffixes.
	Also add support for protected type subprogram suffixes, but keep
	it commented out for now, as there is an ambiguity between these
	entities and other internally generated entities.
	Allow '$<digits>' as valid overloading suffix.
	(is_valid_name_for_wild_match): New function.
	(wild_match): Add an exra level of verification of the entity name
	before declaring it a match for the given pattern.

	(ada_type_of_array, ada_evaluate_subexp): Use more proper 
	longest_to_int rather than cast.

	(ada_evaluate_subexp): Use "invalid" rather than "illegal" in comment.

	(ada_coerce_to_simple_array): Call check_size to make sure
	that the object size is reasonable.

	(ada_value_primitive_packed_val):  Use correct location in target 
	buffer for extracting packed record fields that are themselves records.

	(add_defn_to_vec): Do not try to replace a stub type by its full
	type. Avoids a potential infinite loop.
	
	(ada_lookup_symbol): Move return incorrectly placed return statement, 
	causing a loop that should be scanning all object files to only 
	scan the first one.

	(ada_tag_name_2): New function.
	(ada_tag_name_1): If no 'tsd' field found in the dispatching table,
	use alternative representation.

	(ada_find_renaming_symbol): Strip the function name suffix when 
	computing the XR type name.

	(ada_to_fixed_type): Try determining the tag only if we have the
	object's address.
	(to_fixed_array_type): Add comments.

	(ada_check_typedef): Replace expression checking whether the given
	type is a stub or not by a "call" to TYPE_STUB. Clearer and more
	consistent.
	
	* ada-lang.h (ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS): Allow
	'$' in addition to '.' for runtime auxiliary function name suffixes.
	See changes to ada_decode above.

	(struct task_control_block): Add field called_task.  (This change is
	to keep synchronized with our local sources; it does not affect the
	public version yet.)

	* ada-typeprint.c (ada_print_type): Use int_string for printing
	modulus of modular type.
	
	(print_range): Trivial editorial comment fix.

	* ada-valprint.c (ada_emit_char): Use normal Ada syntax for 
	double quote in string.

2006-01-01  Joel Brobecker  <brobecker@adacore.com>

	* top.c: Add 2006 to list of copyright years in file header.

2006-01-01  Joel Brobecker  <brobecker@adacore.com>

	* top.c (print_gdb_version): Update copyright year to 2006.

2006-01-01  Roger Sayle  <roger@eyesopen.com>
            Elena Zannoni <ezannoni@redhat.com>

	PR symtab/1651
	* xcoffread.c (xcoff_next_symbol_text): Check this_symtab_psymtab
	for NULL before assigning this_symtab_psymtab->objfile to objfile.
	(scan_xcoff_symtab): Initialize next_symbol_text_func.
        (Committed by Jim Blandy)

For older changes see ChangeLog-2005.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
