diff options
author | sb-sf <sb-sf@users.sourceforge.net> | 2010-07-05 14:06:34 +0100 |
---|---|---|
committer | Spencer Oliver <ntfreak@users.sourceforge.net> | 2010-07-05 14:16:15 +0100 |
commit | 3099858c68fd3a5f9960daea429198c0fc5a0f10 (patch) | |
tree | cd667134857fc9dd83eb17bc5c7158155d326012 /src/server | |
parent | 1e0f89841575de2b8b6313825ec8edd8bc7910a0 (diff) | |
download | openocd_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/server')
-rw-r--r-- | src/server/gdb_server.c | 6 |
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++) { |