* utils.c (fputs_maybe_filtered): Check if there's already a top
[deliverable/binutils-gdb.git] / gdb / symtab.h
CommitLineData
c906108c 1/* Symbol table definitions for GDB.
1bac305b 2
6aba47ca 3 Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
4c38e0a4 4 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, 2010
6aba47ca 5 Free Software Foundation, Inc.
c906108c 6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
c5aa993b 12 (at your option) any later version.
c906108c 13
c5aa993b
JM
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
c906108c 18
c5aa993b 19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
21
22#if !defined (SYMTAB_H)
23#define SYMTAB_H 1
24
5f8a3188 25/* Opaque declarations. */
da3331ec
AC
26struct ui_file;
27struct frame_info;
28struct symbol;
5f8a3188 29struct obstack;
6a2f5abf 30struct objfile;
fe898f56
DC
31struct block;
32struct blockvector;
4c2df51b
DJ
33struct axs_value;
34struct agent_expr;
6c95b8df 35struct program_space;
c906108c 36
a7f19c79
MC
37/* Some of the structures in this file are space critical.
38 The space-critical structures are:
39
40 struct general_symbol_info
41 struct symbol
42 struct partial_symbol
43
5bccb4d1 44 These structures are laid out to encourage good packing.
a7f19c79
MC
45 They use ENUM_BITFIELD and short int fields, and they order the
46 structure members so that fields less than a word are next
47 to each other so they can be packed together. */
48
49/* Rearranged: used ENUM_BITFIELD and rearranged field order in
50 all the space critical structures (plus struct minimal_symbol).
51 Memory usage dropped from 99360768 bytes to 90001408 bytes.
52 I measured this with before-and-after tests of
53 "HEAD-old-gdb -readnow HEAD-old-gdb" and
54 "HEAD-new-gdb -readnow HEAD-old-gdb" on native i686-pc-linux-gnu,
55 red hat linux 8, with LD_LIBRARY_PATH=/usr/lib/debug,
56 typing "maint space 1" at the first command prompt.
57
58 Here is another measurement (from andrew c):
59 # no /usr/lib/debug, just plain glibc, like a normal user
60 gdb HEAD-old-gdb
61 (gdb) break internal_error
62 (gdb) run
63 (gdb) maint internal-error
64 (gdb) backtrace
65 (gdb) maint space 1
66
67 gdb gdb_6_0_branch 2003-08-19 space used: 8896512
68 gdb HEAD 2003-08-19 space used: 8904704
69 gdb HEAD 2003-08-21 space used: 8396800 (+symtab.h)
70 gdb HEAD 2003-08-21 space used: 8265728 (+gdbtypes.h)
71
72 The third line shows the savings from the optimizations in symtab.h.
73 The fourth line shows the savings from the optimizations in
74 gdbtypes.h. Both optimizations are in gdb HEAD now.
75
76 --chastain 2003-08-21 */
77
78
79
c906108c
SS
80/* Define a structure for the information that is common to all symbol types,
81 including minimal symbols, partial symbols, and full symbols. In a
82 multilanguage environment, some language specific information may need to
a7f19c79 83 be recorded along with each symbol. */
c906108c 84
a7f19c79 85/* This structure is space critical. See space comments at the top. */
c906108c
SS
86
87struct general_symbol_info
17c5ed2c 88{
22abf04a 89 /* Name of the symbol. This is a required field. Storage for the
4a146b47
EZ
90 name is allocated on the objfile_obstack for the associated
91 objfile. For languages like C++ that make a distinction between
92 the mangled name and demangled name, this is the mangled
93 name. */
c906108c 94
17c5ed2c 95 char *name;
c906108c 96
17c5ed2c
DC
97 /* Value of the symbol. Which member of this union to use, and what
98 it means, depends on what kind of symbol this is and its
99 SYMBOL_CLASS. See comments there for more details. All of these
100 are in host byte order (though what they point to might be in
101 target byte order, e.g. LOC_CONST_BYTES). */
c906108c 102
17c5ed2c
DC
103 union
104 {
105 /* The fact that this is a long not a LONGEST mainly limits the
106 range of a LOC_CONST. Since LOC_CONST_BYTES exists, I'm not
107 sure that is a big deal. */
108 long ivalue;
c906108c 109
17c5ed2c 110 struct block *block;
c906108c 111
4e38b386 112 gdb_byte *bytes;
c906108c 113
17c5ed2c 114 CORE_ADDR address;
c906108c 115
17c5ed2c 116 /* for opaque typedef struct chain */
c906108c 117
17c5ed2c
DC
118 struct symbol *chain;
119 }
120 value;
c906108c 121
17c5ed2c
DC
122 /* Since one and only one language can apply, wrap the language specific
123 information inside a union. */
c906108c 124
17c5ed2c
DC
125 union
126 {
22abf04a 127 struct cplus_specific
17c5ed2c 128 {
22abf04a 129 /* This is in fact used for C++, Java, and Objective C. */
17c5ed2c
DC
130 char *demangled_name;
131 }
132 cplus_specific;
17c5ed2c
DC
133 }
134 language_specific;
c5aa993b 135
17c5ed2c
DC
136 /* Record the source code language that applies to this symbol.
137 This is used to select one of the fields from the language specific
138 union above. */
c5aa993b 139
87193939 140 ENUM_BITFIELD(language) language : 8;
c5aa993b 141
17c5ed2c
DC
142 /* Which section is this symbol in? This is an index into
143 section_offsets for this objfile. Negative means that the symbol
144 does not get relocated relative to a section.
145 Disclaimer: currently this is just used for xcoff, so don't
146 expect all symbol-reading code to set it correctly (the ELF code
147 also tries to set it correctly). */
c5aa993b 148
17c5ed2c 149 short section;
c5aa993b 150
714835d5 151 /* The section associated with this symbol. */
c5aa993b 152
714835d5 153 struct obj_section *obj_section;
17c5ed2c 154};
c906108c 155
714835d5 156extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, struct obj_section *);
c906108c 157
88cda038
EZ
158/* Note that all the following SYMBOL_* macros are used with the
159 SYMBOL argument being either a partial symbol, a minimal symbol or
160 a full symbol. All three types have a ginfo field. In particular
d6350901
DJ
161 the SYMBOL_INIT_LANGUAGE_SPECIFIC, SYMBOL_DEMANGLED_NAME, etc.
162 macros cannot be entirely substituted by
88cda038
EZ
163 functions, unless the callers are changed to pass in the ginfo
164 field only, instead of the SYMBOL parameter. */
165
c906108c
SS
166#define SYMBOL_VALUE(symbol) (symbol)->ginfo.value.ivalue
167#define SYMBOL_VALUE_ADDRESS(symbol) (symbol)->ginfo.value.address
168#define SYMBOL_VALUE_BYTES(symbol) (symbol)->ginfo.value.bytes
169#define SYMBOL_BLOCK_VALUE(symbol) (symbol)->ginfo.value.block
170#define SYMBOL_VALUE_CHAIN(symbol) (symbol)->ginfo.value.chain
171#define SYMBOL_LANGUAGE(symbol) (symbol)->ginfo.language
172#define SYMBOL_SECTION(symbol) (symbol)->ginfo.section
714835d5 173#define SYMBOL_OBJ_SECTION(symbol) (symbol)->ginfo.obj_section
c906108c
SS
174
175#define SYMBOL_CPLUS_DEMANGLED_NAME(symbol) \
176 (symbol)->ginfo.language_specific.cplus_specific.demangled_name
177
89aad1f9 178/* Initializes the language dependent portion of a symbol
c906108c 179 depending upon the language for the symbol. */
89aad1f9
EZ
180#define SYMBOL_INIT_LANGUAGE_SPECIFIC(symbol,language) \
181 (symbol_init_language_specific (&(symbol)->ginfo, (language)))
182extern void symbol_init_language_specific (struct general_symbol_info *symbol,
183 enum language language);
c906108c 184
3567439c
DJ
185/* Set just the linkage name of a symbol; do not try to demangle
186 it. Used for constructs which do not have a mangled name,
187 e.g. struct tags. Unlike SYMBOL_SET_NAMES, linkage_name must
1c9e8358
TT
188 be terminated and either already on the objfile's obstack or
189 permanently allocated. */
3567439c
DJ
190#define SYMBOL_SET_LINKAGE_NAME(symbol,linkage_name) \
191 (symbol)->ginfo.name = (linkage_name)
192
193/* Set the linkage and natural names of a symbol, by demangling
194 the linkage name. */
04a679b8
TT
195#define SYMBOL_SET_NAMES(symbol,linkage_name,len,copy_name,objfile) \
196 symbol_set_names (&(symbol)->ginfo, linkage_name, len, copy_name, objfile)
2de7ced7 197extern void symbol_set_names (struct general_symbol_info *symbol,
04a679b8 198 const char *linkage_name, int len, int copy_name,
2de7ced7
DJ
199 struct objfile *objfile);
200
22abf04a
DC
201/* Now come lots of name accessor macros. Short version as to when to
202 use which: Use SYMBOL_NATURAL_NAME to refer to the name of the
203 symbol in the original source code. Use SYMBOL_LINKAGE_NAME if you
204 want to know what the linker thinks the symbol's name is. Use
205 SYMBOL_PRINT_NAME for output. Use SYMBOL_DEMANGLED_NAME if you
206 specifically need to know whether SYMBOL_NATURAL_NAME and
3567439c 207 SYMBOL_LINKAGE_NAME are different. */
22abf04a
DC
208
209/* Return SYMBOL's "natural" name, i.e. the name that it was called in
210 the original source code. In languages like C++ where symbols may
211 be mangled for ease of manipulation by the linker, this is the
212 demangled name. */
213
214#define SYMBOL_NATURAL_NAME(symbol) \
215 (symbol_natural_name (&(symbol)->ginfo))
216extern char *symbol_natural_name (const struct general_symbol_info *symbol);
217
218/* Return SYMBOL's name from the point of view of the linker. In
219 languages like C++ where symbols may be mangled for ease of
220 manipulation by the linker, this is the mangled name; otherwise,
3567439c 221 it's the same as SYMBOL_NATURAL_NAME. */
22abf04a
DC
222
223#define SYMBOL_LINKAGE_NAME(symbol) (symbol)->ginfo.name
224
9cc0d196
EZ
225/* Return the demangled name for a symbol based on the language for
226 that symbol. If no demangled name exists, return NULL. */
227#define SYMBOL_DEMANGLED_NAME(symbol) \
228 (symbol_demangled_name (&(symbol)->ginfo))
df8a16a1 229extern char *symbol_demangled_name (const struct general_symbol_info *symbol);
c906108c 230
de5ad195
DC
231/* Macro that returns a version of the name of a symbol that is
232 suitable for output. In C++ this is the "demangled" form of the
233 name if demangle is on and the "mangled" form of the name if
234 demangle is off. In other languages this is just the symbol name.
235 The result should never be NULL. Don't use this for internal
236 purposes (e.g. storing in a hashtable): it's only suitable for
237 output. */
238
239#define SYMBOL_PRINT_NAME(symbol) \
22abf04a 240 (demangle ? SYMBOL_NATURAL_NAME (symbol) : SYMBOL_LINKAGE_NAME (symbol))
c906108c 241
c906108c
SS
242/* Macro that tests a symbol for a match against a specified name string.
243 First test the unencoded name, then looks for and test a C++ encoded
244 name if it exists. Note that whitespace is ignored while attempting to
245 match a C++ encoded name, so that "foo::bar(int,long)" is the same as
246 "foo :: bar (int, long)".
247 Evaluates to zero if the match fails, or nonzero if it succeeds. */
248
8e437497
DC
249/* Macro that tests a symbol for a match against a specified name
250 string. It tests against SYMBOL_NATURAL_NAME, and it ignores
251 whitespace and trailing parentheses. (See strcmp_iw for details
252 about its behavior.) */
253
254#define SYMBOL_MATCHES_NATURAL_NAME(symbol, name) \
255 (strcmp_iw (SYMBOL_NATURAL_NAME (symbol), (name)) == 0)
256
4725b721
PH
257/* Macro that returns the name to be used when sorting and searching symbols.
258 In C++, Chill, and Java, we search for the demangled form of a name,
259 and so sort symbols accordingly. In Ada, however, we search by mangled
260 name. If there is no distinct demangled name, then SYMBOL_SEARCH_NAME
261 returns the same value (same pointer) as SYMBOL_LINKAGE_NAME. */
262#define SYMBOL_SEARCH_NAME(symbol) \
263 (symbol_search_name (&(symbol)->ginfo))
264extern char *symbol_search_name (const struct general_symbol_info *);
265
266/* Analogous to SYMBOL_MATCHES_NATURAL_NAME, but uses the search
267 name. */
268#define SYMBOL_MATCHES_SEARCH_NAME(symbol, name) \
269 (strcmp_iw (SYMBOL_SEARCH_NAME (symbol), (name)) == 0)
270
87193939
MC
271/* Classification types for a minimal symbol. These should be taken as
272 "advisory only", since if gdb can't easily figure out a
273 classification it simply selects mst_unknown. It may also have to
274 guess when it can't figure out which is a better match between two
275 types (mst_data versus mst_bss) for example. Since the minimal
276 symbol info is sometimes derived from the BFD library's view of a
277 file, we need to live with what information bfd supplies. */
278
279enum minimal_symbol_type
280{
281 mst_unknown = 0, /* Unknown type, the default */
282 mst_text, /* Generally executable instructions */
283 mst_data, /* Generally initialized data */
284 mst_bss, /* Generally uninitialized data */
285 mst_abs, /* Generally absolute (nonrelocatable) */
286 /* GDB uses mst_solib_trampoline for the start address of a shared
287 library trampoline entry. Breakpoints for shared library functions
288 are put there if the shared library is not yet loaded.
289 After the shared library is loaded, lookup_minimal_symbol will
290 prefer the minimal symbol from the shared library (usually
291 a mst_text symbol) over the mst_solib_trampoline symbol, and the
292 breakpoints will be moved to their true address in the shared
293 library via breakpoint_re_set. */
294 mst_solib_trampoline, /* Shared library trampoline code */
295 /* For the mst_file* types, the names are only guaranteed to be unique
296 within a given .o file. */
297 mst_file_text, /* Static version of mst_text */
298 mst_file_data, /* Static version of mst_data */
299 mst_file_bss /* Static version of mst_bss */
300};
301
c906108c
SS
302/* Define a simple structure used to hold some very basic information about
303 all defined global symbols (text, data, bss, abs, etc). The only required
304 information is the general_symbol_info.
305
306 In many cases, even if a file was compiled with no special options for
307 debugging at all, as long as was not stripped it will contain sufficient
308 information to build a useful minimal symbol table using this structure.
309 Even when a file contains enough debugging information to build a full
310 symbol table, these minimal symbols are still useful for quickly mapping
311 between names and addresses, and vice versa. They are also sometimes
312 used to figure out what full symbol table entries need to be read in. */
313
314struct minimal_symbol
17c5ed2c 315{
c906108c 316
17c5ed2c 317 /* The general symbol info required for all types of symbols.
c906108c 318
17c5ed2c
DC
319 The SYMBOL_VALUE_ADDRESS contains the address that this symbol
320 corresponds to. */
c906108c 321
17c5ed2c 322 struct general_symbol_info ginfo;
c906108c 323
f594e5e9
MC
324 /* Size of this symbol. end_psymtab in dbxread.c uses this
325 information to calculate the end of the partial symtab based on the
326 address of the last symbol plus the size of the last symbol. */
327
328 unsigned long size;
329
17c5ed2c
DC
330 /* Which source file is this symbol in? Only relevant for mst_file_*. */
331 char *filename;
c906108c 332
87193939 333 /* Classification type for this minimal symbol. */
17c5ed2c 334
87193939 335 ENUM_BITFIELD(minimal_symbol_type) type : 8;
17c5ed2c 336
b887350f
TT
337 /* Two flag bits provided for the use of the target. */
338 unsigned int target_flag_1 : 1;
339 unsigned int target_flag_2 : 1;
340
17c5ed2c
DC
341 /* Minimal symbols with the same hash key are kept on a linked
342 list. This is the link. */
343
344 struct minimal_symbol *hash_next;
345
346 /* Minimal symbols are stored in two different hash tables. This is
347 the `next' pointer for the demangled hash table. */
348
349 struct minimal_symbol *demangled_hash_next;
350};
c906108c 351
b887350f
TT
352#define MSYMBOL_TARGET_FLAG_1(msymbol) (msymbol)->target_flag_1
353#define MSYMBOL_TARGET_FLAG_2(msymbol) (msymbol)->target_flag_2
f594e5e9 354#define MSYMBOL_SIZE(msymbol) (msymbol)->size
c906108c 355#define MSYMBOL_TYPE(msymbol) (msymbol)->type
c906108c 356
c906108c 357\f
c5aa993b 358
c906108c
SS
359/* Represent one symbol name; a variable, constant, function or typedef. */
360
176620f1
EZ
361/* Different name domains for symbols. Looking up a symbol specifies a
362 domain and ignores symbol definitions in other name domains. */
c906108c 363
87193939 364typedef enum domain_enum_tag
17c5ed2c 365{
176620f1 366 /* UNDEF_DOMAIN is used when a domain has not been discovered or
17c5ed2c
DC
367 none of the following apply. This usually indicates an error either
368 in the symbol information or in gdb's handling of symbols. */
c906108c 369
176620f1 370 UNDEF_DOMAIN,
c906108c 371
176620f1 372 /* VAR_DOMAIN is the usual domain. In C, this contains variables,
17c5ed2c 373 function names, typedef names and enum type values. */
c906108c 374
176620f1 375 VAR_DOMAIN,
c906108c 376
176620f1 377 /* STRUCT_DOMAIN is used in C to hold struct, union and enum type names.
17c5ed2c 378 Thus, if `struct foo' is used in a C program, it produces a symbol named
176620f1 379 `foo' in the STRUCT_DOMAIN. */
c906108c 380
176620f1 381 STRUCT_DOMAIN,
c906108c 382
176620f1 383 /* LABEL_DOMAIN may be used for names of labels (for gotos);
17c5ed2c 384 currently it is not used and labels are not recorded at all. */
c906108c 385
176620f1 386 LABEL_DOMAIN,
c906108c 387
176620f1 388 /* Searching domains. These overlap with VAR_DOMAIN, providing
17c5ed2c 389 some granularity with the search_symbols function. */
c906108c 390
bd2e94ce
TT
391 /* Everything in VAR_DOMAIN minus FUNCTIONS_DOMAIN and
392 TYPES_DOMAIN. */
176620f1 393 VARIABLES_DOMAIN,
c906108c 394
17c5ed2c 395 /* All functions -- for some reason not methods, though. */
176620f1 396 FUNCTIONS_DOMAIN,
c906108c 397
17c5ed2c 398 /* All defined types */
bd2e94ce 399 TYPES_DOMAIN
17c5ed2c 400}
176620f1 401domain_enum;
c906108c
SS
402
403/* An address-class says where to find the value of a symbol. */
404
405enum address_class
17c5ed2c
DC
406{
407 /* Not used; catches errors */
c5aa993b 408
17c5ed2c 409 LOC_UNDEF,
c906108c 410
17c5ed2c 411 /* Value is constant int SYMBOL_VALUE, host byteorder */
c906108c 412
17c5ed2c 413 LOC_CONST,
c906108c 414
17c5ed2c 415 /* Value is at fixed address SYMBOL_VALUE_ADDRESS */
c906108c 416
17c5ed2c 417 LOC_STATIC,
c906108c 418
768a979c
UW
419 /* Value is in register. SYMBOL_VALUE is the register number
420 in the original debug format. SYMBOL_REGISTER_OPS holds a
421 function that can be called to transform this into the
422 actual register number this represents in a specific target
423 architecture (gdbarch).
2a2d4dc3
AS
424
425 For some symbol formats (stabs, for some compilers at least),
426 the compiler generates two symbols, an argument and a register.
427 In some cases we combine them to a single LOC_REGISTER in symbol
428 reading, but currently not for all cases (e.g. it's passed on the
429 stack and then loaded into a register). */
c906108c 430
17c5ed2c 431 LOC_REGISTER,
c906108c 432
17c5ed2c 433 /* It's an argument; the value is at SYMBOL_VALUE offset in arglist. */
c906108c 434
17c5ed2c 435 LOC_ARG,
c906108c 436
17c5ed2c 437 /* Value address is at SYMBOL_VALUE offset in arglist. */
c906108c 438
17c5ed2c 439 LOC_REF_ARG,
c906108c 440
2a2d4dc3 441 /* Value is in specified register. Just like LOC_REGISTER except the
17c5ed2c
DC
442 register holds the address of the argument instead of the argument
443 itself. This is currently used for the passing of structs and unions
444 on sparc and hppa. It is also used for call by reference where the
445 address is in a register, at least by mipsread.c. */
c906108c 446
17c5ed2c 447 LOC_REGPARM_ADDR,
c906108c 448
17c5ed2c 449 /* Value is a local variable at SYMBOL_VALUE offset in stack frame. */
c906108c 450
17c5ed2c 451 LOC_LOCAL,
c906108c 452
176620f1
EZ
453 /* Value not used; definition in SYMBOL_TYPE. Symbols in the domain
454 STRUCT_DOMAIN all have this class. */
c906108c 455
17c5ed2c 456 LOC_TYPEDEF,
c906108c 457
17c5ed2c 458 /* Value is address SYMBOL_VALUE_ADDRESS in the code */
c906108c 459
17c5ed2c 460 LOC_LABEL,
c906108c 461
17c5ed2c
DC
462 /* In a symbol table, value is SYMBOL_BLOCK_VALUE of a `struct block'.
463 In a partial symbol table, SYMBOL_VALUE_ADDRESS is the start address
464 of the block. Function names have this class. */
c906108c 465
17c5ed2c 466 LOC_BLOCK,
c906108c 467
17c5ed2c
DC
468 /* Value is a constant byte-sequence pointed to by SYMBOL_VALUE_BYTES, in
469 target byte order. */
c906108c 470
17c5ed2c 471 LOC_CONST_BYTES,
c906108c 472
17c5ed2c
DC
473 /* Value is at fixed address, but the address of the variable has
474 to be determined from the minimal symbol table whenever the
475 variable is referenced.
476 This happens if debugging information for a global symbol is
477 emitted and the corresponding minimal symbol is defined
478 in another object file or runtime common storage.
479 The linker might even remove the minimal symbol if the global
480 symbol is never referenced, in which case the symbol remains
de40b933
JK
481 unresolved.
482
483 GDB would normally find the symbol in the minimal symbol table if it will
484 not find it in the full symbol table. But a reference to an external
485 symbol in a local block shadowing other definition requires full symbol
486 without possibly having its address available for LOC_STATIC. Testcase
487 is provided as `gdb.dwarf2/dw2-unresolved.exp'. */
c906108c 488
17c5ed2c 489 LOC_UNRESOLVED,
c906108c 490
17c5ed2c
DC
491 /* The variable does not actually exist in the program.
492 The value is ignored. */
c906108c 493
17c5ed2c 494 LOC_OPTIMIZED_OUT,
c906108c 495
4c2df51b 496 /* The variable's address is computed by a set of location
768a979c 497 functions (see "struct symbol_computed_ops" below). */
4c2df51b 498 LOC_COMPUTED,
4c2df51b
DJ
499};
500
768a979c 501/* The methods needed to implement LOC_COMPUTED. These methods can
a67af2b9
AC
502 use the symbol's .aux_value for additional per-symbol information.
503
504 At present this is only used to implement location expressions. */
505
768a979c 506struct symbol_computed_ops
4c2df51b
DJ
507{
508
509 /* Return the value of the variable SYMBOL, relative to the stack
510 frame FRAME. If the variable has been optimized out, return
511 zero.
512
513 Iff `read_needs_frame (SYMBOL)' is zero, then FRAME may be zero. */
514
515 struct value *(*read_variable) (struct symbol * symbol,
516 struct frame_info * frame);
517
518 /* Return non-zero if we need a frame to find the value of the SYMBOL. */
519 int (*read_needs_frame) (struct symbol * symbol);
520
521 /* Write to STREAM a natural-language description of the location of
522 SYMBOL. */
523 int (*describe_location) (struct symbol * symbol, struct ui_file * stream);
524
525 /* Tracepoint support. Append bytecodes to the tracepoint agent
526 expression AX that push the address of the object SYMBOL. Set
527 VALUE appropriately. Note --- for objects in registers, this
528 needn't emit any code; as long as it sets VALUE properly, then
529 the caller will generate the right code in the process of
530 treating this as an lvalue or rvalue. */
531
505e835d
UW
532 void (*tracepoint_var_ref) (struct symbol *symbol, struct gdbarch *gdbarch,
533 struct agent_expr *ax, struct axs_value *value);
17c5ed2c 534};
c906108c 535
768a979c
UW
536/* Functions used with LOC_REGISTER and LOC_REGPARM_ADDR. */
537
538struct symbol_register_ops
539{
540 int (*register_number) (struct symbol *symbol, struct gdbarch *gdbarch);
541};
542
a7f19c79
MC
543/* This structure is space critical. See space comments at the top. */
544
c906108c 545struct symbol
17c5ed2c 546{
c906108c 547
17c5ed2c 548 /* The general symbol info required for all types of symbols. */
c906108c 549
17c5ed2c 550 struct general_symbol_info ginfo;
c906108c 551
17c5ed2c 552 /* Data type of value */
c906108c 553
17c5ed2c 554 struct type *type;
c906108c 555
cb1df416 556 /* The symbol table containing this symbol. This is the file
cd55e50f
JK
557 associated with LINE. It can be NULL during symbols read-in but it is
558 never NULL during normal operation. */
cb1df416
DJ
559 struct symtab *symtab;
560
176620f1 561 /* Domain code. */
c906108c 562
87193939 563 ENUM_BITFIELD(domain_enum_tag) domain : 6;
c906108c 564
17c5ed2c 565 /* Address class */
a67af2b9
AC
566 /* NOTE: cagney/2003-11-02: The fields "aclass" and "ops" contain
567 overlapping information. By creating a per-aclass ops vector, or
568 using the aclass as an index into an ops table, the aclass and
569 ops fields can be merged. The latter, for instance, would shave
570 32-bits from each symbol (relative to a symbol lookup, any table
571 index overhead would be in the noise). */
c906108c 572
87193939 573 ENUM_BITFIELD(address_class) aclass : 6;
c906108c 574
2a2d4dc3
AS
575 /* Whether this is an argument. */
576
577 unsigned is_argument : 1;
578
edb3359d
DJ
579 /* Whether this is an inlined function (class LOC_BLOCK only). */
580 unsigned is_inlined : 1;
581
582 /* Line number of this symbol's definition, except for inlined
583 functions. For an inlined function (class LOC_BLOCK and
584 SYMBOL_INLINED set) this is the line number of the function's call
585 site. Inlined function symbols are not definitions, and they are
586 never found by symbol table lookup.
587
588 FIXME: Should we really make the assumption that nobody will try
589 to debug files longer than 64K lines? What about machine
590 generated programs? */
c906108c 591
17c5ed2c 592 unsigned short line;
c906108c 593
a67af2b9
AC
594 /* Method's for symbol's of this class. */
595 /* NOTE: cagney/2003-11-02: See comment above attached to "aclass". */
596
768a979c
UW
597 union
598 {
599 /* Used with LOC_COMPUTED. */
600 const struct symbol_computed_ops *ops_computed;
601
602 /* Used with LOC_REGISTER and LOC_REGPARM_ADDR. */
603 const struct symbol_register_ops *ops_register;
604 } ops;
a67af2b9 605
10f4ecb8
UW
606 /* An arbitrary data pointer, allowing symbol readers to record
607 additional information on a per-symbol basis. Note that this data
608 must be allocated using the same obstack as the symbol itself. */
2a2d4dc3 609 /* So far it is only used by LOC_COMPUTED to
10f4ecb8
UW
610 find the location information. For a LOC_BLOCK symbol
611 for a function in a compilation unit compiled with DWARF 2
612 information, this is information used internally by the DWARF 2
613 code --- specifically, the location expression for the frame
614 base for this function. */
615 /* FIXME drow/2003-02-21: For the LOC_BLOCK case, it might be better
616 to add a magic symbol to the block containing this information,
617 or to have a generic debug info annotation slot for symbols. */
618
619 void *aux_value;
c906108c 620
17c5ed2c
DC
621 struct symbol *hash_next;
622};
c906108c
SS
623
624
176620f1 625#define SYMBOL_DOMAIN(symbol) (symbol)->domain
c906108c 626#define SYMBOL_CLASS(symbol) (symbol)->aclass
2a2d4dc3 627#define SYMBOL_IS_ARGUMENT(symbol) (symbol)->is_argument
edb3359d 628#define SYMBOL_INLINED(symbol) (symbol)->is_inlined
c906108c
SS
629#define SYMBOL_TYPE(symbol) (symbol)->type
630#define SYMBOL_LINE(symbol) (symbol)->line
cb1df416 631#define SYMBOL_SYMTAB(symbol) (symbol)->symtab
768a979c
UW
632#define SYMBOL_COMPUTED_OPS(symbol) (symbol)->ops.ops_computed
633#define SYMBOL_REGISTER_OPS(symbol) (symbol)->ops.ops_register
10f4ecb8 634#define SYMBOL_LOCATION_BATON(symbol) (symbol)->aux_value
c906108c 635\f
176620f1 636/* A partial_symbol records the name, domain, and address class of
c906108c
SS
637 symbols whose types we have not parsed yet. For functions, it also
638 contains their memory address, so we can find them from a PC value.
639 Each partial_symbol sits in a partial_symtab, all of which are chained
a960f249 640 on a partial symtab list and which points to the corresponding
c906108c
SS
641 normal symtab once the partial_symtab has been referenced. */
642
a7f19c79
MC
643/* This structure is space critical. See space comments at the top. */
644
c906108c 645struct partial_symbol
17c5ed2c 646{
c906108c 647
17c5ed2c 648 /* The general symbol info required for all types of symbols. */
c906108c 649
17c5ed2c 650 struct general_symbol_info ginfo;
c906108c 651
17c5ed2c 652 /* Name space code. */
c906108c 653
87193939 654 ENUM_BITFIELD(domain_enum_tag) domain : 6;
c906108c 655
17c5ed2c 656 /* Address class (for info_symbols) */
c906108c 657
87193939 658 ENUM_BITFIELD(address_class) aclass : 6;
c906108c 659
17c5ed2c 660};
c906108c 661
176620f1 662#define PSYMBOL_DOMAIN(psymbol) (psymbol)->domain
c906108c 663#define PSYMBOL_CLASS(psymbol) (psymbol)->aclass
c906108c 664\f
c5aa993b 665
c906108c
SS
666/* Each item represents a line-->pc (or the reverse) mapping. This is
667 somewhat more wasteful of space than one might wish, but since only
668 the files which are actually debugged are read in to core, we don't
669 waste much space. */
670
671struct linetable_entry
17c5ed2c
DC
672{
673 int line;
674 CORE_ADDR pc;
675};
c906108c
SS
676
677/* The order of entries in the linetable is significant. They should
678 be sorted by increasing values of the pc field. If there is more than
679 one entry for a given pc, then I'm not sure what should happen (and
680 I not sure whether we currently handle it the best way).
681
682 Example: a C for statement generally looks like this
683
c5aa993b
JM
684 10 0x100 - for the init/test part of a for stmt.
685 20 0x200
686 30 0x300
687 10 0x400 - for the increment part of a for stmt.
c906108c 688
e8717518
FF
689 If an entry has a line number of zero, it marks the start of a PC
690 range for which no line number information is available. It is
691 acceptable, though wasteful of table space, for such a range to be
692 zero length. */
c906108c
SS
693
694struct linetable
17c5ed2c
DC
695{
696 int nitems;
c906108c 697
17c5ed2c
DC
698 /* Actually NITEMS elements. If you don't like this use of the
699 `struct hack', you can shove it up your ANSI (seriously, if the
700 committee tells us how to do it, we can probably go along). */
701 struct linetable_entry item[1];
702};
c906108c 703
c906108c
SS
704/* How to relocate the symbols from each section in a symbol file.
705 Each struct contains an array of offsets.
706 The ordering and meaning of the offsets is file-type-dependent;
707 typically it is indexed by section numbers or symbol types or
708 something like that.
709
710 To give us flexibility in changing the internal representation
711 of these offsets, the ANOFFSET macro must be used to insert and
712 extract offset values in the struct. */
713
714struct section_offsets
17c5ed2c
DC
715{
716 CORE_ADDR offsets[1]; /* As many as needed. */
717};
c906108c 718
a4c8257b 719#define ANOFFSET(secoff, whichone) \
8e65ff28 720 ((whichone == -1) \
e2e0b3e5 721 ? (internal_error (__FILE__, __LINE__, _("Section index is uninitialized")), -1) \
8e65ff28 722 : secoff->offsets[whichone])
c906108c 723
b29c9944
JB
724/* The size of a section_offsets table for N sections. */
725#define SIZEOF_N_SECTION_OFFSETS(n) \
c906108c 726 (sizeof (struct section_offsets) \
b29c9944
JB
727 + sizeof (((struct section_offsets *) 0)->offsets) * ((n)-1))
728
a960f249 729/* Each source file or header is represented by a struct symtab.
c906108c
SS
730 These objects are chained through the `next' field. */
731
732struct symtab
17c5ed2c 733{
c906108c 734
17c5ed2c 735 /* Chain of all existing symtabs. */
c906108c 736
17c5ed2c 737 struct symtab *next;
c906108c 738
17c5ed2c
DC
739 /* List of all symbol scope blocks for this symtab. May be shared
740 between different symtabs (and normally is for all the symtabs
741 in a given compilation unit). */
c906108c 742
17c5ed2c 743 struct blockvector *blockvector;
c906108c 744
17c5ed2c
DC
745 /* Table mapping core addresses to line numbers for this file.
746 Can be NULL if none. Never shared between different symtabs. */
c906108c 747
17c5ed2c 748 struct linetable *linetable;
c906108c 749
17c5ed2c
DC
750 /* Section in objfile->section_offsets for the blockvector and
751 the linetable. Probably always SECT_OFF_TEXT. */
c906108c 752
17c5ed2c 753 int block_line_section;
c906108c 754
17c5ed2c
DC
755 /* If several symtabs share a blockvector, exactly one of them
756 should be designated the primary, so that the blockvector
757 is relocated exactly once by objfile_relocate. */
c906108c 758
17c5ed2c 759 int primary;
c906108c 760
17c5ed2c
DC
761 /* The macro table for this symtab. Like the blockvector, this
762 may be shared between different symtabs --- and normally is for
763 all the symtabs in a given compilation unit. */
764 struct macro_table *macro_table;
99d9066e 765
17c5ed2c 766 /* Name of this source file. */
c906108c 767
17c5ed2c 768 char *filename;
c906108c 769
17c5ed2c 770 /* Directory in which it was compiled, or NULL if we don't know. */
c906108c 771
17c5ed2c 772 char *dirname;
c906108c 773
17c5ed2c 774 /* This component says how to free the data we point to:
17c5ed2c
DC
775 free_nothing => do nothing; some other symtab will free
776 the data this one uses.
777 free_linetable => free just the linetable. FIXME: Is this redundant
778 with the primary field? */
c906108c 779
17c5ed2c
DC
780 enum free_code
781 {
f73634e5 782 free_nothing, free_linetable
17c5ed2c
DC
783 }
784 free_code;
c906108c 785
de4f826b
DC
786 /* A function to call to free space, if necessary. This is IN
787 ADDITION to the action indicated by free_code. */
c5aa993b 788
de4f826b 789 void (*free_func)(struct symtab *symtab);
c906108c 790
17c5ed2c 791 /* Total number of lines found in source file. */
c906108c 792
17c5ed2c 793 int nlines;
c906108c 794
17c5ed2c
DC
795 /* line_charpos[N] is the position of the (N-1)th line of the
796 source file. "position" means something we can lseek() to; it
797 is not guaranteed to be useful any other way. */
c906108c 798
17c5ed2c 799 int *line_charpos;
c906108c 800
17c5ed2c 801 /* Language of this source file. */
c906108c 802
17c5ed2c 803 enum language language;
c906108c 804
17c5ed2c
DC
805 /* String that identifies the format of the debugging information, such
806 as "stabs", "dwarf 1", "dwarf 2", "coff", etc. This is mostly useful
807 for automated testing of gdb but may also be information that is
808 useful to the user. */
c906108c 809
17c5ed2c 810 char *debugformat;
c906108c 811
303b6f5d 812 /* String of producer version information. May be zero. */
c906108c 813
303b6f5d 814 char *producer;
c906108c 815
17c5ed2c
DC
816 /* Full name of file as found by searching the source path.
817 NULL if not yet known. */
c906108c 818
17c5ed2c 819 char *fullname;
c906108c 820
17c5ed2c 821 /* Object file from which this symbol information was read. */
c906108c 822
17c5ed2c 823 struct objfile *objfile;
c906108c 824
17c5ed2c 825};
c906108c
SS
826
827#define BLOCKVECTOR(symtab) (symtab)->blockvector
828#define LINETABLE(symtab) (symtab)->linetable
6c95b8df 829#define SYMTAB_PSPACE(symtab) (symtab)->objfile->pspace
c906108c 830\f
c5aa993b 831
c906108c
SS
832/* Each source file that has not been fully read in is represented by
833 a partial_symtab. This contains the information on where in the
834 executable the debugging symbols for a specific file are, and a
835 list of names of global symbols which are located in this file.
836 They are all chained on partial symtab lists.
837
838 Even after the source file has been read into a symtab, the
839 partial_symtab remains around. They are allocated on an obstack,
8b92e4d5 840 objfile_obstack. FIXME, this is bad for dynamic linking or VxWorks-
c906108c
SS
841 style execution of a bunch of .o's. */
842
843struct partial_symtab
17c5ed2c 844{
c906108c 845
17c5ed2c 846 /* Chain of all existing partial symtabs. */
c906108c 847
17c5ed2c 848 struct partial_symtab *next;
c906108c 849
17c5ed2c 850 /* Name of the source file which this partial_symtab defines */
c906108c 851
17c5ed2c 852 char *filename;
c906108c 853
17c5ed2c 854 /* Full path of the source file. NULL if not known. */
58d370e0 855
17c5ed2c 856 char *fullname;
58d370e0 857
57c22c6c
BR
858 /* Directory in which it was compiled, or NULL if we don't know. */
859
860 char *dirname;
861
17c5ed2c 862 /* Information about the object file from which symbols should be read. */
c906108c 863
17c5ed2c 864 struct objfile *objfile;
c906108c 865
17c5ed2c 866 /* Set of relocation offsets to apply to each section. */
c906108c 867
17c5ed2c 868 struct section_offsets *section_offsets;
c906108c 869
17c5ed2c
DC
870 /* Range of text addresses covered by this file; texthigh is the
871 beginning of the next section. */
c906108c 872
17c5ed2c
DC
873 CORE_ADDR textlow;
874 CORE_ADDR texthigh;
c906108c 875
17c5ed2c
DC
876 /* Array of pointers to all of the partial_symtab's which this one
877 depends on. Since this array can only be set to previous or
878 the current (?) psymtab, this dependency tree is guaranteed not
879 to have any loops. "depends on" means that symbols must be read
880 for the dependencies before being read for this psymtab; this is
881 for type references in stabs, where if foo.c includes foo.h, declarations
882 in foo.h may use type numbers defined in foo.c. For other debugging
883 formats there may be no need to use dependencies. */
c906108c 884
17c5ed2c 885 struct partial_symtab **dependencies;
c906108c 886
17c5ed2c 887 int number_of_dependencies;
c906108c 888
17c5ed2c
DC
889 /* Global symbol list. This list will be sorted after readin to
890 improve access. Binary search will be the usual method of
891 finding a symbol within it. globals_offset is an integer offset
892 within global_psymbols[]. */
c906108c 893
17c5ed2c
DC
894 int globals_offset;
895 int n_global_syms;
c906108c 896
17c5ed2c
DC
897 /* Static symbol list. This list will *not* be sorted after readin;
898 to find a symbol in it, exhaustive search must be used. This is
899 reasonable because searches through this list will eventually
900 lead to either the read in of a files symbols for real (assumed
901 to take a *lot* of time; check) or an error (and we don't care
902 how long errors take). This is an offset and size within
903 static_psymbols[]. */
c906108c 904
17c5ed2c
DC
905 int statics_offset;
906 int n_static_syms;
c906108c 907
17c5ed2c
DC
908 /* Pointer to symtab eventually allocated for this source file, 0 if
909 !readin or if we haven't looked for the symtab after it was readin. */
c906108c 910
17c5ed2c 911 struct symtab *symtab;
c906108c 912
17c5ed2c
DC
913 /* Pointer to function which will read in the symtab corresponding to
914 this psymtab. */
c906108c 915
17c5ed2c 916 void (*read_symtab) (struct partial_symtab *);
c906108c 917
17c5ed2c
DC
918 /* Information that lets read_symtab() locate the part of the symbol table
919 that this psymtab corresponds to. This information is private to the
920 format-dependent symbol reading routines. For further detail examine
921 the various symbol reading modules. Should really be (void *) but is
922 (char *) as with other such gdb variables. (FIXME) */
c906108c 923
17c5ed2c 924 char *read_symtab_private;
c906108c 925
17c5ed2c 926 /* Non-zero if the symtab corresponding to this psymtab has been readin */
c906108c 927
17c5ed2c
DC
928 unsigned char readin;
929};
c906108c
SS
930
931/* A fast way to get from a psymtab to its symtab (after the first time). */
932#define PSYMTAB_TO_SYMTAB(pst) \
933 ((pst) -> symtab != NULL ? (pst) -> symtab : psymtab_to_symtab (pst))
c906108c 934\f
c5aa993b 935
c906108c 936/* The virtual function table is now an array of structures which have the
a960f249 937 form { int16 offset, delta; void *pfn; }.
c906108c
SS
938
939 In normal virtual function tables, OFFSET is unused.
940 DELTA is the amount which is added to the apparent object's base
941 address in order to point to the actual object to which the
942 virtual function should be applied.
943 PFN is a pointer to the virtual function.
944
945 Note that this macro is g++ specific (FIXME). */
c5aa993b 946
c906108c
SS
947#define VTBL_FNADDR_OFFSET 2
948
c906108c
SS
949/* External variables and functions for the objects described above. */
950
c906108c
SS
951/* See the comment in symfile.c about how current_objfile is used. */
952
953extern struct objfile *current_objfile;
954
955/* True if we are nested inside psymtab_to_symtab. */
956
957extern int currently_reading_symtab;
958
959/* From utils.c. */
960extern int demangle;
961extern int asm_demangle;
962
963/* symtab.c lookup functions */
964
7fc830e2
MK
965extern const char multiple_symbols_ask[];
966extern const char multiple_symbols_all[];
967extern const char multiple_symbols_cancel[];
717d2f5a
JB
968
969const char *multiple_symbols_select_mode (void);
970
5eeb2539
AR
971int symbol_matches_domain (enum language symbol_language,
972 domain_enum symbol_domain,
973 domain_enum domain);
974
c906108c
SS
975/* lookup a symbol table by source file name */
976
1f8cc6db 977extern struct symtab *lookup_symtab (const char *);
c906108c 978
6c9353d3 979/* lookup a symbol by name (optional block) in language. */
53c5240f
PA
980
981extern struct symbol *lookup_symbol_in_language (const char *,
982 const struct block *,
983 const domain_enum,
984 enum language,
2570f2b7 985 int *);
53c5240f
PA
986
987/* lookup a symbol by name (optional block, optional symtab)
988 in the current language */
c906108c 989
a14ed312 990extern struct symbol *lookup_symbol (const char *, const struct block *,
2570f2b7 991 const domain_enum, int *);
c906108c 992
5f9a71c3
DC
993/* A default version of lookup_symbol_nonlocal for use by languages
994 that can't think of anything better to do. */
995
996extern struct symbol *basic_lookup_symbol_nonlocal (const char *,
997 const char *,
998 const struct block *,
21b556f4 999 const domain_enum);
5f9a71c3
DC
1000
1001/* Some helper functions for languages that need to write their own
1002 lookup_symbol_nonlocal functions. */
1003
1004/* Lookup a symbol in the static block associated to BLOCK, if there
1005 is one; do nothing if BLOCK is NULL or a global block. */
1006
1007extern struct symbol *lookup_symbol_static (const char *name,
1008 const char *linkage_name,
1009 const struct block *block,
21b556f4 1010 const domain_enum domain);
5f9a71c3
DC
1011
1012/* Lookup a symbol in all files' global blocks (searching psymtabs if
1013 necessary). */
1014
1015extern struct symbol *lookup_symbol_global (const char *name,
1016 const char *linkage_name,
3a40aaa0 1017 const struct block *block,
21b556f4 1018 const domain_enum domain);
5f9a71c3
DC
1019
1020/* Lookup a symbol within the block BLOCK. This, unlike
1021 lookup_symbol_block, will set SYMTAB and BLOCK_FOUND correctly, and
1022 will fix up the symbol if necessary. */
1023
1024extern struct symbol *lookup_symbol_aux_block (const char *name,
1025 const char *linkage_name,
1026 const struct block *block,
21b556f4 1027 const domain_enum domain);
5f9a71c3 1028
b6429628
DC
1029/* Lookup a partial symbol. */
1030
1031extern struct partial_symbol *lookup_partial_symbol (struct partial_symtab *,
1032 const char *,
1033 const char *, int,
1034 domain_enum);
1035
c906108c 1036/* lookup a symbol by name, within a specified block */
c5aa993b 1037
a14ed312 1038extern struct symbol *lookup_block_symbol (const struct block *, const char *,
3121eff0 1039 const char *,
176620f1 1040 const domain_enum);
c906108c
SS
1041
1042/* lookup a [struct, union, enum] by name, within a specified block */
1043
a14ed312 1044extern struct type *lookup_struct (char *, struct block *);
c906108c 1045
a14ed312 1046extern struct type *lookup_union (char *, struct block *);
c906108c 1047
a14ed312 1048extern struct type *lookup_enum (char *, struct block *);
c906108c 1049
c906108c
SS
1050/* from blockframe.c: */
1051
1052/* lookup the function symbol corresponding to the address */
1053
a14ed312 1054extern struct symbol *find_pc_function (CORE_ADDR);
c906108c
SS
1055
1056/* lookup the function corresponding to the address and section */
1057
714835d5 1058extern struct symbol *find_pc_sect_function (CORE_ADDR, struct obj_section *);
c5aa993b 1059
c906108c
SS
1060/* lookup function from address, return name, start addr and end addr */
1061
570b8f7c
AC
1062extern int find_pc_partial_function (CORE_ADDR, char **, CORE_ADDR *,
1063 CORE_ADDR *);
c906108c 1064
a14ed312 1065extern void clear_pc_function_cache (void);
c906108c 1066
c906108c
SS
1067/* from symtab.c: */
1068
1069/* lookup partial symbol table by filename */
1070
1f8cc6db 1071extern struct partial_symtab *lookup_partial_symtab (const char *);
c906108c
SS
1072
1073/* lookup partial symbol table by address */
1074
a14ed312 1075extern struct partial_symtab *find_pc_psymtab (CORE_ADDR);
c906108c
SS
1076
1077/* lookup partial symbol table by address and section */
1078
714835d5
UW
1079extern struct partial_symtab *find_pc_sect_psymtab (CORE_ADDR,
1080 struct obj_section *);
c906108c
SS
1081
1082/* lookup full symbol table by address */
1083
a14ed312 1084extern struct symtab *find_pc_symtab (CORE_ADDR);
c906108c
SS
1085
1086/* lookup full symbol table by address and section */
1087
714835d5 1088extern struct symtab *find_pc_sect_symtab (CORE_ADDR, struct obj_section *);
c906108c
SS
1089
1090/* lookup partial symbol by address */
1091
a14ed312
KB
1092extern struct partial_symbol *find_pc_psymbol (struct partial_symtab *,
1093 CORE_ADDR);
c906108c
SS
1094
1095/* lookup partial symbol by address and section */
1096
a14ed312 1097extern struct partial_symbol *find_pc_sect_psymbol (struct partial_symtab *,
714835d5
UW
1098 CORE_ADDR,
1099 struct obj_section *);
c906108c 1100
a14ed312 1101extern int find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
c906108c 1102
a14ed312 1103extern void reread_symbols (void);
c906108c 1104
a14ed312 1105extern struct type *lookup_transparent_type (const char *);
b368761e 1106extern struct type *basic_lookup_transparent_type (const char *);
c906108c
SS
1107
1108
1109/* Macro for name of symbol to indicate a file compiled with gcc. */
1110#ifndef GCC_COMPILED_FLAG_SYMBOL
1111#define GCC_COMPILED_FLAG_SYMBOL "gcc_compiled."
1112#endif
1113
1114/* Macro for name of symbol to indicate a file compiled with gcc2. */
1115#ifndef GCC2_COMPILED_FLAG_SYMBOL
1116#define GCC2_COMPILED_FLAG_SYMBOL "gcc2_compiled."
1117#endif
1118
1119/* Functions for dealing with the minimal symbol table, really a misc
1120 address<->symbol mapping for things we don't have debug symbols for. */
1121
a14ed312
KB
1122extern void prim_record_minimal_symbol (const char *, CORE_ADDR,
1123 enum minimal_symbol_type,
1124 struct objfile *);
c906108c 1125
04a679b8
TT
1126extern struct minimal_symbol *prim_record_minimal_symbol_full
1127 (const char *, int, int, CORE_ADDR,
1128 enum minimal_symbol_type,
1129 int section, asection * bfd_section, struct objfile *);
1130
c906108c 1131extern struct minimal_symbol *prim_record_minimal_symbol_and_info
a14ed312
KB
1132 (const char *, CORE_ADDR,
1133 enum minimal_symbol_type,
b887350f 1134 int section, asection * bfd_section, struct objfile *);
c906108c 1135
a14ed312 1136extern unsigned int msymbol_hash_iw (const char *);
9227b5eb 1137
a14ed312 1138extern unsigned int msymbol_hash (const char *);
9227b5eb 1139
bccdca4a
UW
1140extern struct objfile * msymbol_objfile (struct minimal_symbol *sym);
1141
9227b5eb
JB
1142extern void
1143add_minsym_to_hash_table (struct minimal_symbol *sym,
1144 struct minimal_symbol **table);
1145
a14ed312
KB
1146extern struct minimal_symbol *lookup_minimal_symbol (const char *,
1147 const char *,
1148 struct objfile *);
c906108c 1149
a14ed312 1150extern struct minimal_symbol *lookup_minimal_symbol_text (const char *,
a14ed312 1151 struct objfile *);
c906108c 1152
a14ed312 1153struct minimal_symbol *lookup_minimal_symbol_solib_trampoline (const char *,
a14ed312
KB
1154 struct objfile
1155 *);
c906108c 1156
907fc202
UW
1157extern struct minimal_symbol *lookup_minimal_symbol_by_pc_name
1158 (CORE_ADDR, const char *, struct objfile *);
1159
a14ed312 1160extern struct minimal_symbol *lookup_minimal_symbol_by_pc (CORE_ADDR);
c906108c 1161
0d5392b8
TT
1162extern struct minimal_symbol *
1163 lookup_minimal_symbol_and_objfile (const char *,
1164 struct objfile **);
1165
714835d5
UW
1166extern struct minimal_symbol
1167 *lookup_minimal_symbol_by_pc_section (CORE_ADDR, struct obj_section *);
c906108c 1168
a14ed312
KB
1169extern struct minimal_symbol
1170 *lookup_solib_trampoline_symbol_by_pc (CORE_ADDR);
c906108c 1171
52f729a7 1172extern CORE_ADDR find_solib_trampoline_target (struct frame_info *, CORE_ADDR);
c906108c 1173
a14ed312 1174extern void init_minimal_symbol_collection (void);
c906108c 1175
56e290f4 1176extern struct cleanup *make_cleanup_discard_minimal_symbols (void);
c906108c 1177
a14ed312 1178extern void install_minimal_symbols (struct objfile *);
c906108c
SS
1179
1180/* Sort all the minimal symbols in OBJFILE. */
1181
a14ed312 1182extern void msymbols_sort (struct objfile *objfile);
c906108c
SS
1183
1184struct symtab_and_line
17c5ed2c 1185{
6c95b8df
PA
1186 /* The program space of this sal. */
1187 struct program_space *pspace;
1188
17c5ed2c 1189 struct symtab *symtab;
714835d5 1190 struct obj_section *section;
17c5ed2c
DC
1191 /* Line number. Line numbers start at 1 and proceed through symtab->nlines.
1192 0 is never a valid line number; it is used to indicate that line number
1193 information is not available. */
1194 int line;
1195
1196 CORE_ADDR pc;
1197 CORE_ADDR end;
ed0616c6
VP
1198 int explicit_pc;
1199 int explicit_line;
17c5ed2c 1200};
c906108c 1201
fe39c653 1202extern void init_sal (struct symtab_and_line *sal);
c906108c
SS
1203
1204struct symtabs_and_lines
17c5ed2c
DC
1205{
1206 struct symtab_and_line *sals;
1207 int nelts;
1208};
c5aa993b 1209\f
c906108c
SS
1210
1211
c906108c
SS
1212/* Some types and macros needed for exception catchpoints.
1213 Can't put these in target.h because symtab_and_line isn't
1214 known there. This file will be included by breakpoint.c,
1215 hppa-tdep.c, etc. */
1216
1217/* Enums for exception-handling support */
c5aa993b 1218enum exception_event_kind
17c5ed2c
DC
1219{
1220 EX_EVENT_THROW,
1221 EX_EVENT_CATCH
1222};
c906108c 1223
c906108c
SS
1224\f
1225
1226/* Given a pc value, return line number it is in. Second arg nonzero means
1227 if pc is on the boundary use the previous statement's line number. */
1228
a14ed312 1229extern struct symtab_and_line find_pc_line (CORE_ADDR, int);
c906108c
SS
1230
1231/* Same function, but specify a section as well as an address */
1232
714835d5
UW
1233extern struct symtab_and_line find_pc_sect_line (CORE_ADDR,
1234 struct obj_section *, int);
c906108c 1235
c906108c
SS
1236/* Given a symtab and line number, return the pc there. */
1237
a14ed312 1238extern int find_line_pc (struct symtab *, int, CORE_ADDR *);
c906108c 1239
570b8f7c
AC
1240extern int find_line_pc_range (struct symtab_and_line, CORE_ADDR *,
1241 CORE_ADDR *);
c906108c 1242
a14ed312 1243extern void resolve_sal_pc (struct symtab_and_line *);
c906108c
SS
1244
1245/* Given a string, return the line specified by it. For commands like "list"
1246 and "breakpoint". */
1247
a14ed312 1248extern struct symtabs_and_lines decode_line_spec (char *, int);
c906108c 1249
a14ed312 1250extern struct symtabs_and_lines decode_line_spec_1 (char *, int);
c906108c 1251
c906108c
SS
1252/* Symmisc.c */
1253
a14ed312 1254void maintenance_print_symbols (char *, int);
c906108c 1255
a14ed312 1256void maintenance_print_psymbols (char *, int);
c906108c 1257
a14ed312 1258void maintenance_print_msymbols (char *, int);
c906108c 1259
a14ed312 1260void maintenance_print_objfiles (char *, int);
c906108c 1261
5e7b2f39 1262void maintenance_info_symtabs (char *, int);
44ea7b70 1263
5e7b2f39 1264void maintenance_info_psymtabs (char *, int);
44ea7b70 1265
a14ed312 1266void maintenance_check_symtabs (char *, int);
c906108c
SS
1267
1268/* maint.c */
1269
a14ed312 1270void maintenance_print_statistics (char *, int);
c906108c 1271
a14ed312 1272extern void free_symtab (struct symtab *);
c906108c
SS
1273
1274/* Symbol-reading stuff in symfile.c and solib.c. */
1275
a14ed312 1276extern struct symtab *psymtab_to_symtab (struct partial_symtab *);
c906108c 1277
a14ed312 1278extern void clear_solib (void);
c906108c 1279
c906108c
SS
1280/* source.c */
1281
a14ed312 1282extern int identify_source_line (struct symtab *, int, int, CORE_ADDR);
c906108c 1283
a14ed312 1284extern void print_source_lines (struct symtab *, int, int, int);
c906108c 1285
a14ed312 1286extern void forget_cached_source_info (void);
c906108c 1287
a14ed312 1288extern void select_source_symtab (struct symtab *);
c906108c 1289
41d27058 1290extern char **default_make_symbol_completion_list (char *, char *);
a14ed312 1291extern char **make_symbol_completion_list (char *, char *);
d8906c6f
TJB
1292extern char **make_symbol_completion_list_fn (struct cmd_list_element *,
1293 char *, char *);
c906108c 1294
c94fdfd0
EZ
1295extern char **make_file_symbol_completion_list (char *, char *, char *);
1296
c94fdfd0
EZ
1297extern char **make_source_files_completion_list (char *, char *);
1298
c906108c
SS
1299/* symtab.c */
1300
714835d5 1301int matching_obj_sections (struct obj_section *, struct obj_section *);
94277a38 1302
a14ed312 1303extern struct partial_symtab *find_main_psymtab (void);
c906108c 1304
50641945
FN
1305extern struct symtab *find_line_symtab (struct symtab *, int, int *, int *);
1306
bccdca4a 1307extern CORE_ADDR find_function_start_pc (struct gdbarch *,
714835d5 1308 CORE_ADDR, struct obj_section *);
bccdca4a 1309
17c5ed2c
DC
1310extern struct symtab_and_line find_function_start_sal (struct symbol *sym,
1311 int);
50641945 1312
c906108c
SS
1313/* symfile.c */
1314
a14ed312 1315extern void clear_symtab_users (void);
c906108c 1316
a14ed312 1317extern enum language deduce_language_from_filename (char *);
c906108c
SS
1318
1319/* symtab.c */
1320
d80b854b
UW
1321extern int in_prologue (struct gdbarch *gdbarch,
1322 CORE_ADDR pc, CORE_ADDR func_start);
c906108c 1323
d80b854b
UW
1324extern CORE_ADDR skip_prologue_using_sal (struct gdbarch *gdbarch,
1325 CORE_ADDR func_addr);
634aa483 1326
a14ed312
KB
1327extern struct symbol *fixup_symbol_section (struct symbol *,
1328 struct objfile *);
c906108c 1329
7a78d0ee
KB
1330extern struct partial_symbol *fixup_psymbol_section (struct partial_symbol
1331 *psym,
1332 struct objfile *objfile);
1333
c906108c
SS
1334/* Symbol searching */
1335
1336/* When using search_symbols, a list of the following structs is returned.
7e73cedf 1337 Callers must free the search list using free_search_symbols! */
c906108c 1338struct symbol_search
17c5ed2c
DC
1339{
1340 /* The block in which the match was found. Could be, for example,
1341 STATIC_BLOCK or GLOBAL_BLOCK. */
1342 int block;
c906108c 1343
17c5ed2c 1344 /* Information describing what was found.
c906108c 1345
17c5ed2c
DC
1346 If symtab abd symbol are NOT NULL, then information was found
1347 for this match. */
1348 struct symtab *symtab;
1349 struct symbol *symbol;
c906108c 1350
17c5ed2c
DC
1351 /* If msymbol is non-null, then a match was made on something for
1352 which only minimal_symbols exist. */
1353 struct minimal_symbol *msymbol;
c906108c 1354
17c5ed2c
DC
1355 /* A link to the next match, or NULL for the end. */
1356 struct symbol_search *next;
1357};
c906108c 1358
176620f1 1359extern void search_symbols (char *, domain_enum, int, char **,
a14ed312
KB
1360 struct symbol_search **);
1361extern void free_search_symbols (struct symbol_search *);
17c5ed2c
DC
1362extern struct cleanup *make_cleanup_free_search_symbols (struct symbol_search
1363 *);
c906108c 1364
51cc5b07
AC
1365/* The name of the ``main'' function.
1366 FIXME: cagney/2001-03-20: Can't make main_name() const since some
1367 of the calling code currently assumes that the string isn't
1368 const. */
1369extern void set_main_name (const char *name);
17c5ed2c 1370extern /*const */ char *main_name (void);
51cc5b07 1371
3a40aaa0
UW
1372/* Check global symbols in objfile. */
1373struct symbol *lookup_global_symbol_from_objfile (const struct objfile *objfile,
1374 const char *name,
1375 const char *linkage_name,
21b556f4 1376 const domain_enum domain);
3a40aaa0 1377
ed0616c6
VP
1378extern struct symtabs_and_lines
1379expand_line_sal (struct symtab_and_line sal);
3a40aaa0 1380
c906108c 1381#endif /* !defined(SYMTAB_H) */
This page took 1.002332 seconds and 4 git commands to generate.