]> Git Repo - binutils.git/blame - gdb/symtab.h
* frame.h, blockframe.c, stack.c, a29k-tdep.c,
[binutils.git] / gdb / symtab.h
CommitLineData
bd5635a1 1/* Symbol table definitions for GDB.
b0246b3b 2 Copyright (C) 1986, 1989, 1991, 1992 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
FF
17along with this program; if not, write to the Free Software
18Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, 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
bd5635a1 28
2e4964ad 29/* Define a structure for the information that is common to all symbol types,
d63aae7f
JK
30 including minimal symbols, partial symbols, and full symbols. In a
31 multilanguage environment, some language specific information may need to
32 be recorded along with each symbol. */
2e4964ad
FF
33
34struct general_symbol_info
35{
36 /* Name of the symbol. This is a required field. Storage for the name is
37 allocated on the psymbol_obstack or symbol_obstack for the associated
38 objfile. */
39
40 char *name;
41
fce30fa1
JK
42 /* Value of the symbol. Which member of this union to use, and what
43 it means, depends on what kind of symbol this is and its
44 SYMBOL_CLASS. See comments there for more details. All of these
45 are in host byte order (though what they point to might be in
46 target byte order, e.g. LOC_CONST_BYTES). */
2e4964ad
FF
47
48 union
49 {
2e4964ad
FF
50 long value;
51
2e4964ad
FF
52 struct block *block;
53
2e4964ad
FF
54 char *bytes;
55
2e4964ad
FF
56 CORE_ADDR address;
57
58 /* for opaque typedef struct chain */
bd5635a1 59
2e4964ad
FF
60 struct symbol *chain;
61 }
62 value;
63
d63aae7f
JK
64 /* Record the source code language that applies to this symbol.
65 This is used to select one of the fields from the language specific
66 union below. */
2e4964ad 67
d63aae7f 68 enum language language;
2e4964ad 69
d63aae7f
JK
70 /* Since one and only one language can apply, wrap the language specific
71 information inside a union. */
2e4964ad 72
d63aae7f
JK
73 union
74 {
75 struct cplus_specific /* For C++ */
76 {
77 char *demangled_name;
78 } cplus_specific;
79 struct chill_specific /* For Chill */
2e4964ad 80 {
d63aae7f
JK
81 char *demangled_name;
82 } chill_specific;
83 } language_specific;
ca6a826d
PS
84
85 /* Which section is this symbol in? This is an index into
86 section_offsets for this objfile. Negative means that the symbol
d63aae7f
JK
87 does not get relocated relative to a section.
88 Disclaimer: currently this is just used for xcoff, so don't expect
ca6a826d 89 all symbol-reading code to set it correctly. */
d63aae7f 90
ca6a826d 91 int section;
2e4964ad
FF
92};
93
94#define SYMBOL_NAME(symbol) (symbol)->ginfo.name
95#define SYMBOL_VALUE(symbol) (symbol)->ginfo.value.value
96#define SYMBOL_VALUE_ADDRESS(symbol) (symbol)->ginfo.value.address
97#define SYMBOL_VALUE_BYTES(symbol) (symbol)->ginfo.value.bytes
98#define SYMBOL_BLOCK_VALUE(symbol) (symbol)->ginfo.value.block
99#define SYMBOL_VALUE_CHAIN(symbol) (symbol)->ginfo.value.chain
d63aae7f 100#define SYMBOL_LANGUAGE(symbol) (symbol)->ginfo.language
ca6a826d 101#define SYMBOL_SECTION(symbol) (symbol)->ginfo.section
ece2e98a
JG
102
103#define SYMBOL_CPLUS_DEMANGLED_NAME(symbol) \
d63aae7f 104 (symbol)->ginfo.language_specific.cplus_specific.demangled_name
2e4964ad 105
ece2e98a 106
2e4964ad
FF
107extern int demangle; /* We reference it, so go ahead and declare it. */
108
ece2e98a
JG
109/* Macro that initializes the language dependent portion of a symbol
110 depending upon the language for the symbol. */
111
112#define SYMBOL_INIT_LANGUAGE_SPECIFIC(symbol,language) \
113 do { \
114 SYMBOL_LANGUAGE (symbol) = language; \
115 if (SYMBOL_LANGUAGE (symbol) == language_cplus) \
116 { \
117 SYMBOL_CPLUS_DEMANGLED_NAME (symbol) = NULL; \
118 } \
ece2e98a
JG
119 else if (SYMBOL_LANGUAGE (symbol) == language_chill) \
120 { \
121 SYMBOL_CHILL_DEMANGLED_NAME (symbol) = NULL; \
122 } \
ece2e98a
JG
123 else \
124 { \
d63aae7f
JK
125 memset (&(symbol)->ginfo.language_specific, 0, \
126 sizeof ((symbol)->ginfo.language_specific)); \
ece2e98a
JG
127 } \
128 } while (0)
129
130/* Macro that attempts to initialize the demangled name for a symbol,
131 based on the language of that symbol. If the language is set to
132 language_auto, it will attempt to find any demangling algorithm
133 that works and then set the language appropriately. If no demangling
134 of any kind is found, the language is set back to language_unknown,
135 so we can avoid doing this work again the next time we encounter
136 the symbol. Any required space to store the name is obtained from the
137 specified obstack. */
138
139#define SYMBOL_INIT_DEMANGLED_NAME(symbol,obstack) \
140 do { \
141 char *demangled = NULL; \
142 if (SYMBOL_LANGUAGE (symbol) == language_cplus \
143 || SYMBOL_LANGUAGE (symbol) == language_auto) \
144 { \
145 demangled = \
146 cplus_demangle (SYMBOL_NAME (symbol), DMGL_PARAMS | DMGL_ANSI);\
147 if (demangled != NULL) \
148 { \
149 SYMBOL_LANGUAGE (symbol) = language_cplus; \
150 SYMBOL_CPLUS_DEMANGLED_NAME (symbol) = \
151 obsavestring (demangled, strlen (demangled), (obstack)); \
152 free (demangled); \
153 } \
154 else \
155 { \
156 SYMBOL_CPLUS_DEMANGLED_NAME (symbol) = NULL; \
157 } \
158 } \
ece2e98a
JG
159 if (demangled == NULL \
160 && (SYMBOL_LANGUAGE (symbol) == language_chill \
161 || SYMBOL_LANGUAGE (symbol) == language_auto)) \
162 { \
163 demangled = \
164 chill_demangle (SYMBOL_NAME (symbol)); \
165 if (demangled != NULL) \
166 { \
167 SYMBOL_LANGUAGE (symbol) = language_chill; \
168 SYMBOL_CHILL_DEMANGLED_NAME (symbol) = \
169 obsavestring (demangled, strlen (demangled), (obstack)); \
170 free (demangled); \
171 } \
172 else \
173 { \
174 SYMBOL_CHILL_DEMANGLED_NAME (symbol) = NULL; \
175 } \
176 } \
ece2e98a
JG
177 if (SYMBOL_LANGUAGE (symbol) == language_auto) \
178 { \
179 SYMBOL_LANGUAGE (symbol) = language_unknown; \
180 } \
181 } while (0)
182
183/* Macro that returns the demangled name for a symbol based on the language
184 for that symbol. If no demangled name exists, returns NULL. */
185
ece2e98a
JG
186#define SYMBOL_DEMANGLED_NAME(symbol) \
187 (SYMBOL_LANGUAGE (symbol) == language_cplus \
188 ? SYMBOL_CPLUS_DEMANGLED_NAME (symbol) \
189 : (SYMBOL_LANGUAGE (symbol) == language_chill \
190 ? SYMBOL_CHILL_DEMANGLED_NAME (symbol) \
191 : NULL))
192
5aefc1ca 193#define SYMBOL_CHILL_DEMANGLED_NAME(symbol) \
d63aae7f 194 (symbol)->ginfo.language_specific.chill_specific.demangled_name
ece2e98a 195
2e4964ad
FF
196/* Macro that returns the "natural source name" of a symbol. In C++ this is
197 the "demangled" form of the name if demangle is on and the "mangled" form
198 of the name if demangle is off. In other languages this is just the
ece2e98a 199 symbol name. The result should never be NULL. */
2e4964ad 200
ece2e98a
JG
201#define SYMBOL_SOURCE_NAME(symbol) \
202 (demangle && SYMBOL_DEMANGLED_NAME (symbol) != NULL \
203 ? SYMBOL_DEMANGLED_NAME (symbol) \
204 : SYMBOL_NAME (symbol))
2e4964ad
FF
205
206/* Macro that returns the "natural assembly name" of a symbol. In C++ this is
207 the "mangled" form of the name if demangle is off, or if demangle is on and
208 asm_demangle is off. Otherwise if asm_demangle is on it is the "demangled"
ece2e98a
JG
209 form. In other languages this is just the symbol name. The result should
210 never be NULL. */
2e4964ad 211
ece2e98a
JG
212#define SYMBOL_LINKAGE_NAME(symbol) \
213 (demangle && asm_demangle && SYMBOL_DEMANGLED_NAME (symbol) != NULL \
214 ? SYMBOL_DEMANGLED_NAME (symbol) \
215 : SYMBOL_NAME (symbol))
2e4964ad
FF
216
217/* Macro that tests a symbol for a match against a specified name string.
218 First test the unencoded name, then looks for and test a C++ encoded
219 name if it exists. Note that whitespace is ignored while attempting to
220 match a C++ encoded name, so that "foo::bar(int,long)" is the same as
221 "foo :: bar (int, long)".
222 Evaluates to zero if the match fails, or nonzero if it succeeds. */
223
ece2e98a
JG
224#define SYMBOL_MATCHES_NAME(symbol, name) \
225 (STREQ (SYMBOL_NAME (symbol), (name)) \
226 || (SYMBOL_DEMANGLED_NAME (symbol) != NULL \
227 && strcmp_iw (SYMBOL_DEMANGLED_NAME (symbol), (name)) == 0))
2e4964ad
FF
228
229/* Macro that tests a symbol for an re-match against the last compiled regular
230 expression. First test the unencoded name, then look for and test a C++
231 encoded name if it exists.
232 Evaluates to zero if the match fails, or nonzero if it succeeds. */
233
ece2e98a
JG
234#define SYMBOL_MATCHES_REGEXP(symbol) \
235 (re_exec (SYMBOL_NAME (symbol)) != 0 \
236 || (SYMBOL_DEMANGLED_NAME (symbol) != NULL \
237 && re_exec (SYMBOL_DEMANGLED_NAME (symbol)) != 0))
2e4964ad 238
b0246b3b 239/* Define a simple structure used to hold some very basic information about
2e4964ad
FF
240 all defined global symbols (text, data, bss, abs, etc). The only required
241 information is the general_symbol_info.
242
243 In many cases, even if a file was compiled with no special options for
244 debugging at all, as long as was not stripped it will contain sufficient
245 information to build a useful minimal symbol table using this structure.
246 Even when a file contains enough debugging information to build a full
247 symbol table, these minimal symbols are still useful for quickly mapping
248 between names and addresses, and vice versa. They are also sometimes
249 used to figure out what full symbol table entries need to be read in. */
bd5635a1 250
b0246b3b
FF
251struct minimal_symbol
252{
bd5635a1 253
fce30fa1
JK
254 /* The general symbol info required for all types of symbols.
255
256 The SYMBOL_VALUE_ADDRESS contains the address that this symbol
257 corresponds to. */
bd5635a1 258
2e4964ad 259 struct general_symbol_info ginfo;
bd5635a1 260
b0246b3b
FF
261 /* The info field is available for caching machine-specific information that
262 The AMD 29000 tdep.c uses it to remember things it has decoded from the
263 instructions in the function header, so it doesn't have to rederive the
264 info constantly (over a serial line). It is initialized to zero and
265 stays that way until target-dependent code sets it. Storage for any data
266 pointed to by this field should be allocated on the symbol_obstack for
267 the associated objfile. The type would be "void *" except for reasons
268 of compatibility with older compilers. This field is optional. */
269
270 char *info;
271
272 /* Classification types for this symbol. These should be taken as "advisory
273 only", since if gdb can't easily figure out a classification it simply
274 selects mst_unknown. It may also have to guess when it can't figure out
275 which is a better match between two types (mst_data versus mst_bss) for
276 example. Since the minimal symbol info is sometimes derived from the
277 BFD library's view of a file, we need to live with what information bfd
278 supplies. */
279
280 enum minimal_symbol_type
bd5635a1 281 {
b0246b3b
FF
282 mst_unknown = 0, /* Unknown type, the default */
283 mst_text, /* Generally executable instructions */
284 mst_data, /* Generally initialized data */
285 mst_bss, /* Generally uninitialized data */
286 mst_abs /* Generally absolute (nonrelocatable) */
287 } type;
d018c8a6 288
bd5635a1 289};
7e258d18 290
2e4964ad
FF
291#define MSYMBOL_INFO(msymbol) (msymbol)->info
292#define MSYMBOL_TYPE(msymbol) (msymbol)->type
293
bd5635a1
RP
294\f
295/* All of the name-scope contours of the program
296 are represented by `struct block' objects.
297 All of these objects are pointed to by the blockvector.
298
299 Each block represents one name scope.
300 Each lexical context has its own block.
301
0b28c260
JK
302 The blockvector begins with some special blocks.
303 The GLOBAL_BLOCK contains all the symbols defined in this compilation
bd5635a1 304 whose scope is the entire program linked together.
0b28c260 305 The STATIC_BLOCK contains all the symbols whose scope is the
bd5635a1 306 entire compilation excluding other separate compilations.
0b28c260 307 Blocks starting with the FIRST_LOCAL_BLOCK are not special.
bd5635a1
RP
308
309 Each block records a range of core addresses for the code that
0b28c260 310 is in the scope of the block. The STATIC_BLOCK and GLOBAL_BLOCK
bd5635a1
RP
311 give, for the range of code, the entire range of code produced
312 by the compilation that the symbol segment belongs to.
313
314 The blocks appear in the blockvector
315 in order of increasing starting-address,
316 and, within that, in order of decreasing ending-address.
317
318 This implies that within the body of one function
319 the blocks appear in the order of a depth-first tree walk. */
320
321struct blockvector
322{
323 /* Number of blocks in the list. */
324 int nblocks;
325 /* The blocks themselves. */
326 struct block *block[1];
327};
328
2e4964ad
FF
329#define BLOCKVECTOR_NBLOCKS(blocklist) (blocklist)->nblocks
330#define BLOCKVECTOR_BLOCK(blocklist,n) (blocklist)->block[n]
331
92a29b47 332/* Special block numbers */
2e4964ad
FF
333
334#define GLOBAL_BLOCK 0
335#define STATIC_BLOCK 1
92a29b47
JG
336#define FIRST_LOCAL_BLOCK 2
337
bd5635a1
RP
338struct block
339{
2e4964ad 340
0b28c260 341 /* Addresses in the executable code that are in this block. */
2e4964ad
FF
342
343 CORE_ADDR startaddr;
344 CORE_ADDR endaddr;
345
0b28c260
JK
346 /* The symbol that names this block, if the block is the body of a
347 function; otherwise, zero. */
2e4964ad 348
bd5635a1 349 struct symbol *function;
2e4964ad
FF
350
351 /* The `struct block' for the containing block, or 0 if none.
0b28c260
JK
352
353 The superblock of a top-level local block (i.e. a function in the
354 case of C) is the STATIC_BLOCK. The superblock of the
355 STATIC_BLOCK is the GLOBAL_BLOCK. */
2e4964ad 356
bd5635a1 357 struct block *superblock;
2e4964ad 358
0b28c260
JK
359 /* Version of GCC used to compile the function corresponding
360 to this block, or 0 if not compiled with GCC. When possible,
361 GCC should be compatible with the native compiler, or if that
362 is not feasible, the differences should be fixed during symbol
363 reading. As of 16 Apr 93, this flag is never used to distinguish
364 between gcc2 and the native compiler.
365
366 If there is no function corresponding to this block, this meaning
367 of this flag is undefined. */
2e4964ad 368
bd5635a1 369 unsigned char gcc_compile_flag;
2e4964ad 370
bd5635a1 371 /* Number of local symbols. */
2e4964ad 372
bd5635a1 373 int nsyms;
2e4964ad 374
bd5635a1 375 /* The symbols. */
2e4964ad 376
bd5635a1
RP
377 struct symbol *sym[1];
378};
bd5635a1 379
2e4964ad
FF
380#define BLOCK_START(bl) (bl)->startaddr
381#define BLOCK_END(bl) (bl)->endaddr
382#define BLOCK_NSYMS(bl) (bl)->nsyms
383#define BLOCK_SYM(bl, n) (bl)->sym[n]
384#define BLOCK_FUNCTION(bl) (bl)->function
385#define BLOCK_SUPERBLOCK(bl) (bl)->superblock
386#define BLOCK_GCC_COMPILED(bl) (bl)->gcc_compile_flag
bd5635a1 387
2e4964ad 388/* Nonzero if symbols of block BL should be sorted alphabetically. */
bd5635a1 389
2e4964ad 390#define BLOCK_SHOULD_SORT(bl) ((bl)->nsyms >= 40)
bd5635a1 391
2e4964ad
FF
392\f
393/* Represent one symbol name; a variable, constant, function or typedef. */
bd5635a1 394
2e4964ad
FF
395/* Different name spaces for symbols. Looking up a symbol specifies a
396 namespace and ignores symbol definitions in other name spaces. */
397
bd5635a1
RP
398enum namespace
399{
2e4964ad
FF
400 /* UNDEF_NAMESPACE is used when a namespace has not been discovered or
401 none of the following apply. This usually indicates an error either
402 in the symbol information or in gdb's handling of symbols. */
403
404 UNDEF_NAMESPACE,
405
406 /* VAR_NAMESPACE is the usual namespace. In C, this contains variables,
407 function names, typedef names and enum type values. */
408
409 VAR_NAMESPACE,
410
411 /* STRUCT_NAMESPACE is used in C to hold struct, union and enum type names.
412 Thus, if `struct foo' is used in a C program, it produces a symbol named
413 `foo' in the STRUCT_NAMESPACE. */
414
415 STRUCT_NAMESPACE,
416
417 /* LABEL_NAMESPACE may be used for names of labels (for gotos);
418 currently it is not used and labels are not recorded at all. */
419
420 LABEL_NAMESPACE
bd5635a1
RP
421};
422
423/* An address-class says where to find the value of a symbol. */
424
425enum address_class
426{
2e4964ad
FF
427 /* Not used; catches errors */
428
429 LOC_UNDEF,
430
431 /* Value is constant int SYMBOL_VALUE, host byteorder */
432
433 LOC_CONST,
434
435 /* Value is at fixed address SYMBOL_VALUE_ADDRESS */
436
437 LOC_STATIC,
438
fce30fa1 439 /* Value is in register. SYMBOL_VALUE is the register number. */
2e4964ad
FF
440
441 LOC_REGISTER,
442
fce30fa1 443 /* It's an argument; the value is at SYMBOL_VALUE offset in arglist. */
2e4964ad
FF
444
445 LOC_ARG,
446
5afa2040 447 /* Value address is at SYMBOL_VALUE offset in arglist. */
2e4964ad
FF
448
449 LOC_REF_ARG,
450
fce30fa1
JK
451 /* Value is in register number SYMBOL_VALUE. Just like LOC_REGISTER
452 except this is an argument. Probably the cleaner way to handle
453 this would be to separate address_class (which would include
454 separate ARG and LOCAL to deal with FRAME_ARGS_ADDRESS versus
455 FRAME_LOCALS_ADDRESS), and an is_argument flag.
0b28c260
JK
456
457 For some symbol formats (stabs, for some compilers at least),
5afa2040
JK
458 the compiler generates two symbols, an argument and a register.
459 In some cases we combine them to a single LOC_REGPARM in symbol
9c5c2722
JK
460 reading, but currently not for all cases (e.g. it's passed on the
461 stack and then loaded into a register). */
2e4964ad
FF
462
463 LOC_REGPARM,
464
5afa2040
JK
465 /* Value is in specified register. Just like LOC_REGPARM except the
466 register holds the address of the argument instead of the argument
467 itself. This is currently used for the passing of structs and unions
b9298844
JK
468 on sparc and hppa. It is also used for call by reference where the
469 address is in a register, at least by mipsread.c. */
5afa2040
JK
470
471 LOC_REGPARM_ADDR,
472
fce30fa1 473 /* Value is a local variable at SYMBOL_VALUE offset in stack frame. */
2e4964ad
FF
474
475 LOC_LOCAL,
476
477 /* Value not used; definition in SYMBOL_TYPE. Symbols in the namespace
478 STRUCT_NAMESPACE all have this class. */
479
480 LOC_TYPEDEF,
481
482 /* Value is address SYMBOL_VALUE_ADDRESS in the code */
483
484 LOC_LABEL,
485
fce30fa1
JK
486 /* In a symbol table, value is SYMBOL_BLOCK_VALUE of a `struct block'.
487 In a partial symbol table, SYMBOL_VALUE_ADDRESS is the start address
488 of the block. Function names have this class. */
2e4964ad
FF
489
490 LOC_BLOCK,
491
ca6a826d 492 /* Value is a constant byte-sequence pointed to by SYMBOL_VALUE_BYTES, in
2e4964ad
FF
493 target byte order. */
494
495 LOC_CONST_BYTES,
496
fce30fa1
JK
497 /* Value is arg at SYMBOL_VALUE offset in stack frame. Differs from
498 LOC_LOCAL in that symbol is an argument; differs from LOC_ARG in
499 that we find it in the frame (FRAME_LOCALS_ADDRESS), not in the
500 arglist (FRAME_ARGS_ADDRESS). Added for i960, which passes args
501 in regs then copies to frame. */
2e4964ad 502
ca6a826d
PS
503 LOC_LOCAL_ARG,
504
505 /* The variable does not actually exist in the program.
fce30fa1 506 The value is ignored. */
2e4964ad 507
ca6a826d 508 LOC_OPTIMIZED_OUT
bd5635a1
RP
509};
510
511struct symbol
512{
2e4964ad
FF
513
514 /* The general symbol info required for all types of symbols. */
515
516 struct general_symbol_info ginfo;
517
bd5635a1 518 /* Name space code. */
2e4964ad 519
bd5635a1 520 enum namespace namespace;
2e4964ad 521
bd5635a1 522 /* Address class */
2e4964ad 523
bd5635a1 524 enum address_class class;
2e4964ad 525
bd5635a1 526 /* Data type of value */
2e4964ad 527
bd5635a1
RP
528 struct type *type;
529
2e4964ad
FF
530 /* Line number of definition. FIXME: Should we really make the assumption
531 that nobody will try to debug files longer than 64K lines? What about
532 machine generated programs? */
533
bd5635a1
RP
534 unsigned short line;
535
252f6c65
FF
536 /* Some symbols require an additional value to be recorded on a per-
537 symbol basis. Stash those values here. */
2e4964ad 538
252f6c65
FF
539 union
540 {
2e4964ad
FF
541 /* for OP_BASEREG in DWARF location specs */
542 struct
252f6c65
FF
543 {
544 short regno_valid; /* 0 == regno invalid; !0 == regno valid */
545 short regno; /* base register number {0, 1, 2, ...} */
546 } basereg;
547 }
548 aux_value;
2e4964ad 549
bd5635a1
RP
550};
551
2e4964ad
FF
552#define SYMBOL_NAMESPACE(symbol) (symbol)->namespace
553#define SYMBOL_CLASS(symbol) (symbol)->class
554#define SYMBOL_TYPE(symbol) (symbol)->type
555#define SYMBOL_LINE(symbol) (symbol)->line
556#define SYMBOL_BASEREG(symbol) (symbol)->aux_value.basereg.regno
bd5635a1 557
2e4964ad
FF
558/* This currently fails because some symbols are not being initialized
559 to zero on allocation, and no code is currently setting this value.
560 Basereg handling will probably change significantly in the next release.
561 FIXME -fnf */
562
563#if 0
564#define SYMBOL_BASEREG_VALID(symbol) (symbol)->aux_value.basereg.regno_valid
565#else
566#define SYMBOL_BASEREG_VALID(symbol) 0
567#endif
568
569\f
bd5635a1
RP
570/* A partial_symbol records the name, namespace, and address class of
571 symbols whose types we have not parsed yet. For functions, it also
572 contains their memory address, so we can find them from a PC value.
573 Each partial_symbol sits in a partial_symtab, all of which are chained
b0246b3b 574 on a partial symtab list and which points to the corresponding
bd5635a1
RP
575 normal symtab once the partial_symtab has been referenced. */
576
577struct partial_symbol
578{
2e4964ad
FF
579
580 /* The general symbol info required for all types of symbols. */
581
582 struct general_symbol_info ginfo;
583
bd5635a1 584 /* Name space code. */
2e4964ad 585
bd5635a1 586 enum namespace namespace;
2e4964ad 587
bd5635a1 588 /* Address class (for info_symbols) */
2e4964ad 589
bd5635a1 590 enum address_class class;
2e4964ad 591
bd5635a1 592};
2e4964ad
FF
593
594#define PSYMBOL_NAMESPACE(psymbol) (psymbol)->namespace
595#define PSYMBOL_CLASS(psymbol) (psymbol)->class
596
bd5635a1 597\f
2e4964ad
FF
598/* Source-file information. This describes the relation between source files,
599 ine numbers and addresses in the program text. */
bd5635a1
RP
600
601struct sourcevector
602{
603 int length; /* Number of source files described */
604 struct source *source[1]; /* Descriptions of the files */
605};
606
607/* Each item represents a line-->pc (or the reverse) mapping. This is
608 somewhat more wasteful of space than one might wish, but since only
609 the files which are actually debugged are read in to core, we don't
ece2e98a 610 waste much space. */
bd5635a1
RP
611
612struct linetable_entry
613{
614 int line;
615 CORE_ADDR pc;
616};
617
b9298844
JK
618/* The order of entries in the linetable is significant.
619
620 It should generally be in ascending line number order. Line table
621 entries for a function at lines 10-40 should come before entries
622 for a function at lines 50-70.
623
624 A for statement looks like this
625
626 10 0x100 - for the init/test part of a for stmt.
627 20 0x200
628 30 0x300
629 10 0x400 - for the increment part of a for stmt.
630
631 FIXME: this description is incomplete. coffread.c is said to get
632 the linetable order wrong (would arrange_linenos from xcoffread.c
633 work for normal COFF too?). */
634
bd5635a1
RP
635struct linetable
636{
637 int nitems;
638 struct linetable_entry item[1];
639};
640
641/* All the information on one source file. */
642
643struct source
644{
645 char *name; /* Name of file */
646 struct linetable contents;
647};
648
2670f34d
JG
649/* How to relocate the symbols from each section in a symbol file.
650 Each struct contains an array of offsets.
651 The ordering and meaning of the offsets is file-type-dependent;
652 typically it is indexed by section numbers or symbol types or
653 something like that.
654
655 To give us flexibility in changing the internal representation
656 of these offsets, the ANOFFSET macro must be used to insert and
657 extract offset values in the struct. */
658
659struct section_offsets
660 {
661 CORE_ADDR offsets[1]; /* As many as needed. */
662 };
663
664#define ANOFFSET(secoff, whichone) (secoff->offsets[whichone])
665
bd5635a1
RP
666/* Each source file is represented by a struct symtab.
667 These objects are chained through the `next' field. */
668
669struct symtab
670 {
2e4964ad 671
bd5635a1 672 /* Chain of all existing symtabs. */
2e4964ad 673
bd5635a1 674 struct symtab *next;
2e4964ad 675
bd5635a1 676 /* List of all symbol scope blocks for this symtab. */
2e4964ad 677
bd5635a1 678 struct blockvector *blockvector;
2e4964ad 679
4137c5fc
JG
680 /* Table mapping core addresses to line numbers for this file.
681 Can be NULL if none. */
2e4964ad 682
bd5635a1 683 struct linetable *linetable;
2e4964ad 684
ca6a826d
PS
685 /* Section in objfile->section_offsets for the blockvector and
686 the linetable. */
687
688 int block_line_section;
689
690 /* If several symtabs share a blockvector, exactly one of them
691 should be designed the primary, so that the blockvector
692 is relocated exactly once by objfile_relocate. */
693
694 int primary;
695
bd5635a1 696 /* Name of this source file. */
2e4964ad 697
bd5635a1 698 char *filename;
2e4964ad 699
bd5635a1 700 /* Directory in which it was compiled, or NULL if we don't know. */
2e4964ad 701
bd5635a1 702 char *dirname;
2e4964ad 703
bd5635a1
RP
704 /* This component says how to free the data we point to:
705 free_contents => do a tree walk and free each object.
706 free_nothing => do nothing; some other symtab will free
707 the data this one uses.
2e4964ad
FF
708 free_linetable => free just the linetable. */
709
710 enum free_code
711 {
712 free_nothing, free_contents, free_linetable
713 }
714 free_code;
715
bd5635a1
RP
716 /* Pointer to one block of storage to be freed, if nonzero. */
717 /* This is IN ADDITION to the action indicated by free_code. */
2e4964ad 718
bd5635a1 719 char *free_ptr;
2e4964ad 720
bd5635a1 721 /* Total number of lines found in source file. */
2e4964ad 722
bd5635a1 723 int nlines;
2e4964ad 724
025abdfb
JK
725 /* line_charpos[N] is the position of the (N-1)th line of the
726 source file. "position" means something we can lseek() to; it
727 is not guaranteed to be useful any other way. */
2e4964ad 728
bd5635a1 729 int *line_charpos;
2e4964ad 730
bd5635a1 731 /* Language of this source file. */
2e4964ad 732
bd5635a1 733 enum language language;
2e4964ad 734
bd5635a1 735 /* String of version information. May be zero. */
2e4964ad 736
bd5635a1 737 char *version;
2e4964ad 738
bd5635a1 739 /* Full name of file as found by searching the source path.
2e4964ad
FF
740 NULL if not yet known. */
741
bd5635a1 742 char *fullname;
8aa13b87 743
a048c8f5 744 /* Object file from which this symbol information was read. */
2e4964ad 745
a048c8f5 746 struct objfile *objfile;
a048c8f5 747
8aa13b87
JK
748 /* Anything extra for this symtab. This is for target machines
749 with special debugging info of some sort (which cannot just
750 be represented in a normal symtab). */
2e4964ad 751
8aa13b87
JK
752#if defined (EXTRA_SYMTAB_INFO)
753 EXTRA_SYMTAB_INFO
754#endif
2e4964ad 755
bd5635a1
RP
756 };
757
2e4964ad
FF
758#define BLOCKVECTOR(symtab) (symtab)->blockvector
759#define LINETABLE(symtab) (symtab)->linetable
760
761\f
bd5635a1
RP
762/* Each source file that has not been fully read in is represented by
763 a partial_symtab. This contains the information on where in the
764 executable the debugging symbols for a specific file are, and a
765 list of names of global symbols which are located in this file.
b0246b3b 766 They are all chained on partial symtab lists.
bd5635a1
RP
767
768 Even after the source file has been read into a symtab, the
769 partial_symtab remains around. They are allocated on an obstack,
770 psymbol_obstack. FIXME, this is bad for dynamic linking or VxWorks-
771 style execution of a bunch of .o's. */
b0246b3b 772
bd5635a1
RP
773struct partial_symtab
774{
2e4964ad 775
bd5635a1 776 /* Chain of all existing partial symtabs. */
2e4964ad 777
bd5635a1 778 struct partial_symtab *next;
2e4964ad 779
bd5635a1 780 /* Name of the source file which this partial_symtab defines */
2e4964ad 781
bd5635a1
RP
782 char *filename;
783
a048c8f5 784 /* Information about the object file from which symbols should be read. */
2e4964ad 785
a048c8f5 786 struct objfile *objfile;
a048c8f5 787
2670f34d 788 /* Set of relocation offsets to apply to each section. */
2e4964ad 789
2670f34d
JG
790 struct section_offsets *section_offsets;
791
bd5635a1
RP
792 /* Range of text addresses covered by this file; texthigh is the
793 beginning of the next section. */
2e4964ad
FF
794
795 CORE_ADDR textlow;
796 CORE_ADDR texthigh;
797
bd5635a1
RP
798 /* Array of pointers to all of the partial_symtab's which this one
799 depends on. Since this array can only be set to previous or
800 the current (?) psymtab, this dependency tree is guaranteed not
d63aae7f
JK
801 to have any loops. "depends on" means that symbols must be read
802 for the dependencies before being read for this psymtab; this is
803 for type references in stabs, where if foo.c includes foo.h, declarations
804 in foo.h may use type numbers defined in foo.c. For other debugging
805 formats there may be no need to use dependencies. */
2e4964ad 806
bd5635a1 807 struct partial_symtab **dependencies;
2e4964ad 808
bd5635a1 809 int number_of_dependencies;
2e4964ad 810
bd5635a1
RP
811 /* Global symbol list. This list will be sorted after readin to
812 improve access. Binary search will be the usual method of
813 finding a symbol within it. globals_offset is an integer offset
4a35d6e9 814 within global_psymbols[]. */
2e4964ad
FF
815
816 int globals_offset;
817 int n_global_syms;
818
bd5635a1
RP
819 /* Static symbol list. This list will *not* be sorted after readin;
820 to find a symbol in it, exhaustive search must be used. This is
821 reasonable because searches through this list will eventually
822 lead to either the read in of a files symbols for real (assumed
823 to take a *lot* of time; check) or an error (and we don't care
4a35d6e9
FF
824 how long errors take). This is an offset and size within
825 static_psymbols[]. */
2e4964ad
FF
826
827 int statics_offset;
828 int n_static_syms;
829
bd5635a1
RP
830 /* Pointer to symtab eventually allocated for this source file, 0 if
831 !readin or if we haven't looked for the symtab after it was readin. */
2e4964ad 832
bd5635a1 833 struct symtab *symtab;
2e4964ad 834
bd5635a1
RP
835 /* Pointer to function which will read in the symtab corresponding to
836 this psymtab. */
2e4964ad 837
b0246b3b 838 void (*read_symtab) PARAMS ((struct partial_symtab *));
2e4964ad 839
4a35d6e9
FF
840 /* Information that lets read_symtab() locate the part of the symbol table
841 that this psymtab corresponds to. This information is private to the
842 format-dependent symbol reading routines. For further detail examine
843 the various symbol reading modules. Should really be (void *) but is
844 (char *) as with other such gdb variables. (FIXME) */
2e4964ad 845
4a35d6e9 846 char *read_symtab_private;
2e4964ad
FF
847
848 /* Non-zero if the symtab corresponding to this psymtab has been readin */
849
bd5635a1
RP
850 unsigned char readin;
851};
852
853/* A fast way to get from a psymtab to its symtab (after the first time). */
2e4964ad
FF
854#define PSYMTAB_TO_SYMTAB(pst) \
855 ((pst) -> symtab != NULL ? (pst) -> symtab : psymtab_to_symtab (pst))
bd5635a1 856
bd5635a1 857\f
2e4964ad
FF
858/* The virtual function table is now an array of structures which have the
859 form { int16 offset, delta; void *pfn; }.
aec4cb91 860
ea9cdf62
JK
861 In normal virtual function tables, OFFSET is unused.
862 DELTA is the amount which is added to the apparent object's base
863 address in order to point to the actual object to which the
864 virtual function should be applied.
0b28c260
JK
865 PFN is a pointer to the virtual function.
866
867 Note that this macro is g++ specific (FIXME). */
bd5635a1
RP
868
869#define VTBL_FNADDR_OFFSET 2
ea9cdf62 870
2e4964ad
FF
871/* Macro that yields non-zero value iff NAME is the prefix for C++ operator
872 names. If you leave out the parenthesis here you will lose!
ea9cdf62 873 Currently 'o' 'p' CPLUS_MARKER is used for both the symbol in the
0b28c260
JK
874 symbol-file and the names in gdb's symbol table.
875 Note that this macro is g++ specific (FIXME). */
ea9cdf62 876
2e4964ad
FF
877#define OPNAME_PREFIX_P(NAME) \
878 ((NAME)[0] == 'o' && (NAME)[1] == 'p' && (NAME)[2] == CPLUS_MARKER)
879
ca6a826d 880/* Macro that yields non-zero value iff NAME is the prefix for C++ vtbl
0b28c260 881 names. Note that this macro is g++ specific (FIXME). */
ca6a826d 882
2e4964ad
FF
883#define VTBL_PREFIX_P(NAME) \
884 ((NAME)[3] == CPLUS_MARKER && !strncmp ((NAME), "_vt", 3))
885
ca6a826d 886/* Macro that yields non-zero value iff NAME is the prefix for C++ destructor
0b28c260 887 names. Note that this macro is g++ specific (FIXME). */
ca6a826d
PS
888
889#define DESTRUCTOR_PREFIX_P(NAME) \
890 ((NAME)[0] == '_' && (NAME)[1] == CPLUS_MARKER && (NAME)[2] == '_')
891
bd5635a1 892\f
2e4964ad
FF
893/* External variables and functions for the objects described above. */
894
895/* This symtab variable specifies the current file for printing source lines */
896
897extern struct symtab *current_source_symtab;
898
899/* This is the next line to print for listing source lines. */
900
901extern int current_source_line;
902
903/* See the comment in symfile.c about how current_objfile is used. */
904
905extern struct objfile *current_objfile;
bd5635a1 906
b0246b3b
FF
907extern struct symtab *
908lookup_symtab PARAMS ((char *));
909
910extern struct symbol *
911lookup_symbol PARAMS ((const char *, const struct block *,
912 const enum namespace, int *, struct symtab **));
913
914extern struct symbol *
915lookup_block_symbol PARAMS ((const struct block *, const char *,
916 const enum namespace));
917
918extern struct type *
919lookup_struct PARAMS ((char *, struct block *));
920
921extern struct type *
922lookup_union PARAMS ((char *, struct block *));
923
924extern struct type *
925lookup_enum PARAMS ((char *, struct block *));
926
927extern struct symbol *
928block_function PARAMS ((struct block *));
929
930extern struct symbol *
931find_pc_function PARAMS ((CORE_ADDR));
932
933extern int
934find_pc_partial_function PARAMS ((CORE_ADDR, char **, CORE_ADDR *));
935
936extern void
937clear_pc_function_cache PARAMS ((void));
938
939extern struct partial_symtab *
940lookup_partial_symtab PARAMS ((char *));
941
942extern struct partial_symtab *
943find_pc_psymtab PARAMS ((CORE_ADDR));
944
945extern struct symtab *
946find_pc_symtab PARAMS ((CORE_ADDR));
947
948extern struct partial_symbol *
949find_pc_psymbol PARAMS ((struct partial_symtab *, CORE_ADDR));
950
951extern int
952find_pc_line_pc_range PARAMS ((CORE_ADDR, CORE_ADDR *, CORE_ADDR *));
953
954extern int
955contained_in PARAMS ((struct block *, struct block *));
956
957extern void
958reread_symbols PARAMS ((void));
959
b0246b3b
FF
960/* Functions for dealing with the minimal symbol table, really a misc
961 address<->symbol mapping for things we don't have debug symbols for. */
962
b0246b3b
FF
963extern void
964prim_record_minimal_symbol PARAMS ((const char *, CORE_ADDR,
965 enum minimal_symbol_type));
966
51b57ded
FF
967extern void
968prim_record_minimal_symbol_and_info PARAMS ((const char *, CORE_ADDR,
969 enum minimal_symbol_type,
ca6a826d 970 char *info, int section));
51b57ded 971
b0246b3b
FF
972extern struct minimal_symbol *
973lookup_minimal_symbol PARAMS ((const char *, struct objfile *));
974
975extern struct minimal_symbol *
976lookup_minimal_symbol_by_pc PARAMS ((CORE_ADDR));
977
b0246b3b
FF
978extern void
979init_minimal_symbol_collection PARAMS ((void));
980
981extern void
982discard_minimal_symbols PARAMS ((int));
983
984extern void
985install_minimal_symbols PARAMS ((struct objfile *));
bd5635a1
RP
986
987struct symtab_and_line
988{
989 struct symtab *symtab;
025abdfb
JK
990
991 /* Line number. Line numbers start at 1 and proceed through symtab->nlines.
992 0 is never a valid line number; it is used to indicate that line number
993 information is not available. */
bd5635a1 994 int line;
025abdfb 995
bd5635a1
RP
996 CORE_ADDR pc;
997 CORE_ADDR end;
998};
999
1000struct symtabs_and_lines
1001{
1002 struct symtab_and_line *sals;
1003 int nelts;
1004};
1005
2e4964ad
FF
1006/* Given a pc value, return line number it is in. Second arg nonzero means
1007 if pc is on the boundary use the previous statement's line number. */
bd5635a1 1008
b0246b3b
FF
1009extern struct symtab_and_line
1010find_pc_line PARAMS ((CORE_ADDR, int));
bd5635a1
RP
1011
1012/* Given a symtab and line number, return the pc there. */
b0246b3b
FF
1013
1014extern CORE_ADDR
1015find_line_pc PARAMS ((struct symtab *, int));
1016
1017extern int
1018find_line_pc_range PARAMS ((struct symtab *, int, CORE_ADDR *, CORE_ADDR *));
1019
1020extern void
1021resolve_sal_pc PARAMS ((struct symtab_and_line *));
bd5635a1 1022
2e4964ad
FF
1023/* Given a string, return the line specified by it. For commands like "list"
1024 and "breakpoint". */
bd5635a1 1025
b0246b3b
FF
1026extern struct symtabs_and_lines
1027decode_line_spec PARAMS ((char *, int));
1028
1029extern struct symtabs_and_lines
1030decode_line_spec_1 PARAMS ((char *, int));
1031
1032extern struct symtabs_and_lines
1033decode_line_1 PARAMS ((char **, int, struct symtab *, int));
bd5635a1 1034
5c43db6b 1035/* Symmisc.c */
b0246b3b 1036
35fcebce
PB
1037#if MAINTENANCE_CMDS
1038
1039void
1040maintenance_print_symbols PARAMS ((char *, int));
1041
1042void
1043maintenance_print_psymbols PARAMS ((char *, int));
1044
1045void
1046maintenance_print_msymbols PARAMS ((char *, int));
1047
1048void
1049maintenance_print_objfiles PARAMS ((char *, int));
1050
1051#endif
1052
b0246b3b
FF
1053extern void
1054free_symtab PARAMS ((struct symtab *));
5c43db6b 1055
bd5635a1 1056/* Symbol-reading stuff in symfile.c and solib.c. */
b0246b3b
FF
1057
1058extern struct symtab *
1059psymtab_to_symtab PARAMS ((struct partial_symtab *));
1060
1061extern void
1062clear_solib PARAMS ((void));
1063
1064extern struct objfile *
1065symbol_file_add PARAMS ((char *, int, CORE_ADDR, int, int, int));
bd5635a1
RP
1066
1067/* source.c */
bd5635a1 1068
b9298844
JK
1069extern int frame_file_full_name; /* in stack.c */
1070
b0246b3b 1071extern int
b9298844 1072identify_source_line PARAMS ((struct symtab *, int, int, CORE_ADDR));
b0246b3b
FF
1073
1074extern void
1075print_source_lines PARAMS ((struct symtab *, int, int, int));
1076
1077extern void
1078forget_cached_source_info PARAMS ((void));
1079
1080extern void
1081select_source_symtab PARAMS ((struct symtab *));
1082
d63aae7f 1083extern char **make_symbol_completion_list PARAMS ((char *, char *));
b0246b3b
FF
1084
1085/* symtab.c */
1086
51b57ded
FF
1087extern void
1088clear_symtab_users_once PARAMS ((void));
1089
b0246b3b
FF
1090extern struct partial_symtab *
1091find_main_psymtab PARAMS ((void));
1092
1093/* blockframe.c */
1094
1095extern struct blockvector *
1096blockvector_for_pc PARAMS ((CORE_ADDR, int *));
bd5635a1 1097
b0246b3b 1098/* symfile.c */
4a35d6e9 1099
b0246b3b
FF
1100extern enum language
1101deduce_language_from_filename PARAMS ((char *));
4a35d6e9 1102
b0246b3b 1103#endif /* !defined(SYMTAB_H) */
This page took 0.429198 seconds and 4 git commands to generate.