diff options
author | Christian Biesinger <cbiesinger@google.com> | 2019-08-09 14:25:15 -0500 |
---|---|---|
committer | Christian Biesinger <cbiesinger@google.com> | 2019-08-24 16:45:59 -0500 |
commit | d0509ba44323dc5550852f0dbdcb2ccc2818d5b3 (patch) | |
tree | 9296b35eb056410f6c379afb2ff9a721d39a6200 /gdb | |
parent | 6d5554a605a8ce908ba04b00fd960d02ca9fc613 (diff) | |
download | gdb-d0509ba44323dc5550852f0dbdcb2ccc2818d5b3.zip gdb-d0509ba44323dc5550852f0dbdcb2ccc2818d5b3.tar.gz gdb-d0509ba44323dc5550852f0dbdcb2ccc2818d5b3.tar.bz2 |
Fix compile warning in symtab.c
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 <cbiesinger@google.com>
* symtab.c (symbol_cache_lookup): Always initialize *bsc_ptr and *slot_ptr.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/symtab.c | 11 |
2 files changed, 10 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1d85249..073ed74 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-08-22 Christian Biesinger <cbiesinger@google.com> + + * symtab.c (symbol_cache_lookup): Always initialize *bsc_ptr and + *slot_ptr. + 2019-08-23 Sergio Durigan Junior <sergiodj@redhat.com> * configure.ac: Don't check for 'dlfcn.h' (moved to diff --git a/gdb/symtab.c b/gdb/symtab.c index cd208ab..d85c77b 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, |