X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fregcache.h;h=b8561d714c9edb268539c33b57a01deef42c8ef1;hb=5b6d1e4fa4fc6827c7b3f0e99ff120dfa14d65d2;hp=374826cdb822efd7f8fbede38f9c3032f6d7db63;hpb=498f740792fe0edd2955c5cee6bb864f60a5b173;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/regcache.h b/gdb/regcache.h index 374826cdb8..b8561d714c 100644 --- a/gdb/regcache.h +++ b/gdb/regcache.h @@ -1,6 +1,6 @@ /* Cache and manage the values of registers for GDB, the GNU debugger. - Copyright (C) 1986-2018 Free Software Foundation, Inc. + Copyright (C) 1986-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -20,24 +20,29 @@ #ifndef REGCACHE_H #define REGCACHE_H -#include "common-regcache.h" +#include "gdbsupport/common-regcache.h" +#include "gdbsupport/function-view.h" #include struct regcache; struct regset; struct gdbarch; struct address_space; +class thread_info; +struct process_stratum_target; extern struct regcache *get_current_regcache (void); -extern struct regcache *get_thread_regcache (ptid_t ptid); +extern struct regcache *get_thread_regcache (process_stratum_target *target, + ptid_t ptid); /* Get the regcache of THREAD. */ extern struct regcache *get_thread_regcache (thread_info *thread); -extern struct regcache *get_thread_arch_regcache (ptid_t, struct gdbarch *); -extern struct regcache *get_thread_arch_aspace_regcache (ptid_t, - struct gdbarch *, - struct address_space *); +extern struct regcache *get_thread_arch_regcache + (process_stratum_target *targ, ptid_t, struct gdbarch *); +extern struct regcache *get_thread_arch_aspace_regcache + (process_stratum_target *target, ptid_t, + struct gdbarch *, struct address_space *); extern enum register_status regcache_raw_read_signed (struct regcache *regcache, @@ -68,7 +73,7 @@ extern void regcache_cooked_write_unsigned (struct regcache *regcache, /* Special routines to read/write the PC. */ -/* For regcache_read_pc see common/common-regcache.h. */ +/* For regcache_read_pc see gdbsupport/common-regcache.h. */ extern void regcache_write_pc (struct regcache *regcache, CORE_ADDR pc); /* Mapping between register numbers and offsets in a buffer, for use @@ -181,10 +186,10 @@ public: /* Return regcache's architecture. */ gdbarch *arch () const; - /* See common/common-regcache.h. */ + /* See gdbsupport/common-regcache.h. */ enum register_status get_register_status (int regnum) const override; - /* See common/common-regcache.h. */ + /* See gdbsupport/common-regcache.h. */ void raw_collect (int regnum, void *buf) const override; /* Collect register REGNUM from REGCACHE. Store collected value as an integer @@ -199,7 +204,7 @@ public: reading only LEN. */ void raw_collect_part (int regnum, int offset, int len, gdb_byte *out) const; - /* See common/common-regcache.h. */ + /* See gdbsupport/common-regcache.h. */ void raw_supply (int regnum, const void *buf) override; void raw_supply (int regnum, const reg_buffer &src) @@ -228,7 +233,7 @@ public: virtual ~reg_buffer () = default; - /* See common/common-regcache.h. */ + /* See gdbsupport/common-regcache.h. */ bool raw_compare (int regnum, const void *buf, int offset) const override; protected: @@ -383,13 +388,19 @@ public: this->m_ptid = ptid; } + process_stratum_target *target () const + { + return m_target; + } + /* Dump the contents of a register from the register cache to the target debug. */ void debug_print_register (const char *func, int regno); static void regcache_thread_ptid_changed (ptid_t old_ptid, ptid_t new_ptid); protected: - regcache (gdbarch *gdbarch, const address_space *aspace_); + regcache (process_stratum_target *target, gdbarch *gdbarch, + const address_space *aspace); static std::forward_list current_regcache; @@ -419,14 +430,16 @@ private: /* If this is a read-write cache, which thread's registers is it connected to? */ + process_stratum_target *m_target; ptid_t m_ptid; friend struct regcache * - get_thread_arch_aspace_regcache (ptid_t ptid, struct gdbarch *gdbarch, + get_thread_arch_aspace_regcache (process_stratum_target *target, ptid_t ptid, + struct gdbarch *gdbarch, struct address_space *aspace); friend void - registers_changed_ptid (ptid_t ptid); + registers_changed_ptid (process_stratum_target *target, ptid_t ptid); }; class readonly_detached_regcache : public readable_regcache @@ -449,7 +462,8 @@ public: }; extern void registers_changed (void); -extern void registers_changed_ptid (ptid_t); +extern void registers_changed_ptid (process_stratum_target *target, + ptid_t ptid); /* Indicate that registers of THREAD may have changed, so invalidate the cache. */