diff --git a/components/espcoredump/espcoredump.py b/components/espcoredump/espcoredump.py index 30dd4936cd..2dc053225a 100755 --- a/components/espcoredump/espcoredump.py +++ b/components/espcoredump/espcoredump.py @@ -328,19 +328,19 @@ class ESPCoreDumpElfFile(esptool.ELFFile): # extra regs IDs used in EXTRA_INFO note REG_EXCCAUSE_IDX = 0 REG_EXCVADDR_IDX = 1 - REG_EPS2_IDX = 2 - REG_EPS3_IDX = 3 - REG_EPS4_IDX = 4 - REG_EPS5_IDX = 5 - REG_EPS6_IDX = 6 - REG_EPS7_IDX = 7 - REG_EPC1_IDX = 8 - REG_EPC2_IDX = 9 - REG_EPC3_IDX = 10 - REG_EPC4_IDX = 11 - REG_EPC5_IDX = 12 - REG_EPC6_IDX = 13 - REG_EPC7_IDX = 14 + REG_EPC1_IDX = 177 + REG_EPC2_IDX = 178 + REG_EPC3_IDX = 179 + REG_EPC4_IDX = 180 + REG_EPC5_IDX = 181 + REG_EPC6_IDX = 182 + REG_EPC7_IDX = 183 + REG_EPS2_IDX = 194 + REG_EPS3_IDX = 195 + REG_EPS4_IDX = 196 + REG_EPS5_IDX = 197 + REG_EPS6_IDX = 198 + REG_EPS7_IDX = 199 # ELF file type ET_NONE = 0x0 # No file type ET_REL = 0x1 # Relocatable file @@ -1596,19 +1596,16 @@ def info_corefile(args): exccause_str = ("Invalid EXCCAUSE code", "Invalid EXCAUSE description or not found.") print("exccause 0x%x (%s)" % (exccause, exccause_str[0])) print("excvaddr 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EXCVADDR_IDX + 1]) - print("epc1 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EPC1_IDX + 1]) - print("epc2 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EPC2_IDX + 1]) - print("epc3 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EPC3_IDX + 1]) - print("epc4 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EPC4_IDX + 1]) - print("epc5 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EPC5_IDX + 1]) - print("epc6 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EPC6_IDX + 1]) - print("epc7 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EPC7_IDX + 1]) - print("eps2 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EPS2_IDX + 1]) - print("eps3 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EPS3_IDX + 1]) - print("eps4 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EPS4_IDX + 1]) - print("eps5 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EPS5_IDX + 1]) - print("eps6 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EPS6_IDX + 1]) - print("eps7 0x%x" % extra_info[1 + 2 * ESPCoreDumpElfFile.REG_EPS7_IDX + 1]) + + # skip crashed_task_tcb, exccause, and excvaddr + for i in range(5, len(extra_info), 2): + if (extra_info[i] >= ESPCoreDumpElfFile.REG_EPC1_IDX and extra_info[i] <= ESPCoreDumpElfFile.REG_EPC7_IDX): + print('epc%d 0x%x' % ((extra_info[i] - ESPCoreDumpElfFile.REG_EPC1_IDX + 1), extra_info[i + 1])) + + # skip crashed_task_tcb, exccause, and excvaddr + for i in range(5, len(extra_info), 2): + if (extra_info[i] >= ESPCoreDumpElfFile.REG_EPS2_IDX and extra_info[i] <= ESPCoreDumpElfFile.REG_EPS7_IDX): + print('eps%d 0x%x' % ((extra_info[i] - ESPCoreDumpElfFile.REG_EPS2_IDX + 2), extra_info[i + 1])) else: print("Exception registers have not been found!") p = gdbmi_getinfo(p, handlers, "info registers")