New regcache_raw_get_signed
authorYao Qi <yao.qi@linaro.org>
Tue, 22 Nov 2016 14:05:04 +0000 (14:05 +0000)
committerYao Qi <yao.qi@linaro.org>
Tue, 22 Nov 2016 14:05:04 +0000 (14:05 +0000)
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.

gdb/ChangeLog
gdb/regcache.c
gdb/regcache.h

index 5b889178cbaa623f839f92318d225e98d6165bf7..2b04ea4869654336d2aa50e34b9b7349db7bb00e 100644 (file)
@@ -1,3 +1,8 @@
+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
index a5c90a6314c78423bf7c6c0e73969ac43d64d9ed..1fcf93386f7d3d4180ab6dad4f228566563855b2 100644 (file)
@@ -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)
 {
index 1bb0ce0ec8d030042540855945996bd8e6bda91c..11a8bb98d69d0c32def1d3f5d2d68dd82900357f 100644 (file)
@@ -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