aboutsummaryrefslogtreecommitdiff
path: root/src/target
diff options
context:
space:
mode:
authorAntonio Borneo <borneo.antonio@gmail.com>2020-05-12 11:52:56 +0200
committerAntonio Borneo <borneo.antonio@gmail.com>2021-04-18 15:33:23 +0100
commit428938993742f4f961cdc948593d9553f721c321 (patch)
tree7a0373acf08898f0df43fd6acc726e4c66f54f02 /src/target
parent7cd679a2de697065bbd36cde9042516ccf20f0f1 (diff)
downloadriscv-openocd-428938993742f4f961cdc948593d9553f721c321.zip
riscv-openocd-428938993742f4f961cdc948593d9553f721c321.tar.gz
riscv-openocd-428938993742f4f961cdc948593d9553f721c321.tar.bz2
helper/command: override target only on target prefixed cmds
In current code the current target is overridden whenever jim_handler_data is not NULL. This happens not only with target prefixed commands, but also with cti, dap and swo/tpiu prefixed commands. While this is not causing any run-time issue, by now, the behaviour is tricky and makes the code cryptic. Add a specific field to struct command for the target override so the content of jim_handler_data can be restricted to command specific data only (today only cti, dap and swo/tpiu). Extend the API register_commands() to specify the presence of either the command data or the override target. The new API makes obsolete calling command_set_handler_data() to set jim_handler_data, so remove it. Change-Id: Icc323faf754b0546a72208f90abd9e68ff2ef52f Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/5667 Tested-by: jenkins Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
Diffstat (limited to 'src/target')
-rw-r--r--src/target/arm_cti.c8
-rw-r--r--src/target/arm_dap.c8
-rw-r--r--src/target/arm_tpiu_swo.c6
-rw-r--r--src/target/target.c6
4 files changed, 6 insertions, 22 deletions
diff --git a/src/target/arm_cti.c b/src/target/arm_cti.c
index 689e9df..ee9d8aa 100644
--- a/src/target/arm_cti.c
+++ b/src/target/arm_cti.c
@@ -507,17 +507,13 @@ static int cti_create(Jim_GetOptInfo *goi)
},
COMMAND_REGISTRATION_DONE
};
- e = register_commands(cmd_ctx, NULL, cti_commands);
+ e = register_commands_with_data(cmd_ctx, NULL, cti_commands, cti);
if (ERROR_OK != e)
return JIM_ERR;
- struct command *c = command_find_in_context(cmd_ctx, cp);
- assert(c);
- command_set_handler_data(c, cti);
-
list_add_tail(&cti->lh, &all_cti);
- return (ERROR_OK == e) ? JIM_OK : JIM_ERR;
+ return JIM_OK;
}
static int jim_cti_create(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
diff --git a/src/target/arm_dap.c b/src/target/arm_dap.c
index 56442f1..a9277e7 100644
--- a/src/target/arm_dap.c
+++ b/src/target/arm_dap.c
@@ -265,17 +265,13 @@ static int dap_create(Jim_GetOptInfo *goi)
if (transport_is_hla())
dap_commands[0].chain = NULL;
- e = register_commands(cmd_ctx, NULL, dap_commands);
+ e = register_commands_with_data(cmd_ctx, NULL, dap_commands, dap);
if (ERROR_OK != e)
return JIM_ERR;
- struct command *c = command_find_in_context(cmd_ctx, cp);
- assert(c);
- command_set_handler_data(c, dap);
-
list_add_tail(&dap->lh, &all_dap);
- return (ERROR_OK == e) ? JIM_OK : JIM_ERR;
+ return JIM_OK;
}
static int jim_dap_create(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
diff --git a/src/target/arm_tpiu_swo.c b/src/target/arm_tpiu_swo.c
index 543b4f0..186ce5d 100644
--- a/src/target/arm_tpiu_swo.c
+++ b/src/target/arm_tpiu_swo.c
@@ -886,14 +886,10 @@ static int arm_tpiu_swo_create(Jim_Interp *interp, struct arm_tpiu_swo_object *o
},
COMMAND_REGISTRATION_DONE
};
- e = register_commands(cmd_ctx, NULL, obj_commands);
+ e = register_commands_with_data(cmd_ctx, NULL, obj_commands, obj);
if (ERROR_OK != e)
return JIM_ERR;
- struct command *c = command_find_in_context(cmd_ctx, obj->name);
- assert(c);
- command_set_handler_data(c, obj);
-
list_add_tail(&obj->lh, &all_tpiu_swo);
return JIM_OK;
diff --git a/src/target/target.c b/src/target/target.c
index 619a8b4..fa033d3 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -5871,7 +5871,7 @@ static int target_create(Jim_GetOptInfo *goi)
},
COMMAND_REGISTRATION_DONE
};
- e = register_commands(cmd_ctx, NULL, target_commands);
+ e = register_commands_override_target(cmd_ctx, NULL, target_commands, target);
if (e != ERROR_OK) {
if (target->type->deinit_target)
target->type->deinit_target(target);
@@ -5884,10 +5884,6 @@ static int target_create(Jim_GetOptInfo *goi)
return JIM_ERR;
}
- struct command *c = command_find_in_context(cmd_ctx, cp);
- assert(c);
- command_set_handler_data(c, target);
-
/* append to end of list */
append_to_list_all_targets(target);