* breakpoint.c (remove_sal): New.
[deliverable/binutils-gdb.git] / gdb / buildsym.h
CommitLineData
c906108c 1/* Build symbol tables in GDB's internal format.
197e01b6 2 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1996,
6aba47ca 3 1997, 1998, 1999, 2000, 2002, 2003, 2007 Free 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;
25
c906108c
SS
26/* This module provides definitions used for creating and adding to
27 the symbol table. These routines are called from various symbol-
28 file-reading routines.
29
30 They originated in dbxread.c of gdb-4.2, and were split out to
31 make xcoffread.c more maintainable by sharing code.
32
33 Variables declared in this file can be defined by #define-ing the
34 name EXTERN to null. It is used to declare variables that are
35 normally extern, but which get defined in a single module using
36 this technique. */
37
fe898f56
DC
38struct block;
39
c906108c
SS
40#ifndef EXTERN
41#define EXTERN extern
42#endif
43
44#define HASHSIZE 127 /* Size of things hashed via
45 hashname() */
46
47/* Name of source file whose symbol data we are now processing. This
48 comes from a symbol of type N_SO. */
49
50EXTERN char *last_source_file;
51
52/* Core address of start of text of current source file. This too
53 comes from the N_SO symbol. */
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
62 {
63 struct subfile *next;
64 char *name;
65 char *dirname;
66 struct linetable *line_vector;
67 int line_vector_length;
68 enum language language;
303b6f5d 69 char *producer;
c906108c 70 char *debugformat;
cb1df416 71 struct symtab *symtab;
c906108c
SS
72 };
73
74EXTERN struct subfile *subfiles;
75
76EXTERN struct subfile *current_subfile;
77
78/* Global variable which, when set, indicates that we are processing a
79 .o file compiled with gcc */
80
81EXTERN unsigned char processing_gcc_compilation;
82
83/* When set, we are processing a .o file compiled by sun acc. This is
84 misnamed; it refers to all stabs-in-elf implementations which use
85 N_UNDF the way Sun does, including Solaris gcc. Hopefully all
86 stabs-in-elf implementations ever invented will choose to be
87 compatible. */
88
89EXTERN unsigned char processing_acc_compilation;
90
c906108c
SS
91/* Count symbols as they are processed, for error messages. */
92
93EXTERN unsigned int symnum;
94
95/* Record the symbols defined for each context in a list. We don't
96 create a struct block for the context until we know how long to
97 make it. */
98
99#define PENDINGSIZE 100
100
101struct pending
102 {
103 struct pending *next;
104 int nsyms;
105 struct symbol *symbol[PENDINGSIZE];
106 };
107
108/* Here are the three lists that symbols are put on. */
109
110/* static at top level, and types */
111
112EXTERN struct pending *file_symbols;
113
114/* global functions and variables */
115
116EXTERN struct pending *global_symbols;
117
118/* everything local to lexical context */
119
120EXTERN struct pending *local_symbols;
121
122/* func params local to lexical context */
123
124EXTERN struct pending *param_symbols;
125
126/* Stack representing unclosed lexical contexts (that will become
127 blocks, eventually). */
128
129struct context_stack
130 {
131 /* Outer locals at the time we entered */
132
133 struct pending *locals;
134
135 /* Pending func params at the time we entered */
136
137 struct pending *params;
138
139 /* Pointer into blocklist as of entry */
140
141 struct pending_block *old_blocks;
142
143 /* Name of function, if any, defining context */
144
145 struct symbol *name;
146
147 /* PC where this context starts */
148
149 CORE_ADDR start_addr;
150
151 /* Temp slot for exception handling. */
152
153 CORE_ADDR end_addr;
154
155 /* For error-checking matching push/pop */
156
157 int depth;
158
159 };
160
161EXTERN struct context_stack *context_stack;
162
163/* Index of first unused entry in context stack. */
164
165EXTERN int context_stack_depth;
166
167/* Currently allocated size of context stack. */
168
169EXTERN int context_stack_size;
170
921e78cf
JB
171/* Non-zero if the context stack is empty. */
172#define outermost_context_p() (context_stack_depth == 0)
173
c906108c
SS
174/* Nonzero if within a function (so symbols should be local, if
175 nothing says specifically). */
176
177EXTERN int within_function;
178
179/* List of blocks already made (lexical contexts already closed).
180 This is used at the end to make the blockvector. */
181
182struct pending_block
183 {
184 struct pending_block *next;
185 struct block *block;
186 };
187
188/* Pointer to the head of a linked list of symbol blocks which have
189 already been finalized (lexical contexts already closed) and which
190 are just waiting to be built into a blockvector when finalizing the
191 associated symtab. */
192
193EXTERN struct pending_block *pending_blocks;
194\f
195
196struct subfile_stack
197 {
198 struct subfile_stack *next;
199 char *name;
200 };
201
202EXTERN struct subfile_stack *subfile_stack;
203
204#define next_symbol_text(objfile) (*next_symbol_text_func)(objfile)
205
206/* Function to invoke get the next symbol. Return the symbol name. */
207
208EXTERN char *(*next_symbol_text_func) (struct objfile *);
209
210/* Vector of types defined so far, indexed by their type numbers.
211 Used for both stabs and coff. (In newer sun systems, dbx uses a
212 pair of numbers in parens, as in "(SUBFILENUM,NUMWITHINSUBFILE)".
213 Then these numbers must be translated through the type_translations
214 hash table to get the index into the type vector.) */
215
216EXTERN struct type **type_vector;
217
218/* Number of elements allocated for type_vector currently. */
219
220EXTERN int type_vector_length;
221
222/* Initial size of type vector. Is realloc'd larger if needed, and
223 realloc'd down to the size actually used, when completed. */
224
225#define INITIAL_TYPE_VECTOR_LENGTH 160
226
59527da0
JB
227extern void add_free_pendings (struct pending *list);
228
c906108c
SS
229extern void add_symbol_to_list (struct symbol *symbol,
230 struct pending **listhead);
231
232extern struct symbol *find_symbol_in_list (struct pending *list,
233 char *name, int length);
234
235extern void finish_block (struct symbol *symbol,
236 struct pending **listhead,
237 struct pending_block *old_blocks,
238 CORE_ADDR start, CORE_ADDR end,
239 struct objfile *objfile);
240
bde58177 241extern void really_free_pendings (void *dummy);
c906108c
SS
242
243extern void start_subfile (char *name, char *dirname);
244
245extern void patch_subfile_names (struct subfile *subfile, char *name);
246
247extern void push_subfile (void);
248
249extern char *pop_subfile (void);
250
251extern struct symtab *end_symtab (CORE_ADDR end_addr,
252 struct objfile *objfile, int section);
253
254/* Defined in stabsread.c. */
255
256extern void scan_file_globals (struct objfile *objfile);
257
258extern void buildsym_new_init (void);
259
260extern void buildsym_init (void);
261
262extern struct context_stack *push_context (int desc, CORE_ADDR valu);
263
0c5e171a
KD
264extern struct context_stack *pop_context (void);
265
c906108c
SS
266extern void record_line (struct subfile *subfile, int line, CORE_ADDR pc);
267
268extern void start_symtab (char *name, char *dirname, CORE_ADDR start_addr);
269
270extern int hashname (char *name);
271
272extern void free_pending_blocks (void);
273
c906108c
SS
274/* FIXME: Note that this is used only in buildsym.c and dstread.c,
275 which should be fixed to not need direct access to
276 record_pending_block. */
277
278extern void record_pending_block (struct objfile *objfile,
279 struct block *block,
280 struct pending_block *opblock);
281
282extern void record_debugformat (char *format);
283
303b6f5d
DJ
284extern void record_producer (const char *producer);
285
c906108c
SS
286extern void merge_symbol_lists (struct pending **srclist,
287 struct pending **targetlist);
288
99d9066e
JB
289/* The macro table for the compilation unit whose symbols we're
290 currently reading. All the symtabs for this CU will point to this. */
291EXTERN struct macro_table *pending_macros;
292
c906108c
SS
293#undef EXTERN
294
295#endif /* defined (BUILDSYM_H) */
This page took 0.448976 seconds and 4 git commands to generate.