diff options
author | Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> | 2025-01-09 13:45:51 +0100 |
---|---|---|
committer | Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> | 2025-01-09 13:45:51 +0100 |
commit | 2063681a381c2b582f811d47658f7383b85ac21a (patch) | |
tree | f9c6d2d559a6d6fc085d75f40b2398db0e4561fe | |
parent | dabe45ce0c3b5a04029164646024e7c99d4b8649 (diff) | |
download | binutils-2063681a381c2b582f811d47658f7383b85ac21a.zip binutils-2063681a381c2b582f811d47658f7383b85ac21a.tar.gz binutils-2063681a381c2b582f811d47658f7383b85ac21a.tar.bz2 |
gdbserver: introduce and use regcache::set_register_status
Introduce and use a setter method in regcache to set the status of a
register. There already exists get_register_status. So, it made
sense to add the setter to control access to the register_status
field.
In two places, we also do cosmetic improvements to for-loops.
Approved-By: Simon Marchi <simon.marchi@efficios.com>
-rw-r--r-- | gdbserver/regcache.cc | 38 | ||||
-rw-r--r-- | gdbserver/regcache.h | 3 |
2 files changed, 21 insertions, 20 deletions
diff --git a/gdbserver/regcache.cc b/gdbserver/regcache.cc index 516ecab..2c491d6 100644 --- a/gdbserver/regcache.cc +++ b/gdbserver/regcache.cc @@ -327,16 +327,14 @@ regcache::raw_supply (int n, gdb::array_view<const gdb_byte> src) { copy (src, dst); #ifndef IN_PROCESS_AGENT - if (register_status != NULL) - register_status[n] = REG_VALID; + set_register_status (n, REG_VALID); #endif } else { memset (dst.data (), 0, dst.size ()); #ifndef IN_PROCESS_AGENT - if (register_status != NULL) - register_status[n] = REG_UNAVAILABLE; + set_register_status (n, REG_UNAVAILABLE); #endif } } @@ -349,8 +347,7 @@ supply_register_zeroed (struct regcache *regcache, int n) auto dst = register_data (regcache, n); memset (dst.data (), 0, dst.size ()); #ifndef IN_PROCESS_AGENT - if (regcache->register_status != NULL) - regcache->register_status[n] = REG_VALID; + regcache->set_register_status (n, REG_VALID); #endif } @@ -360,8 +357,7 @@ regcache::raw_supply_part_zeroed (int regnum, int offset, size_t size) auto dst = register_data (this, regnum).slice (offset, size); memset (dst.data (), 0, dst.size ()); #ifndef IN_PROCESS_AGENT - if (register_status != NULL) - register_status[regnum] = REG_VALID; + set_register_status (regnum, REG_VALID); #endif } @@ -391,12 +387,8 @@ supply_regblock (struct regcache *regcache, const void *buf) memcpy (regcache->registers, buf, tdesc->registers_size); #ifndef IN_PROCESS_AGENT - { - int i; - - for (i = 0; i < tdesc->reg_defs.size (); i++) - regcache->register_status[i] = REG_VALID; - } + for (int i = 0; i < tdesc->reg_defs.size (); i++) + regcache->set_register_status (i, REG_VALID); #endif } else @@ -405,12 +397,8 @@ supply_regblock (struct regcache *regcache, const void *buf) memset (regcache->registers, 0, tdesc->registers_size); #ifndef IN_PROCESS_AGENT - { - int i; - - for (i = 0; i < tdesc->reg_defs.size (); i++) - regcache->register_status[i] = REG_UNAVAILABLE; - } + for (int i = 0; i < tdesc->reg_defs.size (); i++) + regcache->set_register_status (i, REG_UNAVAILABLE); #endif } } @@ -531,6 +519,16 @@ regcache::get_register_status (int regnum) const #endif } +void +regcache::set_register_status (int regnum, enum register_status status) +{ +#ifndef IN_PROCESS_AGENT + gdb_assert (regnum >= 0 && regnum < tdesc->reg_defs.size ()); + if (register_status != nullptr) + register_status[regnum] = status; +#endif +} + /* See gdbsupport/common-regcache.h. */ bool diff --git a/gdbserver/regcache.h b/gdbserver/regcache.h index 190a06e..6fc0445 100644 --- a/gdbserver/regcache.h +++ b/gdbserver/regcache.h @@ -50,6 +50,9 @@ struct regcache : public reg_buffer_common /* See gdbsupport/common-regcache.h. */ enum register_status get_register_status (int regnum) const override; + /* Set the status of register REGNUM to STATUS. */ + void set_register_status (int regnum, enum register_status status); + /* See gdbsupport/common-regcache.h. */ int register_size (int regnum) const override; |