infrun.c:handle_inferior_event: Make process_event_stop_test label a function.
Now that all ecs->random_signal handing is always done before the 'process_event_stop_test' label, we can easily make that a real function and actually give it a describing comment that somewhat makes sense. Reindenting the new function will be handled in a follow up patch. 2013-10-28 Pedro Alves <palves@redhat.com> * infrun.c (process_event_stop_test): New function, factored out from handle_inferior_event. (handle_inferior_event): 'process_event_stop_test' is now a function instead of a goto label -- adjust.
This commit is contained in:
parent
fcf3daefe6
commit
94c57d6a62
@ -1,3 +1,10 @@
|
|||||||
|
2013-10-28 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
* infrun.c (process_event_stop_test): New function, factored out
|
||||||
|
from handle_inferior_event.
|
||||||
|
(handle_inferior_event): 'process_event_stop_test' is now a
|
||||||
|
function instead of a goto label -- adjust.
|
||||||
|
|
||||||
2013-10-28 Pedro Alves <palves@redhat.com>
|
2013-10-28 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
* infrun.c (handle_inferior_event): Move process_event_stop_test
|
* infrun.c (handle_inferior_event): Move process_event_stop_test
|
||||||
|
41
gdb/infrun.c
41
gdb/infrun.c
@ -2439,6 +2439,7 @@ static void check_exception_resume (struct execution_control_state *,
|
|||||||
static void stop_stepping (struct execution_control_state *ecs);
|
static void stop_stepping (struct execution_control_state *ecs);
|
||||||
static void prepare_to_wait (struct execution_control_state *ecs);
|
static void prepare_to_wait (struct execution_control_state *ecs);
|
||||||
static void keep_going (struct execution_control_state *ecs);
|
static void keep_going (struct execution_control_state *ecs);
|
||||||
|
static void process_event_stop_test (struct execution_control_state *ecs);
|
||||||
static int switch_back_to_stepped_thread (struct execution_control_state *ecs);
|
static int switch_back_to_stepped_thread (struct execution_control_state *ecs);
|
||||||
|
|
||||||
/* Callback for iterate over threads. If the thread is stopped, but
|
/* Callback for iterate over threads. If the thread is stopped, but
|
||||||
@ -3151,7 +3152,6 @@ handle_inferior_event (struct execution_control_state *ecs)
|
|||||||
struct gdbarch *gdbarch;
|
struct gdbarch *gdbarch;
|
||||||
int stopped_by_watchpoint;
|
int stopped_by_watchpoint;
|
||||||
int stepped_after_stopped_by_watchpoint = 0;
|
int stepped_after_stopped_by_watchpoint = 0;
|
||||||
struct symtab_and_line stop_pc_sal;
|
|
||||||
enum stop_kind stop_soon;
|
enum stop_kind stop_soon;
|
||||||
|
|
||||||
if (ecs->ws.kind == TARGET_WAITKIND_IGNORE)
|
if (ecs->ws.kind == TARGET_WAITKIND_IGNORE)
|
||||||
@ -3351,7 +3351,8 @@ handle_inferior_event (struct execution_control_state *ecs)
|
|||||||
{
|
{
|
||||||
/* A catchpoint triggered. */
|
/* A catchpoint triggered. */
|
||||||
ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_TRAP;
|
ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_TRAP;
|
||||||
goto process_event_stop_test;
|
process_event_stop_test (ecs);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If requested, stop when the dynamic linker notifies
|
/* If requested, stop when the dynamic linker notifies
|
||||||
@ -3629,7 +3630,8 @@ Cannot fill $_exitsignal with the correct signal number.\n"));
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_TRAP;
|
ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_TRAP;
|
||||||
goto process_event_stop_test;
|
process_event_stop_test (ecs);
|
||||||
|
return;
|
||||||
|
|
||||||
case TARGET_WAITKIND_VFORK_DONE:
|
case TARGET_WAITKIND_VFORK_DONE:
|
||||||
/* Done with the shared memory region. Re-insert breakpoints in
|
/* Done with the shared memory region. Re-insert breakpoints in
|
||||||
@ -3690,7 +3692,8 @@ Cannot fill $_exitsignal with the correct signal number.\n"));
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_TRAP;
|
ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_TRAP;
|
||||||
goto process_event_stop_test;
|
process_event_stop_test (ecs);
|
||||||
|
return;
|
||||||
|
|
||||||
/* Be careful not to try to gather much state about a thread
|
/* Be careful not to try to gather much state about a thread
|
||||||
that's in a syscall. It's frequently a losing proposition. */
|
that's in a syscall. It's frequently a losing proposition. */
|
||||||
@ -3699,9 +3702,9 @@ Cannot fill $_exitsignal with the correct signal number.\n"));
|
|||||||
fprintf_unfiltered (gdb_stdlog,
|
fprintf_unfiltered (gdb_stdlog,
|
||||||
"infrun: TARGET_WAITKIND_SYSCALL_ENTRY\n");
|
"infrun: TARGET_WAITKIND_SYSCALL_ENTRY\n");
|
||||||
/* Getting the current syscall number. */
|
/* Getting the current syscall number. */
|
||||||
if (handle_syscall_event (ecs) != 0)
|
if (handle_syscall_event (ecs) == 0)
|
||||||
|
process_event_stop_test (ecs);
|
||||||
return;
|
return;
|
||||||
goto process_event_stop_test;
|
|
||||||
|
|
||||||
/* Before examining the threads further, step this thread to
|
/* Before examining the threads further, step this thread to
|
||||||
get it entirely out of the syscall. (We get notice of the
|
get it entirely out of the syscall. (We get notice of the
|
||||||
@ -3712,9 +3715,9 @@ Cannot fill $_exitsignal with the correct signal number.\n"));
|
|||||||
if (debug_infrun)
|
if (debug_infrun)
|
||||||
fprintf_unfiltered (gdb_stdlog,
|
fprintf_unfiltered (gdb_stdlog,
|
||||||
"infrun: TARGET_WAITKIND_SYSCALL_RETURN\n");
|
"infrun: TARGET_WAITKIND_SYSCALL_RETURN\n");
|
||||||
if (handle_syscall_event (ecs) != 0)
|
if (handle_syscall_event (ecs) == 0)
|
||||||
|
process_event_stop_test (ecs);
|
||||||
return;
|
return;
|
||||||
goto process_event_stop_test;
|
|
||||||
|
|
||||||
case TARGET_WAITKIND_STOPPED:
|
case TARGET_WAITKIND_STOPPED:
|
||||||
if (debug_infrun)
|
if (debug_infrun)
|
||||||
@ -4403,17 +4406,29 @@ Cannot fill $_exitsignal with the correct signal number.\n"));
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
process_event_stop_test (ecs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Come here when we've got some debug event / signal we can explain
|
||||||
|
(IOW, not a random signal), and test whether it should cause a
|
||||||
|
stop, or whether we should resume the inferior (transparently).
|
||||||
|
E.g., could be a breakpoint whose condition evaluates false; we
|
||||||
|
could be still stepping within the line; etc. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
process_event_stop_test (struct execution_control_state *ecs)
|
||||||
|
{
|
||||||
|
struct symtab_and_line stop_pc_sal;
|
||||||
|
struct frame_info *frame;
|
||||||
|
struct gdbarch *gdbarch;
|
||||||
|
|
||||||
{
|
{
|
||||||
/* Handle cases caused by hitting a breakpoint. */
|
/* Handle cases caused by hitting a breakpoint. */
|
||||||
|
|
||||||
CORE_ADDR jmp_buf_pc;
|
CORE_ADDR jmp_buf_pc;
|
||||||
struct bpstat_what what;
|
struct bpstat_what what;
|
||||||
|
|
||||||
process_event_stop_test:
|
|
||||||
|
|
||||||
/* Re-fetch current thread's frame in case we did a
|
|
||||||
"goto process_event_stop_test" above. */
|
|
||||||
frame = get_current_frame ();
|
frame = get_current_frame ();
|
||||||
gdbarch = get_frame_arch (frame);
|
gdbarch = get_frame_arch (frame);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user