diff options
author | Antonio Borneo <borneo.antonio@gmail.com> | 2020-06-14 23:18:21 +0200 |
---|---|---|
committer | Antonio Borneo <borneo.antonio@gmail.com> | 2020-07-08 22:07:38 +0100 |
commit | f29d157882a756e562d224dd128eea1bbe3e3813 (patch) | |
tree | ea15001cb9c18d3c2359f1838f552168e0fc2500 /src/target/embeddedice.c | |
parent | 6a81bad3b973e54ce68496d22750d643741afb32 (diff) | |
download | riscv-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.c | 16 |
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) |