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:
Antonio Borneo
2020-05-25 11:28:22 +02:00
parent 6a78c8581d
commit 580b8f5da0
7 changed files with 62 additions and 0 deletions

View File

@@ -56,6 +56,16 @@ static int arm966e_target_create(struct target *target, Jim_Interp *interp)
return arm966e_init_arch_info(target, arm966e, target->tap);
}
static void arm966e_deinit_target(struct target *target)
{
struct arm *arm = target_to_arm(target);
struct arm966e_common *arm966e = target_to_arm966(target);
arm7_9_deinit(target);
arm_free_reg_cache(arm);
free(arm966e);
}
static int arm966e_verify_pointer(struct command_invocation *cmd,
struct arm966e_common *arm966e)
{
@@ -278,6 +288,7 @@ struct target_type arm966e_target = {
.commands = arm966e_command_handlers,
.target_create = arm966e_target_create,
.init_target = arm9tdmi_init_target,
.deinit_target = arm966e_deinit_target,
.examine = arm7_9_examine,
.check_reset = arm7_9_check_reset,
};