target: fix memory leaks on targets based on arm9tdmi
Similarly to the fix for arm926ejs (also base on arm9tdmi), fix the other targets based on arm9tdmi. The fix for arm926ejs is tested on SPEAr320 target. This fix is proposed separately because is not tested on a correct target device, but tested on SPEAr320 by hacking the target type and pretending it is the correct one, e.g.: sed -i s/arm926ejs/arm920t/ tcl/target/spear3xx.cfg The memory leaks detected and fixed are: - arm register cache; - EmbeddedICE register cache; - arm_jtag_reset_callback internal data; - struct <target_type>_common. Change-Id: I565f9a5bf144a9df78474434d86a64127ef0fbe5 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/5699 Tested-by: jenkins
This commit is contained in:
@@ -786,6 +786,16 @@ static int arm9tdmi_target_create(struct target *target, Jim_Interp *interp)
|
||||
return ERROR_OK;
|
||||
}
|
||||
|
||||
void arm9tdmi_deinit_target(struct target *target)
|
||||
{
|
||||
struct arm *arm = target_to_arm(target);
|
||||
struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
|
||||
|
||||
arm7_9_deinit(target);
|
||||
arm_free_reg_cache(arm);
|
||||
free(arm7_9);
|
||||
}
|
||||
|
||||
COMMAND_HANDLER(handle_arm9tdmi_catch_vectors_command)
|
||||
{
|
||||
struct target *target = get_current_target(CMD_CTX);
|
||||
@@ -921,6 +931,7 @@ struct target_type arm9tdmi_target = {
|
||||
.commands = arm9tdmi_command_handlers,
|
||||
.target_create = arm9tdmi_target_create,
|
||||
.init_target = arm9tdmi_init_target,
|
||||
.deinit_target = arm9tdmi_deinit_target,
|
||||
.examine = arm7_9_examine,
|
||||
.check_reset = arm7_9_check_reset,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user