nds32: Abort instead of returning REG_UNKNOWN
authorAlan Hayward <alan.hayward@arm.com>
Wed, 26 Apr 2017 08:57:15 +0000 (09:57 +0100)
committerAlan Hayward <alan.hayward@arm.com>
Wed, 26 Apr 2017 08:57:15 +0000 (09:57 +0100)
gdb/
* nds32-tdep.c (nds32_pseudo_register_read): Abort on errors.
(nds32_pseudo_register_write): Likewise.

gdb/ChangeLog
gdb/nds32-tdep.c

index be8df1b07ca7c4d4967bf119906032625e805b5a..52ef8d99de4ebe246b59d1c55f99f46b72075898 100644 (file)
@@ -1,3 +1,8 @@
+2017-04-26  Alan Hayward  <alan.hayward@arm.com>
+
+       * nds32-tdep.c (nds32_pseudo_register_read): Abort on errors.
+       (nds32_pseudo_register_write): Likewise.
+
 2017-04-25  Yao Qi  <yao.qi@linaro.org>
 
        * regcache.c (struct regcache) <readonly_p>: Change its type
index e0eea3743a9ae06be92d627c1ca0e35fad0b0a1f..f942780c5d9f13685f4f0e8c20a1fb41f33c46fb 100644 (file)
@@ -445,11 +445,12 @@ nds32_pseudo_register_read (struct gdbarch *gdbarch,
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
   gdb_byte reg_buf[8];
   int offset, fdr_regnum;
-  enum register_status status = REG_UNKNOWN;
+  enum register_status status;
 
-  /* Sanity check.  */
-  if (tdep->fpu_freg == -1 || tdep->use_pseudo_fsrs == 0)
-    return status;
+  /* This function is registered in nds32_gdbarch_init only after these are
+     set.  */
+  gdb_assert (tdep->fpu_freg != -1);
+  gdb_assert (tdep->use_pseudo_fsrs != 0);
 
   regnum -= gdbarch_num_regs (gdbarch);
 
@@ -466,9 +467,11 @@ nds32_pseudo_register_read (struct gdbarch *gdbarch,
       status = regcache_raw_read (regcache, fdr_regnum, reg_buf);
       if (status == REG_VALID)
        memcpy (buf, reg_buf + offset, 4);
+
+      return status;
     }
 
-  return status;
+  gdb_assert_not_reached ("invalid pseudo register number");
 }
 
 /* Implement the "pseudo_register_write" gdbarch method.  */
@@ -482,9 +485,10 @@ nds32_pseudo_register_write (struct gdbarch *gdbarch,
   gdb_byte reg_buf[8];
   int offset, fdr_regnum;
 
-  /* Sanity check.  */
-  if (tdep->fpu_freg == -1 || tdep->use_pseudo_fsrs == 0)
-    return;
+  /* This function is registered in nds32_gdbarch_init only after these are
+     set.  */
+  gdb_assert (tdep->fpu_freg != -1);
+  gdb_assert (tdep->use_pseudo_fsrs != 0);
 
   regnum -= gdbarch_num_regs (gdbarch);
 
@@ -501,7 +505,10 @@ nds32_pseudo_register_write (struct gdbarch *gdbarch,
       regcache_raw_read (regcache, fdr_regnum, reg_buf);
       memcpy (reg_buf + offset, buf, 4);
       regcache_raw_write (regcache, fdr_regnum, reg_buf);
+      return;
     }
+
+  gdb_assert_not_reached ("invalid pseudo register number");
 }
 \f
 /* Helper function for NDS32 ABI.  Return true if FPRs can be used