aboutsummaryrefslogtreecommitdiff
path: root/gdb/linux-nat-trad.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/linux-nat-trad.h')
-rw-r--r--gdb/linux-nat-trad.h24
1 files changed, 20 insertions, 4 deletions
diff --git a/gdb/linux-nat-trad.h b/gdb/linux-nat-trad.h
index 3b4a6c8..240a951 100644
--- a/gdb/linux-nat-trad.h
+++ b/gdb/linux-nat-trad.h
@@ -22,9 +22,25 @@
#include "linux-nat.h"
-/* Create a generic GNU/Linux target using traditional
- ptrace register access. */
-struct target_ops *linux_trad_target
- (CORE_ADDR (*register_u_offset)(struct gdbarch *, int, int));
+/* A prototype GNU/Linux target using traditional ptrace register
+ access. A concrete type should override REGISTER_U_OFFSET. */
+
+class linux_nat_trad_target : public linux_nat_target
+{
+public:
+ void fetch_registers (struct regcache *, int) override;
+ void store_registers (struct regcache *, int) override;
+
+protected:
+ /* Return the offset within the user area where a particular
+ register is stored. */
+ virtual CORE_ADDR register_u_offset (struct gdbarch *gdbarch,
+ int regnum, int store) = 0;
+
+private:
+ /* Helpers. See definition. */
+ void fetch_register (struct regcache *regcache, int regnum);
+ void store_register (const struct regcache *regcache, int regnum);
+};
#endif /* LINUX_NAT_TRAD_H */