X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fblock.h;h=1958bfdce4fd3c97e4a1b67c1c40926c7c3d673f;hb=93692b589dc7017d5a2fbdffdfad5f84f597d8f1;hp=d8ad3430dc79785eae6964e032f1cb31eced3dc3;hpb=b2e2f908b863c27abb00108a03ebe2598baec55c;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/block.h b/gdb/block.h index d8ad3430dc..1958bfdce4 100644 --- a/gdb/block.h +++ b/gdb/block.h @@ -1,6 +1,6 @@ /* Code dealing with blocks for GDB. - Copyright (C) 2003-2015 Free Software Foundation, Inc. + Copyright (C) 2003-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -82,21 +82,10 @@ struct block struct dictionary *dict; - /* Used for language-specific info. */ + /* Contains information about namespace-related info relevant to this block: + using directives and the current namespace scope. */ - union - { - struct - { - /* Contains information about namespace-related info relevant to - this block: using directives and the current namespace - scope. */ - - struct block_namespace_info *the_namespace; - } - cplus_specific; - } - language_specific; + struct block_namespace_info *namespace_info; }; /* The global block is singled out so that we can provide a back-link @@ -118,7 +107,7 @@ struct global_block #define BLOCK_FUNCTION(bl) (bl)->function #define BLOCK_SUPERBLOCK(bl) (bl)->superblock #define BLOCK_DICT(bl) (bl)->dict -#define BLOCK_NAMESPACE(bl) (bl)->language_specific.cplus_specific.the_namespace +#define BLOCK_NAMESPACE(bl) (bl)->namespace_info struct blockvector { @@ -190,6 +179,17 @@ extern struct block *allocate_global_block (struct obstack *obstack); extern void set_block_compunit_symtab (struct block *, struct compunit_symtab *); +/* Return a property to evaluate the static link associated to BLOCK. + + In the context of nested functions (available in Pascal, Ada and GNU C, for + instance), a static link (as in DWARF's DW_AT_static_link attribute) for a + function is a way to get the frame corresponding to the enclosing function. + + Note that only objfile-owned and function-level blocks can have a static + link. Return NULL if there is no such property. */ + +extern struct dynamic_prop *block_static_link (const struct block *block); + /* A block iterator. This structure should be treated as though it were opaque; it is only defined here because we want to support stack allocation of iterators. */