aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYao Qi <yao.qi@linaro.org>2016-11-22 14:05:04 +0000
committerYao Qi <yao.qi@linaro.org>2016-11-22 14:05:04 +0000
commit9fd15b2e80452f03edb3fb36c2b4c36d05f4ef4e (patch)
tree0f06fc7acdfb4eeb563ac9554c42d0c6bee96711
parent6884417a0ff3555b192d4aceeacc5e7232cad207 (diff)
downloadgdb-9fd15b2e80452f03edb3fb36c2b4c36d05f4ef4e.zip
gdb-9fd15b2e80452f03edb3fb36c2b4c36d05f4ef4e.tar.gz
gdb-9fd15b2e80452f03edb3fb36c2b4c36d05f4ef4e.tar.bz2
New regcache_raw_get_signed
This patch adds a new regcache api regcache_raw_get_signed. gdb: 2016-11-22 Yao Qi <yao.qi@linaro.org> * regcache.c (regcache_raw_get_signed): New function. * regcache.h (regcache_raw_get_signed): Declare.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/regcache.c13
-rw-r--r--gdb/regcache.h6
3 files changed, 24 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 5b88917..2b04ea4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2016-11-22 Yao Qi <yao.qi@linaro.org>
+ * regcache.c (regcache_raw_get_signed): New function.
+ * regcache.h (regcache_raw_get_signed): Declare.
+
+2016-11-22 Yao Qi <yao.qi@linaro.org>
+
* value.c (value_from_component): Use VALUE_NEXT_FRAME_ID
instead of VALUE_FROM_ID.
diff --git a/gdb/regcache.c b/gdb/regcache.c
index a5c90a6..1fcf933 100644
--- a/gdb/regcache.c
+++ b/gdb/regcache.c
@@ -742,6 +742,19 @@ regcache_raw_write_unsigned (struct regcache *regcache, int regnum,
regcache_raw_write (regcache, regnum, buf);
}
+LONGEST
+regcache_raw_get_signed (struct regcache *regcache, int regnum)
+{
+ LONGEST value;
+ enum register_status status;
+
+ status = regcache_raw_read_signed (regcache, regnum, &value);
+ if (status == REG_UNAVAILABLE)
+ throw_error (NOT_AVAILABLE_ERROR,
+ _("Register %d is not available"), regnum);
+ return value;
+}
+
enum register_status
regcache_cooked_read (struct regcache *regcache, int regnum, gdb_byte *buf)
{
diff --git a/gdb/regcache.h b/gdb/regcache.h
index 1bb0ce0..11a8bb9 100644
--- a/gdb/regcache.h
+++ b/gdb/regcache.h
@@ -66,6 +66,12 @@ extern void regcache_raw_write_signed (struct regcache *regcache,
extern void regcache_raw_write_unsigned (struct regcache *regcache,
int regnum, ULONGEST val);
+/* Return the register's value in signed or throw if it's not
+ available. */
+
+extern LONGEST regcache_raw_get_signed (struct regcache *regcache,
+ int regnum);
+
/* Set a raw register's value in the regcache's buffer. Unlike
regcache_raw_write, this is not write-through. The intention is
allowing to change the buffer contents of a read-only regcache