+2014-09-11 Gary Benson <gbenson@redhat.com>
+
+ * 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.
+
2014-09-11 Tom Tromey <tromey@redhat.com>
Gary Benson <gbenson@redhat.com>
#include "server.h"
#else
#include "defs.h"
-#include "infrun.h"
#include "objfiles.h"
#endif
#include "target/target.h"
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)
/* 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)
+2014-09-11 Gary Benson <gbenson@redhat.com>
+
+ * target.c (target_stop_ptid, target_continue_ptid): New
+ functions.
+
2014-09-11 Tom Tromey <tromey@redhat.com>
Gary Benson <gbenson@redhat.com>
return ret;
}
+/* See target/target.h. */
+
+void
+target_stop_ptid (ptid_t ptid)
+{
+ struct target_waitstatus status;
+ int was_non_stop = non_stop;
+ 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);
+ non_stop = was_non_stop;
+}
+
+/* See target/target.h. */
+
+void
+target_continue_ptid (ptid_t ptid)
+{
+ 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);
+}
+
int
start_non_stop (int nonstop)
{
(*current_target.to_stop) (¤t_target, ptid);
}
+/* See target/target.h. */
+
+void
+target_stop_ptid (ptid_t ptid)
+{
+ struct target_waitstatus status;
+ int was_non_stop = non_stop;
+
+ non_stop = 1;
+ target_stop (ptid);
+
+ memset (&status, 0, sizeof (status));
+ target_wait (ptid, &status, 0);
+
+ non_stop = was_non_stop;
+}
+
+/* See target/target.h. */
+
+void
+target_continue_ptid (ptid_t ptid)
+{
+ target_resume (ptid, 0, GDB_SIGNAL_0);
+}
+
/* Concatenate ELEM to LIST, a comma separate list, and return the
result. The LIST incoming argument is released. */
extern int target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr,
ssize_t len);
+/* Make target stop in a continuable fashion. (For instance, under
+ Unix, this should act like SIGSTOP). This function must be
+ provided by the client. */
+
+extern void target_stop_ptid (ptid_t ptid);
+
+/* Restart a target that was previously stopped by target_stop_ptid.
+ This function must be provided by the client. */
+
+extern void target_continue_ptid (ptid_t ptid);
+
#endif /* TARGET_COMMON_H */