summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsb-sf <sb-sf@users.sourceforge.net>2010-07-05 14:06:34 +0100
committerSpencer Oliver <ntfreak@users.sourceforge.net>2010-07-05 14:16:15 +0100
commit3099858c68fd3a5f9960daea429198c0fc5a0f10 (patch)
treecd667134857fc9dd83eb17bc5c7158155d326012 /src
parent1e0f89841575de2b8b6313825ec8edd8bc7910a0 (diff)
downloadopenocd+libswd-3099858c68fd3a5f9960daea429198c0fc5a0f10.tar.gz
openocd+libswd-3099858c68fd3a5f9960daea429198c0fc5a0f10.tar.bz2
openocd+libswd-3099858c68fd3a5f9960daea429198c0fc5a0f10.tar.xz
openocd+libswd-3099858c68fd3a5f9960daea429198c0fc5a0f10.zip
gdbserver: incorrect memory map for multiple targets (bug #24)
The gdb server incorrectly reports the memory map if we have multiple targets with multiple flash banks. Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
Diffstat (limited to 'src')
-rw-r--r--src/server/gdb_server.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c
index e97839d2..1d1d8363 100644
--- a/src/server/gdb_server.c
+++ b/src/server/gdb_server.c
@@ -1682,6 +1682,7 @@ static int gdb_memory_map(struct connection *connection,
char *separator;
uint32_t ram_start = 0;
int i;
+ int target_flash_banks = 0;
/* skip command character */
packet += 23;
@@ -1708,10 +1709,11 @@ static int gdb_memory_map(struct connection *connection,
gdb_error(connection, retval);
return retval;
}
- banks[i] = p;
+ if(p->target == target)
+ banks[target_flash_banks++] = p;
}
- qsort(banks, flash_get_bank_count(), sizeof(struct flash_bank *),
+ qsort(banks, target_flash_banks, sizeof(struct flash_bank *),
compare_bank);
for (i = 0; i < flash_get_bank_count(); i++) {