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