]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Make target_store_registers take reg_buffer
authorSimon Marchi <simon.marchi@ericsson.com>
Thu, 31 May 2018 02:58:37 +0000 (22:58 -0400)
committerSimon Marchi <simon.marchi@ericsson.com>
Thu, 31 May 2018 20:08:59 +0000 (16:08 -0400)
33 files changed:
gdb/aarch32-linux-nat.c
gdb/aarch32-linux-nat.h
gdb/aarch64-linux-nat.c
gdb/amd64-linux-nat.c
gdb/amd64-nat.c
gdb/amd64-nat.h
gdb/amd64-obsd-tdep.c
gdb/amd64-tdep.c
gdb/amd64-tdep.h
gdb/bsd-uthread.c
gdb/bsd-uthread.h
gdb/i386-obsd-tdep.c
gdb/i387-tdep.c
gdb/i387-tdep.h
gdb/inf-child.h
gdb/proc-service.c
gdb/ravenscar-thread.c
gdb/record-btrace.c
gdb/record-full.c
gdb/record-full.h
gdb/regcache.c
gdb/remote.c
gdb/rs6000-aix-tdep.c
gdb/rs6000-lynx178-tdep.c
gdb/sparc-obsd-tdep.c
gdb/sparc-tdep.c
gdb/sparc-tdep.h
gdb/sparc64-obsd-tdep.c
gdb/sparc64-tdep.c
gdb/spu-multiarch.c
gdb/target-delegates.c
gdb/target.c
gdb/target.h

