2009-10-23 Tristan Gingold <gingold@adacore.com>
[deliverable/binutils-gdb.git] / gdb / buildsym.h
CommitLineData
c906108c 1/* Build symbol tables in GDB's internal format.
197e01b6 2 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1996,
0fb0cc75 3 1997, 1998, 1999, 2000, 2002, 2003, 2007, 2008, 2009
9b254dd1 4 Free Software Foundation, Inc.
c906108c 5
c5aa993b
JM
6 This file is part of GDB.
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
a9762ec7 10 the Free Software Foundation; either version 3 of the License, or
c5aa993b
JM
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
a9762ec7 19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
20
21#if !defined (BUILDSYM_H)
22#define BUILDSYM_H 1
23
da3331ec
AC
24struct objfile;
25struct symbol;
801e3a5b 26struct addrmap;
da3331ec 27
c906108c
SS
28/* This module provides definitions used for creating and adding to
29 the symbol table. These routines are called from various symbol-
30 file-reading routines.
31
32 They originated in dbxread.c of gdb-4.2, and were split out to
33 make xcoffread.c more maintainable by sharing code.
34
35 Variables declared in this file can be defined by #define-ing the
36 name EXTERN to null. It is used to declare variables that are
37 normally extern, but which get defined in a single module using
38 this technique. */
39
fe898f56
DC
40struct block;
41
c906108c
SS
42#ifndef EXTERN
43#define EXTERN extern
44#endif
45
46#define HASHSIZE 127 /* Size of things hashed via
47 hashname() */
48
49/* Name of source file whose symbol data we are now processing. This
92b5c263
DE
50 comes from a symbol of type N_SO for stabs. For Dwarf it comes from the
51 DW_AT_name attribute of a DW_TAG_compile_unit DIE. */
c906108c
SS
52
53EXTERN char *last_source_file;
54
55/* Core address of start of text of current source file. This too
92b5c263
DE
56 comes from the N_SO symbol. For Dwarf it typically comes from the
57 DW_AT_low_pc attribute of a DW_TAG_compile_unit DIE. */
c906108c
SS
58
59EXTERN CORE_ADDR last_source_start_addr;
60
61/* The list of sub-source-files within the current individual
62 compilation. Each file gets its own symtab with its own linetable
63 and associated info, but they all share one blockvector. */
64
65struct subfile
66 {
67 struct subfile *next;
68 char *name;
69 char *dirname;
70 struct linetable *line_vector;
71 int line_vector_length;
72 enum language language;
303b6f5d 73 char *producer;
c906108c 74 char *debugformat;
cb1df416 75 struct symtab *symtab;
c906108c
SS
76 };
77
c906108c
SS
78EXTERN struct subfile *current_subfile;
79
80/* Global variable which, when set, indicates that we are processing a
81 .o file compiled with gcc */
82
83EXTERN unsigned char processing_gcc_compilation;
84
85/* When set, we are processing a .o file compiled by sun acc. This is
86 misnamed; it refers to all stabs-in-elf implementations which use
87 N_UNDF the way Sun does, including Solaris gcc. Hopefully all
88 stabs-in-elf implementations ever invented will choose to be
89 compatible. */
90
91EXTERN unsigned char processing_acc_compilation;
92
c906108c
SS
93/* Count symbols as they are processed, for error messages. */
94
95EXTERN unsigned int symnum;
96
97/* Record the symbols defined for each context in a list. We don't
98 create a struct block for the context until we know how long to
99 make it. */
100
101#define PENDINGSIZE 100
102
103struct pending
104 {
105 struct pending *next;
106 int nsyms;
107 struct symbol *symbol[PENDINGSIZE];
108 };
109
110/* Here are the three lists that symbols are put on. */
111
112/* static at top level, and types */
113
114EXTERN struct pending *file_symbols;
115
116/* global functions and variables */
117
118EXTERN struct pending *global_symbols;
119
120/* everything local to lexical context */
121
122EXTERN struct pending *local_symbols;
123
124/* func params local to lexical context */
125
126EXTERN struct pending *param_symbols;
127
27aa8d6a
SW
128/* "using" directives local to lexical context. */
129
130EXTERN struct using_direct *using_directives;
131
c906108c
SS
132/* Stack representing unclosed lexical contexts (that will become
133 blocks, eventually). */
134
135struct context_stack
136 {
137 /* Outer locals at the time we entered */
138
139 struct pending *locals;
140
141 /* Pending func params at the time we entered */
142
143 struct pending *params;
144
27aa8d6a
SW
145 /* Pending using directives at the time we entered. */
146
147 struct using_direct *using_directives;
148
c906108c
SS
149 /* Pointer into blocklist as of entry */
150
151 struct pending_block *old_blocks;
152
153 /* Name of function, if any, defining context */
154
155 struct symbol *name;
156
157 /* PC where this context starts */
158
159 CORE_ADDR start_addr;
160
161 /* Temp slot for exception handling. */
162
163 CORE_ADDR end_addr;
164
165 /* For error-checking matching push/pop */
166
167 int depth;
168
169 };
170
171EXTERN struct context_stack *context_stack;
172
173/* Index of first unused entry in context stack. */
174
175EXTERN int context_stack_depth;
176
177/* Currently allocated size of context stack. */
178
179EXTERN int context_stack_size;
180
921e78cf
JB
181/* Non-zero if the context stack is empty. */
182#define outermost_context_p() (context_stack_depth == 0)
183
c906108c
SS
184/* Nonzero if within a function (so symbols should be local, if
185 nothing says specifically). */
186
187EXTERN int within_function;
188
189/* List of blocks already made (lexical contexts already closed).
190 This is used at the end to make the blockvector. */
191
192struct pending_block
193 {
194 struct pending_block *next;
195 struct block *block;
196 };
197
198/* Pointer to the head of a linked list of symbol blocks which have
199 already been finalized (lexical contexts already closed) and which
200 are just waiting to be built into a blockvector when finalizing the
201 associated symtab. */
202
203EXTERN struct pending_block *pending_blocks;
204\f
205
206struct subfile_stack
207 {
208 struct subfile_stack *next;
209 char *name;
210 };
211
212EXTERN struct subfile_stack *subfile_stack;
213
214#define next_symbol_text(objfile) (*next_symbol_text_func)(objfile)
215
216/* Function to invoke get the next symbol. Return the symbol name. */
217
218EXTERN char *(*next_symbol_text_func) (struct objfile *);
219
220/* Vector of types defined so far, indexed by their type numbers.
221 Used for both stabs and coff. (In newer sun systems, dbx uses a
222 pair of numbers in parens, as in "(SUBFILENUM,NUMWITHINSUBFILE)".
223 Then these numbers must be translated through the type_translations
224 hash table to get the index into the type vector.) */
225
226EXTERN struct type **type_vector;
227
228/* Number of elements allocated for type_vector currently. */
229
230EXTERN int type_vector_length;
231
232/* Initial size of type vector. Is realloc'd larger if needed, and
233 realloc'd down to the size actually used, when completed. */
234
235#define INITIAL_TYPE_VECTOR_LENGTH 160
236
59527da0
JB
237extern void add_free_pendings (struct pending *list);
238
c906108c
SS
239extern void add_symbol_to_list (struct symbol *symbol,
240 struct pending **listhead);
241
242extern struct symbol *find_symbol_in_list (struct pending *list,
243 char *name, int length);
244
801e3a5b
JB
245extern struct block *finish_block (struct symbol *symbol,
246 struct pending **listhead,
247 struct pending_block *old_blocks,
248 CORE_ADDR start, CORE_ADDR end,
249 struct objfile *objfile);
250
251extern void record_block_range (struct block *,
252 CORE_ADDR start, CORE_ADDR end_inclusive);
c906108c 253
bde58177 254extern void really_free_pendings (void *dummy);
c906108c
SS
255
256extern void start_subfile (char *name, char *dirname);
257
258extern void patch_subfile_names (struct subfile *subfile, char *name);
259
260extern void push_subfile (void);
261
262extern char *pop_subfile (void);
263
264extern struct symtab *end_symtab (CORE_ADDR end_addr,
265 struct objfile *objfile, int section);
266
267/* Defined in stabsread.c. */
268
269extern void scan_file_globals (struct objfile *objfile);
270
271extern void buildsym_new_init (void);
272
273extern void buildsym_init (void);
274
275extern struct context_stack *push_context (int desc, CORE_ADDR valu);
276
0c5e171a
KD
277extern struct context_stack *pop_context (void);
278
c906108c
SS
279extern void record_line (struct subfile *subfile, int line, CORE_ADDR pc);
280
281extern void start_symtab (char *name, char *dirname, CORE_ADDR start_addr);
282
283extern int hashname (char *name);
284
285extern void free_pending_blocks (void);
286
c906108c
SS
287/* FIXME: Note that this is used only in buildsym.c and dstread.c,
288 which should be fixed to not need direct access to
289 record_pending_block. */
290
291extern void record_pending_block (struct objfile *objfile,
292 struct block *block,
293 struct pending_block *opblock);
294
295extern void record_debugformat (char *format);
296
303b6f5d
DJ
297extern void record_producer (const char *producer);
298
c906108c
SS
299extern void merge_symbol_lists (struct pending **srclist,
300 struct pending **targetlist);
301
99d9066e
JB
302/* The macro table for the compilation unit whose symbols we're
303 currently reading. All the symtabs for this CU will point to this. */
304EXTERN struct macro_table *pending_macros;
305
c906108c
SS
306#undef EXTERN
307
308#endif /* defined (BUILDSYM_H) */
This page took 0.585778 seconds and 4 git commands to generate.