From e4de689a097564ed7d8a000ef9d8136e5486cae4 Mon Sep 17 00:00:00 2001 From: Gareth McMullin Date: Wed, 12 Apr 2017 10:46:23 +1200 Subject: [PATCH] cortexm: Check halt reason on stub exit. --- src/target/cortexm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/target/cortexm.c b/src/target/cortexm.c index 59fce89d..80e1caf6 100644 --- a/src/target/cortexm.c +++ b/src/target/cortexm.c @@ -633,10 +633,17 @@ int cortexm_run_stub(target *t, uint32_t loadaddr, return -1; /* Execute the stub */ + enum target_halt_reason reason; cortexm_halt_resume(t, 0); - while (!cortexm_halt_poll(t, NULL)) + while ((reason = cortexm_halt_poll(t, NULL)) == TARGET_HALT_RUNNING) ; + if (reason == TARGET_HALT_ERROR) + raise_exception(EXCEPTION_ERROR, "Target lost in stub"); + + if (reason != TARGET_HALT_BREAKPOINT) + return -2; + uint32_t pc = cortexm_pc_read(t); uint16_t bkpt_instr = target_mem_read16(t, pc); if (bkpt_instr >> 8 != 0xbe)