@@ -112,9 +112,20 @@ def get_default_backtrace(config: str) -> List[str]:
112112 return [config , 'app_main' , 'main_task' , 'vPortTaskWrapper' ]
113113
114114
115+ def expect_coredump_flash_write_logs (dut : PanicTestDut , config : str ) -> None :
116+ dut .expect_exact ('Save core dump to flash...' )
117+ if 'extram_stack' in config :
118+ dut .expect_exact ('Backing up stack @' )
119+ dut .expect_exact ('Restoring stack' )
120+ dut .expect_exact ('Core dump has been saved to flash.' )
121+ dut .expect ('Rebooting...' )
122+
123+
115124def common_test (dut : PanicTestDut , config : str , expected_backtrace : Optional [List [str ]] = None , check_cpu_reset : Optional [bool ] = True ,
116125 expected_coredump : Optional [Sequence [Union [str , Pattern [Any ]]]] = None ) -> None :
117126 if 'gdbstub' in config :
127+ if 'coredump' in config :
128+ dut .process_coredump_uart (expected_coredump , False )
118129 dut .expect_exact ('Entering gdb stub now.' )
119130 dut .start_gdb_for_gdbstub ()
120131 frames = dut .gdb_backtrace ()
@@ -130,11 +141,10 @@ def common_test(dut: PanicTestDut, config: str, expected_backtrace: Optional[Lis
130141 if 'uart' in config :
131142 dut .process_coredump_uart (expected_coredump )
132143 elif 'flash' in config :
144+ expect_coredump_flash_write_logs (dut , config )
133145 dut .process_coredump_flash (expected_coredump )
134146 elif 'panic' in config :
135- pass
136-
137- dut .expect ('Rebooting...' )
147+ dut .expect ('Rebooting...' )
138148
139149 if check_cpu_reset :
140150 dut .expect_cpu_reset ()
@@ -219,13 +229,6 @@ def test_panic_extram_stack(dut: PanicTestDut, config: str) -> None:
219229 dut .expect_none ('Guru Meditation' )
220230 dut .expect_backtrace ()
221231 dut .expect_elf_sha256 ()
222- # Check that coredump is getting written to flash
223- dut .expect_exact ('Save core dump to flash...' )
224- # And that the stack is replaced and restored
225- dut .expect_exact ('Backing up stack @' )
226- dut .expect_exact ('Restoring stack' )
227- # The caller must be accessible after restoring the stack
228- dut .expect_exact ('Core dump has been saved to flash.' )
229232
230233 if dut .target == 'esp32' :
231234 # ESP32 External data memory range [0x3f800000-0x3fc00000)
@@ -882,7 +885,7 @@ def test_rtc_slow_reg1_execute_violation(dut: PanicTestDut, test_func_name: str)
882885 dut .expect_gme ('Memory protection fault' )
883886 dut .expect (r'Read operation at address [0-9xa-f]+ not permitted \((\S+)\)' )
884887 dut .expect_reg_dump (0 )
885- dut .expect_corrupted_backtrace ( )
888+ dut .expect_backtrace ( corrupted = True )
886889 dut .expect_cpu_reset ()
887890
888891
@@ -893,7 +896,7 @@ def test_rtc_slow_reg2_execute_violation(dut: PanicTestDut, test_func_name: str)
893896 dut .expect_gme ('Memory protection fault' )
894897 dut .expect (r'Read operation at address [0-9xa-f]+ not permitted \((\S+)\)' )
895898 dut .expect_reg_dump (0 )
896- dut .expect_corrupted_backtrace ( )
899+ dut .expect_backtrace ( corrupted = True )
897900 dut .expect_cpu_reset ()
898901
899902
@@ -948,15 +951,7 @@ def test_invalid_memory_region_execute_violation(dut: PanicTestDut, test_func_na
948951def test_gdbstub_coredump (dut : PanicTestDut ) -> None :
949952 test_func_name = 'test_storeprohibited'
950953 dut .run_test_func (test_func_name )
951-
952- dut .process_coredump_uart ()
953-
954- dut .expect_exact ('Entering gdb stub now.' )
955- dut .start_gdb_for_gdbstub ()
956- frames = dut .gdb_backtrace ()
957- dut .verify_gdb_backtrace (frames , get_default_backtrace (test_func_name ))
958- dut .revert_log_level ()
959- return # don't expect "Rebooting" output below
954+ common_test (dut , 'gdbstub_coredump' , get_default_backtrace (test_func_name ))
960955
961956
962957def test_hw_stack_guard_cpu (dut : PanicTestDut , cpu : int ) -> None :
@@ -1019,9 +1014,7 @@ def test_capture_dram(dut: PanicTestDut, config: str, test_func_name: str) -> No
10191014 dut .expect_elf_sha256 ()
10201015 dut .expect_none (['Guru Meditation' , 'Re-entered core dump' ])
10211016
1022- dut .expect_exact ('Save core dump to flash...' )
1023- dut .expect_exact ('Core dump has been saved to flash.' )
1024- dut .expect ('Rebooting...' )
1017+ expect_coredump_flash_write_logs (dut , config )
10251018
10261019 core_elf_file = dut .process_coredump_flash ()
10271020 dut .start_gdb_for_coredump (core_elf_file )
@@ -1074,7 +1067,7 @@ def test_tcb_corrupted(dut: PanicTestDut, target: str, config: str, test_func_na
10741067 if dut .is_xtensa :
10751068 dut .expect_gme ('LoadProhibited' )
10761069 dut .expect_reg_dump (0 )
1077- dut .expect_corrupted_backtrace ()
1070+ dut .expect_backtrace ()
10781071 else :
10791072 dut .expect_gme ('Load access fault' )
10801073 dut .expect_reg_dump (0 )
0 commit comments