X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fbuildsym.h;h=f559b4b04b5284a535194010b8c882c77372671f;hb=3c83b96e241336be0c3e26c06f2bf901d0fe8edd;hp=f9ef5f18e5c307a528aca8b71e7516d767eb607f;hpb=59527da01ed91d3e1b397499a5ecff7f58a0912b;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/buildsym.h b/gdb/buildsym.h index f9ef5f18e5..f559b4b04b 100644 --- a/gdb/buildsym.h +++ b/gdb/buildsym.h @@ -1,11 +1,13 @@ /* Build symbol tables in GDB's internal format. - Copyright 1986-1993, 1996-1999 Free Software Foundation, Inc. + Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1996, + 1997, 1998, 1999, 2000, 2002, 2003, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GDB. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -14,13 +16,15 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + along with this program. If not, see . */ #if !defined (BUILDSYM_H) #define BUILDSYM_H 1 +struct objfile; +struct symbol; +struct addrmap; + /* This module provides definitions used for creating and adding to the symbol table. These routines are called from various symbol- file-reading routines. @@ -33,6 +37,8 @@ normally extern, but which get defined in a single module using this technique. */ +struct block; + #ifndef EXTERN #define EXTERN extern #endif @@ -41,12 +47,14 @@ hashname() */ /* Name of source file whose symbol data we are now processing. This - comes from a symbol of type N_SO. */ + comes from a symbol of type N_SO for stabs. For Dwarf it comes from the + DW_AT_name attribute of a DW_TAG_compile_unit DIE. */ EXTERN char *last_source_file; /* Core address of start of text of current source file. This too - comes from the N_SO symbol. */ + comes from the N_SO symbol. For Dwarf it typically comes from the + DW_AT_low_pc attribute of a DW_TAG_compile_unit DIE. */ EXTERN CORE_ADDR last_source_start_addr; @@ -62,11 +70,11 @@ struct subfile struct linetable *line_vector; int line_vector_length; enum language language; + char *producer; char *debugformat; + struct symtab *symtab; }; -EXTERN struct subfile *subfiles; - EXTERN struct subfile *current_subfile; /* Global variable which, when set, indicates that we are processing a @@ -82,16 +90,6 @@ EXTERN unsigned char processing_gcc_compilation; EXTERN unsigned char processing_acc_compilation; -/* elz: added this flag to know when a block is compiled with HP - compilers (cc, aCC). This is necessary because of the macro - COERCE_FLOAT_TO_DOUBLE defined in tm_hppa.h, which causes a - coercion of float to double to always occur in parameter passing - for a function called by gdb (see the function value_arg_coerce in - valops.c). This is necessary only if the target was compiled with - gcc, not with HP compilers or with g++ */ - -EXTERN unsigned char processing_hp_compilation; - /* Count symbols as they are processed, for error messages. */ EXTERN unsigned int symnum; @@ -127,6 +125,10 @@ EXTERN struct pending *local_symbols; EXTERN struct pending *param_symbols; +/* "using" directives local to lexical context. */ + +EXTERN struct using_direct *using_directives; + /* Stack representing unclosed lexical contexts (that will become blocks, eventually). */ @@ -140,6 +142,10 @@ struct context_stack struct pending *params; + /* Pending using directives at the time we entered. */ + + struct using_direct *using_directives; + /* Pointer into blocklist as of entry */ struct pending_block *old_blocks; @@ -172,11 +178,8 @@ EXTERN int context_stack_depth; EXTERN int context_stack_size; -/* Macro "function" for popping contexts from the stack. Pushing is - done by a real function, push_context. This returns a pointer to a - struct context_stack. */ - -#define pop_context() (&context_stack[--context_stack_depth]); +/* Non-zero if the context stack is empty. */ +#define outermost_context_p() (context_stack_depth == 0) /* Nonzero if within a function (so symbols should be local, if nothing says specifically). */ @@ -239,13 +242,16 @@ extern void add_symbol_to_list (struct symbol *symbol, extern struct symbol *find_symbol_in_list (struct pending *list, char *name, int length); -extern void finish_block (struct symbol *symbol, - struct pending **listhead, - struct pending_block *old_blocks, - CORE_ADDR start, CORE_ADDR end, - struct objfile *objfile); +extern struct block *finish_block (struct symbol *symbol, + struct pending **listhead, + struct pending_block *old_blocks, + CORE_ADDR start, CORE_ADDR end, + struct objfile *objfile); + +extern void record_block_range (struct block *, + CORE_ADDR start, CORE_ADDR end_inclusive); -extern void really_free_pendings (PTR dummy); +extern void really_free_pendings (void *dummy); extern void start_subfile (char *name, char *dirname); @@ -268,6 +274,8 @@ extern void buildsym_init (void); extern struct context_stack *push_context (int desc, CORE_ADDR valu); +extern struct context_stack *pop_context (void); + extern void record_line (struct subfile *subfile, int line, CORE_ADDR pc); extern void start_symtab (char *name, char *dirname, CORE_ADDR start_addr); @@ -276,12 +284,6 @@ extern int hashname (char *name); extern void free_pending_blocks (void); -/* FIXME: Note that this is used only in buildsym.c and dstread.c, - which should be fixed to not need direct access to - make_blockvector. */ - -extern struct blockvector *make_blockvector (struct objfile *objfile); - /* FIXME: Note that this is used only in buildsym.c and dstread.c, which should be fixed to not need direct access to record_pending_block. */ @@ -292,9 +294,15 @@ extern void record_pending_block (struct objfile *objfile, extern void record_debugformat (char *format); +extern void record_producer (const char *producer); + extern void merge_symbol_lists (struct pending **srclist, struct pending **targetlist); +/* The macro table for the compilation unit whose symbols we're + currently reading. All the symtabs for this CU will point to this. */ +EXTERN struct macro_table *pending_macros; + #undef EXTERN #endif /* defined (BUILDSYM_H) */