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>
This commit is contained in:
Tankut Baris Aktemur
2024-12-17 08:48:02 +01:00
parent a030e43267
commit 2903d61808
3 changed files with 9 additions and 22 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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)
{