aboutsummaryrefslogtreecommitdiff
path: root/gdb/inf-ptrace.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/inf-ptrace.h')
-rw-r--r--gdb/inf-ptrace.h67
1 files changed, 54 insertions, 13 deletions
diff --git a/gdb/inf-ptrace.h b/gdb/inf-ptrace.h
index d10f64a..bd9b609 100644
--- a/gdb/inf-ptrace.h
+++ b/gdb/inf-ptrace.h
@@ -20,26 +20,67 @@
#ifndef INF_PTRACE_H
#define INF_PTRACE_H
-/* Create a prototype ptrace target. The client can override it with
- local methods. */
+#include "inf-child.h"
-extern struct target_ops *inf_ptrace_target (void);
+/* An abstract prototype ptrace target. The client can override it
+ with local methods. */
-/* Create a "traditional" ptrace target. REGISTER_U_OFFSET should be
- a function returning the offset within the user area where a
- particular register is stored. */
+struct inf_ptrace_target : public inf_child_target
+{
+ ~inf_ptrace_target () override = 0;
-extern struct target_ops *
- inf_ptrace_trad_target (CORE_ADDR (*register_u_offset)
- (struct gdbarch *, int, int));
+ void attach (const char *, int) override;
+
+ void detach (inferior *inf, int) override;
+
+ void resume (ptid_t, int, enum gdb_signal) override;
+
+ ptid_t wait (ptid_t, struct target_waitstatus *, int) override;
+
+ void files_info () override;
+
+ void kill () override;
+
+ void create_inferior (const char *, const std::string &,
+ char **, int) override;
+#ifdef PT_GET_PROCESS_STATE
+ int follow_fork (int, int) override;
+
+ int insert_fork_catchpoint (int) override;
+
+ int remove_fork_catchpoint (int) override;
+
+ void post_startup_inferior (ptid_t) override;
+
+ void post_attach (int) override;
+#endif
+
+ void mourn_inferior () override;
+
+ int thread_alive (ptid_t ptid) override;
+
+ const char *pid_to_str (ptid_t) override;
+
+ enum target_xfer_status xfer_partial (enum target_object object,
+ const char *annex,
+ gdb_byte *readbuf,
+ const gdb_byte *writebuf,
+ ULONGEST offset, ULONGEST len,
+ ULONGEST *xfered_len) override;
+
+#if defined (PT_IO) && defined (PIOD_READ_AUXV)
+ int auxv_parse (gdb_byte **readptr,
+ gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp) override;
+#endif
+
+protected:
+ /* Cleanup the inferior after a successful ptrace detach. */
+ void detach_success (inferior *inf);
+};
/* Return which PID to pass to ptrace in order to observe/control the
tracee identified by PTID. */
extern pid_t get_ptrace_pid (ptid_t);
-
-/* Cleanup the inferior after a successful ptrace detach. */
-extern void inf_ptrace_detach_success (struct target_ops *ops, inferior *inf);
-
#endif