* linux-low.c (linux_remove_process): Add `detaching' parameter.
[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,
0fb0cc75 4 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009
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. */
980cae7a
DC
195#define SYMBOL_SET_NAMES(symbol,linkage_name,len,objfile) \
196 symbol_set_names (&(symbol)->ginfo, linkage_name, len, objfile)
2de7ced7 197extern void symbol_set_names (struct general_symbol_info *symbol,
980cae7a 198 const char *linkage_name, int len,
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
DJ
556 /* The symbol table containing this symbol. This is the file
557 associated with LINE. */
558 struct symtab *symtab;
559
176620f1 560 /* Domain code. */
c906108c 561
87193939 562 ENUM_BITFIELD(domain_enum_tag) domain : 6;
c906108c 563
17c5ed2c 564 /* Address class */
a67af2b9
AC
565 /* NOTE: cagney/2003-11-02: The fields "aclass" and "ops" contain
566 overlapping information. By creating a per-aclass ops vector, or
567 using the aclass as an index into an ops table, the aclass and
568 ops fields can be merged. The latter, for instance, would shave
569 32-bits from each symbol (relative to a symbol lookup, any table
570 index overhead would be in the noise). */
c906108c 571
87193939 572 ENUM_BITFIELD(address_class) aclass : 6;
c906108c 573
2a2d4dc3
AS
574 /* Whether this is an argument. */
575
576 unsigned is_argument : 1;
577
edb3359d
DJ
578 /* Whether this is an inlined function (class LOC_BLOCK only). */
579 unsigned is_inlined : 1;
580
581 /* Line number of this symbol's definition, except for inlined
582 functions. For an inlined function (class LOC_BLOCK and
583 SYMBOL_INLINED set) this is the line number of the function's call
584 site. Inlined function symbols are not definitions, and they are
585 never found by symbol table lookup.
586
587 FIXME: Should we really make the assumption that nobody will try
588 to debug files longer than 64K lines? What about machine
589 generated programs? */
c906108c 590
17c5ed2c 591 unsigned short line;
c906108c 592
a67af2b9
AC
593 /* Method's for symbol's of this class. */
594 /* NOTE: cagney/2003-11-02: See comment above attached to "aclass". */
595
768a979c
UW
596 union
597 {
598 /* Used with LOC_COMPUTED. */
599 const struct symbol_computed_ops *ops_computed;
600
601 /* Used with LOC_REGISTER and LOC_REGPARM_ADDR. */
602 const struct symbol_register_ops *ops_register;
603 } ops;
a67af2b9 604
10f4ecb8
UW
605 /* An arbitrary data pointer, allowing symbol readers to record
606 additional information on a per-symbol basis. Note that this data
607 must be allocated using the same obstack as the symbol itself. */
2a2d4dc3 608 /* So far it is only used by LOC_COMPUTED to
10f4ecb8
UW
609 find the location information. For a LOC_BLOCK symbol
610 for a function in a compilation unit compiled with DWARF 2
611 information, this is information used internally by the DWARF 2
612 code --- specifically, the location expression for the frame
613 base for this function. */
614 /* FIXME drow/2003-02-21: For the LOC_BLOCK case, it might be better
615 to add a magic symbol to the block containing this information,
616 or to have a generic debug info annotation slot for symbols. */
617
618 void *aux_value;
c906108c 619
17c5ed2c
DC
620 struct symbol *hash_next;
621};
c906108c
SS
622
623
176620f1 624#define SYMBOL_DOMAIN(symbol) (symbol)->domain
c906108c 625#define SYMBOL_CLASS(symbol) (symbol)->aclass
2a2d4dc3 626#define SYMBOL_IS_ARGUMENT(symbol) (symbol)->is_argument
edb3359d 627#define SYMBOL_INLINED(symbol) (symbol)->is_inlined
c906108c
SS
628#define SYMBOL_TYPE(symbol) (symbol)->type
629#define SYMBOL_LINE(symbol) (symbol)->line
cb1df416 630#define SYMBOL_SYMTAB(symbol) (symbol)->symtab
768a979c
UW
631#define SYMBOL_COMPUTED_OPS(symbol) (symbol)->ops.ops_computed
632#define SYMBOL_REGISTER_OPS(symbol) (symbol)->ops.ops_register
10f4ecb8 633#define SYMBOL_LOCATION_BATON(symbol) (symbol)->aux_value
c906108c 634\f
176620f1 635/* A partial_symbol records the name, domain, and address class of
c906108c
SS
636 symbols whose types we have not parsed yet. For functions, it also
637 contains their memory address, so we can find them from a PC value.
638 Each partial_symbol sits in a partial_symtab, all of which are chained
a960f249 639 on a partial symtab list and which points to the corresponding
c906108c
SS
640 normal symtab once the partial_symtab has been referenced. */
641
a7f19c79
MC
642/* This structure is space critical. See space comments at the top. */
643
c906108c 644struct partial_symbol
17c5ed2c 645{
c906108c 646
17c5ed2c 647 /* The general symbol info required for all types of symbols. */
c906108c 648
17c5ed2c 649 struct general_symbol_info ginfo;
c906108c 650
17c5ed2c 651 /* Name space code. */
c906108c 652
87193939 653 ENUM_BITFIELD(domain_enum_tag) domain : 6;
c906108c 654
17c5ed2c 655 /* Address class (for info_symbols) */
c906108c 656
87193939 657 ENUM_BITFIELD(address_class) aclass : 6;
c906108c 658
17c5ed2c 659};
c906108c 660
176620f1 661#define PSYMBOL_DOMAIN(psymbol) (psymbol)->domain
c906108c 662#define PSYMBOL_CLASS(psymbol) (psymbol)->aclass
c906108c 663\f
c5aa993b 664
c906108c
SS
665/* Each item represents a line-->pc (or the reverse) mapping. This is
666 somewhat more wasteful of space than one might wish, but since only
667 the files which are actually debugged are read in to core, we don't
668 waste much space. */
669
670struct linetable_entry
17c5ed2c
DC
671{
672 int line;
673 CORE_ADDR pc;
674};
c906108c
SS
675
676/* The order of entries in the linetable is significant. They should
677 be sorted by increasing values of the pc field. If there is more than
678 one entry for a given pc, then I'm not sure what should happen (and
679 I not sure whether we currently handle it the best way).
680
681 Example: a C for statement generally looks like this
682
c5aa993b
JM
683 10 0x100 - for the init/test part of a for stmt.
684 20 0x200
685 30 0x300
686 10 0x400 - for the increment part of a for stmt.
c906108c 687
e8717518
FF
688 If an entry has a line number of zero, it marks the start of a PC
689 range for which no line number information is available. It is
690 acceptable, though wasteful of table space, for such a range to be
691 zero length. */
c906108c
SS
692
693struct linetable
17c5ed2c
DC
694{
695 int nitems;
c906108c 696
17c5ed2c
DC
697 /* Actually NITEMS elements. If you don't like this use of the
698 `struct hack', you can shove it up your ANSI (seriously, if the
699 committee tells us how to do it, we can probably go along). */
700 struct linetable_entry item[1];
701};
c906108c 702
c906108c
SS
703/* How to relocate the symbols from each section in a symbol file.
704 Each struct contains an array of offsets.
705 The ordering and meaning of the offsets is file-type-dependent;
706 typically it is indexed by section numbers or symbol types or
707 something like that.
708
709 To give us flexibility in changing the internal representation
710 of these offsets, the ANOFFSET macro must be used to insert and
711 extract offset values in the struct. */
712
713struct section_offsets
17c5ed2c
DC
714{
715 CORE_ADDR offsets[1]; /* As many as needed. */
716};
c906108c 717
a4c8257b 718#define ANOFFSET(secoff, whichone) \
8e65ff28 719 ((whichone == -1) \
e2e0b3e5 720 ? (internal_error (__FILE__, __LINE__, _("Section index is uninitialized")), -1) \
8e65ff28 721 : secoff->offsets[whichone])
c906108c 722
b29c9944
JB
723/* The size of a section_offsets table for N sections. */
724#define SIZEOF_N_SECTION_OFFSETS(n) \
c906108c 725 (sizeof (struct section_offsets) \
b29c9944
JB
726 + sizeof (((struct section_offsets *) 0)->offsets) * ((n)-1))
727
a960f249 728/* Each source file or header is represented by a struct symtab.
c906108c
SS
729 These objects are chained through the `next' field. */
730
731struct symtab
17c5ed2c 732{
c906108c 733
17c5ed2c 734 /* Chain of all existing symtabs. */
c906108c 735
17c5ed2c 736 struct symtab *next;
c906108c 737
17c5ed2c
DC
738 /* List of all symbol scope blocks for this symtab. May be shared
739 between different symtabs (and normally is for all the symtabs
740 in a given compilation unit). */
c906108c 741
17c5ed2c 742 struct blockvector *blockvector;
c906108c 743
17c5ed2c
DC
744 /* Table mapping core addresses to line numbers for this file.
745 Can be NULL if none. Never shared between different symtabs. */
c906108c 746
17c5ed2c 747 struct linetable *linetable;
c906108c 748
17c5ed2c
DC
749 /* Section in objfile->section_offsets for the blockvector and
750 the linetable. Probably always SECT_OFF_TEXT. */
c906108c 751
17c5ed2c 752 int block_line_section;
c906108c 753
17c5ed2c
DC
754 /* If several symtabs share a blockvector, exactly one of them
755 should be designated the primary, so that the blockvector
756 is relocated exactly once by objfile_relocate. */
c906108c 757
17c5ed2c 758 int primary;
c906108c 759
17c5ed2c
DC
760 /* The macro table for this symtab. Like the blockvector, this
761 may be shared between different symtabs --- and normally is for
762 all the symtabs in a given compilation unit. */
763 struct macro_table *macro_table;
99d9066e 764
17c5ed2c 765 /* Name of this source file. */
c906108c 766
17c5ed2c 767 char *filename;
c906108c 768
17c5ed2c 769 /* Directory in which it was compiled, or NULL if we don't know. */
c906108c 770
17c5ed2c 771 char *dirname;
c906108c 772
17c5ed2c 773 /* This component says how to free the data we point to:
17c5ed2c
DC
774 free_nothing => do nothing; some other symtab will free
775 the data this one uses.
776 free_linetable => free just the linetable. FIXME: Is this redundant
777 with the primary field? */
c906108c 778
17c5ed2c
DC
779 enum free_code
780 {
f73634e5 781 free_nothing, free_linetable
17c5ed2c
DC
782 }
783 free_code;
c906108c 784
de4f826b
DC
785 /* A function to call to free space, if necessary. This is IN
786 ADDITION to the action indicated by free_code. */
c5aa993b 787
de4f826b 788 void (*free_func)(struct symtab *symtab);
c906108c 789
17c5ed2c 790 /* Total number of lines found in source file. */
c906108c 791
17c5ed2c 792 int nlines;
c906108c 793
17c5ed2c
DC
794 /* line_charpos[N] is the position of the (N-1)th line of the
795 source file. "position" means something we can lseek() to; it
796 is not guaranteed to be useful any other way. */
c906108c 797
17c5ed2c 798 int *line_charpos;
c906108c 799
17c5ed2c 800 /* Language of this source file. */
c906108c 801
17c5ed2c 802 enum language language;
c906108c 803
17c5ed2c
DC
804 /* String that identifies the format of the debugging information, such
805 as "stabs", "dwarf 1", "dwarf 2", "coff", etc. This is mostly useful
806 for automated testing of gdb but may also be information that is
807 useful to the user. */
c906108c 808
17c5ed2c 809 char *debugformat;
c906108c 810
303b6f5d 811 /* String of producer version information. May be zero. */
c906108c 812
303b6f5d 813 char *producer;
c906108c 814
17c5ed2c
DC
815 /* Full name of file as found by searching the source path.
816 NULL if not yet known. */
c906108c 817
17c5ed2c 818 char *fullname;
c906108c 819
17c5ed2c 820 /* Object file from which this symbol information was read. */
c906108c 821
17c5ed2c 822 struct objfile *objfile;
c906108c 823
17c5ed2c 824};
c906108c
SS
825
826#define BLOCKVECTOR(symtab) (symtab)->blockvector
827#define LINETABLE(symtab) (symtab)->linetable
6c95b8df 828#define SYMTAB_PSPACE(symtab) (symtab)->objfile->pspace
c906108c 829\f
c5aa993b 830
c906108c
SS
831/* Each source file that has not been fully read in is represented by
832 a partial_symtab. This contains the information on where in the
833 executable the debugging symbols for a specific file are, and a
834 list of names of global symbols which are located in this file.
835 They are all chained on partial symtab lists.
836
837 Even after the source file has been read into a symtab, the
838 partial_symtab remains around. They are allocated on an obstack,
8b92e4d5 839 objfile_obstack. FIXME, this is bad for dynamic linking or VxWorks-
c906108c
SS
840 style execution of a bunch of .o's. */
841
842struct partial_symtab
17c5ed2c 843{
c906108c 844
17c5ed2c 845 /* Chain of all existing partial symtabs. */
c906108c 846
17c5ed2c 847 struct partial_symtab *next;
c906108c 848
17c5ed2c 849 /* Name of the source file which this partial_symtab defines */
c906108c 850
17c5ed2c 851 char *filename;
c906108c 852
17c5ed2c 853 /* Full path of the source file. NULL if not known. */
58d370e0 854
17c5ed2c 855 char *fullname;
58d370e0 856
57c22c6c
BR
857 /* Directory in which it was compiled, or NULL if we don't know. */
858
859 char *dirname;
860
17c5ed2c 861 /* Information about the object file from which symbols should be read. */
c906108c 862
17c5ed2c 863 struct objfile *objfile;
c906108c 864
17c5ed2c 865 /* Set of relocation offsets to apply to each section. */
c906108c 866
17c5ed2c 867 struct section_offsets *section_offsets;
c906108c 868
17c5ed2c
DC
869 /* Range of text addresses covered by this file; texthigh is the
870 beginning of the next section. */
c906108c 871
17c5ed2c
DC
872 CORE_ADDR textlow;
873 CORE_ADDR texthigh;
c906108c 874
17c5ed2c
DC
875 /* Array of pointers to all of the partial_symtab's which this one
876 depends on. Since this array can only be set to previous or
877 the current (?) psymtab, this dependency tree is guaranteed not
878 to have any loops. "depends on" means that symbols must be read
879 for the dependencies before being read for this psymtab; this is
880 for type references in stabs, where if foo.c includes foo.h, declarations
881 in foo.h may use type numbers defined in foo.c. For other debugging
882 formats there may be no need to use dependencies. */
c906108c 883
17c5ed2c 884 struct partial_symtab **dependencies;
c906108c 885
17c5ed2c 886 int number_of_dependencies;
c906108c 887
17c5ed2c
DC
888 /* Global symbol list. This list will be sorted after readin to
889 improve access. Binary search will be the usual method of
890 finding a symbol within it. globals_offset is an integer offset
891 within global_psymbols[]. */
c906108c 892
17c5ed2c
DC
893 int globals_offset;
894 int n_global_syms;
c906108c 895
17c5ed2c
DC
896 /* Static symbol list. This list will *not* be sorted after readin;
897 to find a symbol in it, exhaustive search must be used. This is
898 reasonable because searches through this list will eventually
899 lead to either the read in of a files symbols for real (assumed
900 to take a *lot* of time; check) or an error (and we don't care
901 how long errors take). This is an offset and size within
902 static_psymbols[]. */
c906108c 903
17c5ed2c
DC
904 int statics_offset;
905 int n_static_syms;
c906108c 906
17c5ed2c
DC
907 /* Pointer to symtab eventually allocated for this source file, 0 if
908 !readin or if we haven't looked for the symtab after it was readin. */
c906108c 909
17c5ed2c 910 struct symtab *symtab;
c906108c 911
17c5ed2c
DC
912 /* Pointer to function which will read in the symtab corresponding to
913 this psymtab. */
c906108c 914
17c5ed2c 915 void (*read_symtab) (struct partial_symtab *);
c906108c 916
17c5ed2c
DC
917 /* Information that lets read_symtab() locate the part of the symbol table
918 that this psymtab corresponds to. This information is private to the
919 format-dependent symbol reading routines. For further detail examine
920 the various symbol reading modules. Should really be (void *) but is
921 (char *) as with other such gdb variables. (FIXME) */
c906108c 922
17c5ed2c 923 char *read_symtab_private;
c906108c 924
17c5ed2c 925 /* Non-zero if the symtab corresponding to this psymtab has been readin */
c906108c 926
17c5ed2c
DC
927 unsigned char readin;
928};
c906108c
SS
929
930/* A fast way to get from a psymtab to its symtab (after the first time). */
931#define PSYMTAB_TO_SYMTAB(pst) \
932 ((pst) -> symtab != NULL ? (pst) -> symtab : psymtab_to_symtab (pst))
c906108c 933\f
c5aa993b 934
c906108c 935/* The virtual function table is now an array of structures which have the
a960f249 936 form { int16 offset, delta; void *pfn; }.
c906108c
SS
937
938 In normal virtual function tables, OFFSET is unused.
939 DELTA is the amount which is added to the apparent object's base
940 address in order to point to the actual object to which the
941 virtual function should be applied.
942 PFN is a pointer to the virtual function.
943
944 Note that this macro is g++ specific (FIXME). */
c5aa993b 945
c906108c
SS
946#define VTBL_FNADDR_OFFSET 2
947
c906108c
SS
948/* External variables and functions for the objects described above. */
949
c906108c
SS
950/* See the comment in symfile.c about how current_objfile is used. */
951
952extern struct objfile *current_objfile;
953
954/* True if we are nested inside psymtab_to_symtab. */
955
956extern int currently_reading_symtab;
957
958/* From utils.c. */
959extern int demangle;
960extern int asm_demangle;
961
962/* symtab.c lookup functions */
963
7fc830e2
MK
964extern const char multiple_symbols_ask[];
965extern const char multiple_symbols_all[];
966extern const char multiple_symbols_cancel[];
717d2f5a
JB
967
968const char *multiple_symbols_select_mode (void);
969
5eeb2539
AR
970int symbol_matches_domain (enum language symbol_language,
971 domain_enum symbol_domain,
972 domain_enum domain);
973
c906108c
SS
974/* lookup a symbol table by source file name */
975
1f8cc6db 976extern struct symtab *lookup_symtab (const char *);
c906108c 977
6c9353d3 978/* lookup a symbol by name (optional block) in language. */
53c5240f
PA
979
980extern struct symbol *lookup_symbol_in_language (const char *,
981 const struct block *,
982 const domain_enum,
983 enum language,
2570f2b7 984 int *);
53c5240f
PA
985
986/* lookup a symbol by name (optional block, optional symtab)
987 in the current language */
c906108c 988
a14ed312 989extern struct symbol *lookup_symbol (const char *, const struct block *,
2570f2b7 990 const domain_enum, int *);
c906108c 991
5f9a71c3
DC
992/* A default version of lookup_symbol_nonlocal for use by languages
993 that can't think of anything better to do. */
994
995extern struct symbol *basic_lookup_symbol_nonlocal (const char *,
996 const char *,
997 const struct block *,
21b556f4 998 const domain_enum);
5f9a71c3
DC
999
1000/* Some helper functions for languages that need to write their own
1001 lookup_symbol_nonlocal functions. */
1002
1003/* Lookup a symbol in the static block associated to BLOCK, if there
1004 is one; do nothing if BLOCK is NULL or a global block. */
1005
1006extern struct symbol *lookup_symbol_static (const char *name,
1007 const char *linkage_name,
1008 const struct block *block,
21b556f4 1009 const domain_enum domain);
5f9a71c3
DC
1010
1011/* Lookup a symbol in all files' global blocks (searching psymtabs if
1012 necessary). */
1013
1014extern struct symbol *lookup_symbol_global (const char *name,
1015 const char *linkage_name,
3a40aaa0 1016 const struct block *block,
21b556f4 1017 const domain_enum domain);
5f9a71c3
DC
1018
1019/* Lookup a symbol within the block BLOCK. This, unlike
1020 lookup_symbol_block, will set SYMTAB and BLOCK_FOUND correctly, and
1021 will fix up the symbol if necessary. */
1022
1023extern struct symbol *lookup_symbol_aux_block (const char *name,
1024 const char *linkage_name,
1025 const struct block *block,
21b556f4 1026 const domain_enum domain);
5f9a71c3 1027
b6429628
DC
1028/* Lookup a partial symbol. */
1029
1030extern struct partial_symbol *lookup_partial_symbol (struct partial_symtab *,
1031 const char *,
1032 const char *, int,
1033 domain_enum);
1034
c906108c 1035/* lookup a symbol by name, within a specified block */
c5aa993b 1036
a14ed312 1037extern struct symbol *lookup_block_symbol (const struct block *, const char *,
3121eff0 1038 const char *,
176620f1 1039 const domain_enum);
c906108c
SS
1040
1041/* lookup a [struct, union, enum] by name, within a specified block */
1042
a14ed312 1043extern struct type *lookup_struct (char *, struct block *);
c906108c 1044
a14ed312 1045extern struct type *lookup_union (char *, struct block *);
c906108c 1046
a14ed312 1047extern struct type *lookup_enum (char *, struct block *);
c906108c 1048
c906108c
SS
1049/* from blockframe.c: */
1050
1051/* lookup the function symbol corresponding to the address */
1052
a14ed312 1053extern struct symbol *find_pc_function (CORE_ADDR);
c906108c
SS
1054
1055/* lookup the function corresponding to the address and section */
1056
714835d5 1057extern struct symbol *find_pc_sect_function (CORE_ADDR, struct obj_section *);
c5aa993b 1058
c906108c
SS
1059/* lookup function from address, return name, start addr and end addr */
1060
570b8f7c
AC
1061extern int find_pc_partial_function (CORE_ADDR, char **, CORE_ADDR *,
1062 CORE_ADDR *);
c906108c 1063
a14ed312 1064extern void clear_pc_function_cache (void);
c906108c 1065
c906108c
SS
1066/* from symtab.c: */
1067
1068/* lookup partial symbol table by filename */
1069
1f8cc6db 1070extern struct partial_symtab *lookup_partial_symtab (const char *);
c906108c
SS
1071
1072/* lookup partial symbol table by address */
1073
a14ed312 1074extern struct partial_symtab *find_pc_psymtab (CORE_ADDR);
c906108c
SS
1075
1076/* lookup partial symbol table by address and section */
1077
714835d5
UW
1078extern struct partial_symtab *find_pc_sect_psymtab (CORE_ADDR,
1079 struct obj_section *);
c906108c
SS
1080
1081/* lookup full symbol table by address */
1082
a14ed312 1083extern struct symtab *find_pc_symtab (CORE_ADDR);
c906108c
SS
1084
1085/* lookup full symbol table by address and section */
1086
714835d5 1087extern struct symtab *find_pc_sect_symtab (CORE_ADDR, struct obj_section *);
c906108c
SS
1088
1089/* lookup partial symbol by address */
1090
a14ed312
KB
1091extern struct partial_symbol *find_pc_psymbol (struct partial_symtab *,
1092 CORE_ADDR);
c906108c
SS
1093
1094/* lookup partial symbol by address and section */
1095
a14ed312 1096extern struct partial_symbol *find_pc_sect_psymbol (struct partial_symtab *,
714835d5
UW
1097 CORE_ADDR,
1098 struct obj_section *);
c906108c 1099
a14ed312 1100extern int find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
c906108c 1101
a14ed312 1102extern void reread_symbols (void);
c906108c 1103
a14ed312 1104extern struct type *lookup_transparent_type (const char *);
b368761e 1105extern struct type *basic_lookup_transparent_type (const char *);
c906108c
SS
1106
1107
1108/* Macro for name of symbol to indicate a file compiled with gcc. */
1109#ifndef GCC_COMPILED_FLAG_SYMBOL
1110#define GCC_COMPILED_FLAG_SYMBOL "gcc_compiled."
1111#endif
1112
1113/* Macro for name of symbol to indicate a file compiled with gcc2. */
1114#ifndef GCC2_COMPILED_FLAG_SYMBOL
1115#define GCC2_COMPILED_FLAG_SYMBOL "gcc2_compiled."
1116#endif
1117
1118/* Functions for dealing with the minimal symbol table, really a misc
1119 address<->symbol mapping for things we don't have debug symbols for. */
1120
a14ed312
KB
1121extern void prim_record_minimal_symbol (const char *, CORE_ADDR,
1122 enum minimal_symbol_type,
1123 struct objfile *);
c906108c
SS
1124
1125extern struct minimal_symbol *prim_record_minimal_symbol_and_info
a14ed312
KB
1126 (const char *, CORE_ADDR,
1127 enum minimal_symbol_type,
b887350f 1128 int section, asection * bfd_section, struct objfile *);
c906108c 1129
a14ed312 1130extern unsigned int msymbol_hash_iw (const char *);
9227b5eb 1131
a14ed312 1132extern unsigned int msymbol_hash (const char *);
9227b5eb 1133
bccdca4a
UW
1134extern struct objfile * msymbol_objfile (struct minimal_symbol *sym);
1135
9227b5eb
JB
1136extern void
1137add_minsym_to_hash_table (struct minimal_symbol *sym,
1138 struct minimal_symbol **table);
1139
a14ed312
KB
1140extern struct minimal_symbol *lookup_minimal_symbol (const char *,
1141 const char *,
1142 struct objfile *);
c906108c 1143
a14ed312 1144extern struct minimal_symbol *lookup_minimal_symbol_text (const char *,
a14ed312 1145 struct objfile *);
c906108c 1146
a14ed312 1147struct minimal_symbol *lookup_minimal_symbol_solib_trampoline (const char *,
a14ed312
KB
1148 struct objfile
1149 *);
c906108c 1150
907fc202
UW
1151extern struct minimal_symbol *lookup_minimal_symbol_by_pc_name
1152 (CORE_ADDR, const char *, struct objfile *);
1153
a14ed312 1154extern struct minimal_symbol *lookup_minimal_symbol_by_pc (CORE_ADDR);
c906108c 1155
714835d5
UW
1156extern struct minimal_symbol
1157 *lookup_minimal_symbol_by_pc_section (CORE_ADDR, struct obj_section *);
c906108c 1158
a14ed312
KB
1159extern struct minimal_symbol
1160 *lookup_solib_trampoline_symbol_by_pc (CORE_ADDR);
c906108c 1161
52f729a7 1162extern CORE_ADDR find_solib_trampoline_target (struct frame_info *, CORE_ADDR);
c906108c 1163
a14ed312 1164extern void init_minimal_symbol_collection (void);
c906108c 1165
56e290f4 1166extern struct cleanup *make_cleanup_discard_minimal_symbols (void);
c906108c 1167
a14ed312 1168extern void install_minimal_symbols (struct objfile *);
c906108c
SS
1169
1170/* Sort all the minimal symbols in OBJFILE. */
1171
a14ed312 1172extern void msymbols_sort (struct objfile *objfile);
c906108c
SS
1173
1174struct symtab_and_line
17c5ed2c 1175{
6c95b8df
PA
1176 /* The program space of this sal. */
1177 struct program_space *pspace;
1178
17c5ed2c 1179 struct symtab *symtab;
714835d5 1180 struct obj_section *section;
17c5ed2c
DC
1181 /* Line number. Line numbers start at 1 and proceed through symtab->nlines.
1182 0 is never a valid line number; it is used to indicate that line number
1183 information is not available. */
1184 int line;
1185
1186 CORE_ADDR pc;
1187 CORE_ADDR end;
ed0616c6
VP
1188 int explicit_pc;
1189 int explicit_line;
17c5ed2c 1190};
c906108c 1191
fe39c653 1192extern void init_sal (struct symtab_and_line *sal);
c906108c
SS
1193
1194struct symtabs_and_lines
17c5ed2c
DC
1195{
1196 struct symtab_and_line *sals;
1197 int nelts;
1198};
c5aa993b 1199\f
c906108c
SS
1200
1201
c906108c
SS
1202/* Some types and macros needed for exception catchpoints.
1203 Can't put these in target.h because symtab_and_line isn't
1204 known there. This file will be included by breakpoint.c,
1205 hppa-tdep.c, etc. */
1206
1207/* Enums for exception-handling support */
c5aa993b 1208enum exception_event_kind
17c5ed2c
DC
1209{
1210 EX_EVENT_THROW,
1211 EX_EVENT_CATCH
1212};
c906108c 1213
c906108c
SS
1214\f
1215
1216/* Given a pc value, return line number it is in. Second arg nonzero means
1217 if pc is on the boundary use the previous statement's line number. */
1218
a14ed312 1219extern struct symtab_and_line find_pc_line (CORE_ADDR, int);
c906108c
SS
1220
1221/* Same function, but specify a section as well as an address */
1222
714835d5
UW
1223extern struct symtab_and_line find_pc_sect_line (CORE_ADDR,
1224 struct obj_section *, int);
c906108c 1225
c906108c
SS
1226/* Given a symtab and line number, return the pc there. */
1227
a14ed312 1228extern int find_line_pc (struct symtab *, int, CORE_ADDR *);
c906108c 1229
570b8f7c
AC
1230extern int find_line_pc_range (struct symtab_and_line, CORE_ADDR *,
1231 CORE_ADDR *);
c906108c 1232
a14ed312 1233extern void resolve_sal_pc (struct symtab_and_line *);
c906108c
SS
1234
1235/* Given a string, return the line specified by it. For commands like "list"
1236 and "breakpoint". */
1237
a14ed312 1238extern struct symtabs_and_lines decode_line_spec (char *, int);
c906108c 1239
a14ed312 1240extern struct symtabs_and_lines decode_line_spec_1 (char *, int);
c906108c 1241
c906108c
SS
1242/* Symmisc.c */
1243
a14ed312 1244void maintenance_print_symbols (char *, int);
c906108c 1245
a14ed312 1246void maintenance_print_psymbols (char *, int);
c906108c 1247
a14ed312 1248void maintenance_print_msymbols (char *, int);
c906108c 1249
a14ed312 1250void maintenance_print_objfiles (char *, int);
c906108c 1251
5e7b2f39 1252void maintenance_info_symtabs (char *, int);
44ea7b70 1253
5e7b2f39 1254void maintenance_info_psymtabs (char *, int);
44ea7b70 1255
a14ed312 1256void maintenance_check_symtabs (char *, int);
c906108c
SS
1257
1258/* maint.c */
1259
a14ed312 1260void maintenance_print_statistics (char *, int);
c906108c 1261
a14ed312 1262extern void free_symtab (struct symtab *);
c906108c
SS
1263
1264/* Symbol-reading stuff in symfile.c and solib.c. */
1265
a14ed312 1266extern struct symtab *psymtab_to_symtab (struct partial_symtab *);
c906108c 1267
a14ed312 1268extern void clear_solib (void);
c906108c 1269
c906108c
SS
1270/* source.c */
1271
a14ed312 1272extern int identify_source_line (struct symtab *, int, int, CORE_ADDR);
c906108c 1273
a14ed312 1274extern void print_source_lines (struct symtab *, int, int, int);
c906108c 1275
a14ed312 1276extern void forget_cached_source_info (void);
c906108c 1277
a14ed312 1278extern void select_source_symtab (struct symtab *);
c906108c 1279
41d27058 1280extern char **default_make_symbol_completion_list (char *, char *);
a14ed312 1281extern char **make_symbol_completion_list (char *, char *);
d8906c6f
TJB
1282extern char **make_symbol_completion_list_fn (struct cmd_list_element *,
1283 char *, char *);
c906108c 1284
c94fdfd0
EZ
1285extern char **make_file_symbol_completion_list (char *, char *, char *);
1286
c94fdfd0
EZ
1287extern char **make_source_files_completion_list (char *, char *);
1288
c906108c
SS
1289/* symtab.c */
1290
714835d5 1291int matching_obj_sections (struct obj_section *, struct obj_section *);
94277a38 1292
a14ed312 1293extern struct partial_symtab *find_main_psymtab (void);
c906108c 1294
50641945
FN
1295extern struct symtab *find_line_symtab (struct symtab *, int, int *, int *);
1296
bccdca4a 1297extern CORE_ADDR find_function_start_pc (struct gdbarch *,
714835d5 1298 CORE_ADDR, struct obj_section *);
bccdca4a 1299
17c5ed2c
DC
1300extern struct symtab_and_line find_function_start_sal (struct symbol *sym,
1301 int);
50641945 1302
c906108c
SS
1303/* symfile.c */
1304
a14ed312 1305extern void clear_symtab_users (void);
c906108c 1306
a14ed312 1307extern enum language deduce_language_from_filename (char *);
c906108c
SS
1308
1309/* symtab.c */
1310
d80b854b
UW
1311extern int in_prologue (struct gdbarch *gdbarch,
1312 CORE_ADDR pc, CORE_ADDR func_start);
c906108c 1313
d80b854b
UW
1314extern CORE_ADDR skip_prologue_using_sal (struct gdbarch *gdbarch,
1315 CORE_ADDR func_addr);
634aa483 1316
a14ed312
KB
1317extern struct symbol *fixup_symbol_section (struct symbol *,
1318 struct objfile *);
c906108c 1319
7a78d0ee
KB
1320extern struct partial_symbol *fixup_psymbol_section (struct partial_symbol
1321 *psym,
1322 struct objfile *objfile);
1323
c906108c
SS
1324/* Symbol searching */
1325
1326/* When using search_symbols, a list of the following structs is returned.
7e73cedf 1327 Callers must free the search list using free_search_symbols! */
c906108c 1328struct symbol_search
17c5ed2c
DC
1329{
1330 /* The block in which the match was found. Could be, for example,
1331 STATIC_BLOCK or GLOBAL_BLOCK. */
1332 int block;
c906108c 1333
17c5ed2c 1334 /* Information describing what was found.
c906108c 1335
17c5ed2c
DC
1336 If symtab abd symbol are NOT NULL, then information was found
1337 for this match. */
1338 struct symtab *symtab;
1339 struct symbol *symbol;
c906108c 1340
17c5ed2c
DC
1341 /* If msymbol is non-null, then a match was made on something for
1342 which only minimal_symbols exist. */
1343 struct minimal_symbol *msymbol;
c906108c 1344
17c5ed2c
DC
1345 /* A link to the next match, or NULL for the end. */
1346 struct symbol_search *next;
1347};
c906108c 1348
176620f1 1349extern void search_symbols (char *, domain_enum, int, char **,
a14ed312
KB
1350 struct symbol_search **);
1351extern void free_search_symbols (struct symbol_search *);
17c5ed2c
DC
1352extern struct cleanup *make_cleanup_free_search_symbols (struct symbol_search
1353 *);
c906108c 1354
51cc5b07
AC
1355/* The name of the ``main'' function.
1356 FIXME: cagney/2001-03-20: Can't make main_name() const since some
1357 of the calling code currently assumes that the string isn't
1358 const. */
1359extern void set_main_name (const char *name);
17c5ed2c 1360extern /*const */ char *main_name (void);
51cc5b07 1361
3a40aaa0
UW
1362/* Check global symbols in objfile. */
1363struct symbol *lookup_global_symbol_from_objfile (const struct objfile *objfile,
1364 const char *name,
1365 const char *linkage_name,
21b556f4 1366 const domain_enum domain);
3a40aaa0 1367
ed0616c6
VP
1368extern struct symtabs_and_lines
1369expand_line_sal (struct symtab_and_line sal);
3a40aaa0 1370
c906108c 1371#endif /* !defined(SYMTAB_H) */
This page took 1.354657 seconds and 4 git commands to generate.