2008-07-17  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* auxv.c (fprint_target_auxv): Stop at AT_NULL.

2008-07-15  Andreas Schwab  <schwab@suse.de>

	* valops.c (value_cast_pointers): Follow typedefs when checking
	result of coercion.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* block.c (block_function): Renamed to ...
	(block_linkage_function): ... this.  All callers changed.
	* block.h (block_function): Renamed to ...
	(block_linkage_function): ... this.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* mn10300-tdep.c (set_reg_offsets): Use get_frame_register_unsigned.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* frame.c (frame_sp_unwind): Delete.
	(get_frame_sp): Do not use it.
	* frame.h (frame_sp_unwind): Delete prototype.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* ia64-tdep.c (ia64_dummy_id): Use get_frame_pc.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2-frame.c (dwarf2_frame_cache): Update comment.
	* frame.c (frame_unwind_address_in_block): Delete.
	(get_frame_address_in_block): Do not use it.  Check the type
	of the next frame first.
	(frame_cleanup_after_sniffer): Update comment.
	* frame.h (frame_unwind_address_in_block): Delete prototype.
	* hppa-tdep.c (hppa_find_unwind_entry_in_block): Update comment.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* frame.c (frame_func_unwind): Delete.
	(get_frame_func): Do not use it.
	* frame.h (frame_func_unwind): Delete prototype.
	* hppa-tdep.c (hppa_frame_cache): Update comment.
	* rs6000-tdep.c (rs6000_frame_cache): Update comment.

2008-07-14  Stan Shebs  <stan@codesourcery.com>

	* remote-sim.c (init_gdbsim_ops): Remove
	TARGET_REDEFINE_DEFAULT_OPS.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* findvar.c (read_var_value): Remove unused variable.

2008-07-15  Luis Machado  <luisgpm@br.ibm.com>

	* infrun.c (handle_inferior_event): Tag threads as stopped
	before inserting breakpoints.

2008-07-15  Hui Zhu  <teawater@gmail.com>

	* MAINTAINERS: Added myself to section Write After Approval.

2008-07-14  Paul Pluzhnikov  <ppluzhnikov@google.com>

	PR gdb/2477
	* cp-abi.c (value_virtual_fn_field): Handle invalid pointers.

2008-07-14  Pedro Alves  <pedro@codesourcery.com>

	* i386-dicos-tdep.c (i386_dicos_frame_align): Delete.
	(i386_dicos_push_dummy_code): New.
	(i386_dicos_init_abi): Don't register i386_dicos_frame_align.
	Register i386_dicos_push_dummy_code.

