This is an automated email from Gerrit.

Antonio Borneo ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/5699

-- gerrit

commit f5ca7b1a5a5e974c09629ed937eda1e2c76f47e5
Author: Antonio Borneo <[email protected]>
Date:   Mon May 25 11:39:54 2020 +0200

    target: fix memory leak of register cache based on arm9tdmi
    
    For all the arm targets based on arm9tdmi there is no method to
    free the register cache, allocated through arm9tdmi_init_target(),
    so we get a memory leak.
    Issue identified by tracking all calls to arm9tdmi_init_target().
    
    Call the method arm9tdmi_deinit_target() to deallocate the
    register cache.
    
    NOT TESTED on real HW, I will rely on gerrit reviewer for tests.
    
    Change-Id: I565f9a5bf144a9df78474434d86a64127ef0fbe5
    Signed-off-by: Antonio Borneo <[email protected]>

diff --git a/src/target/arm920t.c b/src/target/arm920t.c
index 3ddd198..5071919 100644
--- a/src/target/arm920t.c
+++ b/src/target/arm920t.c
@@ -1716,6 +1716,7 @@ struct target_type arm920t_target = {
        .commands = arm920t_command_handlers,
        .target_create = arm920t_target_create,
        .init_target = arm9tdmi_init_target,
+       .deinit_target = arm9tdmi_deinit_target,
        .examine = arm7_9_examine,
        .check_reset = arm7_9_check_reset,
 };
diff --git a/src/target/arm926ejs.c b/src/target/arm926ejs.c
index ac30485..4c04639 100644
--- a/src/target/arm926ejs.c
+++ b/src/target/arm926ejs.c
@@ -823,6 +823,7 @@ struct target_type arm926ejs_target = {
        .commands = arm926ejs_command_handlers,
        .target_create = arm926ejs_target_create,
        .init_target = arm9tdmi_init_target,
+       .deinit_target = arm9tdmi_deinit_target,
        .examine = arm7_9_examine,
        .check_reset = arm7_9_check_reset,
        .virt2phys = arm926ejs_virt2phys,
diff --git a/src/target/arm946e.c b/src/target/arm946e.c
index 4ef167a..c7c47da 100644
--- a/src/target/arm946e.c
+++ b/src/target/arm946e.c
@@ -776,6 +776,7 @@ struct target_type arm946e_target = {
        .commands = arm946e_command_handlers,
        .target_create = arm946e_target_create,
        .init_target = arm9tdmi_init_target,
+       .deinit_target = arm9tdmi_deinit_target,
        .examine = arm7_9_examine,
        .check_reset = arm7_9_check_reset,
 };
diff --git a/src/target/arm966e.c b/src/target/arm966e.c
index 8462f54..47fcbdb 100644
--- a/src/target/arm966e.c
+++ b/src/target/arm966e.c
@@ -278,6 +278,7 @@ struct target_type arm966e_target = {
        .commands = arm966e_command_handlers,
        .target_create = arm966e_target_create,
        .init_target = arm9tdmi_init_target,
+       .deinit_target = arm9tdmi_deinit_target,
        .examine = arm7_9_examine,
        .check_reset = arm7_9_check_reset,
 };
diff --git a/src/target/fa526.c b/src/target/fa526.c
index bb9f735..a388d01 100644
--- a/src/target/fa526.c
+++ b/src/target/fa526.c
@@ -383,6 +383,7 @@ struct target_type fa526_target = {
        .commands = arm920t_command_handlers,
        .target_create = fa526_target_create,
        .init_target = arm9tdmi_init_target,
+       .deinit_target = arm9tdmi_deinit_target,
        .examine = arm7_9_examine,
        .check_reset = arm7_9_check_reset,
 };
diff --git a/src/target/feroceon.c b/src/target/feroceon.c
index 4a6c6dc..d2b707d 100644
--- a/src/target/feroceon.c
+++ b/src/target/feroceon.c
@@ -593,6 +593,11 @@ static int feroceon_init_target(struct command_context 
*cmd_ctx,
        return ERROR_OK;
 }
 
+static void feroceon_deinit_target(struct target *target)
+{
+       arm9tdmi_deinit_target(target);
+}
+
 static void feroceon_common_setup(struct target *target)
 {
        struct arm *arm = target->arch_info;
@@ -729,6 +734,7 @@ struct target_type feroceon_target = {
        .commands = arm926ejs_command_handlers,
        .target_create = feroceon_target_create,
        .init_target = feroceon_init_target,
+       .deinit_target = feroceon_deinit_target,
        .examine = feroceon_examine,
 };
 

-- 


_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to