s390: if -> gdb_assert for tdesc_has_registers check
authorPhilipp Rudo <prudo@linux.vnet.ibm.com>
Tue, 23 Jan 2018 12:37:43 +0000 (13:37 +0100)
committerAndreas Arnez <arnez@linux.vnet.ibm.com>
Tue, 23 Jan 2018 12:37:43 +0000 (13:37 +0100)
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/ChangeLog
gdb/s390-linux-tdep.c

index 055b295c7a8b538520216f7807c1d61bf814c498..282ea37789e51180c4937141812ea2c5f590d3ef 100644 (file)
@@ -1,3 +1,8 @@
+2018-01-23  Philipp Rudo  <prudo@linux.vnet.ibm.com>
+
+       * s390-linux-tdep.c (s390_gdbarch_init): Use gdb_assert for
+       tdesc_has_registers check
+
 2018-01-23  Philipp Rudo  <prudo@linux.vnet.ibm.com>
 
        * s390-linux-tdep.c (s390_tdesc_valid): New function.
index 054eb6075137838c5d117c21442653d12cdb6dcf..3869171e599c4a9ed4e5f00bb72c1bb90e65cd0a 100644 (file)
@@ -8045,15 +8045,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.  */