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