projects
/
fw
/
openocd
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gdb_server: check target examined while combining reg list
[fw/openocd]
/
src
/
server
/
gdb_server.c
diff --git
a/src/server/gdb_server.c
b/src/server/gdb_server.c
index f8a1aac83ac2a9af4bfd35c4040b0a551e5a1de8..4dee7e8642d7fff719c72ec717de5ea277dcef4a 100644
(file)
--- a/
src/server/gdb_server.c
+++ b/
src/server/gdb_server.c
@@
-2281,6
+2281,9
@@
static int smp_reg_list_noread(struct target *target,
struct target_list *head;
foreach_smp_target(head, target->smp_targets) {
struct target_list *head;
foreach_smp_target(head, target->smp_targets) {
+ if (!target_was_examined(head->target))
+ continue;
+
struct reg **reg_list = NULL;
int reg_list_size;
int result = target_get_gdb_reg_list_noread(head->target, ®_list,
struct reg **reg_list = NULL;
int reg_list_size;
int result = target_get_gdb_reg_list_noread(head->target, ®_list,
@@
-2329,8
+2332,17
@@
static int smp_reg_list_noread(struct target *target,
free(reg_list);
}
free(reg_list);
}
+ if (local_list_size == 0) {
+ LOG_ERROR("Unable to get register list");
+ free(local_list);
+ return ERROR_FAIL;
+ }
+
/* Now warn the user about any registers that weren't found in every target. */
foreach_smp_target(head, target->smp_targets) {
/* Now warn the user about any registers that weren't found in every target. */
foreach_smp_target(head, target->smp_targets) {
+ if (!target_was_examined(head->target))
+ continue;
+
struct reg **reg_list = NULL;
int reg_list_size;
int result = target_get_gdb_reg_list_noread(head->target, ®_list,
struct reg **reg_list = NULL;
int reg_list_size;
int result = target_get_gdb_reg_list_noread(head->target, ®_list,