]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/buildsym.h
* gdbtypes.h (struct main_type): Change type of name,tag_name,
[thirdparty/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
123/* func params local to lexical context */
124
125EXTERN struct pending *param_symbols;
126
27aa8d6a
SW
127/* "using" directives local to lexical context. */
128
129EXTERN struct using_direct *using_directives;
130
c906108c
SS
131/* Stack representing unclosed lexical contexts (that will become
132 blocks, eventually). */
133
134struct context_stack
135 {
136 /* Outer locals at the time we entered */
137
138 struct pending *locals;
139
140 /* Pending func params at the time we entered */
141
142 struct pending *params;
143
27aa8d6a
SW
144 /* Pending using directives at the time we entered. */
145
146 struct using_direct *using_directives;
147
c906108c
SS
148 /* Pointer into blocklist as of entry */
149
150 struct pending_block *old_blocks;
151
152 /* Name of function, if any, defining context */
153
154 struct symbol *name;
155
156 /* PC where this context starts */
157
158 CORE_ADDR start_addr;
159
0e2de366 160 /* Temp slot for exception handling. */
c906108c
SS
161
162 CORE_ADDR end_addr;
163
164 /* For error-checking matching push/pop */
165
166 int depth;
167
168 };
169
170EXTERN struct context_stack *context_stack;
171
172/* Index of first unused entry in context stack. */
173
174EXTERN int context_stack_depth;
175
176/* Currently allocated size of context stack. */
177
178EXTERN int context_stack_size;
179
921e78cf
JB
180/* Non-zero if the context stack is empty. */
181#define outermost_context_p() (context_stack_depth == 0)
182
c906108c
SS
183/* Nonzero if within a function (so symbols should be local, if
184 nothing says specifically). */
185
186EXTERN int within_function;
187
188/* List of blocks already made (lexical contexts already closed).
189 This is used at the end to make the blockvector. */
190
191struct pending_block
192 {
193 struct pending_block *next;
194 struct block *block;
195 };
196
197/* Pointer to the head of a linked list of symbol blocks which have
198 already been finalized (lexical contexts already closed) and which
199 are just waiting to be built into a blockvector when finalizing the
0e2de366 200 associated symtab. */
c906108c
SS
201
202EXTERN struct pending_block *pending_blocks;
203\f
204
205struct subfile_stack
206 {
207 struct subfile_stack *next;
208 char *name;
209 };
210
211EXTERN struct subfile_stack *subfile_stack;
212
213#define next_symbol_text(objfile) (*next_symbol_text_func)(objfile)
214
0e2de366 215/* Function to invoke get the next symbol. Return the symbol name. */
c906108c
SS
216
217EXTERN char *(*next_symbol_text_func) (struct objfile *);
218
219/* Vector of types defined so far, indexed by their type numbers.
220 Used for both stabs and coff. (In newer sun systems, dbx uses a
221 pair of numbers in parens, as in "(SUBFILENUM,NUMWITHINSUBFILE)".
222 Then these numbers must be translated through the type_translations
223 hash table to get the index into the type vector.) */
224
225EXTERN struct type **type_vector;
226
227/* Number of elements allocated for type_vector currently. */
228
229EXTERN int type_vector_length;
230
231/* Initial size of type vector. Is realloc'd larger if needed, and
232 realloc'd down to the size actually used, when completed. */
233
234#define INITIAL_TYPE_VECTOR_LENGTH 160
235
59527da0
JB
236extern void add_free_pendings (struct pending *list);
237
c906108c
SS
238extern void add_symbol_to_list (struct symbol *symbol,
239 struct pending **listhead);
240
241extern struct symbol *find_symbol_in_list (struct pending *list,
242 char *name, int length);
243
801e3a5b
JB
244extern struct block *finish_block (struct symbol *symbol,
245 struct pending **listhead,
246 struct pending_block *old_blocks,
247 CORE_ADDR start, CORE_ADDR end,
248 struct objfile *objfile);
249
250extern void record_block_range (struct block *,
251 CORE_ADDR start, CORE_ADDR end_inclusive);
c906108c 252
bde58177 253extern void really_free_pendings (void *dummy);
c906108c 254
72b9f47f 255extern void start_subfile (const char *name, const char *dirname);
c906108c
SS
256
257extern void patch_subfile_names (struct subfile *subfile, char *name);
258
259extern void push_subfile (void);
260
261extern char *pop_subfile (void);
262
263extern struct symtab *end_symtab (CORE_ADDR end_addr,
264 struct objfile *objfile, int section);
265
266/* Defined in stabsread.c. */
267
268extern void scan_file_globals (struct objfile *objfile);
269
270extern void buildsym_new_init (void);
271
272extern void buildsym_init (void);
273
274extern struct context_stack *push_context (int desc, CORE_ADDR valu);
275
0c5e171a
KD
276extern struct context_stack *pop_context (void);
277
c906108c
SS
278extern void record_line (struct subfile *subfile, int line, CORE_ADDR pc);
279
280extern void start_symtab (char *name, char *dirname, CORE_ADDR start_addr);
281
0d5cff50 282extern int hashname (const char *name);
c906108c
SS
283
284extern void free_pending_blocks (void);
285
c906108c
SS
286/* FIXME: Note that this is used only in buildsym.c and dstread.c,
287 which should be fixed to not need direct access to
0e2de366 288 record_pending_block. */
c906108c
SS
289
290extern void record_pending_block (struct objfile *objfile,
291 struct block *block,
292 struct pending_block *opblock);
293
554d387d
TT
294/* Record the name of the debug format in the current pending symbol
295 table. FORMAT must be a string with a lifetime at least as long as
296 the symtab's objfile. */
297
298extern void record_debugformat (const char *format);
299
300/* Record the name of the debuginfo producer (usually the compiler) in
301 the current pending symbol table. PRODUCER must be a string with a
302 lifetime at least as long as the symtab's objfile. */
c906108c 303
303b6f5d
DJ
304extern void record_producer (const char *producer);
305
c906108c
SS
306extern void merge_symbol_lists (struct pending **srclist,
307 struct pending **targetlist);
308
99d9066e 309/* The macro table for the compilation unit whose symbols we're
0e2de366
MS
310 currently reading. All the symtabs for this CU will point to
311 this. */
99d9066e
JB
312EXTERN struct macro_table *pending_macros;
313
c906108c
SS
314#undef EXTERN
315
316#endif /* defined (BUILDSYM_H) */