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