index b35ab4db4866271b8b37ff58c7d9beaf290919b3..49c34a98b53f795d07f96607397cfe5b9fdc4454 100644 (file)
@@ -54,7 +54,7 @@ aarch32_gp_regcache_supply (reg_buffer *regcache, uint32_t *regs,
    true if the 32-bit mode is in use, otherwise, it is false.  */
 
 void
-aarch32_gp_regcache_collect (const struct regcache *regcache, uint32_t *regs,
+aarch32_gp_regcache_collect (const struct reg_buffer *regcache, uint32_t *regs,
                             int arm_apcs_32)
 {
   int regno;
@@ -96,7 +96,7 @@ aarch32_vfp_regcache_supply (reg_buffer *regcache, gdb_byte *regs,
    VFP_REGISTER_COUNT is the number VFP registers.  */
 
 void
-aarch32_vfp_regcache_collect (const struct regcache *regcache, gdb_byte *regs,
+aarch32_vfp_regcache_collect (const struct reg_buffer *regcache, gdb_byte *regs,
                              const int vfp_register_count)
 {
   int regno;
index 9cdd432bfc91ddd34aedc94de009c67cec621cce..c59d9087a48e29198273152352cf834e54bfd553 100644 (file)
 void aarch32_gp_regcache_supply (reg_buffer *regcache, uint32_t *regs,
                                 int arm_apcs_32);
 
-void aarch32_gp_regcache_collect (const struct regcache *regcache,
+void aarch32_gp_regcache_collect (const reg_buffer *regcache,
                                  uint32_t *regs, int arm_apcs_32);
 
 void aarch32_vfp_regcache_supply (reg_buffer *regcache, gdb_byte *regs,
                                  const int vfp_register_count);
 
-void aarch32_vfp_regcache_collect (const struct regcache *regcache,
+void aarch32_vfp_regcache_collect (const reg_buffer *regcache,
                                   gdb_byte *regs,
                                   const int vfp_register_count);
index 37420d36dc074b2364d07f00147972eef3285086..73b1ec4409458e66fccfdd2d60c2e2de5daf0583 100644 (file)
@@ -54,7 +54,7 @@ class aarch64_linux_nat_target final : public linux_nat_target
 public:
   /* Add our register access methods.  */
   void fetch_registers (ptid_t, reg_buffer *, int) override;
-  void store_registers (struct regcache *, int) override;
+  void store_registers (ptid_t, reg_buffer *, int) override;
 
   const struct target_desc *read_description () override;
 
@@ -235,7 +235,7 @@ fetch_gregs_from_thread (ptid_t ptid, reg_buffer *regcache)
    values in the GDB's register array.  */
 
 static void
-store_gregs_to_thread (const struct regcache *regcache)
+store_gregs_to_thread (ptid_t ptid, const reg_buffer *regcache)
 {
   int ret, tid;
   elf_gregset_t regs;
@@ -245,7 +245,7 @@ store_gregs_to_thread (const struct regcache *regcache)
   /* Make sure REGS can hold all registers contents on both aarch64
      and arm.  */
   gdb_static_assert (sizeof (regs) >= 18 * 4);
-  tid = ptid_get_lwp (regcache->ptid ());
+  tid = ptid.lwp ();
 
   iovec.iov_base = &regs;
   if (gdbarch_bfd_arch_info (gdbarch)->bits_per_word == 32)
@@ -324,7 +324,7 @@ fetch_fpregs_from_thread (ptid_t ptid, reg_buffer *regcache)
    values in the GDB's register array.  */
 
 static void
-store_fpregs_to_thread (const struct regcache *regcache)
+store_fpregs_to_thread (ptid_t ptid, const reg_buffer *regcache)
 {
   int ret, tid;
   elf_fpregset_t regs;
@@ -334,7 +334,7 @@ store_fpregs_to_thread (const struct regcache *regcache)
   /* Make sure REGS can hold all VFP registers contents on both aarch64
      and arm.  */
   gdb_static_assert (sizeof regs >= VFP_REGS_SIZE);
-  tid = ptid_get_lwp (regcache->ptid ());
+  tid = ptid.lwp ();
 
   iovec.iov_base = &regs;
 
@@ -403,18 +403,18 @@ aarch64_linux_nat_target::fetch_registers (ptid_t ptid, reg_buffer *regcache,
 /* Implement the "store_registers" target_ops method.  */
 
 void
-aarch64_linux_nat_target::store_registers (struct regcache *regcache,
+aarch64_linux_nat_target::store_registers (ptid_t ptid, reg_buffer *regcache,
                                           int regno)
 {
   if (regno == -1)
     {
-      store_gregs_to_thread (regcache);
-      store_fpregs_to_thread (regcache);
+      store_gregs_to_thread (ptid, regcache);
+      store_fpregs_to_thread (ptid, regcache);
     }
   else if (regno < AARCH64_V0_REGNUM)
-    store_gregs_to_thread (regcache);
+    store_gregs_to_thread (ptid, regcache);
   else
-    store_fpregs_to_thread (regcache);
+    store_fpregs_to_thread (ptid, regcache);
 }
 
 /* Fill register REGNO (if it is a general-purpose register) in
index 32ce2cb9cc06ab0d8db670365864086d89333a54..e57ae1504c40e28ee8ef1d6c2248a5584c6817ad 100644 (file)
@@ -49,7 +49,7 @@ struct amd64_linux_nat_target final : public x86_linux_nat_target
 {
   /* Add our register access methods.  */
   void fetch_registers (ptid_t, reg_buffer *, int) override;
-  void store_registers (struct regcache *, int) override;
+  void store_registers (ptid_t, reg_buffer *, int) override;
 
   bool low_siginfo_fixup (siginfo_t *ptrace, gdb_byte *inf, int direction)
     override;
@@ -216,15 +216,11 @@ amd64_linux_nat_target::fetch_registers (ptid_t ptid, reg_buffer *regcache,
    registers).  */
 
 void
-amd64_linux_nat_target::store_registers (struct regcache *regcache, int regnum)
+amd64_linux_nat_target::store_registers (ptid_t ptid,
+                                        reg_buffer *regcache, int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  int tid;
-
-  /* GNU/Linux LWP ID's are process ID's.  */
-  tid = ptid_get_lwp (regcache->ptid ());
-  if (tid == 0)
-    tid = ptid_get_pid (regcache->ptid ()); /* Not a threaded program.  */
+  int tid = get_ptrace_pid (ptid);
 
   if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, regnum))
     {
index f7795c99bfea8068f5ab8dfdbded28c660835533..eab16e9d8c84dc7e46ec513393309651c5cbf9b4 100644 (file)
@@ -123,7 +123,7 @@ amd64_supply_native_gregset (reg_buffer *regcache,
    registers.  */
 
 void
-amd64_collect_native_gregset (const struct regcache *regcache,
+amd64_collect_native_gregset (const reg_buffer *regcache,
                              void *gregs, int regnum)
 {
   char *regs = (char *) gregs;
index 7748239baa2808de577b08f4b4c2abb2719b8a69..9b7fc2d84a9222fc2bb920d41f0f85556663d921 100644 (file)
@@ -46,7 +46,7 @@ extern void amd64_supply_native_gregset (reg_buffer *regcache,
    GREGS.  If REGNUM is -1, collect and store all appropriate
    registers.  */
 
-extern void amd64_collect_native_gregset (const struct regcache *regcache,
+extern void amd64_collect_native_gregset (const reg_buffer *regcache,
                                          void *gregs, int regnum);
 
 #endif /* amd64-nat.h */
index 434b837420816f5208c705e724b89e4cba70699f..5fe1914298b0208b65e905b5a25f88c7b197efec 100644 (file)
@@ -262,7 +262,7 @@ amd64obsd_supply_uthread (reg_buffer *regcache,
 }
 
 static void
-amd64obsd_collect_uthread (const struct regcache *regcache,
+amd64obsd_collect_uthread (const reg_buffer *regcache,
                           int regnum, CORE_ADDR addr)
 {
   struct gdbarch *gdbarch = regcache->arch ();
index 7ceadd837155a369be98018b83eaf25542f99cd8..402351474f15b88278d7de0c256012b3e29503bf 100644 (file)
@@ -3394,7 +3394,7 @@ amd64_supply_xsave (reg_buffer *regcache, int regnum,
    bits in *FXSAVE.  */
 
 void
-amd64_collect_fxsave (const struct regcache *regcache, int regnum,
+amd64_collect_fxsave (const reg_buffer *regcache, int regnum,
                      void *fxsave)
 {
   struct gdbarch *gdbarch = regcache->arch ();
@@ -3415,7 +3415,7 @@ amd64_collect_fxsave (const struct regcache *regcache, int regnum,
 /* Similar to amd64_collect_fxsave, but use XSAVE extended state.  */
 
 void
-amd64_collect_xsave (const struct regcache *regcache, int regnum,
+amd64_collect_xsave (const reg_buffer *regcache, int regnum,
                     void *xsave, int gcore)
 {
   struct gdbarch *gdbarch = regcache->arch ();
index 84a2977d77f221dde96094509f18a1c4691e046a..37dd17c5279bc11973c1a563443247460331019a 100644 (file)
@@ -125,10 +125,10 @@ extern void amd64_supply_xsave (reg_buffer *regcache, int regnum,
    all registers.  This function doesn't touch any of the reserved
    bits in *FXSAVE.  */
 
-extern void amd64_collect_fxsave (const struct regcache *regcache, int regnum,
+extern void amd64_collect_fxsave (const reg_buffer *regcache, int regnum,
                                  void *fxsave);
 /* Similar to amd64_collect_fxsave, but use XSAVE extended state.  */
-extern void amd64_collect_xsave (const struct regcache *regcache,
+extern void amd64_collect_xsave (const reg_buffer *regcache,
                                 int regnum, void *xsave, int gcore);
 \f
 /* Floating-point register set. */
index e13dfc5ca36c35bfce4d1e6e992ac7fc69726a13..886bd83d80c4c6c22112ffc49a4dde2eedb6760a 100644 (file)
@@ -52,7 +52,7 @@ struct bsd_uthread_target final : public target_ops
   void mourn_inferior () override;
 
   void fetch_registers (ptid_t, reg_buffer *, int) override;
-  void store_registers (struct regcache *, int) override;
+  void store_registers (ptid_t, reg_buffer *, int) override;
 
   ptid_t wait (ptid_t, struct target_waitstatus *, int) override;
   void resume (ptid_t, int, enum gdb_signal) override;
@@ -80,7 +80,7 @@ struct bsd_uthread_ops
   void (*supply_uthread)(reg_buffer *, int, CORE_ADDR);
 
   /* Collect registers for an inactive thread from a register cache.  */
-  void (*collect_uthread)(const struct regcache *, int, CORE_ADDR);
+  void (*collect_uthread)(const reg_buffer *, int, CORE_ADDR);
 };
 
 static void *
@@ -111,8 +111,8 @@ bsd_uthread_set_supply_uthread (struct gdbarch *gdbarch,
 
 void
 bsd_uthread_set_collect_uthread (struct gdbarch *gdbarch,
-                        void (*collect_uthread) (const struct regcache *,
-                                                 int, CORE_ADDR))
+                                void (*collect_uthread) (const reg_buffer *,
+                                                         int, CORE_ADDR))
 {
   struct bsd_uthread_ops *ops
     = (struct bsd_uthread_ops *) gdbarch_data (gdbarch, bsd_uthread_data);
@@ -348,13 +348,13 @@ bsd_uthread_target::fetch_registers (ptid_t ptid, reg_buffer *regcache, int regn
 }
 
 void
-bsd_uthread_target::store_registers (struct regcache *regcache, int regnum)
+bsd_uthread_target::store_registers (ptid_t ptid, reg_buffer *regcache,
+                                    int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
   struct bsd_uthread_ops *uthread_ops
     = (struct bsd_uthread_ops *) gdbarch_data (gdbarch, bsd_uthread_data);
   struct target_ops *beneath = find_target_beneath (this);
-  ptid_t ptid = regcache->ptid ();
   CORE_ADDR addr = ptid_get_tid (ptid);
   CORE_ADDR active_addr;
   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
@@ -374,7 +374,7 @@ bsd_uthread_target::store_registers (struct regcache *regcache, int regnum)
     {
       /* Updating the thread that is currently running; pass the
          request to the layer beneath.  */
-      beneath->store_registers (regcache, regnum);
+      beneath->store_registers (ptid, regcache, regnum);
     }
 }
 
index 1b63e3c6f2332d5319c356328e58768ae1319758..47e26140c95f3930228ddfd1261ae5efead2be08 100644 (file)
@@ -32,7 +32,7 @@ extern void bsd_uthread_set_supply_uthread (struct gdbarch *gdbarch,
    architecture GDBARCH to SUPPLY_UTHREAD.  */
 
 extern void bsd_uthread_set_collect_uthread (struct gdbarch *gdbarch,
-                            void (*collect_uthread) (const struct regcache *,
+                            void (*collect_uthread) (const reg_buffer *,
                                                      int, CORE_ADDR));
 
 #endif /* bsd-uthread.h */
index 071846cc490d1571f36151d7647ebef71c9cce4a..054b7d1a3138c891f47aea650af1d64775508a34 100644 (file)
@@ -231,7 +231,7 @@ i386obsd_supply_uthread (reg_buffer *regcache,
 }
 
 static void
-i386obsd_collect_uthread (const struct regcache *regcache,
+i386obsd_collect_uthread (const reg_buffer *regcache,
                          int regnum, CORE_ADDR addr)
 {
   struct gdbarch *gdbarch = regcache->arch ();
index aa8220760fc45e428d216a1871439d0461026617..9abc5385c039dc8dc98d112a94c0df3deb31238e 100644 (file)
@@ -666,7 +666,7 @@ i387_supply_fxsave (reg_buffer *regcache, int regnum, const void *fxsave)
    bits in *FXSAVE.  */
 
 void
-i387_collect_fxsave (const struct regcache *regcache, int regnum, void *fxsave)
+i387_collect_fxsave (const reg_buffer *regcache, int regnum, void *fxsave)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ());
   gdb_byte *regs = (gdb_byte *) fxsave;
@@ -1331,7 +1331,7 @@ i387_supply_xsave (reg_buffer *regcache, int regnum,
 /* Similar to i387_collect_fxsave, but use XSAVE extended state.  */
 
 void
-i387_collect_xsave (const struct regcache *regcache, int regnum,
+i387_collect_xsave (const reg_buffer *regcache, int regnum,
                    void *xsave, int gcore)
 {
   struct gdbarch *gdbarch = regcache->arch ();
@@ -1493,7 +1493,7 @@ i387_collect_xsave (const struct regcache *regcache, int regnum,
                                        byte_order, I387_FCTRL_INIT_VAL);
              else
                memset (FXSAVE_ADDR (tdep, regs, i), 0,
-                       regcache_register_size (regcache, i));
+                       register_size (gdbarch, i));
            }
        }
     }
@@ -1841,7 +1841,7 @@ i387_collect_xsave (const struct regcache *regcache, int regnum,
            int regsize;
 
            regcache->raw_collect (i, raw);
-           regsize = regcache_register_size (regcache, i);
+           regsize = register_size (gdbarch, i);
            p = FXSAVE_ADDR (tdep, regs, i);
            if (memcmp (raw, p, regsize))
              {
index d230c151231da63ef50f7d6ddc1e3f1579aea027..3bc2312fa12ca3f532a1f81d7dc43a57c98e4a56 100644 (file)
@@ -148,12 +148,12 @@ extern void i387_supply_xsave (reg_buffer *regcache, int regnum,
    all registers.  This function doesn't touch any of the reserved
    bits in *FXSAVE.  */
 
-extern void i387_collect_fxsave (const struct regcache *regcache, int regnum,
+extern void i387_collect_fxsave (const reg_buffer *regcache, int regnum,
                                 void *fxsave);
 
 /* Similar to i387_collect_fxsave, but use XSAVE extended state.  */
 
-extern void i387_collect_xsave (const struct regcache *regcache,
+extern void i387_collect_xsave (const reg_buffer *regcache,
                                int regnum, void *xsave, int gcore);
 
 /* Extract a bitset from XSAVE indicating which features are available in
index 00f812c5089fd4f919d1ec8cea791b1ed888f1c0..f2590850037e9f493b9408c6257ff18b6676b543 100644 (file)
@@ -39,7 +39,7 @@ public:
   void disconnect (const char *, int) override;
 
   void fetch_registers (ptid_t, reg_buffer *, int) override = 0;
-  void store_registers (struct regcache *, int) override = 0;
+  void store_registers (ptid_t, reg_buffer *, int) override = 0;
 
   void prepare_to_store (struct regcache *) override;
 
index 06c927b2b37061a773bf033fd8f519a93a27baea..2f52cf246948eb24c2b2dfda5df18b1c2474445e 100644 (file)
@@ -152,7 +152,7 @@ ps_lsetregs (struct ps_prochandle *ph, lwpid_t lwpid, const prgregset_t gregset)
     = get_thread_arch_regcache (ptid, target_gdbarch ());
 
   supply_gregset (regcache, (const gdb_gregset_t *) gregset);
-  target_store_registers (regcache, -1);
+  target_store_registers (ptid, regcache, -1);
 
   return PS_OK;
 }
@@ -185,7 +185,7 @@ ps_lsetfpregs (struct ps_prochandle *ph, lwpid_t lwpid,
     = get_thread_arch_regcache (ptid, target_gdbarch ());
 
   supply_fpregset (regcache, (const gdb_fpregset_t *) fpregset);
-  target_store_registers (regcache, -1);
+  target_store_registers (ptid, regcache, -1);
 
   return PS_OK;
 }
index 31a975cacf33559c924d271e4110e78772384290..935829498e1981ba8f4cc5a3bf90b54f59746f51 100644 (file)
@@ -91,7 +91,7 @@ struct ravenscar_thread_target final : public target_ops
   void resume (ptid_t, int, enum gdb_signal) override;
 
   void fetch_registers (ptid_t, reg_buffer *, int) override;
-  void store_registers (struct regcache *, int) override;
+  void store_registers (ptid_t, reg_buffer *, int) override;
 
   void prepare_to_store (struct regcache *) override;
 
@@ -433,11 +433,11 @@ ravenscar_thread_target::fetch_registers (ptid_t ptid, reg_buffer *regcache,
 }
 
 void
-ravenscar_thread_target::store_registers (struct regcache *regcache,
+ravenscar_thread_target::store_registers (ptid_t ptid,
+                                         reg_buffer *regcache,
                                          int regnum)
 {
   target_ops *beneath = find_target_beneath (this);
-  ptid_t ptid = regcache->ptid ();
 
   if (ravenscar_runtime_initialized ()
       && is_ravenscar_task (ptid)
@@ -447,10 +447,10 @@ ravenscar_thread_target::store_registers (struct regcache *regcache,
       struct ravenscar_arch_ops *arch_ops
        = gdbarch_ravenscar_ops (gdbarch);
 
-      beneath->store_registers (regcache, regnum);
+      beneath->store_registers (ptid, regcache, regnum);
     }
   else
-    beneath->store_registers (regcache, regnum);
+    beneath->store_registers (ptid, regcache, regnum);
 }
 
 void
index 03fc2538448b9f1c21289eac1db6cb5a5c7fb620..3c75e91ec198cf049c514f31297e5f2ca7576003 100644 (file)
@@ -106,7 +106,7 @@ public:
 
   void fetch_registers (ptid_t, reg_buffer *, int) override;
 
-  void store_registers (struct regcache *, int) override;
+  void store_registers (ptid_t, reg_buffer *, int) override;
   void prepare_to_store (struct regcache *) override;
 
   const struct frame_unwind *get_unwinder () override;
@@ -1567,17 +1567,18 @@ record_btrace_target::fetch_registers (ptid_t ptid, reg_buffer *regcache, int re
 /* The store_registers method of target record-btrace.  */
 
 void
-record_btrace_target::store_registers (struct regcache *regcache, int regno)
+record_btrace_target::store_registers (ptid_t ptid, reg_buffer *regcache,
+                                      int regno)
 {
   struct target_ops *t;
 
   if (!record_btrace_generating_corefile
-      && record_is_replaying (regcache->ptid ()))
+      && record_is_replaying (ptid))
     error (_("Cannot write registers while replaying."));
 
   gdb_assert (may_write_registers != 0);
 
-  this->beneath->store_registers (regcache, regno);
+  this->beneath->store_registers (ptid, regcache, regno);
 }
 
 /* The prepare_to_store method of target record-btrace.  */
index d14e21ddcc9de8ee1afc4bb001501ec8ccbabb15..35f5167156fa5107ac4012eac8b4abc1a703979d 100644 (file)
@@ -273,7 +273,7 @@ public:
   void detach (inferior *, int) override;
   void mourn_inferior () override;
   void kill () override;
-  void store_registers (struct regcache *, int) override;
+  void store_registers (ptid_t, reg_buffer *, int) override;
   enum target_xfer_status xfer_partial (enum target_object object,
                                        const char *annex,
                                        gdb_byte *readbuf,
@@ -306,7 +306,7 @@ public:
   void kill () override;
   void fetch_registers (ptid_t ptid, reg_buffer *regcache, int regno) override;
   void prepare_to_store (struct regcache *regcache) override;
-  void store_registers (struct regcache *, int) override;
+  void store_registers (ptid_t, reg_buffer *, int) override;
   enum target_xfer_status xfer_partial (enum target_object object,
                                        const char *annex,
                                        gdb_byte *readbuf,
@@ -384,7 +384,7 @@ static void record_full_goto_insn (struct record_full_entry *entry,
 /* Alloc a record_full_reg record entry.  */
 
 static inline struct record_full_entry *
-record_full_reg_alloc (struct regcache *regcache, int regnum)
+record_full_reg_alloc (reg_buffer *regcache, int regnum)
 {
   struct record_full_entry *rec;
   struct gdbarch *gdbarch = regcache->arch ();
@@ -608,7 +608,7 @@ record_full_get_loc (struct record_full_entry *rec)
 /* Record the value of a register NUM to record_full_arch_list.  */
 
 int
-record_full_arch_list_add_reg (struct regcache *regcache, int regnum)
+record_full_arch_list_add_reg (reg_buffer *regcache, int regnum)
 {
   struct record_full_entry *rec;
 
@@ -620,7 +620,7 @@ record_full_arch_list_add_reg (struct regcache *regcache, int regnum)
 
   rec = record_full_reg_alloc (regcache, regnum);
 
-  regcache->raw_read (regnum, record_full_get_loc (rec));
+  regcache->raw_collect (regnum, record_full_get_loc (rec));
 
   record_full_arch_list_add (rec);
 
@@ -1527,7 +1527,7 @@ record_full_base_target::supports_stopped_by_hw_breakpoint ()
 /* Record registers change (by user or by GDB) to list as an instruction.  */
 
 static void
-record_full_registers_change (struct regcache *regcache, int regnum)
+record_full_registers_change (reg_buffer *regcache, int regnum)
 {
   /* Check record_full_insn_num.  */
   record_full_check_insn_num ();
@@ -1574,7 +1574,8 @@ record_full_registers_change (struct regcache *regcache, int regnum)
 /* "store_registers" method for process record target.  */
 
 void
-record_full_target::store_registers (struct regcache *regcache, int regno)
+record_full_target::store_registers (ptid_t ptid, reg_buffer *regcache,
+                                    int regno)
 {
   if (!record_full_gdb_operation_disable)
     {
@@ -1622,7 +1623,7 @@ record_full_target::store_registers (struct regcache *regcache, int regno)
 
       record_full_registers_change (regcache, regno);
     }
-  this->beneath->store_registers (regcache, regno);
+  this->beneath->store_registers (ptid, regcache, regno);
 }
 
 /* "xfer_partial" method.  Behavior is conditional on
@@ -2124,7 +2125,7 @@ record_full_core_target::prepare_to_store (struct regcache *regcache)
 /* "store_registers" method for prec over corefile.  */
 
 void
-record_full_core_target::store_registers (struct regcache *regcache,
+record_full_core_target::store_registers (ptid_t ptid, reg_buffer *regcache,
                                          int regno)
 {
   if (record_full_gdb_operation_disable)
index 81acfea43642c25c61059d8d3c235555ac5a13c4..139db81d5f226653460c091e74297f29b981bf17 100644 (file)
@@ -22,7 +22,7 @@
 
 extern int record_full_memory_query;
 
-extern int record_full_arch_list_add_reg (struct regcache *regcache, int num);
+extern int record_full_arch_list_add_reg (reg_buffer *regcache, int num);
 extern int record_full_arch_list_add_mem (CORE_ADDR addr, int len);
 extern int record_full_arch_list_add_end (void);
 
index d75b3052e4777600ce08fa7e397e5e0c8a9613d0..71898cf7708c5f7825248b230806d8fd9e2473a3 100644 (file)
@@ -172,7 +172,7 @@ register_size (struct gdbarch *gdbarch, int regnum)
 /* See common/common-regcache.h.  */
 
 int
-regcache_register_size (const struct regcache *regcache, int n)
+regcache_register_size (const regcache *regcache, int n)
 {
   return register_size (regcache->arch (), n);
 }
@@ -759,7 +759,7 @@ regcache::raw_write (int regnum, const gdb_byte *buf)
      failure.  */
   regcache_invalidator invalidator (this, regnum);
 
-  target_store_registers (this, regnum);
+  target_store_registers (ptid (), this, regnum);
 
   /* The target did not throw an error so we can discard invalidating
      the register.  */
@@ -1389,7 +1389,7 @@ public:
   }
 
   void fetch_registers (ptid_t ptid, reg_buffer *regs, int regno) override;
-  void store_registers (regcache *regs, int regno) override;
+  void store_registers (ptid_t ptid, reg_buffer *regs, int regno) override;
 
   enum target_xfer_status xfer_partial (enum target_object object,
                                        const char *annex, gdb_byte *readbuf,
@@ -1412,7 +1412,8 @@ target_ops_no_register::fetch_registers (ptid_t ptid, reg_buffer *regs,
 }
 
 void
-target_ops_no_register::store_registers (regcache *regs, int regno)
+target_ops_no_register::store_registers (ptid_t ptid, reg_buffer *regs,
+                                        int regno)
 {
   this->store_registers_called++;
 }
index 0f1fa1d3dbb4514cba6d94553107aedf618e332e..92aebc5ad665b12a4390da2c6a7f50eee5e53eda 100644 (file)
@@ -425,7 +425,7 @@ public:
   ptid_t wait (ptid_t, struct target_waitstatus *, int) override;
 
   void fetch_registers (ptid_t, reg_buffer *, int) override;
-  void store_registers (struct regcache *, int) override;
+  void store_registers (ptid_t, reg_buffer *, int) override;
   void prepare_to_store (struct regcache *) override;
 
   void files_info () override;
@@ -843,9 +843,9 @@ public: /* Remote specific methods.  */
   int send_g_packet ();
   void process_g_packet (reg_buffer *regcache);
   void fetch_registers_using_g (reg_buffer *regcache);
-  int store_register_using_P (const struct regcache *regcache,
+  int store_register_using_P (const reg_buffer *regcache,
                              packet_reg *reg);
-  void store_registers_using_G (const struct regcache *regcache);
+  void store_registers_using_G (const reg_buffer *regcache);
 
   void set_remote_traceframe ();
 
@@ -8348,7 +8348,7 @@ remote_target::prepare_to_store (struct regcache *regcache)
    packet was not recognized.  */
 
 int
-remote_target::store_register_using_P (const struct regcache *regcache,
+remote_target::store_register_using_P (const reg_buffer *regcache,
                                       packet_reg *reg)
 {
   struct gdbarch *gdbarch = regcache->arch ();
@@ -8389,7 +8389,7 @@ remote_target::store_register_using_P (const struct regcache *regcache,
    contents of the register cache buffer.  FIXME: ignores errors.  */
 
 void
-remote_target::store_registers_using_G (const struct regcache *regcache)
+remote_target::store_registers_using_G (const reg_buffer *regcache)
 {
   struct remote_state *rs = get_remote_state ();
   remote_arch_state *rsa = rs->get_remote_arch_state (regcache->arch ());
@@ -8428,7 +8428,7 @@ remote_target::store_registers_using_G (const struct regcache *regcache)
    of the register cache buffer.  FIXME: ignores errors.  */
 
 void
-remote_target::store_registers (struct regcache *regcache, int regnum)
+remote_target::store_registers (ptid_t ptid, reg_buffer *regcache, int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
   struct remote_state *rs = get_remote_state ();
@@ -8436,7 +8436,7 @@ remote_target::store_registers (struct regcache *regcache, int regnum)
   int i;
 
   set_remote_traceframe ();
-  set_general_thread (regcache->ptid ());
+  set_general_thread (ptid);
 
   if (regnum >= 0)
     {
index 7b8d40fbf3fa92ec024effb09519305f8e56eba8..7c6ee382fcff36fe64c802a71dbc8c114d3fcaa5 100644 (file)
@@ -394,7 +394,7 @@ ran_out_of_registers_for_arguments:
   regcache_raw_write_signed (regcache, tdep->ppc_toc_regnum,
                             solib_aix_get_toc_value (func_addr));
 
-  target_store_registers (regcache, -1);
+  target_store_registers (regcache->ptid (), regcache, -1);
   return sp;
 }
 
index 13eed3aeaeacf01a37aaf70cf9d197101d525bd3..c0869ef7011b89fdbcde36a668f610c93df01f5e 100644 (file)
@@ -253,7 +253,7 @@ ran_out_of_registers_for_arguments:
      breakpoint.  */
   regcache_raw_write_signed (regcache, tdep->ppc_lr_regnum, bp_addr);
 
-  target_store_registers (regcache, -1);
+  target_store_registers (regcache->ptid (), regcache, -1);
   return sp;
 }
 
index ac5a00c017bd3e002ee637b2a1ff7b1ab0f0d6ee..84d58a856f592991aaad0522c38b56439cf2b272 100644 (file)
@@ -194,8 +194,8 @@ sparc32obsd_supply_uthread (reg_buffer *regcache,
 }
 
 static void
-sparc32obsd_collect_uthread(const struct regcache *regcache,
-                           int regnum, CORE_ADDR addr)
+sparc32obsd_collect_uthread (const reg_buffer *regcache, int regnum,
+                            CORE_ADDR addr)
 {
   struct gdbarch *gdbarch = regcache->arch ();
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
index 8a61ad98f577baeef8812c0330e4780b0245b6fb..af5c92700ee2dde56f6f6c1359190b0129d0217a 100644 (file)
@@ -2013,7 +2013,7 @@ sparc_supply_rwindow (reg_buffer *regcache, CORE_ADDR sp, int regnum)
 }
 
 void
-sparc_collect_rwindow (const struct regcache *regcache,
+sparc_collect_rwindow (const reg_buffer *regcache,
                       CORE_ADDR sp, int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
@@ -2201,7 +2201,7 @@ sparc32_collect_gregset (const struct sparc_gregmap *gregmap,
 
 void
 sparc32_supply_fpregset (const struct sparc_fpregmap *fpregmap,
-                        struct regcache *regcache,
+                        reg_buffer *regcache,
                         int regnum, const void *fpregs)
 {
   const gdb_byte *regs = (const gdb_byte *) fpregs;
index 3f0d46e12c440cc6c021cfcb5865c3608bd46955..6e1775d5aae56deb118fe4ed64ac1e04fb61dffb 100644 (file)
@@ -216,7 +216,7 @@ extern int
 
 extern void sparc_supply_rwindow (reg_buffer *regcache,
                                  CORE_ADDR sp, int regnum);
-extern void sparc_collect_rwindow (const struct regcache *regcache,
+extern void sparc_collect_rwindow (const reg_buffer *regcache,
                                   CORE_ADDR sp, int regnum);
 
 /* Register offsets for SunOS 4.  */
index 7a1b4cc12deeef2361778c600cc54b9278aa66be..9fd1b576e233ff4f15a3643c13ae821243be5000 100644 (file)
@@ -365,8 +365,8 @@ sparc64obsd_supply_uthread (reg_buffer *regcache,
 }
 
 static void
-sparc64obsd_collect_uthread(const struct regcache *regcache,
-                           int regnum, CORE_ADDR addr)
+sparc64obsd_collect_uthread (const reg_buffer *regcache,
+                            int regnum, CORE_ADDR addr)
 {
   struct gdbarch *gdbarch = regcache->arch ();
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
index c108ee8bbb3623fb96819bc5e9090340294526a0..8743916bfb6b73b1de1e2b71270b1b74287e1d2a 100644 (file)
@@ -2106,7 +2106,7 @@ sparc64_collect_gregset (const struct sparc_gregmap *gregmap,
 
 void
 sparc64_supply_fpregset (const struct sparc_fpregmap *fpregmap,
-                        struct regcache *regcache,
+                        reg_buffer *regcache,
                         int regnum, const void *fpregs)
 {
   int sparc32 = (gdbarch_ptr_bit (regcache->arch ()) == 32);
index 3681b76587e12ac77c7fba10694abb5fb0b790c4..2c49254334f5851a467e6dbc497794447c281f5e 100644 (file)
@@ -53,7 +53,7 @@ struct spu_multiarch_target final : public target_ops
   void mourn_inferior () override;
 
   void fetch_registers (ptid_t, reg_buffer *, int) override;
-  void store_registers (struct regcache *, int) override;
+  void store_registers (ptid_t, reg_buffer *, int) override;
 
   enum target_xfer_status xfer_partial (enum target_object object,
                                        const char *annex,
@@ -238,7 +238,8 @@ spu_multiarch_target::fetch_registers (ptid_t ptid, reg_buffer *regcache, int re
 /* Override the to_store_registers routine.  */
 
 void
-spu_multiarch_target::store_registers (struct regcache *regcache, int regno)
+spu_multiarch_target::store_registers (ptid_t ptid, reg_buffer *regcache,
+                                      int regno)
 {
   struct gdbarch *gdbarch = regcache->arch ();
   struct target_ops *ops_beneath = find_target_beneath (this);
@@ -248,12 +249,12 @@ spu_multiarch_target::store_registers (struct regcache *regcache, int regno)
   /* Since we use functions that rely on inferior_ptid, we need to set and
      restore it.  */
   scoped_restore save_ptid
-    = make_scoped_restore (&inferior_ptid, regcache->ptid ());
+    = make_scoped_restore (&inferior_ptid, ptid);
 
   /* This version applies only if we're currently in spu_run.  */
   if (gdbarch_bfd_arch_info (gdbarch)->arch != bfd_arch_spu)
     {
-      ops_beneath->store_registers (regcache, regno);
+      ops_beneath->store_registers (ptid, regcache, regno);
       return;
     }
 
index f76edaef0959a67dab71a65c398e24aa4786fc05..604bedf20d85a7f586eab657c80935fed5b145d9 100644 (file)
@@ -17,7 +17,7 @@ struct dummy_target : public target_ops
   void commit_resume () override;
   ptid_t wait (ptid_t arg0, struct target_waitstatus *arg1, int arg2) override;
   void fetch_registers (ptid_t arg0, reg_buffer *arg1, int arg2) override;
-  void store_registers (struct regcache *arg0, int arg1) override;
+  void store_registers (ptid_t arg0, reg_buffer *arg1, int arg2) override;
   void prepare_to_store (struct regcache *arg0) override;
   void files_info () override;
   int insert_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1) override;
@@ -185,7 +185,7 @@ struct debug_target : public target_ops
   void commit_resume () override;
   ptid_t wait (ptid_t arg0, struct target_waitstatus *arg1, int arg2) override;
   void fetch_registers (ptid_t arg0, reg_buffer *arg1, int arg2) override;
-  void store_registers (struct regcache *arg0, int arg1) override;
+  void store_registers (ptid_t arg0, reg_buffer *arg1, int arg2) override;
   void prepare_to_store (struct regcache *arg0) override;
   void files_info () override;
   int insert_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1) override;
@@ -510,26 +510,28 @@ debug_target::fetch_registers (ptid_t arg0, reg_buffer *arg1, int arg2)
 }
 
 void
-target_ops::store_registers (struct regcache *arg0, int arg1)
+target_ops::store_registers (ptid_t arg0, reg_buffer *arg1, int arg2)
 {
-  this->beneath->store_registers (arg0, arg1);
+  this->beneath->store_registers (arg0, arg1, arg2);
 }
 
 void
-dummy_target::store_registers (struct regcache *arg0, int arg1)
+dummy_target::store_registers (ptid_t arg0, reg_buffer *arg1, int arg2)
 {
   noprocess ();
 }
 
 void
-debug_target::store_registers (struct regcache *arg0, int arg1)
+debug_target::store_registers (ptid_t arg0, reg_buffer *arg1, int arg2)
 {
   fprintf_unfiltered (gdb_stdlog, "-> %s->store_registers (...)\n", this->beneath->shortname ());
-  this->beneath->store_registers (arg0, arg1);
+  this->beneath->store_registers (arg0, arg1, arg2);
   fprintf_unfiltered (gdb_stdlog, "<- %s->store_registers (", this->beneath->shortname ());
-  target_debug_print_struct_regcache_p (arg0);
+  target_debug_print_ptid_t (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
-  target_debug_print_int (arg1);
+  target_debug_print_reg_buffer_p (arg1);
+  fputs_unfiltered (", ", gdb_stdlog);
+  target_debug_print_int (arg2);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
index 9dfb925e01c422733da025e3ce5716a3b82a30a8..e701e6c5f79049de323a8718c042f9bb68217f99 100644 (file)
@@ -3524,12 +3524,12 @@ target_fetch_registers (ptid_t ptid, reg_buffer *regcache, int regno)
 }
 
 void
-target_store_registers (struct regcache *regcache, int regno)
+target_store_registers (ptid_t ptid, reg_buffer *regcache, int regno)
 {
   if (!may_write_registers)
     error (_("Writing to registers is not allowed (regno %d)"), regno);
 
-  target_stack->store_registers (regcache, regno);
+  target_stack->store_registers (ptid, regcache, regno);
   if (targetdebug)
     {
       regcache->debug_print_register ("target_store_registers", regno);
index d062113cf11dcc20a27d6d9a4a56f8cce2e83f59..9b179accf4c258b633f38dc7ae8a53191bc335ba 100644 (file)
@@ -475,7 +475,7 @@ struct target_ops
       TARGET_DEFAULT_FUNC (default_target_wait);
     virtual void fetch_registers (ptid_t, reg_buffer *, int)
       TARGET_DEFAULT_IGNORE ();
-    virtual void store_registers (struct regcache *, int)
+    virtual void store_registers (ptid_t, reg_buffer *, int)
       TARGET_DEFAULT_NORETURN (noprocess ());
     virtual void prepare_to_store (struct regcache *)
       TARGET_DEFAULT_NORETURN (noprocess ());
@@ -1377,13 +1377,15 @@ extern ptid_t default_target_wait (struct target_ops *ops,
 
 /* Fetch at least register REGNO, or all regs if regno == -1.  No result.  */
 
-extern void target_fetch_registers (ptid_t ptid, reg_buffer *regcache, int regno);
+extern void target_fetch_registers (ptid_t ptid, reg_buffer *regcache,
+                                   int regno);
 
 /* Store at least register REGNO, or all regs if REGNO == -1.
    It can store as many registers as it wants to, so target_prepare_to_store
    must have been previously called.  Calls error() if there are problems.  */
 
-extern void target_store_registers (struct regcache *regcache, int regs);
+extern void target_store_registers (ptid_t ptid, reg_buffer *regcache,
+                                   int regs);
 
 /* Get ready to modify the registers array.  On machines which store
    individual registers, this doesn't need to do anything.  On machines
@@ -2537,7 +2539,7 @@ public:
   {
   }
 
-  void store_registers (regcache *regs, int regno) override
+  void store_registers (ptid_t ptid, reg_buffer *regs, int regno) override
   {
   }
 };