This is an automated email from Gerrit. "Tim Nordell <tnord...@airgain.com>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/7177
-- gerrit commit 78078b78d0a2d8d0e14aefd1d347c1fbb230981b Author: Tim Nordell <tnord...@airgain.com> Date: Wed Sep 7 11:35:33 2022 -0500 rtos: Create a new helper function find_symbol(...) This will be utilized for an upcoming refactorization to support -flto compiled programs. Signed-off-by: Tim Nordell <tnord...@airgain.com> Change-Id: Id523c0b3ac2dad8b248ea0d2cac7b4dd2f83d293 diff --git a/src/rtos/rtos.c b/src/rtos/rtos.c index 3e43e828d1..f4f288607e 100644 --- a/src/rtos/rtos.c +++ b/src/rtos/rtos.c @@ -170,6 +170,17 @@ int gdb_thread_packet(struct connection *connection, char const *packet, int pac return target->rtos->gdb_thread_packet(connection, packet, packet_size); } +static struct symbol_table_elem *find_symbol(const struct rtos *os, const char *symbol) +{ + struct symbol_table_elem *s; + + for (s = os->symbols; s->symbol_name; s++) + if (!strcmp(s->symbol_name, symbol)) + return s; + + return NULL; +} + static struct symbol_table_elem *next_symbol(struct rtos *os, char *cur_symbol, uint64_t cur_addr) { struct symbol_table_elem *s; @@ -180,25 +191,21 @@ static struct symbol_table_elem *next_symbol(struct rtos *os, char *cur_symbol, if (!cur_symbol[0]) return &os->symbols[0]; - for (s = os->symbols; s->symbol_name; s++) - if (!strcmp(s->symbol_name, cur_symbol)) { - s->address = cur_addr; - s++; - return s; - } + s = find_symbol(os, cur_symbol); + if (!s) + return NULL; - return NULL; + s->address = cur_addr; + s++; + return s; } /* searches for 'symbol' in the lookup table for 'os' and returns TRUE, * if 'symbol' is not declared optional */ static bool is_symbol_mandatory(const struct rtos *os, const char *symbol) { - for (struct symbol_table_elem *s = os->symbols; s->symbol_name; ++s) { - if (!strcmp(s->symbol_name, symbol)) - return !s->optional; - } - return false; + struct symbol_table_elem *s = find_symbol(os, symbol); + return s && !s->optional; } /* rtos_qsymbol() processes and replies to all qSymbol packets from GDB. --