I've committed a fix in 1753 for memory corruption introduced in 1730.

Thanks for bisecting to the offending release. This is definitely a case
of where numerous small commits saved my butt.

Hopefully this covers the problem that you are seing, but I don't
have your precise setup so I can't run the exact test case you
are running...


-- 
Øyvind Harboe
Embedded software and hardware consulting services
http://consulting.zylin.com
### Eclipse Workspace Patch 1.0
#P openocd
Index: src/target/arm9tdmi.c
===================================================================
--- src/target/arm9tdmi.c       (revision 1743)
+++ src/target/arm9tdmi.c       (working copy)
@@ -291,9 +291,9 @@
 
 extern void arm_endianness(u8 *tmp, void *in, int size, int be, int flip);
 
-static int arm9endianness(u8 *in, jtag_callback_data_t size, 
jtag_callback_data_t be, jtag_callback_data_t dummy)
+static int arm9endianness(u8 *in, jtag_callback_data_t size, 
jtag_callback_data_t be, jtag_callback_data_t captured)
 {
-       arm_endianness(in, in, (int)size, (int)be, 0);
+       arm_endianness((u8 *)captured, in, (int)size, (int)be, 0);
        return ERROR_OK;
 }
 
@@ -317,7 +317,7 @@
        fields[0].tap = jtag_info->tap;
        fields[0].num_bits = 32;
        fields[0].out_value = NULL;
-       fields[0].in_value = (u8 *)in;
+       jtag_alloc_in_value32(&fields[0]);
 
        fields[1].tap = jtag_info->tap;
        fields[1].num_bits = 3;
@@ -331,7 +331,7 @@
 
        jtag_add_dr_scan(3, fields, TAP_INVALID);
 
-       jtag_add_callback4(arm9endianness, in, (jtag_callback_data_t)size, 
(jtag_callback_data_t)be, 0);
+       jtag_add_callback4(arm9endianness, in, (jtag_callback_data_t)size, 
(jtag_callback_data_t)be, (jtag_callback_data_t)fields[0].in_value);
 
        jtag_add_runtest(0, TAP_INVALID);
 
Index: src/target/arm7tdmi.c
===================================================================
--- src/target/arm7tdmi.c       (revision 1750)
+++ src/target/arm7tdmi.c       (working copy)
@@ -244,9 +244,9 @@
        }
 }
 
-static int arm7endianness(u8 *in, jtag_callback_data_t size, 
jtag_callback_data_t be, jtag_callback_data_t dummy)
+static int arm7endianness(u8 *in, jtag_callback_data_t size, 
jtag_callback_data_t be, jtag_callback_data_t captured)
 {
-       arm_endianness(in, in, (int)size, (int)be, 1);
+       arm_endianness((u8 *)captured, in, (int)size, (int)be, 1);
        return ERROR_OK;
 }
 
@@ -274,11 +274,11 @@
        fields[1].tap = jtag_info->tap;
        fields[1].num_bits = 32;
        fields[1].out_value = NULL;
-       fields[1].in_value = (u8 *)in;
+       jtag_alloc_in_value32(&fields[1]);
 
        jtag_add_dr_scan(2, fields, TAP_INVALID);
 
-       jtag_add_callback4(arm7endianness, in, (jtag_callback_data_t)size, 
(jtag_callback_data_t)be, (jtag_callback_data_t)NULL);
+       jtag_add_callback4(arm7endianness, in, (jtag_callback_data_t)size, 
(jtag_callback_data_t)be, (jtag_callback_data_t)fields[1].in_value);
 
        jtag_add_runtest(0, TAP_INVALID);
 
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to