2008-07-14  Markus Deuling  <deuling@de.ibm.com>

	* mips-tdep.c (fp_register_arg_p): Add gdbarch as paramter.
	(mips_n32n64_push_dummy_call, mips_o64_return_value)
	(mips_eabi_push_dummy_call): Update call to fp_register_arg_p.

	(MIPS_FPU_TYPE): Add gdbarch as parameter and replace current_gdbarch.
	(fp_register_arg_p, mips_dump_tdep, show_mipsfpu_command)
	(mips_n32n64_fp_arg_chunk_p): Update caller.

	(mips_n32n64_fp_arg_chunk_p): Add gdbarch as paramter.
	(mips_n32n64_push_dummy_call): Update caller.

	(MIPS_LAST_ARG_REGNUM): Add gdbarch as parameter and replace
	current_gdbarch.
	(mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call)
	(mips_o32_push_dummy_call, mips_o64_push_dummy_call): Update caller.


	(MIPS_LAST_FP_ARG_REGNUM): Add gdbarch as parameter and replace
	current_gdbarch.
	(mips_eabi_push_dummy_call, mips_o32_push_dummy_call)
	(mips_o64_push_dummy_call): Update caller.

	(MIPS_EABI): Add gdbarch as parameter and replace current_gdbarch.
	(fp_register_arg_p, mips_dump_tdep): Update caller.

	(set_reg_offset): Add gdbarch as parameter and replace current_gdbarch.
	(mips16_scan_prologue, mips32_scan_prologue): Update caller.

	(reset_saved_regs): Make static.  Add gdbarch as parameter.  Replace
	current_gdbarch.
	(mips32_scan_prologue): Update caller.

	(heuristic_proc_start): Add gdbarch as parameter. Replace
	current_gdbarch.
	(mips_insn16_frame_cache, mips_insn32_frame_cache): Update caller.

	* mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers)
	(mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at
	the current architecture. Update call to getregs_supplies.
	(getregs_supplies): Add gdbarch as parameter and replace
	current_gdbarch.

	* mipsnbsd-tdep.c (mipsnbsd_get_longjmp_target): Use get_frame_arch to
	get at the current architecture. Update call to NBSD_MIPS_JB_OFFSET and
	NBSD_MIPS_JB_ELEMENT_SIZE.
	(NBSD_MIPS_JB_ELEMENT_SIZE, NBSD_MIPS_JB_OFFSET): Add gdbarch and
	replace current_gdbarch.

	* remote-mips.c (mips_map_regno): Add gdbarch as parameter and replace
	current_gdbarch.
	(mips_fetch_registers, mips_store_registers): Update call
	to mips_map_regno.
	(mips_load): Use get_regcache_arch to get at the current_architecture
	and replace current_gdbarch.

2008-07-13  Pedro Alves  <pedro@codesourcery.com>

	* thread.c (restore_selected_frame): On fail to restore, select
	the innermost frame, and don't crash when warning the user.

2008-07-13  Hui Zhu  <teawater@gmail.com>

	* symtab.c (expand_line_sal): Fix a memory leak.

2008-07-13  Pedro Alves  <pedro@codesourcery.com>

	* utils.c (struct continuation): Define as inheriting struct
	cleanup.
	(add_continuation, do_all_continuations)
	(discard_all_continuations, add_intermediate_continuation)
	(do_all_intermediate_continuations)
	(discard_all_intermediate_continuations): Adjust.

2008-07-13  Vladimir Prus  <vladimir@codesourcery.com>

	Skip varobj in running threads.
	* mi/mi-cmd-var.c (mi_cmd_var_update): If varobj's
	thread is not stopped, skip the varobj.
	* Makefile.in: Update dependencies.

2008-07-13  Vladimir Prus  <vladimir@codesourcery.com>

	Enable all commands while inferiour is running
	* mi/mi-main.c (mi_cmd_execute): Don't check if
	inferiour is executing.

2008-07-13  Vladimir Prus  <vladimir@codesourcery.com>

	Allow all CLI command even if target is executing.
	* gdb/top.c (execute_command_1): Don't check if the inferiour
	is running.

2008-07-13  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-main.c (mi_cmd_execute): Remove unused variable.
	Fix printing of frame, when frame is wrong.

2008-07-12  Ulrich Weigand  <uweigand@de.ibm.com>

	* spu-tdep.c (spu_frame_unwind_cache): Do not error if
	backchain is unreadable.

2008-07-12  Ulrich Weigand  <uweigand@de.ibm.com>

	* spu-linux-nat.c: Include "gdbthread.h".
	(spu_child_post_startup_inferior): Register main thread.
	(spu_child_post_attach): Likewise.
	* Makefile.in (spu-linux-nat.o): Update dependencies.

2008-07-12  Pedro Alves  <pedro@codesourcery.com>

	Rewrite continuations internals on top of cleanups and plug
	continuation arguments leaks.

	* defs.h (struct continuation): Make it opaque.
	(add_continuation, add_intermediate_continuation): Drop the int
	argument of the continuation hook argument.  Add
	continuation_free_args argument.
	(do_all_continuations, do_all_intermediate_continuations): Drop
	the error_p argument.

	* utils.c (add_continuation): Drop the int argument of the
	continuation hook argument.  Add continuation_free_args argument.
	Reimplement on top of cleanups.
	(do_all_continuations): Drop error argument.  Reimplement on top
	of cleanups.
	(discard_all_continuations): Reimplement on top of cleanups.
	(add_intermediate_continuation): Drop the int argument of the
	continuation hook argument.  Add continuation_free_args argument.
	Reimplement on top of cleanups.
	(do_all_intermediate_continuations): Drop error argument.
	Reimplement on top of cleanups.
	(discard_all_intermediate_continuations): Reimplement on top of
	cleanups.

	* breakpoint.c (until_break_command_continuation): Drop error
	argument.  Add xfree as continuation argument deleter.

	* inf-loop.c (inferior_event_handler): On error, discard all
	continuations.  Adjust to new do_all_intermediate_continuations
	and do_all_continuations interfaces.

	* infcmd.c (step_1_continuation): Drop error_p argument.  Adjust.
	Pass xfree as continuation argument deleter.
	(finish_command_continuation): Drop error_p argument.  Adjust.
	(finish_command_continuation_free_arg): New.
	(finish_command): Pass finish_command_continuation_free_arg as
	continuation argument deleter.  Adjust to new do_all_continuations
	interfaces.
	(attach_command_continuation): Drop error_p argument.
	(attach_command_continuation_free_args): New.
	(attach_command): Pass attach_command_continuation_free_args as
	continuation argument deleter.

	* interps.c (interp_set): Adjust to new do_all_continuations
	interfaces.

	* event-top.c (stdin_event_handler): In error, also discard the
	intermediate continuations.

2008-07-12  Pedro Alves  <pedro@codesourcery.com>

	Replace struct continuation_args by void* and per command structs.

	* top.c (execute_command): Remove unused arg1 and arg2 locals.

	* breakpoint.c (struct until_break_command_continuation_args):
	New.
	(until_break_command_continuation): Take a void* instead of a
	continuations_arg.  Adjust.
	(until_break_command): Adjust to use struct
	until_break_command_continuation_args instead of struct
	continuation_arg.

	* infcmd.c (struct step_1_continuation_args): New.
	(step_1_continuation): Take a void* instead of a
	continuations_arg.  Adjust to use struct step_1_continuation_args.
	(step_once): Adjust to use struct step_1_continuation_args.

	(struct finish_command_continuation_args): New.
	(finish_command_continuation): Take a void* instead of a
	continuations_arg.  Adjust to use struct
	finish_command_continuation_args.
	(finish_command): Adjust to use struct
	finish_command_continuation_args.
	(struct attach_command_continuation_args): New.
	(attach_command_continuation): Take a void* instead of a
	continuations_arg.  Adjust to use struct
	attach_command_continuation_args.
	(attach_command): Adjust to use struct
	attach_command_continuation_args.

	* defs.h (struct continuation_arg): Delete.
	(struct continuation): Replace the struct continuation_arg*
	parameter of continuation_hook by a void*.  Replace "arg_list"
	member by a new "args" member with void* type.
	(add_continuation, add_intermediate_continuation): Replace struct
	continuation_arg type usages by void* usages.

	* utils.c (add_continuation, do_all_continuations)
	(add_intermediate_continuation)
	(do_all_intermediate_continuations): Replace struct
	continuation_arg type usages by void* usages.  Pass "args" instead
	of "arg_list".

2008-07-12  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (struct thread_stepping_state): Delete sal member.
	(init_thread_stepping_state): Add local sal.  Use it instead of
	tss->sal.
	(handle_inferior_event): New local stop_pc_sal.  Use it instead of
	tss->sal.
	(step_into_function): Add local stop_func_sal.  Use it instead of
	tss->sal.

2008-07-12  Vladimir Prus  <vladimir@codesourcery.com>

	Implement -exec-continue/-exec-interrupt --all.
	* infcmd.c (continue_1): New, extracted from
	(continue_command): ...here.
	(interrupt_target_1): New, extracted from
	(interrupt_target_command): ...here.
	* inferior.h (continue_1, interrupt_target_1): New.
	* mi/mi-main.c (mi_cmd_exec_continue)
	(mi_cmd_exec_interrupt): Handle --all.

2008-07-12  Vladimir Prus  <vladimir@codesourcery.com>

	Implement --thread and --frame.
	* gdbthread.h (find_thread_id): Declare.
	* thread.c (find_thread_id): Make non-static.
	* mi/mi-main.c (mi_cmd_execute): Switch to the right
	thread and frame, if necessary.
	* mi/mi-parse.c (mi_parse): Handle --thread and --frame.
	* mi/mi-parse.h (strcut mi_parse): New fields thread and frame.

2008-07-12  Vladimir Prus  <vladimir@codesourcery.com>

	* infrun.c (resume): Discard cleanups on early exit path.

2008-07-12  Vladimir Prus  <vladimir@codesourcery.com>

	* infrun.c (normal_stop): For MI, report which threads
	were stopped.

2008-07-12  Vladimir Prus  <vladimir@codesourcery.com>

	Report thread state in -thread-info output.
	* thread.c (print_thread_info): Add new field "state".

2008-07-11  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (handle_inferior_event): Also ignore a
	TARGET_SIGNAL_TRAP on a STOP_QUIETLY_NO_SIGSTOP.

2008-07-11  Tom Tromey  <tromey@redhat.com>

	* completer.c (complete_line_internal): New function, from
	complete_line.  Add 'for_help' parameter.
	(complete_line): Use it.
	(command_completer): Move later.  Rewrite.

2008-07-11  Pedro Alves  <pedro@codesourcery.com>

	* thread.c (thread_apply_command): Move making the cleanup out of
	the loop.

2008-07-11  Pedro Alves  <pedro@codesourcery.com>

	Exited threads.

	* thread.c (enum thread_state): New.
	(thread_state main_thread_running): Delete, in favor of...
	(thread_state main_thread_state): ... this.  Update throughout.
	(clear_thread_inferior_resources): New, split from free_thread.
	(free_thread): Call clear_thread_inferior_resources.
	(init_thread_list): Set main thread to stopped state.
	(add_thread_silent): Take care of PTID reuses.
	(delete_thread): If deleting inferior_ptid or a thread with
	refcount > 0, mark it as exited, but still keep it in the list.
	Only notify of thread exits, if we haven't done so yet.
	(iterate_over_threads): Make it safe to delete threads while
	iterating over them.
	(do_captured_list_thread_ids): Don't account for exited threads.
	(thread_alive): Check for the THREAD_EXITED state, and don't set
	ptid to -1 on exited threads.
	(set_running): Update to account for extra possible states.
	(is_thread_state): New.
	(is_stopped, is_exited): New.
	(is_running): Implement in terms of is_thread_state.
	(any_running): Update.
	(print_thread_info): Update.  Account for exited threads.  Don't
	warn about missed frame restoring here, its done in the cleanup.
	(switch_to_thread): Don't read from a thread that has gone.
	(restore_current_thread): In non-stop mode, do a full context
	switch.
	(restore_selected_frame): Add a frame_level argument.  Rewrite.
	(struct current_thread_cleanup): Add selected_frame_level and
	was_stopped members.
	(do_restore_current_thread_cleanup): Check if thread was stopped
	and still is, and if the target has registers, stack and memory
	before restoring the selected frame.  Don't delete the cleanup
	argument here.
	(restore_current_thread_cleanup_dtor): New.
	(make_cleanup_restore_current_thread): Remove all arguments.
	Rewrite.
	(thread_apply_all_command): Update.  Prune threads.
	(thread_apply_command): Update.
	(thread_command): Account for currently selected exited thread.
	(do_captured_thread_select): Check for a running thread.  Prune
	threads.
	(_initialize_thread): Make "info threads", "thread", "thread
	apply", and "thread apply all" appliable without a selected thread.
	* gdbthread.h (struct thread_info): Replace running_ by state_.
	Add refcount.
	(is_exited, is_stopped): Declare.
	(make_cleanup_restore_current_thread): Remove all arguments.
	* infrun.c: Include "event-top.h".
	(fetch_inferior_event): In non-stop mode, restore selected thread
	and frame after handling the event and running breakpoint
	commands.  Display GDB prompt if needed.
	(normal_stop): In non-stop mode, don't print thread switching
	notice.
	* cli/cli-decode.c (set_cmd_no_selected_thread_ok)
	(get_cmd_no_selected_thread_ok): New.
	* cli/cli-decode.h (CMD_NO_SELECTED_THREAD_OK): New.
	(set_cmd_no_selected_thread_ok, get_cmd_no_selected_thread_ok):
	Declare.
	* cli/cli-cmds.c: Set "pwd", "help", "info", "show" as
	no-selected-thread ok.
	* top.c (execute_command): Check for non no-selected-thread-ok
	commands.
	* linux-nat.c (struct saved_ptids, threads_to_delete)
	(record_dead_thread, prune_lwps): Delete.
	(exit_lwp): Unconditionally delete thread.
	(linux_nat_resume): Remove prune_lwps call.
	* infcmd.c (proceed_thread_callback): Check if !is_stopped instead
	of is_running.  Adjust to make_cleanup_restore_current_thread
	interface change.
	* mi/mi-main.c (mi_cmd_execute): Only allow a few commands if the
	selected thread has exited.
	* inf-loop.c (inferior_event_handler): Don't display the prompt
	here.
	* varobj.c (c_value_of_root): Update.
	* defs.h (make_cleanup_dtor): Declare.
	* utils.c (make_cleanup_dtor): New.

	* Makefile.in (infrun.o): Depend on $(event_top_h).

2008-07-11  Pedro Alves  <pedro@codesourcery.com>

	Add "continue -a" and "interrupt -a" options for non-stop mode.

	* infcmd.c (proceed_thread_callback, do_context_switch_to): New.
	(continue_command): Add "-a" option.
	(interrupt_target_command): Add "-a" option.
	(_initialize_infcmd): Add extend help of continue and interrupt
	command to mention the new "-a" option.  Mark "continue" async ok.

2008-07-10  Doug Evans  <dje@google.com>

	Add "set print symbol-loading on|off".
	* NEWS: Document new option.
	* symfile.h (print_symbol_loading): Declare.
	* symfile.c (print_symbol_loading): New global.
	(symbol_file_add_with_addrs_or_offsets): Only print "Reading symbols
	from ..." if print_symbol_loading.
	(_initialize_symfile): Add set/show print symbol-loading.
	* solib.c (solib_read_symbols): Only print "Loaded symbols for ..."
	if print_symbol_loading.

2008-07-10  Pedro Alves  <pedro@codesourcery.com>

	Non-stop linux native.

	* linux-nat.c (linux_test_for_tracefork): Block events while we're
	here.
	(get_pending_status): Implement non-stop mode.
	(linux_nat_detach): Stop threads before detaching.
	(linux_nat_resume): In non-stop mode, always resume only a single
	PTID.
	(linux_handle_extended_wait): On a clone event, in non-stop mode,
	add new lwp to GDB's thread table, and mark as running, executing
	and stopped appropriately.
	(linux_nat_filter_event): Don't assume there are other running
	threads when a thread exits.
	(linux_nat_wait): Mark the main thread as running and executing.
	In non-stop mode, don't stop all lwps.
	(linux_nat_kill): Stop lwps before killing them.
	(linux_nat_thread_alive): Use signal 0 to detect if a thread is
	alive.
	(send_sigint_callback): New.
	(linux_nat_stop): New.
	(linux_nat_add_target): Set to_stop to linux_nat_stop.

	* linux-nat.h (thread_db_attach_lwp): Declare.

	* linux-thread-db.c (thread_get_info_callback): Check for new
	threads if we have none.
	(thread_from_lwp, enable_thread_event): Set proc_handle.pid to the
	stopped lwp.  Check for new threads if we have none.
	(thread_db_attach_lwp): New.
	(thread_db_init): Set proc_handle.pid to inferior_ptid.
	(check_event): Set proc_handle.pid to the stopped lwp.
	(thread_db_find_new_threads): Set proc_handle.pid to any stopped
	lwp available, bail out if there is none.

	* linux-fork.c (linux_fork_killall): Use SIGKILL instead of
	PTRACE_KILL.

2008-07-10  Kevin Buettner  <kevinb@redhat.com>

	* rs6000-tdep.c (ppc_displaced_step_fixup): Change type of
	`current_pc' from CORE_ADDR to ULONGEST.

	* remote-sim.c (gdbsim_cntrl_c): Pass remote_sim_ptid to
	gdbsim_stop().

2008-07-10  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* NEWS (New commands): Mention "set disable-randomization".
	* configure.ac: Add check for HAVE_PERSONALITY and
	HAVE_DECL_ADDR_NO_RANDOMIZE.
	* configure, config.in: Regenerate.
	* linux-nat.c [HAVE_PERSONALITY]: New include <sys/personality.h>.
	[HAVE_PERSONALITY] [!HAVE_DECL_ADDR_NO_RANDOMIZE]: Set
	ADDR_NO_RANDOMIZE.
	(disable_randomization, show_disable_randomization)
	(set_disable_randomization): New.
	(linux_nat_create_inferior) [HAVE_PERSONALITY]: New variables
	PERSONALITY_ORIG and PERSONALITY_SET.  Disable randomization upon the
	variable DISABLE_RANDOMIZATION.
	(_initialize_linux_nat): Call ADD_SETSHOW_BOOLEAN_CMD for the variable
	DISABLE_RANDOMIZATION.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Adjust all targets to new target_stop interface.

	* gnu-nat.c (gnu_stop): Add ptid argument.
	* go32-nat.c (go32_stop): Add ptid argument.
	(go32_create_inferior): Pass inferior_ptid to go32_stop.
	* hpux-thread.c (hpux_thread_stop): Add ptid argument.
	* monitor.c (monitor_stop): Add ptid argument.
	(monitor_open): Pass inferior_ptid to monitor_stop.
	(monitor_interrupt): Pass inferior_ptid to target_stop.
	(monitor_stop): Add ptid argument.
	* nto-procfs.c (nto_interrupt): Pass inferior_ptid to target_stop.
	(procfs_create_inferior): Add ptid argument.
	* procfs.c (procfs_stop): Add ptid argument.
	* remote-m32r-sdi.c (m32r_stop): Add ptid argument.
	* remote-sim.c (gdbsim_stop): Add ptid argument.
	* sol-thread.c (sol_thread_stop): Add ptid argument.
	* win32-nat.c (win32_stop): Add ptid argument.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Non-stop inferior control.

	* infrun.c (resume): In non-stop mode, always resume just one
	thread.
	(proceed): Don't call prepare_to_proceed in non-stop mode.
	(fetch_inferior_event): In non-stop mode, switch context before
	handling the event.
	(error_is_running, ensure_not_running): New.
	(handle_inferior_event): In non-stop mode: Mark only the event
	thread as stopped.  Require that the target module manages adding
	threads to the thread list.  Assert that there isn't a
	deferred_step_ptid set.  Don't switch to infwait_thread_hop_state.
	(normal_stop): Only mark not-running if inferior hasn't exited.
	In non-stop mode, only mark the event thread.

	* thread.c:Include "cli/cli-decode.h".
	(print_thread_info): Don't read from a running thread.
	Output "(running)" if thread is running.
	(switch_to_thread): Don't read stop_pc if thread is executing.
	(do_restore_current_thread_cleanup): Don't write to a running
	thread.
	(thread_apply_all_command): Don't read from a running thread.  In
	non-stop mode, do a full context-switch instead of just switching
	threads.
	(thread_apply_command): In non-stop mode, do a full context-switch
	instead of just switching threads.
	(do_captured_thread_select): Likewise.  Inform user if selected
	thread is running.
	(_initialize_thread): Mark "info threads" and "thread" and
	async_ok.

	* inf-loop.c (inferior_event_handler): In non-stop mode, don't
	unregister the target from the event loop.

	* infcmd.c (continue_command, step_1, jump_command)
	(signal_command): Ensure the selected thread isn't running.
	(interrupt_target_command): In non-stop mode, interrupt only the
	selected thread.

	* inferior.h (error_is_running, ensure_not_running): Declare.

	* target.h (struct target_ops): Add ptid argument to the to_stop
	member.
	(target_stop): Add ptid_t argument.

	* target.c (update_current_target): Add ptid argument to to_stop's
	type.
	(debug_to_stop): Add ptid_t argument.
	(debug_to_rcmd): Set to_stop_ptid.

	* remote.c (remote_stop): Add ptid_t argument.
	(async_remote_interrupt): Add inferior_ptid to target_stop.
	* inf-ptrace.c (inf_ptrace_stop): Add ptid argument.

	* Makefile.in (thread.o): Depend on $(cli_decode_h).

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Don't rely on ecs->wait_for_more.

	* infrun.c (proceed): Clear the stepping state, set
	previous_inferior_ptid and clear infwait state.
	(wait_for_inferior): Don't clear the stepping state, set
	previous_inferior_ptid, or clear the infwait state here.
	(fetch_inferior_event): Don't clear the stepping state, set
	previous_inferior_ptid, or clear the infwait state here.  Don't
	condition on wait_for_more.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Refactor infrun a bit.

	* infrun.c (currently_stepping): Take a struct
	thread_stepping_state instead of an execution_control_state.
	(struct thread_stepping_state): New, split from
	execution_control_state.
	(gtss, tss): New globals.
	(proceed): Clear the stepping state, set previous_inferior_ptid
	and clear infwait state.
	(init_wait_for_inferior): Clear the stepping state,
	previous_inferior_ptid and infwait state.
	(waiton_ptid, infwait_state): New, split from
	execution_control_state.
	(struct execution_control_state): Members that persist through
	events moved out to either struct thred_stepping_state or made
	global.  Deleted unneeded wp, saved_inferior_ptid, tmpstatus.
	(wait_for_inferior, fetch_inferior_event): Use local
	execution_control_state.  Update to execution_control_state split.
	(init_execution_control_state): Adjust.
	(init_thread_stepping_state): New, extracted from
	init_execution_control_state.
	(context_switch): Take a ptid instead of an
	execution_control_state.
	(context_switch_to): Adjust.
	(adjust_pc_after_break): Adjust.
	(init_infwait_state): New.
	(handle_inferior_event): Adjust.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>
	    Vladimir Prus  <vladimir@codesourcery.com>

	Per-thread commands.

	* gdbthread.h: Remove unneeded forward declarations.
	Include "inferior.h".
	(struct thread_info): Add continuations,
	intermediate_continuations, proceed_to_finish, step_over_calls,
	stop_step, step_multi and stop_signal members.
	(save_infrun_state): Add continuations,
	intermediate_continuations, proceed_to_finish, step_over_calls,
	stop_step, step_multi, stop_signal and stop_bpstat parameters.
	(load_infrun_state): Add continuations,
	intermediate_continuations, proceed_to_finish, step_over_calls,
	stop_step, step_multi, stop_signal and stop_bpstat parameters.

	* thread.c (load_infrun_state): In non-stop mode, load
	continuations, intermediate_continuations, proceed_to_finish,
	step_over_calls, stop_step, step_multi and stop_signal.
	(save_infrun_state): Store continuations,
	intermediate_continuations, proceed_to_finish, step_over_calls,
	stop_step, step_multi, stop_signal and stop_bpstat.
	(save_infrun_state): Store continuations,
	intermediate_continuations, proceed_to_finish, step_over_calls,
	stop_step, step_multi, stop_signal and stop_bpstat.
	(free_thread): Clear The thread's stop_bpstat.

	* inferior.h (context_switch_to): Declare.

	* infrun.c (ecss): New global.
	(context_switch): Context switch continuations,
	intermediate_continuations, proceed_to_finish, step_over_calls,
	stop_step, step_multi, stop_signal and stop_bpstat.
	(wait_for_inferior): Use global ecss.
	(async_ecss, async_ecs): Delete.
	(fetch_inferior_event): Use global ecss.
	(context_switch_to): New.

	* top.c (execute_command): In non-stop, only check if the current
	thread is running, in all-stop, check if there's any thread
	running.

	* breakpoint.c (bpstat_remove_breakpoint): New.
	(bpstat_remove_breakpoint_callback): New.
	(delete_breakpoint): Clear the stop_bpstats of all threads.

	* mi/mi-main.c (mi_cmd_execute): In non-stop, only check if the
	current thread is running, in all-stop, check if there's any
	thread running.

	* Makefile.in (gdbthread_h): Depend on $(inferior_h).

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Add non_stop global.

	* inferior.h (non_stop): Declare.
	* infrun.c (non_stop, non_stop_1): New.
	(set_non_stop, show_non_stop): New.
	(_initialize_infrun): Add "set/show non-stop" command.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Adjust fork/vfork/exec to pass ptids around.

	* target.h (struct target_waitstatus): Store related_pid as a ptid.
	(inferior_has_forked, inferior_has_vforked, inferior_has_execd):
	Take a ptid_t.
	* breakpoint.h (struct breakpoint): Change forked_inferior_pid
	type to ptid.
	* breakpoint.c (print_it_typical, bpstat_check_location)
	(print_one_breakpoint_location, set_raw_breakpoint_without_location)
	(create_fork_vfork_event_catchpoint): Adjust.
	* infrun.c (fork_event): Change parent_pid and child_pid types to
	ptid.
	(follow_exec, inferior_has_forked, inferior_has_vforked)
	(inferior_has_execd): Take a ptid_t and don't trim it.
	* linux-thread-db.c (thread_db_wait): Don't trim the returned ptid.
	* linux-nat.c (linux_child_follow_fork): Adjust.
	* inf-ptrace.c (inf_ptrace_wait): Adjust.
	* inf-ttrace.c (inf_ttrace_wait): Adjust.
	* win32-nat.c (get_win32_debug_event): Don't set related_pid.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Add "executing" property to threads.

	* inferior.h (target_executing): Delete.
	* gdbthread.h (struct thread_info): Add executing_ field.
	(set_executing, is_executing): New.
	* thread.c (main_thread_executing): New.
	(init_thread_list): Clear it and also main_thread_running.
	(is_running): Return false if target has no execution.
	(any_running, is_executing, set_executing): New.

	* top.c: Include "gdbthread.h".
	(target_executing): Delete.
	(execute_command): Replace target_executing check by any_running.
	* event-top.c: Include "gdbthread.h".
	(display_gdb_prompt, command_handler): Replace target_executing by
	is_running.
	* inf-loop.c: Include "gdbthread.h".  Don't mark as not executing
	here.  Replace target_executing by is_running.
	* infrun.c (handle_inferior_event): Mark all threads as
	not-executing.
	* linux-nat.c (linux_nat_resume): Don't mark thread as executing
	here.
	* stack.c (get_selected_block): Return null if inferior is
	executing.
	* target.c (target_resume): Mark resumed ptid as executing.
	* breakpoint.c (until_break_command): Replace target_executing
	check by is_executing.
	* remote.c (remote_async_resume): Don't mark inferior as executing
	here.
	* mi/mi-interp.c (mi_cmd_interpreter_exec): Replace target_executing
	by any_running.

	* mi/mi-main.c (mi_cmd_exec_interrupt, mi_cmd_execute)
	(mi_execute_async_cli_command): Replace target_executing by
	is_running.

	* frame.c (get_current_frame): Error out if the current thread is
	executing.
	(has_stack_frames): New.
	(get_selected_frame, deprecated_safe_get_selected_frame): Check
	has_stack_frames.

	* Makefile.in (event-top.o, frame.o, inf-loop.o, top.o): Depend on
	$(gdbthread_h).

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	* symfile.c (load_command): Reopen the exec file and reread
	symbols before anything else.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	* remote-sim.c: Include gdbthread.h.
	(remote_sim_ptid): New global.
	(gdbsim_create_inferior): Silently add the main task to GDB's
	thread list.
	(gdbsim_close, gdbsim_mourn_inferior): Silently delete the main
	task from GDB's thread list.
	(gdbsim_resume): Adjust to use remote_sim_ptid.
	(gdbsim_thread_alive, gdbsim_pid_to_str): New.
	(init_gdbsim_ops): Register gdbsim_thread_alive and
	gdbsim_pid_to_str.
	(_initialize_remote_sim): Initialize remote_sim_ptid.
	* Makefile.in (remote-sim.o): Depend on $(gdbthread_h).

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	* monitor (monitor_ptid): New global.
	(monitor_open): Silently add the main task to GDB's thread list.
	(monitor_close, monitor_mourn_inferior): Silently delete the main
	task from GDB's thread list.
	(monitor_thread_alive, monitor_pid_to_str): New.
	(init_base_monitor_ops): Register monitor_thread_alive and
	monitor_pid_to_str.
	(_initialize_remote_monitors): Initialize monitor_ptid.

	* gdbthread.h (delete_thread_silent): Declare.
	* thread.c (delete_thread): Rename to ...
	(delete_thread_1): ... this.  Add "silent" parameter.  If silent,
	don't do exit notifications.
	(delete_thread, delete_thread_silent): New, as wrappers to
	delete_thread_1.

2008-07-08  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (update_global_location_list): Add boolean
	"should_insert" argument.  Only insert locations if caller told it
	too.
	(update_global_location_list_nothrow): Add boolean "should_insert"
	argument.  Pass it to update_global_location_list.
	(insert_breakpoints, create_longjmp_breakpoint)
	(create_overlay_event_breakpoint, enable_overlay_breakpoints)
	(create_thread_event_breakpoint, create_solib_event_breakpoint)
	(create_fork_vfork_event_catchpoint, create_exec_event_catchpoint)
	(enable_watchpoints_after_interactive_call_stop)
	(set_momentary_breakpoint, create_breakpoints)
	(break_command_really, watch_command_1)
	(create_ada_exception_breakpoint, update_breakpoint_locations)
	(do_enable_breakpoint, enable_command): Pass true to
	update_global_location_list.
	(bpstat_stop_status, disable_overlay_breakpoints)
	(disable_watchpoints_before_interactive_call_start)
	(delete_breakpoint, disable_breakpoint, disable_command): Pass
	false to update_global_location_list.
	(update_breakpoints_after_exec): Don't temporarily disable
	always-inserted mode.

2008-07-08  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (mark_breakpoints_out): Make public.
	(update_breakpoints_after_exec): Don't call mark_breakpoints_out
	here.  Update comment.
	* breakpoint.h (mark_breakpoints_out): Declare.

	* linux-nat.c (linux_handle_extended_wait): On
	TARGET_WAITKIND_EXECD, call mark_breakpoints_out.
	* inf-ttrace.c (inf_ttrace_wait): Likewise.

2008-07-08  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (follow_exec): Reset shared libraries before adding the
	main exec file.

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

	* breakpoint.c (bpstat_copy): Call RELEASE_VALUE on the new OLD_VAL.

2008-07-07  Pedro Alves  <pedro@codesourcery.com>

	* i386-dicos-tdep.c: Include "inferior.h".
	(i386_dicos_frame_align): New.
	(i386_dicos_init_abi): Register i386_dicos_frame_align.  Set call
	dummy location ON_STACK.
	* Makefile.in (i386-dicos-tdep.o): Depend on $(inferior_h).

2008-07-07  Joel Brobecker  <brobecker@adacore.com>

	* gstdint.h: New file.

2008-07-05  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-interp.c (mi_on_resume): Don't try to report
	resumed thread it the thread list is empty.

2008-07-05  Pierre Muller  <muller@ics.u-strasbg.fr>

	* cli/cli-decode.c (add_setshow_optional_filename_cmd): Set
	completer for set to filename_completer.

	NEWS: Mention it.

2008-07-04  Vladimir Prus  <vladimir@codesourcery.com>

	Implement -target-attach.
	* mi/mi-cmds.c (mi_cmds): Forward -target-attach to CLI attach.

2008-06-21  Hui Zhu  <teawater@gmail.com>

	* target-descriptions.c (maint_print_c_tdesc_cmd): Fix a memory leak.

2008-07-03  Pedro Alves  <pedro@codesourcery.com>

	* config/i386/nm-cygwin.h (ATTACH_NO_WAIT): Delete.
	* config/i386/nm-i386gnu.h (ATTACH_NO_WAIT): Delete.

	* target.h (struct target_ops): Add to_attach_no_wait member.
	(target_attach_no_wait): New.
	* target.c (update_current_target): Inherit to_attach_no_wait.

	* infcmd.c: Replace ATTACH_NO_WAIT compile time check by
	target_attach_no_wait runtime check.

	* gnu-nat.c (init_gnu_ops): Set to_attach_no_wait in gnu_ops.
	* win32-nat.c (init_win32_ops): Set to_attach_no_wait in
	win32_ops.

2008-07-03  Pedro Alves  <pedro@codesourcery.com>

	* i386-tdep.c (i386_displaced_step_fixup): Condition log printing
	on debug_displaced being set.

2008-06-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* frame.c (get_prev_frame_1): Call frame_unwind_find_by_frame
	directly instead of get_frame_id.

2008-06-30  Luis Machado  <luisgpm@br.ibm.com>

	* rs6000-tdep.c (ppc_displaced_step_fixup): New function.
	(deal_with_atomic_sequence): Update BC masks.
	(rs6000_gdbarch_init): Init displaced stepping infra-structure.
	Define BRANCH_MASK, B_INSN, BC_INSN, BXL_INSN, BP_MASK and BP_INSN.

2008-06-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* cris-tdep.c (crisv32_single_step_through_delay): Get this frame's
	register, not the previous frame's.

2008-06-30  Luis Machado  <luisgpm@br.ibm.com>

	* source.c (select_source_symtab): Make sure we skip namespace
	symtabs when showing cpp source code.

2008-06-30  Hans-Peter Nilsson  <hp@axis.com>

	* MAINTAINERS (Authorized committers): Fix my email address.

2008-06-28  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-cmds.c (mi_cmds): Route -exec-run, -exec-until,
	-target-download and -target-select via CLI, so that
	the quoting rules are the same as they were (unfortunately)
	in all prior gdb releases.
	* mi/mi-cmds.h (mi_cmd_exec_run, mi_cmd_exec_until)
	(mi_cmd_target_download, mi_cmd_target_select): Remove.
	* mi/mi-main.c (mi_cmd_exec_run, mi_cmd_exec_until)
	(mi_cmd_target_download, mi_cmd_target_select): Remove.
	(mi_cmd_execute): Set current_token even for commands
	routed via CLI.

2008-06-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* alphafbsd-tdep.c: Update for unwinder changes.
	* alpha-linux-tdep.c: Likewise.
	* alphanbsd-tdep.c: Likewise.
	* alphaobsd-tdep.c: Likewise.
	* avr-tdep.c: Likewise.
	* cris-tdep.c: Likewise.
	* frv-linux-tdep.c: Likewise.
	* frv-tdep.c: Likewise.
	* h8300-tdep.c: Likewise.
	* hppa-linux-tdep.c: Likewise.
	* iq2000-tdep.c: Likewise.
	* m32c-tdep.c: Likewise.
	* m32r-linux-tdep.c: Likewise.
	* m32r-tdep.c: Likewise.
	* m68hc11-tdep.c: Likewise.
	* mep-tdep.c: Likewise.
	* mn10300-tdep.c: Likewise.
	* mt-tdep.c: Likewise.
	* score-tdep.c: Likewise.
	* sh64-tdep.c: Likewise.
	* sh-tdep.c: Likewise.
	* sparc64fbsd-tdep.c: Likewise.
	* sparc64nbsd-tdep.c: Likewise.
	* sparc64obsd-tdep.c: Likewise.
	* v850-tdep.c: Likewise.
	* vaxobsd-tdep.c: Likewise.
	* vax-tdep.c: Likewise.
	* xstormy16-tdep.c: Likewise.

2008-06-28  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-main.c (enum captured_mi_execute_command_actions)
	(captured_mi_execute_command_args): Remove.
	(captured_mi_execute_command): Cast the closure to mi_parse
	pointer, not to captured_mi_execute_command_args, and don't
	set the action field thereof.
	(mi_execute_command): Pass struct mi_parse, not
	captured_mi_execute_command_args to captured_mi_execute_command.
	(mi_execute_command): Remove (dead) code for suppressing
	printing prompt.

2008-06-28  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (enum sigchld_state): New.
	(linux_nat_async_events_state): Renamed from
	linux_nat_async_events_enabled.
	(linux_nat_event_pipe_push, my_waitpid): Adjust.
	(sigchld_default_action): New.
	(lin_lwp_attach_lwp): Adjust.  Call linux_nat_async_events
	unconditionally.
	(linux_nat_create_inferior): Set events state to sigchld_default
	state.
	(linux_nat_resume): Adjust.
	(linux_nat_wait): Call linux_nat_async_events unconditionally.
	(sigchld_handler): Adjust.
	(linux_nat_async_mask): Don't set SIGCHLD actions here.
	(get_pending_events): Adjust.
	(linux_nat_async_events): Rewrite to handle enum sigchld_state
	instead of a boolean.
	(linux_nat_async): Adjust.
	(_initialize_linux_nat): Capture default SIGCHLD action into
	sigchld_default_action.

2008-06-28  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.c (moribund_locations): New.
	(bpstat_stop_status): Process moribund locations.
	(update_global_location_list): Add removed
	locations to moribund_locations.
	(breakpoint_retire_moribund): New.
	* breakpoint.h (struct bp_location): New field
	events_till_retirement.
	(breakpoint_retire_moribund): Declare.
	* thread.c (thread_count): New.
	* infrun.c (handle_inferior_event): Call
	breakpoint_retire_moribund.
	* gdbthread.h (thread_count): Declare.

2008-06-27  Joseph Myers  <joseph@codesourcery.com>

	* dfp.c (decimal_convert): Call match_endianness before and after
	conversion.

2008-06-27  Jonathan Larmour  <jifl@eCosCentric.com>

	* remote.c (remote_insert_breakpoint): Ensure that if Z0
	unsupported and we fall back to memory_insert_breakpoint, we
	use the unmodified requested address.

2008-06-27  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (read_attribute_value): Issue a complaint when
	adjusting size attribute values of 0xffffffff as zero.

2008-06-27  Joseph Myers  <joseph@codesourcery.com>

	* i386-tdep.c (i386_16_byte_align_p): New.
	(i386_push_dummy_call): Determine stack space required for
	arguments going forwards allowing for 16-byte alignment, then push
	arguments going forwards.

2008-06-27  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (start_remote): Don't clear thread list here.
	* monitor.c (monitor_open): Include "gdbthread.h".  Clear thread
	list here.
	* remote.c (record_currthread): Upgrade the main thread and its
	entry in the thread list if this is the first time we hear about
	threads.
	(remote_thread_alive): Consider magic_null_ptid or a ptid without
	a tid member always alive.
	(remote_find_new_threads): Don't update the main thread here.
	(remote_start_remote): Clear thread list here.  Always add the
	main thread.
	(extended_remote_attach_1): Add the main thread here.
	(extended_remote_mourn_1): Re-add the main thread here.
	(extended_remote_create_inferior_1): Add a main thread.

	* Makefile.in (monitor.o): Depend on $(gdbthread_h).

2008-06-27  Pedro Alves  <pedro@codesourcery.com>

	Use ptid_t.tid to store thread ids instead of ptid_t.pid.

	* remote.c (magic_null_ptid, not_sent_ptid, any_thread_ptid): New
	globals.
	(general_thread, continue_thread): Change type to ptid_t.
	(record_currthread): Take a ptid_t parameter instead of an
	integer.
	(MAGIC_NULL_PID): Delete.
	(set_thread): Take a ptid_t parameter and adjust.
	(set_general_thread, set_continue_thread): New.
	(remote_thread_alive, remote_newthread_step)
	(remote_current_thread, remote_find_new_threads)
	(remote_threads_info, remote_start_remote, remote_vcont_resume)
	(remote_resume_1, remote_wait, extended_remote_create_inferior_1)
	(threadalive_test, remote_pid_to_str)
	(remote_get_thread_local_address): Adjust.
	(_initialize_remote): Initialize magic_null_ptid, not_sent_ptid
	and any_thread_ptid.

2008-06-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* configure.ac (--enable-tui): AC_MSG_ERROR for explicit --enable-tui.
	* configure: Regenerated.

2008-06-26  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (read_attribute_value): Treat size attribute
	values of 0xffffffff as if the attribute value was zero.

2008-06-26  Vladimir Prus  <vladimir@codesourcery.com>

	* linux-nat.c: Add description of overall logic.

2008-06-26  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (GNULIB_H): Use GNULIB_STDINT_H.
	(gdb_stdint_h, gdb_stdint.h, stamp-int): Delete.  Remove
	all dependencies on $(gdb_stdint_h).
	(distclean): Do not delete gdb_stdint.h.
	* acinclude.m4: Do not use stdint.m4.
	* configure.ac: Set GNULIB_STDINT_H.  Remove tests for stdint.h,
	uintptr_t, and gdb_stdint.h.
	* defs.h: Include <stdint.h>.
	* gdb_thread_db.h: Assume stdint.h is already included.
	* breakpoint.c, findcmd.c, hppa-tdep.c, inf-ptrace.c, proc-service.c,
	rs6000-nat.c, spu-linux-nat.c, target.c, win32-nat.c: Do not
	include gdb_stdint.h.
	* configure, config.in: Regenerate.

2008-06-26  Joseph Myers  <joseph@codesourcery.com>

	* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Handle passing
	decimal floating-point values in GPRs for soft-float.
	(do_ppc_sysv_return_value): Handle returning decimal
	floating-point values in GPRs for soft-float.

2008-06-26  Vladimir Prus  <vladimir@codesourcery.com>

	* target.c (target_read_until_error): New.
	* target.h (target_read_until_error): Declare.
	* mi/mi-main.c (mi_cmd_data_read_memory): Use
	target_read_until_error.

2008-06-25  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix a memory leak found by Hui Zhu <teawater@gmail.com>.
	* c-exp.y (parse_number): Move the S and SAVED_CHAR initialization
	after the DECFLOAT detection to fix a memory leak.  Remove the
	redundant NUM initialization.  Protect the DECFLOAT detection memory
	access before the P block.  Restore the P memory content for the
	DECFLOAT detection.

2008-06-25  Vladimir Prus  <vladimir@codesourcery.com>

	Kill the return value for all MI command functions.
	* mi/mi-cmds.h (enum mi_cmd_result): Remove.
	(mi_cmd_argv_ftype): Change return type to void.

	* mi/mi-main.c: Adjust all function that implement
	MI commands to return nothing.
	(struct captured_mi_execute_command_actions):
	Remove the rc field.
	(mi_cmd_execute): Return nothing.
	(mi_execute_async_cli_command): Return nothing.
	(mi_cmd_exec_interrupt): Don't print ^done here.
	(mi_cmd_target_select): Don't print ^connected here.
	(captured_mi_execute_command): Don't check for MI_CMD_DONE.
	Special-case -target-select and output ^connected, not ^done.

	* mi/mi-cmd-break.c: Adjust.
	* mi/mi-cmd-disas.c: Adjust.
	* mi/mi-cmd-env.c: Adjust.
	* mi/mi-cmd-file.c: Adjust.
	* mi/mi-cmd-stack.c: Adjust.
	* mi/mi-cmd-target.c: Adjust.
	* mi/mi-cmd-var.c: Adjust.
	* mi/mi-interp.c: Adjust.
	* mi/mi-symbol-cmds.c: Adjust.

2008-06-25  Vladimir Prus  <vladimir@codesourcery.com>

	Emit ^running via observer.
	* mi/mi-interp.c (mi_cmd_interpreter_exec): Do no print
	^running here.
	(mi_on_resume): Print ^running if not previously output.
	* mi/mi-main.c (running_result_record_printed): New.
	(captured_mi_execute_command): Reset
	running_result_record_printed.  Use running_result_record_printed
	to decide if we should skip ^done.
	(mi_execute_async_cli_command): Don't print ^running here.
	* mi/mi-main.h (current_token, running_result_record_printed):
	Declare.

2008-06-24  Michael Snyder  <msnyder@specifix.com>

	* infrun.c (_initialize_infrun): White space and typo fix.

2008-06-23  Christopher Faylor  <me.gdb.changelog@cgf.cx>

	* win32-nat.c (safe_symbol_file_add_stub): Remove unused variable.
	(do_initial_win32_stuff): Fix problem with inability to set breakpoints
	when first loading DLL with "dll" command.

2008-06-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* gnu-nat.c (proc_string): Use capital T for "Thread".

2008-06-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (win32_pid_to_str): Use capital T for "Thread".

2008-06-18  Joel Brobecker  <brobecker@adacore.com>

	* solib-osf.c (osf_solib_create_inferior_hook): Do nothing if
	the target cannot run.

2008-06-18  Joel Brobecker  <brobecker@adacore.com>

	* solib-osf.c (osf_solib_create_inferior_hook): Do nothing if
	we're attaching to a running process.

2008-06-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (handle_load_dll): Give dll name and load address
	if debug_events is on.
	(handle_unload_dll): Likewise.

2008-06-14  Vladimir Prus  <vladimir@codesourcery.com>

	Don't suppress *running when doing finish.
	* infcall.c (call_function_by_hand): Set both
	suppress_resume_observer and suppress_stop_observer.
	* infcmd.c (suppress_run_stop_observers): Split into...
	(suppress_resume_observer, suppress_stop_observer): ...those.
	(finish_command_continuation): Clear suppress_stop_observer.
	(finish_command): Set suppress_stop_observer.
	* inferior.h (suppress_run_stop_observers): Split into...
	(suppress_resume_observer, suppress_stop_observer): ...those.
	* infrun.c (normal_stop): Check for suppress_stop_observer.
	* thread.c (set_running): Check for suppress_resume_observer.

2008-06-12  Pedro Alves  <pedro_alves@portugalmail.pt>
	    Pierre Muller  <muller@ics.u-strasbg.fr>

	* gdbarch.sh (gdbarch_skip_main_prologue): New.
	* gdbarch.h, gdbarch.c: Regenerate.
	* i386-tdep.h (i386_skip_main_prologue): Declare.
	* i386-tdep.c (i386_skip_main_prologue): New.
	* i386-cygwin-tdep.c (i386_cygwin_init_abi): Register
	i386_skip_main_prologue as gdbarch_skip_main_prologue gdbarch callback.
	* symtab.c (find_function_start_sal): When pc points at the "main"
	function, call gdbarch_skip_main_prologue.

2008-06-11  Daniel Jacobowitz  <dan@codesourcery.com>

	* value.c (value_primitive_field): Fetch lazy register values.

2008-06-11  Pedro Alves  <pedro@codesourcery.com>

	* NEWS: Mention support removal of undocumented S AA p PID stop
	reply packet.

	* remote.c (remote_wait): Remove undocumented S AA p PID support.

2008-06-10  Stan Shebs  <stan@codesourcery.com>

	* MAINTAINERS: Update my affiliation and address.

2008-06-10  Andreas Schwab  <schwab@suse.de>

	* top.c (print_gdb_version): Don't print final newline.

2008-06-10  Vladimir Prus  <vladimir@codesourcery.com>

	Implement *running.
	* Makefile.in: Update dependencies.
	* gdbthread.h (struct thread_info): New field
	running_.
	(set_running, is_running): New.
	* thread.c (set_running, is_running): New.
	* inferior.h (suppress_normal_stop_observer): Rename to...
	(suppress_run_stop_observers): ..this.
	* infcmd.c (suppress_normal_stop_observer): Rename to...
	(suppress_run_stop_observers): ..this.
	(finish_command_continuation, finish_command): Adjust.
	* infcall.c (call_function_by_hand): Adjust.
	* infrun.c (normal_stop): Call set_running.
	* target.c (target_resume): New.  Call set_running.
	* target.h (target_resume): Convert from macro to
	a function.

	* mi/mi-interp.c (mi_on_resume): New.
	(mi_interpreter_init): Register mi_on_resume.

2008-06-10  Vladimir Prus  <vladimir@codesourcery.com>

	Use observers to report stop events in MI.
	* mi/mi-interp.c (mi_on_normal_stop): New.
	(mi_interpreter_init): Register mi_on_normal_stop.
	(mi_interpreter_exec_continuation): Remove.
	(mi_cmd_interpreter_exec): Don't register the above.
	* mi/mi-main.c (captured_mi_execute_command): Don't care
	about sync_execution.
	(mi_execute_async_cli_command): Don't install continuation.  Don't
	print *stopped.
	(mi_exec_async_cli_cmd_continuation): Remove.

2008-06-10  Vladimir Prus  <vladimir@codesourcery.com>

	Suppress normal stop observer when it's problematic.
	* inferior.h (suppress_normal_stop_observer): New.
	* infcall.c (call_function_by_hand): Disable stop events when
	doing function calls.
	* infmcd.c (suppress_normal_stop_observer): New.
	(finish_command_continuation): Call normal_stop observer
	explicitly.
	(finish_command): Disable stop events inside proceed.
	* infrun.c (normal_stop): Don't call normal stop observer if
	suppressed of if multi-step is in progress.

2008-06-10  Vladimir Prus  <vladimir@codesourcery.com>

	Remove stale code.
	* infrun.c (finish_command): Don't pass cleanup
	to continuation.
	(finish_command_continuation): Don't grab cleanup from
	the passed data, as we don't use, and cannot, use it anyway.

2008-06-10  Vladimir Prus  <vladimir@codesourcery.com>

	Introduce common cleanup for restoring integers.
	* defs.h (make_cleanup_restore_integer): New declaration.
	(struct cleanup): New field free_arg.
	(make_my_cleanup_2): New.
	* utils.c (restore_integer_closure, restore_integer)
	(make_cleanup_restore_integer): New.
	(make_my_cleanup): Initialize the free_arg field and
	renamed to make_my_cleanup_2.
	(do_my_cleanups): Call free_arg.
	(discard_cleanups): Call free_arg.
	* breakpoint.c (restore_always_inserted_mode): Remove.
	(update_breakpoints_after_exec): Use make_cleanup_restore_integer.

2008-06-09  Doug Evans  <dje@google.com>

	* remote.c (remote_wait): Include beginning of malformed packet
	in error output.

2008-06-09  Tom Tromey  <tromey@redhat.com>

	* completer.c (complete_line): Don't special-case
	expression_completer.
	(expression_completer): Only pass last word to
	location_completer.
	* c-exp.y (yylex): Check 'token', not 'operator'.

2008-06-09  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure.ac (build_warnings): Add -Wno-format for mingw.
	* configure: Regenerated.

2008-06-07  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Make indentation consistent.  Move exec tracing entry out
	of remote packet list.

2008-06-06  Tom Tromey  <tromey@redhat.com>

	* value.h (evaluate_subexpression_type, extract_field_op):
	Declare.
	* printcmd.c (_initialize_printcmd): Use expression_completer for
	'p', 'inspect', 'call'.
	* parser-defs.h (parse_field_expression): Declare.
	* parse.c: Include exceptions.h.
	(in_parse_field, expout_last_struct): New globals.
	(mark_struct_expression): New function.
	(prefixify_expression): Return int.
	(prefixify_subexp): Return int.  Use expout_last_struct.
	(parse_exp_1): Update.
	(parse_exp_in_context): Add 'out_subexp' argument.  Handle
	in_parse_field.
	(parse_field_expression): New function.
	* expression.h (parse_field_expression): Declare.
	(in_parse_field): Likewise.
	* eval.c (evaluate_subexpression_type): New function.
	(extract_field_op): Likewise.
	* completer.h (expression_completer): Declare.
	* completer.c (expression_completer): New function.
	(count_struct_fields, add_struct_fields): New functions.
	* c-exp.y (yyparse): Redefine.
	(COMPLETE): New token.
	(exp): New productions.
	(saw_name_at_eof, last_was_structop): New globals.
	(yylex): Return COMPLETE when needed.  Recognize in_parse_field.
	(c_parse): New function.
	* breakpoint.c (_initialize_breakpoint): Use expression_completer
	for watch, awatch, and rwatch.
	* Makefile.in (parse.o): Depend on exceptions_h.

2008-06-06  Paul Pluzhnikov  <ppluzhnikov@google.com>

	PR gdb/1147
	* gdb/valopts.c (find_overload_match): Handle references
	to pointers.

2008-06-06  Paul N. Hilfinger  <hilfinger@adacore.com>

	* ada-lang.c (ada_value_assign): Correct big-endian case to take into
	account the bitsize of the 'from' operand.

2008-06-06  Pedro Alves  <pedro@codesourcery.com>

	* annotate.h (annotate_thread_changed): Declare.

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

	* annotate.c (annotate_thread_changed): New function.
	* thread.c (thread_command) : Use it.
	* infrun.c (normal_stop): Use it.

2008-06-05  Vladimir Prus  <vladimir@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>
	    Joseph Myers  <joseph@codesourcery.com>

	* acinclude.m4: Include ../config/acx.m4.
	* configure.ac: Use ACX_PKGVERSION and ACX_BUGURL.
	* configure, config.in: Regenerate.
	* main.c (print_gdb_help): Use REPORT_BUGS_TO for bug-reporting
	address.
	* top.c (print_gdb_version): Use PKGVERSION and REPORT_BUGS_TO.

2008-06-05  Pedro Alves  <pedro@codesourcery.com>

	Replace 'target async' by 'maintenance set remote-async' and
	'target remote' combination.

	* remote.c (remote_async_wait): Merge into remote_wait, and
	remove.
	(remote_async_permitted, remote_async_permitted_set): New
	variables.
	(set_maintenance_remote_async_permitted)
	(show_maintenance_remote_async_permitted): New functions.
	(remote_async_ops, extended_async_remote_ops): Delete.
	(remote_async_open, extended_remote_async_open): Delete.
	(remote_open_1): Drop async_p parameter.  Update callers.  Replace
	async_p with remote_async_permitted checks.
	(extended_async_remote_attach): Delete.
	(remote_resume, remote_async_resume): Merge and leave remote_resume.
	(remote_async_terminal_inferior): Rename to...
	(remote_terminal_inferior): ... this, and add
	remote_async_termitted check.
	(remote_async_terminal_ours): Rename to...
	(remote_terminal_ours): ... this, and add remote_async_termitted
	check.
	(remote_wait, remote_async_wait): Merge and leave remote_wait
	only.
	(remote_kill, remote_async_kill): Merge and leave remote_kill
	only.
	(remote_async_mourn, extended_async_remote_mourn): Delete.
	(extended_remote_create_inferior_1): Drop async_p parameter.
	Update callers.  Always use extended_remote_ops.
	(extended_remote_async_create_inferior): Delete.
	(remote_return_zero): Delete.
	(init_remote_ops): Register remote_can_async_p, remote_async,
	remote_async_mask, remote_terminal_inferior and
	remote_terminal_ours.
	(remote_can_async_p, remote_is_async_p): Check for
	remote_async_permitted.
	(init_remote_async_ops, init_extended_async_remote_ops): Remove.
	(set_remote_cmd): Don't add async and extended-async targets.
	(_initialize_remote): Add set/show remote-async maintenance
	commands.

2008-06-05  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (kill_kludge): Delete.
	(remote_wait, remote_async_wait): Don't set it.
	(remote_kill, remote_async_kill): Don't do anything with it.

2008-06-05  Pedro Alves  <pedro@codesourcery.com>

	* linux-thread-db.c (thread_db_wait): Don't trim event ptid.

2008-06-05  Aleksandar Ristovski  <aristovski@qnx.com>

	* bcache.c (bcache_data): Call deprecated_bcache_added function.
	(deprecated_bcache_added): New function name. Body of function
	bcache_data is used here with the addition of 'added' argument.
	* bcache.h (deprecated_bcache_added): New function.
	* symfile.c (add_psymbol_to_bcache): New helper function, takes part of
	work from add_psymbol_to_list - initialises partial symbol and stashes
	it in objfile's cache.
	(append_psymbol_to_list): New helper function, takes other part of
	work from add_psymbol_to_list - adds partial symbol to the given list.
	(add_psymbol_to_list): Call helper functions instead of doing work
	here. If adding to global list, do not duplicate partial symbols in the
	partial symtab.

2008-06-05  Aleksandar Ristovski  <aristovski@qnx.com>

	* breakpoint.c (print_exception_catchpoint): Put 'exception' back to
	'exception caught|thrown' message.

2008-06-05  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* Makefile.in: Update dependencies.
	* dwarf2expr.c: New include "gdb_assert.h".
	(new_dwarf_expr_context): Initialize MAX_RECURSION_DEPTH.
	(dwarf_expr_eval): Sanity check the RECURSION_DEPTH count.
	(execute_stack_op): Error out on too large RECURSION_DEPTH.
	Increase/decrease RECURSION_DEPTH around the function.

2008-06-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (get_offsets): Handle a single segment.
	* symfile.c (symfile_map_offsets_to_segments): Allow more bases
	than segments.

2008-06-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* solib-svr4.c (struct lm_info): Add lm_addr.
	(main_lm_addr): New.
	(svr4_default_sos): Set lm_addr.
	(svr4_current_sos): Set lm_addr and main_lm_addr.
	(svr4_fetch_objfile_link_map): Rewrite.
	(svr4_clear_solib): Clear main_lm_addr.

2008-06-03  Michael Snyder  <msnyder@redhat.com>
	    Joseph Myers  <joseph@codesourcery.com>

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

2008-06-02  Roman Zippel <zippel@linux-m68k.org>

	* m68klinux-tdep.c (m68k_linux_pc_in_sigtramp): Fix incorrect test.

2008-06-02  Roman Zippel <zippel@linux-m68k.org>

	* m68k-tdep.c (m68k_analyze_prologue): Fix length of lea insn.

2008-06-01  Joel Brobecker  <brobecker@adacore.com>

	* rs6000-aix-tdep.c (rs6000_convert_from_func_ptr_addr): Do not
	treat pointers in data space as function descriptors if the
	target address is also in the data space.

2008-05-30  Joel Brobecker  <brobecker@adacore.com>

	* alpha-tdep.c (alpha_heuristic_frame_unwind_cache): Set
	the trad-frame register value for the SP register.

2008-05-29  Mark Kettenis  <kettenis@gnu.org>

	* sparcnbsd-tdep.c, sparcobsd-tdep.c: Update for unwinder changes.

2008-05-28  Joel Brobecker  <brobecker@adacore.com>

	* ia64-tdep.c (ia64_convert_from_func_ptr_addr): Improve the heuristic
	that identifies function descriptors outside of the .opd section.

2008-05-28  Aleksandar Ristovski  <aristovski@qnx.com>

	* breakpoint.c (print_exception_catchpoint): In CLI add 'Temporary' for
	temporary catchpoints.  In MI add missing fields 'reason', 'disp',
	'bkptno'.
	(print_mention_exception_catchpoint): Add 'Temporary' for temporary
	catchpoints.
	(handle_gnu_v3_exceptions): Use tempflag.

2008-05-28  Vladimir Prus  <vladimir@codesourcery.com>

	Refactor varobj_update interface.
	* varobj.c (varobj_update): Report changes as vector.  Also
	return not just a list of varobj, but a list of special structures
	that tell what exactly has changed.
	* varobj.h (enum varobj_update_error): Rename to
	varobj_scope_status.
	(struct varobj_update_result_t): New.
	(varobj_update): Adjust prototype.
	* mi/mi-cmd-var.c: Adjust for changes.

2008-05-28  Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c (varobj_update): Fix comment typo.
	Fix indentation.

2008-05-26  Joel Brobecker  <brobecker@adacore.com>

	Set the symtab field of symbols read from ECOFF debugging entries.
	* mdebugread.c (add_symbol): Add new parameter symtab.
	(parse_symbol): Update calls to add_symbol throughout.

2008-05-27  Andreas Schwab  <schwab@suse.de>

	* symtab.h (enum address_class): Remove LOC_REGPARM and
	LOC_COMPUTED_ARG.
	(struct symbol): Add is_argument.
	(SYMBOL_IS_ARGUMENT): Define.

	* ada-lang.c (ada_add_block_symbols): Use SYMBOL_IS_ARGUMENT.
	* buildsym.c (finish_block): Likewise.
	* stack.c (print_frame_args, print_block_frame_locals)
	(print_frame_arg_vars): Likewise.
	* symtab.c (lookup_block_symbol): Likewise.
	* tracepoint.c (add_local_symbols): Likewise.
	* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.

	* coffread.c (process_coff_symbol): Set SYMBOL_IS_ARGUMENT.
	* dwarf2read.c (new_symbol): Likewise.
	* mdebugread.c (parse_symbol): Likewise.
	* stabsread.c (define_symbol): Likewise.

	* ada-exp.y (select_possible_type_sym): Don't handle LOC_REGPARM
	and LOC_COMPUTED_ARG.
	* ada-lang.c (resolve_subexp, symtab_for_sym): Likewise.
	* ax-gdb.c (gen_var_ref): Likewise.
	* eval.c (evaluate_subexp_for_address): Likewise.
	* findvar.c (symbol_read_needs_frame, read_var_value): Likewise.
	* m2-exp.y (yylex): Likewise.
	* printcmd.c (address_info): Likewise.
	* symmisc.c (print_symbol, print_partial_symbols): Likewise.
	* tracepoint.c (collect_symbol, scope_info): Likewise.

2008-05-24  Carlos Eduardo Seo  <cseo@linux.vnet.ibm.com>

	* gdbarch.sh: Added new gdbarch struct
	core_regset_sections.
	* gdbarch.c: Refreshed.
	* gdbarch.h: Refreshed.
	* regset.h (core_regset_section): Declared.
	* linux-nat.c (linux_nat_do_thread_registers): Added
	support for the new gdbarch struct core_regset_sections.
	* utils.c (host_address_to_string): New function.
	* defs.h (host_address_to_string): New prototype.
	* i386-linux-tdep.c (i386_regset_rections): New register
	sections list for i386.
	  (i386_linux_init_abi): Initialized new gdbarch struct
	  core_regset_sections.
	* Makefile.in: Updated to reflect dependency changes.
	* ppc-linux-tdep.c (ppc_regset_sections): Register
	sections list for ppc.
	  (ppc_linux_init_abi): Initialized new gdbarch struct
	  core_regset_sections

2008-05-24  Andreas Schwab  <schwab@suse.de>

	* linespec.c (decode_objc): Save current language around call to
	get_selected_block.

2008-05-23  Joel Brobecker  <brobecker@adacore.com>

	* valprint.h (get_array_bounds): Renames get_array_low_bound.
	* valprint.c (get_array_bounds): Renames get_array_low_bound.
	Return the proper bound value if the array index type is an
	enumerated type. Compute the high bound if requested.
	(val_print_array_elements): Handle the case when the array
	element has a null size.
	* ada-valprint.c (print_optional_low_bound): Add handling
	for empty arrays or arrays of zero-size elements.
	(ada_val_print_array): New function, extracted out from
	ada_val_print_1 case TYPE_CODE_ARRAY, and enhanced to
	handle empty arrays and arrays of zero-size elements.
	(ada_val_print_1)[case TYPE_CODE_ARRAY]: Replace extracted-out
	code by call to ada_val_print_array.
	(ada_value_print): Remove handling of null array.  The handling
	was incomplete and is now better handled by ada_val_print_array.

2008-05-23 Markus Deuling  <deuling@de.ibm.com>

	* annotate.c (annotate_source, annotate_frame_begin): Replace
	deprecated_print_address_numeric with paddress.
	* cli/cli-cmds.c (list_command, edit_command): Likewise.
	* tui/tui-stack.c (tui_make_status_line): Likewise.

	* defs.h (deprecated_print_address_numeric): Remove.
	* printcmd.c (deprecated_print_address_numeric): Remove.
	* maint.c (maint_print_section_info): Fix comment.

2008-05-23 Markus Deuling  <deuling@de.ibm.com>

	* valprint.c (print_hex_chars, print_octal_chars, print_decimal_chars,
	print_binary_chars, print_char_chars): Add byte_order parameter and
	replace gdbarch_byte_order.
	(print_decimal_chars): Replace START_P, NOT_END_P and NEXT_P by their
	expressions and remove them.  Remove unused TWO_TO_FOURTH.
	(val_print_type_code_int): Introduce gdbarch_byte_order to get at the
	endianness.  Update call to print_hex_chars.
	* valprint.h (print_hex_chars, print_octal_chars, print_decimal_chars,
	print_binary_chars, print_char_chars): Add byte_order parameter.
	* printcmd.c (print_scalar_formatted): Introduce gdbarch_byte_order to
	get at the endianness.  Update print_*_char calls to use byte_order.

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

	* symtab.h (struct symbol): Make "aux_value" member a void pointer
	instead of a union.
	(SYMBOL_LOCATION_BATON): Update.

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

	* symtab.h (enum address_class): Remove LOC_BASEREG and
	LOC_BASEREG_ARG.
	(struct symbol): Remove "basereg" member of "aux_value" union.
	(SYMBOL_BASEREG): Remove.

	* ada-exp.y (select_possible_type_sym): Do not handle LOC_BASEREG
	or LOC_BASEREG_ARG.
	* ada-lang.c (resolve_subexp, symtab_for_sym): Likewise.
	(ada_add_block_symbols): Likewise.
	* ax-gdb.c (gen_var_ref): Likewise.
	* buildsym.c (finish_block): Likewise.
	* findvar.c (symbol_read_needs_frame, read_var_value): Likewise.
	* m2-exp.y (yylex): Likewise.
	* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
	* printcmd.c (address_info): Likewise.
	* stack.c (print_frame_args, print_block_frame_locals): Likewise.
	(print_frame_arg_vars): Likewise.
	* symmisc.c (print_symbol): Likewise.
	* symtab.c (lookup_block_symbol): Likewise.
	* tracepoint.c (collect_symbol, add_local_symbols): Likewise.
	(scope_info): Likewise.

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

	* symtab.h (enum address_class): Remove LOC_LOCAL_ARG.

	* ada-exp.y (select_possible_type_sym): Do not handle LOC_LOCAL_ARG.
	* ada-lang.c (resolve_subexp, symtab_for_sym): Likewise.
	(ada_add_block_symbols): Likewise.
	* ax-gdb.c (gen_var_ref): Likewise.
	* buildsyms.c (finish_block): Likewise.
	* findvar.c (symbol_read_needs_frame, read_var_value): Likewise.
	* m2-exp.y (yylex): Likewise.
	* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
	* printcmd.c (address_info): Likewise.
	* stack.c (print_frame_args, print_frame_arg_vars): Likewise.
	* symmisc.c (print_symbol, print_partial_symbols): Likewise.
	* symtab.c (lookup_block_symbol): Likewise.
	* tracepoint.c (collect_symbol, add_local_symbols): Likewise.
	(scope_info): Likewise.

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

	* symtab.h (enum address_class): Remove LOC_INDIRECT and
	LOC_HP_THREAD_LOCAL_STATIC.

	* findvar.c (symbol_read_needs_frame, read_var_value): Do not
	handle LOC_INDIRECT or LOC_HP_THREAD_LOCAL_STATIC.
	(read_var_value): Likewise.
	* buildsym.c (finish_block): Likewise.
	* objfiles.c (objfile_relocate): Likewise.
	* printcmd.c (address_info): Likewise.
	* symmisc.c (print_symbol, print_partial_symbols): Likewise.
	* tracepoint.c (scope_info): Likewise.

2008-05-21 Markus Deuling  <deuling@de.ibm.com>
	   Maxim Grigoriev  <maxim2405@gmail.com>

	* xtensa-tdep.c (xtensa_read_register): Remove.
	(xtensa_frame_cache): Get rid of xtensa_read_register. Pass extra
	argument litbase to call0_frame_cache().
	(call0_track_op, call0_analyze_prologue)
	(call0_frame_cache): Use extra argument litbase.

2008-05-21  Joel Brobecker  <brobecker@adacore.com>

	* infcmd.c (_initialize_infcmd): Add new "fin" alias for "finish".

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

	* frame.h (SIZEOF_FRAME_SAVED_REGS): Remove.

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

	* alpha-mdebug-tdep.c: Include "trad-frame.h".
	(struct alpha_mdebug_unwind_cache): Change type of SAVED_REGS to
	struct trad_frame_saved_reg *.
	(alpha_mdebug_frame_unwind_cache): Allocate SAVED_REGS using
	trad_frame_alloc_saved_regs.  Update accesses.  Record previous
	value of SP as being vfp.
	(alpha_mdebug_frame_prev_register): Use trad_frame_get_prev_register.
	* Makefile.in (alpha-mdebug-tdep.o): Update dependencies.

2008-05-21  Markus Deuling  <deuling@de.ibm.com>

	* score-tdep.c (score_print_insn): Get the current endianess from
	disassemble_info instead of gdbarch_byte_order.

2008-05-21  Pedro Alves  <pedro@codesourcery.com>

	* frame.c (get_prev_frame_1): Build frame id before setting
	this_frame->prev_p, not after.

2008-05-21  Nick Roberts  <nickrob@snap.net.nz>

	* annotate.c (annotate_new_thread): New function for new-thread
	annotation.
	* annotate.h: (annotate_new_thread): New extern.
	* thread.c (add_thread_with_info): Use it.
	* Makefile.in (thread.o): Add dependency on annotate.h.

2008-05-20  Joel Brobecker  <brobecker@adacore.com>

	* win32-nat.c (win32_wait): Block the control-c event while
	waiting for a debug event.

2008-05-19  Pedro Alves  <pedro@codesourcery.com>

	* symtab.h (lookup_symbol_in_language): Update comment.
	* symtab.c (lookup_symbol_aux_block): Update comment.
	* ada-lang.c (ada_lookup_symbol_list): Update comment.

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

	* symtab.h (lookup_symbol_in_language): Remove SYMTAB parameter.
	(lookup_symbol): Likewise.
	* symtab.c (lookup_symbol_in_language): Remove SYMTAB parameter.
	(lookup_symbol): Likewise.
	(search_symbols): Update.

	* linespec.c (find_methods, collect_methods): Update.
	(add_matching_methods, add_constructors): Update.
	(decode_compound, decode_dollar, decode_variable): Update.
	(lookup_prefix_sym): Update.

	(symbol_found): Remove SYM_SYMTAB parameter.
	Use SYMBOL_SYMTAB (sym) instead.

	* gdbtypes.c (lookup_typename): Update.
	(lookup_struct, lookup_union, lookup_enum): Update.
	(lookup_template_type): Update.
	(check_typedef): Update.
	* language.c (lang_bool_type): Update.
	* mdebugread.c (parse_procedure): Update.
	* mi/mi-cmd-stack.c (list_args_or_locals): Update.
	* parse.c (write_dollar_variable): Update.
	* printcmd.c (address_info): Update.
	* source.c (select_source_symtab): Update.
	* stack.c (print_frame_args, print_frame_arg_vars): Update.
	* valops.c (find_function_in_inferior): Update.
	(value_struct_elt_for_reference): Update.
	* value.c (value_static_field, value_fn_field): Update.

	* alpha-mdebug-tdep.c (find_proc_desc): Update.
	* arm-tdep.c (arm_skip_prologue): Update.
	* mt-tdep.c (mt_skip_prologue): Update.
	* xstormy16-tdep.c (xstormy16_skip_prologue): Update.

	* ada-lang.h (struct ada_symbol_info): Remove SYMTAB member.
	* ada-lang.c (ada_add_block_symbols): Remove SYMTAB parameter.
	(add_defn_to_vec): Likewise.
	(ada_add_block_symbols): Likewise.
	(lookup_cached_symbol, cache_symbol): Likewise.
	(standard_lookup): Update.
	(ada_lookup_symbol_list): Update.

	* c-valprint.c (c_val_print): Update.
	* cp-support.c (cp_lookup_rtti_type): Update.
	* jv-lang.c (java_lookup_class, get_java_object_type): Update.
	* objc-lang.c (lookup_struct_typedef, find_imps): Update.
	* p-valprint.c (pascal_val_print): Update.
	* scm-lang.c (scm_lookup_name): Update.

	* c-exp.y: Update.
	* f-exp.y: Update.
	* jv-exp.y: Update.
	* m2-exp.y: Update.
	* objc-exp.y: Update.
	* p-exp.y: Update.

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

	* language.h (struct language_defn): Remove SYMTAB parameter from
	la_lookup_symbol_nonlocal callback function pointer.

	* ada-lang.h (ada_lookup_encoded_symbol): Remove SYMTAB parameter.
	(ada_lookup_encoded_symbol): Likewise.
	* ada-lang.c (ada_lookup_encoded_symbol): Remove SYMTAB parameter.
	Always call fixup_symbol_section.
	(ada_lookup_symbol): Remove SYMTAB parameter.
	(ada_lookup_symbol_nonlocal): Likewise.
	* ada-exp.y (write_object_renaming): Update.
	(find_primitive_type): Likewise.

	* cp-support.h (cp_lookup_symbol_nonlocal): Remove SYMTAB parameter.
	(cp_lookup_symbol_namespace): Likewise.
	* cp-namespace.c (lookup_namespace_scope): Remove SYMTAB parameter.
	(lookup_symbol_file): Likewise.
	(lookup_possible_namespace_symbol): Likewise.
	(cp_lookup_symbol_nonlocal): Likewise.
	(cp_lookup_symbol_namespace): Likewise.
	(cp_lookup_nested_type): Update.

	* scm-valprint.c (scm_inferior_print): Update.
	* valops.c (value_maybe_namespace_elt): Update.

	* solist.h (struct target_so_ops): Remove SYMTAB parameter from
	lookup_lib_global_symbol callback function pointer.
	(solib_global_lookup): Remove SYMTAB parameter.
	* solib.c (solib_global_lookup): Remove SYMTAB parameter.
	* solib-svr4.c (elf_lookup_lib_symbol): Likewise.

	* symtab.h (basic_lookup_symbol_nonlocal): Remove SYMTAB parameter.
	(lookup_symbol_static): Likewise.
	(lookup_symbol_global): Likewise.
	(lookup_symbol_aux_block): Likewise.
	(lookup_global_symbol_from_objfile): Likewise.
	* symtab.c (lookup_symbol_aux): Remove SYMTAB parameter.
	(lookup_symbol_aux_local): Likewise.
	(lookup_symbol_aux_block): Likewise.
	(lookup_symbol_aux_symtabs): Likewise.
	(lookup_symbol_aux_psymtabs): Likewise.
	(lookup_global_symbol_from_objfile): Likewise.
	(basic_lookup_symbol_nonlocal): Likewise.
	(lookup_symbol_static): Likewise.
	(lookup_symbol_global): Likewise.

	(lookup_symbol_in_language): Do not pass SYMTAB to lookup_symbol_aux.

2008-05-17  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (init_extended_remote_ops): Fix typo.

2008-05-16  Pedro Alves  <pedro@codesourcery.com>

	* NEWS: Mention new DICOS x86 target configuration.

2008-05-16  Pedro Alves  <pedro@codesourcery.com>
	    Ulrich Weigand  <uweigand@de.ibm.com>

	* minsyms.c (lookup_minimal_symbol_by_pc_name): New function.
	* symtab.h (lookup_minimal_symbol_by_pc_name): Add prototype.

	* symtab.c (fixup_section): Remove prototype.  Add ADDR parameter;
	use it instead of ginfo->value.address.  Look up minimal symbol by
	address and name.  Assume OBJFILE is non-NULL.
	(fixup_symbol_section): Ensure we always have an objfile to look
	into.  Extract and pass to fixup_section the symbol's address that
	will match the minimal symbol's address.
	(fixup_psymbol_section): Likewise.

	(find_pc_sect_psymtab): Fall back to non-addrmap case when debugging
	overlays and the addrmap returned the wrong section.

	* dwarf2read.c (var_decode_location): Set SYMBOL_CLASS before
	calling fixup_symbol_section.

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

	* minsyms.c: Include "target.h".
	(find_solib_trampoline_target): Handle minimal symbols pointing
	to function descriptors as well.
	* Makefile.in (minsyms.o): Update dependencies.

	* ppc-linux-tdep.c (ppc64_standard_linkage): Rename to ...
	(ppc64_standard_linkage1): ... this.  Fix optional instructions.
	(PPC64_STANDARD_LINKAGE_LEN): Rename to ...
	(PPC64_STANDARD_LINKAGE1_LEN): ... this.
	(ppc64_standard_linkage2, ppc64_standard_linkage3): New.
	(PPC64_STANDARD_LINKAGE2_LEN, PPC64_STANDARD_LINKAGE3_LEN): New.
	(ppc64_standard_linkage_target): Rename to ...
	(ppc64_standard_linkage1_target): ... this.
	(ppc64_standard_linkage2_target, ppc64_standard_linkage3_target): New.
	(ppc64_skip_trampoline_code): Support three variants of standard
	linkage stubs.  Call find_solib_trampoline_target to handle
	glink stubs.

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

	* ppc-linux-tdep.c (ppc_linux_init_abi): Do not install
	ppc64_sysv_abi_adjust_breakpoint_address.
	* ppc-sysv-tdep.c (ppc64_sysv_abi_adjust_breakpoint_address): Remove.
	* ppc-tdep.h (ppc64_sysv_abi_adjust_breakpoint_address): Remove.

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

	* ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Remove.
	(ppc_linux_init_abi): Install find_solib_trampoline_target instead
	of ppc_linux_skip_trampoline_code.

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

	* gdbarch.sh: Delete dwarf_reg_to_regnum.
	* gdbarch.c, gdbarch.h: Regenerated.
	* amd64-tdep.c, arm-tdep.c, h8300-tdep.c, hppa-linux-tdep.c,
	hppa-tdep.c, i386-tdep.c, m32c-tdep.c, m68k-tdep.c, mips-tdep.c,
	s390-tdep.c, xtensa-tdep.c: Do not set dwarf_reg_to_regnum.

2008-05-15  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (trap_ptid): Delete.
	(linux_nat_detach, linux_nat_wait, linux_nat_mourn_inferior):
	Adjust.
	* linux-thread-db.c (thread_db_wait): Adjust.

2008-05-15  Joel Brobecker  <brobecker@adacore.com>

	* linespec.c (decode_line_1): Fix a couple of comments.

2008-05-15  Alan Modra  <amodra@bigpond.net.au>

	* dbxread.c: Formatting.
	(INTERNALIZE_SYMBOL): Init n_other.
	(set_namestring): Take pointer to nlist arg rather than struct
	copy.  Update all callers.

2008-05-15  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (dwarf2loc.o): Remove $(addrmap_h).
	(dwarf2read.o): Add $(addrmap_h).

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

	* ppc-linux-tdep.c (ppc_linux_convert_from_func_ptr_addr): Rename ...
	(ppc64_linux_convert_from_func_ptr_addr): ... to this.  No longer try
	to handle ppc32 PLT entries.
	(ppc_linux_init_abi): Install ppc64_linux_convert_from_func_ptr_addr
	only on ppc64.

2008-05-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* elfread.c (elf_symtab_read): Create trampolines for @plt symbols.
	* minsyms.c (lookup_minimal_symbol_by_pc_section_1): Renamed from
	lookup_minimal_symbol_by_pc_section.  Prefer trampolines if requested.
	(lookup_minimal_symbol_by_pc_section): Use
	lookup_minimal_symbol_by_pc_section_1.
	(lookup_solib_trampoline_symbol_by_pc): Likewise.

2008-05-13  Joel Brobecker  <brobecker@adacore.com>

	* findcmd.c: Add #include "gdb_stdint.h".
	* Makefile.in (findcmd.o): Update dependencies.

2008-05-11  David S. Miller  <davem@davemloft.net>

	* sparc-linux-tdep.c (sparc32_linux_init_abi): Remove
	long double size override, Linux does use 128-bit now.

	* sparc-linux-tdep.c (PSR_SYSCALL): Define.
	(sparc_linux_write_pc): New function.
	(sparc32_linux_init_abi): Register it.
	* sparc64-linux-tdep.c (TSTATE_SYSCALL): Define.
	(sparc64_linux_write_pc): New function.
	(sparc64_linux_init_abi): Register it.

 	* sparc-linux-tdep.c, sparc64-linux-tdep.c: Use
	dwarf2_append_unwinders(), not dwarf2_frame_sniffer.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Set up info.target_desc
	and info.tdep_info before calling gdbarch_init_osabi.

2008-05-09  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp) [BINOP_ASSIGN]: Do not force
	the type of the right hand side of the assignment to the type
	of the left hand side if the left hand side is a convenience
	variable.

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

	* NEWS: Mention gdbserver bi-arch capability.

2008-05-09  Doug Evans  <dje@google.com>

	New "find" command.
	* NEWS: Document find command and qSearch:memory packet.
	* Makefile.in (SFILES): Add findcmd.c.
	(COMMON_OBJS): Add findcmd.o.
	(findcmd.o): New rule.
	* findcmd.c: New file.
	* target.h (target_ops): New member to_search_memory.
	(simple_search_memory): Declare.
	(target_search_memory): Declare.
	* target.c (simple_search_memory): New fn.
	(target_search_memory): New fn.
	* remote.c (PACKET_qSearch_memory): New packet kind.
	(remote_search_memory): New fn.
	(init_remote_ops): Init to_search_memory.
	(init_extended_remote_ops): Ditto.
	(_initialize_remote): Add qSearch:memory packet config command.

2008-05-09  Eli Zaretskii  <eliz@gnu.org>

	* thread.c (_initialize_thread): Don't use commas and periods in
	first line of doc string of "set/show print thread-events".

2008-05-08  Joel Brobecker  <brobecker@adacore.com>

	* alpha-mdebug-tdep.c, alpha-osf1-tdep.c, alpha-tdep.c:
	Update for unwinder changes.

2008-05-08  Joel Brobecker  <brobecker@adacore.com>

	* frame.c (get_frame_base_address, get_frame_locals_address)
	(get_frame_args_address): Pass the correct frame when calling
	frame_base_find_by_frame.

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

	* remote.c (extended_remote_attach_1): Call target_find_description.

2008-05-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (extended_remote_create_inferior_1): Clean up
	before marking the target running.

2008-05-08  Joel Brobecker  <brobecker@adacore.com>

	* hppa-tdep.h, hppa-tdep.c, hppa-hpux-tdep.c: Update for unwinder
	changes.

2008-05-07  Joel Brobecker  <brobecker@adacore.com>

	* sparc-tdep.c, sparc-tdep.h, sparc-sol2-tdep.c, sparc64-tdep.c,
	sparc64-sol2-tdep.c: Update for unwinder changes.

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

	* cp-support.c (mangled_name_to_comp): Initialize storage.
	(unqualified_name_from_comp): Likewise.

2008-05-07  Jie Zhang  <jie.zhang@analog.com>

	* remote.c (remote_insert_breakpoint): Call get_remote_state
	after gdbarch_breakpoint_from_pc is called.
	(remote_insert_hw_breakpoint): Likewise.

2008-05-06  Joel Brobecker  <brobecker@adacore.com>

	* valprint.c (val_print): Add new language parameter and use it
	instead of using the current_language. Update calls to val_print
	throughout.
	(common_val_print): Add new langauge parameter and pass it to
	val_print.
	* value.h (struct language_defn): Add opaque declaration.
	(val_print, common_val_print): Update declarations.
	* stack.c (print_frame_args): Update call to common_val_print
	using the appropriate language.
	* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
	* c-valprint, f-valprint.c, m2-valprint.c, mt-tdep.c, infcmd.c,
	mi/mi-main.c, jv-valprint.c, ada-valprint.c, varobj.c, p-valprint.c,
	scm-valprint.c, cp-valprint.c, sh64-tdep.c, printcmd.c:
	#include "language.h" if necessary.
	Update calls to val_print and common_val_print.
	* Makefile.in (mt-tdep.o, sh64-tdep.o, mi-cmds.o, mi-main.o):
	Update dependencies.

2008-05-06  Joel Brobecker  <brobecker@adacore.com>

	* ia64-tdep.c (ia64_convert_from_func_ptr_addr): Treat addresses
	pointing inside a non-executable section as function descriptors.

2008-05-06  Pedro Alves  <pedro@codesourcery.com>

	* inf-loop.c (inferior_event_handler): Run all continuations and
	print any language change before running the breakpoint commands.

2008-05-06  Joel Brobecker  <brobecker@adacore.com>

	* frame-unwind.c (frame_unwind_got_bytes): New function.
	* frame-unwind.h (frame_unwind_got_bytes): Add declaration.
	* libunwind-frame.h, libunwind-frame.c, ia64-tdep.c: Update
	for unwinder changes.

2008-05-05  Doug Evans  <dje@google.com>

	* NEWS: Mention new /m modifier for disassemble command.
	* cli/cli-cmds.c (print_disassembly): New function.
	(disassemble_current_function): New function
	(disassemble_command): Recognize /m modifier, print mixed
	source+assembly.
	(init_cli_cmds): Update disassemble help text.

2008-05-05  Maxim Grigoriev  <maxim2405@gmail.com>

	* xtensa-tdep.c: Update for unwinder changes.

2008-05-05  Andreas Schwab  <schwab@suse.de>

	Update m68k port for unwinder changes.
	* m68k-tdep.c (m68k_frame_cache): Expect this_frame.
	(m68k_frame_this_id, m68k_frame_prev_register): Update signature.
	(m68k_frame_unwind): Use default_frame_sniffer.
	(m68k_frame_sniffer): Remove.
	(m68k_frame_base_address): Expect this_frame.
	(m68k_dummy_id): Renamed from m68k_unwind_dummy_id.  Expect
	this_frame.
	(m68k_gdbarch_init): Use set_gdbarch_dummy_id,
	dwarf2_append_unwinders, and frame_unwind_append_unwinder.
	* m68klinux-tdep.c (m68k_linux_pc_in_sigtramp): Expect frame_info
	parameter instead of pc value.
	(m68k_linux_get_sigtramp_info, m68k_linux_sigtramp_frame_cache):
	Expect this_frame.
	(m68k_linux_sigtramp_frame_this_id)
	(m68k_linux_sigtramp_frame_prev_register)
	(m68k_linux_sigtramp_frame_sniffer): Update signature.
	(m68k_linux_sigtramp_frame_unwind): Use
	m68k_linux_sigtramp_frame_sniffer.
	(m68k_linux_init_abi): Use frame_unwind_append_unwinder.

	* m68klinux-nat.c (store_register): Fix typo.

2008-05-05  Pedro Alves  <pedro@codesourcery.com>

	* infcmd.c (step_1): Put thread id on the stack to avoid possible
	NULL dereferencing.

2008-05-05  Luis Machado  <luisgpm@br.ibm.com>

	* symfile.c (reread_symbols): Update objfile's entry point.

2008-05-05  Aleksandar Ristovski  <aristovski@qnx.com>
	    Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c: Update throughout to use symbol_matches_domain
	instead of matching the symbol domain explictly.
	* dwarf2read.c (add_partial_symbol): Do not add new psym for
	STRUCT_DOMAIN. Make sure you recognize c++ struct and java and ada
	class as typedefs. See lookup_partial_symbol function.
	(new_symbol): Similar to add_partial_symbol, do not create
	symbol for the typedef. See lookup_block_symbol.
	* symtab.c (symbol_matches_domain): New function, takes care
	of dual meaning of STRUCT_DOMAIN symbol for c++, ada and java.
	(lookup_partial_symbol): Use symbol_matches_domain to see if the
	found psym domain matches the given domain.
	(lookup_block_symbol): Likewise.

2008-05-05  Vladimir Prus  <vladimir@codesourcery.com>

	* top.c (command_line_handler_continuation): Remove.
	(execute_command): Do not install the above.

2008-05-05  Vladimir Prus  <vladimir@codesourcery.com>

	* inf-loop.c (inferior_event_handler): Call bpstat_do_action,
	and catch all exceptions from it.
	* top.c (command_line_handler_continuation): Don't
	call bpstat_do_action here.

2008-05-04  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (struct dwarf2_cu): Add type_hash.
	(struct die_info): Remove type.
	(read_type_die, read_typedef, read_base_type, read_subrange_type)
	(read_structure_type, read_enumeration_type, read_array_type)
	(read_tag_pointer_type, read_tag_ptr_to_member_type)
	(read_tag_reference_type, read_tag_const_type, read_tag_volatile_type)
	(read_tag_string_type, read_subroutine_type, read_set_type)
	(read_unspecified_type): Delete prototypes.  Remove check for
	already-loaded type.  Return the new type.
	(set_die_type): Return the new type.
	(reset_die_and_siblings_types): Delete.
	(load_comp_unit, load_full_comp_unit): Set type_hash.
	(process_queue): Remove call to reset_die_and_siblings_types.
	(process_die): Do not read most types here.  Use read_type_die
	for others.
	(read_func_scope, dwarf2_add_member_fn): Use read_type_die.
	(quirk_gcc_member_function_pointer): Return the new type.
	(process_structure_scope, process_enumeration_scope): Use
	get_die_type and read the DIE's type.
	(read_full_die): Do not initialize die->type.
	(tag_type_to_type): Use read_type_die.
	(read_type_die): Check for already defined types.  Return the
	type.
	(determine_prefix): Use get_die_type.
	(set_die_type): Return the type.
	(get_die_type): Take a CU argument.  Check for no type_hash.

2008-05-04  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (dwarf2_ranges_read, read_partial_die): Initialize
	locals.

2008-05-04  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (update_breakpoints_after_exec): Delete bp_longjmp
	and bp_longjmp_resume breakpoints.
	(breakpoint_address_is_meaningful): Claim bp_longjmp_resume as
	meaningful.
	(create_longjmp_breakpoint): Don't create bp_longjmp_resume
	breakpoints.  Create bp_longjmp breakpoints as momentary
	breakpoints.
	(enable_longjmp_breakpoint): Delete.
	(set_longjmp_breakpoint): New.
	(disable_longjmp_breakpoint): Delete.
	(delete_longjmp_breakpoint): New.
	(set_longjmp_resume_breakpoint): Delete.
	(set_momentary_breakpoint_at_pc): New.
	(breakpoint_re_set_one): Don't delete bp_longjmp and
	bp_longjmp_resume breakpoints.
	(breakpoint_re_set): Don't create longjmp and longjmp-resume
	breakpoints.

	* infrun.c (step_resume_breakpoint): Add comment.
	(struct execution_control_state): Delete handling_longjmp member.
	(init_execution_control_state). Don't clear handling_longjmp.
	(context_switch): Don't context switch handling_longjmp.
	(handle_inferior_event): If handling a bp_longjmp breakpoint,
	create a bp_longjmp_resume breakpoint, and set it as current
	step_resume_breakpoint, then step over the longjmp breakpoint.  If
	handling a bp_longjmp_resume breakpoint, don't delete the longjmp
	breakpoint, delete the longjmp-resume breakpoint, and stop
	stepping.
	(currently_stepping): Remove handling_longjmp from expression.
	(insert_step_resume_breakpoint_at_sal): Update comment.
	(insert_longjmp_resume_breakpoint): New.

	* breakpoint.h (set_momentary_breakpoint_at_pc): Declare.
	(enable_longjmp_breakpoint, disable_longjmp_breakpoint): Delete
	declarations.
	(set_longjmp_breakpoint, delete_longjmp_breakpoint): Declare.
	(set_longjmp_resume_breakpoint): Delete declaration.

	* gdbthread.h (save_infrun_state): Remove handling_longjmp
	parameter.
	(load_infrun_state): Delete *handling_longjmp parameter.
	* thread.c (save_infrun_state): Remove handling_longjmp parameter.
	Update body.
	(load_infrun_state): Delete *handling_longjmp parameter.  Update
	body.

	* infcmd.c (disable_longjmp_breakpoint_cleanup): Delete.
	(delete_longjmp_breakpoint_cleanup): New.
	(step_1): Call set_longjmp_breakpoint instead of
	enable_longjmp_breakpoint.  Use delete_longjmp_breakpoint_cleanup
	instead of disable_longjmp_breakpoint_cleanup when making cleanup.
	(step_1_continuation): Pass thread id in the continuation args to
	step_once.
	(step_once): Add thread parameter.  Pass thread id the the
	continuation.

2008-05-04  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Set CU BASE_ADDRESS already from partial DIEs.
	* dwarf2read.c (read_partial_die): New variables BASE_ADDRESS and
	BASE_ADDRESS_TYPE.  Set these variables from DW_AT_LOW_PC and
	DW_AT_ENTRY_PC.  Set CU->HEADER.BASE_KNOWN and CU->HEADER.BASE_ADDRESS
	from these variables if it was still unset.

	* Makefile.in: Update dependencies.
	* dwarf2read.c: Include "addrmap.h"
	(struct dwarf2_cu): New fields RANGES_OFFSET and HAS_RANGES_OFFSET.
	(dwarf2_ranges_read): New prototype.
	(dwarf2_build_psymtabs_hard): Initialize and prepare PSYMTABS_ADDRMAP.
	Add discontiguous range to PSYMTABS_ADDRMAP by DWARF2_RANGES_READ on
	HAS_RANGES_OFFSET, otherwise add there the contiguous range.
	(dwarf2_ranges_read): New parameter RANGES_PST, update the function
	comment for it.  Add the found ranges to RANGES_PST.  New variable
	BASEADDR, initialize it the common way.
	(dwarf2_get_pc_bounds): Update the caller for the new parameter.
	(read_partial_die): `DW_AT_ranges' now only sets RANGES_OFFSET and
	HAS_RANGES_OFFSET for the later processing.
	* objfiles.h (struct objfile): New field PSYMTABS_ADDRMAP.
	* symtab.c: Include "addrmap.h"
	(find_pc_sect_psymtab): Support reading the field PSYMTABS_ADDRMAP.
	Move the psymtab locator into ...
	(find_pc_sect_psymtab_closer): ... a new function.

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

	* arch-utils.c (gdbarch_update_p): Use default values for
	info.abfd and info.target_desc if they are NULL.
	(gdbarch_from_bfd): Remove assertion.
	(set_gdbarch_from_file): Call gdbarch_find_by_info directly,
	using the current target description.
	(gdbarch_info_fill): Do not use default values for info->abfd
	and info->target_desc.

2008-05-04  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symfile.c (reread_symbols): Reload EXEC_BFD on its change.

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

	* inferior.h (read_pc_pid, write_pc_pid): Remove.
	* regcache.h (regcache_read_pc, regcache_write_pc): Add prototypes.

	* regcache.c (read_pc_pid): Remove, replace by ...
	(regcache_read_pc): ... this function.
	(write_pc_pid): Remove, replace by ...
	(regcache_write_pc): ... this function.
	(read_pc, write_pc): Update.

	* infrun.c (displaced_step_prepare): Replace read_pc_pid and
	write_pc_pid by regcache_read_pc and regcache_write_pc.
	(displaced_step_fixup): Likewise.
	(resume): Likewise.  Use regcache arch instead of current_gdbarch.
	(prepare_to_proceed): Likewise.
	(proceed): Likewise.
	(adjust_pc_after_break): Likewise.
	(handle_inferior_event): Likewise.

	* linux-nat.c (cancel_breakpoint): Likewise.
	* linux-thread-db.c (check_event): Likewise.
	* aix-thread.c (aix_thread_wait): Likewise.
	* tracepoint.c (trace_dump_command): Likewise.

2008-05-04  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2loc.c (dwarf_expr_frame_base): Error out on missing
	SYMBOL_LOCATION_BATON.

2008-05-04  Vladimir Prus  <vladimir@codesourcery.com>

	* target.h (struct target_ops): New field to_auxv_parse.
	* auxv.c (default_auxv_parse): New, renamed from previous
	target_auxv_parse.
	(target_auxv_parse): Try to call target method.  Fallback to
	default_auxv_parse if not found.
	* procfs.c (procfs_auxv_parse): New.
	(init_procfs_ops): On Solaris, in 64-bit mode, install
	procfs_auxv_parse.

2008-05-03  Adam Nemet  <anemet@caviumnetworks.com>

	* symfile.c (add_symbol_file_command):  Use paddress rather than
	hex_string to print the address.

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

	* rs6000-tdep.c (rs6000_frame_this_id): If info->base is 0,
	return the null frame ID to terminate the backtrace.

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

	* rs6000-tdep.c: Do not include "rs6000-tdep.h".
	(rs6000_find_toc_address_hook): Move to rs6000-aix-tdep.c.
	(SIG_FRAME_PC_OFFSET): Likewise.
	(SIG_FRAME_LR_OFFSET): Likewise.
	(SIG_FRAME_FP_OFFSET): Likewise.
	(rs6000_push_dummy_call): Likewise.
	(rs6000_return_value): Likewise.
	(rs6000_convert_from_func_ptr_addr): Likewise.
	(branch_dest, rs6000_software_single_step): Likewise.
	(deal_with_atomic_sequence): Rename to ...
	(ppc_deal_with_atomic_sequence): ... this.  Adapt all callers.
	Do not call branch_dest; inline required parts of that function.
	(rs6000_skip_trampoline_code): Replace DEPRECATED_SYMBOL_NAME
	with SYMBOL_LINKAGE_NAME.
	(struct reg, regsize): Delete.
	(read_memory_addr): Delete; inline into callers.
	(rs6000_skip_prologue): Move after skip_prologue.
	(skip_prologue): Remove prototype.
	(rs6000_gdbarch_init): Remove sysv_abi variable; perform all
	initialization as if this variable were true.  Do not install
	ppc64_sysv_abi_adjust_breakpoint_address.

	* rs6000-aix-tdep.c: Include "gdb_assert.h", "gdbtypes.h",
	"gdbcore.h", "target.h", "value.h", "infcall.h", "objfiles.h",
	and "breakpoint.h".
	(rs6000_find_toc_address_hook): Move here from rs6000-tdep.c.
	(SIG_FRAME_PC_OFFSET): Likewise.
	(SIG_FRAME_LR_OFFSET): Likewise.
	(SIG_FRAME_FP_OFFSET): Likewise.
	(rs6000_push_dummy_call): Likewise.
	(rs6000_return_value): Likewise.
	(rs6000_convert_from_func_ptr_addr): Likewise.
	(branch_dest, rs6000_software_single_step): Likewise.  Replace
	tdep->text_segment_base by AIX_TEXT_SEGMENT_BASE.
	(rs6000_aix_init_osabi): Install rs6000_push_dummy_call,
	rs6000_return_value, and rs6000_convert_from_func_ptr_addr.
	Call set_gdbarch_long_double_bit and set_gdbarch_frame_red_zone_size.
	Set tdep->lr_frame_offset.  Do not set tdep->text_segment_base.

	* rs6000-tdep.h (rs6000_software_single_step): Remove prototype.
	(AIX_TEXT_SEGMENT_BASE): New macro.
	* rs6000-nat.c (exec_one_dummy_insn): Replace tdep->text_segment_base
	by AIX_TEXT_SEGMENT_BASE.

	* ppc-tdep.h (ppc_deal_with_atomic_sequence): Add prototype.
	(struct gdbarch_tdep): Remove text_segment_base member.
	* ppc-linux-tdep.c (ppc_linux_init_abi): On 64-bit, install
	ppc64_sysv_abi_adjust_breakpoint_address.

	* Makefile.in (rs6000-tdep.o): Update dependencies.
	(rs6000-aix-tdep.o): Likewise.

2008-05-03  Luis Machado  <luisgpm@br.ibm.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* cli/cli-decode.c (lookup_cmd_1): Fix indentation.
	* doublest.c (convert_typed_floating): Fix typo in comment.
	* dwarf2-frame.c (dwarf2_frame_cache): Likewise.
	* frame-unwind.h (frame_sniffer_ftype): Likewise.
	* frame.c (frame_unwind_address_in_block): Likewise.
	* ppc-sysv-tdep.c (ppc64_sysv_abi_push_dummy_call): Likewise.
	* symtab.h (struct symbol): Likewise.
	* tramp-frame.h (struct trad_frame_cache): Likewise.
	* value.c (allocate_repeat_value): Likewise.

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

	* infrun.c (handle_inferior_event): Do not insert breakpoints at
	TARGET_WAITKIND_LOADED events during startup (i.e. in the shell).

2008-05-03  Pedro Alves  <pedro@codesourcery.com>

	* parse.c (parse_exp_in_context): Don't override
	expression_context_pc if get_selected_block returned a valid
	block.

2008-05-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* alpha-tdep.h (ALPHA_REGISTER_BYTES): Delete.
	* arm-tdep.h (STATUS_REGISTER_SIZE): Delete.
	* breakpoint.c (args_for_catchpoint_enable, current_exception_event):
	Delete.
	* c-typeprint.c (c_type_print_base): Delete handling of template
	instantiations.
	* cp-support.h (METHOD_PTR_IS_VIRTUAL, METHOD_PTR_FROM_VOFFSET)
	(METHOD_PTR_TO_VOFFSET): Delete.
	* defs.h (QUIT_FIXME): Delete.
	* f-lang.h (DEFAULT_DOTMAIN_NAME_IN_MF77, DEFAULT_MAIN_NAME_IN_MF77)
	(DEFAULT_DOTMAIN_NAME_IN_XLF_BUGGY, DEFAULT_DOTMAIN_NAME_IN_XLF): Delete.
	* gdbtypes.h (struct cplus_struct_type): Delete is_inlined,
	ninstantiations, and instantiations.
	(TYPE_INSTANTIATIONS, TYPE_NINSTANTIATIONS, TYPE_INSTANTIATION)
	(TYPE_FN_FIELD_INLINED): Delete.
	* srec.h (SREC_BINARY): Delete.
	* symtab.c (symbol_init_demangled_name): Delete.
	* symtab.h (SYMBOL_INIT_DEMANGLED_NAME, symbol_init_demangled_name)
	(SYMBOL_OBJFILE, struct exception_event_record, CURRENT_EXCEPTION_KIND)
	(CURRENT_EXCEPTION_CATCH_SAL, CURRENT_EXCEPTION_CATCH_LINE)
	(CURRENT_EXCEPTION_CATCH_FILE, CURRENT_EXCEPTION_CATCH_PC)
	(CURRENT_EXCEPTION_THROW_SAL, CURRENT_EXCEPTION_THROW_LINE)
	(CURRENT_EXCEPTION_THROW_FILE, CURRENT_EXCEPTION_THROW_PC): Delete.
	* target.h (enum thread_control_capabilities): Delete tc_switch.
	(target_can_switch_threads): Delete.

2008-05-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (objfiles.o): Update.
	* exec.c (exec_set_section_address): Support p->addr != 0.
	* objfiles.c (objfile_relocate): Update exec_ops section
	addresses.
	* symfile.c (place_section): Move exec_set_section_address call...
	(default_symfile_offsets): ...to here.

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

	* Makefile.in (ppc_linux_tdep_h): New macro.
	(powerpc_32l_c, powerpc_altivec32_c, powerpc_altivec32l_c): Likewise.
	(powerpc_64l_c, powerpc_altivec64_c, powerpc_altivec64l_c): Likewise.
	(powerpc_e500l_c): Likewise.
	(ppc-linux-nat.o): Update dependencies.
	(ppc-linux-tdep.o): Update dependencies.
	(rs6000-tdep.o): Update dependencies.

	* ppc-tdep.h (ppc_linux_memory_remove_breakpoint): Remove.
	(ppc_linux_svr4_fetch_link_map_offsets): Remove.
	(ppc_linux_gregset, ppc_linux_fpregset): Move to ppc-linux-tdep.h
	(ppc_supply_reg, ppc_collect_reg): Add prototypes.
	(tdesc_powerpc_e500): Remove.

	* rs6000.c: Include "features/rs6000/powerpc-altivec32.c"
	and "features/rs6000/powerpc-altivec64.c".
	(ppc_supply_reg, ppc_collect_reg): Make global.
	(variants): Use tdesc_powerpc_32 for "powerpc" and
	tdesc_powerpc_altivec64 for "powerpc64".
	(_initialize_rs6000_tdep): Initialize AltiVec descriptions.

	* ppc-linux-tdep.h: New file.

	* ppc-linux-tdep.c: Include "ppc-linux-tdep.c".
	Include "features/rs6000/powerpc-32l.c".
	Include "features/rs6000/powerpc-altivec32l.c".
	Include "features/rs6000/powerpc-64l.c".
	Include "features/rs6000/powerpc-altivec64l.c".
	Include "features/rs6000/powerpc-e500l.c".
	(ppc_linux_supply_gregset): New function.
	(ppc_linux_collect_gregset): Handle orig_r3 and trap registers.
	(ppc32_linux_gregset): Use ppc_linux_supply_gregset.
	(ppc64_linux_gregset): Likewise.
	(ppc_linux_sigtramp_cache): Handle orig_r3 and trap registers.
	(ppc_linux_trap_reg_p): New function.
	(ppc_linux_write_pc): New function.
	(ppc_linux_core_read_description): New function.
	(ppc_linux_init_abi): Install ppc_linux_write_pc and
	ppc_linux_core_read_description.  Install orig_r3 and trap
	registers if present in the target description.
	(_initialize_ppc_linux_tdep): Initialize Linux target descriptions.

	* ppc-linux-nat.c: Include "ppc-linux-tdep.h".
	(PT_ORIG_R3, PT_TRAP): Define if necessary.
	(ppc_register_u_addr): Handle orig_r3 and trap registers.
	(fetch_ppc_registers): Likewise.
	(store_ppc_registers): Likewise.
	(store_register): Likewise.
	(ppc_linux_read_description): Check whether AltiVec is supported.
	Check whether inferior is 32-bit or 64-bit.  Return the appropriate
	Linux target description.

	* features/Makefile (WHICH): Use rs6000/powerpc-32l and
	rs6000/powerpc-altivec32l instead of rs6000/powerpc-32.
	Use rs6000/powerpc-64l and rs6000/powerpc-altivec64l instead
	of rs6000/powerpc-64.  Use rs6000/powerpc-e500l instead of
	rs6000/powerpc-e500.  Update -expedite variables accordingly.

	* features/rs6000/power-spe.xml: Use regnum 73 for "acc".
	* features/rs6000/powerpc-32.xml: Do not include power-altivec.xml.
	* features/rs6000/powerpc-64.xml: Do not include power-altivec.xml.
	* features/rs6000/powerpc-e500.c: Regenerate.
	* features/rs6000/powerpc-32.c: Regenerate.
	* features/rs6000/powerpc-64.c: Regenerate.

	* features/rs6000/power-linux.xml: New file.
	* features/rs6000/power64-linux.xml: New file.
	* features/rs6000/powerpc-32l.xml: New file.
	* features/rs6000/powerpc-altivec32l.xml: New file.
	* features/rs6000/powerpc-64l.xml: New file.
	* features/rs6000/powerpc-altivec64l.xml: New file.
	* features/rs6000/powerpc-e500l.xml: New file.
	* features/rs6000/powerpc-32l.c: New (generated) file.
	* features/rs6000/powerpc-altivec32l.c: New (generated) file.
	* features/rs6000/powerpc-64l.c: New (generated) file.
	* features/rs6000/powerpc-altivec64l.c: New (generated) file.
	* features/rs6000/powerpc-e500l.xml: New (generated) file.

	* regformats/reg-ppc.dat: Remove.
	* regformats/reg-ppc64.dat: Remove.
	* regformats/rs6000/powerpc-32.dat: Remove.
	* regformats/rs6000/powerpc-64.dat: Remove.
	* regformats/rs6000/powerpc-e500.dat: Remove.
	* regformats/rs6000/powerpc-32l.dat: New (generated) file.
	* regformats/rs6000/powerpc-altivec32l.dat: New (generated) file.
	* regformats/rs6000/powerpc-64l.dat: New (generated) file.
	* regformats/rs6000/powerpc-altivec64l.dat: New (generated) file.
	* regformats/rs6000/powerpc-e500l.dat: New (generated) file.

2008-05-03  Pedro Alves  <pedro@codesourcery.com>

	* thread.c (delete_thread): Call observer_notify_thread_exit.
	* mi/mi-interp.c (mi_interpreter_init): Register mi_thread_exit as
	thread_exit observer.
	(mi_thread_exit): New.

2008-05-03  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c (create_exception_catchpoint): Remove prototype
	for already deleted function.
	* breakpoint.h (ep_is_exception_catchpoint): Likewise.
	* frame.h (show_stack_frame): Remove prototype.
	* stack.c (show_stack_frame): Remove empty, unused function.
	* source.c (symtab_to_fullname, print_source_lines): Small fix
	in comment.
	* value.c (show_values): Update comments to mention "show values"
	command instead of "info history".

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

	* linespec.c: Include "target.h".
	(minsym_found): Handle minimal symbols pointing to function
	descriptors.  Use find_function_start_pc.
	* minsyms.c (msymbol_objfile): New function.
	* parse.c (write_exp_msymbol): Handle minimal symbols pointing
	to function descriptors.
	* symtab.c (fixup_section): Only use minimal symbol at the same
	address to determine section of a symbol.
	(find_function_start_pc): New function.
	(find_function_start_sal): Use it.
	* symtab.h (msymbol_objfile): Add prototype.
	(find_function_start_pc): Likewise.
	* value.c: Include "objfiles.h".
	(value_fn_field): Handle minimal symbols pointing to function
	descriptors.
	* Makefile.in (linespec.o): Update dependencies.
	(value.o): Likewise.

2008-05-02  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (unwrap_value): Handle the case where the "F" field
	inside a PAD type is a bitfield.

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

	* ppc-sysv-tdep.c (ppc64_sysv_abi_push_dummy_call): Handle
	TYPE_CODE_BOOL and TYPE_CODE_CHAR the same as TYPE_CODE_INT.
	Handle TYPE_CODE_REF the same as TYPE_CODE_PTR.
	Handle TYPE_CODE_METHOD the same as TYPE_CODE_FUNC.
	Allow typedefs when checking for function pointer arguments.
	Right-align small structs passed on the stack.
	(ppc64_sysv_abi_return_value): Handle TYPE_CODE_BOOL and
	TYPE_CODE_CHAR the same as TYPE_CODE_INT.
	Handle TYPE_CODE_REF the same as TYPE_CODE_PTR.

2008-05-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (arm-tdep.o): Update.
	* arm-tdep.c (arm_objfile_data_key, struct arm_mapping_symbol)
	(struct arm_per_objfile, arm_compare_mapping_symbols): New.
	(arm_pc_is_thumb): Use mapping symbols.
	(arm_objfile_data_cleanup, arm_record_special_symbol): New.
	(arm_gdbarch_init): Call set_gdbarch_record_special_symbol.
	(_initialize_arm_tdep): Initialize arm_objfile_data_key.
	* elfread.c (elf_symtab_read): Use gdbarch_record_special_symbol.
	* gdbarch.sh: Add record_special_symbol.
	* gdbarch.c, gdbarch.h: Regenerated.
	* objfiles.c (struct objfile_data): Add cleanup member.
	(register_objfile_data_with_cleanup): New function, from
	register_objfile_data.
	(register_objfile_data): Use it.
	(objfile_free_data): Call clear_objfile_data.
	(clear_objfile_data): Call cleanup functions.
	* objfiles.h (register_objfile_data_with_cleanup): Declare.

2008-05-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* objfiles.c (init_entry_point_info): Handle shared libraries.

2008-05-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-tdep.c (arm_prologue_this_id): Compare pc, not func, to
	lowest_pc.

2008-05-02  Jim Blandy  <jimb@codesourcery.com>
	    Pedro Alves  <pedro@codesourcery.com>

	Implement displaced stepping.

	* gdbarch.sh (max_insn_length): New 'variable'.
	(displaced_step_copy, displaced_step_fixup)
	(displaced_step_free_closure, displaced_step_location): New
	functions.
	(struct displaced_step_closure): Add forward declaration.
	* gdbarch.c, gdbarch.h: Regenerated.

	* arch-utils.c: #include "objfiles.h".
	(simple_displaced_step_copy_insn)
	(simple_displaced_step_free_closure)
	(displaced_step_at_entry_point): New functions.
	* arch-utils.h (simple_displaced_step_copy_insn)
	(simple_displaced_step_free_closure)
	(displaced_step_at_entry_point): New prototypes.

	* i386-tdep.c (I386_MAX_INSN_LEN): Rename to...
	(I386_MAX_MATCHED_INSN_LEN): ... this.
	(i386_absolute_jmp_p, i386_absolute_call_p)
	(i386_ret_p, i386_call_p, i386_breakpoint_p, i386_syscall_p)
	(i386_displaced_step_fixup): New functions.
	(struct i386_insn, i386_match_insn): Update.
	(i386_gdbarch_init): Set gdbarch_max_insn_length.
	* i386-tdep.h (I386_MAX_INSN_LEN): New.
	(i386_displaced_step_fixup): New prototype.
	* i386-linux-tdep.c (i386_linux_init_abi): Include "arch-utils.h".
	Register gdbarch_displaced_step_copy,
	gdbarch_displaced_step_fixup, gdbarch_displaced_step_free_closure,
	and gdbarch_displaced_step_location functions.

	* infrun.c (debug_displaced): New variable.
	(show_debug_displaced): New function.
	(struct displaced_step_request): New struct.
	(displaced_step_request_queue, displaced_step_ptid)
	(displaced_step_gdbarch, displaced_step_closure)
	(displaced_step_original, displaced_step_copy)
	(displaced_step_saved_copy, can_use_displaced_stepping): New
	variables.
	(show_can_use_displaced_stepping, use_displaced_stepping)
	(displaced_step_clear, cleanup_displaced_step_closure)
	(displaced_step_dump_bytes, displaced_step_prepare)
	(displaced_step_clear_cleanup, write_memory_ptid)
	(displaced_step_fixup): New functions.
	(resume): Call displaced_step_prepare.
	(proceed): Call read_pc once, and remember the value.  If using
	displaced stepping, don't remove breakpoints.
	(handle_inferior_event): Call displaced_step_fixup.  Add some
	debugging output.  When we try to step over a breakpoint, but get
	a signal to deliver to the thread instead, ensure the step-resume
	breakpoint is actually inserted.  If a thread hop is needed, and
	displaced stepping is enabled, don't remove breakpoints.
	(init_wait_for_inferior): Call displaced_step_clear.
	(_initialize_infrun): Add "set debug displaced" command.  Add
	"maint set can-use-displaced-stepping" command.  Clear
	displaced_step_ptid.
	* inferior.h (debug_displaced): Declare variable.
	(displaced_step_dump_bytes): Declare function.

	* Makefile.in (arch-utils.o, i386-linux-tdep.o): Update
	dependencies.

2008-05-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-tdep.c (arm_mode_strings, arm_fallback_mode_string)
	(arm_force_mode_string, arm_show_fallback_mode)
	(arm_show_force_mode): New.
	(arm_pc_is_thumb): Honor fallback-mode and force-mode.  Use
	arm_frame_is_thumb.
	(_initialize_arm_tdep): Add "set arm fallback-mode"
	and "set arm force-mode".
	* NEWS: Document new commands.

2008-05-02  Andrew Stubbs  <andrew.stubbs@st.com>

	* main.h (batch_silent): Declare.
	* event-top.c: Include main.h.
	(gdb_setup_readline): Remove extern batch_silent declaration.
	* infrun.c (normal_stop): Don't print source location when running in
	--batch-silent mode.
	* Makefile.in (event-top.o): Add main.h dependency.

2008-05-02  Andreas Schwab  <schwab@suse.de>

	* target.h (struct target_ops): Add
	to_watchpoint_addr_within_range.
	(target_watchpoint_addr_within_range): New function.
	* target.c (update_current_target): Inherit
	to_watchpoint_addr_within_range, defaulting to
	default_watchpoint_addr_within_range.
	(default_watchpoint_addr_within_range): New function.
	(debug_to_watchpoint_addr_within_range): New function.
	(setup_target_debug): Set to_watchpoint_addr_within_range.
	* ppc-linux-nat.c (ppc_linux_watchpoint_addr_within_range):
	New function.
	(_initialize_ppc_linux_nat): Set to_watchpoint_addr_within_range.
	* breakpoint.c (watchpoints_triggered): Use
	target_watchpoint_addr_within_range.

2008-05-01  Pedro Alves  <pedro@codesourcery.com>

	* configure.tgt: Add i[34567]86-*-dicos* and x86_64-*-dicos*.
	(i[34567]86-*-dicos*, x86_64-*-dicos*):
	Set gdb_osabi to GDB_OSABI_DICOS.

	* defs.h (enum gdb_osabi): Add GDB_OSABI_DICOS.
	* osabi.c (gdb_osabi_name): Add "DICOS".

	* i386-dicos-tdep.c: New file.

	* Makefile.in (ALL_TARGET_OBS): Add i386-dicos-tdep.o.
	(ALLDEPFILES): Add i386-dicos-tdep.c.
	(i386-dicos-tdep.o): New rule.

2008-05-01  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_nat_switch_fork): Reinit GDB's thread list
	and register the fork's PTID as a thread.

