forked from Imagelibrary/binutils-gdb
2003-05-19 David Carlton <carlton@bactrian.org>
* block.h: Declare block_static_block. * block.c (block_static_block): New. * symtab.c (lookup_symbol_aux): Remove 'static_block' argument to lookup_symbol_aux_local, calling block_static_block instead. (lookup_symbol_aux_local): Delete 'static_block' argument.
This commit is contained in:
@@ -1,3 +1,11 @@
|
|||||||
|
2003-05-19 David Carlton <carlton@bactrian.org>
|
||||||
|
|
||||||
|
* block.h: Declare block_static_block.
|
||||||
|
* block.c (block_static_block): New.
|
||||||
|
* symtab.c (lookup_symbol_aux): Remove 'static_block' argument to
|
||||||
|
lookup_symbol_aux_local, calling block_static_block instead.
|
||||||
|
(lookup_symbol_aux_local): Delete 'static_block' argument.
|
||||||
|
|
||||||
2003-05-19 David Carlton <carlton@bactrian.org>
|
2003-05-19 David Carlton <carlton@bactrian.org>
|
||||||
|
|
||||||
* symtab.c (lookup_symbol_aux): Delete #if 0 hunk.
|
* symtab.c (lookup_symbol_aux): Delete #if 0 hunk.
|
||||||
|
|||||||
15
gdb/block.c
15
gdb/block.c
@@ -199,3 +199,18 @@ block_initialize_namespace (struct block *block, struct obstack *obstack)
|
|||||||
BLOCK_NAMESPACE (block)->using = NULL;
|
BLOCK_NAMESPACE (block)->using = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return the static block associated to BLOCK. Return NULL if block
|
||||||
|
is NULL or if block is a global block. */
|
||||||
|
|
||||||
|
const struct block *
|
||||||
|
block_static_block (const struct block *block)
|
||||||
|
{
|
||||||
|
if (block == NULL || BLOCK_SUPERBLOCK (block) == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
while (BLOCK_SUPERBLOCK (BLOCK_SUPERBLOCK (block)) != NULL)
|
||||||
|
block = BLOCK_SUPERBLOCK (block);
|
||||||
|
|
||||||
|
return block;
|
||||||
|
}
|
||||||
|
|||||||
@@ -207,4 +207,6 @@ extern void block_set_using (struct block *block,
|
|||||||
struct using_direct *using,
|
struct using_direct *using,
|
||||||
struct obstack *obstack);
|
struct obstack *obstack);
|
||||||
|
|
||||||
|
extern const struct block *block_static_block (const struct block *block);
|
||||||
|
|
||||||
#endif /* BLOCK_H */
|
#endif /* BLOCK_H */
|
||||||
|
|||||||
27
gdb/symtab.c
27
gdb/symtab.c
@@ -93,8 +93,7 @@ struct symbol *lookup_symbol_aux_local (const char *name,
|
|||||||
const char *linkage_name,
|
const char *linkage_name,
|
||||||
const struct block *block,
|
const struct block *block,
|
||||||
const domain_enum domain,
|
const domain_enum domain,
|
||||||
struct symtab **symtab,
|
struct symtab **symtab);
|
||||||
const struct block **static_block);
|
|
||||||
|
|
||||||
static
|
static
|
||||||
struct symbol *lookup_symbol_aux_block (const char *name,
|
struct symbol *lookup_symbol_aux_block (const char *name,
|
||||||
@@ -964,7 +963,7 @@ lookup_symbol_aux (const char *name, const char *linkage_name,
|
|||||||
STATIC_BLOCK or GLOBAL_BLOCK. */
|
STATIC_BLOCK or GLOBAL_BLOCK. */
|
||||||
|
|
||||||
sym = lookup_symbol_aux_local (name, linkage_name, block, domain,
|
sym = lookup_symbol_aux_local (name, linkage_name, block, domain,
|
||||||
symtab, &static_block);
|
symtab);
|
||||||
if (sym != NULL)
|
if (sym != NULL)
|
||||||
return sym;
|
return sym;
|
||||||
|
|
||||||
@@ -1008,6 +1007,7 @@ lookup_symbol_aux (const char *name, const char *linkage_name,
|
|||||||
than that one, so I don't think we should worry about that for
|
than that one, so I don't think we should worry about that for
|
||||||
now. */
|
now. */
|
||||||
|
|
||||||
|
static_block = block_static_block (block);
|
||||||
if (static_block != NULL)
|
if (static_block != NULL)
|
||||||
{
|
{
|
||||||
sym = lookup_symbol_aux_block (name, linkage_name, static_block,
|
sym = lookup_symbol_aux_block (name, linkage_name, static_block,
|
||||||
@@ -1053,27 +1053,23 @@ lookup_symbol_aux (const char *name, const char *linkage_name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Check to see if the symbol is defined in BLOCK or its superiors.
|
/* Check to see if the symbol is defined in BLOCK or its superiors.
|
||||||
Don't search STATIC_BLOCK or GLOBAL_BLOCK. If we don't find a
|
Don't search STATIC_BLOCK or GLOBAL_BLOCK. */
|
||||||
match, store the address of STATIC_BLOCK in static_block. */
|
|
||||||
|
|
||||||
static struct symbol *
|
static struct symbol *
|
||||||
lookup_symbol_aux_local (const char *name, const char *linkage_name,
|
lookup_symbol_aux_local (const char *name, const char *linkage_name,
|
||||||
const struct block *block,
|
const struct block *block,
|
||||||
const domain_enum domain,
|
const domain_enum domain,
|
||||||
struct symtab **symtab,
|
struct symtab **symtab)
|
||||||
const struct block **static_block)
|
|
||||||
{
|
{
|
||||||
struct symbol *sym;
|
struct symbol *sym;
|
||||||
|
const struct block *static_block = block_static_block (block);
|
||||||
|
|
||||||
/* Check if either no block is specified or it's a global block. */
|
/* Check if either no block is specified or it's a global block. */
|
||||||
|
|
||||||
if (block == NULL || BLOCK_SUPERBLOCK (block) == NULL)
|
if (static_block == NULL)
|
||||||
{
|
return NULL;
|
||||||
*static_block = NULL;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (BLOCK_SUPERBLOCK (BLOCK_SUPERBLOCK (block)) != NULL)
|
while (block != static_block)
|
||||||
{
|
{
|
||||||
sym = lookup_symbol_aux_block (name, linkage_name, block, domain,
|
sym = lookup_symbol_aux_block (name, linkage_name, block, domain,
|
||||||
symtab);
|
symtab);
|
||||||
@@ -1082,9 +1078,8 @@ lookup_symbol_aux_local (const char *name, const char *linkage_name,
|
|||||||
block = BLOCK_SUPERBLOCK (block);
|
block = BLOCK_SUPERBLOCK (block);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We've reached the static block. */
|
/* We've reached the static block without finding a result. */
|
||||||
|
|
||||||
*static_block = block;
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user