aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTankut Baris Aktemur <tankut.baris.aktemur@intel.com>2024-12-17 08:48:02 +0100
committerTankut Baris Aktemur <tankut.baris.aktemur@intel.com>2024-12-17 08:48:02 +0100
commit2903d618081ac1897beca4ef5cfdb0550f2569e1 (patch)
treefd4739829be52c5d2bef4bedb1c320e290609a08
parenta030e43267f37681961866760156d74b4e9e30d6 (diff)
downloadgdb-2903d618081ac1897beca4ef5cfdb0550f2569e1.zip
gdb-2903d618081ac1897beca4ef5cfdb0550f2569e1.tar.gz
gdb-2903d618081ac1897beca4ef5cfdb0550f2569e1.tar.bz2
gdbserver: by-pass regcache to access tdesc only
The `get_thread_regcache` function has a `fetch` option to skip fetching the registers from the target. It seems this option is set to false only at uses where we just need to access the tdesc through the regcache of the current thread, as in struct regcache *regcache = get_thread_regcache (current_thread, 0); ... regcache->tdesc ... Since the tdesc of a regcache is set from the process of the thread that owns the regcache, we can simplify the code to access the tdesc via the process, as in ... current_process ()->tdesc ... This is intended to be a refactoring with no behavioral change. Tested only for the linux-x86-low target. Approved-By: Simon Marchi <simon.marchi@efficios.com>
-rw-r--r--gdbserver/linux-ppc-low.cc10
-rw-r--r--gdbserver/linux-s390-low.cc14
-rw-r--r--gdbserver/linux-x86-low.cc7
3 files changed, 9 insertions, 22 deletions
diff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc
index b9d00b1..d3c8667 100644
--- a/gdbserver/linux-ppc-low.cc
+++ b/gdbserver/linux-ppc-low.cc
@@ -1607,8 +1607,7 @@ ppc_target::install_fast_tracepoint_jump_pad (CORE_ADDR tpoint,
const CORE_ADDR entryaddr = *jump_entry;
int rsz, min_frame, frame_size, tp_reg;
#ifdef __powerpc64__
- struct regcache *regcache = get_thread_regcache (current_thread, 0);
- int is_64 = register_size (regcache->tdesc, 0) == 8;
+ int is_64 = register_size (current_process ()->tdesc, 0) == 8;
int is_opd = is_64 && !is_elfv2_inferior ();
#else
int is_64 = 0, is_opd = 0;
@@ -3379,9 +3378,7 @@ emit_ops *
ppc_target::emit_ops ()
{
#ifdef __powerpc64__
- struct regcache *regcache = get_thread_regcache (current_thread, 0);
-
- if (register_size (regcache->tdesc, 0) == 8)
+ if (register_size (current_process ()->tdesc, 0) == 8)
{
if (is_elfv2_inferior ())
return &ppc64v2_emit_ops_impl;
@@ -3397,8 +3394,7 @@ ppc_target::emit_ops ()
int
ppc_target::get_ipa_tdesc_idx ()
{
- struct regcache *regcache = get_thread_regcache (current_thread, 0);
- const struct target_desc *tdesc = regcache->tdesc;
+ const target_desc *tdesc = current_process ()->tdesc;
#ifdef __powerpc64__
if (tdesc == tdesc_powerpc_64l)
diff --git a/gdbserver/linux-s390-low.cc b/gdbserver/linux-s390-low.cc
index a91c77f..cd874f6 100644
--- a/gdbserver/linux-s390-low.cc
+++ b/gdbserver/linux-s390-low.cc
@@ -796,9 +796,7 @@ s390_target::low_get_thread_area (int lwpid, CORE_ADDR *addrp)
{
CORE_ADDR res = ptrace (PTRACE_PEEKUSER, lwpid, (long) PT_ACR0, (long) 0);
#ifdef __s390x__
- struct regcache *regcache = get_thread_regcache (current_thread, 0);
-
- if (register_size (regcache->tdesc, 0) == 4)
+ if (register_size (current_process ()->tdesc, 0) == 4)
res &= 0xffffffffull;
#endif
*addrp = res;
@@ -1286,8 +1284,7 @@ s390_target::install_fast_tracepoint_jump_pad
unsigned char jbuf[6] = { 0xc0, 0xf4, 0, 0, 0, 0 }; /* jg ... */
CORE_ADDR buildaddr = *jump_entry;
#ifdef __s390x__
- struct regcache *regcache = get_thread_regcache (current_thread, 0);
- int is_64 = register_size (regcache->tdesc, 0) == 8;
+ int is_64 = register_size (current_process ()->tdesc, 0) == 8;
int is_zarch = is_64 || have_hwcap_s390_high_gprs;
int has_vx = have_hwcap_s390_vx;
#else
@@ -1451,8 +1448,7 @@ s390_target::get_min_fast_tracepoint_insn_len ()
int
s390_target::get_ipa_tdesc_idx ()
{
- struct regcache *regcache = get_thread_regcache (current_thread, 0);
- const struct target_desc *tdesc = regcache->tdesc;
+ const target_desc *tdesc = current_process ()->tdesc;
#ifdef __s390x__
if (tdesc == tdesc_s390x_linux64)
@@ -2839,9 +2835,7 @@ emit_ops *
s390_target::emit_ops ()
{
#ifdef __s390x__
- struct regcache *regcache = get_thread_regcache (current_thread, 0);
-
- if (register_size (regcache->tdesc, 0) == 8)
+ if (register_size (current_process ()->tdesc, 0) == 8)
return &s390x_emit_ops;
else
#endif
diff --git a/gdbserver/linux-x86-low.cc b/gdbserver/linux-x86-low.cc
index d955a71..ad7ed1c 100644
--- a/gdbserver/linux-x86-low.cc
+++ b/gdbserver/linux-x86-low.cc
@@ -284,9 +284,7 @@ static /*const*/ int i386_regmap[] =
static int
is_64bit_tdesc (thread_info *thread)
{
- struct regcache *regcache = get_thread_regcache (thread, 0);
-
- return register_size (regcache->tdesc, 0) == 8;
+ return register_size (thread->process ()->tdesc, 0) == 8;
}
#endif
@@ -2876,8 +2874,7 @@ x86_target::low_supports_range_stepping ()
int
x86_target::get_ipa_tdesc_idx ()
{
- struct regcache *regcache = get_thread_regcache (current_thread, 0);
- const struct target_desc *tdesc = regcache->tdesc;
+ const target_desc *tdesc = current_process ()->tdesc;
if (!use_xml)
{