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.
This commit is contained in:
parent
6d5554a605
commit
d0509ba443
2 changed files with 10 additions and 6 deletions
|
@ -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
|
||||
|
|
11
gdb/symtab.c
11
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,
|
||||
|
|
Loading…
Add table
Reference in a new issue