This is an automated email from Gerrit. Evan Hunter ([email protected]) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/986
-- gerrit commit c406d22ebcfb780b4b75d27fc767a162563c0aad Author: Evan Hunter <[email protected]> Date: Tue Nov 20 16:30:47 2012 +1100 rtos: Fix regression which was preventing use of first RTOS in list ThreadX support was not working due to it being first in the list of RTOS's 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 <[email protected]> diff --git a/src/rtos/rtos.c b/src/rtos/rtos.c index 28bbe5e..081e243 100644 --- a/src/rtos/rtos.c +++ b/src/rtos/rtos.c @@ -199,13 +199,30 @@ int rtos_qsymbol(struct connection *connection, char *packet, int packet_size) if (!os) goto done; - 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_OUTPUT("RTOS %s not detected. (GDB could not find symbol \'%s\')\r\n", 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); + if (!next_sym) { + /* No more symbols need looking up */ + if (!target->rtos_auto_detect) { rtos_detected = 1; goto done; @@ -215,16 +232,10 @@ int rtos_qsymbol(struct connection *connection, char *packet, int packet_size) 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_OUTPUT("No RTOS could be auto-detected!\r\n"); goto done; + } } if (8 + (strlen(next_sym) * 2) + 1 > sizeof(reply)) { -- ------------------------------------------------------------------------------ Monitor your physical, virtual and cloud infrastructure from a single web console. Get in-depth insight into apps, servers, databases, vmware, SAP, cloud infrastructure, etc. Download 30-day Free Trial. Pricing starts from $795 for 25 servers or applications! http://p.sf.net/sfu/zoho_dev2dev_nov _______________________________________________ OpenOCD-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openocd-devel
