This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] New regcache_raw_get_signed


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=9fd15b2e80452f03edb3fb36c2b4c36d05f4ef4e

commit 9fd15b2e80452f03edb3fb36c2b4c36d05f4ef4e
Author: Yao Qi <yao.qi@linaro.org>
Date:   Tue Nov 22 14:05:04 2016 +0000

    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.

Diff:
---
 gdb/ChangeLog  |  5 +++++
 gdb/regcache.c | 13 +++++++++++++
 gdb/regcache.h |  6 ++++++
 3 files changed, 24 insertions(+)

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]