aboutsummaryrefslogtreecommitdiff
path: root/src/target/embeddedice.c
diff options
context:
space:
mode:
authorAntonio Borneo <borneo.antonio@gmail.com>2020-06-14 23:18:21 +0200
committerAntonio Borneo <borneo.antonio@gmail.com>2020-07-08 22:07:38 +0100
commitf29d157882a756e562d224dd128eea1bbe3e3813 (patch)
treeea15001cb9c18d3c2359f1838f552168e0fc2500 /src/target/embeddedice.c
parent6a81bad3b973e54ce68496d22750d643741afb32 (diff)
downloadriscv-openocd-f29d157882a756e562d224dd128eea1bbe3e3813.zip
riscv-openocd-f29d157882a756e562d224dd128eea1bbe3e3813.tar.gz
riscv-openocd-f29d157882a756e562d224dd128eea1bbe3e3813.tar.bz2
target/arm926ejs: fix memory leaks
The memory leaks detected and fixed are: - arm register cache; - EmbeddedICE register cache; - arm_jtag_reset_callback internal data; - struct arm926ejs_common. Issue identified with valgrind. Tested on SPEAr320 based on arm926ejs. Change-Id: If2bed02c516051ce4d0eb29b204a3f3337fe5d6a Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/5698 Tested-by: jenkins
Diffstat (limited to 'src/target/embeddedice.c')
-rw-r--r--src/target/embeddedice.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/target/embeddedice.c b/src/target/embeddedice.c
index 61ee8bb..7c53c45 100644
--- a/src/target/embeddedice.c
+++ b/src/target/embeddedice.c
@@ -304,6 +304,22 @@ struct reg_cache *embeddedice_build_reg_cache(struct target *target,
}
/**
+ * Free all memory allocated for EmbeddedICE register cache
+ */
+void embeddedice_free_reg_cache(struct reg_cache *reg_cache)
+{
+ if (!reg_cache)
+ return;
+
+ for (unsigned int i = 0; i < reg_cache->num_regs; i++)
+ free(reg_cache->reg_list[i].value);
+
+ free(reg_cache->reg_list[0].arch_info);
+ free(reg_cache->reg_list);
+ free(reg_cache);
+}
+
+/**
* Initialize EmbeddedICE module, if needed.
*/
int embeddedice_setup(struct target *target)