diff options
author | Simon Marchi <simon.marchi@polymtl.ca> | 2018-06-20 12:49:03 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@ericsson.com> | 2018-06-20 12:49:03 -0400 |
commit | 302abd6e9facdfec3473e19ff65a5479f850ad62 (patch) | |
tree | b646934ec16de81d5b50fb474b3253e822b8bf63 /gdb/ppc-linux-tdep.c | |
parent | f00674fe074f6ea778503a50132c3214a9c6aec8 (diff) | |
download | gdb-302abd6e9facdfec3473e19ff65a5479f850ad62.zip gdb-302abd6e9facdfec3473e19ff65a5479f850ad62.tar.gz gdb-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/ppc-linux-tdep.c')
-rw-r--r-- | gdb/ppc-linux-tdep.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c index f26882fe..9f4c1fc 100644 --- a/gdb/ppc-linux-tdep.c +++ b/gdb/ppc-linux-tdep.c @@ -1371,9 +1371,8 @@ struct ppu2spu_data }; static enum register_status -ppu2spu_unwind_register (void *src, int regnum, gdb_byte *buf) +ppu2spu_unwind_register (ppu2spu_data *data, int regnum, gdb_byte *buf) { - struct ppu2spu_data *data = (struct ppu2spu_data *) src; enum bfd_endian byte_order = gdbarch_byte_order (data->gdbarch); if (regnum >= 0 && regnum < SPU_NUM_GPRS) @@ -1435,12 +1434,14 @@ ppu2spu_sniffer (const struct frame_unwind *self, data.gprs, 0, sizeof data.gprs) == sizeof data.gprs) { + auto cooked_read = [&data] (int regnum, gdb_byte *buf) + { + return ppu2spu_unwind_register (&data, regnum, buf); + }; struct ppu2spu_cache *cache = FRAME_OBSTACK_CALLOC (1, struct ppu2spu_cache); std::unique_ptr<readonly_detached_regcache> regcache - (new readonly_detached_regcache (data.gdbarch, - ppu2spu_unwind_register, - &data)); + (new readonly_detached_regcache (data.gdbarch, cooked_read)); cache->frame_id = frame_id_build (base, func); cache->regcache = regcache.release (); |