Introduce null_block_symbol
... in the spirit of null_ptid, null_frame_id, etc. Fixes two instances of: /root/binutils-gdb/gdb/cp-namespace.c: In function 'block_symbol cp_lookup_nested_symbol(type*, const char*, const block*, domain_enum)': /root/binutils-gdb/gdb/cp-namespace.c:1010: warning: jump to case label /root/binutils-gdb/gdb/cp-namespace.c:1008: error: crosses initialization of 'block_symbol <anonymous>' Compiler info: Reading specs from /usr/lib/gcc-lib/amd64-unknown-openbsd5.8/4.2.1/specs Target: amd64-unknown-openbsd5.8 Configured with: OpenBSD/amd64 system compiler Thread model: posix gcc version 4.2.1 20070719 gdb/ChangeLog: 2015-11-17 Pedro Alves <palves@redhat.com> * cp-namespace.c (cp_lookup_bare_symbol) (cp_search_static_and_baseclasses, cp_lookup_symbol_via_imports) (cp_lookup_symbol_via_all_imports, cp_lookup_nested_symbol_1) (cp_lookup_nested_symbol): Use null_block_symbol. * d-namespace.c (d_lookup_symbol, d_lookup_nested_symbol) (d_lookup_symbol_imports, d_lookup_symbol_module): Use null_block_symbol. * symtab.c (null_block_symbol): New global. * symtab.h (null_block_symbol): Declare.
This commit is contained in:
parent
eec461d0a8
commit
b6b806729d
@ -1,3 +1,15 @@
|
||||
2015-11-17 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* cp-namespace.c (cp_lookup_bare_symbol)
|
||||
(cp_search_static_and_baseclasses, cp_lookup_symbol_via_imports)
|
||||
(cp_lookup_symbol_via_all_imports, cp_lookup_nested_symbol_1)
|
||||
(cp_lookup_nested_symbol): Use null_block_symbol.
|
||||
* d-namespace.c (d_lookup_symbol, d_lookup_nested_symbol)
|
||||
(d_lookup_symbol_imports, d_lookup_symbol_module): Use
|
||||
null_block_symbol.
|
||||
* symtab.c (null_block_symbol): New global.
|
||||
* symtab.h (null_block_symbol): Declare.
|
||||
|
||||
2015-11-17 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* common/common-exceptions.h (GDB_XCPT_SJMP, GDB_XCPT_TRY)
|
||||
|
@ -208,14 +208,14 @@ cp_lookup_bare_symbol (const struct language_defn *langdef,
|
||||
|
||||
lang_this = lookup_language_this (language_def (language_cplus), block);
|
||||
if (lang_this.symbol == NULL)
|
||||
return (struct block_symbol) {NULL, NULL};
|
||||
return null_block_symbol;
|
||||
|
||||
type = check_typedef (TYPE_TARGET_TYPE (SYMBOL_TYPE (lang_this.symbol)));
|
||||
/* If TYPE_NAME is NULL, abandon trying to find this symbol.
|
||||
This can happen for lambda functions compiled with clang++,
|
||||
which outputs no name for the container class. */
|
||||
if (TYPE_NAME (type) == NULL)
|
||||
return (struct block_symbol) {NULL, NULL};
|
||||
return null_block_symbol;
|
||||
|
||||
/* Look for symbol NAME in this class. */
|
||||
sym = cp_lookup_nested_symbol (type, name, block, domain);
|
||||
@ -273,7 +273,7 @@ cp_search_static_and_baseclasses (const char *name,
|
||||
if (klass_sym.symbol == NULL)
|
||||
{
|
||||
do_cleanups (cleanup);
|
||||
return (struct block_symbol) {NULL, NULL};
|
||||
return null_block_symbol;
|
||||
}
|
||||
klass_type = SYMBOL_TYPE (klass_sym.symbol);
|
||||
|
||||
@ -492,7 +492,7 @@ cp_lookup_symbol_via_imports (const char *scope,
|
||||
}
|
||||
}
|
||||
|
||||
return (struct block_symbol) {NULL, NULL};
|
||||
return null_block_symbol;
|
||||
}
|
||||
|
||||
/* Helper function that searches an array of symbols for one named NAME. */
|
||||
@ -640,7 +640,7 @@ cp_lookup_symbol_via_all_imports (const char *scope, const char *name,
|
||||
block = BLOCK_SUPERBLOCK (block);
|
||||
}
|
||||
|
||||
return (struct block_symbol) {NULL, NULL};
|
||||
return null_block_symbol;
|
||||
}
|
||||
|
||||
/* Searches for NAME in the current namespace, and by applying
|
||||
@ -928,7 +928,7 @@ cp_lookup_nested_symbol_1 (struct type *container_type,
|
||||
return sym;
|
||||
}
|
||||
|
||||
return (struct block_symbol) {NULL, NULL};
|
||||
return null_block_symbol;
|
||||
}
|
||||
|
||||
/* Look up a symbol named NESTED_NAME that is nested inside the C++
|
||||
@ -1005,7 +1005,7 @@ cp_lookup_nested_symbol (struct type *parent_type,
|
||||
"cp_lookup_nested_symbol (...) = NULL"
|
||||
" (func/method)\n");
|
||||
}
|
||||
return (struct block_symbol) {NULL, NULL};
|
||||
return null_block_symbol;
|
||||
|
||||
default:
|
||||
internal_error (__FILE__, __LINE__,
|
||||
|
@ -132,7 +132,7 @@ d_lookup_symbol (const struct language_defn *langdef,
|
||||
if (lang_this.symbol == NULL)
|
||||
{
|
||||
do_cleanups (cleanup);
|
||||
return (struct block_symbol) {NULL, NULL};
|
||||
return null_block_symbol;
|
||||
}
|
||||
|
||||
type = check_typedef (TYPE_TARGET_TYPE (SYMBOL_TYPE (lang_this.symbol)));
|
||||
@ -159,7 +159,7 @@ d_lookup_symbol (const struct language_defn *langdef,
|
||||
if (class_sym.symbol == NULL)
|
||||
{
|
||||
do_cleanups (cleanup);
|
||||
return (struct block_symbol) {NULL, NULL};
|
||||
return null_block_symbol;
|
||||
}
|
||||
|
||||
/* Look for a symbol named NESTED in this class. */
|
||||
@ -370,7 +370,7 @@ d_lookup_nested_symbol (struct type *parent_type,
|
||||
|
||||
case TYPE_CODE_FUNC:
|
||||
case TYPE_CODE_METHOD:
|
||||
return (struct block_symbol) {NULL, NULL};
|
||||
return null_block_symbol;
|
||||
|
||||
default:
|
||||
gdb_assert_not_reached ("called with non-aggregate type.");
|
||||
@ -530,7 +530,7 @@ d_lookup_symbol_imports (const char *scope, const char *name,
|
||||
}
|
||||
}
|
||||
|
||||
return (struct block_symbol) {NULL, NULL};
|
||||
return null_block_symbol;
|
||||
}
|
||||
|
||||
/* Searches for NAME in the current module, and by applying relevant
|
||||
@ -562,7 +562,7 @@ d_lookup_symbol_module (const char *scope, const char *name,
|
||||
block = BLOCK_SUPERBLOCK (block);
|
||||
}
|
||||
|
||||
return (struct block_symbol) {NULL, NULL};
|
||||
return null_block_symbol;
|
||||
}
|
||||
|
||||
/* The D-specific version of name lookup for static and global names
|
||||
|
@ -85,6 +85,9 @@ static struct block_symbol
|
||||
lookup_symbol_in_objfile (struct objfile *objfile, int block_index,
|
||||
const char *name, const domain_enum domain);
|
||||
|
||||
/* See symtab.h. */
|
||||
const struct block_symbol null_block_symbol = { NULL, NULL };
|
||||
|
||||
extern initialize_file_ftype _initialize_symtab;
|
||||
|
||||
/* Program space key for finding name and language of "main". */
|
||||
|
@ -832,6 +832,10 @@ struct block_symbol
|
||||
|
||||
extern const struct symbol_impl *symbol_impls;
|
||||
|
||||
/* For convenience. All fields are NULL. This means "there is no
|
||||
symbol". */
|
||||
extern const struct block_symbol null_block_symbol;
|
||||
|
||||
/* Note: There is no accessor macro for symbol.owner because it is
|
||||
"private". */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user