aboutsummaryrefslogtreecommitdiff
path: root/src/target/aarch64.c
diff options
context:
space:
mode:
authorMatthias Welwarsky <matthias.welwarsky@sysgo.com>2018-03-26 09:45:46 +0200
committerMatthias Welwarsky <matthias@welwarsky.de>2018-04-10 09:13:02 +0100
commit09076d10dd553dc63f08e74aedb1b6aa030857f9 (patch)
treefac95f9f2c28bcfbd67a58f1bbd7c7a3bf6717d6 /src/target/aarch64.c
parentc0f81fbee745e34d04d490df0b26d8e443d90c0e (diff)
downloadriscv-openocd-09076d10dd553dc63f08e74aedb1b6aa030857f9.zip
riscv-openocd-09076d10dd553dc63f08e74aedb1b6aa030857f9.tar.gz
riscv-openocd-09076d10dd553dc63f08e74aedb1b6aa030857f9.tar.bz2
armv8: valgrind memleak fixes
Various fixes for memory leaks, adds a target cleanup for aarch64 and ARM CTI objects. Change-Id: I2267f0894df655fdf73d70c11ed03df0b8f8d07d Signed-off-by: Matthias Welwarsky <matthias.welwarsky@sysgo.com> Reviewed-on: http://openocd.zylin.com/4478 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de> Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Diffstat (limited to 'src/target/aarch64.c')
-rw-r--r--src/target/aarch64.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/target/aarch64.c b/src/target/aarch64.c
index 4641a3f..cd83502 100644
--- a/src/target/aarch64.c
+++ b/src/target/aarch64.c
@@ -2386,6 +2386,20 @@ static int aarch64_target_create(struct target *target, Jim_Interp *interp)
return aarch64_init_arch_info(target, aarch64, pc->adiv5_config.dap);
}
+static void aarch64_deinit_target(struct target *target)
+{
+ struct aarch64_common *aarch64 = target_to_aarch64(target);
+ struct armv8_common *armv8 = &aarch64->armv8_common;
+ struct arm_dpm *dpm = &armv8->dpm;
+
+ armv8_free_reg_cache(target);
+ free(aarch64->brp_list);
+ free(dpm->dbp);
+ free(dpm->dwp);
+ free(target->private_config);
+ free(aarch64);
+}
+
static int aarch64_mmu(struct target *target, int *enabled)
{
if (target->state != TARGET_HALTED) {
@@ -2658,6 +2672,7 @@ struct target_type aarch64_target = {
.target_create = aarch64_target_create,
.target_jim_configure = aarch64_jim_configure,
.init_target = aarch64_init_target,
+ .deinit_target = aarch64_deinit_target,
.examine = aarch64_examine,
.read_phys_memory = aarch64_read_phys_memory,