forked from Imagelibrary/binutils-gdb
Rename regcache_cooked_read_ftype and make a function_view
regcache_cooked_read_ftype can be converted to a function_view, which allows us to use lambda functions and therefore avoid having to pass an opaque pointer parameter. Adjusting the fallouts showed that the "const regcache &" passed to the readonly_detached_regcache constructor is cast to non-const in do_cooked_read. I changed the constructor parameter to be non-const. Finally, I renamed the typedef from regcache_cooked_read_ftype to register_read_ftype, since there is nothing that forces us to use it only for regcaches nor cooked registers. gdb/ChangeLog: * regcache.h (regcache_cooked_read_ftype): Rename to... (register_read_ftype): ...this, change type to function_view. (class reg_buffer) <save>: Remove src parameter. (readonly_detached_regcache) <readonly_detached_regcache>: Make parameter non-const in first overload. Remove src parameter in second overload. * regcache.c (do_cooked_read): Remove. (readonly_detached_regcache::readonly_detached_regcache): Make parameter non-const, adjust call to other constructor. (reg_buffer::save): Remove src parameter. * frame.c (do_frame_register_read): Remove. (frame_save_as_regcache): Use lambda function. * ppc-linux-tdep.c (ppu2spu_unwind_register): Change type of src parameter to ppu2spu_data *. (ppu2spu_sniffer): Use lambda function.
This commit is contained in:
committed by
Simon Marchi
parent
f00674fe07
commit
302abd6e9f
@@ -125,9 +125,8 @@ extern struct type *register_type (struct gdbarch *gdbarch, int regnum);
|
||||
|
||||
extern int register_size (struct gdbarch *gdbarch, int regnum);
|
||||
|
||||
typedef enum register_status (regcache_cooked_read_ftype) (void *src,
|
||||
int regnum,
|
||||
gdb_byte *buf);
|
||||
typedef gdb::function_view<register_status (int regnum, gdb_byte *buf)>
|
||||
register_read_ftype;
|
||||
|
||||
/* A (register_number, register_value) pair. */
|
||||
|
||||
@@ -202,7 +201,7 @@ protected:
|
||||
/* Save a register cache. The set of registers saved into the
|
||||
regcache determined by the save_reggroup. COOKED_READ returns
|
||||
zero iff the register's value can't be returned. */
|
||||
void save (regcache_cooked_read_ftype *cooked_read, void *src);
|
||||
void save (register_read_ftype cooked_read);
|
||||
|
||||
struct regcache_descr *m_descr;
|
||||
|
||||
@@ -379,16 +378,14 @@ private:
|
||||
class readonly_detached_regcache : public readable_regcache
|
||||
{
|
||||
public:
|
||||
readonly_detached_regcache (const regcache &src);
|
||||
readonly_detached_regcache (regcache &src);
|
||||
|
||||
/* Create a readonly regcache by getting contents from COOKED_READ. */
|
||||
|
||||
readonly_detached_regcache (gdbarch *gdbarch,
|
||||
regcache_cooked_read_ftype *cooked_read,
|
||||
void *src)
|
||||
readonly_detached_regcache (gdbarch *gdbarch, register_read_ftype cooked_read)
|
||||
: readable_regcache (gdbarch, true)
|
||||
{
|
||||
save (cooked_read, src);
|
||||
save (cooked_read);
|
||||
}
|
||||
|
||||
DISABLE_COPY_AND_ASSIGN (readonly_detached_regcache);
|
||||
|
||||
Reference in New Issue
Block a user