regcache: Add collect/supply_regset variants that accept a register base.
authorJohn Baldwin <jhb@FreeBSD.org>
Tue, 22 Nov 2022 22:21:13 +0000 (14:21 -0800)
committerJohn Baldwin <jhb@FreeBSD.org>
Tue, 22 Nov 2022 22:33:17 +0000 (14:33 -0800)
commit0ee9f16cf9ff849fda1555033ae0ce78d028bf86
tree5acef3fe6a904ea2b1a2c1d6460b296948d84912
parent04ad71937f28561ad5a2bbbc7e8f0af21e1019f8
regcache: Add collect/supply_regset variants that accept a register base.

Some register sets described by an array of regcache_map_entry
structures do not have fixed register numbers in their associated
architecture but do describe a block of registers whose numbers are at
fixed offsets relative to some base register value.  An example of
this are the TLS register sets for the ARM and AArch64 architectures.

Currently OS-specific architectures create register maps and register
sets dynamically using the register base number.  However, this
requires duplicating the code to create the register map and register
set.  To reduce duplication, add variants of the collect_regset and
supply_regset regcache methods which accept a base register number.
For valid register map entries (i.e. not REGCACHE_MAP_SKIP), add this
base register number to the value from the map entry to determine the
final register number.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
gdb/regcache.c
gdb/regcache.h