* configure.tgt (powerpc-*-elf, et al): Define targ_extra_libpath.
[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
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
236extern void add_symbol_to_list (struct symbol *symbol,
237 struct pending **listhead);
238
239extern struct symbol *find_symbol_in_list (struct pending *list,
240 char *name, int length);
241
801e3a5b
JB
242extern struct block *finish_block (struct symbol *symbol,
243 struct pending **listhead,
244 struct pending_block *old_blocks,
245 CORE_ADDR start, CORE_ADDR end,
246 struct objfile *objfile);
247
248extern void record_block_range (struct block *,
249 CORE_ADDR start, CORE_ADDR end_inclusive);
c906108c 250
bde58177 251extern void really_free_pendings (void *dummy);
c906108c 252
72b9f47f 253extern void start_subfile (const char *name, const char *dirname);
c906108c
SS
254
255extern void patch_subfile_names (struct subfile *subfile, char *name);
256
257extern void push_subfile (void);
258
259extern char *pop_subfile (void);
260
4359dff1
JK
261extern struct block *end_symtab_get_static_block (CORE_ADDR end_addr,
262 struct objfile *objfile,
36586728
TT
263 int expandable,
264 int required);
4359dff1
JK
265
266extern struct symtab *end_symtab_from_static_block (struct block *static_block,
267 struct objfile *objfile,
268 int section,
269 int expandable);
270
c906108c
SS
271extern struct symtab *end_symtab (CORE_ADDR end_addr,
272 struct objfile *objfile, int section);
273
6d30eef8
DE
274extern struct symtab *end_expandable_symtab (CORE_ADDR end_addr,
275 struct objfile *objfile,
276 int section);
277
278extern void augment_type_symtab (struct objfile *objfile,
279 struct symtab *primary_symtab);
280
c906108c
SS
281/* Defined in stabsread.c. */
282
283extern void scan_file_globals (struct objfile *objfile);
284
285extern void buildsym_new_init (void);
286
287extern void buildsym_init (void);
288
289extern struct context_stack *push_context (int desc, CORE_ADDR valu);
290
0c5e171a
KD
291extern struct context_stack *pop_context (void);
292
c906108c
SS
293extern void record_line (struct subfile *subfile, int line, CORE_ADDR pc);
294
295extern void start_symtab (char *name, char *dirname, CORE_ADDR start_addr);
296
6d30eef8
DE
297extern void restart_symtab (CORE_ADDR start_addr);
298
0d5cff50 299extern int hashname (const char *name);
c906108c
SS
300
301extern void free_pending_blocks (void);
302
554d387d
TT
303/* Record the name of the debug format in the current pending symbol
304 table. FORMAT must be a string with a lifetime at least as long as
305 the symtab's objfile. */
306
307extern void record_debugformat (const char *format);
308
309/* Record the name of the debuginfo producer (usually the compiler) in
310 the current pending symbol table. PRODUCER must be a string with a
311 lifetime at least as long as the symtab's objfile. */
c906108c 312
303b6f5d
DJ
313extern void record_producer (const char *producer);
314
c906108c
SS
315extern void merge_symbol_lists (struct pending **srclist,
316 struct pending **targetlist);
317
99d9066e 318/* The macro table for the compilation unit whose symbols we're
0e2de366
MS
319 currently reading. All the symtabs for this CU will point to
320 this. */
99d9066e
JB
321EXTERN struct macro_table *pending_macros;
322
c906108c
SS
323#undef EXTERN
324
325#endif /* defined (BUILDSYM_H) */
This page took 0.783227 seconds and 4 git commands to generate.