2008-05-01  Aleksandar Ristovski  <aristovski@qnx.com>

	PR gdb/1665
	* breakpoint.c (create_breakpoint): Add breakpoint_ops argument and
	assign its value to the breakpoint created.
	(create_breakpoints): Add breakpoint_ops argument and pass it
	to create_breakpoint call.
	(break_command_really): Add breakpoint_ops argument and pass/assign
	appropriately.
	(break_command_1): Pass NULL as ops argument.
	(set_breakpoint): Pass NULL as ops argument.
	(print_one_exception_catchpoint): Print <PENDING> if no loc available.
	(handle_gnu_v3_exceptions): Call generic breakpoint code to insert
	catch and throw catchpoints.

2008-05-01  Aleksandar Ristovski  <aristovski@qnx.com>

	PR gdb/2343
	* corelow.c (core_open): Use gdbarch_target_signal_from_host to
	translate signal numeric value from the target to GDB's enum
	target_signal.
	* gdbarch.c, gdbarch.h: Regenerated.
	* gdbarch.sh: Added two new functions target_signal_from_host and
	target_signal_to_host.
	* target.h (default_target_signal_from_host,
	default_target_signal_to_host): New functions - declarations.
	* signals/signals.c (struct gdbarch): New declaration.
	(default_target_signal_to_host, default_target_signal_from_host): New
	functions.

