--- a/sys/cpu/x86_64/misc/db_disasm.c +++ b/sys/cpu/x86_64/misc/db_disasm.c @@ -177,6 +177,7 @@ "vmlaunch", "vmresume", "vmxoff", + "", "", "", /* pad to 8 entries (rm is 0..7) */ }; static const char * const db_Grp7_11_001[] = { @@ -184,6 +185,7 @@ "mwait", "clac", "stac", + "", "", "", "", /* pad to 8 entries (rm is 0..7) */ }; static const char * const db_Grp7_11_010[] = { @@ -194,11 +196,13 @@ "vmfunc", "xend", "xtest", + "", /* pad to 8 entries (rm is 0..7) */ }; static const char * const db_Grp7_11_111[] = { "swapgs", "rdtscp", + "", "", "", "", "", "", /* pad to 8 entries (rm is 0..7) */ }; static const char * const* db_Grp7_11[] = { @@ -1272,8 +1276,14 @@ } else if (ip->i_extra == db_Grp7) { if((regmodrm & 0xC0) == 0xC0) { - i_name = db_Grp7_11[f_reg(rex, regmodrm)][regmodrm &0x7]; + int reg = f_reg(rex, regmodrm); + const char * const *sub; + i_mode = 0; + if (reg > 5 || (sub = db_Grp7_11[reg]) == NULL) + i_name = ""; + else + i_name = sub[regmodrm & 0x7]; } else { i_name = ((const char * const *)ip->i_extra)[f_reg(rex, regmodrm)];