aboutsummaryrefslogtreecommitdiff
path: root/gdb/regcache.h
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2018-06-20 12:49:03 -0400
committerSimon Marchi <simon.marchi@ericsson.com>2018-06-20 12:49:03 -0400
commit302abd6e9facdfec3473e19ff65a5479f850ad62 (patch)
treeb646934ec16de81d5b50fb474b3253e822b8bf63 /gdb/regcache.h
parentf00674fe074f6ea778503a50132c3214a9c6aec8 (diff)
downloadbinutils-302abd6e9facdfec3473e19ff65a5479f850ad62.zip
binutils-302abd6e9facdfec3473e19ff65a5479f850ad62.tar.gz
binutils-302abd6e9facdfec3473e19ff65a5479f850ad62.tar.bz2
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.
Diffstat (limited to 'gdb/regcache.h')
-rw-r--r--gdb/regcache.h15
1 files changed, 6 insertions, 9 deletions
diff --git a/gdb/regcache.h b/gdb/regcache.h
index 41465fb..74ac858 100644
--- a/gdb/regcache.h
+++ b/gdb/regcache.h
@@ -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);