* infrun.c (wait_for_inferior): Use find_pc_line not find_pc_symtab
[deliverable/binutils-gdb.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
d63aae7f
JK
725 /* The Nth element of this array is the position of the
726 (N-1)th line of the source file. "position" means something
727 we can lseek() to; it is not guaranteed to be useful any other
728 way. */
2e4964ad 729
bd5635a1 730 int *line_charpos;
2e4964ad 731
bd5635a1 732 /* Language of this source file. */
2e4964ad 733
bd5635a1 734 enum language language;
2e4964ad 735
bd5635a1 736 /* String of version information. May be zero. */
2e4964ad 737
bd5635a1 738 char *version;
2e4964ad 739
bd5635a1 740 /* Full name of file as found by searching the source path.
2e4964ad
FF
741 NULL if not yet known. */
742
bd5635a1 743 char *fullname;
8aa13b87 744
a048c8f5 745 /* Object file from which this symbol information was read. */
2e4964ad 746
a048c8f5 747 struct objfile *objfile;
a048c8f5 748
8aa13b87
JK
749 /* Anything extra for this symtab. This is for target machines
750 with special debugging info of some sort (which cannot just
751 be represented in a normal symtab). */
2e4964ad 752
8aa13b87
JK
753#if defined (EXTRA_SYMTAB_INFO)
754 EXTRA_SYMTAB_INFO
755#endif
2e4964ad 756
bd5635a1
RP
757 };
758
2e4964ad
FF
759#define BLOCKVECTOR(symtab) (symtab)->blockvector
760#define LINETABLE(symtab) (symtab)->linetable
761
762\f
bd5635a1
RP
763/* Each source file that has not been fully read in is represented by
764 a partial_symtab. This contains the information on where in the
765 executable the debugging symbols for a specific file are, and a
766 list of names of global symbols which are located in this file.
b0246b3b 767 They are all chained on partial symtab lists.
bd5635a1
RP
768
769 Even after the source file has been read into a symtab, the
770 partial_symtab remains around. They are allocated on an obstack,
771 psymbol_obstack. FIXME, this is bad for dynamic linking or VxWorks-
772 style execution of a bunch of .o's. */
b0246b3b 773
bd5635a1
RP
774struct partial_symtab
775{
2e4964ad 776
bd5635a1 777 /* Chain of all existing partial symtabs. */
2e4964ad 778
bd5635a1 779 struct partial_symtab *next;
2e4964ad 780
bd5635a1 781 /* Name of the source file which this partial_symtab defines */
2e4964ad 782
bd5635a1
RP
783 char *filename;
784
a048c8f5 785 /* Information about the object file from which symbols should be read. */
2e4964ad 786
a048c8f5 787 struct objfile *objfile;
a048c8f5 788
2670f34d 789 /* Set of relocation offsets to apply to each section. */
2e4964ad 790
2670f34d
JG
791 struct section_offsets *section_offsets;
792
bd5635a1
RP
793 /* Range of text addresses covered by this file; texthigh is the
794 beginning of the next section. */
2e4964ad
FF
795
796 CORE_ADDR textlow;
797 CORE_ADDR texthigh;
798
bd5635a1
RP
799 /* Array of pointers to all of the partial_symtab's which this one
800 depends on. Since this array can only be set to previous or
801 the current (?) psymtab, this dependency tree is guaranteed not
d63aae7f
JK
802 to have any loops. "depends on" means that symbols must be read
803 for the dependencies before being read for this psymtab; this is
804 for type references in stabs, where if foo.c includes foo.h, declarations
805 in foo.h may use type numbers defined in foo.c. For other debugging
806 formats there may be no need to use dependencies. */
2e4964ad 807
bd5635a1 808 struct partial_symtab **dependencies;
2e4964ad 809
bd5635a1 810 int number_of_dependencies;
2e4964ad 811
bd5635a1
RP
812 /* Global symbol list. This list will be sorted after readin to
813 improve access. Binary search will be the usual method of
814 finding a symbol within it. globals_offset is an integer offset
4a35d6e9 815 within global_psymbols[]. */
2e4964ad
FF
816
817 int globals_offset;
818 int n_global_syms;
819
bd5635a1
RP
820 /* Static symbol list. This list will *not* be sorted after readin;
821 to find a symbol in it, exhaustive search must be used. This is
822 reasonable because searches through this list will eventually
823 lead to either the read in of a files symbols for real (assumed
824 to take a *lot* of time; check) or an error (and we don't care
4a35d6e9
FF
825 how long errors take). This is an offset and size within
826 static_psymbols[]. */
2e4964ad
FF
827
828 int statics_offset;
829 int n_static_syms;
830
bd5635a1
RP
831 /* Pointer to symtab eventually allocated for this source file, 0 if
832 !readin or if we haven't looked for the symtab after it was readin. */
2e4964ad 833
bd5635a1 834 struct symtab *symtab;
2e4964ad 835
bd5635a1
RP
836 /* Pointer to function which will read in the symtab corresponding to
837 this psymtab. */
2e4964ad 838
b0246b3b 839 void (*read_symtab) PARAMS ((struct partial_symtab *));
2e4964ad 840
4a35d6e9
FF
841 /* Information that lets read_symtab() locate the part of the symbol table
842 that this psymtab corresponds to. This information is private to the
843 format-dependent symbol reading routines. For further detail examine
844 the various symbol reading modules. Should really be (void *) but is
845 (char *) as with other such gdb variables. (FIXME) */
2e4964ad 846
4a35d6e9 847 char *read_symtab_private;
2e4964ad
FF
848
849 /* Non-zero if the symtab corresponding to this psymtab has been readin */
850
bd5635a1
RP
851 unsigned char readin;
852};
853
854/* A fast way to get from a psymtab to its symtab (after the first time). */
2e4964ad
FF
855#define PSYMTAB_TO_SYMTAB(pst) \
856 ((pst) -> symtab != NULL ? (pst) -> symtab : psymtab_to_symtab (pst))
bd5635a1 857
bd5635a1 858\f
2e4964ad
FF
859/* The virtual function table is now an array of structures which have the
860 form { int16 offset, delta; void *pfn; }.
aec4cb91 861
ea9cdf62
JK
862 In normal virtual function tables, OFFSET is unused.
863 DELTA is the amount which is added to the apparent object's base
864 address in order to point to the actual object to which the
865 virtual function should be applied.
0b28c260
JK
866 PFN is a pointer to the virtual function.
867
868 Note that this macro is g++ specific (FIXME). */
bd5635a1
RP
869
870#define VTBL_FNADDR_OFFSET 2
ea9cdf62 871
2e4964ad
FF
872/* Macro that yields non-zero value iff NAME is the prefix for C++ operator
873 names. If you leave out the parenthesis here you will lose!
ea9cdf62 874 Currently 'o' 'p' CPLUS_MARKER is used for both the symbol in the
0b28c260
JK
875 symbol-file and the names in gdb's symbol table.
876 Note that this macro is g++ specific (FIXME). */
ea9cdf62 877
2e4964ad
FF
878#define OPNAME_PREFIX_P(NAME) \
879 ((NAME)[0] == 'o' && (NAME)[1] == 'p' && (NAME)[2] == CPLUS_MARKER)
880
ca6a826d 881/* Macro that yields non-zero value iff NAME is the prefix for C++ vtbl
0b28c260 882 names. Note that this macro is g++ specific (FIXME). */
ca6a826d 883
2e4964ad
FF
884#define VTBL_PREFIX_P(NAME) \
885 ((NAME)[3] == CPLUS_MARKER && !strncmp ((NAME), "_vt", 3))
886
ca6a826d 887/* Macro that yields non-zero value iff NAME is the prefix for C++ destructor
0b28c260 888 names. Note that this macro is g++ specific (FIXME). */
ca6a826d
PS
889
890#define DESTRUCTOR_PREFIX_P(NAME) \
891 ((NAME)[0] == '_' && (NAME)[1] == CPLUS_MARKER && (NAME)[2] == '_')
892
bd5635a1 893\f
2e4964ad
FF
894/* External variables and functions for the objects described above. */
895
896/* This symtab variable specifies the current file for printing source lines */
897
898extern struct symtab *current_source_symtab;
899
900/* This is the next line to print for listing source lines. */
901
902extern int current_source_line;
903
904/* See the comment in symfile.c about how current_objfile is used. */
905
906extern struct objfile *current_objfile;
bd5635a1 907
b0246b3b
FF
908extern struct symtab *
909lookup_symtab PARAMS ((char *));
910
911extern struct symbol *
912lookup_symbol PARAMS ((const char *, const struct block *,
913 const enum namespace, int *, struct symtab **));
914
915extern struct symbol *
916lookup_block_symbol PARAMS ((const struct block *, const char *,
917 const enum namespace));
918
919extern struct type *
920lookup_struct PARAMS ((char *, struct block *));
921
922extern struct type *
923lookup_union PARAMS ((char *, struct block *));
924
925extern struct type *
926lookup_enum PARAMS ((char *, struct block *));
927
928extern struct symbol *
929block_function PARAMS ((struct block *));
930
931extern struct symbol *
932find_pc_function PARAMS ((CORE_ADDR));
933
934extern int
935find_pc_partial_function PARAMS ((CORE_ADDR, char **, CORE_ADDR *));
936
937extern void
938clear_pc_function_cache PARAMS ((void));
939
940extern struct partial_symtab *
941lookup_partial_symtab PARAMS ((char *));
942
943extern struct partial_symtab *
944find_pc_psymtab PARAMS ((CORE_ADDR));
945
946extern struct symtab *
947find_pc_symtab PARAMS ((CORE_ADDR));
948
949extern struct partial_symbol *
950find_pc_psymbol PARAMS ((struct partial_symtab *, CORE_ADDR));
951
952extern int
953find_pc_line_pc_range PARAMS ((CORE_ADDR, CORE_ADDR *, CORE_ADDR *));
954
955extern int
956contained_in PARAMS ((struct block *, struct block *));
957
958extern void
959reread_symbols PARAMS ((void));
960
b0246b3b
FF
961/* Functions for dealing with the minimal symbol table, really a misc
962 address<->symbol mapping for things we don't have debug symbols for. */
963
b0246b3b
FF
964extern void
965prim_record_minimal_symbol PARAMS ((const char *, CORE_ADDR,
966 enum minimal_symbol_type));
967
51b57ded
FF
968extern void
969prim_record_minimal_symbol_and_info PARAMS ((const char *, CORE_ADDR,
970 enum minimal_symbol_type,
ca6a826d 971 char *info, int section));
51b57ded 972
b0246b3b
FF
973extern struct minimal_symbol *
974lookup_minimal_symbol PARAMS ((const char *, struct objfile *));
975
976extern struct minimal_symbol *
977lookup_minimal_symbol_by_pc PARAMS ((CORE_ADDR));
978
b0246b3b
FF
979extern void
980init_minimal_symbol_collection PARAMS ((void));
981
982extern void
983discard_minimal_symbols PARAMS ((int));
984
985extern void
986install_minimal_symbols PARAMS ((struct objfile *));
bd5635a1
RP
987
988struct symtab_and_line
989{
990 struct symtab *symtab;
991 int line;
992 CORE_ADDR pc;
993 CORE_ADDR end;
994};
995
996struct symtabs_and_lines
997{
998 struct symtab_and_line *sals;
999 int nelts;
1000};
1001
2e4964ad
FF
1002/* Given a pc value, return line number it is in. Second arg nonzero means
1003 if pc is on the boundary use the previous statement's line number. */
bd5635a1 1004
b0246b3b
FF
1005extern struct symtab_and_line
1006find_pc_line PARAMS ((CORE_ADDR, int));
bd5635a1
RP
1007
1008/* Given a symtab and line number, return the pc there. */
b0246b3b
FF
1009
1010extern CORE_ADDR
1011find_line_pc PARAMS ((struct symtab *, int));
1012
1013extern int
1014find_line_pc_range PARAMS ((struct symtab *, int, CORE_ADDR *, CORE_ADDR *));
1015
1016extern void
1017resolve_sal_pc PARAMS ((struct symtab_and_line *));
bd5635a1 1018
2e4964ad
FF
1019/* Given a string, return the line specified by it. For commands like "list"
1020 and "breakpoint". */
bd5635a1 1021
b0246b3b
FF
1022extern struct symtabs_and_lines
1023decode_line_spec PARAMS ((char *, int));
1024
1025extern struct symtabs_and_lines
1026decode_line_spec_1 PARAMS ((char *, int));
1027
1028extern struct symtabs_and_lines
1029decode_line_1 PARAMS ((char **, int, struct symtab *, int));
bd5635a1 1030
5c43db6b 1031/* Symmisc.c */
b0246b3b 1032
35fcebce
PB
1033#if MAINTENANCE_CMDS
1034
1035void
1036maintenance_print_symbols PARAMS ((char *, int));
1037
1038void
1039maintenance_print_psymbols PARAMS ((char *, int));
1040
1041void
1042maintenance_print_msymbols PARAMS ((char *, int));
1043
1044void
1045maintenance_print_objfiles PARAMS ((char *, int));
1046
1047#endif
1048
b0246b3b
FF
1049extern void
1050free_symtab PARAMS ((struct symtab *));
5c43db6b 1051
bd5635a1 1052/* Symbol-reading stuff in symfile.c and solib.c. */
b0246b3b
FF
1053
1054extern struct symtab *
1055psymtab_to_symtab PARAMS ((struct partial_symtab *));
1056
1057extern void
1058clear_solib PARAMS ((void));
1059
1060extern struct objfile *
1061symbol_file_add PARAMS ((char *, int, CORE_ADDR, int, int, int));
bd5635a1
RP
1062
1063/* source.c */
bd5635a1 1064
b9298844
JK
1065extern int frame_file_full_name; /* in stack.c */
1066
b0246b3b 1067extern int
b9298844 1068identify_source_line PARAMS ((struct symtab *, int, int, CORE_ADDR));
b0246b3b
FF
1069
1070extern void
1071print_source_lines PARAMS ((struct symtab *, int, int, int));
1072
1073extern void
1074forget_cached_source_info PARAMS ((void));
1075
1076extern void
1077select_source_symtab PARAMS ((struct symtab *));
1078
d63aae7f 1079extern char **make_symbol_completion_list PARAMS ((char *, char *));
b0246b3b
FF
1080
1081/* symtab.c */
1082
51b57ded
FF
1083extern void
1084clear_symtab_users_once PARAMS ((void));
1085
b0246b3b
FF
1086extern struct partial_symtab *
1087find_main_psymtab PARAMS ((void));
1088
1089/* blockframe.c */
1090
1091extern struct blockvector *
1092blockvector_for_pc PARAMS ((CORE_ADDR, int *));
bd5635a1 1093
b0246b3b 1094/* symfile.c */
4a35d6e9 1095
b0246b3b
FF
1096extern enum language
1097deduce_language_from_filename PARAMS ((char *));
4a35d6e9 1098
b0246b3b 1099#endif /* !defined(SYMTAB_H) */
This page took 0.167066 seconds and 4 git commands to generate.