From d0509ba44323dc5550852f0dbdcb2ccc2818d5b3 Mon Sep 17 00:00:00 2001 From: Christian Biesinger Date: Fri, 9 Aug 2019 14:25:15 -0500 Subject: [PATCH] Fix compile warning in symtab.c MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit My compiler (g++ 8.2) can't tell that *bsc_ptr and *slot_ptr are only used in the cases when it does get initialized. Just initialize the vars earlier to avoid the warning, there does not seem to be a downside to it. ../../gdb/symtab.c: In function ‘block_symbol lookup_static_symbol(const char*, domain_enum)’: ../../gdb/symtab.c:1366:11: warning: ‘slot’ may be used uninitialized in this function [-Wmaybe-uninitialized] xfree (slot->value.not_found.name); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../gdb/symtab.c:2578:29: note: ‘slot’ was declared here struct symbol_cache_slot *slot; ^~~~ ../../gdb/symtab.c:1405:3: warning: ‘bsc’ may be used uninitialized in this function [-Wmaybe-uninitialized] if (bsc == NULL) ^~ ../../gdb/symtab.c:2577:30: note: ‘bsc’ was declared here struct block_symbol_cache *bsc; ^~~ ../../gdb/symtab.c: In function ‘block_symbol lookup_global_symbol(const char*, const block*, domain_enum)’: ../../gdb/symtab.c:1366:11: warning: ‘slot’ may be used uninitialized in this function [-Wmaybe-uninitialized] xfree (slot->value.not_found.name); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../gdb/symtab.c:2658:29: note: ‘slot’ was declared here struct symbol_cache_slot *slot; ^~~~ ../../gdb/symtab.c:1409:14: warning: ‘bsc’ may be used uninitialized in this function [-Wmaybe-uninitialized] ++bsc->collisions; ~~~~~^~~~~~~~~~ ../../gdb/symtab.c:2657:30: note: ‘bsc’ was declared here struct block_symbol_cache *bsc; ^~~ gdb/ChangeLog: 2019-08-22 Christian Biesinger * symtab.c (symbol_cache_lookup): Always initialize *bsc_ptr and *slot_ptr. --- gdb/ChangeLog | 5 +++++ gdb/symtab.c | 11 +++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1d852497894..073ed74b4fa 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-08-22 Christian Biesinger + + * symtab.c (symbol_cache_lookup): Always initialize *bsc_ptr and + *slot_ptr. + 2019-08-23 Sergio Durigan Junior * configure.ac: Don't check for 'dlfcn.h' (moved to diff --git a/gdb/symtab.c b/gdb/symtab.c index cd208ab921b..d85c77b4cec 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -1297,9 +1297,8 @@ set_symbol_cache_size_handler (const char *args, int from_tty, The result is the symbol if found, SYMBOL_LOOKUP_FAILED if a previous lookup failed (and thus this one will too), or NULL if the symbol is not present in the cache. - If the symbol is not present in the cache, then *BSC_PTR and *SLOT_PTR are - set to the cache and slot of the symbol to save the result of a full lookup - attempt. */ + *BSC_PTR and *SLOT_PTR are set to the cache and slot of the symbol, which + can be used to save the result of a full lookup attempt. */ static struct block_symbol symbol_cache_lookup (struct symbol_cache *cache, @@ -1326,6 +1325,9 @@ symbol_cache_lookup (struct symbol_cache *cache, hash = hash_symbol_entry (objfile_context, name, domain); slot = bsc->symbols + hash % bsc->size; + *bsc_ptr = bsc; + *slot_ptr = slot; + if (eq_symbol_entry (slot, objfile_context, name, domain)) { if (symbol_lookup_debug) @@ -1343,9 +1345,6 @@ symbol_cache_lookup (struct symbol_cache *cache, /* Symbol is not present in the cache. */ - *bsc_ptr = bsc; - *slot_ptr = slot; - if (symbol_lookup_debug) { fprintf_unfiltered (gdb_stdlog, -- 2.39.2