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:
