---

** [tickets:#218] arm semihosting: target resumes after application exit**

**Status:** new
**Milestone:** 0.9.0
**Created:** Thu Jan 03, 2019 05:40 PM UTC by Joseph McLaughlin
**Last Updated:** Thu Jan 03, 2019 05:40 PM UTC
**Owner:** nobody


In release 0.10.0 when running the target in semihosted mode it was found that 
a `wait_halt <ms>` command is not  honored after the target app has run to 
completion.  By "run to completion" I mean that  a  semihosting op of 0x18 
`angel_SWIreason_ReportException` has been requested by the target.  The 
following command works as expected in v0.9.0 but "hangs" in v0.10.0 until the 
`wait_halt` timer expires: 

`openocd -f openocd.cfg -c "program hello_world" -c 'arm semihosting enable' -c 
'reset run' -c 'wait_halt 60000' -c 'shutdown'`

...assuming `hello_world` is a semihosted app that exits gracefully well before 
the timer expiry. 

It was found that this "hang" is likely due to the target being resumed in 
`arm_semihosting()` after the `angel_SWIreason_ReportException` is processed.  
It looks like some subtle logic may have been inadvertently removed between 
v0.9.0 and v0.10.0. that prevented the target from resuming in this case.

This patch fixes the "hang", but not sure if it's an appropriate  fix:
```
$ diff -u original/src/target/arm_semihosting.c patched/src/target
--- original/src/target/arm_semihosting.c       2016-12-25 09:12:55.000000000 
-0500
+++ patched/src/target/arm_semihosting.c        2019-01-03 11:13:09.000000000 
-0500
@@ -772,6 +772,10 @@
                        LOG_ERROR("Failed semihosting operation");
                        return 0;
                }
+
+               // Early out if handling an exit request / exception report
+               if (arm->semihosting_op == 0x18)
+                       return 1;
        }
```




---

Sent from sourceforge.net because [email protected] is 
subscribed to https://sourceforge.net/p/openocd/tickets/

To unsubscribe from further messages, a project admin can change settings at 
https://sourceforge.net/p/openocd/admin/tickets/options.  Or, if this is a 
mailing list, you can unsubscribe from the mailing list.
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to