2008-05-01  Daniel Jacobowitz  <dan@codesourcery.com>
	    Pedro Alves  <pedro@codesourcery.com>

	Based on work by Jan Kratochvil <jan.kratochvil@redhat.com> and Jeff
 	Johnston <jjohnstn@redhat.com>.

	* NEWS: Mention attach to stopped process fix.
	* infcmd.c (detach_command, disconnect_command): Discard the thread
	list.
	* infrun.c (handle_inferior_event): Do not ignore non-SIGSTOP while
	attaching.  Use signal_stop_state.
	(signal_stop_state): Check stop_soon.
	* linux-nat.c (kill_lwp): Declare earlier.
	(pid_is_stopped, linux_nat_post_attach_wait): New.
	(lin_lwp_attach_lwp): Use linux_nat_post_attach_wait.  Update
	comments.
	(linux_nat_attach): Use linux_nat_post_attach_wait.
	(detach_callback, linux_nat_detach): Improve handling for signalled
	processes.
	(linux_nat_pid_to_str): Always print out the LWP ID if it differs
	from the process ID.
	* Makefile.in (infcmd.o): Update.

2008-05-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-linux-tdep.h (ARM_CPSR_REGNUM): Delete definition.
	* arm-tdep.c (arm_frame_is_thumb): New.
	(arm_pc_is_thumb): Clarify comment.
	(thumb_analyze_prologue): Remove PC special case.
	(thumb_scan_prologue): Take a block_addr argument.  Use it for
	find_pc_partial_function.  Remove unused variables.
	(arm_scan_prologue): Use arm_frame_is_thumb.  Use the block address
	for find_pc_partial_function.  Remove PC special case.
	(arm_prologue_prev_register): Add special handling for PC and CPSR.
	(arm_dwarf2_prev_register, arm_dwarf2_frame_init_reg): New.
	(arm_get_next_pc): Use arm_frame_is_thumb.
	(arm_write_pc): Use CPSR_T instead of 0x20.
	(arm_gdbarch_init): Call dwarf2_frame_set_init_reg.
	* arm-tdep.h (enum gdb_regnum): Add ARM_CPSR_REGNUM.
	(CPSR_T): Define.
	* dwarf2-frame.c (dwarf2_frame_prev_register): Handle
	DWARF2_FRAME_REG_FN.
	* dwarf2-frame.h (enum dwarf2_frame_reg_rule): Add
	DWARF2_FRAME_REG_FN.
	(struct dwarf2_frame_state_reg): Add FN to loc union.

2008-05-01  Nick Roberts  <nickrob@snap.net.nz>

	* exec.c (print_section_info): Add missing '\n'.

2008-05-01  Vladimir Prus  <vladimir@codesourcery.com>

	* thread.c (add_thread): Move observer call to ...
	(add_thread_silent): ... here.

2008-04-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* rs6000-tdep.c: Update for unwinder changes.
	* ppcobsd-tdep.c: Likewise.

2008-04-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c: Update for unwinder changes.

2008-04-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* spu-tdep.c: Update for unwinder changes.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* hppanbsd-tdep.c, m68kbsd-tdep.c, mn10300-linux-tdep.c,
	ppc-linux-tdep.c, ppcnbsd-tdep.c, sparc-linux-tdep.c,
	sparc64-linux-tdep.c: Update for unwinder changes.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* mipsnbsd-tdep.c, mips64obsd-tdep.c, mips-linux-tdep.c: Update
	for unwinder changes.
	* mips-tdep.c: Likewise.
	(mips_stub_frame_cache): Unwind the ABI stack pointer, not the
	raw one.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-linux-tdep.c, arm-tdep.c, armobsd-tdep.c: Update for
	unwinder changes.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	Update i386 and amd64 ports for unwinder changes.

	* amd64-tdep.c (amd64_frame_cache): Expect this_frame.
	(amd64_frame_this_id, amd64_frame_prev_register): Update signature.
	(amd64_frame_unwind): Use default_frame_sniffer.
	(amd64_frame_sniffer): Delete.
	(amd64_sigtramp_frame_cache): Expect this_frame.
	(amd64_sigtramp_frame_this_id, amd64_sigtramp_frame_prev_register)
	(amd64_sigtramp_frame_sniffer): Update signature.
	(amd64_sigtramp_frame_unwind): Add amd64_sigtramp_frame_sniffer.
	(amd64_frame_base_address): Expect this_frame.
	(amd64_dummy_id): Renamed from amd64_unwind_dummy_id.  Expect
	this_frame.
	(amd64_init_abi): Use set_gdbarch_dummy_id and
	frame_unwind_append_unwinder.
	* i386-tdep.c (i386_frame_cache): Expect this_frame.
	(i386_frame_this_id, i386_frame_prev_register): Update signature.
	(i386_frame_unwind): Use default_frame_sniffer.
	(i386_frame_sniffer): Delete.
	(i386_sigtramp_frame_cache): Expect this_frame.
	(i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register)
	(i386_sigtramp_frame_sniffer): Update signature.
	(i386_sigtramp_frame_unwind): Use i386_sigtramp_frame_sniffer.
	(i386_frame_base_address): Update signature.
	(i386_dummy_id): Rename from i386_unwind_dummy_id.  Expect this_frame.
	(i386_push_dummy_call): Update comment.
	(i386_sigtramp_p, i386_svr4_sigtramp_p, i386_svr4_sigcontext_addr):
	Expect this_frame.
	(i386_gdbarch_init): Use set_gdbarch_dummy_id, dwarf2_append_unwinders,
	and frame_unwind_append_unwinder.
	* amd64-linux-tdep.c, amd64-sol2-tdep.c, amd64fbsd-tdep.c,
	amd64nbsd-tdep.c, amd64obsd-tdep.c, i386-linux-tdep.c,
	i386-nto-tdep.c, i386bsd-tdep.c, i386-sol2-tdep.c, i386obsd-tdep.c,
	i386nbsd-tdep.c: Update for unwinder changes.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* trad-frame.c (struct trad_frame_cache): Rename next_frame to this_frame.
	(trad_frame_cache_zalloc, trad_frame_alloc_saved_regs): Expect
	this_frame.
	(trad_frame_get_prev_register, trad_frame_get_register): Update signature.
	* trad-frame.h (trad_frame_cache_zalloc, trad_frame_get_register)
	(trad_frame_alloc_saved_regs, trad_frame_get_prev_register): Update
	signature.
	* tramp-frame.c (tramp_frame_cache, tramp_frame_start): Expect
	this_frame.
	(tramp_frame_this_id, tramp_frame_prev_register, tramp_frame_sniffer):
	Update signature.
	* tramp-frame.h (struct tramp_frame): Update signature of init.
	* Makefile.in (trad-frame.o): Update.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2-frame.c (read_reg): Expect this_frame in the baton.
	(execute_stack_op): Put this_frame in the baton.
	(execute_cfa_program): Take this_frame.
	(struct dwarf2_frame_ops): Update comment for signal_frame_p.
	(dwarf2_frame_default_init_reg, dwarf2_frame_init_reg)
	(dwarf2_frame_signal_frame_p, dwarf2_frame_cache)
	(dwarf2_frame_this_id): Adjust to work on this_frame.
	(dwarf2_signal_frame_this_id): Delete.
	(dwarf2_frame_prev_register): Update signature.  Use new frame
	unwind methods.
	(dwarf2_frame_sniffer): Update signature.  Expect this_frame.
	(dwarf2_frame_unwind, dwarf2_signal_frame_unwind): Add
	dwarf2_frame_sniffer.
	(dwarf2_append_unwinders): New.
	(dwarf2_frame_base_address, dwarf2_frame_base_sniffer): Expect
	this_frame.
	* sparc-tdep.c (sparc32_dwarf2_struct_return_p)
	(sparc32_dwarf2_frame_init_reg): Expect this_frame.
	* cris-tdep.c (cris_dwarf2_frame_init_reg): Likewise.
	* rs6000-tdep.c (ppc_dwarf2_frame_init_reg): Likewise.
	* 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.
	* dwarf2-frame.h (dwarf2_frame_sniffer): Delete declaration.
	(dwarf2_append_unwinders): Declare.
	(dwarf2_frame_base_sniffer): Update declaration.
	* i386-linux-tdep.c (i386_linux_dwarf_signal_frame_p): Expect
	this_frame.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	Convert frame unwinders to use the current frame and
	"struct value".

	* frame.c (frame_debug): Make global.
	(get_frame_id): Pass this frame to unwinder routines.
	(frame_pc_unwind): Remove unused unwind->prev_pc support.
	(do_frame_register_read): Do not discard the return value of
	frame_register_read.
	(frame_register_unwind): Remove debug messages.  Use
	frame_unwind_register_value.
	(frame_unwind_register_value, get_frame_register_value): New
	functions.
	(create_new_frame, get_frame_base_address, get_frame_locals_address)
	(get_frame_args_address, get_frame_type): Pass this frame to
	unwinder routines.
	(frame_cleanup_after_sniffer, frame_prepare_for_sniffer): New
	functions.
	* frame.h: Update comments.
	(frame_debug, frame_unwind_register_value, get_frame_register_value)
	(frame_prepare_for_sniffer): Declare.
	* frame-unwind.h: Update comments and parameter names.
	(default_frame_sniffer): Declare.
	(frame_prev_register_ftype): Return a struct value *.
	(struct frame_unwind): Remove prev_pc member.
	(frame_unwind_sniffer_ftype, frame_unwind_append_sniffer): Delete.
	(frame_unwind_append_unwinder, frame_unwind_got_optimized)
	(frame_unwind_got_register, frame_unwind_got_memory)
	(frame_unwind_got_constant, frame_unwind_got_address): Declare.
	* frame-base.h: Update comments and parameter names.
	* valops.c (value_fetch_lazy): Use get_frame_register_value.  Iterate
	if necessary.  Add debugging output.
	* sentinel-frame.c (sentinel_frame_prev_register)
	(sentinel_frame_this_id): Update for new signature.
	(sentinel_frame_prev_pc): Delete.
	(sentinel_frame_unwinder): Remove prev_pc.
	* ia64-tdep.c (ia64_libunwind_frame_unwind): Do not initialize
	prev_pc.
	* libunwind-frame.c (libunwind_frame_unwind): Likewise.
	* frame-unwind.c (struct frame_unwind_table_entry): Remove sniffer.
	(frame_unwind_append_sniffer): Delete.
	(frame_unwind_append_unwinder): New function.
	(frame_unwind_find_by_frame): Take this frame.  Only use sniffers
	from unwinders.  Use frame_prepare_for_sniffer.
	(default_frame_sniffer, frame_unwind_got_optimized)
	(frame_unwind_got_register, frame_unwind_got_memory)
	(frame_unwind_got_constant, frame_unwind_got_address): New functions.
	* dummy-frame.c (dummy_frame_sniffer): Use gdbarch_dummy_id.
	(dummy_frame_prev_register, dummy_frame_this_id): Update for new
	signature.
	* gdbarch.sh: Replace unwind_dummy_id with dummy_id.
	* gdbarch.c, gdbarch.c: Regenerated.
	* frame-base.c (default_frame_base_address)
	(default_frame_locals_address, default_frame_args_address): Update
	for new signature.
	(frame_base_find_by_frame): Pass this frame to unwinder routines.
	* infcall.c (call_function_by_hand): Update comments.
	* Makefile.in (frame-unwind.o): Update dependencies.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* ada-lang.c (ada_value_primitive_packed_val): Only check
	value_lazy for memory lvals.
	* findvar.c (value_of_register_lazy): New function.
	(locate_var_value): Only check value_lazy for memory lvals.
	* valarith.c (value_subscripted_rvalue): Likewise.
	* valops.c (value_fetch_lazy): Handle both memory and register
	lvals.
	(search_struct_field, value_slice): Only check value_lazy for memory
	lvals.
	* value.c (struct value): Update comment for lazy.
	(value_primitive_field): Only check value_lazy for memory lvals.
	* value.h (value_lazy): Update comment.
	(value_of_register_lazy): Declare.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* corefile.c (reopen_exec_file): Close any open files.

