From 3099858c68fd3a5f9960daea429198c0fc5a0f10 Mon Sep 17 00:00:00 2001
From: sb-sf <sb-sf@users.sourceforge.net>
Date: Mon, 5 Jul 2010 14:06:34 +0100
Subject: 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>
---
 src/server/gdb_server.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

(limited to 'src')

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++) {
-- 
cgit v1.2.3