diff options
Diffstat (limited to 'src/server/gdb_server.c')
-rw-r--r-- | src/server/gdb_server.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c index 2b3057a1..13e5aca6 100644 --- a/src/server/gdb_server.c +++ b/src/server/gdb_server.c @@ -2196,6 +2196,7 @@ static int gdb_generate_target_description(struct target *target, char **tdesc_o int retval = ERROR_OK; struct reg **reg_list = NULL; int reg_list_size; + char const *architecture; char const **features = NULL; char const **arch_defined_types = NULL; int feature_list_size = 0; @@ -2237,6 +2238,12 @@ static int gdb_generate_target_description(struct target *target, char **tdesc_o "<!DOCTYPE target SYSTEM \"gdb-target.dtd\">\n" "<target version=\"1.0\">\n"); + /* generate architecture element if supported by target */ + architecture = target_get_gdb_arch(target); + if (architecture != NULL) + xml_printf(&retval, &tdesc, &pos, &size, + "<architecture>%s</architecture>\n", architecture); + /* generate target description according to register list */ if (features != NULL) { while (features[current_feature]) { @@ -2386,6 +2393,8 @@ static int gdb_target_description_supported(struct target *target, int *supporte char const **features = NULL; int feature_list_size = 0; + char const *architecture = target_get_gdb_arch(target); + retval = target_get_gdb_reg_list(target, ®_list, ®_list_size, REG_CLASS_ALL); if (retval != ERROR_OK) { @@ -2407,7 +2416,7 @@ static int gdb_target_description_supported(struct target *target, int *supporte } if (supported) { - if (feature_list_size) + if (architecture || feature_list_size) *supported = 1; else *supported = 0; |