2008-04-29  Joel Brobecker  <brobecker@adacore.com>

	* ia64-tdep.c (ia64_memory_remove_breakpoint): Set
	show_memory_breakpoints to 1 while reading the instruction bundle.

2008-04-29  Joel Brobecker  <brobecker@adacore.com>

	* gdbarch.sh: Document the return_value method. Explain that
	the FUNCTYPE parameter might be NULL.
	* gdbarch.h: Regenerated.
	* sparc-tdep.c (sparc32_push_dummy_code): Do not pass the function
	type when calling using_struct_return, as this is unnecessary
	on this target.

2008-04-28  Joel Brobecker  <brobecker@adacore.com>

	* terminal.h (create_tty_session): Fix return type.

2008-04-26  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-interp.c (mi_new_thread): Quote the thread id.

2008-04-26  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.c (condition_command, commands_from_control_command)
	(break_command_really): Minor reformatting.

2008-04-25  Pedro Alves  <pedro@codesourcery.com>

	* dwarf2read.c (dwarf2_const_value): Handle DW_FORM_strp.

2008-04-25  Pedro Alves  <pedro@codesourcery.com>

	* amd64-tdep.c (amd64_get_longjmp_target): New.
	(amd64_init_abi): Register amd64_get_longjmp_target as
	gdbarch_get_longjmp_target callback.
	* i386-tdep.c (i386_get_longjmp_target): Remove 64-bit handling.

2008-04-25  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.h (enum bpstat_what_main_action): Delete
	BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE.

	* breakpoint.c (clrs): Delete.
	(bpstat_what): Update table.

	* infrun.c (handle_inferior_event): Remove
	BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE handling.

2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-cmds.h (mi_cmd_args_ftype): Remove.
	Adjust all prototypes using mi_cmd_args_ftype to use
	mi_cmd_argv_ftype.
	(struct mi_cmd): Remove the args_func field.
	* mi/mi-cmds.c: Don't provide value for the args_func field.
	* mi/mi-main.c (mi_execute_async_cli_command)
	(mi_cmd_exec_run, mi_cmd_exec_next, mi_cmd_exec_next_instruction)
	(mi_cmd_exec_step, mi_cmd_exec_step_instruction)
	(mi_cmd_exec_finish, mi_cmd_exec_until, mi_cmd_exec_return)
	(mi_cmd_exec_continue, mi_cmd_exec_interrupt)
	(mi_cmd_target_download): Adjust.
	(mi_cmd_target_select): Adjust. Pass 0 for from_tty parameter.
	(mi_cmd_execute): Do not check for args_func.
	(mi_execute_async_cli_command): Adjust.
	* mi/mi-parse.c: Don't check for args_func.

2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.c (bpstat_check_location)
	(bpstat_check_watchpoint, bpstat_check_breakpoint_conditions):
	New, extracted from bpstat_stop_status.
	(bpstat_stop_status): Use the above.

2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-main.c (last_async_command): Rename to current_token.
	(previous_async_command): Remove.
	(mi_cmd_gdb_exit): Adjust.
	(mi_cmd_exec_interrupt): Don't dance with previous_async_command.
	(mi_cmd_target_select): Adjust.
	(mi_cmd_execute): Don't set previous_async_command.  Free token
	here even in async mode.
	(mi_execute_async_cli_command): Adjust.
	(mi_exec_async_cli_cmd_continuation): Adjust.  Do not free the
	token.
	(mi_load_progress): Adjust.

2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	* infcmd.c (step_1_continuation): Always disable longjmp
	breakpoint if we're not going to do another step.

2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	exec_cleanup murder.
	* breakpoint.c (until_break_command_continuation): Add
	the 'error' parameter.  Directly delete the breakoint as
	opposed to running cleanups.
	(until_break_command): Install continuation only
	after starting the target.  Don't use exec cleanups,
	use ordinary cleanups.  Discard cleanups is successfully
	started the target in async mode.
	(make_cleanup_delete_breakpoint): Remove.
	* breakpoint.h (make_cleanup_delete_breakpoint): Remove
	declaration.
	* defs.h (do_exec_cleanups, make_exec_cleanup): Remove
	declarations.
	(struct continations): Add the 'error' parameter to the
	continuation_hook field.
	(add_continuation, do_all_continuations)
	(add_intermediate_continuation)
	(do_all_intermediate_continuations): Add the 'error' parameter.
	* exceptions.c (throw_exception): Don't call do_exec_cleanups.
	* inf-loop.c (inferior_event_handler): Instead of calling
	discard_all_continuations, use do_all_continuations with 1 as
	'error' parameter.  Pass 0 as 'error' parameter in existing uses
	of discard_all_continuations.
	* infcmd.c (step_1): Do not use exec cleanup.  For async case, discard
	cleanups.
	(step_once): Install continuation only after resuming the target.
	(step_1_continuation): Disable longjmp breakpoint on error.
	(finish_command_continuation): Add the error parameter.  Delete
	the finish breakpoint directly, do not use cleanups.
	(finish_command): Do not use exec_cleanups. Always setup
	continuation.  For sync case, immediately run them.
	(attach_command_continuation): Add the error parameter.
	* infrun.c (fetch_inferior_event): Do not use exec cleanups to
	remove step_resume_breakpoint -- adjust delete it directly.
	* interps.c (interp_set): Adjust call to do_all_continations.
	* mi/mi-interp.c (mi_interpreter_exec_continuation): Do not
	do exec cleanups.
	* mi/mi-main.c (mi_cmd_target_select): Do not do exec
	cleanups.
	(mi_cmd_execute): Do not use exec_cleanup.
	(mi_execute_async_cli_command): Simplify the string concatenation
	logic.  Do no use exec cleanup.
	(mi_exec_async_cli_cmd_continuation): New parameter error.
	Free last_async_command.
	* top.c (command_line_handler_continuation): New parameter error.
	* utils.c (exec_cleanup_chain, make_exec_cleanup)
	(do_exec_cleanups): Remove.
	(add_continuation, do_all_continations)
	(add_intermediate_continuation)
	(do_all_intermediate_continuations): New parameter error.

2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.h (bp_location_p): New typedef.
	Register a vector of bp_location_p.
	* breakpoint.c (always_inserted_mode)
	(show_always_inserted_mode): New.
	(unlink_locations_from_global_list): Remove.
	(update_global_location_list)
	(update_global_location_list_nothrow): New.
	(update_watchpoint): Don't free locations.
	(should_insert_location): New.
	(insert_bp_location): Use should_insert_location.
	(insert_breakpoint_locations): Copied from
	insert_breakpoints.
	(insert_breakpoint): Use insert_breakpoint_locations.
	(bpstat_stop_status): Call update_global_location_list
	when disabling breakpoint.
	(allocate_bp_location): Don't add to bp_location_chain.
	(set_raw_breakpoint)
	(create_longjmp_breakpoint, enable_longjmp_breakpoint)
	(disable_longjmp_breakpoint, create_overlay_event_breakpoint)
	(enable_overlay_breakpoints, disable_overlay_breakpoints)
	(set_longjmp_resume_breakpoint)
	(enable_watchpoints_after_interactive_call_stop)
	(disable_watchpoints_before_interactive_call_start)
	(create_internal_breakpoint)
	(create_fork_vfork_event_catchpoint)
	(create_exec_event_catchpoint, set_momentary_breakpoint)
	(create_breakpoints, break_command_1, watch_command_1)
	(create_exception_catchpoint)
	(handle_gnu_v3_exceptions)
	(disable_breakpoint, breakpoint_re_set_one)
	(create_thread_event_breakpoint, create_solib_event_breakpoint)
	(create_ada_exception_breakpoint): : Don't call check_duplicates.
	Call update_global_location_list.
	(delete_breakpoint): Don't remove locations and don't
	try to reinsert them. Call update_global_location_list.
	(update_breakpoint_locations): Likewise.
	(restore_always_inserted_mode): New.
	(update_breakpoints_after_exec): Temporary disable
	always inserted mode.
	* Makefile.in: Update dependencies.

	* infrun.c (proceed): Remove breakpoints while stepping
	over breakpoint.
	(handle_inferior_event): Don't remove or insert
	breakpoints.
	* linux-fork.c (checkpoint_command): Remove breakpoints
	before fork and insert after.
	(linux_fork_context): Remove breakpoints before switch
	and insert after.
	* target.c (target_disconnect, target_detach): Remove
	breakpoints from target.


2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.c (print_one_breakpoint_location): In MI
	mode, report the location string the breakpoint was
	originally created with.

2008-04-23  Maxim Grigoriev  <maxim2405@gmail.com>

	* Makefile.in (xtensa-tdep.o): Update dependencies.
	* configure.tgt (xtensa*): Update dependencies.
	* xtensa-tdep.c (arreg_number): Renamed from areg_number.
	Local variable areg renamed to arreg.
	(areg_number): New function.
	(xtensa_pseudo_register_read, xtensa_pseudo_register_write)
	(xtensa_extract_return_value, xtensa_store_return_value): areg_number
	replaced by arreg_number.
	(xtensa_windowed_frame_cache, struct xtensa_frame_cache): New comments.
	(xtensa_alloc_frame_cache): Initialize cache->wd.ws.
	(xtensa_scan_prologue): New function.
	(xtensa_frame_cache): New local fp_regnum. Handle separately the case,
	when ENTRY instraction hasn't been executed yet. Get the frame pointer
	value based on prologue analysis. Fix the bugs preventing WS and
	AR4-AR7/A11 registers from getting right values for intermediate frames,
	whose registers have been already spilled.
	(xtensa_frame_prev_register): Fix WS register value. Use are_number
	and arreg_number appropriately.
	(xtensa_gdbarch_init): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets.

2008-04-23  Andrew Stubbs  <andrew.stubbs@st.com>

	* printcmd.c: Define USE_PRINTF_I64 and PRINTF_HAS_LONG_LONG on MinGW.
	(printf_command): Convert %lld to %I64d when USE_PRINTF_I64 set.

2008-04-23  Paolo Bonzini  <bonzini@gnu.org>

	* acinclude.m4: Add override.m4.
	* configure: Regenerate.

2008-04-22  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* ada-lang.c (get_selections): Variable PROMPT made non-const and
	initialized with a trailing space now.  Use PROMPT_ARG of
	COMMAND_LINE_INPUT instead of printing it ourselves.

2008-04-22  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Document support for 64-bit core file.

