Patchwork [v2,06/11] s390: if -> gdb_assert for tdesc_has_registers check

login
register
mail settings
Submitter Philipp Rudo
Date Dec. 5, 2017, 12:28 p.m.
Message ID <20171205122859.2919-7-prudo@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/24725/
State New
Headers show

Comments

Philipp Rudo - Dec. 5, 2017, 12:28 p.m.
Before doing the tdesc validation there is a check whether the tdesc has
registers or not.  This check is not only unnecessary but wrong.

First the check is done after a default tdesc is assigned if the original
tdesc has no registers.  These default tdescs always have registers so the
check alway returns true.

Second if the default tdesc would not have registers the check only skips
the tdesc validation instead of returning an error.  This would trigger a
gdb_assert later on in tdesc_use_registers.

gdb/ChangeLog:

	* s390-linux-tdep.c (s390_gdbarch_init): Use gdb_assert for
	tdesc_has_registers check
---
 gdb/s390-linux-tdep.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

Patch

diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c
index f631c60f09..f6a39868be 100644
--- a/gdb/s390-linux-tdep.c
+++ b/gdb/s390-linux-tdep.c
@@ -8052,15 +8052,13 @@  s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   tdep->tdesc = tdesc;
 
   /* Check any target description for validity.  */
-  if (tdesc_has_registers (tdesc))
+  gdb_assert (tdesc_has_registers (tdep->tdesc));
+  if (!s390_tdesc_valid (tdep, tdesc_data))
     {
-      if (!s390_tdesc_valid (tdep, tdesc_data))
-	{
-	  tdesc_data_cleanup (tdesc_data);
-	  xfree (tdep);
-	  gdbarch_free (gdbarch);
-	  return NULL;
-	}
+      tdesc_data_cleanup (tdesc_data);
+      xfree (tdep);
+      gdbarch_free (gdbarch);
+      return NULL;
     }
 
   /* Determine vector ABI.  */