2003-02-25 David Carlton <carlton@math.stanford.edu>
[external/binutils.git] / gdb / symtab.h
1 /* Symbol table definitions for GDB.
2
3    Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4    1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
5    Foundation, Inc.
6
7    This file is part of GDB.
8
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
11    the Free Software Foundation; either version 2 of the License, or
12    (at your option) any later version.
13
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.
18
19    You should have received a copy of the GNU General Public License
20    along with this program; if not, write to the Free Software
21    Foundation, Inc., 59 Temple Place - Suite 330,
22    Boston, MA 02111-1307, USA.  */
23
24 #if !defined (SYMTAB_H)
25 #define SYMTAB_H 1
26
27 /* Opaque declarations.  */
28
29 struct obstack;
30 struct objfile;
31 struct block;
32 struct blockvector;
33 struct axs_value;
34 struct agent_expr;
35
36 /* Don't do this; it means that if some .o's are compiled with GNU C
37    and some are not (easy to do accidentally the way we configure
38    things; also it is a pain to have to "make clean" every time you
39    want to switch compilers), then GDB dies a horrible death.  */
40 /* GNU C supports enums that are bitfields.  Some compilers don't. */
41 #if 0 && defined(__GNUC__) && !defined(BYTE_BITFIELD)
42 #define BYTE_BITFIELD   :8;
43 #else
44 #define BYTE_BITFIELD           /*nothing */
45 #endif
46
47 /* Define a structure for the information that is common to all symbol types,
48    including minimal symbols, partial symbols, and full symbols.  In a
49    multilanguage environment, some language specific information may need to
50    be recorded along with each symbol.
51
52    These fields are ordered to encourage good packing, since we frequently
53    have tens or hundreds of thousands of these.  */
54
55 struct general_symbol_info
56 {
57   /* Name of the symbol.  This is a required field.  Storage for the
58      name is allocated on the psymbol_obstack or symbol_obstack for
59      the associated objfile.  For languages like C++ that make a
60      distinction between the mangled name and demangled name, this is
61      the mangled name.  */
62
63   char *name;
64
65   /* Value of the symbol.  Which member of this union to use, and what
66      it means, depends on what kind of symbol this is and its
67      SYMBOL_CLASS.  See comments there for more details.  All of these
68      are in host byte order (though what they point to might be in
69      target byte order, e.g. LOC_CONST_BYTES).  */
70
71   union
72   {
73     /* The fact that this is a long not a LONGEST mainly limits the
74        range of a LOC_CONST.  Since LOC_CONST_BYTES exists, I'm not
75        sure that is a big deal.  */
76     long ivalue;
77
78     struct block *block;
79
80     char *bytes;
81
82     CORE_ADDR address;
83
84     /* for opaque typedef struct chain */
85
86     struct symbol *chain;
87   }
88   value;
89
90   /* Since one and only one language can apply, wrap the language specific
91      information inside a union. */
92
93   union
94   {
95     struct cplus_specific
96     {
97       /* This is in fact used for C++, Java, and Objective C.  */
98       char *demangled_name;
99     }
100     cplus_specific;
101   }
102   language_specific;
103
104   /* Record the source code language that applies to this symbol.
105      This is used to select one of the fields from the language specific
106      union above. */
107
108   enum language language BYTE_BITFIELD;
109
110   /* Which section is this symbol in?  This is an index into
111      section_offsets for this objfile.  Negative means that the symbol
112      does not get relocated relative to a section.
113      Disclaimer: currently this is just used for xcoff, so don't
114      expect all symbol-reading code to set it correctly (the ELF code
115      also tries to set it correctly).  */
116
117   short section;
118
119   /* The bfd section associated with this symbol. */
120
121   asection *bfd_section;
122 };
123
124 extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *);
125
126 /* Note that all the following SYMBOL_* macros are used with the
127    SYMBOL argument being either a partial symbol, a minimal symbol or
128    a full symbol.  All three types have a ginfo field.  In particular
129    the SYMBOL_INIT_LANGUAGE_SPECIFIC, SYMBOL_INIT_DEMANGLED_NAME,
130    SYMBOL_DEMANGLED_NAME macros cannot be entirely substituted by
131    functions, unless the callers are changed to pass in the ginfo
132    field only, instead of the SYMBOL parameter.  */
133
134 #define DEPRECATED_SYMBOL_NAME(symbol)  (symbol)->ginfo.name
135 #define SYMBOL_VALUE(symbol)            (symbol)->ginfo.value.ivalue
136 #define SYMBOL_VALUE_ADDRESS(symbol)    (symbol)->ginfo.value.address
137 #define SYMBOL_VALUE_BYTES(symbol)      (symbol)->ginfo.value.bytes
138 #define SYMBOL_BLOCK_VALUE(symbol)      (symbol)->ginfo.value.block
139 #define SYMBOL_VALUE_CHAIN(symbol)      (symbol)->ginfo.value.chain
140 #define SYMBOL_LANGUAGE(symbol)         (symbol)->ginfo.language
141 #define SYMBOL_SECTION(symbol)          (symbol)->ginfo.section
142 #define SYMBOL_BFD_SECTION(symbol)      (symbol)->ginfo.bfd_section
143
144 #define SYMBOL_CPLUS_DEMANGLED_NAME(symbol)     \
145   (symbol)->ginfo.language_specific.cplus_specific.demangled_name
146
147 /* Initializes the language dependent portion of a symbol
148    depending upon the language for the symbol. */
149 #define SYMBOL_INIT_LANGUAGE_SPECIFIC(symbol,language) \
150   (symbol_init_language_specific (&(symbol)->ginfo, (language)))
151 extern void symbol_init_language_specific (struct general_symbol_info *symbol,
152                                            enum language language);
153
154 #define SYMBOL_INIT_DEMANGLED_NAME(symbol,obstack) \
155   (symbol_init_demangled_name (&(symbol)->ginfo, (obstack)))
156 extern void symbol_init_demangled_name (struct general_symbol_info *symbol,
157                                         struct obstack *obstack);
158
159 #define SYMBOL_SET_NAMES(symbol,name,len,objfile) \
160   symbol_set_names (&(symbol)->ginfo, name, len, objfile)
161 extern void symbol_set_names (struct general_symbol_info *symbol,
162                               const char *name, int len,
163                               struct objfile *objfile);
164
165 /* Now come lots of name accessor macros.  Short version as to when to
166    use which: Use SYMBOL_NATURAL_NAME to refer to the name of the
167    symbol in the original source code.  Use SYMBOL_LINKAGE_NAME if you
168    want to know what the linker thinks the symbol's name is.  Use
169    SYMBOL_PRINT_NAME for output.  Use SYMBOL_DEMANGLED_NAME if you
170    specifically need to know whether SYMBOL_NATURAL_NAME and
171    SYMBOL_LINKAGE_NAME are different.  Don't use
172    DEPRECATED_SYMBOL_NAME at all: instances of that macro should be
173    replaced by SYMBOL_NATURAL_NAME, SYMBOL_LINKAGE_NAME, or perhaps
174    SYMBOL_PRINT_NAME.  */
175
176 /* Return SYMBOL's "natural" name, i.e. the name that it was called in
177    the original source code.  In languages like C++ where symbols may
178    be mangled for ease of manipulation by the linker, this is the
179    demangled name.  */
180
181 #define SYMBOL_NATURAL_NAME(symbol) \
182   (symbol_natural_name (&(symbol)->ginfo))
183 extern char *symbol_natural_name (const struct general_symbol_info *symbol);
184
185 /* Return SYMBOL's name from the point of view of the linker.  In
186    languages like C++ where symbols may be mangled for ease of
187    manipulation by the linker, this is the mangled name; otherwise,
188    it's the same as SYMBOL_NATURAL_NAME.  This is currently identical
189    to DEPRECATED_SYMBOL_NAME, but please use SYMBOL_LINKAGE_NAME when
190    appropriate: it conveys the additional semantic information that
191    you really have thought about the issue and decided that you mean
192    SYMBOL_LINKAGE_NAME instead of SYMBOL_NATURAL_NAME.  */
193
194 #define SYMBOL_LINKAGE_NAME(symbol)     (symbol)->ginfo.name
195
196 /* Return the demangled name for a symbol based on the language for
197    that symbol.  If no demangled name exists, return NULL. */
198 #define SYMBOL_DEMANGLED_NAME(symbol) \
199   (symbol_demangled_name (&(symbol)->ginfo))
200 extern char *symbol_demangled_name (struct general_symbol_info *symbol);
201
202 /* Macro that returns a version of the name of a symbol that is
203    suitable for output.  In C++ this is the "demangled" form of the
204    name if demangle is on and the "mangled" form of the name if
205    demangle is off.  In other languages this is just the symbol name.
206    The result should never be NULL.  Don't use this for internal
207    purposes (e.g. storing in a hashtable): it's only suitable for
208    output.  */
209
210 #define SYMBOL_PRINT_NAME(symbol)                                       \
211   (demangle ? SYMBOL_NATURAL_NAME (symbol) : SYMBOL_LINKAGE_NAME (symbol))
212
213 /* Macro that tests a symbol for a match against a specified name string.
214    First test the unencoded name, then looks for and test a C++ encoded
215    name if it exists.  Note that whitespace is ignored while attempting to
216    match a C++ encoded name, so that "foo::bar(int,long)" is the same as
217    "foo :: bar (int, long)".
218    Evaluates to zero if the match fails, or nonzero if it succeeds. */
219
220 #define SYMBOL_MATCHES_NAME(symbol, name)                               \
221   (STREQ (DEPRECATED_SYMBOL_NAME (symbol), (name))                      \
222    || (SYMBOL_DEMANGLED_NAME (symbol) != NULL                           \
223        && strcmp_iw (SYMBOL_DEMANGLED_NAME (symbol), (name)) == 0))
224
225 /* Macro that tests a symbol for an re-match against the last compiled regular
226    expression.  First test the unencoded name, then look for and test a C++
227    encoded name if it exists.
228    Evaluates to zero if the match fails, or nonzero if it succeeds. */
229
230 #define SYMBOL_MATCHES_REGEXP(symbol)                                   \
231   (re_exec (DEPRECATED_SYMBOL_NAME (symbol)) != 0                       \
232    || (SYMBOL_DEMANGLED_NAME (symbol) != NULL                           \
233        && re_exec (SYMBOL_DEMANGLED_NAME (symbol)) != 0))
234
235 /* Define a simple structure used to hold some very basic information about
236    all defined global symbols (text, data, bss, abs, etc).  The only required
237    information is the general_symbol_info.
238
239    In many cases, even if a file was compiled with no special options for
240    debugging at all, as long as was not stripped it will contain sufficient
241    information to build a useful minimal symbol table using this structure.
242    Even when a file contains enough debugging information to build a full
243    symbol table, these minimal symbols are still useful for quickly mapping
244    between names and addresses, and vice versa.  They are also sometimes
245    used to figure out what full symbol table entries need to be read in. */
246
247 struct minimal_symbol
248 {
249
250   /* The general symbol info required for all types of symbols.
251
252      The SYMBOL_VALUE_ADDRESS contains the address that this symbol
253      corresponds to.  */
254
255   struct general_symbol_info ginfo;
256
257   /* The info field is available for caching machine-specific information
258      so it doesn't have to rederive the info constantly (over a serial line).
259      It is initialized to zero and stays that way until target-dependent code
260      sets it.  Storage for any data pointed to by this field should be allo-
261      cated on the symbol_obstack for the associated objfile.  
262      The type would be "void *" except for reasons of compatibility with older
263      compilers.  This field is optional.
264
265      Currently, the AMD 29000 tdep.c uses it to remember things it has decoded
266      from the instructions in the function header, and the MIPS-16 code uses
267      it to identify 16-bit procedures.  */
268
269   char *info;
270
271 #ifdef SOFUN_ADDRESS_MAYBE_MISSING
272   /* Which source file is this symbol in?  Only relevant for mst_file_*.  */
273   char *filename;
274 #endif
275
276   /* Classification types for this symbol.  These should be taken as "advisory
277      only", since if gdb can't easily figure out a classification it simply
278      selects mst_unknown.  It may also have to guess when it can't figure out
279      which is a better match between two types (mst_data versus mst_bss) for
280      example.  Since the minimal symbol info is sometimes derived from the
281      BFD library's view of a file, we need to live with what information bfd
282      supplies. */
283
284   enum minimal_symbol_type
285   {
286     mst_unknown = 0,            /* Unknown type, the default */
287     mst_text,                   /* Generally executable instructions */
288     mst_data,                   /* Generally initialized data */
289     mst_bss,                    /* Generally uninitialized data */
290     mst_abs,                    /* Generally absolute (nonrelocatable) */
291     /* GDB uses mst_solib_trampoline for the start address of a shared
292        library trampoline entry.  Breakpoints for shared library functions
293        are put there if the shared library is not yet loaded.
294        After the shared library is loaded, lookup_minimal_symbol will
295        prefer the minimal symbol from the shared library (usually
296        a mst_text symbol) over the mst_solib_trampoline symbol, and the
297        breakpoints will be moved to their true address in the shared
298        library via breakpoint_re_set.  */
299     mst_solib_trampoline,       /* Shared library trampoline code */
300     /* For the mst_file* types, the names are only guaranteed to be unique
301        within a given .o file.  */
302     mst_file_text,              /* Static version of mst_text */
303     mst_file_data,              /* Static version of mst_data */
304     mst_file_bss                /* Static version of mst_bss */
305   }
306   type BYTE_BITFIELD;
307
308   /* Minimal symbols with the same hash key are kept on a linked
309      list.  This is the link.  */
310
311   struct minimal_symbol *hash_next;
312
313   /* Minimal symbols are stored in two different hash tables.  This is
314      the `next' pointer for the demangled hash table.  */
315
316   struct minimal_symbol *demangled_hash_next;
317 };
318
319 #define MSYMBOL_INFO(msymbol)           (msymbol)->info
320 #define MSYMBOL_TYPE(msymbol)           (msymbol)->type
321
322 \f
323
324 /* Represent one symbol name; a variable, constant, function or typedef.  */
325
326 /* Different name spaces for symbols.  Looking up a symbol specifies a
327    namespace and ignores symbol definitions in other name spaces. */
328
329 typedef enum
330 {
331   /* UNDEF_NAMESPACE is used when a namespace has not been discovered or
332      none of the following apply.  This usually indicates an error either
333      in the symbol information or in gdb's handling of symbols. */
334
335   UNDEF_NAMESPACE,
336
337   /* VAR_NAMESPACE is the usual namespace.  In C, this contains variables,
338      function names, typedef names and enum type values. */
339
340   VAR_NAMESPACE,
341
342   /* STRUCT_NAMESPACE is used in C to hold struct, union and enum type names.
343      Thus, if `struct foo' is used in a C program, it produces a symbol named
344      `foo' in the STRUCT_NAMESPACE. */
345
346   STRUCT_NAMESPACE,
347
348   /* LABEL_NAMESPACE may be used for names of labels (for gotos);
349      currently it is not used and labels are not recorded at all.  */
350
351   LABEL_NAMESPACE,
352
353   /* Searching namespaces. These overlap with VAR_NAMESPACE, providing
354      some granularity with the search_symbols function. */
355
356   /* Everything in VAR_NAMESPACE minus FUNCTIONS_-, TYPES_-, and
357      METHODS_NAMESPACE */
358   VARIABLES_NAMESPACE,
359
360   /* All functions -- for some reason not methods, though. */
361   FUNCTIONS_NAMESPACE,
362
363   /* All defined types */
364   TYPES_NAMESPACE,
365
366   /* All class methods -- why is this separated out? */
367   METHODS_NAMESPACE
368 }
369 namespace_enum;
370
371 /* An address-class says where to find the value of a symbol.  */
372
373 enum address_class
374 {
375   /* Not used; catches errors */
376
377   LOC_UNDEF,
378
379   /* Value is constant int SYMBOL_VALUE, host byteorder */
380
381   LOC_CONST,
382
383   /* Value is at fixed address SYMBOL_VALUE_ADDRESS */
384
385   LOC_STATIC,
386
387   /* Value is in register.  SYMBOL_VALUE is the register number.  */
388
389   LOC_REGISTER,
390
391   /* It's an argument; the value is at SYMBOL_VALUE offset in arglist.  */
392
393   LOC_ARG,
394
395   /* Value address is at SYMBOL_VALUE offset in arglist.  */
396
397   LOC_REF_ARG,
398
399   /* Value is in register number SYMBOL_VALUE.  Just like LOC_REGISTER
400      except this is an argument.  Probably the cleaner way to handle
401      this would be to separate address_class (which would include
402      separate ARG and LOCAL to deal with FRAME_ARGS_ADDRESS versus
403      FRAME_LOCALS_ADDRESS), and an is_argument flag.
404
405      For some symbol formats (stabs, for some compilers at least),
406      the compiler generates two symbols, an argument and a register.
407      In some cases we combine them to a single LOC_REGPARM in symbol
408      reading, but currently not for all cases (e.g. it's passed on the
409      stack and then loaded into a register).  */
410
411   LOC_REGPARM,
412
413   /* Value is in specified register.  Just like LOC_REGPARM except the
414      register holds the address of the argument instead of the argument
415      itself. This is currently used for the passing of structs and unions
416      on sparc and hppa.  It is also used for call by reference where the
417      address is in a register, at least by mipsread.c.  */
418
419   LOC_REGPARM_ADDR,
420
421   /* Value is a local variable at SYMBOL_VALUE offset in stack frame.  */
422
423   LOC_LOCAL,
424
425   /* Value not used; definition in SYMBOL_TYPE.  Symbols in the namespace
426      STRUCT_NAMESPACE all have this class.  */
427
428   LOC_TYPEDEF,
429
430   /* Value is address SYMBOL_VALUE_ADDRESS in the code */
431
432   LOC_LABEL,
433
434   /* In a symbol table, value is SYMBOL_BLOCK_VALUE of a `struct block'.
435      In a partial symbol table, SYMBOL_VALUE_ADDRESS is the start address
436      of the block.  Function names have this class. */
437
438   LOC_BLOCK,
439
440   /* Value is a constant byte-sequence pointed to by SYMBOL_VALUE_BYTES, in
441      target byte order.  */
442
443   LOC_CONST_BYTES,
444
445   /* Value is arg at SYMBOL_VALUE offset in stack frame. Differs from
446      LOC_LOCAL in that symbol is an argument; differs from LOC_ARG in
447      that we find it in the frame (FRAME_LOCALS_ADDRESS), not in the
448      arglist (FRAME_ARGS_ADDRESS).  Added for i960, which passes args
449      in regs then copies to frame.  */
450
451   LOC_LOCAL_ARG,
452
453   /* Value is at SYMBOL_VALUE offset from the current value of
454      register number SYMBOL_BASEREG.  This exists mainly for the same
455      things that LOC_LOCAL and LOC_ARG do; but we need to do this
456      instead because on 88k DWARF gives us the offset from the
457      frame/stack pointer, rather than the offset from the "canonical
458      frame address" used by COFF, stabs, etc., and we don't know how
459      to convert between these until we start examining prologues.
460
461      Note that LOC_BASEREG is much less general than a DWARF expression.
462      We don't need the generality (at least not yet), and storing a general
463      DWARF expression would presumably take up more space than the existing
464      scheme.  */
465
466   LOC_BASEREG,
467
468   /* Same as LOC_BASEREG but it is an argument.  */
469
470   LOC_BASEREG_ARG,
471
472   /* Value is at fixed address, but the address of the variable has
473      to be determined from the minimal symbol table whenever the
474      variable is referenced.
475      This happens if debugging information for a global symbol is
476      emitted and the corresponding minimal symbol is defined
477      in another object file or runtime common storage.
478      The linker might even remove the minimal symbol if the global
479      symbol is never referenced, in which case the symbol remains
480      unresolved.  */
481
482   LOC_UNRESOLVED,
483
484   /* Value is at a thread-specific location calculated by a
485      target-specific method. This is used only by hppa.  */
486
487   LOC_HP_THREAD_LOCAL_STATIC,
488
489   /* Value is at a thread-specific location calculated by a
490      target-specific method.  SYMBOL_OBJFILE gives the object file
491      in which the symbol is defined; the symbol's value is the
492      offset into that objfile's thread-local storage for the current
493      thread.  */
494       
495   LOC_THREAD_LOCAL_STATIC,
496
497   /* The variable does not actually exist in the program.
498      The value is ignored.  */
499
500   LOC_OPTIMIZED_OUT,
501
502   /* The variable is static, but actually lives at * (address).
503    * I.e. do an extra indirection to get to it.
504    * This is used on HP-UX to get at globals that are allocated
505    * in shared libraries, where references from images other
506    * than the one where the global was allocated are done
507    * with a level of indirection.
508    */
509
510   LOC_INDIRECT,
511
512   /* The variable's address is computed by a set of location
513      functions (see "struct location_funcs" below).  */
514   LOC_COMPUTED,
515
516   /* Same as LOC_COMPUTED, but for function arguments.  */
517   LOC_COMPUTED_ARG
518 };
519
520 /* A structure of function pointers describing the location of a
521    variable, structure member, or structure base class.
522
523    These functions' BATON arguments are generic data pointers, holding
524    whatever data the functions need --- the code which provides this
525    structure also provides the actual contents of the baton, and
526    decides its form.  However, there may be other rules about where
527    the baton data must be allocated; whoever is pointing to this
528    `struct location_funcs' object will know the rules.  For example,
529    when a symbol S's location is LOC_COMPUTED, then
530    SYMBOL_LOCATION_FUNCS(S) is pointing to a location_funcs structure,
531    and SYMBOL_LOCATION_BATON(S) is the baton, which must be allocated
532    on the same obstack as the symbol itself.  */
533
534 struct location_funcs
535 {
536
537   /* Return the value of the variable SYMBOL, relative to the stack
538      frame FRAME.  If the variable has been optimized out, return
539      zero.
540
541      Iff `read_needs_frame (SYMBOL)' is zero, then FRAME may be zero.  */
542
543   struct value *(*read_variable) (struct symbol * symbol,
544                                   struct frame_info * frame);
545
546   /* Return non-zero if we need a frame to find the value of the SYMBOL.  */
547   int (*read_needs_frame) (struct symbol * symbol);
548
549   /* Write to STREAM a natural-language description of the location of
550      SYMBOL.  */
551   int (*describe_location) (struct symbol * symbol, struct ui_file * stream);
552
553   /* Tracepoint support.  Append bytecodes to the tracepoint agent
554      expression AX that push the address of the object SYMBOL.  Set
555      VALUE appropriately.  Note --- for objects in registers, this
556      needn't emit any code; as long as it sets VALUE properly, then
557      the caller will generate the right code in the process of
558      treating this as an lvalue or rvalue.  */
559
560   void (*tracepoint_var_ref) (struct symbol * symbol, struct agent_expr * ax,
561                               struct axs_value * value);
562 };
563
564 /* Linked list of symbol's live ranges. */
565
566 struct range_list
567 {
568   CORE_ADDR start;
569   CORE_ADDR end;
570   struct range_list *next;
571 };
572
573 /* Linked list of aliases for a particular main/primary symbol.  */
574 struct alias_list
575 {
576   struct symbol *sym;
577   struct alias_list *next;
578 };
579
580 struct symbol
581 {
582
583   /* The general symbol info required for all types of symbols. */
584
585   struct general_symbol_info ginfo;
586
587   /* Data type of value */
588
589   struct type *type;
590
591   /* Name space code.  */
592
593 #ifdef __MFC4__
594   /* FIXME: don't conflict with C++'s namespace */
595   /* would be safer to do a global change for all namespace identifiers. */
596 #define namespace _namespace
597 #endif
598   namespace_enum namespace BYTE_BITFIELD;
599
600   /* Address class */
601
602   enum address_class aclass BYTE_BITFIELD;
603
604   /* Line number of definition.  FIXME:  Should we really make the assumption
605      that nobody will try to debug files longer than 64K lines?  What about
606      machine generated programs? */
607
608   unsigned short line;
609
610   /* Some symbols require an additional value to be recorded on a per-
611      symbol basis.  Stash those values here. */
612
613   union
614   {
615     /* Used by LOC_BASEREG and LOC_BASEREG_ARG.  */
616     short basereg;
617
618     /* Used by LOC_THREAD_LOCAL_STATIC.  The objfile in which this
619        symbol is defined.  To find a thread-local variable (e.g., a
620        variable declared with the `__thread' storage class), we may
621        need to know which object file it's in.  */
622     struct objfile *objfile;
623
624     /* For a LOC_COMPUTED or LOC_COMPUTED_ARG symbol, this is the
625        baton and location_funcs structure to find its location.  For a
626        LOC_BLOCK symbol for a function in a compilation unit compiled
627        with DWARF 2 information, this is information used internally
628        by the DWARF 2 code --- specifically, the location expression
629        for the frame base for this function.  */
630     /* FIXME drow/2003-02-21: For the LOC_BLOCK case, it might be better
631        to add a magic symbol to the block containing this information,
632        or to have a generic debug info annotation slot for symbols.  */
633     struct
634     {
635       void *baton;
636       struct location_funcs *funcs;
637     } loc;
638   }
639   aux_value;
640
641
642   /* Link to a list of aliases for this symbol.
643      Only a "primary/main symbol may have aliases.  */
644   struct alias_list *aliases;
645
646   /* List of ranges where this symbol is active.  This is only
647      used by alias symbols at the current time.  */
648   struct range_list *ranges;
649
650   struct symbol *hash_next;
651 };
652
653
654 #define SYMBOL_NAMESPACE(symbol)        (symbol)->namespace
655 #define SYMBOL_CLASS(symbol)            (symbol)->aclass
656 #define SYMBOL_TYPE(symbol)             (symbol)->type
657 #define SYMBOL_LINE(symbol)             (symbol)->line
658 #define SYMBOL_BASEREG(symbol)          (symbol)->aux_value.basereg
659 #define SYMBOL_OBJFILE(symbol)          (symbol)->aux_value.objfile
660 #define SYMBOL_ALIASES(symbol)          (symbol)->aliases
661 #define SYMBOL_RANGES(symbol)           (symbol)->ranges
662 #define SYMBOL_LOCATION_BATON(symbol)   (symbol)->aux_value.loc.baton
663 #define SYMBOL_LOCATION_FUNCS(symbol)   (symbol)->aux_value.loc.funcs
664 \f
665 /* A partial_symbol records the name, namespace, and address class of
666    symbols whose types we have not parsed yet.  For functions, it also
667    contains their memory address, so we can find them from a PC value.
668    Each partial_symbol sits in a partial_symtab, all of which are chained
669    on a  partial symtab list and which points to the corresponding 
670    normal symtab once the partial_symtab has been referenced.  */
671
672 struct partial_symbol
673 {
674
675   /* The general symbol info required for all types of symbols. */
676
677   struct general_symbol_info ginfo;
678
679   /* Name space code.  */
680
681   namespace_enum namespace BYTE_BITFIELD;
682
683   /* Address class (for info_symbols) */
684
685   enum address_class aclass BYTE_BITFIELD;
686
687 };
688
689 #define PSYMBOL_NAMESPACE(psymbol)      (psymbol)->namespace
690 #define PSYMBOL_CLASS(psymbol)          (psymbol)->aclass
691 \f
692
693 /* Each item represents a line-->pc (or the reverse) mapping.  This is
694    somewhat more wasteful of space than one might wish, but since only
695    the files which are actually debugged are read in to core, we don't
696    waste much space.  */
697
698 struct linetable_entry
699 {
700   int line;
701   CORE_ADDR pc;
702 };
703
704 /* The order of entries in the linetable is significant.  They should
705    be sorted by increasing values of the pc field.  If there is more than
706    one entry for a given pc, then I'm not sure what should happen (and
707    I not sure whether we currently handle it the best way).
708
709    Example: a C for statement generally looks like this
710
711    10   0x100   - for the init/test part of a for stmt.
712    20   0x200
713    30   0x300
714    10   0x400   - for the increment part of a for stmt.
715
716    If an entry has a line number of zero, it marks the start of a PC
717    range for which no line number information is available.  It is
718    acceptable, though wasteful of table space, for such a range to be
719    zero length.  */
720
721 struct linetable
722 {
723   int nitems;
724
725   /* Actually NITEMS elements.  If you don't like this use of the
726      `struct hack', you can shove it up your ANSI (seriously, if the
727      committee tells us how to do it, we can probably go along).  */
728   struct linetable_entry item[1];
729 };
730
731 /* How to relocate the symbols from each section in a symbol file.
732    Each struct contains an array of offsets.
733    The ordering and meaning of the offsets is file-type-dependent;
734    typically it is indexed by section numbers or symbol types or
735    something like that.
736
737    To give us flexibility in changing the internal representation
738    of these offsets, the ANOFFSET macro must be used to insert and
739    extract offset values in the struct.  */
740
741 struct section_offsets
742 {
743   CORE_ADDR offsets[1];         /* As many as needed. */
744 };
745
746 #define ANOFFSET(secoff, whichone) \
747    ((whichone == -1) \
748     ? (internal_error (__FILE__, __LINE__, "Section index is uninitialized"), -1) \
749     : secoff->offsets[whichone])
750
751 /* The size of a section_offsets table for N sections.  */
752 #define SIZEOF_N_SECTION_OFFSETS(n) \
753   (sizeof (struct section_offsets) \
754    + sizeof (((struct section_offsets *) 0)->offsets) * ((n)-1))
755
756 /* The maximum possible size of a section_offsets table.  */
757 #define SIZEOF_SECTION_OFFSETS (SIZEOF_N_SECTION_OFFSETS (SECT_OFF_MAX))
758
759 /* Each source file or header is represented by a struct symtab. 
760    These objects are chained through the `next' field.  */
761
762 struct symtab
763 {
764
765   /* Chain of all existing symtabs.  */
766
767   struct symtab *next;
768
769   /* List of all symbol scope blocks for this symtab.  May be shared
770      between different symtabs (and normally is for all the symtabs
771      in a given compilation unit).  */
772
773   struct blockvector *blockvector;
774
775   /* Table mapping core addresses to line numbers for this file.
776      Can be NULL if none.  Never shared between different symtabs.  */
777
778   struct linetable *linetable;
779
780   /* Section in objfile->section_offsets for the blockvector and
781      the linetable.  Probably always SECT_OFF_TEXT.  */
782
783   int block_line_section;
784
785   /* If several symtabs share a blockvector, exactly one of them
786      should be designated the primary, so that the blockvector
787      is relocated exactly once by objfile_relocate.  */
788
789   int primary;
790
791   /* The macro table for this symtab.  Like the blockvector, this
792      may be shared between different symtabs --- and normally is for
793      all the symtabs in a given compilation unit.  */
794   struct macro_table *macro_table;
795
796   /* Name of this source file.  */
797
798   char *filename;
799
800   /* Directory in which it was compiled, or NULL if we don't know.  */
801
802   char *dirname;
803
804   /* This component says how to free the data we point to:
805      free_contents => do a tree walk and free each object.
806      free_nothing => do nothing; some other symtab will free
807      the data this one uses.
808      free_linetable => free just the linetable.  FIXME: Is this redundant
809      with the primary field?  */
810
811   enum free_code
812   {
813     free_nothing, free_contents, free_linetable
814   }
815   free_code;
816
817   /* Pointer to one block of storage to be freed, if nonzero.  */
818   /* This is IN ADDITION to the action indicated by free_code.  */
819
820   char *free_ptr;
821
822   /* Total number of lines found in source file.  */
823
824   int nlines;
825
826   /* line_charpos[N] is the position of the (N-1)th line of the
827      source file.  "position" means something we can lseek() to; it
828      is not guaranteed to be useful any other way.  */
829
830   int *line_charpos;
831
832   /* Language of this source file.  */
833
834   enum language language;
835
836   /* String that identifies the format of the debugging information, such
837      as "stabs", "dwarf 1", "dwarf 2", "coff", etc.  This is mostly useful
838      for automated testing of gdb but may also be information that is
839      useful to the user. */
840
841   char *debugformat;
842
843   /* String of version information.  May be zero.  */
844
845   char *version;
846
847   /* Full name of file as found by searching the source path.
848      NULL if not yet known.  */
849
850   char *fullname;
851
852   /* Object file from which this symbol information was read.  */
853
854   struct objfile *objfile;
855
856 };
857
858 #define BLOCKVECTOR(symtab)     (symtab)->blockvector
859 #define LINETABLE(symtab)       (symtab)->linetable
860 \f
861
862 /* Each source file that has not been fully read in is represented by
863    a partial_symtab.  This contains the information on where in the
864    executable the debugging symbols for a specific file are, and a
865    list of names of global symbols which are located in this file.
866    They are all chained on partial symtab lists.
867
868    Even after the source file has been read into a symtab, the
869    partial_symtab remains around.  They are allocated on an obstack,
870    psymbol_obstack.  FIXME, this is bad for dynamic linking or VxWorks-
871    style execution of a bunch of .o's.  */
872
873 struct partial_symtab
874 {
875
876   /* Chain of all existing partial symtabs.  */
877
878   struct partial_symtab *next;
879
880   /* Name of the source file which this partial_symtab defines */
881
882   char *filename;
883
884   /* Full path of the source file.  NULL if not known.  */
885
886   char *fullname;
887
888   /* Information about the object file from which symbols should be read.  */
889
890   struct objfile *objfile;
891
892   /* Set of relocation offsets to apply to each section.  */
893
894   struct section_offsets *section_offsets;
895
896   /* Range of text addresses covered by this file; texthigh is the
897      beginning of the next section. */
898
899   CORE_ADDR textlow;
900   CORE_ADDR texthigh;
901
902   /* Array of pointers to all of the partial_symtab's which this one
903      depends on.  Since this array can only be set to previous or
904      the current (?) psymtab, this dependency tree is guaranteed not
905      to have any loops.  "depends on" means that symbols must be read
906      for the dependencies before being read for this psymtab; this is
907      for type references in stabs, where if foo.c includes foo.h, declarations
908      in foo.h may use type numbers defined in foo.c.  For other debugging
909      formats there may be no need to use dependencies.  */
910
911   struct partial_symtab **dependencies;
912
913   int number_of_dependencies;
914
915   /* Global symbol list.  This list will be sorted after readin to
916      improve access.  Binary search will be the usual method of
917      finding a symbol within it. globals_offset is an integer offset
918      within global_psymbols[].  */
919
920   int globals_offset;
921   int n_global_syms;
922
923   /* Static symbol list.  This list will *not* be sorted after readin;
924      to find a symbol in it, exhaustive search must be used.  This is
925      reasonable because searches through this list will eventually
926      lead to either the read in of a files symbols for real (assumed
927      to take a *lot* of time; check) or an error (and we don't care
928      how long errors take).  This is an offset and size within
929      static_psymbols[].  */
930
931   int statics_offset;
932   int n_static_syms;
933
934   /* Pointer to symtab eventually allocated for this source file, 0 if
935      !readin or if we haven't looked for the symtab after it was readin.  */
936
937   struct symtab *symtab;
938
939   /* Pointer to function which will read in the symtab corresponding to
940      this psymtab.  */
941
942   void (*read_symtab) (struct partial_symtab *);
943
944   /* Information that lets read_symtab() locate the part of the symbol table
945      that this psymtab corresponds to.  This information is private to the
946      format-dependent symbol reading routines.  For further detail examine
947      the various symbol reading modules.  Should really be (void *) but is
948      (char *) as with other such gdb variables.  (FIXME) */
949
950   char *read_symtab_private;
951
952   /* Non-zero if the symtab corresponding to this psymtab has been readin */
953
954   unsigned char readin;
955 };
956
957 /* A fast way to get from a psymtab to its symtab (after the first time).  */
958 #define PSYMTAB_TO_SYMTAB(pst)  \
959     ((pst) -> symtab != NULL ? (pst) -> symtab : psymtab_to_symtab (pst))
960 \f
961
962 /* The virtual function table is now an array of structures which have the
963    form { int16 offset, delta; void *pfn; }. 
964
965    In normal virtual function tables, OFFSET is unused.
966    DELTA is the amount which is added to the apparent object's base
967    address in order to point to the actual object to which the
968    virtual function should be applied.
969    PFN is a pointer to the virtual function.
970
971    Note that this macro is g++ specific (FIXME). */
972
973 #define VTBL_FNADDR_OFFSET 2
974
975 /* External variables and functions for the objects described above. */
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 /* symtab.c lookup functions */
990
991 /* lookup a symbol table by source file name */
992
993 extern struct symtab *lookup_symtab (const char *);
994
995 /* lookup a symbol by name (optional block, optional symtab) */
996
997 extern struct symbol *lookup_symbol (const char *, const struct block *,
998                                      const namespace_enum, int *,
999                                      struct symtab **);
1000
1001 /* lookup a symbol by name, within a specified block */
1002
1003 extern struct symbol *lookup_block_symbol (const struct block *, const char *,
1004                                            const char *,
1005                                            const namespace_enum);
1006
1007 /* lookup a [struct, union, enum] by name, within a specified block */
1008
1009 extern struct type *lookup_struct (char *, struct block *);
1010
1011 extern struct type *lookup_union (char *, struct block *);
1012
1013 extern struct type *lookup_enum (char *, struct block *);
1014
1015 /* from blockframe.c: */
1016
1017 /* lookup the function symbol corresponding to the address */
1018
1019 extern struct symbol *find_pc_function (CORE_ADDR);
1020
1021 /* lookup the function corresponding to the address and section */
1022
1023 extern struct symbol *find_pc_sect_function (CORE_ADDR, asection *);
1024
1025 /* lookup function from address, return name, start addr and end addr */
1026
1027 extern int find_pc_partial_function (CORE_ADDR, char **, CORE_ADDR *,
1028                                      CORE_ADDR *);
1029
1030 extern void clear_pc_function_cache (void);
1031
1032 extern int find_pc_sect_partial_function (CORE_ADDR, asection *,
1033                                           char **, CORE_ADDR *, CORE_ADDR *);
1034
1035 /* from symtab.c: */
1036
1037 /* lookup partial symbol table by filename */
1038
1039 extern struct partial_symtab *lookup_partial_symtab (const char *);
1040
1041 /* lookup partial symbol table by address */
1042
1043 extern struct partial_symtab *find_pc_psymtab (CORE_ADDR);
1044
1045 /* lookup partial symbol table by address and section */
1046
1047 extern struct partial_symtab *find_pc_sect_psymtab (CORE_ADDR, asection *);
1048
1049 /* lookup full symbol table by address */
1050
1051 extern struct symtab *find_pc_symtab (CORE_ADDR);
1052
1053 /* lookup full symbol table by address and section */
1054
1055 extern struct symtab *find_pc_sect_symtab (CORE_ADDR, asection *);
1056
1057 /* lookup partial symbol by address */
1058
1059 extern struct partial_symbol *find_pc_psymbol (struct partial_symtab *,
1060                                                CORE_ADDR);
1061
1062 /* lookup partial symbol by address and section */
1063
1064 extern struct partial_symbol *find_pc_sect_psymbol (struct partial_symtab *,
1065                                                     CORE_ADDR, asection *);
1066
1067 extern int find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
1068
1069 extern void reread_symbols (void);
1070
1071 extern struct type *lookup_transparent_type (const char *);
1072
1073
1074 /* Macro for name of symbol to indicate a file compiled with gcc. */
1075 #ifndef GCC_COMPILED_FLAG_SYMBOL
1076 #define GCC_COMPILED_FLAG_SYMBOL "gcc_compiled."
1077 #endif
1078
1079 /* Macro for name of symbol to indicate a file compiled with gcc2. */
1080 #ifndef GCC2_COMPILED_FLAG_SYMBOL
1081 #define GCC2_COMPILED_FLAG_SYMBOL "gcc2_compiled."
1082 #endif
1083
1084 /* Functions for dealing with the minimal symbol table, really a misc
1085    address<->symbol mapping for things we don't have debug symbols for.  */
1086
1087 extern void prim_record_minimal_symbol (const char *, CORE_ADDR,
1088                                         enum minimal_symbol_type,
1089                                         struct objfile *);
1090
1091 extern struct minimal_symbol *prim_record_minimal_symbol_and_info
1092   (const char *, CORE_ADDR,
1093    enum minimal_symbol_type,
1094    char *info, int section, asection * bfd_section, struct objfile *);
1095
1096 extern unsigned int msymbol_hash_iw (const char *);
1097
1098 extern unsigned int msymbol_hash (const char *);
1099
1100 extern void
1101 add_minsym_to_hash_table (struct minimal_symbol *sym,
1102                           struct minimal_symbol **table);
1103
1104 extern struct minimal_symbol *lookup_minimal_symbol (const char *,
1105                                                      const char *,
1106                                                      struct objfile *);
1107
1108 extern struct minimal_symbol *lookup_minimal_symbol_text (const char *,
1109                                                           const char *,
1110                                                           struct objfile *);
1111
1112 struct minimal_symbol *lookup_minimal_symbol_solib_trampoline (const char *,
1113                                                                const char *,
1114                                                                struct objfile
1115                                                                *);
1116
1117 extern struct minimal_symbol *lookup_minimal_symbol_by_pc (CORE_ADDR);
1118
1119 extern struct minimal_symbol *lookup_minimal_symbol_by_pc_section (CORE_ADDR,
1120                                                                    asection
1121                                                                    *);
1122
1123 extern struct minimal_symbol
1124   *lookup_solib_trampoline_symbol_by_pc (CORE_ADDR);
1125
1126 extern CORE_ADDR find_solib_trampoline_target (CORE_ADDR);
1127
1128 extern void init_minimal_symbol_collection (void);
1129
1130 extern struct cleanup *make_cleanup_discard_minimal_symbols (void);
1131
1132 extern void install_minimal_symbols (struct objfile *);
1133
1134 /* Sort all the minimal symbols in OBJFILE.  */
1135
1136 extern void msymbols_sort (struct objfile *objfile);
1137
1138 struct symtab_and_line
1139 {
1140   struct symtab *symtab;
1141   asection *section;
1142   /* Line number.  Line numbers start at 1 and proceed through symtab->nlines.
1143      0 is never a valid line number; it is used to indicate that line number
1144      information is not available.  */
1145   int line;
1146
1147   CORE_ADDR pc;
1148   CORE_ADDR end;
1149 };
1150
1151 extern void init_sal (struct symtab_and_line *sal);
1152
1153 struct symtabs_and_lines
1154 {
1155   struct symtab_and_line *sals;
1156   int nelts;
1157 };
1158 \f
1159
1160
1161 /* Some types and macros needed for exception catchpoints.
1162    Can't put these in target.h because symtab_and_line isn't
1163    known there. This file will be included by breakpoint.c,
1164    hppa-tdep.c, etc. */
1165
1166 /* Enums for exception-handling support */
1167 enum exception_event_kind
1168 {
1169   EX_EVENT_THROW,
1170   EX_EVENT_CATCH
1171 };
1172
1173 /* Type for returning info about an exception */
1174 struct exception_event_record
1175 {
1176   enum exception_event_kind kind;
1177   struct symtab_and_line throw_sal;
1178   struct symtab_and_line catch_sal;
1179   /* This may need to be extended in the future, if
1180      some platforms allow reporting more information,
1181      such as point of rethrow, type of exception object,
1182      type expected by catch clause, etc. */
1183 };
1184
1185 #define CURRENT_EXCEPTION_KIND       (current_exception_event->kind)
1186 #define CURRENT_EXCEPTION_CATCH_SAL  (current_exception_event->catch_sal)
1187 #define CURRENT_EXCEPTION_CATCH_LINE (current_exception_event->catch_sal.line)
1188 #define CURRENT_EXCEPTION_CATCH_FILE (current_exception_event->catch_sal.symtab->filename)
1189 #define CURRENT_EXCEPTION_CATCH_PC   (current_exception_event->catch_sal.pc)
1190 #define CURRENT_EXCEPTION_THROW_SAL  (current_exception_event->throw_sal)
1191 #define CURRENT_EXCEPTION_THROW_LINE (current_exception_event->throw_sal.line)
1192 #define CURRENT_EXCEPTION_THROW_FILE (current_exception_event->throw_sal.symtab->filename)
1193 #define CURRENT_EXCEPTION_THROW_PC   (current_exception_event->throw_sal.pc)
1194 \f
1195
1196 /* Given a pc value, return line number it is in.  Second arg nonzero means
1197    if pc is on the boundary use the previous statement's line number.  */
1198
1199 extern struct symtab_and_line find_pc_line (CORE_ADDR, int);
1200
1201 /* Same function, but specify a section as well as an address */
1202
1203 extern struct symtab_and_line find_pc_sect_line (CORE_ADDR, asection *, int);
1204
1205 /* Given a symtab and line number, return the pc there.  */
1206
1207 extern int find_line_pc (struct symtab *, int, CORE_ADDR *);
1208
1209 extern int find_line_pc_range (struct symtab_and_line, CORE_ADDR *,
1210                                CORE_ADDR *);
1211
1212 extern void resolve_sal_pc (struct symtab_and_line *);
1213
1214 /* Given a string, return the line specified by it.  For commands like "list"
1215    and "breakpoint".  */
1216
1217 extern struct symtabs_and_lines decode_line_spec (char *, int);
1218
1219 extern struct symtabs_and_lines decode_line_spec_1 (char *, int);
1220
1221 /* Symmisc.c */
1222
1223 void maintenance_print_symbols (char *, int);
1224
1225 void maintenance_print_psymbols (char *, int);
1226
1227 void maintenance_print_msymbols (char *, int);
1228
1229 void maintenance_print_objfiles (char *, int);
1230
1231 void maintenance_check_symtabs (char *, int);
1232
1233 /* maint.c */
1234
1235 void maintenance_print_statistics (char *, int);
1236
1237 extern void free_symtab (struct symtab *);
1238
1239 /* Symbol-reading stuff in symfile.c and solib.c.  */
1240
1241 extern struct symtab *psymtab_to_symtab (struct partial_symtab *);
1242
1243 extern void clear_solib (void);
1244
1245 /* source.c */
1246
1247 extern int identify_source_line (struct symtab *, int, int, CORE_ADDR);
1248
1249 extern void print_source_lines (struct symtab *, int, int, int);
1250
1251 extern void forget_cached_source_info (void);
1252
1253 extern void select_source_symtab (struct symtab *);
1254
1255 extern char **make_symbol_completion_list (char *, char *);
1256
1257 extern char **make_file_symbol_completion_list (char *, char *, char *);
1258
1259 extern struct symbol **make_symbol_overload_list (struct symbol *);
1260
1261 extern char **make_source_files_completion_list (char *, char *);
1262
1263 /* symtab.c */
1264
1265 extern struct partial_symtab *find_main_psymtab (void);
1266
1267 extern struct symtab *find_line_symtab (struct symtab *, int, int *, int *);
1268
1269 extern struct symtab_and_line find_function_start_sal (struct symbol *sym,
1270                                                        int);
1271
1272 /* symfile.c */
1273
1274 extern void clear_symtab_users (void);
1275
1276 extern enum language deduce_language_from_filename (char *);
1277
1278 /* symtab.c */
1279
1280 extern int in_prologue (CORE_ADDR pc, CORE_ADDR func_start);
1281
1282 extern struct symbol *fixup_symbol_section (struct symbol *,
1283                                             struct objfile *);
1284
1285 extern struct partial_symbol *fixup_psymbol_section (struct partial_symbol
1286                                                      *psym,
1287                                                      struct objfile *objfile);
1288
1289 /* Symbol searching */
1290
1291 /* When using search_symbols, a list of the following structs is returned.
1292    Callers must free the search list using free_search_symbols! */
1293 struct symbol_search
1294 {
1295   /* The block in which the match was found. Could be, for example,
1296      STATIC_BLOCK or GLOBAL_BLOCK. */
1297   int block;
1298
1299   /* Information describing what was found.
1300
1301      If symtab abd symbol are NOT NULL, then information was found
1302      for this match. */
1303   struct symtab *symtab;
1304   struct symbol *symbol;
1305
1306   /* If msymbol is non-null, then a match was made on something for
1307      which only minimal_symbols exist. */
1308   struct minimal_symbol *msymbol;
1309
1310   /* A link to the next match, or NULL for the end. */
1311   struct symbol_search *next;
1312 };
1313
1314 extern void search_symbols (char *, namespace_enum, int, char **,
1315                             struct symbol_search **);
1316 extern void free_search_symbols (struct symbol_search *);
1317 extern struct cleanup *make_cleanup_free_search_symbols (struct symbol_search
1318                                                          *);
1319
1320 /* The name of the ``main'' function.
1321    FIXME: cagney/2001-03-20: Can't make main_name() const since some
1322    of the calling code currently assumes that the string isn't
1323    const. */
1324 extern void set_main_name (const char *name);
1325 extern /*const */ char *main_name (void);
1326
1327 #endif /* !defined(SYMTAB_H) */