gdbserver: turn target ops 'pause_all' and 'unpause_all' into methods
gdbserver/ChangeLog: 2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> Turn process_stratum_target's pause_all and unpause_all ops into methods of process_target. * target.h (struct process_stratum_target): Remove the target ops. (class process_target): Add the target ops. (pause_all): Update the macro and rename to... (target_pause_all): ... this. (unpause_all): Update the macro and rename to... (target_unpause_all): ... this. * target.cc (process_target::pause_all): Define. (process_target::unpause_all): Define. Update the derived classes and callers below. * server.cc (handle_status): Update. * tracepoint.cc (clear_installed_tracepoints): Update. (cmd_qtdp): Update. (cmd_qtstart): Update. (stop_tracing): Update. (cmd_qtstatus): Update. (upload_fast_traceframes): Update. (run_inferior_command): Update. * linux-low.cc (linux_target_ops): Update. (linux_pause_all): Turn into ... (linux_process_target::pause_all): ... this. (linux_unpause_all): Turn into ... (linux_process_target::unpause_all): ... this. (linux_process_target::prepare_to_access_memory): Update. (linux_process_target::done_accessing_memory): Update. * linux-low.h (class linux_process_target): Update. * lynx-low.cc (lynx_target_ops): Update. * nto-low.cc (nto_target_ops): Update. * win32-low.cc (win32_target_ops): Update.
This commit is contained in:
parent
4e2e869cb3
commit
29e8dc09ff
|
@ -1,3 +1,39 @@
|
|||
2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
|
||||
|
||||
Turn process_stratum_target's pause_all and unpause_all ops
|
||||
into methods of process_target.
|
||||
|
||||
* target.h (struct process_stratum_target): Remove the target ops.
|
||||
(class process_target): Add the target ops.
|
||||
(pause_all): Update the macro and rename to...
|
||||
(target_pause_all): ... this.
|
||||
(unpause_all): Update the macro and rename to...
|
||||
(target_unpause_all): ... this.
|
||||
* target.cc (process_target::pause_all): Define.
|
||||
(process_target::unpause_all): Define.
|
||||
|
||||
Update the derived classes and callers below.
|
||||
|
||||
* server.cc (handle_status): Update.
|
||||
* tracepoint.cc (clear_installed_tracepoints): Update.
|
||||
(cmd_qtdp): Update.
|
||||
(cmd_qtstart): Update.
|
||||
(stop_tracing): Update.
|
||||
(cmd_qtstatus): Update.
|
||||
(upload_fast_traceframes): Update.
|
||||
(run_inferior_command): Update.
|
||||
* linux-low.cc (linux_target_ops): Update.
|
||||
(linux_pause_all): Turn into ...
|
||||
(linux_process_target::pause_all): ... this.
|
||||
(linux_unpause_all): Turn into ...
|
||||
(linux_process_target::unpause_all): ... this.
|
||||
(linux_process_target::prepare_to_access_memory): Update.
|
||||
(linux_process_target::done_accessing_memory): Update.
|
||||
* linux-low.h (class linux_process_target): Update.
|
||||
* lynx-low.cc (lynx_target_ops): Update.
|
||||
* nto-low.cc (nto_target_ops): Update.
|
||||
* win32-low.cc (win32_target_ops): Update.
|
||||
|
||||
2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
|
||||
|
||||
Turn process_stratum_target's get_tib_address op into a method of
|
||||
|
|
|
@ -6586,8 +6586,8 @@ linux_process_target::thread_stopped (thread_info *thread)
|
|||
|
||||
/* This exposes stop-all-threads functionality to other modules. */
|
||||
|
||||
static void
|
||||
linux_pause_all (int freeze)
|
||||
void
|
||||
linux_process_target::pause_all (bool freeze)
|
||||
{
|
||||
stop_all_lwps (freeze, NULL);
|
||||
}
|
||||
|
@ -6595,8 +6595,8 @@ linux_pause_all (int freeze)
|
|||
/* This exposes unstop-all-threads functionality to other gdbserver
|
||||
modules. */
|
||||
|
||||
static void
|
||||
linux_unpause_all (int unfreeze)
|
||||
void
|
||||
linux_process_target::unpause_all (bool unfreeze)
|
||||
{
|
||||
unstop_all_lwps (unfreeze, NULL);
|
||||
}
|
||||
|
@ -6607,7 +6607,7 @@ linux_process_target::prepare_to_access_memory ()
|
|||
/* Neither ptrace nor /proc/PID/mem allow accessing memory through a
|
||||
running LWP. */
|
||||
if (non_stop)
|
||||
linux_pause_all (1);
|
||||
target_pause_all (true);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -6617,7 +6617,7 @@ linux_process_target::done_accessing_memory ()
|
|||
/* Neither ptrace nor /proc/PID/mem allow accessing memory through a
|
||||
running LWP. */
|
||||
if (non_stop)
|
||||
linux_unpause_all (1);
|
||||
target_unpause_all (true);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -7455,8 +7455,6 @@ linux_get_hwcap2 (int wordsize)
|
|||
static linux_process_target the_linux_target;
|
||||
|
||||
static process_stratum_target linux_target_ops = {
|
||||
linux_pause_all,
|
||||
linux_unpause_all,
|
||||
linux_stabilize_threads,
|
||||
linux_install_fast_tracepoint_jump_pad,
|
||||
linux_emit_ops,
|
||||
|
|
|
@ -396,6 +396,10 @@ public:
|
|||
bool supports_thread_stopped () override;
|
||||
|
||||
bool thread_stopped (thread_info *thread) override;
|
||||
|
||||
void pause_all (bool freeze) override;
|
||||
|
||||
void unpause_all (bool unfreeze) override;
|
||||
};
|
||||
|
||||
#define get_thread_lwp(thr) ((struct lwp_info *) (thread_target_data (thr)))
|
||||
|
|
|
@ -735,8 +735,6 @@ static lynx_process_target the_lynx_target;
|
|||
/* The LynxOS target_ops vector. */
|
||||
|
||||
static process_stratum_target lynx_target_ops = {
|
||||
NULL, /* pause_all */
|
||||
NULL, /* unpause_all */
|
||||
NULL, /* stabilize_threads */
|
||||
NULL, /* install_fast_tracepoint_jump_pad */
|
||||
NULL, /* emit_ops */
|
||||
|
|
|
@ -947,8 +947,6 @@ nto_sw_breakpoint_from_kind (int kind, int *size)
|
|||
static nto_process_target the_nto_target;
|
||||
|
||||
static process_stratum_target nto_target_ops = {
|
||||
NULL, /* pause_all */
|
||||
NULL, /* unpause_all */
|
||||
NULL, /* stabilize_threads */
|
||||
NULL, /* install_fast_tracepoint_jump_pad */
|
||||
NULL, /* emit_ops */
|
||||
|
|
|
@ -3323,7 +3323,7 @@ handle_status (char *own_buf)
|
|||
{
|
||||
thread_info *thread = NULL;
|
||||
|
||||
pause_all (0);
|
||||
target_pause_all (false);
|
||||
stabilize_threads ();
|
||||
gdb_wants_all_threads_stopped ();
|
||||
|
||||
|
|
|
@ -650,3 +650,15 @@ process_target::get_tib_address (ptid_t ptid, CORE_ADDR *address)
|
|||
{
|
||||
gdb_assert_not_reached ("target op get_tib_address not supported");
|
||||
}
|
||||
|
||||
void
|
||||
process_target::pause_all (bool freeze)
|
||||
{
|
||||
/* Nop. */
|
||||
}
|
||||
|
||||
void
|
||||
process_target::unpause_all (bool unfreeze)
|
||||
{
|
||||
/* Nop. */
|
||||
}
|
||||
|
|
|
@ -70,18 +70,6 @@ class process_target;
|
|||
shared code. */
|
||||
struct process_stratum_target
|
||||
{
|
||||
/* Pause all threads. If FREEZE, arrange for any resume attempt to
|
||||
be ignored until an unpause_all call unfreezes threads again.
|
||||
There can be nested calls to pause_all, so a freeze counter
|
||||
should be maintained. */
|
||||
void (*pause_all) (int freeze);
|
||||
|
||||
/* Unpause all threads. Threads that hadn't been resumed by the
|
||||
client should be left stopped. Basically a pause/unpause call
|
||||
pair should not end up resuming threads that were stopped before
|
||||
the pause call. */
|
||||
void (*unpause_all) (int unfreeze);
|
||||
|
||||
/* Stabilize all threads. That is, force them out of jump pads. */
|
||||
void (*stabilize_threads) (void);
|
||||
|
||||
|
@ -494,6 +482,18 @@ public:
|
|||
|
||||
/* Read Thread Information Block address. */
|
||||
virtual int get_tib_address (ptid_t ptid, CORE_ADDR *address);
|
||||
|
||||
/* Pause all threads. If FREEZE, arrange for any resume attempt to
|
||||
be ignored until an unpause_all call unfreezes threads again.
|
||||
There can be nested calls to pause_all, so a freeze counter
|
||||
should be maintained. */
|
||||
virtual void pause_all (bool freeze);
|
||||
|
||||
/* Unpause all threads. Threads that hadn't been resumed by the
|
||||
client should be left stopped. Basically a pause/unpause call
|
||||
pair should not end up resuming threads that were stopped before
|
||||
the pause call. */
|
||||
virtual void unpause_all (bool unfreeze);
|
||||
};
|
||||
|
||||
extern process_stratum_target *the_target;
|
||||
|
@ -568,19 +568,11 @@ int kill_inferior (process_info *proc);
|
|||
#define target_thread_stopped(thread) \
|
||||
the_target->pt->thread_stopped (thread)
|
||||
|
||||
#define pause_all(freeze) \
|
||||
do \
|
||||
{ \
|
||||
if (the_target->pause_all) \
|
||||
(*the_target->pause_all) (freeze); \
|
||||
} while (0)
|
||||
#define target_pause_all(freeze) \
|
||||
the_target->pt->pause_all (freeze)
|
||||
|
||||
#define unpause_all(unfreeze) \
|
||||
do \
|
||||
{ \
|
||||
if (the_target->unpause_all) \
|
||||
(*the_target->unpause_all) (unfreeze); \
|
||||
} while (0)
|
||||
#define target_unpause_all(unfreeze) \
|
||||
the_target->pt->unpause_all (unfreeze)
|
||||
|
||||
#define stabilize_threads() \
|
||||
do \
|
||||
|
|
|
@ -2433,7 +2433,7 @@ clear_installed_tracepoints (void)
|
|||
struct tracepoint *tpoint;
|
||||
struct tracepoint *prev_stpoint;
|
||||
|
||||
pause_all (1);
|
||||
target_pause_all (true);
|
||||
|
||||
prev_stpoint = NULL;
|
||||
|
||||
|
@ -2486,7 +2486,7 @@ clear_installed_tracepoints (void)
|
|||
tpoint->handle = NULL;
|
||||
}
|
||||
|
||||
unpause_all (1);
|
||||
target_unpause_all (true);
|
||||
}
|
||||
|
||||
/* Parse a packet that defines a tracepoint. */
|
||||
|
@ -2602,14 +2602,14 @@ cmd_qtdp (char *own_buf)
|
|||
struct tracepoint *tp = NULL;
|
||||
|
||||
/* Pause all threads temporarily while we patch tracepoints. */
|
||||
pause_all (0);
|
||||
target_pause_all (false);
|
||||
|
||||
/* download_tracepoint will update global `tracepoints'
|
||||
list, so it is unsafe to leave threads in jump pad. */
|
||||
stabilize_threads ();
|
||||
|
||||
/* Freeze threads. */
|
||||
pause_all (1);
|
||||
target_pause_all (true);
|
||||
|
||||
|
||||
if (tpoint->type != trap_tracepoint)
|
||||
|
@ -2658,7 +2658,7 @@ cmd_qtdp (char *own_buf)
|
|||
write_ok (own_buf);
|
||||
}
|
||||
|
||||
unpause_all (1);
|
||||
target_unpause_all (true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -3220,7 +3220,7 @@ cmd_qtstart (char *packet)
|
|||
trace_debug ("Starting the trace");
|
||||
|
||||
/* Pause all threads temporarily while we patch tracepoints. */
|
||||
pause_all (0);
|
||||
target_pause_all (false);
|
||||
|
||||
/* Get threads out of jump pads. Safe to do here, since this is a
|
||||
top level command. And, required to do here, since we're
|
||||
|
@ -3229,7 +3229,7 @@ cmd_qtstart (char *packet)
|
|||
stabilize_threads ();
|
||||
|
||||
/* Freeze threads. */
|
||||
pause_all (1);
|
||||
target_pause_all (true);
|
||||
|
||||
/* Sync the fast tracepoints list in the inferior ftlib. */
|
||||
if (agent_loaded_p ())
|
||||
|
@ -3370,7 +3370,7 @@ cmd_qtstart (char *packet)
|
|||
clear_installed_tracepoints ();
|
||||
if (*packet == '\0')
|
||||
write_enn (packet);
|
||||
unpause_all (1);
|
||||
target_unpause_all (true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -3418,7 +3418,7 @@ cmd_qtstart (char *packet)
|
|||
error ("Error setting flush_trace_buffer breakpoint");
|
||||
}
|
||||
|
||||
unpause_all (1);
|
||||
target_unpause_all (true);
|
||||
|
||||
write_ok (packet);
|
||||
}
|
||||
|
@ -3445,7 +3445,7 @@ stop_tracing (void)
|
|||
when we're sure we can move all threads out of the jump pads).
|
||||
We can't now, since we may be getting here due to the inferior
|
||||
agent calling us. */
|
||||
pause_all (1);
|
||||
target_pause_all (true);
|
||||
|
||||
/* Stop logging. Tracepoints can still be hit, but they will not be
|
||||
recorded. */
|
||||
|
@ -3522,7 +3522,7 @@ stop_tracing (void)
|
|||
flush_trace_buffer_bkpt = NULL;
|
||||
}
|
||||
|
||||
unpause_all (1);
|
||||
target_unpause_all (true);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -3668,11 +3668,11 @@ cmd_qtstatus (char *packet)
|
|||
|
||||
if (agent_loaded_p ())
|
||||
{
|
||||
pause_all (1);
|
||||
target_pause_all (true);
|
||||
|
||||
upload_fast_traceframes ();
|
||||
|
||||
unpause_all (1);
|
||||
target_unpause_all (true);
|
||||
}
|
||||
|
||||
stop_reason_rsp = (char *) tracing_stop_reason;
|
||||
|
@ -6578,12 +6578,12 @@ upload_fast_traceframes (void)
|
|||
|
||||
trace_debug ("Done uploading traceframes [%d]\n", curr_tbctrl_idx);
|
||||
|
||||
pause_all (1);
|
||||
target_pause_all (true);
|
||||
|
||||
delete_breakpoint (about_to_request_buffer_space_bkpt);
|
||||
about_to_request_buffer_space_bkpt = NULL;
|
||||
|
||||
unpause_all (1);
|
||||
target_unpause_all (true);
|
||||
|
||||
if (trace_buffer_is_full)
|
||||
stop_tracing ();
|
||||
|
@ -6861,13 +6861,13 @@ run_inferior_command (char *cmd, int len)
|
|||
|
||||
trace_debug ("run_inferior_command: running: %s", cmd);
|
||||
|
||||
pause_all (0);
|
||||
target_pause_all (false);
|
||||
uninsert_all_breakpoints ();
|
||||
|
||||
err = agent_run_command (pid, (const char *) cmd, len);
|
||||
|
||||
reinsert_all_breakpoints ();
|
||||
unpause_all (0);
|
||||
target_unpause_all (false);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
|
|
@ -1858,8 +1858,6 @@ win32_sw_breakpoint_from_kind (int kind, int *size)
|
|||
static win32_process_target the_win32_target;
|
||||
|
||||
static process_stratum_target win32_target_ops = {
|
||||
NULL, /* pause_all */
|
||||
NULL, /* unpause_all */
|
||||
NULL, /* stabilize_threads */
|
||||
NULL, /* install_fast_tracepoint_jump_pad */
|
||||
NULL, /* emit_ops */
|
||||
|
|
Loading…
Reference in New Issue