2008-04-22  Corinna Vinschen  <vinschen@redhat.com>

	* NEWS: Add information on calling convention and new SH CLI options.

	* sh-tdep.c (sh_cc_gcc): New static string.
	(sh_cc_renesas): Ditto.
	(sh_cc_enum): New static string array.
	(sh_active_calling_convention): New static string pointer denoting
	active user chosen ABI.
	(sh_is_renesas_calling_convention): New function to return function
	specific ABI, or user choice if necessary.
	(sh_use_struct_convention): Rename first argument and turn around its
	meaning.  Check for renesas ABI and return accordingly.
	(sh_use_struct_convention_nofpu): New function.
	(sh_next_flt_argreg): Get function type as third parameter.  Check
	for renesas ABI and choose floating registers accordingly.
	(sh_push_dummy_call_fpu): Check for ABI and choose argument slot and
	struct return slot accordingly.
	(sh_push_dummy_call_nofpu): Ditto.
	(sh_return_value_nofpu): Call sh_use_struct_convention_nofpu from here.
	Evaluate ABI and give to sh_use_struct_convention_nofpu.
	(sh_return_value_fpu):  Evaluate ABI and give to
	sh_use_struct_convention.
	(show_sh_command): New function.
	(set_sh_command): Ditto.
	(_initialize_sh_tdep): Initialize `set/show sh calling-convention
	CLI command.

	* gdbarch.sh (return_value): Add func_type argument.
	* gdbarch.c: Regenerate.
	* gdbarch.h: Ditto.
	* eval.c (evaluate_subexp_standard): Rename local variable value_type to
	val_type so as not to collide with value_type function.  Call
	using_struct_return with additional function type argument.
	* infcall.c (call_function_by_hand): Call using_struct_return and
	gdbarch_return_value with additional function type argument.
	* infcmd.c (print_return_value): Take addition func_type argument.
	Call gdbarch_return_value with additional function type argument.
	(finish_command_continuation): Call print_return_value with additional
	function type argument.
	(finish_command): Ditto.
	* sparc-tdep.c (sparc32_push_dummy_code): Call using_struct_return with
	additional function type argument.
	* stack.c (return_command): Call using_struct_return and
	gdbarch_return_value with additional function type argument.
	* value.c (using_struct_return): Take additional function type argument.
	* value.h (using_struct_return): Accommodate declaration.
	* alpha-tdep.c (alpha_return_value): Add func_type argument.
	* amd64-tdep.c (amd64_return_value): Ditto.
	* arm-tdep.c (arm_return_value): Ditto.
	* avr-tdep.c (avr_return_value): Ditto.
	* cris-tdep.c (cris_return_value): Ditto.
	* frv-tdep.c (frv_return_value): Ditto.
	* h8300-tdep.c (h8300_return_value): Ditto.
	(h8300h_return_value): Ditto.
	* hppa-tdep.c (hppa32_return_value): Ditto.
	(hppa64_return_value): Ditto.
	* i386-tdep.c (i386_return_value): Ditto.
	* ia64-tdep.c (ia64_return_value): Ditto.
	* iq2000-tdep.c (iq2000_return_value): Ditto.
	* m32c-tdep.c (m32c_return_value): Ditto.
	* m32r-tdep.c (m32r_return_value): Ditto.
	* m68hc11-tdep.c (m68hc11_return_value): Ditto.
	* m68k-tdep.c (m68k_return_value): Ditto.
	(m68k_svr4_return_value): Ditto.
	* m88k-tdep.c  (m88k_return_value): Ditto.
	* mep-tdep.c (mep_return_value): Ditto.
	* mips-tdep.c (mips_eabi_return_value): Ditto.
	(mips_n32n64_return_value): Ditto.
	(mips_o32_return_value): Ditto.
	(mips_o64_return_value): Ditto.
	* mn10300-tdep.c (mn10300_return_value): Ditto.
	* mt-tdep.c (mt_return_value): Ditto.
	* ppc-linux-tdep.c (ppc_linux_return_value): Ditto.
	* ppc-sysv-tdep.c (ppc_sysv_abi_return_value): Ditto.
	(ppc_sysv_abi_broken_return_value): Ditto.
	(ppc64_sysv_abi_return_value): Ditto.
	* ppc-tdep.h (ppc_sysv_abi_return_value): Ditto.
	(ppc_sysv_abi_broken_return_value): Ditto.
	(ppc64_sysv_abi_return_value): Ditto.
	* ppcnbsd-tdep.c (ppcnbsd_return_value): Ditto.
	* rs6000-tdep.c (rs6000_return_value): Ditto.
	* s390-tdep.c (s390_return_value): Ditto.
	* score-tdep.c (score_return_value): Ditto.
	* sh-tdep.c (sh_return_value_nofpu): Ditto.
	(sh_return_value_fpu): Ditto.
	* sh64-tdep.c (sh64_return_value): Ditto.
	* sparc-tdep.c (sparc32_return_value): Ditto.
	* sparc64-tdep.c (sparc64_return_value): Ditto.
	* spu-tdep.c (spu_return_value): Ditto.
	* v850-tdep.c (v850_return_value): Ditto.
	* vax-tdep.c (vax_return_value): Ditto.
	* xstormy16-tdep.c (xstormy16_return_value): Ditto.
	* xtensa-tdep.c (xtensa_return_value): Ditto.

	* gdbtypes.h (struct type): Add calling_convention member.
	* dwarf2read.c (read_subroutine_type): Add calling convention read
	from DW_AT_calling_convention attribute to function type.

2008-04-22  Markus Deuling  <deuling@de.ibm.com>

	* eval.c (evaluate_subexp_standard): Use value_subscripted_rvalue for
	multi_f77_subscript to support values from registers.
	* valarith.c (value_subscripted_rvalue): Remove prototype and static.
	* value.h (value_subscripted_rvalue): Add prototype.

	* f-typeprint.c (f_type_print_base): Add support for TYPE_CODE_UNION.
	Fix output.
	* f-valprint.c (f_val_print): Likewise.

2008-04-21  Craig Silverstein  <csilvers@google.com>

	* dwarf2read.c (zlib_decompress_section): Define abfd in the
	!HAVE_ZLIB_H case.

2008-04-21  Pedro Alves  <pedro@codesourcery.com>

	* symfile.c (syms_from_objfile): Don't warn if lowest loadable
	section is not a code section.

2008-04-19  Craig Silverstein  <csilvers@google.com>

	* NEWS: Add information on compressed debug sections.

2008-04-19  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-cmd-var.c (varobj_update_one): Print new
	value for variable objects that changed type.

2008-04-19  Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c (varobj_invalidate): Don't touch floating
	varobjs.

2008-04-19  Mark Kettenis  <kettenis@gnu.org>

	* symtab.c: (multiple_symbols_modes, multiple_symbols_ask)
	(multiple_symbols_cancel): Remove extra const.
	* symtab.h: Likewise.

2008-04-19  Nick Roberts  <nickrob@snap.net.nz>

	* interps.c (top_level_interpreter): Rename static variable...
	(top_level_interpreter_ptr): ...to this.
 	(top_level_interpreter): New function.

	* interps.h: New extern for top_level_interpreter.

	* linespec.c: Include interps.h and mi/mi-cmds.h.
	(decode_line_2): When using MI, always set all breakpoints in menu.

	* Makefile.in (linespec.o, mi-interp.o): Add dependencies.

2008-04-18  Craig Silverstein  <csilvers@google.com>

	* configure.ac (AC_SEARCH_LIBS): Add check for zlib.
	* config.in, configure: Regenerate.
	* dwarf2read.c: Include zlib.h if present.
	Modified *_SECTION macros.
	(section_is_p): New.
	(dwarf2_locate_sections): Use section_is_p instead of strcmp
	(dwarf2_resize_section): New.
	to determine whether a given section has a given name.
	(zlib_decompress_section): New.
	(dwarf2_read_section): Read the compressed section if present
	in the binary.
	* MAINTAINERS: Added myself to section Write After Approval.

2008-04-18  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* defs.h (exec_set_section_offsets): Remove prototype.
	* exec.c (exec_set_section_offsets): Remove function.

2008-04-18  Joel Brobecker  <brobecker@adacore.com>

	* stabsread.c (cleanup_undefined_types_1): Add instance flags check
	in the search for the matching symbol.

2008-04-17  Marc Khouzam  <marc.khouzam@ericsson.com>

	* breakpoint.c (update_watchpoint): Always reparse
	condition.

2008-04-17  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.c (print_one_breakpoint_location): Make sure to print
	the breakpoint address only once.

2008-04-17  Dennis Roberts  <dennis.roberts@sunquestinfo.com>

	* rs6000-tdep.c (rs6000_gdbarch_init): Use the BFD architecture,
	rather than a hard-coded architecture, for xcoff executables.

2008-04-17  Doug Evans  <dje@google.com>

	* buildsym.c (watch_main_source_file_lossage): New fn.
	(end_symtab): Call it.

	* source.c (find_and_open_source): Add some comments clarifying
	handling of FULLNAME argument.	Make static.  Remove pointless
	xstrdup/xfree.

2008-04-17  Pedro Alves  <pedro@codesourcery.com>

	* inf-loop.c (inferior_event_handler): Also run the intermediate
	continuations in the INF_EXEC_COMPLETE case.

2008-04-16  Tom Tromey  <tromey@redhat.com>

	* cli/cli-decode.h (CMD_ASYNC_OK): New define.
	(set_cmd_async_ok, get_cmd_async_ok): Declare.
	* cli/cli-decode.c (set_cmd_async_ok): New function.
	(get_cmd_async_ok): New function.
	* cli/cli-cmds.c (init_cli_cmds): Mark "pwd", "help", "info", and
	"show" as async-ok.
	* top.c (execute_command): Use get_cmd_async_ok.
	* infcmd.c: Include cli/cli-decode.h.
	(_initialize_infcmd): Mark "interrupt" as async-ok.
	* Makefile.in (infcmd.o): Depend on cli_decode_h.

2008-04-16  Daniel Jacobowitz  <dan@codesourcery.com>

	PR gdb/2445
	* exec.c: Correct "arch-utils.h" include.

2008-04-15  Aleksandar Ristovski  <aristovski@qnx.com>

	PR gdb/2424
	* infrun.c (normal_stop) Move breakpoint_auto_delete further down
	to allow printing to 'see' real reason of stop. This fixes PR 2424.
	* breakpoint.c (bpdisp_texst): New function. The function takes over
	the role of bpstats static array in print_one_breakpoint_location.
	(print_it_typical): Print "Temporary breakpoint" instead
	of just "Breakpoint" when breakpoint is, well, temporary. For mi-like
	protocols, print disp field.
	(print_one_breakpoint_location): Removed bpdisps static definition.
	Call new bpstat_text function to get value for 'disp' field.
	(mention): Print "Temporary breakpoint" instead of just "Breakpoint".

2008-04-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* gnulib/Makefile.am, gnulib/m4/gnulib-cache.m4,
	gnulib/aux/link-warning.h, gnulib/extra/link-warning.h: Adjust
	by rerunning gnulib-tool with --aux-dir=gnulib/extra.
	* gnulib/Makefile.in: Regenerate.

2008-04-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (GNULIB_H): New.  Trigger all-lib.
	(defs_h): Use $(GNULIB_H).
	(all-lib): Depend on gnulib/Makefile.
	(gnulib/Makefile): Regenerate gnulib/Makefile and gnulib/.deps.
	* config.in, gnulib/Makefile.in: Regenerated.

2008-04-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (LIBGNU, INCGNU): Define.
	(INTERNAL_CFLAGS_BASE): Add INCGNU.
	(INTERNAL_LIBS, CLIBS, CDEPS): Add LIBGNU.
	(CLEANDIRS): New.
	($(LIBGNU), all-lib): New rules.
	(clean, distclean, do-maintainer-clean): Use CLEANDIRS.
	* configure.ac: Use gl_EARLY, gl_INIT, and AM_INIT_AUTOMAKE.
	Simplify AC_CONFIG_AUX_DIR.  Generate gnulib/Makefile.
	* gnulib: New directory, from gnulib-tool.
	* configure, aclocal.m4: Regenerated.

2008-04-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-thread-db.c (have_threads_callback): Check thread->private.

2008-04-13  Nick Roberts  <nickrob@snap.net.nz>
	    Vladimir Prus  <vladimir@codesourcery.com>

	Fix @-varobjs.
	* varobj.c (value_of_root): Update the expression for
	floating varobjs.
	* mi/mi-cmd-var.c (varobj_update_one): If type has changed,
	report that.

2008-04-09  Marc Khouzam  <marc.khouzam@ericsson.com>

	* mi/mi-cmd-var.c: Include "mi-getopt.h".
	(mi_parse_format): New.  Factored out from mi_cmd_var_set_format.
	(mi_cmd_var_set_format): Use new mi_parse_format.
	(mi_cmd_var_evaluate_expression): Support for -f option to specify
	format.
	* Makefile.in (mi-cmd-var.o): Update dependencies.

	* varobj.h (varobj_get_formatted_value): Declare.
	* varobj.c (my_value_of_variable): Added format parameter.
	(cplus_value_of_variable): Likewise.
	(java_value_of_variable): Likewise.
	(c_value_of_variable): Likewise.  Evaluate expression based
	on format parameter.
	(struct language_specific): Add format parameter to function member
	*value_of_variable.
	(varobj_get_formatted_value): New.
	(varobj_get_value): Added format parameter to method call.

2008-04-08  Joel Brobecker  <brobecker@adacore.com>

	* stabsread.c (cleanup_undefined_types_noname): Manually set the
	instance flags of the undefined type before calling replace_type.

2008-04-08  Vladimir Prus  <vladimir@codesourcery.com>

	* target.h (enum strata): Remove the download_stratum.

2008-04-07  Doug Evans  <dje@google.com>

	* buildsym.h (last_source_file): Add dwarf info to comment.
	(last_source_start_addr): Ditto.

2008-04-07  Pedro Alves  <pedro@codesourcery.com>

	* alphanbsd-tdep.c: Include "target.h".
	* mn10300-tdep.c: Include "target.h".
	* Makefile.in (alphanbsd-tdep.o, mn10300-tdep.o): Update.

2008-04-06  Vladimir Prus  <vladimir@codesourcery.com>

	Fix breakpoint condition that use member variables.
	* valops.c (check_field): Remove.
	(check_field_in): Rename to check_field.
	(value_of_this): Use la_name_of_this.
	* value.h (check_field): Adjust prototype.

	* language.h (la_value_of_this): Rename to la_name_of_this.
	* language.c (unknown_language_defn): Specify "this" for
	name_of_this.
	(auto_language_defn): Likewise.
	(local_language_defn): Likewise.
	* ada-lang.c (ada_language_defn): Adjust comment.
	* c-lang.c (c_language_defn): Adjust comment.
	(cplus_language_defn): Specify "this" for name_of_this.
	(asm_language_defn): Adjust comment.
	(minimal_language_defn): Adjust comment.
	* f-lang.c (f_language_defn): Specify NULL for name_of_this.
	* jv-lang.c (java_language_defn): Specify "this" for name_of_this.
	* m2-lang.c (m2_language_defn): Specify "this" for name_of_this.
	* objc-lang.c (objc_language_defn): Specify "self" for
	name_of_this.
	* p-lang.c (pascal_language_defn): Specify "this" for
	name_of_this.
	* scm-lang.c (scm_language_defn): Specify NULL for name_of_this.

	* symtab.c (lookup_symbol_aux): Lookup "this" in the
	proper scope, and check for field in type of "this", without
	trying to create a value.

2008-04-04  Pedro Alves  <pedro@codesourcery.com>

	* mi/mi-cmds.h (enum mi_cmd_result): Delete MI_CMD_ERROR.
	(mi_error_message): Delete declaration.
	* mi/mi-interp.c (mi_cmd_interpreter_exec): Call error instead of
	returning MI_CMD_ERROR.
	* mi/mi-main.c (mi_error_message): Delete.
	(mi_cmd_exec_interrupt):
	(mi_cmd_thread_select, mi_cmd_thread_list_ids)
	(mi_cmd_thread_info): Call error instead of returning
	MI_CMD_ERROR.
	(mi_cmd_data_list_register_values): Call error instead of
	returning MI_CMD_ERROR.  Adapt to new get_register interface.
	(get_register): Change return typo to void.  Call error instead of
	returning MI_CMD_ERROR.
	(mi_cmd_data_write_register_values): Call error instead of
	returning MI_CMD_ERROR.
	(mi_cmd_list_features): Return MI_CMD_DONE.
	(captured_mi_execute_command): Remove MI_CMD_ERROR handling.
	(mi_execute_command): Always print exceptions with -error.

2008-04-04  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Mention new commands set/show multiple-symbols.

2008-04-03  Joel Brobecker  <brobecker@adacore.com>

	* symtab.c (multiple_symbols_ask, multiple_symbols_all)
	(multiple_symbols_cancel): New constants.
	(multiple_symbols_modes, multiple_symbols_mode): New static globals.
	(multiple_symbols_select_mode): New function.
	(_initialize_symtab): Add new set/show multiple-symbols commands.
	* symtab.h (multiple_symbols_ask, multiple_symbols_all)
	(multiple_symbols_cancel, multiple_symbols_select_mode): Declare.
	* ada-lang.c (user_select_syms): Add handling of new multiple-symbols
	setting.
	* linespec.c (decode_line_2): Likewise.

2008-04-03  Doug Evans  <dje@sebabeach.org>

	* symtab.h (enum free_code): Delete free_contents, unused.
	* symmisc.c (free_symtab_block): Delete.
	(free_symtab, case free_code): Delete.

2008-04-01  Aleksandar Ristovski  <aristovski@qnx.com>

	* valops.c (value_cast_structs): New function. Cast related
	STRUCT types up/down and return cast value. The body of this
	function comes mostly from value_cast_pointers.
	(value_cast_pointers): Code for actual cast STRUCT-STRUCT moved
	to value_cast_structs. Now value_cast_pointers needs only create
	appropriate reference after using value_cast_structs for actual
	casting.
	(value_cast): Handle references.

2008-04-01  Marc Khouzam  <marc.khouzam@ericsson.com>

	* MAINTAINERS: Added myself to section Write After Approval.

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

	* ia64-tdep.c (examine_prologue): Correct array access.

2008-03-28  Aleksandar Ristovski  <aristovski@qnx.com>

	* cp-support.c (first_component_command): Return if no arguments.

2008-03-28  Carlos O'Donell  <carlos@codesourcery.com>

	* ser-mingw.c (ser_windows_open): Open requested name.

2008-03-28  Aleksandar Ristovski  <aristovski@qnx.com>

	* MAINTAINERS: Added myself.

2008-03-28  Pedro Alves  <pedro@codesourcery.com>

	* target.c (find_default_run_target): Allow a NULL `do_mesg'
	parameter.  If it is NULL, don't call error.
	(find_default_can_async_p, find_default_is_async_p): Pass NULL as
	`do_mesg' parameter to find_default_run_target.  If no target was
	found, return 0.

2008-03-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* mips-linux-tdep.c: Update N32/N64 signal frame comments.
	(N64_SIGCONTEXT_LO, N64_SIGCONTEXT_PC, N64_SIGCONTEXT_FPCSR): Update.
	(N64_SIGCONTEXT_FIR, N64_SIGCONTEXT_CAUSE, N64_SIGCONTEXT_BADVADDR):
	Delete.
	(mips_linux_n32n64_sigframe_init): Do not record cause or badvaddr.

2008-03-27  Joel Brobecker  <brobecker@adacore.com>

	GDB 6.8 released.

2008-03-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* features/Makefile (%.dat): Set xmltarget to the base filename
	of the XML source, without subdirectory.
	* regformats/rs6000/powerpc-32.dat: Regenerate.
	* regformats/rs6000/powerpc-64.dat: Regenerate.
	* regformats/rs6000/powerpc-e500.dat: Regenerate.

2008-03-27  Markus Deuling  <deuling@de.ibm.com>

	* xcoffread.c (scan_xcoff_symtab): Replace current_gdbarch by
	objfile arch.

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

	* mi/mi-main.c (enum captured_mi_execute_command_actions):
	Spell suppress in EXECUTE_COMMAND_SUPPRESS_PROMPT correctly.

2008-03-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* objfiles.h (struct objfile): New GDBARCH member.
	(get_objfile_arch): Add prototype.
	* objfiles.c: Include "arch-utils.h".
	(allocate_objfile): Look up gdbarch associated with bfd.
	(get_objfile_arch): New function.
	* Makefile (objfiles.o): Update dependencies.

	* dwarf2-frame.c (decode_frame_entry_1): Replace current_gdbarch
	by objfile arch.
	* dwarf2loc.c (dwarf_expr_read_reg): Replace current_gdbarch
	by frame arch.
	(locexpr_describe_location): Replace current_gdbarch by
	objfile arch.
	* dwarf2read.c (die_type): Replace current_gdbarch by objfile arch.
	(dwarf2_add_field): Likewise.
	(read_tag_pointer_type): Likewise.
	(read_base_type): Likewise.
	(new_symbol): Likewise.

	* coffread.c (decode_type): Add OBJFILE argument.  Update callers.
	(decode_base_type, decode_function_type): Likewise.
	(coff_read_struct_type, coff_read_enum_type): Likewise.
	(coff_symtab_read): Replace current_gdbarch by objfile arch.
	(decode_base_type): Likewise.
	(coff_read_enum_type): Likewise.
	(coff_read_struct_type): Replace current_objfile by OBJFILE argument.
	(coff_read_enum_type): Likewise.

	* dbxread.c (read_dbx_symtab): Replace current_gdbarch by objfile arch.
	(end_psymtab): Likewise.
	(process_one_symbol): Likewise.

	* mdebugread.c (parse_symbol): Replace current_gdbarch by objfile arch.
	(parse_procedure): Likewise.
	(parse_partial_symbols): Likewise.

	* somread.c (som_symtab_read): Replace current_gdbarch by objfile arch.

	* stabsread.c (define_symbol): Replace current_gdbarch by objfile arch.
	Replace static pcc_promotion_type and pcc_unsigned_promotion_type by
	built-in types.
	(read_range_type): Replace current_gdbarch by objfile arch.  Replace
	static range_index_type by built-in type.
	(read_one_struct_field): Replace current_gdbarch by objfile arch.
	(read_enum_type): Likewise.

	* xcoffread.c (read_xcoff_symtab): Replace current_gdbarch by
	objfile arch.

2008-03-26  Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.h (varobj_floating_p): Declare.
	* varobj.c (varobj_floating_p): New.
	* mi/mi-cmd-var.c (mi_cmd_var_update): When passed
	'@' as the name, update all floating varobjs.

2008-03-26  Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c (struct varobj_root): Rename use_selected_frame to
	floating, and clarify the meaning.
	(varobj_create, varobj_update,  new_root_variable): Adjust.
	(value_of_root): Don't use type_changed as in variable,
	adjust comment.
	(c_value_of_root): Adjust.

2008-03-25  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_nat_attach): Add the pid we attached to, to
	gdb's thread list.
	(linux_nat_wait): Add main lwp to gdb's thread list.
	* linux-thread-db.c (find_new_threads_callback): Also attach to
	already listed threads which thread_db didn't know about yet.

2008-03-25  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (drain_queued_events): Fix comment typo.
	(linux_nat_attach): In async mode, don't rely on storing a pending
	status.  Instead place the wait status on the pipe.
	(linux_nat_resume): Remove unreacheable shortcut code in async
	mode.
	(stop_wait_callback): In async mode, don't store pending status.
	Instead, cancel breakpoints or resend the signal appropriatelly.
	(cancel_breakpoint): New, refactored from
	cancel_breakpoints_callback.
	(cancel_breakpoints_callback): Call cancel_breakpoint.
	(pipe_to_local_event_queue): Remove special token processing.
	(linux_nat_wait): Issue an internal error if a pending status is
	found in async mode.

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

	* inflow.c (gdb_has_a_terminal): Guard access to our_process_group.

2008-03-24  Nick Roberts  <nickrob@snap.net.nz>
	    Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c  (struct varobj_root): New component thread_id.
	(varobj_get_thread_id, check_scope): New functions.
	(c_value_of_root): Use check_scope.  Switch to the
	proper thread if necessary.

	* varobj.h (varobj_get_thread_id): New extern.

	* mi/mi-cmd-var.c (print_varobj): Add thread-id field.

2008-03-23  Daniel Jacobowitz  <dan@codesourcery.com>

	PR gdb/544
	* top.c: Revert 2008-03-21 changes.

2008-03-23  Vladimir Prus  <vladimir@codesourcery.com>

	* thread.c (make_cleanup_restore_current_thread): Make it
	globally visible.
	* gdbthread.h (make_cleanup_restore_current_thread): Declare.
	* varobj.c (varobj_update): Don't save/restore frame.
	(c_value_of_root): Save/restore thread and frame here,
	using make_cleanup_restore_current_thread.
	* Makefile.in: Update dependecies.

2008-03-23  Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c (struct varobj_root): Clarify
	comment on the frame field.
	(varobj_create): Don't set frame if we have no
	block.

2008-03-21  Daniel Jacobowitz  <dan@codesourcery.com>

	PR gdb/544
	Suggested by Jan Kratochvil:
	* top.c (gdb_rl_operate_and_get_next_completion): Call
	rl_redisplay_function.
	(gdb_rl_redisplay): New.
	(init_main): Set rl_redisplay_function.

2008-03-21  Thomas Mittelstaedt  <T.Mittelstaedt@cadenas.de>  (tiny change)

	* aix-thread.c (pdc_read_regs): Fix compiler warning.
	(pdc_write_regs, aix_thread_resume, fetch_regs_kernel_thread)
	(store_regs_kernel_thread): Likewise.

2008-03-21  Pedro Alves  <pedro@codesourcery.com>

	Linux native async support.

	* target.h (struct target_ops): Delete to_async_mask_value and add
	to_async_mask.
	(target_is_async_p, target_async): Formatting.
	(target_async_mask_value): Delete.
	(target_async_mask): Delete function declaration, and add new
	target macro with the same name.

	* target.c (update_current_target): Replace to_async_mask_value by
	to_async_mask.  Default to_async_mask to return_one.
	(target_async_mask): Delete.
	(find_default_can_async_p, find_default_is_async_p): New.
	(init_dummy_target): register find_default_can_async_p and
	find_default_is_async_p on the dummy target.

	* linux-nat.c: Include inf-loop.h, event-loop.h and event-top.h.
	(debug_linux_nat_async): New global.
	(show_debug_linux_nat_async): New function.
	(linux_nat_async_enabled, linux_nat_async_mask_value)
	(linux_nat_event_pipe, linux_nat_num_queued_events)
	(linux_nat_async_events_enabled): New globals.
	(struct waitpid_result): New struct.
	(waitpid_queue): New global.
	(queued_waitpid, push_waitpid, drain_queued_events): New.
	(my_waitpid): Call queued_waitpid.
	(linux_child_follow_fork): Disable async events during the call.
	(blocked_mask): Delete.
	(sync_sigchld_action, async_sigchld_action): New globals.
	(lin_lwp_attach_lwp): In sync mode, don't reblock SIGCHLD.  In
	async mode, block events during the call.
	(linux_nat_create_inferior): New.
	(linux_nat_attach): In sync mode, restore the mask states.  In
	async mode, wake the event loop immediatelly.
	(detach_callback): Drain all queued events of the lwp we're
	detaching from.
	(linux_nat_detach): Block async mode, and drain events of the main
	process.
	(linux_nat_resume): If in async mode, mask async events during the
	call.  If short circuiting, force event loop to wake up.  If
	resuming, set target_executing, and register target events in the
	event loop.
	(pipe_to_local_event_queue, local_event_queue_to_pipe): New.
	(linux_nat_wait): In async mode, block events during the call.
	Only enable/disable passing SIGINT to the inferior in sync mode.
	Get events from local waitpid queue.  If no interesting events was
	found, return to events loop.  Reregister target events in the
	event loop on exit.  In sync mode, no need to reblock SIGCHLD.
	(linux_nat_kill): Disable events on entry.
	(linux_nat_mourn_inferior): In sync mode, don't restore the masks
	here.  Detach async mode from the event loop if there are no more
	forks available, otherwise leave it on.
	(sigchld_handler): Assure this is called only in sync mode.
	(linux_async_permitted, linux_async_permitted_1): New globals.
	(set_maintenance_linux_async_permitted)
	(show_maintenance_linux_async_permitted): New functions.
	(linux_nat_is_async_p, linux_nat_can_async_p)
	(linux_nat_async_mask): New.
	(linux_nat_event_pipe_pop, linux_nat_event_pipe_push): New.
	(get_pending_events, async_sigchld_handler): New.
	(linux_nat_async_events): New.
	(async_terminal_is_ours): New global.
	(linux_nat_terminal_inferior, linux_nat_terminal_ours): New.
	(async_client_callback, async_client_context): New.
	(linux_nat_async_file_handler, linux_nat_async)
	(linux_nat_disable_async, linux_nat_enable_async): New.
	(linux_nat_add_target): Register linux_nat_create_inferior,
	linux_nat_can_async_p, linux_nat_is_async_p, linux_nat_async,
	linux_nat_async_mask, linux_nat_terminal_inferior and
	linux_nat_terminal_ours.
	(_initialize_linux_nat): Remove local action variable, and update
	code that used it to use sync_sigchld_action.  Add new
	"lin-lwp-async" debug set/show command.  Put the "lin-lwp" debug
	set/show command in the maintenance class.  Add new "linux-async"
	maintenance set/show command.  Block SIGCHLD by default.  Setup
	async_sichld_action, and sync_sigchld_action.  Install the default
	async mode.
	(lin_thread_get_thread_signals): Use a local sigset_t for blocking
	the cancel signals.

	* linux-thread-db.c (re_check_for_thread_db): New.
	(clear_lwpid_callback): Handle TARGET_WAITKIND_IGNORE.
	(thread_db_can_async_p, thread_db_is_async_p, thread_db_async)
	(thread_db_async_mask): New.
	(init_thread_db_ops): Register thread_db_can_async_p,
	thread_db_is_async_p, thread_db_async and thread_db_async_mask.

	* remote.c (remote_async_mask_value): New.
	(remote_return_zero): New.
	(init_remote_ops): Register remote_return_zero as callbacks of
	to_can_async_p and to_is_async_p.
	(remote_can_async_p, remote_is_async_p, remote_async): Update to
	use remote_async_mask_value.
	(remote_async_mask): New.
	(init_remote_async_ops): Remove to_async_mask_value setting and
	register remote_async_mask as to_async_mask callback in
	remote_async_ops.

	* Makefile.in (linux-nat.o): Update.

2008-03-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdbthread.h (add_thread_with_info): New.
	* linux-thread-db.c: Add some documentation.
	(GET_LWP, GET_PID, GET_THREAD, is_lwp, is_thread, BUILD_LWP): Delete.
	(struct private_thread_info): Remove th_valid and ti_valid.
	Replace ti with tid.
	(thread_get_info_callback): Do not add TID to the new ptid.  Do
	not cache th or ti.
	(thread_db_map_id2thr, lwp_from_thread): Delete functions.
	(thread_from_lwp): Assert that the LWP is set.  Do not add TID to the
	new PTID.
	(attach_thread): Handle an already-existing thread.  Use
	add_thread_with_info.  Cache the th and tid.
	(detach_thread): Verify that private was set.  Remove verbose
	argument and printing.  Update caller.
	(thread_db_detach): Do not adjust inferior_ptid.
	(clear_lwpid_callback, thread_db_resume, thread_db_kill): Delete.
	(check_event, find_new_threads_callback): Do not add TID to the new PTID.
	(thread_db_wait): Do not use lwp_from_thread.
	(thread_db_pid_to_str): Use the cached TID.
	(thread_db_extra_thread_info): Check that private is set.
	(same_ptid_callback): Delete.
	(thread_db_get_thread_local_address): Do not use it or check
	is_thread.  Check that private is set.  Assume that the thread
	handle is already cached.
	(init_thread_db_ops): Remove to_resume and to_kill.
	* thread.c (add_thread_with_info): New.
	(add_thread): Use it.
	* linux-nat.c (find_thread_from_lwp): Delete.
	(exit_lwp): Do not use it.  Check print_thread_events.  Print before
	deleting the thread.
	(GET_PID, GET_LWP, BUILD_LWP, is_lwp): Move to...
	* linux-nat.h (GET_PID, GET_LWP, BUILD_LWP, is_lwp): ...here.
	* inf-ttrace.c (inf_ttrace_wait): Use print_thread_events and
	printf_unfiltered for thread exits.
	* procfs.c (procfs_wait): Likewise.

2008-03-21  Chris Demetriou  <cgd@google.com>

	* symtab.c (rbreak_command): Quote symbol name before passing
	it to break_command.

2008-03-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* eval.c (evaluate_subexp_for_address): Clarify error message.
	Use value_must_coerce_to_target.
	* infcall.c (value_arg_coerce): Call value_coerce_to_target.
	* valops.c (value_assign): Call value_coerce_to_target when
	assigning to anything but internalvars.  Leave GDB-side arrays
	as arrays when assigning to internalvars.
	(value_must_coerce_to_target, value_coerce_to_target): New.
	(value_coerce_array, value_addr): Call value_coerce_to_target.
	(value_array): Create the array in GDB's memory instead of
	the inferior's.
	* value.h (value_must_coerce_to_target, value_coerce_to_target):
	Declare.

2008-03-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* top.c (quit_confirm): Warn that we will kill the program.

2008-03-19  Pedro Alves  <pedro@codesourcery.com>

	* inflow.c (terminal_ours_1): Guard access to
	inferior_process_group with #ifdef PROCESS_GROUP_TYPE.

2008-03-18  Ulrich Weigand  <uweigand@de.ibm.com>
	    Jim Blandy  <jimb@codesourcery.com>
	    Daniel Jacobowitz  <drow@false.org>

	* dwarf2expr.h (struct dwarf_expr_context): Add ADDR_SIZE member.
	(dwarf2_read_address): Update prototype.

	* dwarf2expr.c (unsigned_address_type): Add ADDR_SIZE parameter.
	(signed_address_type): Likewise.
	(dwarf2_read_address): Replace BYTES_READ parameter with ADDR_SIZE.
	(execute_stack_op): Update calls to unsigned_address_type,
	signed_address_type and dwarf2_read_address.  Fix implementation
	of DW_OP_deref_size.

	* dwarf2loc.h (dwarf2_per_cu_objfile): Add prototype.
	(dwarf2_per_cu_addr_size): Likewise.
	(struct dwarf2_locexpr_baton): Replace OBJFILE with PER_CU.
	(struct dwarf2_loclist_baton): Likewise.

	* dwarf2loc.c (find_location_expression): Update calls to
	dwarf2_read_address.  Use dwarf2_per_cu_objfile and
	dwarf2_per_cu_addr_size to retrieve PER_CU parameters.
	(locexpr_describe_location): Likewise.
	(dwarf2_evaluate_loc_desc): Replace OBJFILE with PER_CU parameter.
	Set ctx->addr_size to dwarf2_per_cu_addr_size (per_cu).
	(dwarf2_loc_desc_needs_frame): Add PER_CU parameter.  Set ctx->addr_size
	to dwarf2_per_cu_addr_size (per_cu).
	(locexpr_read_variable): Update dwarf2_evaluate_loc_desc call.
	(loclist_read_variable): Likewise.
	(locexpr_read_needs_frame): Update dwarf2_loc_desc_needs_frame call.

	* dwarf2read.c (dwarf2_symbol_mark_computed): Set baton->per_cu
	instead of baton->objfile.
	(dwarf2_per_cu_obfile): New function.
	(dwarf2_per_cu_addr_size): Likewise.

	* dwarf2-frame.c (struct comp_unit): Move higher.
	(struct dwarf2_cie): Add UNIT and ADDR_SIZE members.
	(execute_stack_op): Add ADDR_SIZE parameter; set ctx->addr_size.
	(execute_cfa_program): Add FDE parameter.  Replace EH_FRAME_P
	parameter by using fde->eh_frame_p.  Use read_encoded_value
	to implement DW_CFA_set_loc.
	(struct dwarf2_frame_cache): Add ADDR_SIZE member.
	(dwarf2_frame_cache): Set cache->addr_size.  Update calls to
	execute_stack_op and execute_cfa_program.
	(dwarf2_frame_prev_register): Update calls to execute_stack_op.
	(size_of_encoded_value): Remove.
	(read_encoded_value): Add PTR_LEN and FUNC_BASE parameters.
	Remove call to size_of_encoded_value.  Implement DW_EH_PE_funcrel.
	(add_cie): Set cie->unit backlink.
	(decode_frame_entry_1): Set cie->addr_size.  Update calls to
	read_encoded_value.
	(dwarf2_build_frame_info): Allocate UNIT on objfile obstack.

2008-03-17  Markus Deuling  <deuling@de.ibm.com>

	* i386-tdep.c (i386_print_insn): Remove unnecessary call to
	gdbarch_bfd_arch_info.

2008-03-17  Joel Brobecker  <brobecker@adacore.com>

	* aix-thread.c (pdc_read_regs): Minor reformatting.

2008-03-17  Vladimir Prus  <vladimir@codesourcery.com>

	* thread.c (print_thread_info): Don't insist
	on having current thread if there are no
	threads at all.

2008-03-17  Pedro Alves  <pedro@codesourcery.com>

	* infcmd.c (attach_command_post_wait)
	(attach_command_continuation): New.
	(attach_command): Support background async execution, and async
	execution in synchronous mode.

2008-03-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* stack.c (print_stack_frame, print_frame): Use RETURN_MASK_ERROR.
	* symmisc.c (dump_symtab_1): Likewise.
	* wrapper.c (gdb_value_struct_elt): Likewise.

2008-03-17  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_nat_filter_event): Fix comment typo.

2008-03-17  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_nat_filter_event): New, refactored from
	linux_nat_wait.
	(linux_nat_wait): Call linux_nat_filter_event.

2008-03-17  Ulrich Weigand  <uweigand@de.ibm.com>

	* top.c (execute_command): Fix uninitialized variable error.

2008-03-16  Nick Hudson  <nick.hudson@dsl.pipex.com>

	* Makefile.in (amd64nbsd-nat.o): New dependency.
	* amd64nbsd-nat.c: Include "nbsd-nat.h".
	(_initialize_amd64nbsd_nat): Update target vector to use
	nbsd_pid_to_exec_file.
	* config/i386/nbsd64.mh (NATDEPFILES): Add nbsd-nat.o.

2008-03-15  Vladimir Prus  <vladimir@codesourcery.com>

	Remove ignoring leading exec events code.
	* fork-child.c (startup_inferior): Do not set
	inferior_ignoring_leading_exec_events.
	* inf-child.c (inf_child_reported_exec_events_per_exec_call): Remove.
	(inf_child_target): Do not set to_reported_exec_events_per_exec_call.
	* infrun.c (inferior_ignoring_leading_exec_events): Remove.
	(handle_inferior_event): Remove code for ignoring leading exec
	events.
	* target.c (update_current_target): Do not inherit, or default,
	to_reported_exec_events_per_exec_call.
	(debug_to_reported_exec_events_per_exec_call): Remove.
	(setup_target_debug): Do not set to_reported_exec_events_per_exec_call.
	* target.h (target_reported_exec_events_per_exec_call): Remove.
	(struct target): Remove the to_reported_exec_events_per_exec_call
	field.

2008-03-15  Vladimir Prus  <vladimir@codesourcery.com>

	Implement -thread-info.
	* gdbthread.h (print_thread_info): Declare.

	* thread.c (print_thread_info): New, extracted
	from info_threads_command and adjusted to
	work for CLI and MI.
	(info_threads_command): Use print_thread_info.
	* Makefile.in: Update dependencies.

	* mi/mi-cmds.c (mi_cmds): Specify a handler
	for -thread-info.
	* mi/mi-cmds.h (mi_cmd_thread_info): Declare.
	* mi/mi-main.c (mi_cmd_thread_info): New.
	(mi_cmd_list_features): Include 'thread-info'.

2008-03-14  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips32_scan_prologue): Use the ABI register size
	to decide whether to match instruction patterns using "sw" and "sd".

2008-03-14  Pedro Alves  <pedro@codesourcery.com>

	* infcmd.c (jump_command): Postpone disabling stdin until after
	the possible query.

2008-03-14  Pedro Alves  <pedro@codesourcery.com>

	* inflow.c (gdb_getpgrp): New.
	(gdb_has_a_terminal): Use get_getpgrp.
	(terminal_ours_1): If attach_flag is set, don't refetch
	inferior_process_group.

2008-03-14  Pedro Alves  <pedro@codesourcery.com>

	* features/library-list.dtd: Allow "section" elements as children
	of "library".  Add "section" element and describe its attributes.

	* solib-target.c (struct lm_info): Add section_bases member.
	(library_list_start_segment): Error out if seen a section element.
	(library_list_start_section): New.
	(library_list_end_library): New.
	(solib_target_free_library_list): Free section_bases.
	(section_attributes): New.
	(library_children): Make "segment" optional.  Add "section" child.
	(library_list_children): Register library_list_end_library.
	(solib_target_relocate_section_addresses): Handle section bases.

	* NEWS: Mention new qXfer:libraries:read section offsets support.

2008-03-14  Vladimir Prus  <vladimir@codesourcery.com>

	* defs.h (do_exec_error_cleanups, discard_exec_error_cleanups)
	(make_exec_error_cleanup): Remove declarations.
	* utils.c (exec_error_cleanup_chain): Remove.
	(do_exec_error_cleanups, discard_exec_error_cleanups)
	(make_exec_error_cleanup): Remove.
	* event-loop.c (start_event_loop): Adjust call to
	async_enable_stdin.
	* event-top.c (async_enable_stdin): Remove the paramater dummy.
	(async_disable_stdin): Don't register async_enable_stdin via
	cleanup.
	* inf-loop.c (inferior_event_handler): Don't
	call do_exec_error_cleanups.  Call async_enable_stdin instead.
	* event-loop.c (start_event_loop): Adjust call to
	async_enable_stdin.
	* tui/tui-interp.c (tui_command_loop): Adjust call to
	async_enable_stdin.

2008-03-14  Vladimir Prus  <vladimir@codesourcery.com>

	Async mode fixes.
	* Makefile.in (infcmd.o, inf-loop.o): Update dependencies.
	* breakpoint.c (bpstat_do_actions): In async mode,
	don't jump to top expecting stop_bpstat to be already
	updated.
	* event-loop.c (start_event_loop): Call async_enable_stdin
	on exception.
	* event-top.c (async_enable_stdin): Do nothing if sync_execution
	is not set.
	(command_handler): Do not setup continuation here.
	(command_line_handler_continuation): Move to...
	* top.c (command_line_handler_continuation): ... here.
	(execute_command): In async mode, register continuation.
	Don't check frame's language in running in async mode.
	* exceptions.c (throw_exception): Don't do exec_error_cleanups.
	* inf-loop.c (complete_execution): Inline into...
	(inferior_event_handler): ... here.  Clear target_executing before
	doing any cleanups.  Don't try to show prompt if the target was
	resumed.
	* infcmd.c (signal_command): Add support for async mode.
	(finish_command): Only add continuation if the target was
	successfully resumed.
	* remote.c (init_async_opts): Register to_get_thread_local_address
	handler.
	* mi/mi-interp.c (mi_cmd_interpreter_exec): Don't mess
	with sync_execution.
	* tui/tui-interp.c (tui_command_loop): Call async_enable_stdin
	on exception.

2008-03-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* corefile.c (reopen_exec_file): Use exec_bfd_mtime.
	* exec.c (exec_bfd_mtime): Define.
	(exec_close): Clear it.
	(exec_file_attach): Set it.
	* gdbcore.h (exec_bfd_mtime): Declare.
	* source.c (find_source_lines): Do not use bfd_get_mtime.

2008-03-14  Vladimir Prus  <vladimir@codesourcery.com>

	* top.c (simplified_command_loop): Remove.

2008-03-14  Vladimir Prus  <vladimir@codesourcery.com>

	Remove unused remote.c hooks.
	* remote.c (deprecated_target_resume_hook)
	(deprecated_target_wait_loop_hook): Remove.
	(remote_resume): Do not call deprecated_target_resume_hook.
	(remote_wait): Do not call deprecated_target_wait_loop_hook.
	(remote_async_wait): Likewise.

2008-03-14  Vladimir Prus  <vladimir@codesourcery.com>

	Implement MI notification for new threads.
	* doc/observer.texi (new_thread): Document.
	* observer.sh: Forward declare struct thread_info.
	* thread.c (add_thread): Notify observer.

	* interps.h (interp_init_ftype): New parameter
	top_level.
	(interp_set): Likewise.
	(top_level_interpreter_data): Declare.
	* interps.c (interp_set): New parameter top_level.
	Pass it to interpreter's init function.  Remember
	top level interpreter.
	(interpreter_exec_cmd): Adjust.
	(top_level_interpreter_data): New.
	* main.c (captured_main): Pass 1 for top_level
	parameter of interp_set.
	* cli/cli-interp.c (cli_interpreter_init): New
	parameter top_level.
	* tui/tui-interp.c (tui_init): New parameter top_level.

	* mi/mi-interp.c (mi_new_thread): New.
	(mi_interpreter_init): If top level, register
	observer for new threads.

	* Makefile.in (mi-interp.o, thread.o): Update dependencies.

2008-03-14  Pedro Alves  <pedro@codesourcery.com>

	* top.c (execute_command): Disable break and stop
	commands in async mode.

2008-03-14  Pedro Alves  <pedro@codesourcery.com>

	revert:
	2008-03-14  Pedro Alves  <pedro@codesourcery.com>
	* inf-loop.c (inferior_event_handler): Don't include remote.h.
	Call target_stop in the INF_QUIT_REQ case.
	* Makefile.in (inf-loop.o): Update.

2008-03-14  Pedro Alves  <pedro@codesourcery.com>

	* inf-loop.c (inferior_event_handler): Don't include remote.h.
	Call target_stop in the INF_QUIT_REQ case.
	* Makefile.in (inf-loop.o): Update.

2008-03-14  Pedro Alves  <pedro@codesourcery.com>

	* top.c (execute_command): Enable break, info and interrupt
	commands in async mode.

2008-03-13  Vladimir Prus  <vladimir@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* breakpoint.h (breakpoint_restore_shadows): New
	declaration.
	* breakpoint.c (breakpoint_restore_shadows): New.
	(read_memory_nobpt): Delete.
	* gdbcore.h (read_memory_nobpt): Delete declaration.
	* target.c (memory_xfer_partial): Call
	breakpoint_restore_shadows.
	(restore_show_memory_breakpoints)
	(make_show_memory_beakpoints_cleanup): New.
	(show_memory_breakpoints): New.
	* target.h (make_show_memory_beakpoints_cleanup): Declare.
	* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint):
	Make sure we see memory breakpoints when checking if
	breakpoint is still there.
	* alpha-tdep.c, alphanbsd-tdep.c, frame.c, frv-tdep.c,
	hppa-linux-tdep.c, hppa-tdep.c, i386-linux-nat.c, i386-tdep.c,
	m68klinux-tdep.c, mips-tdep.c, mn10300-tdep.c, s390-tdep.c,
	sparc-tdep.c: Use target_read_memory instead of read_memory_nobpt.

2008-03-12  Pedro Alves  <pedro@codesourcery.com>

	* thread.c (add_thread): Use printf_unfiltered to print.

2008-03-12  Joel Brobecker  <brobecker@gnat.com>

	* sol-thread.c: Replace use of TM_I386SOL2_H by an expression
	that is true only on x86-solaris and x86_64-solaris.
	* procfs.c: Likewise. Move procfs_find_LDT_entry up together
	with proc_get_LDT_entry.

2008-03-12  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* configure.ac (AC_CHECK_FUNCS): Add check for setsid.
	* config.in, configure: Regenerate.
	* fork-child.c (fork_inferior): Call create_tty_session.
	* inflow.c (new_tty): Set controlling terminal with TIOCSCTTY.
	(create_tty_session): New function.
	* terminal.h: Declare create_tty_session.

2008-03-12  Alan Modra  <amodra@bigpond.net.au>

	PR 5900
	* elfread.c (elf_symtab_read): Make shndx an unsigned int.
	* mipsread.c: Include elf/internal.h.
	(read_alphacoff_dynamic_symtab): Map external reserved sym_shndx
	to internal range.

2008-03-11  Markus Deuling  <deuling@de.ibm.com>

	* win32-nat.c (do_win32_fetch_inferior_registers): Use get_regcache_arch
	to get at the current architecture and at the target specific vector.
	Add target specific vector to I387_FISEG_REGNUM and I387_FOP_REGNUM and
	remove define of I387_ST0_REGNUM.

	* amd64-tdep.c (I387_ST0_REGNUM): Remove define.

	(amd64_supply_fxsave, amd64_collect_fxsave): Use get_regcache_arch to
	get at the current architecture
	(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): Add target specific vector as
	parameter.

	* i386-tdep.c: Remove various define's and undef's of I387_ST0_REGNUM,
	I387_NUM_XMM_REGS and I387_MM0_REGNUM.

	(I387_NUM_XMM_REGS, I387_XMM0_REGNUM, I387_MXCSR_REGNUM,
	I387_ST0_REGNUM, I387_FCTRL_REGNUM, I387_MM0_REGNUM,
	(I387_FSTAT_REGNUM): Add target specific vector as parameter.

	(i386_register_name, i386_dbx_reg_to_regnum): Use gdbarch_tdep to get
	at the target specific vector.

	(i386_get_longjmp_target): Use get_frame_arch to get at the current
	architecture. Use gdbarch_tdep to get at the target specific vector.

	(i386_fp_regnum_p, i386_fpc_regnum_p): Add gdbarch as parameter and
	update caller. Use gdbarch_tdep to get at the target specific vector.

	(i386_register_to_value: Use get_frame_arch to get at the current
	architecture.

	* i386-tdep.h (i386_fp_regnum_p, i386_fpc_regnum_p): Add gdbarch as
	parameter.

	* i387-tdep.c (I387_FCTRL_REGNUM, I387_FSTAT_REGNUM, I387_FTAG_REGNUM,
	I387_FISEG_REGNUM, I387_FIOFF_REGNUM, I387_FOSEG_REGNUM
	I387_FOOFF_REGNUM, I387_FOP_REGNUM, I387_ST0_REGNUM, FSAVE_ADDR,
	FXSAVE_ADDR, I387_XMM0_REGNUM): Add target specific vector as parameter.

	(I387_ST0_REGNUM, I387_NUM_XMM_REGS): Remove various define's and
	undef's.

	(i387_convert_register_p, i387_register_to_value,
	i387_value_to_register): Update call for i386_fp_regnum_p.

	* i387-tdep.h: Remove comment.
	(I387_ST0_REGNUM, I387_NUM_XMM_REGS, I387_MM0_REGNUM): Add define.
	(I387_FCTRL_REGNUM, I387_FSTAT_REGNUM, I387_FTAG_REGNUM,
	I387_FISEG_REGNUM, I387_FIOFF_REGNUM, I387_FOSEG_REGNUM,
	I387_FOOFF_REGNUM, I387_FOP_REGNUM, I387_XMM0_REGNUM,
	I387_MXCSR_REGNUM): Add target specific vector as parameter.

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

	* Makefile.in (fork-child.o): Update.
	* NEWS: Document "set exec-wrapper" and the gdbserver --wrapper
	argument.  Gather all gdbserver features together.
	* fork-child.c (exec_wrapper): New variable.
	(fork_inferior): Use it.
	(startup_inferior): Skip an extra trap if using "set exec-wrapper".
	(unset_exec_wrapper_command, _initialize_fork_child): New.

2008-03-10  Hidetaka Takano  <hidetaka.takano@glb.toshiba.co.jp>

	* source.c (directory_command): Modify the determination of
	condition of terminal "from_tty".

2008-03-10  Matt Rice  <ratmice@gmail.com>

	* dwarf2read.c (set_cu_language): Add DW_LANG_ObjC.

2008-03-10  Hidetaka Takano  <hidetaka.takano@glb.toshiba.co.jp>

	* spu-tdep.c (info_spu_event_command): Insert a '\0' to the end
	of the data passing to strtoulst function.
	(info_spu_signal_command): Likewise.

2008-03-08  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-interp.c (mi_command_loop): Remove
	commented-out code.

2008-03-07  Joel Brobecker  <brobecker@adacore.com>

	* remote.c (extended_remote_attach_1): Make local variable pid an int
	instead of a pid_t.

2008-03-07  Joel Brobecker  <brobecker@adacore.com>

	* solib-svr4.c (svr4_same_1): New function, originally extracted
	from svr4_same and expanded to handle the sparc64 case.
	(svr4_same): Move up and reimplement using svr4_same_1.
	(enable_break): Use svr4_same_1 to do shared library name comparisons.

2008-03-07  Ramana Radhakrishnan  <ramana.r@gmail.com>

	* MAINTAINERS: Move self to Paper trail.

2008-03-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (mingw-hdep.o, posix-hdep.o, remote-fileio.o): Update.
	* event-loop.c (call_async_signal_handler): New.
	* event-loop.h (call_async_signal_handler)
	(gdb_call_async_signal_handler): Declare.
	(mark_async_signal_handler): Add comments.
	* event-top.c (handle_sigint): Use gdb_call_async_signal_handler.
	* mingw-hdep.c (sigint_event, sigint_handler): New.
	(gdb_select): Use them.  Wait for the readline signal handler
	to finish.
	(gdb_call_async_signal_handler, _initialize_mingw_hdep): New functions.
	* posix-hdep.c (gdb_call_async_signal_handler): New function.
	* remote-fileio.c (sigint_fileio_token, async_remote_fileio_interrupt):
	New.
	(remote_fileio_ctrl_c_signal_handler): Use
	gdb_call_async_signal_handler.
	(initialize_remote_fileio): Initialize sigint_fileio_token.
	* remote.c (initialize_sigint_signal_handler, handle_remote_sigint): Do
	not initialize tokens here.
	(handle_remote_sigint_twice): Likewise.  Reinstall
	handle_remote_sigint.
	(async_remote_interrupt_twice): Just call interrupt_query.
	(cleanup_sigint_signal_handler): Do not delete tokens.
	(remote_interrupt, remote_interrupt_twice): Use
	gdb_call_async_signal_handler.
	(interrupt_query): Reinstall the default signal handler.
	(_initialize_remote): Initialize tokens here.

2008-03-04  Joel Brobecker  <brobecker@adacore.com>

	* features/rs6000/power-core.xml, features/rs6000/power64-core.xml,
	features/rs6000/powerpc-601.xml, features/rs6000/rs6000.xml:
	Change the type of the lr register to code_ptr.
	* features/rs6000/powerpc-32.c, features/rs6000/powerpc-403.c,
	features/rs6000/powerpc-403gc.c, features/rs6000/powerpc-505.c,
	features/rs6000/powerpc-601.c, features/rs6000/powerpc-602.c,
	features/rs6000/powerpc-603.c, features/rs6000/powerpc-604.c,
	features/rs6000/powerpc-64.c, features/rs6000/powerpc-7400.c,
	features/rs6000/powerpc-750.c, features/rs6000/powerpc-860.c,
	features/rs6000/powerpc-e500.c, features/rs6000/rs6000.c: Regenerate.

2008-03-03  James E. Wilson  <wilson@tuliptree.org>

	* MAINTAINERS: Update my email address.

2008-03-03  Keith Seitz  <keiths@redhat.com>

	From Dave Murphy  <davem@devkitpro.org>:
	* configure.ac: Set tcl configdir to win under mingw.
	* configure: Regenerate.

2008-03-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* breakpoint.c (fetch_watchpoint_value): New function.
	(update_watchpoint): Set and clear val_valid.  Use
	fetch_watchpoint_value.  Handle unreadable values on the
	value chain.  Correct check for user-requested array watchpoints.
	(breakpoint_init_inferior): Clear val_valid.
	(watchpoint_value_print): New function.
	(print_it_typical): Use it.  Do not free or clear old_val.  Print
	watchpoints even if old_val == NULL.
	(watchpoint_check): Use fetch_watchpoint_value.  Check for values
	becoming readable or unreadable.
	(watch_command_1): Use fetch_watchpoint_value.  Set val_valid.
	(do_enable_watchpoint): Likewise.
	* breakpoint.h (struct breakpoint): Update comment for val.  Add
	val_valid.
	* NEWS: Mention watchpoints on inaccessible memory.

2007-02-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (i386-nat.o): Update.
	* amd64-linux-nat.c (_initialize_amd64_linux_nat): Call
	i386_use_watchpoints.
	* i386-linux-nat.c (_initialize_i386_linux_nat): Call
	i386_use_watchpoints.
	* i386-nat.c (i386_stopped_data_address): Take two arguments.
	(i386_stopped_by_watchpoint): Update call.
	(i386_can_use_hw_breakpoint, i386_use_watchpoints): New.
	* config/i386/nm-i386.h: Conditionalize definitions on
	! I386_WATCHPOINTS_IN_TARGET_VECTOR.
	(i386_use_watchpoints): Declare.
	(i386_stopped_data_address): Update.
	* config/i386/nm-linux.h (I386_WATCHPOINTS_IN_TARGET_VECTOR): Define.
	* config/i386/nm-linux64.h (I386_WATCHPOINTS_IN_TARGET_VECTOR): Define.

2008-02-29  Joel Brobecker  <brobecker@adacore.com>

	GDB 6.8 branch created (branch timestamp: 2008-02-26 10:00 UTC)
	* version.in: Bump version to 6.8.50.20080229-cvs.

2008-02-28  Markus Deuling  <deuling@de.ibm.com>

	* f-typeprint.c (f_print_type): Handle NULL pointer in VARSTRING
	properly.

2008-02-28  Tom Tromey  <tromey@redhat.com>

	* infcmd.c (notice_args_read): Print result of get_inferior_args.

2008-02-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* infcmd.c (kill_if_already_running): Make static.  Use
	target_require_runnable.
	* target.c (target_require_runnable): New.
	* target.h (target_require_runnable): Declare.

2008-02-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* frame.c (reinit_frame_cache): Only annotate if frames were
	previously valid.

2008-02-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* regformats/reg-ppc.dat: Rename "ps" to "msr".
	* regformats/reg-ppc64.dat: Likewise.

2008-02-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* features/Makefile (%.dat): Emit xmltarget statement.

	* regformats/regdat.sh: Support xmltarget and xmlarch statments.
	Generate code to set gdbserver_xmltarget in init_registers_${name}.

	* regformats/arm-with-iwmmxt.dat: Regenerate.
	* regformats/mips64-linux.dat: Regenerate.
	* regformats/mips-linux.dat: Regenerate.
	* regformats/rs6000/powerpc-32.dat: Regenerate.
	* regformats/rs6000/powerpc-64.dat: Regenerate.
	* regformats/rs6000/powerpc-e500.dat: Regenerate.

	* regformats/reg-arm.dat: Add xmlarch statement.
	* regformats/reg-i386.dat: Likewise.
	* regformats/reg-i386-linux.dat: Likewise.
	* regformats/reg-x86-64-linux.dat: Likewise.
	* regformats/reg-spu.dat: Likewise.

2008-02-27  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_wait, remote_async_wait): Stop if we receive
	an error.

2008-02-27  Daniel Jacobowitz  <dan@codesourcery.com>

	* utils.c (debug_timestamp): New.
	(vfprintf_unfiltered): Print timestamps if requested.
	(show_debug_timestamp): New.
	(initialize_utils): Register "set debug timestamp".
	* NEWS: Mention "set debug timestamp".  Add GDB 6.8 section.

2008-02-27  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.c (skip_prologue_sal): New function.
	(resolve_sal_pc): Adjust SAL past prologue if the SAL was
	computed from a line number.

2008-02-27  Joel Brobecker  <brobecker@adacore.com>

	* features/rs6000/power-core.xml, features/rs6000/power64-core.xml
	features/rs6000/powerpc-601.xml, features/rs6000/rs6000.xml:
	Set PC register type to "code_ptr".
	* features/rs6000/powerpc-32.c, features/rs6000/powerpc-403.c,
	features/rs6000/powerpc-403gc.c, features/rs6000/powerpc-505.c,
	features/rs6000/powerpc-601.c, features/rs6000/powerpc-602.c,
	features/rs6000/powerpc-603.c, features/rs6000/powerpc-604.c,
	features/rs6000/powerpc-64.c, features/rs6000/powerpc-7400.c,
	features/rs6000/powerpc-750.c, features/rs6000/powerpc-860.c,
	features/rs6000/powerpc-e500.c, features/rs6000/rs6000.c:
	Regenerate.

2008-02-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* regformats/regdat.sh: Rename init_registers function in
	generated file to init_registers_${name}.

	* regformats/reg-crisv32.dat: Set "name" to crisv32.
	* regformats/reg-ppc64.dat: Set "name" to ppc64.
	* regformats/reg-s390x.dat: Set "name" to s390x.

2008-02-26  Greg Law  <glaw@undo-software.com>

	* regcache.c (registers_changed): Call reinit_frame_cache.

2008-02-26  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure.tgt (sh-*-linux*): Match sh*.  Add glibc-tdep.o.
	* sh-linux-tdep.c (sh_linux_init_abi): Use glibc_skip_solib_resolver
	and svr4_fetch_objfile_link_map.
	* Makefile.in (sh-linux-tdep.o): Update.

2008-02-26  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* amd64-tdep.c (amd64_classify): Add support for decimal float
	types.
	* i386-tdep.c (i386_return_value): Make 128-bit decimal float
	use the struct return convention.

2008-02-26  Nick Roberts  <nickrob@snap.net.nz>

	* breakpoint.c (print_one_breakpoint_location): Revert Enb field
	to old format.  Discard breakpoint address if shared library is
	unloaded.
	(breakpoint_1): Adjust formatting of table header accordingly.

2008-02-25  Vladimir Prus  <vladimir@codesourcery.com>

       * remote.c (remote_get_threadlist): If the response
       is empty, don't try to parse it.

2008-02-23  Vladimir Prus  <vladimir@codesourcery.com>

	Unbreak 'target async'.
	* serial.c (serial_async): Set the
	handler function before enabling async
	mode.

2008-02-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* solib-svr4.c (enable_break): Convert r_brk to a code address.

2008-02-21  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (extended_remote_attach_1): Set attach_flag.
	(extended_remote_create_inferior_1): Clear attach_flag.

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

	* mipsnbsd-tdep.c (mipsnbsd_ilp32_fetch_link_map_offsets): Set
	r_brk_offset.
	(mipsnbsd_lp64_fetch_link_map_offsets): Likewise.
	* solib-svr4.c (solib_svr4_r_brk): New.
	(open_symbol_file_object, svr4_current_sos): Always check the
	debug base.
	(svr4_fetch_objfile_link_map): Do not set debug_base.
	(enable_break): Use r_brk if it is set.
	(svr4_ilp32_fetch_link_map_offsets): Set r_brk_offset.
	(svr4_lp64_fetch_link_map_offsets): Likewise.
	* solib-svr4.h (struct link_map_offsets): Add r_brk_offset.

2008-02-20  Markus Deuling  <deuling@de.ibm.com>
	    Mark Kettenis  <kettenis@gnu.org>

	* alpha-tdep.c (alpha_heuristic_unwind_cache): Replace saved_regs by
	trad_frame_saved_reg.
	(trad-frame.h): New include.

	(alpha_heuristic_frame_unwind_cache): Use trad_frame_alloc_saved_regs
	instead of frame_obstack_zalloc.
	(alpha_heuristic_frame_prev_register): Use trad_frame_get_prev_register.

	* Makefile.in (alpha-tdep.o): Add dependency to trad_frame_h.

2008-02-20  Markus Deuling  <deuling@de.ibm.com>

	* rs6000-tdep.c (gdb_print_insn_powerpc): Get the current endianess
	from disassemble_info instead of gdbarch_byte_order.

	* mips-tdep.c (gdb_print_insn_mips): Likewise.
	* arm-tdep.c (gdb_print_insn_arm): Likewise.

2008-02-20  Markus Deuling  <deuling@de.ibm.com>

	* gdbarch.sh (memory_insert_breakpoint, memory_remove_breakpoint): Add
	gdbarch as parameter.

	* gdbarch.{c,h}: Regenerate.

	* ppc-tdep.h (ppc_linux_memory_remove_breakpoint): Add gdbarch as
	parameter.
	* mem-break.c (default_memory_insert_breakpoint)
	(default_memory_remove_breakpoint): Likewise.
	* target.h (default_memory_remove_breakpoint)
	(default_memory_insert_breakpoint): Likewise.

	* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint): Add gdbarch as
	parameter. Replace current_gdbarch by gdbarch.
	* m32r-tdep.c (m32r_memory_insert_breakpoint)
	(m32r_memory_remove_breakpoint): Likewise.

2008-02-19  Daniel Jacobowitz  <dan@codesourcery.com>

	* MAINTAINERS: Add Vladimir Prus as MI maintainer.

2008-02-19  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Add entry describing Add support improvements.

2008-02-18  Markus Deuling  <deuling@de.ibm.com>

	* m68klinux-nat.c (getfpregs_supplies): Replace gdbarch_fp0_regnum by
	M68K_FP0_REGNUM.

2008-02-18  Markus Deuling  <deuling@de.ibm.com>

	* sentinel-frame.c (sentinel_frame_prev_register): Do not call
	register_offset_hack anymore.

	* regcache.{c,h} (register_offset_hack): Remove.

2008-02-18  Markus Deuling  <deuling@de.ibm.com>

	* hppa-tdep.h (find_global_pointer): Add gdbarch as parameter.

	* hppa-hpux-tdep.c (hppa32_hpux_find_global_pointer): Likewise. Replace
	current_gdbarch by gdbarch.
	(hppa64_hpux_find_global_pointer): Likewise.
	* hppa-tdep.c (hppa_find_global_pointer): Likewise.
	(hppa32_push_dummy_call, hppa64_push_dummy_call): Update call for
	find_global_pointer.

	* hppabsd-tdep.c (hppabsd_find_global_pointer): Add gdbarch as
	parameter.
	* hppa-linux-tdep.c (hppa_linux_find_global_pointer): Likewise.

	* hppa-linux-nat.c (hppa_linux_register_addr): Use ARRAY_SIZE instead
	of gdbarch_num_regs.

	* hppa-hpux-tdep.c (hppa_hpux_sr_for_addr): Add gdbarch as parameter and
	replace current_gdbarch by gdbarch.
	(hppa_hpux_push_dummy_code): Update call for hppa_hpux_sr_for_addr.

2008-02-18  Markus Deuling  <deuling@de.ibm.com>

	* rs6000-nat.c (exec_one_dummy_insn, regmap): Add gdbarch as parameter
	and replace current_gdbarch by gdbarch.

	(store_register): Update call for exec_one_dummy_insn.
	(fetch_register, store_register): Update call of regmap.

	* ppcnbsd-nat.c (getregs_supplies, getfpregs_supplies): Add gdbarch as
	parameter and replace current_gdbarch by gdbarch.

	(ppcnbsd_store_inferior_registers): Use get_regcache_arch to get at
	the current architecture. Update call for getregs_supplies and
	getfpregs_supplies.
	(ppcnbsd_fetch_inferior_registers): Likewise.

	* ppcobsd-nat.c (getfpregs_supplies): Add gdbarch as parameter and
	replace current_gdbarch by gdbarch.
	(ppcobsd_fetch_registers, ppcobsd_store_registers): Use
	get_regcache_arch to get at the current architecture. Update call for
	getfpregs_supplies.

2008-02-18  Markus Deuling  <deuling@de.ibm.com>

	* arch-utils.c (gdbarch_from_bfd): Remove unnecessary {old,new}_gdbarch
	variables.

2008-02-15  Markus Deuling  <deuling@de.ibm.com>

	* mips-linux-tdep.c (mips_linux_init_abi): Remove internal error.

2008-02-14  Vladimir Prus  <vladimir@codesourcery.com>

	* NEWS: Mention pending breakpints in MI.

2008-02-14  Markus Deuling  <deuling@de.ibm.com>

	* Makefile.in (ALL_TARGET_OBS): Remove dependency to xtensa-linux-nat.o.

2008-02-13  Markus Deuling  <deuling@de.ibm.com>

	Add script to build and test GDB using enable-targets=all.

	* gdb_buildall.sh: New file.

2008-02-11  Maxim Grigoriev  <maxim2405@gmail.com>

	* NEWS (New native configurations): Xtensa GNU/Linux.
	(New targets): Xtensa GNU/Linux.
	* Makefile.in (ALL_TARGET_OBS): Add xtensa-linux-nat.o and
	xtensa-linux-tdep.o
	(ALLDEPFILES): Add xtensa-linux-tdep.c and xtensa-linux-nat.c
	(xtensa-linux-nat.o, xtensa-linux-tdep.o): New dependencies.
	* configure.tgt (xtensa*-*-linux*): New entry.
	* xtensa-config.c (xtensa_tdep): New variable.
	(xtensa_config_byte_order, xtensa_config_tdep): Removed.
	(rmap): Change format based on new macro XTREG.
	(XTENSA_CONFIG_INSTANTIATE): Use new macro defined in xtensa-tdep.h.
	* xtensa-linux-nat.c: New.
	* xtensa-linux-tdep.c: New.
	* xtensa-xtregs.c: New.
	* xtensa-tdep.h (xtensa_elf_gregset_t): Update.
	(XTENSA_ELF_NGREG, XTREG, XTREG_END, XTENSA_GDBARCH_TDEP_INSTANTIATE)
	(XCHAL_NUM_CONTEXTS, XCHAL_HAVE_EXCEPTIONS): New macros.
	(xtensa_register_t): New field coprocessor.
	(XTENSA_REGISTER_FLAGS_PRIVILEGED): Name spelling corrected.
	* xtensa-tdep.c (xtensa_config_tdep, xtensa_config_byte_order): Removed.
	(xtensa_pseudo_register_read, xtensa_pseudo_register_write):
	Update to handle privileged registers.
	(xtensa_supply_gregset) Remove exccause and excvaddr registers.
	(xtensa_push_dummy_call): Set windowstart register correctly.
	(call0_analyze_prologue): Initialize xtensa_default_isa.
	(xtensa_derive_tdep): New.
	(xtensa_gdbarch_init): Get rid of xtensa_config_byte_order and
	xtensa_config_tdep, use XCHAL_HAVE_BE and xtensa_tdep instead.
	Call xtensa_derive_tdep().
	* config/xtensa/linux.mh: New.
	* regformats/reg-xtensa.dat: New.

2008-02-09  Aleksandar Ristovski  <aristovski@qnx.com>  (tiny change)

	* corelow.c (core_open): Use IS_ABSOLUTE_PATH.
	(filenames.h): New include.
	* Makefile.in (corelow.o): Add dependency for filenames.h.

2008-02-08  Doug Evans  <dje@google.com>

	* source.c (find_and_open_source): Always rewrite absolute filenames.

2008-02-07  Doug Evans  <dje@google.com>

	* breakpoint.c: #include "hashtab.h".
	(ambiguous_names_p): New fn.
	(update_breakpoint_locations): When restoring bp enable status, don't
	compare function names if any functions have same name.
	* Makefile.in (breakpoint.o): Add hashtab.h dependency.

2008-02-07  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (symbol_completion_add): Make SV parameter a VEC**
	instead of just a VEC*. Update use of SV.
	(ada_make_symbol_completion_list): Update symbol_completion_add calls.

2007-02-07  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Put all new commands since gdb-6.7 together.

2007-02-07  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c: #include "vec.h".
	(struct string_vector, new_string_vector, string_vector_append):
	Delete.
	(char_ptr): New typedef.
	(DEF_VEC_P (char_ptr)): New VEC type.
	(symbol_completion_add): Update profile to take the new VEC type
	instead of the old string_vector structure. Update code accordingly.
	(ada_make_symbol_completion_list): Use the new VEC type instead of
	the old string_vector structure, and update the code accordingly.
	* Makefile.in (ada-lang.o): Add dependency on vec.h.

2008-02-06  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y: Set current_type in missing places.
	(leftdiv_is_integer): New static variable.
	Typecast right operand of BINOP_DIV to long_double if both operands
	are integers.

2008-02-06  Maciej W. Rozycki  <macro@mips.com>

	* remote-mips.c (set_breakpoint): Rename to...
	(mips_set_breakpoint): ... this.
	(clear_breakpoint): Rename to...
	(mips_clear_breakpoint): ... this.
	(common_breakpoint): Rename to...
	(mips_common_breakpoint): ... this.
	(check_lsi_error): Rename to...
	(mips_check_lsi_error): ... this.

2007-02-05  Joel Brobecker  <brobecker@adacore.com>

	* language.h (struct language_defn): Add new field
	la_make_symbol_completion_list.
	* symtab.c (default_make_symbol_completion_list): Renames
	make_symbol_completion_list.
	(make_symbol_completion_list): New function.
	* symtab.h (default_make_symbol_completion_list): Add declaration.
	* langauge.c (unknown_language): Set la_make_symbol_completion_list.
	(auto_language, local_language): Likewise.
	* objc-lang.c (objc_language_defn): Likewise.
	* scm-lang.c (scm_language_defn): Likewise.
	* m2-lang.c (m2_language_defn): Likewise.
	* f-lang.c (f_language_defn): Likewise.
	* jv-lang.c (java_language_defn): Likewise.
	* p-lang.c (pascal_language_defn): Likewise.
	* c-lang.c (c_language_defn, cplus_language_defn, asm_language_defn)
	(minimal_language_defn): Likewise.
	* ada-lang.c (struct string_vector): New structure.
	(new_string_vector, string_vector_append, ada_unqualified_name)
	(add_angle_brackets, symbol_completion_match, symbol_completion_add)
	(ada_make_symbol_completion_list): New functions.
	(ada_language_defn): Set la_make_symbol_completion_list.
	* ada-lang.h (ada_make_symbol_completion_list): Remove declaration,
	this function is static.

2008-02-05  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (mn10300_push_dummy_call): Adjust stack pointer
	to account for call site optimizations.

2008-02-05  Andrzej Zaborowski  <balrogg@gmail.com>

	* tracepoint.c (read_actions): Handle end-of-text indicator
	in action list properly.  (Committed by Jim Blandy)

2008-02-05  Jim Blandy  <jimb@red-bean.com>

	* ax-gdb.c (gen_expr): Yield ordinary error if asked to trace a
	pseudoregister, not an internal error.
	Reported by: Andrzej Zaborowski

2008-02-04  Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c (c_value_of_variable): Use xstrdup.

2008-02-04  Vladimir Prus  <vladimir@codesourcery.com>

	Update stored rendition of varobj value when format changes.
	* varobj.c (varobj_set_display_format): Recomputed
	print_value.
	(c_value_of_variable): Return print_value.

2008-02-03  Doug Evans  <dje@google.com>

	* eval.c (evaluate_subexp_standard): Fix type of result of mixed
	integer/float division operations when EVAL_AVOID_SIDE_EFFECTS.
	* valops.c (value_one): New function.
	* value.h (value_one): Declare.

	Fix argument promotion for binary arithmetic ops for C.
	* valarith.c (unop_result_type): New fn.
	(binop_result_type): New fn.
	(value_binop): Move result type computation to binop_result_type.
	(value_pos, value_neg, value_complement): Move result type
	computation to unop_result_type.

	PR 2384
	* gdbtypes.c (get_vptr_fieldno): Renamed from fill_in_vptr_fieldno.
	Return basetype, fieldno if found.  All callers updated.
	Don't cache TYPE_VPTR_FIELDNO, TYPE_VPTR_BASETYPE if from different
	objfile.
	* gdbtypes.h (get_vptr_fieldno): Renamed from fill_in_vptr_fieldno.
	* symfile.h (fill_in_vptr_fieldno): Delete.

2008-02-02  Doug Evans  <dje@google.com>

	* valarith.c (value_binop): Handle unsigned BINOP_REM division by zero.

	* typeprint.c (*): Whitespace cleanup.

2008-02-02  Mark Kettenis  <kettenis@gnu.org>
	    Luis Machado  <luisgpm@br.ibm.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Pass floats that
	don't fit into registerson the stack the way GCC does.

2008-02-01  Joel Brobecker  <brobecker@adacore.com>

	* symtab.c (symbol_set_names): Do not add an entry in the demangling
	hash table for Ada symbols. Just store the linkage name as is,
	and leave the demangled_name as NULL.

2007-02-01  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (add_partial_symbol): Always store all Ada subprograms
	in the global scope.
	(new_symbol): Likewise.

2008-02-01  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.c (break_command_1): Return void.
	(break_command_really): Return void.  Rethrow
	exceptions instead of returning.
	(gdb_breakpoint): Remove the error_message parameter.
	Return void.  Rename to set_breakpoint.
	* gdb.h (gdb_breakpoint): Rename and move to...
	* breakpoint.h (set_breakpoint): ...here.
	* mi/mi-cmb-break.c (mi_cmd_break_insert): Restore
	event hooks even if exception is thrown.  Adjust to
	gdb_breakpoint interface changes.


2008-02-01  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ppc-sysv-tdep.c (ppc64_sysv_abi_push_dummy_call): Write 32-bit
	float in both first and second word in the doubleword, to support
	old and new ABIs.

2008-02-01  Vladimir Prus  <vladimir@codesourcery.com>

	Properly rethrow exception.  This fixes errors
	about non-existent functions for -break-insert.
	* breakpoint.c (break_command_really): Use throw_exception
	for rethrowing.  If rethrowing, don't print the exception.

2008-01-31  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* NEWS: Mention Decimal Floating Point support.

2008-01-31  Joel Brobecker  <brobecker@adacore.com>

	* std-regs.c (value_of_builtin_frame_pc_reg): Change the returned
	value type to builtin_type_void_func_ptr.

2008-01-31  Andreas Krebbel  <krebbel1@de.ibm.com>

	* s390-tdep.c (is_float_singleton, is_float_like,
	alignment_of, s390_return_value): Make checks for
	TYPE_CODE_FLT to match TYPE_CODE_DECFLOAT as well.

2008-01-31  Luis Machado  <luisgpm@br.ibm.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* infcmd.c (default_print_registers_info): Also print hex
	raw contents for TYPE_CODE_DECFLOAT registers.
	* ppc-tdep.h (gdbarch_tdep): Add ppc_dl0_regnum member.
	* rs6000-tdep.c (IS_DFP_PSEUDOREG): New macro.
	(rs6000_register_name): Add support for DFP pseudo-registers.
	(rs6000_pseudo_register_type): Likewise.
	rs6000_pseudo_register_reggroup_p): Likewise.
	(ppc_pseudo_register_read): New function.
	(ppc_pseudo_register_write): Likewise.
	(rs6000_pseudo_register_read): Likewise.
	(rs6000_pseudo_register_write): Likewise.
	(e500_pseudo_register_read): Move checks to
	rs6000_pseudo_register_read.
	(e500_pseudo_register_write): Move checks to
	rs6000_pseudo_register_write.
	(rs6000_gdbarch_init): Initialize tdep->ppc_dl0_regnum.  Install
	rs6000_pseudo_register_read and rs6000_pseudo_register_write
	in gdbarch if SPE or DFP is available.  Adjust gdbarch's
	num_pseudo_regs to account for DFP pseudo regs.

2008-01-31  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ppc-tdep.h (struct gdbarch_tdep): Remove ppc_ev31_regnum member.
	* rs6000-tdep.c (IS_SPE_PSEUDOREG): New macro.
	(spe_register_p, rs6000_register_name, rs6000_pseudo_register_type,
	rs6000_pseudo_register_reggroup_p, e500_move_ev_register,
	e500_pseudo_register_read, e500_pseudo_register_write): Use
	IS_SPE_PSEUDOREG macro.
	(rs6000_frame_cache): Remove use of tdep->ppc_ev31_regnum.
	(rs6000_gdbarch_init): Remove unnecessary num_sprs local variable.
	Remove initialization of tdep->ppc_ev31_regnum.

2008-01-08  Paul Hilfinger  <hilfinger@adacore.com>

	* printcmd.c (print_formatted): Handle references as for unformatted
	prints.

2008-01-30  Joel Brobecker  <brobecker@adacore.com>

	* eval.c (evaluate_subexp_standard): Add handling of user
	registers when in EVAL_AVOID_SIDE_EFFECTS mode.

2008-01-30  Pierre Muller  <muller@ics.u-strasbg.fr>

	* eval.c (evaluate_subexp_standard): Support
	BINOP_INTDIV opcode.

2008-01-30  Paul N. Hilfinger  <hilfinger@adacore.com>

	* valarith.c (value_binop): Add floating-point BINOP_MIN and
	BINOP_MAX cases.
	For BINOP_EXP, use length and signedness of left operand only for
	result, as for shifts.
	For integral operands to BINOP_EXP, use new integer_pow and
	uinteger_pow functions so as to get full range of results.
	(integer_pow): New function.
	(uinteger_pow): New function.

2008-01-30  Vladimir Prus  <vladimir@codesourcery.com>

	Use vector for varobj_list_children interface.
	* gdb/varobj.c (varobj_list_children): Return vector
	of varobjs.
	* gdb/varobj.h (varobj_list_children): Adjust
	prototype.
	(varobj_p): Declare.  Declare vector thereof.
	* mi/mi-cmd-var.c (mi_cmd_var_list_children): Adjust
	for varobj_list_children change.
	* Makefile.in (varobj_h): Update dependencies.

2008-01-30  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Add support for
	TYPE_CODE_DECFLOAT arguments.
	(ppc64_sysv_abi_push_dummy_call) Likewise.
	(get_decimal_float_return_value): New function.
	(do_ppc_sysv_return_value): Add support for TYPE_CODE_DECFLOAT return
	values by calling get_decimal_float_return_value.
	(ppc64_sysv_abi_return_value): Likewise.

2008-01-30  Nick Roberts  <nickrob@snap.net.nz>

	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file):  Add field
	for preprocessor macro information.  Formatting changes.

2008-01-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (struct remote_state): Add cached_wait_status.
	(remote_exec_file): New variable.
	(PACKET_vAttach, PACKET_vRun): New constants.
	(extended_remote_restart): Do not query for status.
	(struct start_remote_args): New.
	(remote_start_remote): Take it as a second argument.  Check
	whether the target is running.  Issue an error for non-running
	non-extended targets.  Cache the wait status.  Set inferior_ptid
	here.
	(remote_open_1): Prompt to disconnect non-running targets.  Make
	sure the target is marked running.  Do not set inferior_ptid here.
	Update call to remote_start_remote.  Do not call remote_check_symbols
	if the target is not running.
	(remote_detach_1): Rename from remote_detach.  Take an EXTENDED
	argument.  Handle a non-running target.
	(remote_detach): Use it.
	(extended_remote_detach): New.
	(remote_disconnect): Fix typo.  Use remoute_mourn_1.
	(extended_remote_attach_1, extended_remote_attach)
	(extended_async_remote_attach): New.
	(remote_vcont_resume): Remove unused variable.
	(remote_wait, remote_async_wait): Use any cached wait status.
	(putpkt_binary, getpkt): Clear any cached wait status.
	(extended_remoute_mourn_1): New.
	(extended_remote_mourn): Use it.
	(extended_async_remote_mourn, extended_remote_run): New.
	(extended_remote_create_inferior_1): New.
	(extended_remote_create_inferior): Use it.
	(extended_remote_async_create_inferior): Likewise.
	(remote_xfer_partial): Skip for non-executing targets.
	(init_extended_remote_ops): Set to_detach and to_attach.
	(init_extended_async_remote_ops): Likewise.  Use
	extended_async_remote_mourn.
	(_initialize_remote): Register vAttach, vRun, and
	set remote exec-file.
	* NEWS: Mention vAttach, vRun, and gdbserver extended-remote support.

2008-01-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (symfile.o): Update.
	* NEWS: Mention exec tracing support.
	* inf-ttrace.c (inf_ttrace_wait): Return TARGET_WAITKIND_EXECD for
	exec events.
	* infcmd.c (kill_if_already_running, detach_command)
	(disconnect_command): Replace SOLIB_RESTART with no_shared_libraries.
	* infrun.c (MAY_FOLLOW_EXEC, may_follow_exec): Delete.
	(follow_exec): Do not check may_follow_exec.  Do not mourn and push
	targets.  Apply the sysroot path to the loaded executable.  Use
	no_shared_libraries.
	* linux-nat.c (linux_child_follow_fork): Print fork following
	messages if verbose.
	(kill_wait_callback): Kill again before waiting a second time.
	* symfile.c (symbol_file_clear): Replace SOLIB_RESTART with
	no_shared_libraries.

2008-01-29  Joel Brobecker  <brobecker@adacore.com>

	* amd64-tdep.c (amd64_classify): Add handling of TYPE_CODE_CHAR.

2008-01-29  Joel Brobecker  <brobecker@adacore.com>

	* nto-tdep.h: Remove #include "defs.h".
	* nto-tdep.c: Add #include "defs.h".
	* Makefile.in (nto_tdep_h): Update dependencies.
	(nto-tdep.o): Likewise.

2008-01-29  Joel Brobecker  <brobecker@adacore.com>

	* infrun.c (wait_for_inferior): Add treat_exec_as_sigtrap parameter
	and use it.
	(proceed, start_remote): Update call to wait_for_inferior.
	* inferior.h (wait_for_inferior): Update declaration.
	* fork-child.c, infcmd.c, solib-irix.c, solib-osf.c, solib-sunos.c,
	solib-svr4.c, win32-nat.c: Update calls to wait_for_inferior.
	* inf-ttrace.c (inf_ttrace_wait): Report TTEVT_EXEC events as
	TARGET_WAITKIND_EXECD instead of TARGET_WAITKIND_STOPPED.

2008-01-29  Aleksandar Ristovski  <aristovski@qnx.com>

	* varobj (adjust_value_for_child_access): Added checking for
	returned value from gdb_value_ind.
	(c_describe_child): Likewise.
	(cplus_describe_child): Fixed a typo.

2008-01-29  Jim Blandy  <jimb@red-bean.com>

	* MAINTAINERS: Update my info.

2008-01-29  Vladimir Prus  <vladimir@codesourcery.com>

	Use multiple locations for hardware watchpoints.
	This eliminates the need to traverse value chain, doing
	various checks, in three different places.

	* breakpoint.h (struct bp_location): New fields
	lengths and watchpoint_type.
	(struct breakpoint): Remove the val_chain field.
	* breakpoint.c (is_hardware_watchpoint): New.
	(free_valchain): Remove.
	(update_watchpoint): New.
	(insert_bp_location): For hardware watchpoint, just
	directly insert it.
	(insert_breakpoints): Call update_watchpoint_locations
	on all watchpoints.  If we have failed to insert
	any location of a hardware watchpoint, remove all inserted
	locations.
	(remove_breakpoint): For hardware watchpoints, directly
	remove location.
	(watchpoints_triggered): Iterate over locations.
	(bpstat_stop_status): Use only first location of
	a resource watchpoint.
	(delete_breakpoint): Don't call free_valchain.
	(print_one_breakpoint): Don't print all
	locations for watchpoints.
	(breakpoint_re_set_one): Use update_watchpoint for
	watchpoints.

2008-01-29  Vladimir Prus  <vladimir@codesourcery.com>

	Don't reset watchpoint block on solib load.

	* breakpoint.c (insert_bp_location): For watchpoints,
	recompute condition.
	(breakpoint_re_set_one): Instead of recomputing value
	and condition for watchpoints, just reset value and
	let insert_breakpoints/insert_bp_location recompute it.
	Don't do anything about disabled watchpoint.

2008-01-29  Pierre Muller  <muller@ics.u-strasbg.fr>

	* valarith.c (value_binop): Handle unsigned integer
	division by zero.

2008-01-28  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (mn10300_analyze_prologue): Check for an
	instruction pattern that appears frequently in position
	independent code.  Fix bug in code which looks for "fmov" and
	backtracks if no "fmov" is found.

2008-01-28  Doug Evans  <dje@google.com>

	* dbxread.c (read_dbx_symtab): Fix indentation.
	Reformat comments to 80 columns.
	Move local var def closer to only use.

2008-01-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* fork-child.c (SHELL_FILE): Remove #ifndef.
	(fork_inferior): Remove SHELL_COMMAND_CONCAT.

2008-01-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	* i386-tdep.c (i386_skip_noop): New function.
	(i386_analyze_prologue): Call i386_skip_noop function.

2008-01-24  Michael Snyder  <msnyder@specifix.com>

	* procfs.c (procfs_xfer_partial): Comment, cut/paste error.
	* win32-nat.c (win32_xfer_partial): Ditto.
	* target.c (default_xfer_partial): Minor whitespace adjustment.

2008-01-24  Pedro Alves  <pedro@codesourcery.com>

	* arm-tdep.c (arm_addr_bits_remove): In non 26-bit mode, don't
	strip bit 1 even if pc doesn't point to thumb code.

2008-01-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_wait): Handle SIGINT between packets.
	(remote_async_wait): Likewise.

2008-01-23  Vladimir Prus  <vladimir@codesourcery.com>
	    Chris Demetriou  <cgd@google.com>

	* thread.c (add_thread_silent): Renamed
	from add_thread.
	(print_thread_events): New variable definition.
	(show_print_thread_events): New function.
	(_initialize_thread): Add "set print thread-events" and
	"show print thread-events" commands.
	(add_thread): Announce new thread.
	* gdbthread.h (add_thread_silent): Declare.
	(print_thread_events): New variable declaration.
	* inf-ttrace.c (inf_ttrace_wait): Don't
	inform about new thread, as add_thread is always
	called too, and will take care of that.
	* infrun.c (handle_inferior_event): Likewise.
	* procfs.c (procfs_wait): Likewise.
	* remote.c (remote_currthread): Likewise.
	* sol-thread.c (sol_thread_wait): Likewise.
	* win32-nat.c (get_win32_debug_event): Likewise.
	* linux-thread-db.c (attach_thread): Likewise.
	Remove the verbose parameter.
	(check_event): Make detach_thread be verbose
	only if print_thread_events is set.
	* linux-nat.c (lin_lwp_attach_lwp): Don't inform
	about new thread.  This is called only from
	linux-thread-db.c:attach_thread, which will take care.
	Remove the verbose parameter.
	* linux-nat.h (lin_lwp_attach_lwp): Adjust prototype.

2008-01-23  Nick Roberts  <nickrob@snap.net.nz>

	* mi/mi-cmd-var.c (mi_cmd_var_set_format): Add value field to output.

2008-01-22  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.c (break_command_really): New parameter
	ignore_count.
	(break_command_1): Pass 0 as
	ignore_count to break_command_really.
	(gdb_breakpoint): Pass ignore_count to
	break_command_really.

2008-01-21  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-linux-tdep.c (am33_linux_sigframe_cache_init): Find
	sigcontext struct via pointer.
	(struct sigframe comment): Update to show new field `psc'.

