]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/symtab.h
daily update
[thirdparty/binutils-gdb.git] / gdb / symtab.h
CommitLineData
c906108c 1/* Symbol table definitions for GDB.
1bac305b
AC
2
3 Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
5 Foundation, Inc.
c906108c 6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
c906108c 13
c5aa993b
JM
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
c906108c 18
c5aa993b
JM
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
c906108c
SS
23
24#if !defined (SYMTAB_H)
25#define SYMTAB_H 1
26
5f8a3188
AC
27/* Opaque declarations. */
28struct obstack;
c906108c
SS
29
30/* Don't do this; it means that if some .o's are compiled with GNU C
31 and some are not (easy to do accidentally the way we configure
32 things; also it is a pain to have to "make clean" every time you
33 want to switch compilers), then GDB dies a horrible death. */
34/* GNU C supports enums that are bitfields. Some compilers don't. */
35#if 0 && defined(__GNUC__) && !defined(BYTE_BITFIELD)
36#define BYTE_BITFIELD :8;
37#else
c5aa993b 38#define BYTE_BITFIELD /*nothing */
c906108c
SS
39#endif
40
41/* Define a structure for the information that is common to all symbol types,
42 including minimal symbols, partial symbols, and full symbols. In a
43 multilanguage environment, some language specific information may need to
44 be recorded along with each symbol.
45
46 These fields are ordered to encourage good packing, since we frequently
47 have tens or hundreds of thousands of these. */
48
49struct general_symbol_info
17c5ed2c
DC
50{
51 /* Name of the symbol. This is a required field. Storage for the name is
52 allocated on the psymbol_obstack or symbol_obstack for the associated
53 objfile. */
c906108c 54
17c5ed2c 55 char *name;
c906108c 56
17c5ed2c
DC
57 /* Value of the symbol. Which member of this union to use, and what
58 it means, depends on what kind of symbol this is and its
59 SYMBOL_CLASS. See comments there for more details. All of these
60 are in host byte order (though what they point to might be in
61 target byte order, e.g. LOC_CONST_BYTES). */
c906108c 62
17c5ed2c
DC
63 union
64 {
65 /* The fact that this is a long not a LONGEST mainly limits the
66 range of a LOC_CONST. Since LOC_CONST_BYTES exists, I'm not
67 sure that is a big deal. */
68 long ivalue;
c906108c 69
17c5ed2c 70 struct block *block;
c906108c 71
17c5ed2c 72 char *bytes;
c906108c 73
17c5ed2c 74 CORE_ADDR address;
c906108c 75
17c5ed2c 76 /* for opaque typedef struct chain */
c906108c 77
17c5ed2c
DC
78 struct symbol *chain;
79 }
80 value;
c906108c 81
17c5ed2c
DC
82 /* Since one and only one language can apply, wrap the language specific
83 information inside a union. */
c906108c 84
17c5ed2c
DC
85 union
86 {
87 struct cplus_specific /* For C++ */
88 /* and Java */
89 {
90 char *demangled_name;
91 }
92 cplus_specific;
ff4cb3e8
AF
93 struct objc_specific
94 {
95 char *demangled_name;
96 }
97 objc_specific;
17c5ed2c
DC
98 }
99 language_specific;
c5aa993b 100
17c5ed2c
DC
101 /* Record the source code language that applies to this symbol.
102 This is used to select one of the fields from the language specific
103 union above. */
c5aa993b 104
17c5ed2c 105 enum language language BYTE_BITFIELD;
c5aa993b 106
17c5ed2c
DC
107 /* Which section is this symbol in? This is an index into
108 section_offsets for this objfile. Negative means that the symbol
109 does not get relocated relative to a section.
110 Disclaimer: currently this is just used for xcoff, so don't
111 expect all symbol-reading code to set it correctly (the ELF code
112 also tries to set it correctly). */
c5aa993b 113
17c5ed2c 114 short section;
c5aa993b 115
17c5ed2c 116 /* The bfd section associated with this symbol. */
c5aa993b 117
17c5ed2c
DC
118 asection *bfd_section;
119};
c906108c 120
a14ed312 121extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *);
c906108c 122
88cda038
EZ
123/* Note that all the following SYMBOL_* macros are used with the
124 SYMBOL argument being either a partial symbol, a minimal symbol or
125 a full symbol. All three types have a ginfo field. In particular
126 the SYMBOL_INIT_LANGUAGE_SPECIFIC, SYMBOL_INIT_DEMANGLED_NAME,
127 SYMBOL_DEMANGLED_NAME macros cannot be entirely substituted by
128 functions, unless the callers are changed to pass in the ginfo
129 field only, instead of the SYMBOL parameter. */
130
c906108c
SS
131#define SYMBOL_NAME(symbol) (symbol)->ginfo.name
132#define SYMBOL_VALUE(symbol) (symbol)->ginfo.value.ivalue
133#define SYMBOL_VALUE_ADDRESS(symbol) (symbol)->ginfo.value.address
134#define SYMBOL_VALUE_BYTES(symbol) (symbol)->ginfo.value.bytes
135#define SYMBOL_BLOCK_VALUE(symbol) (symbol)->ginfo.value.block
136#define SYMBOL_VALUE_CHAIN(symbol) (symbol)->ginfo.value.chain
137#define SYMBOL_LANGUAGE(symbol) (symbol)->ginfo.language
138#define SYMBOL_SECTION(symbol) (symbol)->ginfo.section
139#define SYMBOL_BFD_SECTION(symbol) (symbol)->ginfo.bfd_section
140
141#define SYMBOL_CPLUS_DEMANGLED_NAME(symbol) \
142 (symbol)->ginfo.language_specific.cplus_specific.demangled_name
143
89aad1f9 144/* Initializes the language dependent portion of a symbol
c906108c 145 depending upon the language for the symbol. */
89aad1f9
EZ
146#define SYMBOL_INIT_LANGUAGE_SPECIFIC(symbol,language) \
147 (symbol_init_language_specific (&(symbol)->ginfo, (language)))
148extern void symbol_init_language_specific (struct general_symbol_info *symbol,
149 enum language language);
c906108c 150
12af6855
JB
151#define SYMBOL_INIT_DEMANGLED_NAME(symbol,obstack) \
152 (symbol_init_demangled_name (&symbol->ginfo, (obstack)))
153extern void symbol_init_demangled_name (struct general_symbol_info *symbol,
17c5ed2c
DC
154 struct obstack *obstack);
155
9cc0d196
EZ
156/* Return the demangled name for a symbol based on the language for
157 that symbol. If no demangled name exists, return NULL. */
158#define SYMBOL_DEMANGLED_NAME(symbol) \
159 (symbol_demangled_name (&(symbol)->ginfo))
160extern char *symbol_demangled_name (struct general_symbol_info *symbol);
c906108c 161
ff4cb3e8
AF
162#define SYMBOL_OBJC_DEMANGLED_NAME(symbol) \
163 (symbol)->ginfo.language_specific.objc_specific.demangled_name
164
c906108c
SS
165/* Macro that returns the "natural source name" of a symbol. In C++ this is
166 the "demangled" form of the name if demangle is on and the "mangled" form
167 of the name if demangle is off. In other languages this is just the
168 symbol name. The result should never be NULL. */
169
170#define SYMBOL_SOURCE_NAME(symbol) \
171 (demangle && SYMBOL_DEMANGLED_NAME (symbol) != NULL \
172 ? SYMBOL_DEMANGLED_NAME (symbol) \
173 : SYMBOL_NAME (symbol))
174
175/* Macro that returns the "natural assembly name" of a symbol. In C++ this is
176 the "mangled" form of the name if demangle is off, or if demangle is on and
177 asm_demangle is off. Otherwise if asm_demangle is on it is the "demangled"
178 form. In other languages this is just the symbol name. The result should
179 never be NULL. */
180
181#define SYMBOL_LINKAGE_NAME(symbol) \
182 (demangle && asm_demangle && SYMBOL_DEMANGLED_NAME (symbol) != NULL \
183 ? SYMBOL_DEMANGLED_NAME (symbol) \
184 : SYMBOL_NAME (symbol))
185
186/* Macro that tests a symbol for a match against a specified name string.
187 First test the unencoded name, then looks for and test a C++ encoded
188 name if it exists. Note that whitespace is ignored while attempting to
189 match a C++ encoded name, so that "foo::bar(int,long)" is the same as
190 "foo :: bar (int, long)".
191 Evaluates to zero if the match fails, or nonzero if it succeeds. */
192
193#define SYMBOL_MATCHES_NAME(symbol, name) \
194 (STREQ (SYMBOL_NAME (symbol), (name)) \
195 || (SYMBOL_DEMANGLED_NAME (symbol) != NULL \
196 && strcmp_iw (SYMBOL_DEMANGLED_NAME (symbol), (name)) == 0))
c5aa993b 197
c906108c
SS
198/* Macro that tests a symbol for an re-match against the last compiled regular
199 expression. First test the unencoded name, then look for and test a C++
200 encoded name if it exists.
201 Evaluates to zero if the match fails, or nonzero if it succeeds. */
202
203#define SYMBOL_MATCHES_REGEXP(symbol) \
204 (re_exec (SYMBOL_NAME (symbol)) != 0 \
205 || (SYMBOL_DEMANGLED_NAME (symbol) != NULL \
206 && re_exec (SYMBOL_DEMANGLED_NAME (symbol)) != 0))
c5aa993b 207
c906108c
SS
208/* Define a simple structure used to hold some very basic information about
209 all defined global symbols (text, data, bss, abs, etc). The only required
210 information is the general_symbol_info.
211
212 In many cases, even if a file was compiled with no special options for
213 debugging at all, as long as was not stripped it will contain sufficient
214 information to build a useful minimal symbol table using this structure.
215 Even when a file contains enough debugging information to build a full
216 symbol table, these minimal symbols are still useful for quickly mapping
217 between names and addresses, and vice versa. They are also sometimes
218 used to figure out what full symbol table entries need to be read in. */
219
220struct minimal_symbol
17c5ed2c 221{
c906108c 222
17c5ed2c 223 /* The general symbol info required for all types of symbols.
c906108c 224
17c5ed2c
DC
225 The SYMBOL_VALUE_ADDRESS contains the address that this symbol
226 corresponds to. */
c906108c 227
17c5ed2c 228 struct general_symbol_info ginfo;
c906108c 229
17c5ed2c
DC
230 /* The info field is available for caching machine-specific information
231 so it doesn't have to rederive the info constantly (over a serial line).
232 It is initialized to zero and stays that way until target-dependent code
233 sets it. Storage for any data pointed to by this field should be allo-
234 cated on the symbol_obstack for the associated objfile.
235 The type would be "void *" except for reasons of compatibility with older
236 compilers. This field is optional.
c906108c 237
17c5ed2c
DC
238 Currently, the AMD 29000 tdep.c uses it to remember things it has decoded
239 from the instructions in the function header, and the MIPS-16 code uses
240 it to identify 16-bit procedures. */
c906108c 241
17c5ed2c 242 char *info;
c906108c
SS
243
244#ifdef SOFUN_ADDRESS_MAYBE_MISSING
17c5ed2c
DC
245 /* Which source file is this symbol in? Only relevant for mst_file_*. */
246 char *filename;
c906108c
SS
247#endif
248
17c5ed2c
DC
249 /* Classification types for this symbol. These should be taken as "advisory
250 only", since if gdb can't easily figure out a classification it simply
251 selects mst_unknown. It may also have to guess when it can't figure out
252 which is a better match between two types (mst_data versus mst_bss) for
253 example. Since the minimal symbol info is sometimes derived from the
254 BFD library's view of a file, we need to live with what information bfd
255 supplies. */
256
257 enum minimal_symbol_type
258 {
259 mst_unknown = 0, /* Unknown type, the default */
260 mst_text, /* Generally executable instructions */
261 mst_data, /* Generally initialized data */
262 mst_bss, /* Generally uninitialized data */
263 mst_abs, /* Generally absolute (nonrelocatable) */
264 /* GDB uses mst_solib_trampoline for the start address of a shared
265 library trampoline entry. Breakpoints for shared library functions
266 are put there if the shared library is not yet loaded.
267 After the shared library is loaded, lookup_minimal_symbol will
268 prefer the minimal symbol from the shared library (usually
269 a mst_text symbol) over the mst_solib_trampoline symbol, and the
270 breakpoints will be moved to their true address in the shared
271 library via breakpoint_re_set. */
272 mst_solib_trampoline, /* Shared library trampoline code */
273 /* For the mst_file* types, the names are only guaranteed to be unique
274 within a given .o file. */
275 mst_file_text, /* Static version of mst_text */
276 mst_file_data, /* Static version of mst_data */
277 mst_file_bss /* Static version of mst_bss */
278 }
279 type BYTE_BITFIELD;
280
281 /* Minimal symbols with the same hash key are kept on a linked
282 list. This is the link. */
283
284 struct minimal_symbol *hash_next;
285
286 /* Minimal symbols are stored in two different hash tables. This is
287 the `next' pointer for the demangled hash table. */
288
289 struct minimal_symbol *demangled_hash_next;
290};
c906108c
SS
291
292#define MSYMBOL_INFO(msymbol) (msymbol)->info
293#define MSYMBOL_TYPE(msymbol) (msymbol)->type
c906108c 294\f
c5aa993b 295
17c5ed2c 296
c906108c
SS
297/* All of the name-scope contours of the program
298 are represented by `struct block' objects.
299 All of these objects are pointed to by the blockvector.
300
301 Each block represents one name scope.
302 Each lexical context has its own block.
303
304 The blockvector begins with some special blocks.
305 The GLOBAL_BLOCK contains all the symbols defined in this compilation
306 whose scope is the entire program linked together.
307 The STATIC_BLOCK contains all the symbols whose scope is the
308 entire compilation excluding other separate compilations.
309 Blocks starting with the FIRST_LOCAL_BLOCK are not special.
310
311 Each block records a range of core addresses for the code that
312 is in the scope of the block. The STATIC_BLOCK and GLOBAL_BLOCK
313 give, for the range of code, the entire range of code produced
314 by the compilation that the symbol segment belongs to.
315
316 The blocks appear in the blockvector
317 in order of increasing starting-address,
318 and, within that, in order of decreasing ending-address.
319
320 This implies that within the body of one function
321 the blocks appear in the order of a depth-first tree walk. */
322
323struct blockvector
17c5ed2c
DC
324{
325 /* Number of blocks in the list. */
326 int nblocks;
327 /* The blocks themselves. */
328 struct block *block[1];
329};
c906108c
SS
330
331#define BLOCKVECTOR_NBLOCKS(blocklist) (blocklist)->nblocks
332#define BLOCKVECTOR_BLOCK(blocklist,n) (blocklist)->block[n]
333
334/* Special block numbers */
335
336#define GLOBAL_BLOCK 0
337#define STATIC_BLOCK 1
338#define FIRST_LOCAL_BLOCK 2
339
340struct block
17c5ed2c 341{
c906108c 342
17c5ed2c 343 /* Addresses in the executable code that are in this block. */
c906108c 344
17c5ed2c
DC
345 CORE_ADDR startaddr;
346 CORE_ADDR endaddr;
c906108c 347
17c5ed2c
DC
348 /* The symbol that names this block, if the block is the body of a
349 function; otherwise, zero. */
c906108c 350
17c5ed2c 351 struct symbol *function;
c906108c 352
17c5ed2c 353 /* The `struct block' for the containing block, or 0 if none.
c906108c 354
17c5ed2c
DC
355 The superblock of a top-level local block (i.e. a function in the
356 case of C) is the STATIC_BLOCK. The superblock of the
357 STATIC_BLOCK is the GLOBAL_BLOCK. */
c906108c 358
17c5ed2c 359 struct block *superblock;
c906108c 360
17c5ed2c
DC
361 /* Version of GCC used to compile the function corresponding
362 to this block, or 0 if not compiled with GCC. When possible,
363 GCC should be compatible with the native compiler, or if that
364 is not feasible, the differences should be fixed during symbol
365 reading. As of 16 Apr 93, this flag is never used to distinguish
366 between gcc2 and the native compiler.
c906108c 367
17c5ed2c
DC
368 If there is no function corresponding to this block, this meaning
369 of this flag is undefined. */
c906108c 370
17c5ed2c 371 unsigned char gcc_compile_flag;
c906108c 372
17c5ed2c
DC
373 /* The symbols for this block are either in a simple linear list or
374 in a simple hashtable. Blocks which correspond to a function
375 (which have a list of symbols corresponding to arguments) use
376 a linear list, as do some older symbol readers (currently only
377 mdebugread and dstread). Other blocks are hashed.
261397f8 378
17c5ed2c
DC
379 The hashtable uses the same hash function as the minsym hashtables,
380 found in minsyms.c:minsym_hash_iw. Symbols are hashed based on
381 their demangled name if appropriate, and on their name otherwise.
382 The hash function ignores space, and stops at the beginning of the
383 argument list if any.
261397f8 384
17c5ed2c
DC
385 The table is laid out in NSYMS/5 buckets and symbols are chained via
386 their hash_next field. */
261397f8 387
17c5ed2c 388 /* If this is really a hashtable of the symbols, this flag is 1. */
261397f8 389
17c5ed2c 390 unsigned char hashtable;
261397f8 391
17c5ed2c 392 /* Number of local symbols. */
c906108c 393
17c5ed2c 394 int nsyms;
c906108c 395
17c5ed2c
DC
396 /* The symbols. If some of them are arguments, then they must be
397 in the order in which we would like to print them. */
c906108c 398
17c5ed2c
DC
399 struct symbol *sym[1];
400};
c906108c
SS
401
402#define BLOCK_START(bl) (bl)->startaddr
403#define BLOCK_END(bl) (bl)->endaddr
c906108c
SS
404#define BLOCK_FUNCTION(bl) (bl)->function
405#define BLOCK_SUPERBLOCK(bl) (bl)->superblock
406#define BLOCK_GCC_COMPILED(bl) (bl)->gcc_compile_flag
261397f8 407#define BLOCK_HASHTABLE(bl) (bl)->hashtable
c906108c 408
261397f8
DJ
409/* For blocks without a hashtable (BLOCK_HASHTABLE (bl) == 0) only. */
410#define BLOCK_NSYMS(bl) (bl)->nsyms
411#define BLOCK_SYM(bl, n) (bl)->sym[n]
412
413/* For blocks with a hashtable, but these are valid for non-hashed blocks as
414 well - each symbol will appear to be one bucket by itself. */
415#define BLOCK_BUCKETS(bl) (bl)->nsyms
416#define BLOCK_BUCKET(bl, n) (bl)->sym[n]
417
418/* Macro used to set the size of a hashtable for N symbols. */
419#define BLOCK_HASHTABLE_SIZE(n) ((n)/5 + 1)
420
421/* Macro to loop through all symbols in a block BL, in no particular order.
422 i counts which bucket we are in, and sym points to the current symbol. */
423
424#define ALL_BLOCK_SYMBOLS(bl, i, sym) \
425 for ((i) = 0; (i) < BLOCK_BUCKETS ((bl)); (i)++) \
426 for ((sym) = BLOCK_BUCKET ((bl), (i)); (sym); \
427 (sym) = (sym)->hash_next)
e88c90f2 428
c906108c
SS
429/* Nonzero if symbols of block BL should be sorted alphabetically.
430 Don't sort a block which corresponds to a function. If we did the
431 sorting would have to preserve the order of the symbols for the
261397f8 432 arguments. Also don't sort any block that we chose to hash. */
c906108c 433
261397f8
DJ
434#define BLOCK_SHOULD_SORT(bl) (! BLOCK_HASHTABLE (bl) \
435 && BLOCK_FUNCTION (bl) == NULL)
c906108c 436\f
c5aa993b 437
c906108c
SS
438/* Represent one symbol name; a variable, constant, function or typedef. */
439
440/* Different name spaces for symbols. Looking up a symbol specifies a
441 namespace and ignores symbol definitions in other name spaces. */
c906108c 442
c5aa993b 443typedef enum
17c5ed2c
DC
444{
445 /* UNDEF_NAMESPACE is used when a namespace has not been discovered or
446 none of the following apply. This usually indicates an error either
447 in the symbol information or in gdb's handling of symbols. */
c906108c 448
17c5ed2c 449 UNDEF_NAMESPACE,
c906108c 450
17c5ed2c
DC
451 /* VAR_NAMESPACE is the usual namespace. In C, this contains variables,
452 function names, typedef names and enum type values. */
c906108c 453
17c5ed2c 454 VAR_NAMESPACE,
c906108c 455
17c5ed2c
DC
456 /* STRUCT_NAMESPACE is used in C to hold struct, union and enum type names.
457 Thus, if `struct foo' is used in a C program, it produces a symbol named
458 `foo' in the STRUCT_NAMESPACE. */
c906108c 459
17c5ed2c 460 STRUCT_NAMESPACE,
c906108c 461
17c5ed2c
DC
462 /* LABEL_NAMESPACE may be used for names of labels (for gotos);
463 currently it is not used and labels are not recorded at all. */
c906108c 464
17c5ed2c 465 LABEL_NAMESPACE,
c906108c 466
17c5ed2c
DC
467 /* Searching namespaces. These overlap with VAR_NAMESPACE, providing
468 some granularity with the search_symbols function. */
c906108c 469
17c5ed2c
DC
470 /* Everything in VAR_NAMESPACE minus FUNCTIONS_-, TYPES_-, and
471 METHODS_NAMESPACE */
472 VARIABLES_NAMESPACE,
c906108c 473
17c5ed2c
DC
474 /* All functions -- for some reason not methods, though. */
475 FUNCTIONS_NAMESPACE,
c906108c 476
17c5ed2c
DC
477 /* All defined types */
478 TYPES_NAMESPACE,
c906108c 479
17c5ed2c
DC
480 /* All class methods -- why is this separated out? */
481 METHODS_NAMESPACE
482}
c5aa993b 483namespace_enum;
c906108c
SS
484
485/* An address-class says where to find the value of a symbol. */
486
487enum address_class
17c5ed2c
DC
488{
489 /* Not used; catches errors */
c5aa993b 490
17c5ed2c 491 LOC_UNDEF,
c906108c 492
17c5ed2c 493 /* Value is constant int SYMBOL_VALUE, host byteorder */
c906108c 494
17c5ed2c 495 LOC_CONST,
c906108c 496
17c5ed2c 497 /* Value is at fixed address SYMBOL_VALUE_ADDRESS */
c906108c 498
17c5ed2c 499 LOC_STATIC,
c906108c 500
17c5ed2c 501 /* Value is in register. SYMBOL_VALUE is the register number. */
c906108c 502
17c5ed2c 503 LOC_REGISTER,
c906108c 504
17c5ed2c 505 /* It's an argument; the value is at SYMBOL_VALUE offset in arglist. */
c906108c 506
17c5ed2c 507 LOC_ARG,
c906108c 508
17c5ed2c 509 /* Value address is at SYMBOL_VALUE offset in arglist. */
c906108c 510
17c5ed2c 511 LOC_REF_ARG,
c906108c 512
17c5ed2c
DC
513 /* Value is in register number SYMBOL_VALUE. Just like LOC_REGISTER
514 except this is an argument. Probably the cleaner way to handle
515 this would be to separate address_class (which would include
516 separate ARG and LOCAL to deal with FRAME_ARGS_ADDRESS versus
517 FRAME_LOCALS_ADDRESS), and an is_argument flag.
c906108c 518
17c5ed2c
DC
519 For some symbol formats (stabs, for some compilers at least),
520 the compiler generates two symbols, an argument and a register.
521 In some cases we combine them to a single LOC_REGPARM in symbol
522 reading, but currently not for all cases (e.g. it's passed on the
523 stack and then loaded into a register). */
c906108c 524
17c5ed2c 525 LOC_REGPARM,
c906108c 526
17c5ed2c
DC
527 /* Value is in specified register. Just like LOC_REGPARM except the
528 register holds the address of the argument instead of the argument
529 itself. This is currently used for the passing of structs and unions
530 on sparc and hppa. It is also used for call by reference where the
531 address is in a register, at least by mipsread.c. */
c906108c 532
17c5ed2c 533 LOC_REGPARM_ADDR,
c906108c 534
17c5ed2c 535 /* Value is a local variable at SYMBOL_VALUE offset in stack frame. */
c906108c 536
17c5ed2c 537 LOC_LOCAL,
c906108c 538
17c5ed2c
DC
539 /* Value not used; definition in SYMBOL_TYPE. Symbols in the namespace
540 STRUCT_NAMESPACE all have this class. */
c906108c 541
17c5ed2c 542 LOC_TYPEDEF,
c906108c 543
17c5ed2c 544 /* Value is address SYMBOL_VALUE_ADDRESS in the code */
c906108c 545
17c5ed2c 546 LOC_LABEL,
c906108c 547
17c5ed2c
DC
548 /* In a symbol table, value is SYMBOL_BLOCK_VALUE of a `struct block'.
549 In a partial symbol table, SYMBOL_VALUE_ADDRESS is the start address
550 of the block. Function names have this class. */
c906108c 551
17c5ed2c 552 LOC_BLOCK,
c906108c 553
17c5ed2c
DC
554 /* Value is a constant byte-sequence pointed to by SYMBOL_VALUE_BYTES, in
555 target byte order. */
c906108c 556
17c5ed2c 557 LOC_CONST_BYTES,
c906108c 558
17c5ed2c
DC
559 /* Value is arg at SYMBOL_VALUE offset in stack frame. Differs from
560 LOC_LOCAL in that symbol is an argument; differs from LOC_ARG in
561 that we find it in the frame (FRAME_LOCALS_ADDRESS), not in the
562 arglist (FRAME_ARGS_ADDRESS). Added for i960, which passes args
563 in regs then copies to frame. */
c906108c 564
17c5ed2c 565 LOC_LOCAL_ARG,
c906108c 566
17c5ed2c
DC
567 /* Value is at SYMBOL_VALUE offset from the current value of
568 register number SYMBOL_BASEREG. This exists mainly for the same
569 things that LOC_LOCAL and LOC_ARG do; but we need to do this
570 instead because on 88k DWARF gives us the offset from the
571 frame/stack pointer, rather than the offset from the "canonical
572 frame address" used by COFF, stabs, etc., and we don't know how
573 to convert between these until we start examining prologues.
c906108c 574
17c5ed2c
DC
575 Note that LOC_BASEREG is much less general than a DWARF expression.
576 We don't need the generality (at least not yet), and storing a general
577 DWARF expression would presumably take up more space than the existing
578 scheme. */
c906108c 579
17c5ed2c 580 LOC_BASEREG,
c906108c 581
17c5ed2c 582 /* Same as LOC_BASEREG but it is an argument. */
c906108c 583
17c5ed2c 584 LOC_BASEREG_ARG,
c906108c 585
17c5ed2c
DC
586 /* Value is at fixed address, but the address of the variable has
587 to be determined from the minimal symbol table whenever the
588 variable is referenced.
589 This happens if debugging information for a global symbol is
590 emitted and the corresponding minimal symbol is defined
591 in another object file or runtime common storage.
592 The linker might even remove the minimal symbol if the global
593 symbol is never referenced, in which case the symbol remains
594 unresolved. */
c906108c 595
17c5ed2c 596 LOC_UNRESOLVED,
c906108c 597
17c5ed2c 598 /* Value is at a thread-specific location calculated by a
407caf07 599 target-specific method. This is used only by hppa. */
c906108c 600
407caf07 601 LOC_HP_THREAD_LOCAL_STATIC,
c906108c 602
9d774e44
EZ
603 /* Value is at a thread-specific location calculated by a
604 target-specific method. SYMBOL_OBJFILE gives the object file
605 in which the symbol is defined; the symbol's value is the
606 offset into that objfile's thread-local storage for the current
607 thread. */
608
609 LOC_THREAD_LOCAL_STATIC,
610
17c5ed2c
DC
611 /* The variable does not actually exist in the program.
612 The value is ignored. */
c906108c 613
17c5ed2c 614 LOC_OPTIMIZED_OUT,
c906108c 615
17c5ed2c
DC
616 /* The variable is static, but actually lives at * (address).
617 * I.e. do an extra indirection to get to it.
618 * This is used on HP-UX to get at globals that are allocated
619 * in shared libraries, where references from images other
620 * than the one where the global was allocated are done
621 * with a level of indirection.
622 */
c906108c 623
17c5ed2c
DC
624 LOC_INDIRECT
625};
c906108c
SS
626
627/* Linked list of symbol's live ranges. */
628
c5aa993b 629struct range_list
17c5ed2c
DC
630{
631 CORE_ADDR start;
632 CORE_ADDR end;
633 struct range_list *next;
634};
c906108c
SS
635
636/* Linked list of aliases for a particular main/primary symbol. */
637struct alias_list
17c5ed2c
DC
638{
639 struct symbol *sym;
640 struct alias_list *next;
641};
c906108c
SS
642
643struct symbol
17c5ed2c 644{
c906108c 645
17c5ed2c 646 /* The general symbol info required for all types of symbols. */
c906108c 647
17c5ed2c 648 struct general_symbol_info ginfo;
c906108c 649
17c5ed2c 650 /* Data type of value */
c906108c 651
17c5ed2c 652 struct type *type;
c906108c 653
17c5ed2c 654 /* Name space code. */
c906108c
SS
655
656#ifdef __MFC4__
17c5ed2c
DC
657 /* FIXME: don't conflict with C++'s namespace */
658 /* would be safer to do a global change for all namespace identifiers. */
c5aa993b 659#define namespace _namespace
c906108c 660#endif
17c5ed2c 661 namespace_enum namespace BYTE_BITFIELD;
c906108c 662
17c5ed2c 663 /* Address class */
c906108c 664
17c5ed2c 665 enum address_class aclass BYTE_BITFIELD;
c906108c 666
17c5ed2c
DC
667 /* Line number of definition. FIXME: Should we really make the assumption
668 that nobody will try to debug files longer than 64K lines? What about
669 machine generated programs? */
c906108c 670
17c5ed2c 671 unsigned short line;
c906108c 672
17c5ed2c
DC
673 /* Some symbols require an additional value to be recorded on a per-
674 symbol basis. Stash those values here. */
c5aa993b 675
17c5ed2c
DC
676 union
677 {
678 /* Used by LOC_BASEREG and LOC_BASEREG_ARG. */
679 short basereg;
9d774e44
EZ
680
681 /* Used by LOC_THREAD_LOCAL_STATIC. The objfile in which this
682 symbol is defined. To find a thread-local variable (e.g., a
683 variable declared with the `__thread' storage class), we may
684 need to know which object file it's in. */
685 struct objfile *objfile;
17c5ed2c
DC
686 }
687 aux_value;
c906108c
SS
688
689
17c5ed2c
DC
690 /* Link to a list of aliases for this symbol.
691 Only a "primary/main symbol may have aliases. */
692 struct alias_list *aliases;
c906108c 693
17c5ed2c
DC
694 /* List of ranges where this symbol is active. This is only
695 used by alias symbols at the current time. */
696 struct range_list *ranges;
261397f8 697
17c5ed2c
DC
698 struct symbol *hash_next;
699};
c906108c
SS
700
701
702#define SYMBOL_NAMESPACE(symbol) (symbol)->namespace
703#define SYMBOL_CLASS(symbol) (symbol)->aclass
704#define SYMBOL_TYPE(symbol) (symbol)->type
705#define SYMBOL_LINE(symbol) (symbol)->line
706#define SYMBOL_BASEREG(symbol) (symbol)->aux_value.basereg
9d774e44 707#define SYMBOL_OBJFILE(symbol) (symbol)->aux_value.objfile
c906108c
SS
708#define SYMBOL_ALIASES(symbol) (symbol)->aliases
709#define SYMBOL_RANGES(symbol) (symbol)->ranges
710\f
711/* A partial_symbol records the name, namespace, and address class of
712 symbols whose types we have not parsed yet. For functions, it also
713 contains their memory address, so we can find them from a PC value.
714 Each partial_symbol sits in a partial_symtab, all of which are chained
a960f249 715 on a partial symtab list and which points to the corresponding
c906108c
SS
716 normal symtab once the partial_symtab has been referenced. */
717
718struct partial_symbol
17c5ed2c 719{
c906108c 720
17c5ed2c 721 /* The general symbol info required for all types of symbols. */
c906108c 722
17c5ed2c 723 struct general_symbol_info ginfo;
c906108c 724
17c5ed2c 725 /* Name space code. */
c906108c 726
17c5ed2c 727 namespace_enum namespace BYTE_BITFIELD;
c906108c 728
17c5ed2c 729 /* Address class (for info_symbols) */
c906108c 730
17c5ed2c 731 enum address_class aclass BYTE_BITFIELD;
c906108c 732
17c5ed2c 733};
c906108c
SS
734
735#define PSYMBOL_NAMESPACE(psymbol) (psymbol)->namespace
736#define PSYMBOL_CLASS(psymbol) (psymbol)->aclass
c906108c 737\f
c5aa993b 738
c906108c
SS
739/* Each item represents a line-->pc (or the reverse) mapping. This is
740 somewhat more wasteful of space than one might wish, but since only
741 the files which are actually debugged are read in to core, we don't
742 waste much space. */
743
744struct linetable_entry
17c5ed2c
DC
745{
746 int line;
747 CORE_ADDR pc;
748};
c906108c
SS
749
750/* The order of entries in the linetable is significant. They should
751 be sorted by increasing values of the pc field. If there is more than
752 one entry for a given pc, then I'm not sure what should happen (and
753 I not sure whether we currently handle it the best way).
754
755 Example: a C for statement generally looks like this
756
c5aa993b
JM
757 10 0x100 - for the init/test part of a for stmt.
758 20 0x200
759 30 0x300
760 10 0x400 - for the increment part of a for stmt.
c906108c 761
e8717518
FF
762 If an entry has a line number of zero, it marks the start of a PC
763 range for which no line number information is available. It is
764 acceptable, though wasteful of table space, for such a range to be
765 zero length. */
c906108c
SS
766
767struct linetable
17c5ed2c
DC
768{
769 int nitems;
c906108c 770
17c5ed2c
DC
771 /* Actually NITEMS elements. If you don't like this use of the
772 `struct hack', you can shove it up your ANSI (seriously, if the
773 committee tells us how to do it, we can probably go along). */
774 struct linetable_entry item[1];
775};
c906108c 776
c906108c
SS
777/* How to relocate the symbols from each section in a symbol file.
778 Each struct contains an array of offsets.
779 The ordering and meaning of the offsets is file-type-dependent;
780 typically it is indexed by section numbers or symbol types or
781 something like that.
782
783 To give us flexibility in changing the internal representation
784 of these offsets, the ANOFFSET macro must be used to insert and
785 extract offset values in the struct. */
786
787struct section_offsets
17c5ed2c
DC
788{
789 CORE_ADDR offsets[1]; /* As many as needed. */
790};
c906108c 791
a4c8257b 792#define ANOFFSET(secoff, whichone) \
8e65ff28
AC
793 ((whichone == -1) \
794 ? (internal_error (__FILE__, __LINE__, "Section index is uninitialized"), -1) \
795 : secoff->offsets[whichone])
c906108c 796
b29c9944
JB
797/* The size of a section_offsets table for N sections. */
798#define SIZEOF_N_SECTION_OFFSETS(n) \
c906108c 799 (sizeof (struct section_offsets) \
b29c9944
JB
800 + sizeof (((struct section_offsets *) 0)->offsets) * ((n)-1))
801
802/* The maximum possible size of a section_offsets table. */
803#define SIZEOF_SECTION_OFFSETS (SIZEOF_N_SECTION_OFFSETS (SECT_OFF_MAX))
c906108c 804
a960f249 805/* Each source file or header is represented by a struct symtab.
c906108c
SS
806 These objects are chained through the `next' field. */
807
808struct symtab
17c5ed2c 809{
c906108c 810
17c5ed2c 811 /* Chain of all existing symtabs. */
c906108c 812
17c5ed2c 813 struct symtab *next;
c906108c 814
17c5ed2c
DC
815 /* List of all symbol scope blocks for this symtab. May be shared
816 between different symtabs (and normally is for all the symtabs
817 in a given compilation unit). */
c906108c 818
17c5ed2c 819 struct blockvector *blockvector;
c906108c 820
17c5ed2c
DC
821 /* Table mapping core addresses to line numbers for this file.
822 Can be NULL if none. Never shared between different symtabs. */
c906108c 823
17c5ed2c 824 struct linetable *linetable;
c906108c 825
17c5ed2c
DC
826 /* Section in objfile->section_offsets for the blockvector and
827 the linetable. Probably always SECT_OFF_TEXT. */
c906108c 828
17c5ed2c 829 int block_line_section;
c906108c 830
17c5ed2c
DC
831 /* If several symtabs share a blockvector, exactly one of them
832 should be designated the primary, so that the blockvector
833 is relocated exactly once by objfile_relocate. */
c906108c 834
17c5ed2c 835 int primary;
c906108c 836
17c5ed2c
DC
837 /* The macro table for this symtab. Like the blockvector, this
838 may be shared between different symtabs --- and normally is for
839 all the symtabs in a given compilation unit. */
840 struct macro_table *macro_table;
99d9066e 841
17c5ed2c 842 /* Name of this source file. */
c906108c 843
17c5ed2c 844 char *filename;
c906108c 845
17c5ed2c 846 /* Directory in which it was compiled, or NULL if we don't know. */
c906108c 847
17c5ed2c 848 char *dirname;
c906108c 849
17c5ed2c
DC
850 /* This component says how to free the data we point to:
851 free_contents => do a tree walk and free each object.
852 free_nothing => do nothing; some other symtab will free
853 the data this one uses.
854 free_linetable => free just the linetable. FIXME: Is this redundant
855 with the primary field? */
c906108c 856
17c5ed2c
DC
857 enum free_code
858 {
859 free_nothing, free_contents, free_linetable
860 }
861 free_code;
c906108c 862
17c5ed2c
DC
863 /* Pointer to one block of storage to be freed, if nonzero. */
864 /* This is IN ADDITION to the action indicated by free_code. */
c5aa993b 865
17c5ed2c 866 char *free_ptr;
c906108c 867
17c5ed2c 868 /* Total number of lines found in source file. */
c906108c 869
17c5ed2c 870 int nlines;
c906108c 871
17c5ed2c
DC
872 /* line_charpos[N] is the position of the (N-1)th line of the
873 source file. "position" means something we can lseek() to; it
874 is not guaranteed to be useful any other way. */
c906108c 875
17c5ed2c 876 int *line_charpos;
c906108c 877
17c5ed2c 878 /* Language of this source file. */
c906108c 879
17c5ed2c 880 enum language language;
c906108c 881
17c5ed2c
DC
882 /* String that identifies the format of the debugging information, such
883 as "stabs", "dwarf 1", "dwarf 2", "coff", etc. This is mostly useful
884 for automated testing of gdb but may also be information that is
885 useful to the user. */
c906108c 886
17c5ed2c 887 char *debugformat;
c906108c 888
17c5ed2c 889 /* String of version information. May be zero. */
c906108c 890
17c5ed2c 891 char *version;
c906108c 892
17c5ed2c
DC
893 /* Full name of file as found by searching the source path.
894 NULL if not yet known. */
c906108c 895
17c5ed2c 896 char *fullname;
c906108c 897
17c5ed2c 898 /* Object file from which this symbol information was read. */
c906108c 899
17c5ed2c 900 struct objfile *objfile;
c906108c 901
17c5ed2c 902};
c906108c
SS
903
904#define BLOCKVECTOR(symtab) (symtab)->blockvector
905#define LINETABLE(symtab) (symtab)->linetable
c906108c 906\f
c5aa993b 907
c906108c
SS
908/* Each source file that has not been fully read in is represented by
909 a partial_symtab. This contains the information on where in the
910 executable the debugging symbols for a specific file are, and a
911 list of names of global symbols which are located in this file.
912 They are all chained on partial symtab lists.
913
914 Even after the source file has been read into a symtab, the
915 partial_symtab remains around. They are allocated on an obstack,
916 psymbol_obstack. FIXME, this is bad for dynamic linking or VxWorks-
917 style execution of a bunch of .o's. */
918
919struct partial_symtab
17c5ed2c 920{
c906108c 921
17c5ed2c 922 /* Chain of all existing partial symtabs. */
c906108c 923
17c5ed2c 924 struct partial_symtab *next;
c906108c 925
17c5ed2c 926 /* Name of the source file which this partial_symtab defines */
c906108c 927
17c5ed2c 928 char *filename;
c906108c 929
17c5ed2c 930 /* Full path of the source file. NULL if not known. */
58d370e0 931
17c5ed2c 932 char *fullname;
58d370e0 933
17c5ed2c 934 /* Information about the object file from which symbols should be read. */
c906108c 935
17c5ed2c 936 struct objfile *objfile;
c906108c 937
17c5ed2c 938 /* Set of relocation offsets to apply to each section. */
c906108c 939
17c5ed2c 940 struct section_offsets *section_offsets;
c906108c 941
17c5ed2c
DC
942 /* Range of text addresses covered by this file; texthigh is the
943 beginning of the next section. */
c906108c 944
17c5ed2c
DC
945 CORE_ADDR textlow;
946 CORE_ADDR texthigh;
c906108c 947
17c5ed2c
DC
948 /* Array of pointers to all of the partial_symtab's which this one
949 depends on. Since this array can only be set to previous or
950 the current (?) psymtab, this dependency tree is guaranteed not
951 to have any loops. "depends on" means that symbols must be read
952 for the dependencies before being read for this psymtab; this is
953 for type references in stabs, where if foo.c includes foo.h, declarations
954 in foo.h may use type numbers defined in foo.c. For other debugging
955 formats there may be no need to use dependencies. */
c906108c 956
17c5ed2c 957 struct partial_symtab **dependencies;
c906108c 958
17c5ed2c 959 int number_of_dependencies;
c906108c 960
17c5ed2c
DC
961 /* Global symbol list. This list will be sorted after readin to
962 improve access. Binary search will be the usual method of
963 finding a symbol within it. globals_offset is an integer offset
964 within global_psymbols[]. */
c906108c 965
17c5ed2c
DC
966 int globals_offset;
967 int n_global_syms;
c906108c 968
17c5ed2c
DC
969 /* Static symbol list. This list will *not* be sorted after readin;
970 to find a symbol in it, exhaustive search must be used. This is
971 reasonable because searches through this list will eventually
972 lead to either the read in of a files symbols for real (assumed
973 to take a *lot* of time; check) or an error (and we don't care
974 how long errors take). This is an offset and size within
975 static_psymbols[]. */
c906108c 976
17c5ed2c
DC
977 int statics_offset;
978 int n_static_syms;
c906108c 979
17c5ed2c
DC
980 /* Pointer to symtab eventually allocated for this source file, 0 if
981 !readin or if we haven't looked for the symtab after it was readin. */
c906108c 982
17c5ed2c 983 struct symtab *symtab;
c906108c 984
17c5ed2c
DC
985 /* Pointer to function which will read in the symtab corresponding to
986 this psymtab. */
c906108c 987
17c5ed2c 988 void (*read_symtab) (struct partial_symtab *);
c906108c 989
17c5ed2c
DC
990 /* Information that lets read_symtab() locate the part of the symbol table
991 that this psymtab corresponds to. This information is private to the
992 format-dependent symbol reading routines. For further detail examine
993 the various symbol reading modules. Should really be (void *) but is
994 (char *) as with other such gdb variables. (FIXME) */
c906108c 995
17c5ed2c 996 char *read_symtab_private;
c906108c 997
17c5ed2c 998 /* Non-zero if the symtab corresponding to this psymtab has been readin */
c906108c 999
17c5ed2c
DC
1000 unsigned char readin;
1001};
c906108c
SS
1002
1003/* A fast way to get from a psymtab to its symtab (after the first time). */
1004#define PSYMTAB_TO_SYMTAB(pst) \
1005 ((pst) -> symtab != NULL ? (pst) -> symtab : psymtab_to_symtab (pst))
c906108c 1006\f
c5aa993b 1007
c906108c 1008/* The virtual function table is now an array of structures which have the
a960f249 1009 form { int16 offset, delta; void *pfn; }.
c906108c
SS
1010
1011 In normal virtual function tables, OFFSET is unused.
1012 DELTA is the amount which is added to the apparent object's base
1013 address in order to point to the actual object to which the
1014 virtual function should be applied.
1015 PFN is a pointer to the virtual function.
1016
1017 Note that this macro is g++ specific (FIXME). */
c5aa993b 1018
c906108c
SS
1019#define VTBL_FNADDR_OFFSET 2
1020
c906108c
SS
1021/* External variables and functions for the objects described above. */
1022
c906108c
SS
1023/* See the comment in symfile.c about how current_objfile is used. */
1024
1025extern struct objfile *current_objfile;
1026
1027/* True if we are nested inside psymtab_to_symtab. */
1028
1029extern int currently_reading_symtab;
1030
1031/* From utils.c. */
1032extern int demangle;
1033extern int asm_demangle;
1034
1035/* symtab.c lookup functions */
1036
1037/* lookup a symbol table by source file name */
1038
1f8cc6db 1039extern struct symtab *lookup_symtab (const char *);
c906108c
SS
1040
1041/* lookup a symbol by name (optional block, optional symtab) */
1042
a14ed312
KB
1043extern struct symbol *lookup_symbol (const char *, const struct block *,
1044 const namespace_enum, int *,
1045 struct symtab **);
c906108c
SS
1046
1047/* lookup a symbol by name, within a specified block */
c5aa993b 1048
a14ed312 1049extern struct symbol *lookup_block_symbol (const struct block *, const char *,
3121eff0 1050 const char *,
a14ed312 1051 const namespace_enum);
c906108c
SS
1052
1053/* lookup a [struct, union, enum] by name, within a specified block */
1054
a14ed312 1055extern struct type *lookup_struct (char *, struct block *);
c906108c 1056
a14ed312 1057extern struct type *lookup_union (char *, struct block *);
c906108c 1058
a14ed312 1059extern struct type *lookup_enum (char *, struct block *);
c906108c
SS
1060
1061/* lookup the function corresponding to the block */
1062
a14ed312 1063extern struct symbol *block_function (struct block *);
c906108c
SS
1064
1065/* from blockframe.c: */
1066
1067/* lookup the function symbol corresponding to the address */
1068
a14ed312 1069extern struct symbol *find_pc_function (CORE_ADDR);
c906108c
SS
1070
1071/* lookup the function corresponding to the address and section */
1072
a14ed312 1073extern struct symbol *find_pc_sect_function (CORE_ADDR, asection *);
c5aa993b 1074
c906108c
SS
1075/* lookup function from address, return name, start addr and end addr */
1076
c5aa993b 1077extern int
a14ed312 1078find_pc_partial_function (CORE_ADDR, char **, CORE_ADDR *, CORE_ADDR *);
c906108c 1079
a14ed312 1080extern void clear_pc_function_cache (void);
c906108c 1081
5ae5f592
AC
1082extern int find_pc_sect_partial_function (CORE_ADDR, asection *,
1083 char **, CORE_ADDR *, CORE_ADDR *);
c906108c
SS
1084
1085/* from symtab.c: */
1086
1087/* lookup partial symbol table by filename */
1088
1f8cc6db 1089extern struct partial_symtab *lookup_partial_symtab (const char *);
c906108c
SS
1090
1091/* lookup partial symbol table by address */
1092
a14ed312 1093extern struct partial_symtab *find_pc_psymtab (CORE_ADDR);
c906108c
SS
1094
1095/* lookup partial symbol table by address and section */
1096
a14ed312 1097extern struct partial_symtab *find_pc_sect_psymtab (CORE_ADDR, asection *);
c906108c
SS
1098
1099/* lookup full symbol table by address */
1100
a14ed312 1101extern struct symtab *find_pc_symtab (CORE_ADDR);
c906108c
SS
1102
1103/* lookup full symbol table by address and section */
1104
a14ed312 1105extern struct symtab *find_pc_sect_symtab (CORE_ADDR, asection *);
c906108c
SS
1106
1107/* lookup partial symbol by address */
1108
a14ed312
KB
1109extern struct partial_symbol *find_pc_psymbol (struct partial_symtab *,
1110 CORE_ADDR);
c906108c
SS
1111
1112/* lookup partial symbol by address and section */
1113
a14ed312
KB
1114extern struct partial_symbol *find_pc_sect_psymbol (struct partial_symtab *,
1115 CORE_ADDR, asection *);
c906108c 1116
a14ed312 1117extern int find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
c906108c 1118
a14ed312 1119extern int contained_in (struct block *, struct block *);
c906108c 1120
a14ed312 1121extern void reread_symbols (void);
c906108c 1122
a14ed312 1123extern struct type *lookup_transparent_type (const char *);
c906108c
SS
1124
1125
1126/* Macro for name of symbol to indicate a file compiled with gcc. */
1127#ifndef GCC_COMPILED_FLAG_SYMBOL
1128#define GCC_COMPILED_FLAG_SYMBOL "gcc_compiled."
1129#endif
1130
1131/* Macro for name of symbol to indicate a file compiled with gcc2. */
1132#ifndef GCC2_COMPILED_FLAG_SYMBOL
1133#define GCC2_COMPILED_FLAG_SYMBOL "gcc2_compiled."
1134#endif
1135
1136/* Functions for dealing with the minimal symbol table, really a misc
1137 address<->symbol mapping for things we don't have debug symbols for. */
1138
a14ed312
KB
1139extern void prim_record_minimal_symbol (const char *, CORE_ADDR,
1140 enum minimal_symbol_type,
1141 struct objfile *);
c906108c
SS
1142
1143extern struct minimal_symbol *prim_record_minimal_symbol_and_info
a14ed312
KB
1144 (const char *, CORE_ADDR,
1145 enum minimal_symbol_type,
1146 char *info, int section, asection * bfd_section, struct objfile *);
c906108c 1147
a14ed312 1148extern unsigned int msymbol_hash_iw (const char *);
9227b5eb 1149
a14ed312 1150extern unsigned int msymbol_hash (const char *);
9227b5eb
JB
1151
1152extern void
1153add_minsym_to_hash_table (struct minimal_symbol *sym,
1154 struct minimal_symbol **table);
1155
a14ed312
KB
1156extern struct minimal_symbol *lookup_minimal_symbol (const char *,
1157 const char *,
1158 struct objfile *);
c906108c 1159
a14ed312
KB
1160extern struct minimal_symbol *lookup_minimal_symbol_text (const char *,
1161 const char *,
1162 struct objfile *);
c906108c 1163
a14ed312
KB
1164struct minimal_symbol *lookup_minimal_symbol_solib_trampoline (const char *,
1165 const char *,
1166 struct objfile
1167 *);
c906108c 1168
a14ed312 1169extern struct minimal_symbol *lookup_minimal_symbol_by_pc (CORE_ADDR);
c906108c 1170
a14ed312
KB
1171extern struct minimal_symbol *lookup_minimal_symbol_by_pc_section (CORE_ADDR,
1172 asection
1173 *);
c906108c 1174
a14ed312
KB
1175extern struct minimal_symbol
1176 *lookup_solib_trampoline_symbol_by_pc (CORE_ADDR);
c906108c 1177
a14ed312 1178extern CORE_ADDR find_solib_trampoline_target (CORE_ADDR);
c906108c 1179
a14ed312 1180extern void init_minimal_symbol_collection (void);
c906108c 1181
56e290f4 1182extern struct cleanup *make_cleanup_discard_minimal_symbols (void);
c906108c 1183
a14ed312 1184extern void install_minimal_symbols (struct objfile *);
c906108c
SS
1185
1186/* Sort all the minimal symbols in OBJFILE. */
1187
a14ed312 1188extern void msymbols_sort (struct objfile *objfile);
c906108c
SS
1189
1190struct symtab_and_line
17c5ed2c
DC
1191{
1192 struct symtab *symtab;
1193 asection *section;
1194 /* Line number. Line numbers start at 1 and proceed through symtab->nlines.
1195 0 is never a valid line number; it is used to indicate that line number
1196 information is not available. */
1197 int line;
1198
1199 CORE_ADDR pc;
1200 CORE_ADDR end;
1201};
c906108c 1202
fe39c653 1203extern void init_sal (struct symtab_and_line *sal);
c906108c
SS
1204
1205struct symtabs_and_lines
17c5ed2c
DC
1206{
1207 struct symtab_and_line *sals;
1208 int nelts;
1209};
c5aa993b 1210\f
c906108c
SS
1211
1212
c906108c
SS
1213/* Some types and macros needed for exception catchpoints.
1214 Can't put these in target.h because symtab_and_line isn't
1215 known there. This file will be included by breakpoint.c,
1216 hppa-tdep.c, etc. */
1217
1218/* Enums for exception-handling support */
c5aa993b 1219enum exception_event_kind
17c5ed2c
DC
1220{
1221 EX_EVENT_THROW,
1222 EX_EVENT_CATCH
1223};
c906108c
SS
1224
1225/* Type for returning info about an exception */
c5aa993b 1226struct exception_event_record
17c5ed2c
DC
1227{
1228 enum exception_event_kind kind;
1229 struct symtab_and_line throw_sal;
1230 struct symtab_and_line catch_sal;
1231 /* This may need to be extended in the future, if
1232 some platforms allow reporting more information,
1233 such as point of rethrow, type of exception object,
1234 type expected by catch clause, etc. */
1235};
c906108c
SS
1236
1237#define CURRENT_EXCEPTION_KIND (current_exception_event->kind)
1238#define CURRENT_EXCEPTION_CATCH_SAL (current_exception_event->catch_sal)
1239#define CURRENT_EXCEPTION_CATCH_LINE (current_exception_event->catch_sal.line)
1240#define CURRENT_EXCEPTION_CATCH_FILE (current_exception_event->catch_sal.symtab->filename)
1241#define CURRENT_EXCEPTION_CATCH_PC (current_exception_event->catch_sal.pc)
1242#define CURRENT_EXCEPTION_THROW_SAL (current_exception_event->throw_sal)
1243#define CURRENT_EXCEPTION_THROW_LINE (current_exception_event->throw_sal.line)
1244#define CURRENT_EXCEPTION_THROW_FILE (current_exception_event->throw_sal.symtab->filename)
1245#define CURRENT_EXCEPTION_THROW_PC (current_exception_event->throw_sal.pc)
1246\f
1247
1248/* Given a pc value, return line number it is in. Second arg nonzero means
1249 if pc is on the boundary use the previous statement's line number. */
1250
a14ed312 1251extern struct symtab_and_line find_pc_line (CORE_ADDR, int);
c906108c
SS
1252
1253/* Same function, but specify a section as well as an address */
1254
a14ed312 1255extern struct symtab_and_line find_pc_sect_line (CORE_ADDR, asection *, int);
c906108c 1256
c906108c
SS
1257/* Given a symtab and line number, return the pc there. */
1258
a14ed312 1259extern int find_line_pc (struct symtab *, int, CORE_ADDR *);
c906108c 1260
c5aa993b 1261extern int
a14ed312 1262find_line_pc_range (struct symtab_and_line, CORE_ADDR *, CORE_ADDR *);
c906108c 1263
a14ed312 1264extern void resolve_sal_pc (struct symtab_and_line *);
c906108c
SS
1265
1266/* Given a string, return the line specified by it. For commands like "list"
1267 and "breakpoint". */
1268
a14ed312 1269extern struct symtabs_and_lines decode_line_spec (char *, int);
c906108c 1270
a14ed312 1271extern struct symtabs_and_lines decode_line_spec_1 (char *, int);
c906108c 1272
c906108c
SS
1273/* Symmisc.c */
1274
a14ed312 1275void maintenance_print_symbols (char *, int);
c906108c 1276
a14ed312 1277void maintenance_print_psymbols (char *, int);
c906108c 1278
a14ed312 1279void maintenance_print_msymbols (char *, int);
c906108c 1280
a14ed312 1281void maintenance_print_objfiles (char *, int);
c906108c 1282
a14ed312 1283void maintenance_check_symtabs (char *, int);
c906108c
SS
1284
1285/* maint.c */
1286
a14ed312 1287void maintenance_print_statistics (char *, int);
c906108c 1288
a14ed312 1289extern void free_symtab (struct symtab *);
c906108c
SS
1290
1291/* Symbol-reading stuff in symfile.c and solib.c. */
1292
a14ed312 1293extern struct symtab *psymtab_to_symtab (struct partial_symtab *);
c906108c 1294
a14ed312 1295extern void clear_solib (void);
c906108c 1296
c906108c
SS
1297/* source.c */
1298
a14ed312 1299extern int identify_source_line (struct symtab *, int, int, CORE_ADDR);
c906108c 1300
a14ed312 1301extern void print_source_lines (struct symtab *, int, int, int);
c906108c 1302
a14ed312 1303extern void forget_cached_source_info (void);
c906108c 1304
a14ed312 1305extern void select_source_symtab (struct symtab *);
c906108c 1306
a14ed312 1307extern char **make_symbol_completion_list (char *, char *);
c906108c 1308
c94fdfd0
EZ
1309extern char **make_file_symbol_completion_list (char *, char *, char *);
1310
a14ed312 1311extern struct symbol **make_symbol_overload_list (struct symbol *);
c906108c 1312
c94fdfd0
EZ
1313extern char **make_source_files_completion_list (char *, char *);
1314
c906108c
SS
1315/* symtab.c */
1316
a14ed312 1317extern struct partial_symtab *find_main_psymtab (void);
c906108c 1318
50641945
FN
1319extern struct symtab *find_line_symtab (struct symtab *, int, int *, int *);
1320
17c5ed2c
DC
1321extern struct symtab_and_line find_function_start_sal (struct symbol *sym,
1322 int);
50641945 1323
c906108c
SS
1324/* blockframe.c */
1325
a14ed312 1326extern struct blockvector *blockvector_for_pc (CORE_ADDR, int *);
c906108c 1327
a14ed312
KB
1328extern struct blockvector *blockvector_for_pc_sect (CORE_ADDR, asection *,
1329 int *, struct symtab *);
c906108c
SS
1330
1331/* symfile.c */
1332
a14ed312 1333extern void clear_symtab_users (void);
c906108c 1334
a14ed312 1335extern enum language deduce_language_from_filename (char *);
c906108c
SS
1336
1337/* symtab.c */
1338
a14ed312 1339extern int in_prologue (CORE_ADDR pc, CORE_ADDR func_start);
c906108c 1340
a14ed312
KB
1341extern struct symbol *fixup_symbol_section (struct symbol *,
1342 struct objfile *);
c906108c 1343
7a78d0ee
KB
1344extern struct partial_symbol *fixup_psymbol_section (struct partial_symbol
1345 *psym,
1346 struct objfile *objfile);
1347
c906108c
SS
1348/* Symbol searching */
1349
1350/* When using search_symbols, a list of the following structs is returned.
7e73cedf 1351 Callers must free the search list using free_search_symbols! */
c906108c 1352struct symbol_search
17c5ed2c
DC
1353{
1354 /* The block in which the match was found. Could be, for example,
1355 STATIC_BLOCK or GLOBAL_BLOCK. */
1356 int block;
c906108c 1357
17c5ed2c 1358 /* Information describing what was found.
c906108c 1359
17c5ed2c
DC
1360 If symtab abd symbol are NOT NULL, then information was found
1361 for this match. */
1362 struct symtab *symtab;
1363 struct symbol *symbol;
c906108c 1364
17c5ed2c
DC
1365 /* If msymbol is non-null, then a match was made on something for
1366 which only minimal_symbols exist. */
1367 struct minimal_symbol *msymbol;
c906108c 1368
17c5ed2c
DC
1369 /* A link to the next match, or NULL for the end. */
1370 struct symbol_search *next;
1371};
c906108c 1372
a14ed312
KB
1373extern void search_symbols (char *, namespace_enum, int, char **,
1374 struct symbol_search **);
1375extern void free_search_symbols (struct symbol_search *);
17c5ed2c
DC
1376extern struct cleanup *make_cleanup_free_search_symbols (struct symbol_search
1377 *);
c906108c 1378
51cc5b07
AC
1379/* The name of the ``main'' function.
1380 FIXME: cagney/2001-03-20: Can't make main_name() const since some
1381 of the calling code currently assumes that the string isn't
1382 const. */
1383extern void set_main_name (const char *name);
17c5ed2c 1384extern /*const */ char *main_name (void);
51cc5b07 1385
c906108c 1386#endif /* !defined(SYMTAB_H) */