aboutsummaryrefslogtreecommitdiff
path: root/src/target
diff options
context:
space:
mode:
authorAntonio Borneo <borneo.antonio@gmail.com>2019-04-01 10:34:25 +0200
committerTomas Vanek <vanekt@fbl.cz>2019-05-14 19:33:13 +0100
commitb3ce5a0ae5453a879a36856b5d8453722ba0f9b5 (patch)
tree2597d2d1fefab90ee36aa67d46d968b21e29bd29 /src/target
parent74cd25a4d39d85caeb275f178c1c93b4ff334810 (diff)
downloadriscv-openocd-b3ce5a0ae5453a879a36856b5d8453722ba0f9b5.zip
riscv-openocd-b3ce5a0ae5453a879a36856b5d8453722ba0f9b5.tar.gz
riscv-openocd-b3ce5a0ae5453a879a36856b5d8453722ba0f9b5.tar.bz2
target: use LOG_USER to print errors in events
Events are supposed to be executed asynchronously and not linked with any command, so it's incorrect printing out an eventual error using command_print(). Even in the case of events triggered by the command <target> invoke-event <event-name> the eventual error in the event handler is not propagated to the command, so the command_print() is still not appropriate. Replace command_print() with LOG_USER() in target_handle_event(). Add further info in the log to identify which event has generated the error and its associated target. Before return, clean-up the error message and the stacktrace from the error already displayed, to avoid propagate them. Change-Id: I5966aa25e7c81348f4ad4d6e7ce5d4dee44ea4c8 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/5049 Tested-by: jenkins Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Diffstat (limited to 'src/target')
-rw-r--r--src/target/target.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/target/target.c b/src/target/target.c
index 28e67bf..14b6b0b 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -4553,7 +4553,12 @@ void target_handle_event(struct target *target, enum target_event e)
if (Jim_EvalObj(teap->interp, teap->body) != JIM_OK) {
Jim_MakeErrorMessage(teap->interp);
- command_print(NULL, "%s\n", Jim_GetString(Jim_GetResult(teap->interp), NULL));
+ LOG_USER("Error executing event %s on target %s:\n%s",
+ Jim_Nvp_value2name_simple(nvp_target_event, e)->name,
+ target_name(target),
+ Jim_GetString(Jim_GetResult(teap->interp), NULL));
+ /* clean both error code and stacktrace before return */
+ Jim_Eval(teap->interp, "error \"\" \"\"");
}
cmd_ctx->current_target_override = saved_target_override;