2008-01-21  Vladimir Prus  <vladimir@codesourcery.com>

	* infrun.c (handle_inferior_event): If
	we failed to remove breakpoints, error,
	don't try to increment PC by hand.

2008-01-18  Nick Hudson  <nick.hudson@dsl.pipex.com>

	Add NetBSD/hppa target and host support.

	* hppabsd-tdep.c (hppabsd_supply_gregset): Move to ...
	(hppabsd_gregset): Move to ...
	(hppabsd_regset_from_core_section): Rename
	hppaobsd_regset_from_core_section and move to ...
	(hppabsd_find_global_pointer): Update comment.
	(hppabsd_init_abi): Make global. Do not register
	hppabsd_regset_from_core_section.
	(hppabsd_core_osabi_sniffer): Rename hppaobsd_core_osabi_sniffer and
	move to ...
	(_initialize_hppabsd_tdep): Move to ...
	* hppaobsd-tdep.c: ... here. New file.
	* hppnbsd-tdep.c: New file.
	* hppnbsd-nat.c: New file.
	* Makefile.in (ALL_TARGET_OBS): Add hppanbsd-tdep.o and hppaobsd-tdep.o.
	(ALLDEPFILES): Add hppabsd-nat.c and hppabsd-tdep.c.
	(hppabsd-nat.o, hppabsd-tdep.o): New dependencies.
	(hppabsd-tdep.o, hppaobsd-tdep.o): Update dependencies.
	* configure.host (hppa*-*-netbsd*): New entry.
	* configure.tgt (hppa*-*-netbsd*): New entry.
	(hppa*-*-openbsd*): Update.
	* NEWS (New native configuration): Mention NetBSD/hppa.
	(New targets): Mention NetBSD/hppa.

