gdb: rename things related to step over chains
Rename step_over_queue_head to global_thread_step_over_chain_head, to make it more obvious when reading code that we are touching the global queue. Rename all functions that operate on it to have "global" in their name, to make it clear on which chain they operate on. Also, in a subsequent patch, we'll need both global and non-global versions of these functions, so it will be easier to do the distinction if they are named properly. Normalize the naming to use "chain" everywhere instead of sometimes "queue", sometimes "chain". I also reworded a few comments in gdbthread.h. They implied that the step over chain is per-inferior, when in reality there is only one global chain, not one per inferior, as far as I understand. gdb/ChangeLog: * gdbthread.h (thread_step_over_chain_enqueue): Rename to... (global_thread_step_over_chain_enqueue): ... this. Update all users. (thread_step_over_chain_remove): Rename to... (global_thread_step_over_chain_remove): ... this. Update all users. (thread_step_over_chain_next): Rename to... (global_thread_step_over_chain_next): ... this. Update all users. * infrun.h (step_over_queue_head): Rename to... (global_thread_step_over_chain_head): ... this. Update all users. * infrun.c (step_over_queue_head): Rename to... (global_thread_step_over_chain_head): ... this. Update all users. * thread.c (step_over_chain_remove): Rename to... (thread_step_over_chain_remove): ... this. Update all users. (thread_step_over_chain_next): Rename to... (global_thread_step_over_chain_next): ... this. Update all users. (thread_step_over_chain_enqueue): Rename to... (global_thread_step_over_chain_enqueue): ... this. Update all users. (thread_step_over_chain_remove): Rename to... (global_thread_step_over_chain_remove): ... this. Update all users. Change-Id: Iabbf57d83c01321ca199d83fadb57f5b04e4d6d9
This commit is contained in:
parent
f5f0169964
commit
28d5518b12
5 changed files with 62 additions and 33 deletions
|
@ -1,3 +1,32 @@
|
||||||
|
2020-12-04 Simon Marchi <simon.marchi@efficios.com>
|
||||||
|
|
||||||
|
* gdbthread.h (thread_step_over_chain_enqueue): Rename to...
|
||||||
|
(global_thread_step_over_chain_enqueue): ... this. Update all
|
||||||
|
users.
|
||||||
|
(thread_step_over_chain_remove): Rename to...
|
||||||
|
(global_thread_step_over_chain_remove): ... this. Update all
|
||||||
|
users.
|
||||||
|
(thread_step_over_chain_next): Rename to...
|
||||||
|
(global_thread_step_over_chain_next): ... this. Update all
|
||||||
|
users.
|
||||||
|
* infrun.h (step_over_queue_head): Rename to...
|
||||||
|
(global_thread_step_over_chain_head): ... this. Update all
|
||||||
|
users.
|
||||||
|
* infrun.c (step_over_queue_head): Rename to...
|
||||||
|
(global_thread_step_over_chain_head): ... this. Update all
|
||||||
|
users.
|
||||||
|
* thread.c (step_over_chain_remove): Rename to...
|
||||||
|
(thread_step_over_chain_remove): ... this. Update all users.
|
||||||
|
(thread_step_over_chain_next): Rename to...
|
||||||
|
(global_thread_step_over_chain_next): ... this. Update all
|
||||||
|
users.
|
||||||
|
(thread_step_over_chain_enqueue): Rename to...
|
||||||
|
(global_thread_step_over_chain_enqueue): ... this. Update all
|
||||||
|
users.
|
||||||
|
(thread_step_over_chain_remove): Rename to...
|
||||||
|
(global_thread_step_over_chain_remove): ... this. Update all
|
||||||
|
users.
|
||||||
|
|
||||||
2020-12-04 Simon Marchi <simon.marchi@polymtl.ca>
|
2020-12-04 Simon Marchi <simon.marchi@polymtl.ca>
|
||||||
|
|
||||||
* infrun.c (get_displaced_stepping_state): Remove, change
|
* infrun.c (get_displaced_stepping_state): Remove, change
|
||||||
|
|
|
@ -741,20 +741,20 @@ extern value *get_last_thread_stack_temporary (struct thread_info *tp);
|
||||||
extern bool value_in_thread_stack_temporaries (struct value *,
|
extern bool value_in_thread_stack_temporaries (struct value *,
|
||||||
struct thread_info *thr);
|
struct thread_info *thr);
|
||||||
|
|
||||||
/* Add TP to the end of its inferior's pending step-over chain. */
|
/* Add TP to the end of the global pending step-over chain. */
|
||||||
|
|
||||||
extern void thread_step_over_chain_enqueue (struct thread_info *tp);
|
extern void global_thread_step_over_chain_enqueue (thread_info *tp);
|
||||||
|
|
||||||
/* Remove TP from its inferior's pending step-over chain. */
|
/* Remove TP from the global pending step-over chain. */
|
||||||
|
|
||||||
extern void thread_step_over_chain_remove (struct thread_info *tp);
|
extern void global_thread_step_over_chain_remove (thread_info *tp);
|
||||||
|
|
||||||
/* Return the next thread in the step-over chain starting at TP. NULL
|
/* Return the thread following TP in the global step-over chain, or NULL if TP
|
||||||
if TP is the last entry in the chain. */
|
is the last entry in the chain. */
|
||||||
|
|
||||||
extern struct thread_info *thread_step_over_chain_next (struct thread_info *tp);
|
extern thread_info *global_thread_step_over_chain_next (thread_info *tp);
|
||||||
|
|
||||||
/* Return true if TP is in the step-over chain. */
|
/* Return true if TP is in any step-over chain. */
|
||||||
|
|
||||||
extern int thread_is_in_step_over_chain (struct thread_info *tp);
|
extern int thread_is_in_step_over_chain (struct thread_info *tp);
|
||||||
|
|
||||||
|
|
26
gdb/infrun.c
26
gdb/infrun.c
|
@ -1237,14 +1237,14 @@ follow_exec (ptid_t ptid, const char *exec_file_target)
|
||||||
matically get reset there in the new process.). */
|
matically get reset there in the new process.). */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The queue of threads that need to do a step-over operation to get
|
/* The chain of threads that need to do a step-over operation to get
|
||||||
past e.g., a breakpoint. What technique is used to step over the
|
past e.g., a breakpoint. What technique is used to step over the
|
||||||
breakpoint/watchpoint does not matter -- all threads end up in the
|
breakpoint/watchpoint does not matter -- all threads end up in the
|
||||||
same queue, to maintain rough temporal order of execution, in order
|
same queue, to maintain rough temporal order of execution, in order
|
||||||
to avoid starvation, otherwise, we could e.g., find ourselves
|
to avoid starvation, otherwise, we could e.g., find ourselves
|
||||||
constantly stepping the same couple threads past their breakpoints
|
constantly stepping the same couple threads past their breakpoints
|
||||||
over and over, if the single-step finish fast enough. */
|
over and over, if the single-step finish fast enough. */
|
||||||
struct thread_info *step_over_queue_head;
|
struct thread_info *global_thread_step_over_chain_head;
|
||||||
|
|
||||||
/* Bit flags indicating what the thread needs to step over. */
|
/* Bit flags indicating what the thread needs to step over. */
|
||||||
|
|
||||||
|
@ -1689,7 +1689,7 @@ displaced_step_prepare_throw (thread_info *tp)
|
||||||
displaced_debug_printf ("deferring step of %s",
|
displaced_debug_printf ("deferring step of %s",
|
||||||
target_pid_to_str (tp->ptid).c_str ());
|
target_pid_to_str (tp->ptid).c_str ());
|
||||||
|
|
||||||
thread_step_over_chain_enqueue (tp);
|
global_thread_step_over_chain_enqueue (tp);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1940,7 +1940,7 @@ start_step_over (void)
|
||||||
if (step_over_info_valid_p ())
|
if (step_over_info_valid_p ())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (tp = step_over_queue_head; tp != NULL; tp = next)
|
for (tp = global_thread_step_over_chain_head; tp != NULL; tp = next)
|
||||||
{
|
{
|
||||||
struct execution_control_state ecss;
|
struct execution_control_state ecss;
|
||||||
struct execution_control_state *ecs = &ecss;
|
struct execution_control_state *ecs = &ecss;
|
||||||
|
@ -1949,7 +1949,7 @@ start_step_over (void)
|
||||||
|
|
||||||
gdb_assert (!tp->stop_requested);
|
gdb_assert (!tp->stop_requested);
|
||||||
|
|
||||||
next = thread_step_over_chain_next (tp);
|
next = global_thread_step_over_chain_next (tp);
|
||||||
|
|
||||||
/* If this inferior already has a displaced step in process,
|
/* If this inferior already has a displaced step in process,
|
||||||
don't start a new one. */
|
don't start a new one. */
|
||||||
|
@ -1967,9 +1967,9 @@ start_step_over (void)
|
||||||
if (must_be_in_line && displaced_step_in_progress_any_inferior ())
|
if (must_be_in_line && displaced_step_in_progress_any_inferior ())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
thread_step_over_chain_remove (tp);
|
global_thread_step_over_chain_remove (tp);
|
||||||
|
|
||||||
if (step_over_queue_head == NULL)
|
if (global_thread_step_over_chain_head == NULL)
|
||||||
infrun_debug_printf ("step-over queue now empty");
|
infrun_debug_printf ("step-over queue now empty");
|
||||||
|
|
||||||
if (tp->control.trap_expected
|
if (tp->control.trap_expected
|
||||||
|
@ -3026,7 +3026,7 @@ proceed (CORE_ADDR addr, enum gdb_signal siggnal)
|
||||||
infrun_debug_printf ("need to step-over [%s] first",
|
infrun_debug_printf ("need to step-over [%s] first",
|
||||||
target_pid_to_str (tp->ptid).c_str ());
|
target_pid_to_str (tp->ptid).c_str ());
|
||||||
|
|
||||||
thread_step_over_chain_enqueue (tp);
|
global_thread_step_over_chain_enqueue (tp);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_to_thread (cur_thr);
|
switch_to_thread (cur_thr);
|
||||||
|
@ -3035,7 +3035,7 @@ proceed (CORE_ADDR addr, enum gdb_signal siggnal)
|
||||||
/* Enqueue the current thread last, so that we move all other
|
/* Enqueue the current thread last, so that we move all other
|
||||||
threads over their breakpoints first. */
|
threads over their breakpoints first. */
|
||||||
if (cur_thr->stepping_over_breakpoint)
|
if (cur_thr->stepping_over_breakpoint)
|
||||||
thread_step_over_chain_enqueue (cur_thr);
|
global_thread_step_over_chain_enqueue (cur_thr);
|
||||||
|
|
||||||
/* If the thread isn't started, we'll still need to set its prev_pc,
|
/* If the thread isn't started, we'll still need to set its prev_pc,
|
||||||
so that switch_back_to_stepped_thread knows the thread hasn't
|
so that switch_back_to_stepped_thread knows the thread hasn't
|
||||||
|
@ -3219,7 +3219,7 @@ infrun_thread_stop_requested (ptid_t ptid)
|
||||||
start_step_over doesn't try to resume them
|
start_step_over doesn't try to resume them
|
||||||
automatically. */
|
automatically. */
|
||||||
if (thread_is_in_step_over_chain (tp))
|
if (thread_is_in_step_over_chain (tp))
|
||||||
thread_step_over_chain_remove (tp);
|
global_thread_step_over_chain_remove (tp);
|
||||||
|
|
||||||
/* If the thread is stopped, but the user/frontend doesn't
|
/* If the thread is stopped, but the user/frontend doesn't
|
||||||
know about that yet, queue a pending event, as if the
|
know about that yet, queue a pending event, as if the
|
||||||
|
@ -4823,7 +4823,7 @@ stop_all_threads (void)
|
||||||
target_pid_to_str (t->ptid).c_str ());
|
target_pid_to_str (t->ptid).c_str ());
|
||||||
|
|
||||||
t->control.trap_expected = 0;
|
t->control.trap_expected = 0;
|
||||||
thread_step_over_chain_enqueue (t);
|
global_thread_step_over_chain_enqueue (t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -4846,7 +4846,7 @@ stop_all_threads (void)
|
||||||
{
|
{
|
||||||
/* Add it back to the step-over queue. */
|
/* Add it back to the step-over queue. */
|
||||||
t->control.trap_expected = 0;
|
t->control.trap_expected = 0;
|
||||||
thread_step_over_chain_enqueue (t);
|
global_thread_step_over_chain_enqueue (t);
|
||||||
}
|
}
|
||||||
|
|
||||||
regcache = get_thread_regcache (t);
|
regcache = get_thread_regcache (t);
|
||||||
|
@ -7776,7 +7776,7 @@ keep_going_pass_signal (struct execution_control_state *ecs)
|
||||||
infrun_debug_printf ("step-over already in progress: "
|
infrun_debug_printf ("step-over already in progress: "
|
||||||
"step-over for %s deferred",
|
"step-over for %s deferred",
|
||||||
target_pid_to_str (tp->ptid).c_str ());
|
target_pid_to_str (tp->ptid).c_str ());
|
||||||
thread_step_over_chain_enqueue (tp);
|
global_thread_step_over_chain_enqueue (tp);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -262,9 +262,9 @@ extern void infrun_async (int enable);
|
||||||
loop. */
|
loop. */
|
||||||
extern void mark_infrun_async_event_handler (void);
|
extern void mark_infrun_async_event_handler (void);
|
||||||
|
|
||||||
/* The global queue of threads that need to do a step-over operation
|
/* The global chain of threads that need to do a step-over operation
|
||||||
to get past e.g., a breakpoint. */
|
to get past e.g., a breakpoint. */
|
||||||
extern struct thread_info *step_over_queue_head;
|
extern struct thread_info *global_thread_step_over_chain_head;
|
||||||
|
|
||||||
/* Remove breakpoints if possible (usually that means, if everything
|
/* Remove breakpoints if possible (usually that means, if everything
|
||||||
is stopped). On failure, print a message. */
|
is stopped). On failure, print a message. */
|
||||||
|
|
20
gdb/thread.c
20
gdb/thread.c
|
@ -205,9 +205,9 @@ clear_thread_inferior_resources (struct thread_info *tp)
|
||||||
static void
|
static void
|
||||||
set_thread_exited (thread_info *tp, bool silent)
|
set_thread_exited (thread_info *tp, bool silent)
|
||||||
{
|
{
|
||||||
/* Dead threads don't need to step-over. Remove from queue. */
|
/* Dead threads don't need to step-over. Remove from chain. */
|
||||||
if (tp->step_over_next != NULL)
|
if (tp->step_over_next != NULL)
|
||||||
thread_step_over_chain_remove (tp);
|
global_thread_step_over_chain_remove (tp);
|
||||||
|
|
||||||
if (tp->state != THREAD_EXITED)
|
if (tp->state != THREAD_EXITED)
|
||||||
{
|
{
|
||||||
|
@ -365,7 +365,7 @@ step_over_chain_enqueue (struct thread_info **list_p, struct thread_info *tp)
|
||||||
/* Remove TP from step-over chain LIST_P. */
|
/* Remove TP from step-over chain LIST_P. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
step_over_chain_remove (struct thread_info **list_p, struct thread_info *tp)
|
thread_step_over_chain_remove (struct thread_info **list_p, struct thread_info *tp)
|
||||||
{
|
{
|
||||||
gdb_assert (tp->step_over_next != NULL);
|
gdb_assert (tp->step_over_next != NULL);
|
||||||
gdb_assert (tp->step_over_prev != NULL);
|
gdb_assert (tp->step_over_prev != NULL);
|
||||||
|
@ -386,11 +386,11 @@ step_over_chain_remove (struct thread_info **list_p, struct thread_info *tp)
|
||||||
/* See gdbthread.h. */
|
/* See gdbthread.h. */
|
||||||
|
|
||||||
struct thread_info *
|
struct thread_info *
|
||||||
thread_step_over_chain_next (struct thread_info *tp)
|
global_thread_step_over_chain_next (struct thread_info *tp)
|
||||||
{
|
{
|
||||||
struct thread_info *next = tp->step_over_next;
|
struct thread_info *next = tp->step_over_next;
|
||||||
|
|
||||||
return (next == step_over_queue_head ? NULL : next);
|
return (next == global_thread_step_over_chain_head ? NULL : next);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See gdbthread.h. */
|
/* See gdbthread.h. */
|
||||||
|
@ -404,17 +404,17 @@ thread_is_in_step_over_chain (struct thread_info *tp)
|
||||||
/* See gdbthread.h. */
|
/* See gdbthread.h. */
|
||||||
|
|
||||||
void
|
void
|
||||||
thread_step_over_chain_enqueue (struct thread_info *tp)
|
global_thread_step_over_chain_enqueue (struct thread_info *tp)
|
||||||
{
|
{
|
||||||
step_over_chain_enqueue (&step_over_queue_head, tp);
|
step_over_chain_enqueue (&global_thread_step_over_chain_head, tp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See gdbthread.h. */
|
/* See gdbthread.h. */
|
||||||
|
|
||||||
void
|
void
|
||||||
thread_step_over_chain_remove (struct thread_info *tp)
|
global_thread_step_over_chain_remove (struct thread_info *tp)
|
||||||
{
|
{
|
||||||
step_over_chain_remove (&step_over_queue_head, tp);
|
thread_step_over_chain_remove (&global_thread_step_over_chain_head, tp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Delete the thread referenced by THR. If SILENT, don't notify
|
/* Delete the thread referenced by THR. If SILENT, don't notify
|
||||||
|
@ -805,7 +805,7 @@ set_running_thread (struct thread_info *tp, bool running)
|
||||||
the step-over queue, so that we don't try to resume
|
the step-over queue, so that we don't try to resume
|
||||||
it until the user wants it to. */
|
it until the user wants it to. */
|
||||||
if (tp->step_over_next != NULL)
|
if (tp->step_over_next != NULL)
|
||||||
thread_step_over_chain_remove (tp);
|
global_thread_step_over_chain_remove (tp);
|
||||||
}
|
}
|
||||||
|
|
||||||
return started;
|
return started;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue