From 3e00d44febb8093d8dc0e6842b975afb194c4fd1 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Thu, 23 Mar 2017 13:37:06 -0400 Subject: 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. --- gdb/proc-service.c | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) (limited to 'gdb/proc-service.c') diff --git a/gdb/proc-service.c b/gdb/proc-service.c index d39830c..415ba0a 100644 --- a/gdb/proc-service.c +++ b/gdb/proc-service.c @@ -158,16 +158,13 @@ ps_pdwrite (gdb_ps_prochandle_t ph, psaddr_t addr, ps_err_e ps_lgetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, prgregset_t gregset) { - struct cleanup *old_chain = save_inferior_ptid (); - struct regcache *regcache; - - inferior_ptid = ptid_build (ptid_get_pid (ph->ptid), lwpid, 0); - regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ()); + ptid_t ptid = ptid_build (ptid_get_pid (ph->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; } @@ -177,16 +174,13 @@ ps_lgetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, prgregset_t gregset) ps_err_e ps_lsetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, const prgregset_t gregset) { - struct cleanup *old_chain = save_inferior_ptid (); - struct regcache *regcache; - - inferior_ptid = ptid_build (ptid_get_pid (ph->ptid), lwpid, 0); - regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ()); + ptid_t ptid = ptid_build (ptid_get_pid (ph->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; } @@ -197,16 +191,13 @@ ps_err_e ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, gdb_prfpregset_t *fpregset) { - struct cleanup *old_chain = save_inferior_ptid (); - struct regcache *regcache; - - inferior_ptid = ptid_build (ptid_get_pid (ph->ptid), lwpid, 0); - regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ()); + ptid_t ptid = ptid_build (ptid_get_pid (ph->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; } @@ -217,16 +208,13 @@ ps_err_e ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, const gdb_prfpregset_t *fpregset) { - struct cleanup *old_chain = save_inferior_ptid (); - struct regcache *regcache; - - inferior_ptid = ptid_build (ptid_get_pid (ph->ptid), lwpid, 0); - regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ()); + ptid_t ptid = ptid_build (ptid_get_pid (ph->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; } -- cgit v1.1