2008-01-18  Markus Deuling  <deuling@de.ibm.com>

	* gdbarch.sh (function_list): Add new property bits_big_endian to
	gdbarch structure.
	* gdbarch.{c,h}: Regenerate.

	* value.c (struct value): Replace BITS_BIG_ENDIAN by
	gdbarch_bits_big_endian (comment).
	(unpack_field_as_long, modify_field): Likewise.
	* value.h: Likewise (comment).
	* valops.c (value_slice): Likewise.
	* valarith.c (value_subscript, value_bit_index): Likewise.
	* gdbtypes.h (field): Likewise (comment).
	* eval.c (evaluate_subexp_standard): Likewise.
	* dwarf2read.c (dwarf2_add_field): Likewise.
	* ada-lang.c (decode_packed_array, ada_value_primitive_packed_val)
	(move_bits, ada_value_assign, value_assign_to_component): Likewise.

	* defs.h (BITS_BIG_ENDIAN): Remove.

2008-01-18  Markus Deuling  <deuling@de.ibm.com>

	* jv-exp.y (yylex): Replace DEPRECATED_STREQN with the appropriate
	function calls.
	* m2-exp.y (yylex): Likewise.
	* objc-exp.y (yylex): Likewise.

	* defs.h (DEPRECATED_STREQN): Remove.

2008-01-17  H.J. Lu  <hjl.tools@gmail.com>

	* MAINTAINERS: Update my email address.

2008-01-17  Jim Blandy  <jimb@codesourcery.com>

	* README: Mention gdbserver/README.

2008-01-17  Pierre Muller  <muller@ics.u-strasbg.fr>

	* valarith.c (value_binop): Handle BINOP_INTDIV
	for unsigned and signed integers.

2008-01-17  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (s390_gdbarch_init): Set default long double
	type to 128-bit IEEE quad.

2008-01-17  Joel Brobecker  <brobecker@adacore.com>

	* hpux-thread.c (hpux_thread_resume): Delete commented-out code.

2008-01-16  Mark Kettenis  <kettenis@gnu.org>

	* auxv.c (fprint_target_auxv): Add support for AT_SUN_AUXFLAGS.

	* dfp.c, dfp.h: Rename decimal_to_double to decimal_to_doublest.
	* value.c: All callers changed.

2008-01-16  Markus Deuling  <deuling@de.ibm.com>

	* rs6000-nat.c (add_vmap, vmap_ldinfo, vmap_exec): Replace
	DEPRECATED_STREQ by its expression.
	* coffread.c (coff_locate_sections, coff_symtab_read): Likewise.
	* xcoffread.c (read_xcoff_symtab, read_symbol_lineno, find_linenos)
	(scan_xcoff_symtab): Likewise.
	* hppa-hpux-tdep.c (hppa_hpux_skip_trampoline_code): Likewise.
	* f-lang.c (find_common_for_function): Likewise.
	* objc-exp.y (parse_number): Likewise.

	* defs.h (DEPRECATED_STREQ): Remove.

2008-01-16  Markus Deuling  <deuling@de.ibm.com>

	* mn10300-tdep.h (AM33_MODE): Add gdbarch as parameter.
	* mn10300-tdep.c (set_reg_offsets, mn10300_analyze_prologue): Use
	get_frame_arch to get at the current_architecture. Update AM33_MODE
	call.
	(mn10300_analyze_prologue): Add gdbarch as parameter. Update caller.
	(mn10300_frame_unwind_cache): Use get_frame_arch to get at the current
	architecture.
	(set_reg_offsets, mn10300_analyze_prologue): Fix indentation.

2008-01-16  Markus Deuling  <deuling@de.ibm.com>

	* amd64-nat.h (amd64_native_gregset_supplies_p): Add gdbarch as
	parameter.
	* amd64-nat.c (amd64_native_gregset_supplies_p): Likewise.

	(amd64_native_gregset_reg_offset): Add gdbarch as parameter. Replace
	current_gdbarch by gdbarch. Update caller.

	* amd64-linux-nat.c (amd64_linux_fetch_inferior_registers)
	(amd64_linux_store_inferior_registers): Use get_regcache_arch to get at
	the current architecture. Update calls of
	amd64_native_gregset_supplies_p.
	* amd64bsd-nat.c (amd64bsd_fetch_inferior_registers)
	(amd64bsd_store_inferior_registers): Likewise.

2008-01-16  Markus Deuling  <deuling@de.ibm.com>

	* ppc-linux-nat.c (ppc_register_u_addr): Add gdbarch as parameter.
	Replace current_gdbarch by gdbarch. Update caller.

2008-01-16  Markus Deuling  <deuling@de.ibm.com>

	* dbxread.c (repeated_header_complaint, dbx_symfile_init)
	(read_dbx_dynamic_symtab, function_outside_compilation_unit_complaint)
	(read_dbx_symtab, end_psymtab, dbx_psymtab_to_symtab_1)
	(dbx_psymtab_to_symtab, read_ofile_symtab, process_one_symbol)
	(stabsect_build_psymtabs): Fix indentation.

2008-01-15  Michael Snyder  <msnyder@specifix.com>

	* corelow.c (core_xfer_partial): Comment, cut/paste error.

2008-01-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (win32_create_inferior): Restore code calling
	CloseHandle on ProcessInformation structure.

2008-01-13  Nick Hudson  <nick.hudson@dsl.pipex.com>

	* configure.ac: Check for void * as 3 argument of ptrace.
	* configure: regenerate.

2008-01-11  Markus Deuling  <deuling@de.ibm.com>

	* alpha-tdep.c (alpha_heuristic_proc_start)
	(alpha_sigtramp_register_address): Add gdbarch as parameter. Replace
	current_gdbarch by gdbarch.

	(alpha_heuristic_frame_unwind_cache): Use get_frame_arch to get at the
	current architecture by frame_info. Update alpha_heuristic_proc_start
	call.

	(alpha_sigtramp_frame_this_id, alpha_sigtramp_frame_prev_register): Use
	get_frame_arch to get at the current architecture by frame_info. Update
	alpha_sigtramp_register_address call.

	* arm-tdep.c (thumb_scan_prologue): Add gdbarch as parameter and replace
	current_gdbarch by gdbarch. Update caller.
	(convert_to_extended, convert_from_extended): Add endianess parameter
	for comparison. Update caller.
	(arm_extract_return_value, arm_store_return_value): Use
	get_regcache_arch to get at the current	architecture.

	* cris-tdep.c (cris_register_size): Add gdbarch as parameter. Replace
	current_gdbarch by gdbarch. Update caller.
	(cris_gdb_func, move_to_preg_op, none_reg_mode_move_from_preg_op): Add
	gdbarch as parameter. Update caller. Replace current_gdbarch by gdbarch.

	* h8300-tdep.c (E_PSEUDO_CCR_REGNUM, E_PSEUDO_EXR_REGNUM, BINWORD): Add
	gdbarch	as parameter. Update caller.
	(h8300_init_frame_cache): Add gdbarch as parameter. Replace
	current_gdbarch by gdbarch. Update caller.

	* hppa-tdep.c (skip_prologue_hard_way): Add gdbarch as parameter and
	update caller. Replace current_gdbarch by gdbarch.

	* m32c-tdep.c (m32c_skip_trampoline_code): Use get_frame_arch to get at
	the current architecture. Replace current_gdbarch by gdbarch.
	* m68hc11-tdep.c (m68hc11_frame_unwind_cache): Likewise.
	(STACK_CORRECTION, USE_PAGE_REGISTER): Replace M6811_TDEP by its
	expression. Add gdbarch as parameter and replace current_gdbarch with
	it. Update caller.
	(M6811_TDEP): Remove.
	(m68hc11_frame_prev_register): Use get_frame_arch to get at the current
	architecture.
	(m68hc11_scan_prologue): Add gdbarch as parameter. Replace
	current_gdbarch by gdbarch. Update caller.

	* m68k-tdep.c (m68k_analyze_prologue): Add gdbarch as parameter and
	update caller.
	(m68k_analyze_register_saves): Likewise. Also replace current_gdbarch
	by gdbarch.

	* rs6000-tdep.c (skip_prologue): Add gdbarch as parameter and update
	caller. Relace current_gdbarch by gdbarch.
	(altivec_register_p, spe_register_p): Likewise.
	* ppc-tdep.h (altivec_register_p, spe_register_p): Add gdbarch as
	parameter.
	* ppc-linux-nat.c (fetch_register, store_register): Update caller of
	altivec_register_p and spe_register_p.

	* score-tdep.c (score_fetch_inst): Add gdbarch as parameter. Update
	caller. Replace current_gdbarch by gdbarch.
	(score_analyze_prologue): use get_frame_arch to get at the current
	architecture.

	* sparc-tdep.h (sparc_analyze_prologue): Add gdbarch as parameter.
	* sparc-tdep.c (sparc_analyze_prologue): Likewise. Replace
	current_gdbarch by gdbarch. Update caller.
	(sparc_frame_cache): Use get_frame_arch to get at the current
	architecture.
	* sparce64-tdep.c (sparc64_skip_prologue): Update call of
	sparc_analyze_prologue.

	* mn10300-tdep.c (mn10300_dwarf2_reg_to_regnum): Add gdbarch as
	parameter.

2008-01-11  Markus Deuling  <deuling@de.ibm.com>

	* exec.c: #include "arch-utils.h"
	 (print_section_info): Use gdbarch_from_bfd to get at the
	current architecture. Replace current_gdbarch. Fix indention. Replace
	deprecated_print_address_numeric by paddress.
	* Makefile.in (exec.o) Add dependency to arch-utils.h.

	* valprint.c (val_print_string): Replace
	deprecated_print_address_numeric.
	* tracepoint.c (trace_mention, scope_info): Likewise.
	* symmisc.c (dump_msymbols, dump_psymtab, dump_symtab_1, print_symbol)
	(print_symbol, print_partial_symbols, maintenance_info_psymtabs)
	(maintenance_check_symtabs): Likewise.
	* symfile.c (list_overlays_command): Likewise.
	* stack.c (frame_info, print_block_frame_labels): Likewise.
	* printcmd.c (print_address, print_address_demangle)
	(address_info): Likewise.
	* corefile.c (memory_error): Likewise.
	* infcmd.c (jump_command): Likewise.
	* breakpoint.c (insert_bp_location, describe_other_breakpoints)
	(mention, delete_breakpoint): Likewise.
	* c-valprint.c (print_function_pointer_address, c_val_print): Likewise.
	* dwarf2read.c (dump_die): Likewise.
	* ada-valprint.c (ada_val_print_1): Likewise.
	* f-valprint.c (f_val_print): Likewise.
	* linux-fork.c (info_forks_command): Likewise.
	* m32r-com.c (m32r_load_section, m32r_load)
	(m32r_upload_command): Likewise.

	* ui-out.c (ui_out_field_core_addr): Remove unnecessary comment.

2008-01-11  Markus Deuling  <deuling@de.ibm.com>

	* gdbarch.sh (skip_prologue): Add gdbarch
	as parameter.
	* gdbarch.{c,h}: Regenerate.

	* alpha-tdep.c (alpha_skip_prologue): Add gdbarch as parameter.
	* amd64-tdep.c (amd64_skip_prologue): Likewise.
	* avr-tdep.c (avr_skip_prologue): Likewise.
	* cris-tdep.c (cris_skip_prologue): Likewise.
	* frv-tdep.c (frv_skip_prologue): Likewise.
	* h8300-tdep.c (h8300_skip_prologue): Likewise.
	* hppa-tdep.c (hppa_skip_prologue): Likewise.
	* i386-tdep.c (i386_skip_prologue): Likewise.
	* ia64-tdep.c (ia64_skip_prologue): Likewise.
	* iq2000-tdep.c (iq2000_skip_prologue): Likewise.
	* m32r-tdep.c (m32r_skip_prologue): Likewise.
	* m68hc11-tdep.c (m68hc11_skip_prologue): Likewise.
	* m68k-tdep.c (m68k_skip_prologue): Likewise.
	* m88k-tdep.c (m88k_skip_prologue): Likewise.
	* mep-tdep.c (mep_skip_prologue): Likewise.
	* mips-tdep.c (mips_skip_prologue): Likewise.
	* mn10300-tdep.c (mn10300_skip_prologue): Likewise.
	* mt-tdep.c (mt_skip_prologue): Likewise.
	* rs6000-tdep.c (rs6000_skip_prologue): Likewise.
	* score-tdep.c (score_skip_prologue): Likewise.
	* sh64-tdep.c (sh64_skip_prologue): Likewise.
	* sh-tdep.c (sh_skip_prologue): Likewise.
	* sparc64-tdep.c (sparc64_skip_prologue): Likewise.
	* sparc-tdep.c (sparc32_skip_prologue): Likewise.
	* spu-tdep.c (spu_skip_prologue): Likewise.
	* v850-tdep.c (v850_skip_prologue): Likewise.
	* vax-tdep.c (vax_skip_prologue): Likewise.
	* xstormy16-tdep.c (xstormy16_skip_prologue): Likewise.
	* xtensa-tdep.c (xtensa_skip_prologue): Likewise.

	* arm-tdep.c (arm_skip_prologue): Add gdbarch as parameter. Replace
	current_gdbarch by gdbarch.
	* m32c-tdep.c (m32c_skip_prologue): Likewise.
	* s390-tdep.c (s390_skip_prologue): Likewise.

2008-01-10  Doug Evans  <dje@google.com>

	* defs.h (struct continuation_arg): Fix typo in comment.
	* target.c (target_translate_tls_address): Fix comment spelling error.

2008-01-09  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* doublest.h (DOUBLEST_PRINT_FORMAT): Remove % from string.
	(DOUBLEST_SCAN_FORMAT): Likewise.
	* dfp.c (decimal_from_floating): Use DOUBLEST_PRINT_FORMAT.
	* ada-lex.l (processReal): Prepend "%" to use of 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.

2008-01-09  Joel Brobecker  <brobecker@adacore.com>

	* gdbtypes.c (create_array_type): Add handling of null Ada arrays.
	(check_typedef): Likewise.

2008-01-09  Luis Machado  <luisgpm@br.ibm.com>

	* printcmd.c (printf_command): Add seen_big_h, seen_big_d and
	seen_double_big_d, treat the new H, D, and DD modifiers as length
	modifiers.

2008-01-08  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (read_enumeration_type): Add comment.

2008-01-08  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* config.in: Regenerate.

2008-01-08  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_convert_actual): Renames convert_actual.
	Make non-static.
	(ada_convert_actuals): Delete.
	* ada-lang.h (ada_convert_actual): Add declaration.
	(ada_convert_actuals): Remove declaration.
	* infcall.c: #include "ada-lang.h".
	(value_arg_coerce): Add new parameter sp.  Update function
	documetnation.  Add handling of Ada function call parameters.
	* Makefile.in (infcall.o): Update dependencies.

2008-01-08  Paul Hilfinger  <hilfinger@adacore.com>

	* ada-lang.c (ensure_lval): Fix value lval kind.
	(convert_actual): Add handling for arguments passed by reference.

2008-01-08  Doug Evans  <dje@google.com>

	* dbxread.c (read_dbx_symtab): Fix indentation.

2008-01-07  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* Makefile.in (dfp.o): Depend on expression.h, gdbtypes.h and value.h.
	(valarith.o): Depend on dfp.h.
	(valops.o): Likewise.
	* dfp.c: Include expression.h, gdbtypes.h, value.h and dfp.h.
	(set_decnumber_context): New function.
	(decimal_check_errors): Likewise.
	(decimal_from_number): Likewise.
	(decimal_to_number): Likewise.
	(decimal_from_string): Use set_decnumber_context and
	decimal_check_errors.
	(decimal_from_integral): New function.
	(decimal_from_floating): Likewise.
	(decimal_to_double): Likewise.
	(promote_decimal): Likewise.
	(decimal_binop): Likewise.
	(decimal_is_zero): Likewise.
	(decimal_compare): Likewise.
	(decimal_convert): Likewise.
	* dfp.h (decimal_from_integral): New prototype.
	(decimal_from_floating): Likewise.
	(decimal_to_double): Likewise.
	(decimal_binop): Likewise.
	(decimal_is_zero): Likewise.
	(decimal_compare): Likewise.
	(decimal_convert): Likewise.
	* eval.c (evaluate_subexp_standard): Remove expect_type argument from
	call to value_from_decfloat.
	* valarith.c: Include dfp.h.
	(value_args_as_decimal): New function.
	(value_binop): Add if block to handle TYPE_CODE_DECFLOAT values.
	(value_logical_not): Likewise.
	(value_equal): Likewise.
	(value_less): Likewise.
	(value_pos): Likewise.
	(value_neg): Formatting fix.
	* valops.c: Include dfp.h.
	(value_cast): Add if block to handle TYPE_CODE_DECFLOAT values.
	* value.c (unpack_long): Add case to handle TYPE_CODE_DECFLOAT.
	(unpack_double): Add if block to handle TYPE_CODE_DECFLOAT.
	(value_from_decfloat): Remove expect_type argument.
	* value.h (value_from_decfloat): Update prototype.

2008-01-07  Vladimir Prus  <vladimir@codesourcery.com>

	Ignore change in name of dynamic linker during
	execution on Solaris.  This also unbreaks pending breakpoints.

	* solist.h (struct target_so_ops): New field same.
	* solib-svr4.c (svr4_same): New.
	(_initialize_svr4_solib): Register svr4_same.
	* solib.c (update_solib_list): Use ops->same, if available.

2008-01-06  Christopher Faylor  <me+cygwin@cgf.cx>

	* win32-nat.c (win32_make_so): Use cygwin-style path to avoid warnings
	when using MS-DOS paths.

2008-01-05  Pedro Alves  <pedro@codesourcery.com>

	* NEWS: Mention --pid and --core command line behaviour changes.

2008-01-05  Pedro Alves  <pedro@codesourcery.com>

	* main.c (captured_main): Remove 'count' varible and the
	ALIGN_STACK_ON_ENTRY block that used it.  Error out if --core and
	--pid options were issued simultaneously.  If an explicit pid
	option was passed, don't fallback to core file.  Detect extra
	arguments better in the presence of explicit pid or core
	arguments.

2008-01-05  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_which_variant_applies): Correctly compute
	the value of the discriminant when the variant record is packed.

2008-01-04  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (is_name_suffix): Handle middle-name numeric suffixes
	that are used to differentiate homonyms.

2008-01-04  Jerome Guitton  <guitton@adacore.com>

	* ada-lang.c (decode_packed_array_type): Avoid a seg fault
	when the type is an anonymous pointer type.
	(ada_check_typedef): Avoid a seg fault when the type is null.
	* ada-typeprint.c (print_array_type): Add support for pointer
	to packed arrays.

2008-01-04  Paul N. Hilfinger  <hilfinger@adacore.com>

	* ada-exp.y: Allow '{type} ADDRESS' notation on left of assignment.

2008-01-04  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp): Evaluate tagged types in
	EVAL_NORMAL mode when noside is EVAL_AVOID_SIDE_EFFECTS.

2008-01-04  Joel Brobecker  <brobecker@adacore.com>

	* ada-exp.y (chop_separator): New function.
	(write_selectors): Rewrite to re-use chop_separator.
	(ada_nget_field_index, get_symbol_field_type): New functions.
	(write_var_or_type): Add support for "ptype TYPENAME.FIELD"
	expressions.

2008-01-03  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* symtab.c (find_pc_sect_line): Use SYMBOL_VALUE_ADDRESS instead
	of SYMBOL_VALUE when working with function symbols.

2008-01-03  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (resolve_subexp): Add handling of OP_REGISTER
	expressions.  These expressions do not need to be rewriten.

2008-01-03  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (read_enumeration_type): Flag type as stub if
	the given die is a declaration.

2008-01-03  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_array_bound_from_type): Make non-static.
	Handle properly the case when the index type is an enumerated type.
	Do not return the subtype of the bounds type, just return the
	bounds type directly - this is not needed and is more consistent
	with what we do for arrays when no XA parallel type exists.

2008-01-03  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (static_unwrap_type): Add forward declaration.
	(template_to_static_fixed_type): Fields of dynamic types sometimes
	also need to be unwrapped. Take this into account.
	(ada_to_fixed_type_1): Renamed from ada_to_fixed_type.
	(ada_to_fixed_type): New wrapper around ada_to_fixed_type_1.
	* ada-typeprint.c (ada_print_type): Get the typename from
	the original type, not the base type.

2008-01-03  Jerome Guitton  <guitton@adacore.com>

	* ada-lang.c (ada_value_struct_elt, to_fixed_array_type)
	(to_fixed_array_type, ada_to_fixed_value_create, unwrap_value):
	Update calls to ada_to_fixed_type.
	(ada_template_to_fixed_record_type_1): Ditto, but without looking
	for the tag.
	(ada_to_fixed_type): Add check_tag parameter; do not look for
	tag if null.  When looking for a tag, use a fixed record type.
	* ada-lang.h (ada_to_fixed_type): Add check_tag parameter.
	* ada-valprint.c (printable_val_type, ada_value_print): Update
	calls to ada_to_fixed_type.

2008-01-03  Luis Machado  <luisgpm@br.ibm.com>

	* doublest.c (convert_floatformat_to_doublest): Call
	floatformat_to_doublest instead of floatformat_to_double and use
	DOUBLEST variables.
	(convert_doublest_to_floatformat): Call floatformat_from_doublest
	instead of floatformat_from_double and use DOUBLEST variables.

2008-01-03  Nick Hudson  <nick.hudson@dsl.pipex.com>

	* MAINTAINERS (Write After Approval): Add self.

2008-01-03  Joel Brobecker  <brobecker@adacore.com>

	* symfile.c (set_initial_language): Make non-static.
	* symfile.h (set_initial_language): Add declaration.
	* language.c: #include "symfile.h".
	(set_language): Call set_initial_language if the frame language
	could not be determined.

2008-01-03  Paul N. Hilfinger  <hilfinger@adacore.com>

	* eval.c (evaluate_subexp_for_address): Provide frame address to
	locate_var_value only if it will be needed.

2008-01-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-nat.c (linux_child_follow_fork): Call also CHECK_FOR_THREAD_DB.

2008-01-02  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp): Modify the value returned
	when noside is EVAL_AVOID_SIDE_EFFECTS to be an lval_memory.
	This is needed to make sure that any other treatment applied
	to the resulting value does not fail for spurious reason,
	such as trying to take the address of this value.

2008-01-02  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_value_equal): Dereference reference types when
	comparing arrays.

2008-01-01  Daniel Jacobowitz  <dan@codesourcery.com>

	Updated copyright notices for most files.

2008-01-01  Christopher Faylor  <me+gdb@cgf.cx>

	* win32-nat.c (psapi_module_handle): Remove static.
	(get_module_name): Rename from psapi_get_dll_name.  Revamp slightly to
	return first module found if base_address is zero.  Don't initialize
	psapi function pointers here.  Convert to cygwin paths when
	appropriate.
	(win32_pid_to_exec_file): Use Cygwin's /proc interface to determine
	executable name.  Use get_module_name when that fails or when
	!__CYGWIN__.
	(_initialize_psapi): New function.  Initialize psapi stuff before it is
	needed or issue a warning if it is not found.  Move psapi_module_handle
	here.

2008-01-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_remove_trailing_digits): New function.
	(ada_remove_po_subprogram_suffix): New function.
	(ada_decode): Improve. Move the description of the algorithm
	directly inside the code, instead of in the function global
	description.

2008-01-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-valprint.c (ada_val_print_1) [TYPE_CODE_REF]: Ignore deref_ref
	and always print the dereferenced value.

2008-01-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp, case BINOP_SUB): Add handling
	of the case where the first argument is a reference.
	(ada_evaluate_subexp, case BINOP_ADD): Likewise.

2008-01-01  Joel Brobecker  <brobecker@adacore.com>

	Implement support for Ada interface types.

	* ada-lang.c (ada_is_dispatch_table_ptr_type): New function.
	(ada_is_ignored_field): Ignore fields that are a dispatch table
	of a tagged type.

2008-01-01  Joel Brobecker  <brobecker@adacore.com>

	* top.c (print_gdb_version): Update copyright year.

2008-01-01  Joel Brobecker  <brobecker@adacore.com>

	* ChangeLog-2007: New ChangeLog rotation.
	* ChangeLog: Reset for 2008.
	* config/djgpp/fnchange.lst: Add entries for ChangeLog-2006 and
	ChangeLog-2007.

For older changes see ChangeLog-2007.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
coding: utf-8
End:
