mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-17 16:05:56 +08:00
Introduce target_{stop,continue}_ptid
This commit introduces two new functions to stop and restart target processes that shared code can use and that clients must implement. It also changes some shared code to use these functions. gdb/ChangeLog: * target/target.h (target_stop_ptid, target_continue_ptid): Declare. * target.c (target_stop_ptid, target_continue_ptid): New functions. * common/agent.c [!GDBSERVER]: Don't include infrun.h. (agent_run_command): Always use target_stop_ptid and target_continue_ptid. gdb/gdbserver/ChangeLog: * target.c (target_stop_ptid, target_continue_ptid): New functions.
This commit is contained in:
@ -21,7 +21,6 @@
|
||||
#include "server.h"
|
||||
#else
|
||||
#include "defs.h"
|
||||
#include "infrun.h"
|
||||
#include "objfiles.h"
|
||||
#endif
|
||||
#include "target/target.h"
|
||||
@ -218,18 +217,7 @@ agent_run_command (int pid, const char *cmd, int len)
|
||||
DEBUG_AGENT ("agent: resumed helper thread\n");
|
||||
|
||||
/* Resume helper thread. */
|
||||
#ifdef GDBSERVER
|
||||
{
|
||||
struct thread_resume resume_info;
|
||||
|
||||
resume_info.thread = ptid;
|
||||
resume_info.kind = resume_continue;
|
||||
resume_info.sig = GDB_SIGNAL_0;
|
||||
(*the_target->resume) (&resume_info, 1);
|
||||
}
|
||||
#else
|
||||
target_resume (ptid, 0, GDB_SIGNAL_0);
|
||||
#endif
|
||||
target_continue_ptid (ptid);
|
||||
|
||||
fd = gdb_connect_sync_socket (pid);
|
||||
if (fd >= 0)
|
||||
@ -261,30 +249,9 @@ agent_run_command (int pid, const char *cmd, int len)
|
||||
/* Need to read response with the inferior stopped. */
|
||||
if (!ptid_equal (ptid, null_ptid))
|
||||
{
|
||||
struct target_waitstatus status;
|
||||
int was_non_stop = non_stop;
|
||||
/* Stop thread PTID. */
|
||||
DEBUG_AGENT ("agent: stop helper thread\n");
|
||||
#ifdef GDBSERVER
|
||||
{
|
||||
struct thread_resume resume_info;
|
||||
|
||||
resume_info.thread = ptid;
|
||||
resume_info.kind = resume_stop;
|
||||
resume_info.sig = GDB_SIGNAL_0;
|
||||
(*the_target->resume) (&resume_info, 1);
|
||||
}
|
||||
|
||||
non_stop = 1;
|
||||
mywait (ptid, &status, 0, 0);
|
||||
#else
|
||||
non_stop = 1;
|
||||
target_stop (ptid);
|
||||
|
||||
memset (&status, 0, sizeof (status));
|
||||
target_wait (ptid, &status, 0);
|
||||
#endif
|
||||
non_stop = was_non_stop;
|
||||
target_stop_ptid (ptid);
|
||||
}
|
||||
|
||||
if (fd >= 0)
|
||||
|
Reference in New Issue
Block a user