X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fblock.c;h=0dc6b9dc83d76dc68f5b7df00f1d1ca98ac34c21;hb=12a132db164ea95e9e457427c2c97005f94c5a70;hp=f7621aa6102e3684373bfda6da8ca134732762d3;hpb=ee93cd5e1e61e5739a1a44e0d1d166ae09d04dc2;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/block.c b/gdb/block.c index f7621aa610..0dc6b9dc83 100644 --- a/gdb/block.c +++ b/gdb/block.c @@ -1,6 +1,6 @@ /* Block-related functions for the GNU debugger, GDB. - Copyright (C) 2003-2015 Free Software Foundation, Inc. + Copyright (C) 2003-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -140,7 +140,7 @@ find_block_in_blockvector (const struct blockvector *bl, CORE_ADDR pc) /* If we have an addrmap mapping code addresses to blocks, then use that. */ if (BLOCKVECTOR_MAP (bl)) - return addrmap_find (BLOCKVECTOR_MAP (bl), pc); + return (struct block *) addrmap_find (BLOCKVECTOR_MAP (bl), pc); /* Otherwise, use binary search to find the last block that starts before PC. @@ -246,7 +246,7 @@ call_site_for_pc (struct gdbarch *gdbarch, CORE_ADDR pc) : MSYMBOL_PRINT_NAME (msym.minsym))); } - return *slot; + return (struct call_site *) *slot; } /* Return the blockvector immediately containing the innermost lexical block @@ -351,8 +351,7 @@ block_initialize_namespace (struct block *block, struct obstack *obstack) { if (BLOCK_NAMESPACE (block) == NULL) { - BLOCK_NAMESPACE (block) - = obstack_alloc (obstack, sizeof (struct block_namespace_info)); + BLOCK_NAMESPACE (block) = XOBNEW (obstack, struct block_namespace_info); BLOCK_NAMESPACE (block)->scope = NULL; BLOCK_NAMESPACE (block)->using_decl = NULL; } @@ -428,6 +427,21 @@ set_block_compunit_symtab (struct block *block, struct compunit_symtab *cu) gb->compunit_symtab = cu; } +/* See block.h. */ + +struct dynamic_prop * +block_static_link (const struct block *block) +{ + struct objfile *objfile = block_objfile (block); + + /* Only objfile-owned blocks that materialize top function scopes can have + static links. */ + if (objfile == NULL || BLOCK_FUNCTION (block) == NULL) + return NULL; + + return (struct dynamic_prop *) objfile_lookup_static_link (objfile, block); +} + /* Return the compunit of the global block. */ static struct compunit_symtab * @@ -856,7 +870,7 @@ block_find_non_opaque_type (struct symbol *sym, void *data) int block_find_non_opaque_type_preferred (struct symbol *sym, void *data) { - struct symbol **best = data; + struct symbol **best = (struct symbol **) data; if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym))) return 1;