* target.h (struct regcache): Add forward declaration.
[deliverable/binutils-gdb.git] / gdb / proc-service.c
index 8d63e98219606ea77d7dfb843a3219dbe2850f8e..6d3eb886e321473ebe8a81ae5b821b8eaa2f222d 100644 (file)
@@ -1,5 +1,6 @@
 /* <proc_service.h> implementation.
-   Copyright 1999, 2000 Free Software Foundation, Inc.
+
+   Copyright (C) 1999, 2000, 2002, 2007 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,8 +16,8 @@
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 #include "defs.h"
 
@@ -26,6 +27,7 @@
 #include "inferior.h"
 #include "symtab.h"
 #include "target.h"
+#include "regcache.h"
 
 /* Prototypes for supply_gregset etc.  */
 #include "gregset.h"
@@ -66,7 +68,7 @@ typedef size_t gdb_ps_size_t;
 
 static ps_err_e
 ps_xfer_memory (const struct ps_prochandle *ph, paddr_t addr,
-               char *buf, size_t len, int write)
+               gdb_byte *buf, size_t len, int write)
 {
   struct cleanup *old_chain = save_inferior_ptid ();
   int ret;
@@ -200,7 +202,7 @@ ps_err_e
 ps_pdwrite (gdb_ps_prochandle_t ph, paddr_t addr,
            gdb_ps_write_buf_t buf, gdb_ps_size_t size)
 {
-  return ps_xfer_memory (ph, addr, (char *) buf, size, 1);
+  return ps_xfer_memory (ph, addr, (gdb_byte *) buf, size, 1);
 }
 
 /* Read SIZE bytes from the target process PH at address ADDR and copy
@@ -210,7 +212,7 @@ ps_err_e
 ps_ptread (gdb_ps_prochandle_t ph, paddr_t addr,
           gdb_ps_read_buf_t buf, gdb_ps_size_t size)
 {
-  return ps_xfer_memory (ph, addr, buf, size, 0);
+  return ps_xfer_memory (ph, addr, (gdb_byte *) buf, size, 0);
 }
 
 /* Write SIZE bytes from BUF into the target process PH at address ADDR.  */
@@ -219,7 +221,7 @@ ps_err_e
 ps_ptwrite (gdb_ps_prochandle_t ph, paddr_t addr,
            gdb_ps_write_buf_t buf, gdb_ps_size_t size)
 {
-  return ps_xfer_memory (ph, addr, (char *) buf, size, 1);
+  return ps_xfer_memory (ph, addr, (gdb_byte *) buf, size, 1);
 }
 
 /* Get the general registers of LWP LWPID within the target process PH
@@ -232,8 +234,8 @@ ps_lgetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, prgregset_t gregset)
 
   inferior_ptid = BUILD_LWP (lwpid, ph->pid);
 
-  target_fetch_registers (-1);
-  fill_gregset ((gdb_gregset_t *) gregset, -1);
+  target_fetch_registers (current_regcache, -1);
+  fill_gregset (current_regcache, (gdb_gregset_t *) gregset, -1);
 
   do_cleanups (old_chain);
   return PS_OK;
@@ -249,9 +251,8 @@ ps_lsetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, const prgregset_t gregset)
 
   inferior_ptid = BUILD_LWP (lwpid, ph->pid);
 
-  /* FIXME: We should really make supply_gregset const-correct.  */
-  supply_gregset ((gdb_gregset_t *) gregset);
-  target_store_registers (-1);
+  supply_gregset (current_regcache, (const gdb_gregset_t *) gregset);
+  target_store_registers (current_regcache, -1);
 
   do_cleanups (old_chain);
   return PS_OK;
@@ -268,8 +269,8 @@ ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
 
   inferior_ptid = BUILD_LWP (lwpid, ph->pid);
 
-  target_fetch_registers (-1);
-  fill_fpregset ((gdb_fpregset_t *) fpregset, -1);
+  target_fetch_registers (current_regcache, -1);
+  fill_fpregset (current_regcache, (gdb_fpregset_t *) fpregset, -1);
 
   do_cleanups (old_chain);
   return PS_OK;
@@ -286,16 +287,15 @@ ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
 
   inferior_ptid = BUILD_LWP (lwpid, ph->pid);
 
-  /* FIXME: We should really make supply_fpregset const-correct.  */
-  supply_fpregset ((gdb_fpregset_t *) fpregset);
-  target_store_registers (-1);
+  supply_fpregset (current_regcache, (const gdb_fpregset_t *) fpregset);
+  target_store_registers (current_regcache, -1);
 
   do_cleanups (old_chain);
   return PS_OK;
 }
 
-/* Return overall process id of the target PH.
-   Special for Linux -- not used on Solaris.  */
+/* Return overall process id of the target PH.  Special for GNU/Linux
+   -- not used on Solaris.  */
 
 pid_t
 ps_getpid (gdb_ps_prochandle_t ph)
This page took 0.031168 seconds and 4 git commands to generate.