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>

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