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] Add MN10300_MAX_REGISTER_SIZE


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

commit b8b6e72f3db1f798680742c02f3dc220175d0757
Author: Alan Hayward <alan.hayward@arm.com>
Date:   Thu Jun 8 16:05:24 2017 +0100

    Add MN10300_MAX_REGISTER_SIZE
    
    gdb/
    	* mn10300-tdep.c (MN10300_MAX_REGISTER_SIZE): Add.
    	(mn10300_extract_return_value): Use MN10300_MAX_REGISTER_SIZE.
    	(mn10300_push_dummy_call): Likewise.

Diff:
---
 gdb/ChangeLog      | 6 ++++++
 gdb/mn10300-tdep.c | 9 +++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 094a677..993fabe 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2017-06-08 Alan Hayward  <alan.hayward@arm.com>
+
+	* mn10300-tdep.c (MN10300_MAX_REGISTER_SIZE): Add.
+	(mn10300_extract_return_value): Use MN10300_MAX_REGISTER_SIZE.
+	(mn10300_push_dummy_call): Likewise.
+
 2017-06-08  Alan Hayward  <alan.hayward@arm.com>
 
 	* mi/mi-main.c (register_changed_p): Use value_contents_eq.
diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c
index f8dd762..669bfa1 100644
--- a/gdb/mn10300-tdep.c
+++ b/gdb/mn10300-tdep.c
@@ -40,6 +40,9 @@
 /* The am33-2 has 64 registers.  */
 #define MN10300_MAX_NUM_REGS 64
 
+/* Big enough to hold the size of the largest register in bytes.  */
+#define MN10300_MAX_REGISTER_SIZE      64
+
 /* This structure holds the results of a prologue analysis.  */
 struct mn10300_prologue
 {
@@ -196,7 +199,7 @@ static void
 mn10300_extract_return_value (struct gdbarch *gdbarch, struct type *type,
 			      struct regcache *regcache, void *valbuf)
 {
-  gdb_byte buf[MAX_REGISTER_SIZE];
+  gdb_byte buf[MN10300_MAX_REGISTER_SIZE];
   int len = TYPE_LENGTH (type);
   int reg, regsz;
 
@@ -206,6 +209,7 @@ mn10300_extract_return_value (struct gdbarch *gdbarch, struct type *type,
     reg = 0;
 
   regsz = register_size (gdbarch, reg);
+  gdb_assert (regsz <= MN10300_MAX_REGISTER_SIZE);
   if (len <= regsz)
     {
       regcache_raw_read (regcache, reg, buf);
@@ -1224,7 +1228,7 @@ mn10300_push_dummy_call (struct gdbarch *gdbarch,
   int stack_offset = 0;
   int argnum;
   const gdb_byte *val;
-  gdb_byte valbuf[MAX_REGISTER_SIZE];
+  gdb_byte valbuf[MN10300_MAX_REGISTER_SIZE];
 
   /* This should be a nop, but align the stack just in case something
      went wrong.  Stacks are four byte aligned on the mn10300.  */
@@ -1266,6 +1270,7 @@ mn10300_push_dummy_call (struct gdbarch *gdbarch,
 	{
 	  /* Change to pointer-to-type.  */
 	  arg_len = push_size;
+	  gdb_assert (push_size <= MN10300_MAX_REGISTER_SIZE);
 	  store_unsigned_integer (valbuf, push_size, byte_order,
 				  value_address (*args));
 	  val = &valbuf[0];


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