ThreadX support was not working due to it being first in the list of RTOS - regression.
Auto-detect off, an RTOS was always be marked as successfully detected, even if symbols are not found.
Lines 223-227 were unnecessary as they are done in rtos_try_next()
Added lots of comments
Improved readability by separating: GDB not finding a symbol vs no more symbols being available
Regression caused by patch which was allowed only 52 minutes for review : http://openocd.zylin.com/895
Change-Id: Ib4decb01db595ddb3796837c6d8338ce6b9a91ca
Signed-off-by: Evan Hunter <ehunter@broadcom.com>
Reviewed-on: http://openocd.zylin.com/986
Tested-by: jenkins
Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
- if (sscanf(packet, "qSymbol:%" SCNx64 ":", &addr))
- hex_to_str(cur_sym, strchr(packet + 8, ':') + 1);
- else if (target->rtos_auto_detect && !rtos_try_next(target))
- goto done;
+ /* Decode any symbol name in the packet*/
+ hex_to_str(cur_sym, strchr(packet + 8, ':') + 1);
+
+ if ((strcmp(packet, "qSymbol::") != 0) && /* GDB is not offering symbol lookup for the first time */
+ (!sscanf(packet, "qSymbol:%" SCNx64 ":", &addr))) { /* GDB did not found an address for a symbol */
+ /* GDB could not find an address for the previous symbol */
+ if (!target->rtos_auto_detect) {
+ LOG_WARNING("RTOS %s not detected. (GDB could not find symbol \'%s\')", os->type->name, cur_sym);
+ goto done;
+ } else {
+ /* Autodetecting RTOS - try next RTOS */
+ if (!rtos_try_next(target))
+ goto done;
+ /* Next RTOS selected - invalidate current symbol */
+ cur_sym[0] = '\x00';
+
+ }
+ }
next_sym = next_symbol(os, cur_sym, addr);
next_sym = next_symbol(os, cur_sym, addr);
+ /* No more symbols need looking up */
+
if (!target->rtos_auto_detect) {
rtos_detected = 1;
goto done;
if (!target->rtos_auto_detect) {
rtos_detected = 1;
goto done;
LOG_OUTPUT("Auto-detected RTOS: %s\r\n", os->type->name);
rtos_detected = 1;
goto done;
LOG_OUTPUT("Auto-detected RTOS: %s\r\n", os->type->name);
rtos_detected = 1;
goto done;
- }
-
- if (!rtos_try_next(target))
- goto done;
-
- os->type->get_symbol_list_to_lookup(&os->symbols);
-
- next_sym = os->symbols[0].symbol_name;
- if (!next_sym)
+ } else {
+ LOG_WARNING("No RTOS could be auto-detected!");
}
if (8 + (strlen(next_sym) * 2) + 1 > sizeof(reply)) {
}
if (8 + (strlen(next_sym) * 2) + 1 > sizeof(reply)) {
Linking to existing account procedure
If you already have an account and want to add another login method
you
MUST first sign in with your existing account and
then change URL to read
https://review.openocd.org/login/?link
to get to this page again but this time it'll work for linking. Thank you.
SSH host keys fingerprints
1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=.. |
|+o.. . |
|*.o . . |
|+B . . . |
|Bo. = o S |
|Oo.+ + = |
|oB=.* = . o |
| =+=.+ + E |
|. .=o . o |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)