gdbserver: incorrect memory map for multiple targets (bug #24)
authorsb-sf <sb-sf@users.sourceforge.net>
Mon, 5 Jul 2010 13:06:34 +0000 (14:06 +0100)
committerSpencer Oliver <ntfreak@users.sourceforge.net>
Mon, 5 Jul 2010 13:16:15 +0000 (14:16 +0100)
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>
src/server/gdb_server.c

index e97839d28988aafee59a6f0bc23eab54cd00d4d8..1d1d836385f67e25d9d2ba5cf28a210fd38d352c 100644 (file)
@@ -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++) {