/* libthread_db helper functions for the remote server for GDB.
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009
- Free Software Foundation, Inc.
+ Copyright (C) 2002-2015 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
{
CORE_ADDR addr;
- if (look_up_one_symbol (name, &addr) == 0)
+ if (thread_db_look_up_one_symbol (name, &addr) == 0)
return PS_NOSYM;
*sym_addr = (psaddr_t) (unsigned long) addr;
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);
+ read_inferior_memory ((uintptr_t) addr, (gdb_byte *) buf, size);
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
ps_lgetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, prgregset_t gregset)
{
#ifdef HAVE_REGSETS
- struct process_info *process;
- struct thread_info *reg_inferior, *save_inferior;
+ struct lwp_info *lwp;
+ struct thread_info *reg_thread, *saved_thread;
+ struct regcache *regcache;
- process = (struct process_info *) find_inferior_id (&all_processes,
- lwpid);
- if (process == NULL)
+ lwp = find_lwp_pid (pid_to_ptid (lwpid));
+ if (lwp == NULL)
return PS_ERR;
- reg_inferior = get_process_thread (process);
- save_inferior = current_inferior;
- current_inferior = reg_inferior;
-
- the_target->fetch_registers (0);
- gregset_info()->fill_function (gregset);
+ 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 ph->pid;
+ return pid_of (current_thread);
}
-
-