Always run async signal handlers in the main UI
[deliverable/binutils-gdb.git] / gdb / buildsym.h
CommitLineData
c906108c 1/* Build symbol tables in GDB's internal format.
618f726f 2 Copyright (C) 1986-2016 Free Software Foundation, Inc.
c906108c 3
c5aa993b
JM
4 This file is part of GDB.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
a9762ec7 8 the Free Software Foundation; either version 3 of the License, or
c5aa993b
JM
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
a9762ec7 17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
18
19#if !defined (BUILDSYM_H)
20#define BUILDSYM_H 1
21
da3331ec
AC
22struct objfile;
23struct symbol;
801e3a5b 24struct addrmap;
43f3e411 25struct compunit_symtab;
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 39struct block;
93eed41f 40struct pending_block;
fe898f56 41
63e43d3a
PMR
42struct dynamic_prop;
43
c906108c
SS
44#ifndef EXTERN
45#define EXTERN extern
46#endif
47
48#define HASHSIZE 127 /* Size of things hashed via
0e2de366 49 hashname(). */
c906108c 50
c906108c 51/* Core address of start of text of current source file. This too
92b5c263
DE
52 comes from the N_SO symbol. For Dwarf it typically comes from the
53 DW_AT_low_pc attribute of a DW_TAG_compile_unit DIE. */
c906108c
SS
54
55EXTERN CORE_ADDR last_source_start_addr;
56
57/* The list of sub-source-files within the current individual
58 compilation. Each file gets its own symtab with its own linetable
59 and associated info, but they all share one blockvector. */
60
61struct subfile
43f3e411
DE
62{
63 struct subfile *next;
64 /* Space for this is malloc'd. */
65 char *name;
66 /* Space for this is malloc'd. */
67 struct linetable *line_vector;
68 int line_vector_length;
69 /* The "containing" compunit. */
70 struct buildsym_compunit *buildsym_compunit;
71 enum language language;
72 struct symtab *symtab;
73};
c906108c 74
c906108c
SS
75EXTERN struct subfile *current_subfile;
76
77/* Global variable which, when set, indicates that we are processing a
78 .o file compiled with gcc */
79
80EXTERN unsigned char processing_gcc_compilation;
81
82/* When set, we are processing a .o file compiled by sun acc. This is
83 misnamed; it refers to all stabs-in-elf implementations which use
84 N_UNDF the way Sun does, including Solaris gcc. Hopefully all
85 stabs-in-elf implementations ever invented will choose to be
86 compatible. */
87
88EXTERN unsigned char processing_acc_compilation;
89
c906108c
SS
90/* Count symbols as they are processed, for error messages. */
91
92EXTERN unsigned int symnum;
93
94/* Record the symbols defined for each context in a list. We don't
95 create a struct block for the context until we know how long to
96 make it. */
97
98#define PENDINGSIZE 100
99
100struct pending
101 {
102 struct pending *next;
103 int nsyms;
104 struct symbol *symbol[PENDINGSIZE];
105 };
106
107/* Here are the three lists that symbols are put on. */
108
109/* static at top level, and types */
110
111EXTERN struct pending *file_symbols;
112
113/* global functions and variables */
114
115EXTERN struct pending *global_symbols;
116
117/* everything local to lexical context */
118
119EXTERN struct pending *local_symbols;
120
27aa8d6a
SW
121/* "using" directives local to lexical context. */
122
22cee43f
PMR
123EXTERN struct using_direct *local_using_directives;
124
125/* global "using" directives. */
126
127EXTERN struct using_direct *global_using_directives;
27aa8d6a 128
c906108c
SS
129/* Stack representing unclosed lexical contexts (that will become
130 blocks, eventually). */
131
132struct context_stack
133 {
134 /* Outer locals at the time we entered */
135
136 struct pending *locals;
137
27aa8d6a
SW
138 /* Pending using directives at the time we entered. */
139
22cee43f 140 struct using_direct *local_using_directives;
27aa8d6a 141
c906108c
SS
142 /* Pointer into blocklist as of entry */
143
144 struct pending_block *old_blocks;
145
146 /* Name of function, if any, defining context */
147
148 struct symbol *name;
149
63e43d3a
PMR
150 /* Expression that computes the frame base of the lexically enclosing
151 function, if any. NULL otherwise. */
152
153 struct dynamic_prop *static_link;
154
c906108c
SS
155 /* PC where this context starts */
156
157 CORE_ADDR start_addr;
158
0e2de366 159 /* Temp slot for exception handling. */
c906108c
SS
160
161 CORE_ADDR end_addr;
162
163 /* For error-checking matching push/pop */
164
165 int depth;
166
167 };
168
169EXTERN struct context_stack *context_stack;
170
171/* Index of first unused entry in context stack. */
172
173EXTERN int context_stack_depth;
174
175/* Currently allocated size of context stack. */
176
177EXTERN int context_stack_size;
178
921e78cf
JB
179/* Non-zero if the context stack is empty. */
180#define outermost_context_p() (context_stack_depth == 0)
181
c906108c
SS
182/* Nonzero if within a function (so symbols should be local, if
183 nothing says specifically). */
184
185EXTERN int within_function;
186
252a6764
DE
187/* The type of the record_line function. */
188typedef void (record_line_ftype) (struct subfile *subfile, int line,
189 CORE_ADDR pc);
190
c906108c
SS
191\f
192
c906108c
SS
193#define next_symbol_text(objfile) (*next_symbol_text_func)(objfile)
194
0e2de366 195/* Function to invoke get the next symbol. Return the symbol name. */
c906108c
SS
196
197EXTERN char *(*next_symbol_text_func) (struct objfile *);
198
c906108c
SS
199extern void add_symbol_to_list (struct symbol *symbol,
200 struct pending **listhead);
201
202extern struct symbol *find_symbol_in_list (struct pending *list,
203 char *name, int length);
204
801e3a5b 205extern struct block *finish_block (struct symbol *symbol,
63e43d3a
PMR
206 struct pending **listhead,
207 struct pending_block *old_blocks,
208 const struct dynamic_prop *static_link,
209 CORE_ADDR start,
210 CORE_ADDR end);
801e3a5b
JB
211
212extern void record_block_range (struct block *,
213 CORE_ADDR start, CORE_ADDR end_inclusive);
c906108c 214
bde58177 215extern void really_free_pendings (void *dummy);
c906108c 216
4d663531 217extern void start_subfile (const char *name);
c906108c
SS
218
219extern void patch_subfile_names (struct subfile *subfile, char *name);
220
221extern void push_subfile (void);
222
223extern char *pop_subfile (void);
224
4359dff1 225extern struct block *end_symtab_get_static_block (CORE_ADDR end_addr,
36586728
TT
226 int expandable,
227 int required);
4359dff1 228
43f3e411
DE
229extern struct compunit_symtab *
230 end_symtab_from_static_block (struct block *static_block,
231 int section, int expandable);
4359dff1 232
43f3e411 233extern struct compunit_symtab *end_symtab (CORE_ADDR end_addr, int section);
c906108c 234
43f3e411
DE
235extern struct compunit_symtab *end_expandable_symtab (CORE_ADDR end_addr,
236 int section);
6d30eef8 237
0ab9ce85 238extern void augment_type_symtab (void);
6d30eef8 239
c906108c
SS
240/* Defined in stabsread.c. */
241
242extern void scan_file_globals (struct objfile *objfile);
243
244extern void buildsym_new_init (void);
245
246extern void buildsym_init (void);
247
248extern struct context_stack *push_context (int desc, CORE_ADDR valu);
249
0c5e171a
KD
250extern struct context_stack *pop_context (void);
251
252a6764 252extern record_line_ftype record_line;
c906108c 253
43f3e411
DE
254extern struct compunit_symtab *start_symtab (struct objfile *objfile,
255 const char *name,
256 const char *comp_dir,
257 CORE_ADDR start_addr);
c906108c 258
0ab9ce85
DE
259extern void restart_symtab (struct compunit_symtab *cust,
260 const char *name, CORE_ADDR start_addr);
6d30eef8 261
0d5cff50 262extern int hashname (const char *name);
c906108c
SS
263
264extern void free_pending_blocks (void);
265
554d387d
TT
266/* Record the name of the debug format in the current pending symbol
267 table. FORMAT must be a string with a lifetime at least as long as
268 the symtab's objfile. */
269
270extern void record_debugformat (const char *format);
271
272/* Record the name of the debuginfo producer (usually the compiler) in
273 the current pending symbol table. PRODUCER must be a string with a
274 lifetime at least as long as the symtab's objfile. */
c906108c 275
303b6f5d
DJ
276extern void record_producer (const char *producer);
277
c906108c
SS
278extern void merge_symbol_lists (struct pending **srclist,
279 struct pending **targetlist);
280
46212e0b
TT
281/* Set the name of the last source file. NAME is copied by this
282 function. */
283
284extern void set_last_source_file (const char *name);
285
286/* Fetch the name of the last source file. */
287
288extern const char *get_last_source_file (void);
289
43f3e411
DE
290/* Return the compunit symtab object.
291 It is only valid to call this between calls to start_symtab and the
292 end_symtab* functions. */
293
294extern struct compunit_symtab *buildsym_compunit_symtab (void);
295
296/* Return the macro table.
297 Initialize it if this is the first use.
298 It is only valid to call this between calls to start_symtab and the
299 end_symtab* functions. */
fc474241 300
43f3e411 301extern struct macro_table *get_macro_table (void);
99d9066e 302
c906108c
SS
303#undef EXTERN
304
305#endif /* defined (BUILDSYM_H) */
This page took 1.050456 seconds and 4 git commands to generate.