diff options
author | Tom de Vries <tdevries@suse.de> | 2024-11-12 11:37:50 +0100 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2024-11-12 11:37:50 +0100 |
commit | a4a5f05266b69ebe8172433217d47cc7a737e51d (patch) | |
tree | 6d9411eb6ea8c52aa4c2f67bb6bc5033693a6c7c /gdb/regcache.c | |
parent | 510fa4aadb1c6509ebbbe55b901231c45039efd8 (diff) | |
download | gdb-a4a5f05266b69ebe8172433217d47cc7a737e51d.zip gdb-a4a5f05266b69ebe8172433217d47cc7a737e51d.tar.gz gdb-a4a5f05266b69ebe8172433217d47cc7a737e51d.tar.bz2 |
[gdb/tdep] Use raw_supply_part_zeroed for AArch64
In gdb/aarch64-linux-tdep.c we find:
...
gdb::byte_vector za_zeroed (za_bytes, 0);
regcache->raw_supply (tdep->sme_za_regnum, za_zeroed);
...
We can't use reg_buffer::raw_supply_zeroed here because only part of the
register is written.
Add raw_supply_part_zeroed, and use it instead.
Likewise elsewhere in AArch64 tdep code.
Tested on aarch64-linux.
Approved-By: Luis Machado <luis.machado@arm.com>
Diffstat (limited to 'gdb/regcache.c')
-rw-r--r-- | gdb/regcache.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gdb/regcache.c b/gdb/regcache.c index f04354d..ab3f616 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -1190,6 +1190,16 @@ reg_buffer::raw_supply_zeroed (int regnum) /* See gdbsupport/common-regcache.h. */ void +reg_buffer::raw_supply_part_zeroed (int regnum, int offset, size_t size) +{ + gdb::array_view<gdb_byte> dst = register_buffer (regnum).slice (offset, size); + memset (dst.data (), 0, dst.size ()); + m_register_status[regnum] = REG_VALID; +} + +/* See gdbsupport/common-regcache.h. */ + +void reg_buffer::raw_collect (int regnum, gdb::array_view<gdb_byte> dst) const { gdb::array_view<const gdb_byte> src = register_buffer (regnum); |