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