Prevent an abort in the FRV disassembler if the target bfd name is unknown.
authorNick Clifton <nickc@redhat.com>
Thu, 5 Jan 2017 09:11:47 +0000 (09:11 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 5 Jan 2017 09:11:47 +0000 (09:11 +0000)
PR 20946
* frv-desc.c (lookup_mach_via_bfd_name): Return NULL if the name
could not be matched.
(frv_cgen_cpu_open): Allow for lookup_mach_via_bfd_name returning
NULL.

opcodes/ChangeLog
opcodes/frv-desc.c

index 555a37957be1468d6a78fe46c1fdaa460dc6c98c..8494c51e47a862e66e37a563d15433fbac7e5287 100644 (file)
@@ -1,3 +1,11 @@
+2017-01-05  Nick Clifton  <nickc@redhat.com>
+
+       PR 20946
+       * frv-desc.c (lookup_mach_via_bfd_name): Return NULL if the name
+       could not be matched.
+       (frv_cgen_cpu_open): Allow for lookup_mach_via_bfd_name returning
+       NULL.
+
 2017-01-04  Szabolcs Nagy  <szabolcs.nagy@arm.com>
 
        * aarch64-tbl.h (RCPC, RCPC_INSN): Define.
index ab4d7eb42bfc634e11e53d59dde9d453cb1fb9b4..bba510c6e2f1d9757fe1b5e84030f3f3e0966df5 100644 (file)
@@ -6173,7 +6173,7 @@ lookup_mach_via_bfd_name (const CGEN_MACH *table, const char *name)
        return table;
       ++table;
     }
-  abort ();
+  return NULL;
 }
 
 /* Subroutine of frv_cgen_cpu_open to build the hardware table.  */
@@ -6386,8 +6386,8 @@ frv_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
            const char *name = va_arg (ap, const char *);
            const CGEN_MACH *mach =
              lookup_mach_via_bfd_name (frv_cgen_mach_table, name);
-
-           machs |= 1 << mach->num;
+           if (mach != NULL)
+             machs |= 1 << mach->num;
            break;
          }
        case CGEN_CPU_OPEN_ENDIAN :