/* libthread_db helper functions for the remote server for GDB.
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 Free Software Foundation, Inc.
Contributed by MontaVista Software.
#ifdef HAVE_REGSETS
static struct regset_info *
-gregset_info(void)
+gregset_info (void)
{
int i = 0;
+ const struct regs_info *regs_info = (*the_low_target.regs_info) ();
+ struct regsets_info *regsets_info = regs_info->regsets_info;
- while (target_regsets[i].size != -1)
+ while (regsets_info->regsets[i].size != -1)
{
- if (target_regsets[i].type == GENERAL_REGS)
+ if (regsets_info->regsets[i].type == GENERAL_REGS)
break;
i++;
}
- return &target_regsets[i];
+ return ®sets_info->regsets[i];
}
#endif
ps_pdread (gdb_ps_prochandle_t ph, psaddr_t addr,
gdb_ps_read_buf_t buf, gdb_ps_size_t size)
{
- read_inferior_memory ((unsigned long) addr, buf, size);
+ if (read_inferior_memory ((uintptr_t) addr, (gdb_byte *) buf, size) != 0)
+ return PS_ERR;
return PS_OK;
}
ps_pdwrite (gdb_ps_prochandle_t ph, psaddr_t addr,
gdb_ps_write_buf_t buf, gdb_ps_size_t size)
{
- return write_inferior_memory ((unsigned long) addr, buf, size);
+ if (write_inferior_memory ((uintptr_t) addr, (const gdb_byte *) buf, size)
+ != 0)
+ return PS_ERR;
+ return PS_OK;
}
/* Get the general registers of LWP LWPID within the target process PH
{
#ifdef HAVE_REGSETS
struct lwp_info *lwp;
- struct thread_info *reg_inferior, *save_inferior;
+ struct thread_info *reg_thread, *saved_thread;
struct regcache *regcache;
lwp = find_lwp_pid (pid_to_ptid (lwpid));
if (lwp == NULL)
return PS_ERR;
- reg_inferior = get_lwp_thread (lwp);
- save_inferior = current_inferior;
- current_inferior = reg_inferior;
- regcache = get_thread_regcache (current_inferior, 1);
+ reg_thread = get_lwp_thread (lwp);
+ saved_thread = current_thread;
+ current_thread = reg_thread;
+ regcache = get_thread_regcache (current_thread, 1);
gregset_info ()->fill_function (regcache, gregset);
- current_inferior = save_inferior;
+ current_thread = saved_thread;
return PS_OK;
#else
return PS_ERR;
process PH and store them in FPREGSET. */
ps_err_e
-ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, void *fpregset)
+ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, prfpregset_t *fpregset)
{
/* Unneeded. */
return PS_ERR;
process PH from FPREGSET. */
ps_err_e
-ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, void *fpregset)
+ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, const prfpregset_t *fpregset)
{
/* Unneeded. */
return PS_ERR;
pid_t
ps_getpid (gdb_ps_prochandle_t ph)
{
- return pid_of (get_thread_lwp (current_inferior));
+ return pid_of (current_thread);
}