diff options
Diffstat (limited to 'gdb/gdbserver')
-rw-r--r-- | gdb/gdbserver/Makefile.in | 1 | ||||
-rw-r--r-- | gdb/gdbserver/regcache.c | 8 | ||||
-rw-r--r-- | gdb/gdbserver/regcache.h | 20 |
3 files changed, 15 insertions, 14 deletions
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in index 675faa4..f924e6a 100644 --- a/gdb/gdbserver/Makefile.in +++ b/gdb/gdbserver/Makefile.in @@ -219,6 +219,7 @@ SFILES = \ $(srcdir)/common/tdesc.c \ $(srcdir)/common/vec.c \ $(srcdir)/common/xml-utils.c \ + $(srcdir)/nat/aarch64-sve-linux-ptrace.c \ $(srcdir)/nat/linux-btrace.c \ $(srcdir)/nat/linux-namespaces.c \ $(srcdir)/nat/linux-osdata.c \ diff --git a/gdb/gdbserver/regcache.c b/gdb/gdbserver/regcache.c index 88f0db0..39bc6f0 100644 --- a/gdb/gdbserver/regcache.c +++ b/gdb/gdbserver/regcache.c @@ -159,7 +159,7 @@ init_register_cache (struct regcache *regcache, struct regcache * new_register_cache (const struct target_desc *tdesc) { - struct regcache *regcache = XCNEW (struct regcache); + struct regcache *regcache = new struct regcache; gdb_assert (tdesc->registers_size != 0); @@ -174,7 +174,7 @@ free_register_cache (struct regcache *regcache) if (regcache->registers_owned) free (regcache->registers); free (regcache->register_status); - free (regcache); + delete regcache; } } @@ -506,10 +506,10 @@ regcache::get_register_status (int regnum) const first OFFSET bytes) to the contents of BUF (without any offset). Returns 0 if identical. */ -int +bool regcache::raw_compare (int regnum, const void *buf, int offset) const { gdb_assert (register_size (tdesc, regnum) > offset); return memcmp (buf, register_data (this, regnum, 1) + offset, - register_size (tdesc, regnum) - offset); + register_size (tdesc, regnum) - offset) == 0; } diff --git a/gdb/gdbserver/regcache.h b/gdb/gdbserver/regcache.h index b3631be..ad199a9 100644 --- a/gdb/gdbserver/regcache.h +++ b/gdb/gdbserver/regcache.h @@ -28,31 +28,31 @@ struct target_desc; inferior; this is primarily for simplicity, as the performance benefit is minimal. */ -struct regcache +struct regcache : public reg_buffer_common { /* The regcache's target description. */ - const struct target_desc *tdesc; + const struct target_desc *tdesc = nullptr; /* Whether the REGISTERS buffer's contents are valid. If false, we haven't fetched the registers from the target yet. Not that this register cache is _not_ pass-through, unlike GDB's. Note that "valid" here is unrelated to whether the registers are available in a traceframe. For that, check REGISTER_STATUS below. */ - int registers_valid; - int registers_owned; - unsigned char *registers; + int registers_valid = 0; + int registers_owned = 0; + unsigned char *registers = nullptr; #ifndef IN_PROCESS_AGENT /* One of REG_UNAVAILBLE or REG_VALID. */ - unsigned char *register_status; + unsigned char *register_status = nullptr; #endif - void raw_supply (int regnum, const void *buf); + void raw_supply (int regnum, const void *buf) override; - void raw_collect (int regnum, void *buf) const; + void raw_collect (int regnum, void *buf) const override; - int raw_compare (int regnum, const void *buf, int offset) const; + bool raw_compare (int regnum, const void *buf, int offset) const override; - enum register_status get_register_status (int regnum) const; + enum register_status get_register_status (int regnum) const override; }; struct regcache *init_register_cache (struct regcache *regcache, |