Pedro Alves [Fri, 24 Oct 2008 22:01:25 +0000 (22:01 +0000)]
* fork-child.c (startup_inferior): Only set threads not-executing
after getting all the pending execs. On TARGET_WAITKIND_IGNORE,
keep waiting, don't resume. On all other cases but
TARGET_WAITKIND_SIGNALLED and TARGET_WAITKIND_EXITED, switch to
the event ptid.
Pedro Alves [Fri, 24 Oct 2008 20:38:26 +0000 (20:38 +0000)]
Remote non-stop mode support.
* remote.c (pending_stop_reply): New.
(struct remote_state) <non_stop_aware, support_vCont_t>: New
fields.
(remote_async_inferior_event_token)
(remote_async_get_pending_events_token): New.
(notice_new_inferiors): New, abstracted out from record_currthread.
(record_currthread): Call it.
(remote_threads_info): Default threads to running in non-stop
mode. In non-stop mode, only qfThreadInfo is supported.
(remote_close): Discard all pending stop_replies. Close the event
sources.
(set_stop_requested_callback): New.
(remote_start_remote): Implement non-stop mode startup. In
all-stop, don't clear the thread list here.
(remote_non_stop_feature): New.
(remote_protocol_features): Add a "QNonStop" feature.
(remote_open_1): Clear cached_wait_status and non_stop_aware.
Clear the thread list here.
(remote_detach_1): Discard pending stop replies of the process we
detached from.
(extended_remote_attach_1): Implement non-stop mode.
(remote_vcont_probe): Recognize `vCont;t'.
(remote_vcont_resume): Implement non-stop mode.
(remote_resume): Don't set waiting_for_stop_reply in non-stop
mode.
(remote_stop_ns): New.
(remote_stop): Rename to ...
(remote_stop_as): ... this. If we have a cached wait status,
don't bother interrupting the remote.
(remote_stop): Reimplement as wrapper around remote_stop_as and
remote_stop_ns.
(interrupt_query): Don't query in async mode.
(struct cached_reg, cahed_reg_t): New.
(struct stop_reply): New.
(stop_reply_queue): New.
(stop_reply_xmalloc, stop_reply_xfree)
(discard_pending_stop_replies, do_stop_reply_xfree)
(queued_stop_reply, push_stop_reply, peek_stop_reply)
(remote_parse_stop_reply, remote_get_pending_stop_replies)
(process_stop_reply): New.
(remote_wait_ns): New.
(remote_wait_as): Use remote_parse_stop_reply. Invalidate the
notion of current general thread is a process exit was reported.
(remote_wait): Call remote_wait_ns in non-stop mode.
(handle_notification): New.
(putpkt_binary): Handle notifications. Don't care for
waiting_for_stop_reply in non-stop mode.
(getpkt_sane): Rename to ...
(getpkt_or_notif_sane_1): ... this. Add `expecting_notif'
argument. Handle it. Handle notifications.
(getpkt_sane): Reimplement as wrapper around getpkt_or_notif_sane_1.
(getpkt_or_notif_sane): New.
(select_new_thread_callback): Check for exited state instead of
comparing the ptid against minus_one_ptid.
(extended_remote_create_inferior_1): Query the remote about the
current thread.
(remote_supports_non_stop): New.
(init_remote_ops): Register it.
(remote_async_inferior_event_handler): New.
(remote_async_get_pending_events_handler): New.
* infcmd.c (proceed_thread_callback): Comment.
(proceed_after_attach_callback, proceed_after_attach): New.
(attach_command_post_wait): In background attach, resume all
threads, but only if they are unsignalled, and not explicitly
stopped. In foreground attach, in non-stop mode, make sure to
stop all threads of the just attached to process.
(attach_command): In non-stop mode: If doing a background attach,
stop at least one thread. If a foreground attach, stop all
threads.
Pedro Alves [Fri, 24 Oct 2008 19:33:39 +0000 (19:33 +0000)]
* event-loop.h: Mention async_event_handlers.
(async_event_handler): Forward declare.
(async_event_handler_func): New typedef.
(create_async_event_handler, delete_async_event_handler)
(mark_async_event_handler): Declare.
* event-loop.c (event_data): New.
(event_handler_func): Take an event_data instead of an integer.
(struct gdb_event): Replace the integer file descriptor by a
generic event_data.
(async_event_handler): New.
(async_handler_ready): Delete.
(async_event_handler_list): New.
(create_event): New.
(create_file_event): Use it.
(process_event): Adjust.
(gdb_do_one_event): Poll from the event sources in round-robin
fashion across calls. Be sure to consult all sources before
blocking.
(handle_file_event): Take an event_data instead of an integer.
Adjust.
(gdb_wait_for_event): Add `block' argument. Handle it.
(mark_async_signal_handler): Remove unneeded cast.
(invoke_async_signal_handler): Rename to ...
(invoke_async_signal_handlres): ... this. Return true if any was
handled.
(check_async_ready): Delete
(create_async_event_handler): New.
(mark_async_event_handler): New.
(struct async_event_handler_data): New.
(invoke_async_event_handler): New.
(check_async_event_handlers): New.
(delete_async_event_handler): New.
(handle_timer_event): Adjust.
Hui Zhu [Fri, 24 Oct 2008 02:31:41 +0000 (02:31 +0000)]
2008-10-24 Hui Zhu <teawater@gmail.com>
Pedro Alves <pedro@codesourcery.com>
* infrun.c (can_use_displaced_stepping): Change type to
const char pointer.
(can_use_displaced_stepping_auto): New string.
(can_use_displaced_stepping_on): New string.
(can_use_displaced_stepping_off): New string.
(can_use_displaced_stepping_enum): New array.
(show_can_use_displaced_stepping): In auto mode, also show
the current effect of the option.
(use_displaced_stepping): Return non-zero if displaced
stepping is auto, and can be used with GDBARCH, and in
non-stop mode. Return non-zero if displaced stepping is on,
and can be used with GDBARCH. Return zero otherwise.
(_initialize_infrun): Make the "set displaced-stepping"
command an enum command. Change its class to class_run.
Place it in the top level set list. Extend help to describe
the auto mode.
2008-10-24 Hui Zhu <teawater@gmail.com>
Pedro Alves <pedro@codesourcery.com>
* gdb.texinfo (displaced-stepping): Describe the auto mode
setting, and say it's the default. This is now a mainstream
setting instead of a maintenance setting.
Pedro Alves [Thu, 23 Oct 2008 23:11:21 +0000 (23:11 +0000)]
gdb/
2008-10-23 Pedro Alves <pedro@codesourcery.com>
* defs.h: Mention ptid_is_pid.
* inferior.h (ptid_is_pid): Declare.
* gdbthread.h (struct thread_info) <stop_requested>: New field.
(set_stop_requested): Declare.
* infcmd.c (interrupt_target_1): Call set_stop_requested.
* infrun.c (clear_proceed_status): Clear stop_requested.
(infrun_thread_stop_requested_callback,
infrun_thread_stop_requested): New.
(handle_inferior_event): If a TARGET_SIGNAL_TRAP is reported on a
thread that had an explicit stop request, pretend we got a
TARGET_SIGNAL_0. Always stop if the thread had an explicit stop
request.
(print_stop_reason): In the SIGNAL_RECEIVED case, if we're not
outputting to MI, and we got a TARGET_SIGNAL_0, print "# Stopped",
instead of mentioning signal 0.
(ptid_is_pid): New.
* thread.c (set_stop_requested): New.
* linux-nat.c (queued_waitpid): Rename to ...
(queued_waitpid_1): ... this. Add `peek' argument. Handle it.
(queued_waitpid): New, as wrapper to queued_waitpid_1.
(push_waitpid): Push the SIGTRAP to the local event queue, to the
kernel's.
(send_sigint_callback): Delete.
(linux_nat_stop_lwp): New.
(linux_nat_stop): Use it.
gdb/doc/
2008-10-23 Pedro Alves <pedro@codesourcery.com>
* observer.texi (thread_stop_requested): New.
gdb/testsuite/
2008-10-23 Pedro Alves <pedro@codesourcery.com>
* lib/mi-support.exp (mi_expect_interrupt): Expect signal 0
instead of SIGINT.
Jan Kratochvil [Thu, 23 Oct 2008 15:42:19 +0000 (15:42 +0000)]
* ada-tasks.c (task_states, long_task_states): Use constant N_()
initializer. Define the strings as const.
(short_task_info, info_task): Translate the strings above.
Joel Brobecker [Wed, 22 Oct 2008 20:22:01 +0000 (20:22 +0000)]
* configure.ac: On alpha-osf, error out if enable_tui is set to
"yes", and set enable_tui to "no" if previously set to "auto".
Check for waddstr only if TUI support was requested. Move the
part of the configure script that updates various Makefile
variables up, together with the check for waddstr.
* configure: Regenerate.
Joel Brobecker [Wed, 22 Oct 2008 20:11:56 +0000 (20:11 +0000)]
* gdbtypes.c (copy_type): New function.
* gdbtypes.h (copy_type): Add declaration.
* ada-lang.c (ada_to_fixed_type_1): If there is a parallel XVZ
variable, then use it.
Tom Tromey [Wed, 22 Oct 2008 16:38:09 +0000 (16:38 +0000)]
gdb
PR gdb/2506:
* c-exp.y (string_exp): New production.
(exp): Use it.
gdb/testsuite
* gdb.base/exprs.exp (test_expr): Add test for string
concatenation.
Nick Clifton [Wed, 22 Oct 2008 14:23:44 +0000 (14:23 +0000)]
* emultempl/armelf.em (arm_elf_after_open): Move check for using a
non-arm output target from here...
(arm_elf_create_output_section_statements): ... to here, so that
the check is made at the earliest possible opportunity.
Michael Snyder [Fri, 17 Oct 2008 19:43:47 +0000 (19:43 +0000)]
2008-10-17 Michael Snyder <msnyder@vmware.com>
Target interface for reverse debugging.
* target.h (enum target_waitkind):
Add new wait event, TARGET_WAITKIND_NO_HISTORY.
(struct target_ops): New method to_can_execute_reverse.
(target_can_execute_reverse): New macro.
* target.c (update_current_target): Inherit to_can_execute_reverse.
Remote interface for reverse debugging.
* remote.c (remote_can_execute_reverse): New target method.
(remote_resume): Check for reverse exec direction, and send
appropriate command to target.
(remote_wait_as): Check target response for NO_HISTORY status.
Also check for empty reply (target doesn't understand "bs" or "bc).
(remote_vcont_resume): Jump out if attempting reverse execution.
Event handling interface for reverse debugging.
* infrun.c (execution_direction): New state variable.
(enum inferior_stop_reason): Add NO_HISTORY reason.
(handle_inferior_event): Handle TARGET_WAITKIND_NO_HISTORY.
Handle stepping over a function call in reverse.
Handle stepping thru a line range in reverse.
Handle setting a step-resume breakpoint in reverse.
Handle stepping into a function in reverse.
Handle stepping between line ranges in reverse.
(print_stop_reason): Print reason for NO_HISTORY.
(step_into_function): Rename to handle_step_into_function.
(handle_step_into_function_backward): New function.
(set_exec_direction_func, show_exec_direction_func): New funcs.
(proceed): No need to singlestep over a breakpoint
when resuming in reverse.
* inferior.h (enum exec_direction_kind): New enum.
(execution_direction): Export new execution state variable.
* breakpoint.c (make_breakpoint_silent): New function.
* breakpoint.h (make_breakpoint_silent): Export.
* infcmd.c (finish_command): Check for reverse exec direction.
(finish_backward): New function, handle finish cmd in reverse.
User interface for reverse execution.
* Makefile.in (reverse.c): New file.
* reverse.c: New file. User interface for reverse execution.
Joel Brobecker [Thu, 16 Oct 2008 16:25:04 +0000 (16:25 +0000)]
* breakpoint.h (enum bptype): New enum bp_catchpoint.
Delete bp_catch_fork and bp_catch_vfork.
(struct breakpoint_ops): Add new methods "insert", "remove"
and "breakpoint_hit".
* breakpoint.c (create_fork_vfork_event_catchpoint)
(create_fork_event_catchpoint, create_vfork_event_catchpoint): Remove.
(insert_catchpoint): Remove handling of bp_catch_fork and
bp_catch_vfork catchpoints, and handle them as bp_catchpoint
catchpoints instead.
(insert_bp_location, update_breakpoints_after_exec)
(remove_breakpoint, bpstat_check_location, bpstat_what)
(allocate_bp_location): Likewise.
(print_it_typical, print_one_breakpoint_location, mention): Remove
handling of bp_catch_fork and bp_catch_vfork breakpoints.
(ep_is_catchpoint, user_settable_breakpoint)
(breakpoint_address_is_meaningful, adjust_breakpoint_address)
(breakpoint_re_set_one, disable_command, enable_command):
Remove use of bp_catch_fork and bp_catch_vfork. Add handling of
bp_catchpoint breakpoints.
(insert_catch_fork, remove_catch_fork, breakpoint_hit_catch_fork)
(print_it_catch_fork, print_one_catch_fork, print_mention_catch_fork):
New functions.
(catch_fork_breakpoint_ops): New static constant.
(insert_catch_vfork, remove_catch_vfork, breakpoint_hit_catch_vfork)
(print_it_catch_vfork, print_one_catch_vfork)
(print_mention_catch_vfork): New functions.
(catch_vfork_breakpoint_ops): New static constant.
(create_catchpoint, create_fork_vfork_event_catchpoint): New functions.
(catch_fork_command_1): Use create_fork_vfork_event_catchpoint
to create the fork and vfork catchpoints.
(gnu_v3_exception_catchpoint_ops): Set new breakpoint_ops fields.
* ada-lang.c (catch_exception_breakpoint_ops): Set new breakpoint_ops
fields.
(catch_exception_unhandled_breakpoint_ops): Likewise.
(catch_assert_breakpoint_ops): Likewise.
Pedro Alves [Wed, 15 Oct 2008 21:39:53 +0000 (21:39 +0000)]
* remote.c (remote_close): Unregister remote_desc from the event
loop. Always restore the SIGINT handler. Discard all inferiors
here.
(remote_detach_1, remote_disconnect): Don't unregister the file
descriptor from the event loop here.
(interrupt_query, readchar, getpkt_sane): Pop the target instead
of morning the current inferior.
(remote_kill): Don't unregister the file descriptor from the event
loop here.
(remote_mourn_1): Don't discard inferiors here.
Pedro Alves [Wed, 15 Oct 2008 19:15:34 +0000 (19:15 +0000)]
gdb/
* breakpoint.c (breakpoint_init_inferior): Clean up the moribund
locations list.
(moribund_breakpoint_here_p): Record the moribund
location in the moribund_locations vector.
* breakpoint.h (moribund_breakpoint_here_p): Declare.
(displaced_step_fixup): Check if the breakpoint the thread was
trying to step over has been removed since having been placed in
the displaced stepping queue.
(adjust_pc_after_break): In non-stop mode, check for a moribund
breakpoint at the stop pc.
(handle_inferior_event): Don't retire moribund breakpoints on
TARGET_WAITKIND_IGNORE.
gdb/testsuite/
* gdb.mi/mi-nsmoribund.exp, gdb.mi/nsmoribund.c: New test.
Pedro Alves [Tue, 14 Oct 2008 23:39:29 +0000 (23:39 +0000)]
* infrun.c (displaced_step_prepare): Switch thread temporarily
while we're here.
(displaced_step_fixup): Make sure target_resume sees ptid as
inferior_ptid. Add debug output.
H.J. Lu [Sun, 12 Oct 2008 12:37:09 +0000 (12:37 +0000)]
gas/
2008-10-12 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (processor_type): Moved to tc-i386.h.
(cpu_arch_tune): Make it global.
(cpu_arch_isa): Likewise.
(cpu_arch_isa_flags): Likewise.
(i386_align_code): Check fragP->tc_frag_data.isa,
fragP->tc_frag_data.isa_flags and cpu_arch_tune instead of
cpu_arch_isa, cpu_arch_isa_flags and cpu_arch_tune,
respectively.
* config/tc-i386.h (processor_type): Moved from tc-i386.c.
(cpu_arch_tune): New.
(cpu_arch_isa): Likewise.
(cpu_arch_isa_flags): Likewise.
(i386_tc_frag_data): Likewise.
(TC_FRAG_TYPE): Likewise.
(TC_FRAG_INIT): Likewise.
gas/testsuite/
2008-10-12 H.J. Lu <hongjiu.lu@intel.com>
* gas/i386/i386.exp: Run nops-5, nops-5-i686, x86-64-nops-5 and
x86-64-nops-5-k8.