forked from Imagelibrary/binutils-gdb
Remove some unnecessary inferior_ptid setting/restoring when fetching/storing registers
Now that the to_fetch_registers, to_store_registers and to_prepare_to_store target methods don't rely on the value of inferior_ptid anymore, we can remove a bunch of now unnecessary setting and restoring of inferior_ptid. The asserts added recently in target_fetch_registers and target_store_registers, which validate that inferior_ptid matches the regcache's ptid, must go away. It's the whole point of this effort, to not require inferior_ptid to have a particular value when calling these functions. One thing that I noticed is how sol-thread.c's ps_lgetregs and friends use the current value of inferior_ptid instead of what's passed as argument (ph->ptid), unlike proc-service.c's versions of the same functions. Is it expected? I left it like this in the current patch, but unless there's a good reason for it to be that way, I guess we should make it use the parameter. gdb/ChangeLog: * fbsd-tdep.c (fbsd_corefile_thread): Don't set/restore inferior_ptid. * proc-service.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs): Likewise. * regcache.c (regcache_raw_update, regcache_raw_write): Likewise. * sol-thread.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs): Likewise. * target.c (target_fetch_registers, target_store_registers): Remove asserts.
This commit is contained in:
@@ -872,19 +872,13 @@ ps_ptwrite (gdb_ps_prochandle_t ph, gdb_ps_addr_t addr,
|
||||
ps_err_e
|
||||
ps_lgetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, prgregset_t gregset)
|
||||
{
|
||||
struct cleanup *old_chain;
|
||||
struct regcache *regcache;
|
||||
|
||||
old_chain = save_inferior_ptid ();
|
||||
|
||||
inferior_ptid = ptid_build (ptid_get_pid (inferior_ptid), lwpid, 0);
|
||||
regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ());
|
||||
ptid_t ptid = ptid_build (ptid_get_pid (inferior_ptid), lwpid, 0);
|
||||
struct regcache *regcache
|
||||
= get_thread_arch_regcache (ptid, target_gdbarch ());
|
||||
|
||||
target_fetch_registers (regcache, -1);
|
||||
fill_gregset (regcache, (gdb_gregset_t *) gregset, -1);
|
||||
|
||||
do_cleanups (old_chain);
|
||||
|
||||
return PS_OK;
|
||||
}
|
||||
|
||||
@@ -894,19 +888,13 @@ ps_err_e
|
||||
ps_lsetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
|
||||
const prgregset_t gregset)
|
||||
{
|
||||
struct cleanup *old_chain;
|
||||
struct regcache *regcache;
|
||||
|
||||
old_chain = save_inferior_ptid ();
|
||||
|
||||
inferior_ptid = ptid_build (ptid_get_pid (inferior_ptid), lwpid, 0);
|
||||
regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ());
|
||||
ptid_t ptid = ptid_build (ptid_get_pid (inferior_ptid), lwpid, 0);
|
||||
struct regcache *regcache
|
||||
= get_thread_arch_regcache (ptid, target_gdbarch ());
|
||||
|
||||
supply_gregset (regcache, (const gdb_gregset_t *) gregset);
|
||||
target_store_registers (regcache, -1);
|
||||
|
||||
do_cleanups (old_chain);
|
||||
|
||||
return PS_OK;
|
||||
}
|
||||
|
||||
@@ -952,19 +940,13 @@ ps_err_e
|
||||
ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
|
||||
prfpregset_t *fpregset)
|
||||
{
|
||||
struct cleanup *old_chain;
|
||||
struct regcache *regcache;
|
||||
|
||||
old_chain = save_inferior_ptid ();
|
||||
|
||||
inferior_ptid = ptid_build (ptid_get_pid (inferior_ptid), lwpid, 0);
|
||||
regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ());
|
||||
ptid_t ptid = ptid_build (ptid_get_pid (inferior_ptid), lwpid, 0);
|
||||
struct regcache *regcache
|
||||
= get_thread_arch_regcache (ptid, target_gdbarch ());
|
||||
|
||||
target_fetch_registers (regcache, -1);
|
||||
fill_fpregset (regcache, (gdb_fpregset_t *) fpregset, -1);
|
||||
|
||||
do_cleanups (old_chain);
|
||||
|
||||
return PS_OK;
|
||||
}
|
||||
|
||||
@@ -974,19 +956,13 @@ ps_err_e
|
||||
ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
|
||||
const prfpregset_t * fpregset)
|
||||
{
|
||||
struct cleanup *old_chain;
|
||||
struct regcache *regcache;
|
||||
|
||||
old_chain = save_inferior_ptid ();
|
||||
|
||||
inferior_ptid = ptid_build (ptid_get_pid (inferior_ptid), lwpid, 0);
|
||||
regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ());
|
||||
ptid_t ptid = ptid_build (ptid_get_pid (inferior_ptid), lwpid, 0);
|
||||
struct regcache *regcache
|
||||
= get_thread_arch_regcache (ptid, target_gdbarch ());
|
||||
|
||||
supply_fpregset (regcache, (const gdb_fpregset_t *) fpregset);
|
||||
target_store_registers (regcache, -1);
|
||||
|
||||
do_cleanups (old_chain);
|
||||
|
||||
return PS_OK;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user