Add ravenscar-thread support for powerpc.
[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 39struct block;
93eed41f 40struct pending_block;
fe898f56 41
c906108c
SS
42#ifndef EXTERN
43#define EXTERN extern
44#endif
45
46#define HASHSIZE 127 /* Size of things hashed via
0e2de366 47 hashname(). */
c906108c
SS
48
49/* Name of source file whose symbol data we are now processing. This
0e2de366
MS
50 comes from a symbol of type N_SO for stabs. For Dwarf it comes
51 from the 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;
554d387d
TT
73 const char *producer;
74 const 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
27aa8d6a
SW
124/* "using" directives local to lexical context. */
125
126EXTERN struct using_direct *using_directives;
127
c906108c
SS
128/* Stack representing unclosed lexical contexts (that will become
129 blocks, eventually). */
130
131struct context_stack
132 {
133 /* Outer locals at the time we entered */
134
135 struct pending *locals;
136
27aa8d6a
SW
137 /* Pending using directives at the time we entered. */
138
139 struct using_direct *using_directives;
140
c906108c
SS
141 /* Pointer into blocklist as of entry */
142
143 struct pending_block *old_blocks;
144
145 /* Name of function, if any, defining context */
146
147 struct symbol *name;
148
149 /* PC where this context starts */
150
151 CORE_ADDR start_addr;
152
0e2de366 153 /* Temp slot for exception handling. */
c906108c
SS
154
155 CORE_ADDR end_addr;
156
157 /* For error-checking matching push/pop */
158
159 int depth;
160
161 };
162
163EXTERN struct context_stack *context_stack;
164
165/* Index of first unused entry in context stack. */
166
167EXTERN int context_stack_depth;
168
169/* Currently allocated size of context stack. */
170
171EXTERN int context_stack_size;
172
921e78cf
JB
173/* Non-zero if the context stack is empty. */
174#define outermost_context_p() (context_stack_depth == 0)
175
c906108c
SS
176/* Nonzero if within a function (so symbols should be local, if
177 nothing says specifically). */
178
179EXTERN int within_function;
180
c906108c
SS
181\f
182
183struct subfile_stack
184 {
185 struct subfile_stack *next;
186 char *name;
187 };
188
189EXTERN struct subfile_stack *subfile_stack;
190
191#define next_symbol_text(objfile) (*next_symbol_text_func)(objfile)
192
0e2de366 193/* Function to invoke get the next symbol. Return the symbol name. */
c906108c
SS
194
195EXTERN char *(*next_symbol_text_func) (struct objfile *);
196
197/* Vector of types defined so far, indexed by their type numbers.
198 Used for both stabs and coff. (In newer sun systems, dbx uses a
199 pair of numbers in parens, as in "(SUBFILENUM,NUMWITHINSUBFILE)".
200 Then these numbers must be translated through the type_translations
201 hash table to get the index into the type vector.) */
202
203EXTERN struct type **type_vector;
204
205/* Number of elements allocated for type_vector currently. */
206
207EXTERN int type_vector_length;
208
209/* Initial size of type vector. Is realloc'd larger if needed, and
210 realloc'd down to the size actually used, when completed. */
211
212#define INITIAL_TYPE_VECTOR_LENGTH 160
213
214extern void add_symbol_to_list (struct symbol *symbol,
215 struct pending **listhead);
216
217extern struct symbol *find_symbol_in_list (struct pending *list,
218 char *name, int length);
219
801e3a5b
JB
220extern struct block *finish_block (struct symbol *symbol,
221 struct pending **listhead,
222 struct pending_block *old_blocks,
223 CORE_ADDR start, CORE_ADDR end,
224 struct objfile *objfile);
225
226extern void record_block_range (struct block *,
227 CORE_ADDR start, CORE_ADDR end_inclusive);
c906108c 228
bde58177 229extern void really_free_pendings (void *dummy);
c906108c 230
72b9f47f 231extern void start_subfile (const char *name, const char *dirname);
c906108c
SS
232
233extern void patch_subfile_names (struct subfile *subfile, char *name);
234
235extern void push_subfile (void);
236
237extern char *pop_subfile (void);
238
4359dff1
JK
239extern struct block *end_symtab_get_static_block (CORE_ADDR end_addr,
240 struct objfile *objfile,
36586728
TT
241 int expandable,
242 int required);
4359dff1
JK
243
244extern struct symtab *end_symtab_from_static_block (struct block *static_block,
245 struct objfile *objfile,
246 int section,
247 int expandable);
248
c906108c
SS
249extern struct symtab *end_symtab (CORE_ADDR end_addr,
250 struct objfile *objfile, int section);
251
6d30eef8
DE
252extern struct symtab *end_expandable_symtab (CORE_ADDR end_addr,
253 struct objfile *objfile,
254 int section);
255
256extern void augment_type_symtab (struct objfile *objfile,
257 struct symtab *primary_symtab);
258
c906108c
SS
259/* Defined in stabsread.c. */
260
261extern void scan_file_globals (struct objfile *objfile);
262
263extern void buildsym_new_init (void);
264
265extern void buildsym_init (void);
266
267extern struct context_stack *push_context (int desc, CORE_ADDR valu);
268
0c5e171a
KD
269extern struct context_stack *pop_context (void);
270
c906108c
SS
271extern void record_line (struct subfile *subfile, int line, CORE_ADDR pc);
272
273extern void start_symtab (char *name, char *dirname, CORE_ADDR start_addr);
274
6d30eef8
DE
275extern void restart_symtab (CORE_ADDR start_addr);
276
0d5cff50 277extern int hashname (const char *name);
c906108c
SS
278
279extern void free_pending_blocks (void);
280
554d387d
TT
281/* Record the name of the debug format in the current pending symbol
282 table. FORMAT must be a string with a lifetime at least as long as
283 the symtab's objfile. */
284
285extern void record_debugformat (const char *format);
286
287/* Record the name of the debuginfo producer (usually the compiler) in
288 the current pending symbol table. PRODUCER must be a string with a
289 lifetime at least as long as the symtab's objfile. */
c906108c 290
303b6f5d
DJ
291extern void record_producer (const char *producer);
292
c906108c
SS
293extern void merge_symbol_lists (struct pending **srclist,
294 struct pending **targetlist);
295
99d9066e 296/* The macro table for the compilation unit whose symbols we're
0e2de366
MS
297 currently reading. All the symtabs for this CU will point to
298 this. */
99d9066e
JB
299EXTERN struct macro_table *pending_macros;
300
c906108c
SS
301#undef EXTERN
302
303#endif /* defined (BUILDSYM_H) */
This page took 0.772291 seconds and 4 git commands to generate.