]> Git Repo - binutils.git/blob - gdb/symtab.h
Add reminders for next release.
[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
88         {
89           /* For C++ */
90           struct
91             {
92               char *demangled_name;
93             } cplus_specific;
94         } lang_u;
95     } lang_specific;
96 };
97
98 #define SYMBOL_NAME(symbol)             (symbol)->ginfo.name
99 #define SYMBOL_VALUE(symbol)            (symbol)->ginfo.value.value
100 #define SYMBOL_VALUE_ADDRESS(symbol)    (symbol)->ginfo.value.address
101 #define SYMBOL_VALUE_BYTES(symbol)      (symbol)->ginfo.value.bytes
102 #define SYMBOL_BLOCK_VALUE(symbol)      (symbol)->ginfo.value.block
103 #define SYMBOL_VALUE_CHAIN(symbol)      (symbol)->ginfo.value.chain
104 #define SYMBOL_LANGUAGE(symbol)         (symbol)->ginfo.lang_specific.language
105 #define SYMBOL_DEMANGLED_NAME(symbol)   \
106   (symbol)->ginfo.lang_specific.lang_u.cplus_specific.demangled_name
107
108 extern int demangle;    /* We reference it, so go ahead and declare it. */
109
110 /* Macro that returns the "natural source name" of a symbol.  In C++ this is
111    the "demangled" form of the name if demangle is on and the "mangled" form
112    of the name if demangle is off.  In other languages this is just the
113    symbol name. */
114
115 #define SYMBOL_SOURCE_NAME(symbol) \
116   ((demangle && (SYMBOL_LANGUAGE(symbol) == language_cplus) && \
117     (SYMBOL_DEMANGLED_NAME(symbol) != NULL)) ? \
118    SYMBOL_DEMANGLED_NAME (symbol) : SYMBOL_NAME (symbol))
119
120 /* Macro that returns the "natural assembly name" of a symbol.  In C++ this is
121    the "mangled" form of the name if demangle is off, or if demangle is on and
122    asm_demangle is off.  Otherwise if asm_demangle is on it is the "demangled"
123    form.  In other languages this is just the symbol name. */
124
125 #define SYMBOL_LINKAGE_NAME(symbol) \
126   ((demangle && asm_demangle && (SYMBOL_LANGUAGE(symbol) == language_cplus) &&\
127     (SYMBOL_DEMANGLED_NAME(symbol) != NULL)) ? \
128    SYMBOL_DEMANGLED_NAME (symbol) : SYMBOL_NAME (symbol))
129
130 /* Macro that tests a symbol for a match against a specified name string.
131    First test the unencoded name, then looks for and test a C++ encoded
132    name if it exists.  Note that whitespace is ignored while attempting to
133    match a C++ encoded name, so that "foo::bar(int,long)" is the same as
134    "foo :: bar (int, long)".
135    Evaluates to zero if the match fails, or nonzero if it succeeds. */
136
137 #define SYMBOL_MATCHES_NAME(symbol, name) \
138   (STREQ (SYMBOL_NAME (symbol), (name)) || \
139    (SYMBOL_LANGUAGE (symbol) == language_cplus && \
140     SYMBOL_DEMANGLED_NAME (symbol) != NULL && \
141     strcmp_iw (SYMBOL_DEMANGLED_NAME (symbol), (name)) == 0))
142    
143 /* Macro that tests a symbol for an re-match against the last compiled regular
144    expression.  First test the unencoded name, then look for and test a C++
145    encoded name if it exists.
146    Evaluates to zero if the match fails, or nonzero if it succeeds. */
147
148 #define SYMBOL_MATCHES_REGEXP(symbol) \
149   (re_exec (SYMBOL_NAME (symbol)) != 0 || \
150    (SYMBOL_LANGUAGE (symbol) == language_cplus && \
151     SYMBOL_DEMANGLED_NAME (symbol) != NULL && \
152     re_exec (SYMBOL_DEMANGLED_NAME (symbol)) != 0))
153    
154 /* Define a simple structure used to hold some very basic information about
155    all defined global symbols (text, data, bss, abs, etc).  The only required
156    information is the general_symbol_info.
157
158    In many cases, even if a file was compiled with no special options for
159    debugging at all, as long as was not stripped it will contain sufficient
160    information to build a useful minimal symbol table using this structure.
161    Even when a file contains enough debugging information to build a full
162    symbol table, these minimal symbols are still useful for quickly mapping
163    between names and addresses, and vice versa.  They are also sometimes
164    used to figure out what full symbol table entries need to be read in. */
165
166 struct minimal_symbol
167 {
168
169   /* The general symbol info required for all types of symbols. */
170
171   struct general_symbol_info ginfo;
172
173   /* The info field is available for caching machine-specific information that
174      The AMD 29000 tdep.c uses it to remember things it has decoded from the
175      instructions in the function header, so it doesn't have to rederive the
176      info constantly (over a serial line).  It is initialized to zero and
177      stays that way until target-dependent code sets it.  Storage for any data
178      pointed to by this field should be allocated on the symbol_obstack for
179      the associated objfile.  The type would be "void *" except for reasons
180      of compatibility with older compilers.  This field is optional. */
181
182   char *info;
183
184   /* Classification types for this symbol.  These should be taken as "advisory
185      only", since if gdb can't easily figure out a classification it simply
186      selects mst_unknown.  It may also have to guess when it can't figure out
187      which is a better match between two types (mst_data versus mst_bss) for
188      example.  Since the minimal symbol info is sometimes derived from the
189      BFD library's view of a file, we need to live with what information bfd
190      supplies. */
191
192   enum minimal_symbol_type
193     {
194       mst_unknown = 0,          /* Unknown type, the default */
195       mst_text,                 /* Generally executable instructions */
196       mst_data,                 /* Generally initialized data */
197       mst_bss,                  /* Generally uninitialized data */
198       mst_abs                   /* Generally absolute (nonrelocatable) */
199     } type;
200
201 };
202
203 #define MSYMBOL_INFO(msymbol)           (msymbol)->info
204 #define MSYMBOL_TYPE(msymbol)           (msymbol)->type
205
206 \f
207 /* All of the name-scope contours of the program
208    are represented by `struct block' objects.
209    All of these objects are pointed to by the blockvector.
210
211    Each block represents one name scope.
212    Each lexical context has its own block.
213
214    The first two blocks in the blockvector are special.
215    The first one contains all the symbols defined in this compilation
216    whose scope is the entire program linked together.
217    The second one contains all the symbols whose scope is the
218    entire compilation excluding other separate compilations.
219    In C, these correspond to global symbols and static symbols.
220
221    Each block records a range of core addresses for the code that
222    is in the scope of the block.  The first two special blocks
223    give, for the range of code, the entire range of code produced
224    by the compilation that the symbol segment belongs to.
225
226    The blocks appear in the blockvector
227    in order of increasing starting-address,
228    and, within that, in order of decreasing ending-address.
229
230    This implies that within the body of one function
231    the blocks appear in the order of a depth-first tree walk.  */
232
233 struct blockvector
234 {
235   /* Number of blocks in the list.  */
236   int nblocks;
237   /* The blocks themselves.  */
238   struct block *block[1];
239 };
240
241 #define BLOCKVECTOR_NBLOCKS(blocklist) (blocklist)->nblocks
242 #define BLOCKVECTOR_BLOCK(blocklist,n) (blocklist)->block[n]
243
244 /* Special block numbers */
245
246 #define GLOBAL_BLOCK            0
247 #define STATIC_BLOCK            1
248 #define FIRST_LOCAL_BLOCK       2
249
250 struct block
251 {
252
253   /* Addresses in the executable code that are in this block.
254      Note: in an unrelocated symbol segment in a file,
255      these are always zero.  They can be filled in from the
256      N_LBRAC and N_RBRAC symbols in the loader symbol table.  */
257
258   CORE_ADDR startaddr;
259   CORE_ADDR endaddr;
260
261   /* The symbol that names this block,
262      if the block is the body of a function;
263      otherwise, zero.
264      Note: In an unrelocated symbol segment in an object file,
265      this field may be zero even when the block has a name.
266      That is because the block is output before the name
267      (since the name resides in a higher block).
268      Since the symbol does point to the block (as its value),
269      it is possible to find the block and set its name properly.  */
270
271   struct symbol *function;
272
273   /* The `struct block' for the containing block, or 0 if none.
274      Note that in an unrelocated symbol segment in an object file
275      this pointer may be zero when the correct value should be
276      the second special block (for symbols whose scope is one compilation).
277      This is because the compiler outputs the special blocks at the
278      very end, after the other blocks.   */
279
280   struct block *superblock;
281
282   /* A flag indicating whether or not the function corresponding
283      to this block was compiled with gcc or not.  If there is no
284      function corresponding to this block, this meaning of this flag
285      is undefined.  (In practice it will be 1 if the block was created
286      while processing a file compiled with gcc and 0 when not). */
287
288   unsigned char gcc_compile_flag;
289
290   /* Number of local symbols.  */
291
292   int nsyms;
293
294   /* The symbols.  */
295
296   struct symbol *sym[1];
297 };
298
299 #define BLOCK_START(bl)         (bl)->startaddr
300 #define BLOCK_END(bl)           (bl)->endaddr
301 #define BLOCK_NSYMS(bl)         (bl)->nsyms
302 #define BLOCK_SYM(bl, n)        (bl)->sym[n]
303 #define BLOCK_FUNCTION(bl)      (bl)->function
304 #define BLOCK_SUPERBLOCK(bl)    (bl)->superblock
305 #define BLOCK_GCC_COMPILED(bl)  (bl)->gcc_compile_flag
306
307 /* Nonzero if symbols of block BL should be sorted alphabetically.  */
308
309 #define BLOCK_SHOULD_SORT(bl) ((bl)->nsyms >= 40)
310
311 \f
312 /* Represent one symbol name; a variable, constant, function or typedef.  */
313
314 /* For a non-global symbol allocated statically,
315    the correct core address cannot be determined by the compiler.
316    The compiler puts an index number into the symbol's value field.
317    This index number can be matched with the "desc" field of
318    an entry in the loader symbol table.  */
319
320 /* Different name spaces for symbols.  Looking up a symbol specifies a
321    namespace and ignores symbol definitions in other name spaces. */
322
323 enum namespace
324 {
325   /* UNDEF_NAMESPACE is used when a namespace has not been discovered or
326      none of the following apply.  This usually indicates an error either
327      in the symbol information or in gdb's handling of symbols. */
328
329   UNDEF_NAMESPACE,
330
331   /* VAR_NAMESPACE is the usual namespace.  In C, this contains variables,
332      function names, typedef names and enum type values. */
333
334   VAR_NAMESPACE,
335
336   /* STRUCT_NAMESPACE is used in C to hold struct, union and enum type names.
337      Thus, if `struct foo' is used in a C program, it produces a symbol named
338      `foo' in the STRUCT_NAMESPACE. */
339
340   STRUCT_NAMESPACE,
341
342   /* LABEL_NAMESPACE may be used for names of labels (for gotos);
343      currently it is not used and labels are not recorded at all.  */
344
345   LABEL_NAMESPACE
346 };
347
348 /* An address-class says where to find the value of a symbol.  */
349
350 enum address_class
351 {
352   /* Not used; catches errors */
353
354   LOC_UNDEF,
355
356   /* Value is constant int SYMBOL_VALUE, host byteorder */
357
358   LOC_CONST,
359
360   /* Value is at fixed address SYMBOL_VALUE_ADDRESS */
361
362   LOC_STATIC,
363
364   /* Value is in register */
365
366   LOC_REGISTER,
367
368   /* Value is at spec'd offset in arglist */
369
370   LOC_ARG,
371
372   /* Value address is at spec'd offset in arglist. */
373
374   LOC_REF_ARG,
375
376   /* Value is at spec'd offset in register window */
377
378   LOC_REGPARM,
379
380   /* Value is at spec'd offset in stack frame */
381
382   LOC_LOCAL,
383
384   /* Value not used; definition in SYMBOL_TYPE.  Symbols in the namespace
385      STRUCT_NAMESPACE all have this class.  */
386
387   LOC_TYPEDEF,
388
389   /* Value is address SYMBOL_VALUE_ADDRESS in the code */
390
391   LOC_LABEL,
392
393   /* Value is address SYMBOL_VALUE_BLOCK of a `struct block'.  Function names
394      have this class. */
395
396   LOC_BLOCK,
397
398   /* Value is a constant byte-sequence pointed to by SYMBOL_VALUE_ADDRESS, in
399      target byte order.  */
400
401   LOC_CONST_BYTES,
402
403   /* Value is arg at spec'd offset in stack frame. Differs from LOC_LOCAL in
404      that symbol is an argument; differs from LOC_ARG in that we find it
405      in the frame (FRAME_LOCALS_ADDRESS), not in the arglist
406      (FRAME_ARGS_ADDRESS).  Added for i960, which passes args in regs then
407      copies to frame.  */
408
409   LOC_LOCAL_ARG
410
411 };
412
413 struct symbol
414 {
415
416   /* The general symbol info required for all types of symbols. */
417
418   struct general_symbol_info ginfo;
419
420   /* Name space code.  */
421
422   enum namespace namespace;
423
424   /* Address class */
425
426   enum address_class class;
427
428   /* Data type of value */
429
430   struct type *type;
431
432   /* Line number of definition.  FIXME:  Should we really make the assumption
433      that nobody will try to debug files longer than 64K lines?  What about
434      machine generated programs? */
435
436   unsigned short line;
437   
438   /* Some symbols require an additional value to be recorded on a per-
439      symbol basis.  Stash those values here. */
440
441   union
442     {
443       /* for OP_BASEREG in DWARF location specs */
444       struct
445         {
446           short regno_valid;    /* 0 == regno invalid; !0 == regno valid */
447           short regno;          /* base register number {0, 1, 2, ...} */
448         } basereg;
449     }
450   aux_value;
451
452 };
453
454 #define SYMBOL_NAMESPACE(symbol)        (symbol)->namespace
455 #define SYMBOL_CLASS(symbol)            (symbol)->class
456 #define SYMBOL_TYPE(symbol)             (symbol)->type
457 #define SYMBOL_LINE(symbol)             (symbol)->line
458 #define SYMBOL_BASEREG(symbol)          (symbol)->aux_value.basereg.regno
459
460 /* This currently fails because some symbols are not being initialized
461    to zero on allocation, and no code is currently setting this value.
462    Basereg handling will probably change significantly in the next release.
463    FIXME -fnf */
464
465 #if 0
466 #define SYMBOL_BASEREG_VALID(symbol) (symbol)->aux_value.basereg.regno_valid
467 #else
468 #define SYMBOL_BASEREG_VALID(symbol) 0
469 #endif
470
471 \f
472 /* A partial_symbol records the name, namespace, and address class of
473    symbols whose types we have not parsed yet.  For functions, it also
474    contains their memory address, so we can find them from a PC value.
475    Each partial_symbol sits in a partial_symtab, all of which are chained
476    on a  partial symtab list and which points to the corresponding 
477    normal symtab once the partial_symtab has been referenced.  */
478
479 struct partial_symbol
480 {
481
482   /* The general symbol info required for all types of symbols. */
483
484   struct general_symbol_info ginfo;
485
486   /* Name space code.  */
487
488   enum namespace namespace;
489
490   /* Address class (for info_symbols) */
491
492   enum address_class class;
493
494 };
495
496 #define PSYMBOL_NAMESPACE(psymbol)      (psymbol)->namespace
497 #define PSYMBOL_CLASS(psymbol)          (psymbol)->class
498
499 \f
500 /* Source-file information.  This describes the relation between source files,
501    ine numbers and addresses in the program text.  */
502
503 struct sourcevector
504 {
505   int length;                   /* Number of source files described */
506   struct source *source[1];     /* Descriptions of the files */
507 };
508
509 /* Each item represents a line-->pc (or the reverse) mapping.  This is
510    somewhat more wasteful of space than one might wish, but since only
511    the files which are actually debugged are read in to core, we don't
512    waste much space.
513
514    Each item used to be an int; either minus a line number, or a
515    program counter.  If it represents a line number, that is the line
516    described by the next program counter value.  If it is positive, it
517    is the program counter at which the code for the next line starts.  */
518
519 struct linetable_entry
520 {
521   int line;
522   CORE_ADDR pc;
523 };
524
525 struct linetable
526 {
527   int nitems;
528   struct linetable_entry item[1];
529 };
530
531 /* All the information on one source file.  */
532
533 struct source
534 {
535   char *name;                   /* Name of file */
536   struct linetable contents;
537 };
538
539 /* How to relocate the symbols from each section in a symbol file.
540    Each struct contains an array of offsets.
541    The ordering and meaning of the offsets is file-type-dependent;
542    typically it is indexed by section numbers or symbol types or
543    something like that.
544
545    To give us flexibility in changing the internal representation
546    of these offsets, the ANOFFSET macro must be used to insert and
547    extract offset values in the struct.  */
548
549 struct section_offsets
550   {
551     CORE_ADDR offsets[1];               /* As many as needed. */
552   };
553
554 #define ANOFFSET(secoff, whichone)      (secoff->offsets[whichone])
555
556 /* Each source file is represented by a struct symtab. 
557    These objects are chained through the `next' field.  */
558
559 struct symtab
560   {
561
562     /* Chain of all existing symtabs.  */
563
564     struct symtab *next;
565
566     /* List of all symbol scope blocks for this symtab.  */
567
568     struct blockvector *blockvector;
569
570     /* Table mapping core addresses to line numbers for this file.
571        Can be NULL if none.  */
572
573     struct linetable *linetable;
574
575     /* Name of this source file.  */
576
577     char *filename;
578
579     /* Directory in which it was compiled, or NULL if we don't know.  */
580
581     char *dirname;
582
583     /* This component says how to free the data we point to:
584        free_contents => do a tree walk and free each object.
585        free_nothing => do nothing; some other symtab will free
586          the data this one uses.
587       free_linetable => free just the linetable.  */
588
589     enum free_code
590       {
591         free_nothing, free_contents, free_linetable
592         }
593     free_code;
594
595     /* Pointer to one block of storage to be freed, if nonzero.  */
596     /* This is IN ADDITION to the action indicated by free_code.  */
597     
598     char *free_ptr;
599
600     /* Total number of lines found in source file.  */
601
602     int nlines;
603
604     /* Array mapping line number to character position.  */
605
606     int *line_charpos;
607
608     /* Language of this source file.  */
609
610     enum language language;
611
612     /* String of version information.  May be zero.  */
613
614     char *version;
615
616     /* Full name of file as found by searching the source path.
617        NULL if not yet known.  */
618
619     char *fullname;
620
621     /* Object file from which this symbol information was read.  */
622
623     struct objfile *objfile;
624
625     /* Anything extra for this symtab.  This is for target machines
626        with special debugging info of some sort (which cannot just
627        be represented in a normal symtab).  */
628
629 #if defined (EXTRA_SYMTAB_INFO)
630     EXTRA_SYMTAB_INFO
631 #endif
632
633   };
634
635 #define BLOCKVECTOR(symtab)     (symtab)->blockvector
636 #define LINETABLE(symtab)       (symtab)->linetable
637
638 \f
639 /* Each source file that has not been fully read in is represented by
640    a partial_symtab.  This contains the information on where in the
641    executable the debugging symbols for a specific file are, and a
642    list of names of global symbols which are located in this file.
643    They are all chained on partial symtab lists.
644
645    Even after the source file has been read into a symtab, the
646    partial_symtab remains around.  They are allocated on an obstack,
647    psymbol_obstack.  FIXME, this is bad for dynamic linking or VxWorks-
648    style execution of a bunch of .o's.  */
649
650 struct partial_symtab
651 {
652
653   /* Chain of all existing partial symtabs.  */
654
655   struct partial_symtab *next;
656
657   /* Name of the source file which this partial_symtab defines */
658
659   char *filename;
660
661   /* Information about the object file from which symbols should be read.  */
662
663   struct objfile *objfile;
664
665   /* Set of relocation offsets to apply to each section.  */ 
666
667   struct section_offsets *section_offsets;
668
669   /* Range of text addresses covered by this file; texthigh is the
670      beginning of the next section. */
671
672   CORE_ADDR textlow;
673   CORE_ADDR texthigh;
674
675   /* Array of pointers to all of the partial_symtab's which this one
676      depends on.  Since this array can only be set to previous or
677      the current (?) psymtab, this dependency tree is guaranteed not
678      to have any loops. */
679
680   struct partial_symtab **dependencies;
681
682   int number_of_dependencies;
683
684   /* Global symbol list.  This list will be sorted after readin to
685      improve access.  Binary search will be the usual method of
686      finding a symbol within it. globals_offset is an integer offset
687      within global_psymbols[].  */
688
689   int globals_offset;
690   int n_global_syms;
691
692   /* Static symbol list.  This list will *not* be sorted after readin;
693      to find a symbol in it, exhaustive search must be used.  This is
694      reasonable because searches through this list will eventually
695      lead to either the read in of a files symbols for real (assumed
696      to take a *lot* of time; check) or an error (and we don't care
697      how long errors take).  This is an offset and size within
698      static_psymbols[].  */
699
700   int statics_offset;
701   int n_static_syms;
702
703   /* Pointer to symtab eventually allocated for this source file, 0 if
704      !readin or if we haven't looked for the symtab after it was readin.  */
705
706   struct symtab *symtab;
707
708   /* Pointer to function which will read in the symtab corresponding to
709      this psymtab.  */
710
711   void (*read_symtab) PARAMS ((struct partial_symtab *));
712
713   /* Information that lets read_symtab() locate the part of the symbol table
714      that this psymtab corresponds to.  This information is private to the
715      format-dependent symbol reading routines.  For further detail examine
716      the various symbol reading modules.  Should really be (void *) but is
717      (char *) as with other such gdb variables.  (FIXME) */
718
719   char *read_symtab_private;
720
721   /* Non-zero if the symtab corresponding to this psymtab has been readin */
722
723   unsigned char readin;
724 };
725
726 /* A fast way to get from a psymtab to its symtab (after the first time).  */
727 #define PSYMTAB_TO_SYMTAB(pst)  \
728     ((pst) -> symtab != NULL ? (pst) -> symtab : psymtab_to_symtab (pst))
729
730 \f
731 /* The virtual function table is now an array of structures which have the
732    form { int16 offset, delta; void *pfn; }. 
733
734    In normal virtual function tables, OFFSET is unused.
735    DELTA is the amount which is added to the apparent object's base
736    address in order to point to the actual object to which the
737    virtual function should be applied.
738    PFN is a pointer to the virtual function.  */
739   
740 #define VTBL_FNADDR_OFFSET 2
741
742 /* Macro that yields non-zero value iff NAME is the prefix for C++ operator
743    names.  If you leave out the parenthesis here you will lose!
744    Currently 'o' 'p' CPLUS_MARKER is used for both the symbol in the
745    symbol-file and the names in gdb's symbol table.  */
746
747 #define OPNAME_PREFIX_P(NAME) \
748   ((NAME)[0] == 'o' && (NAME)[1] == 'p' && (NAME)[2] == CPLUS_MARKER)
749
750 #define VTBL_PREFIX_P(NAME) \
751   ((NAME)[3] == CPLUS_MARKER && !strncmp ((NAME), "_vt", 3))
752
753 \f
754 /* External variables and functions for the objects described above. */
755
756 /* This symtab variable specifies the current file for printing source lines */
757
758 extern struct symtab *current_source_symtab;
759
760 /* This is the next line to print for listing source lines.  */
761
762 extern int current_source_line;
763
764 /* See the comment in symfile.c about how current_objfile is used. */
765
766 extern struct objfile *current_objfile;
767
768 extern struct symtab *
769 lookup_symtab PARAMS ((char *));
770
771 extern struct symbol *
772 lookup_symbol PARAMS ((const char *, const struct block *,
773                        const enum namespace, int *, struct symtab **));
774
775 extern struct symbol *
776 lookup_block_symbol PARAMS ((const struct block *, const char *,
777                              const enum namespace));
778
779 extern struct type *
780 lookup_struct PARAMS ((char *, struct block *));
781
782 extern struct type *
783 lookup_union PARAMS ((char *, struct block *));
784
785 extern struct type *
786 lookup_enum PARAMS ((char *, struct block *));
787
788 extern struct symbol *
789 block_function PARAMS ((struct block *));
790
791 extern struct symbol *
792 find_pc_function PARAMS ((CORE_ADDR));
793
794 extern int
795 find_pc_partial_function PARAMS ((CORE_ADDR, char **, CORE_ADDR *));
796
797 extern void
798 clear_pc_function_cache PARAMS ((void));
799
800 extern struct partial_symtab *
801 lookup_partial_symtab PARAMS ((char *));
802
803 extern struct partial_symtab *
804 find_pc_psymtab PARAMS ((CORE_ADDR));
805
806 extern struct symtab *
807 find_pc_symtab PARAMS ((CORE_ADDR));
808
809 extern struct partial_symbol *
810 find_pc_psymbol PARAMS ((struct partial_symtab *, CORE_ADDR));
811
812 extern int
813 find_pc_line_pc_range PARAMS ((CORE_ADDR, CORE_ADDR *, CORE_ADDR *));
814
815 extern int
816 contained_in PARAMS ((struct block *, struct block *));
817
818 extern void
819 reread_symbols PARAMS ((void));
820
821 /* Functions for dealing with the minimal symbol table, really a misc
822    address<->symbol mapping for things we don't have debug symbols for.  */
823
824 extern void
825 prim_record_minimal_symbol PARAMS ((const char *, CORE_ADDR,
826                                     enum minimal_symbol_type));
827
828 extern void
829 prim_record_minimal_symbol_and_info PARAMS ((const char *, CORE_ADDR,
830                                              enum minimal_symbol_type,
831                                              char *info));
832
833 extern struct minimal_symbol *
834 lookup_minimal_symbol PARAMS ((const char *, struct objfile *));
835
836 extern struct minimal_symbol *
837 lookup_minimal_symbol_by_pc PARAMS ((CORE_ADDR));
838
839 extern void
840 init_minimal_symbol_collection PARAMS ((void));
841
842 extern void
843 discard_minimal_symbols PARAMS ((int));
844
845 extern void
846 install_minimal_symbols PARAMS ((struct objfile *));
847
848 struct symtab_and_line
849 {
850   struct symtab *symtab;
851   int line;
852   CORE_ADDR pc;
853   CORE_ADDR end;
854 };
855
856 struct symtabs_and_lines
857 {
858   struct symtab_and_line *sals;
859   int nelts;
860 };
861
862 /* Given a pc value, return line number it is in.  Second arg nonzero means
863    if pc is on the boundary use the previous statement's line number.  */
864
865 extern struct symtab_and_line
866 find_pc_line PARAMS ((CORE_ADDR, int));
867
868 /* Given a symtab and line number, return the pc there.  */
869
870 extern CORE_ADDR
871 find_line_pc PARAMS ((struct symtab *, int));
872
873 extern int 
874 find_line_pc_range PARAMS ((struct symtab *, int, CORE_ADDR *, CORE_ADDR *));
875
876 extern void
877 resolve_sal_pc PARAMS ((struct symtab_and_line *));
878
879 /* Given a string, return the line specified by it.  For commands like "list"
880    and "breakpoint".  */
881
882 extern struct symtabs_and_lines
883 decode_line_spec PARAMS ((char *, int));
884
885 extern struct symtabs_and_lines
886 decode_line_spec_1 PARAMS ((char *, int));
887
888 extern struct symtabs_and_lines
889 decode_line_1 PARAMS ((char **, int, struct symtab *, int));
890
891 /* Symmisc.c */
892
893 #if MAINTENANCE_CMDS
894
895 void
896 maintenance_print_symbols PARAMS ((char *, int));
897
898 void
899 maintenance_print_psymbols PARAMS ((char *, int));
900
901 void
902 maintenance_print_msymbols PARAMS ((char *, int));
903
904 void
905 maintenance_print_objfiles PARAMS ((char *, int));
906
907 #endif
908
909 extern void
910 free_symtab PARAMS ((struct symtab *));
911
912 /* Symbol-reading stuff in symfile.c and solib.c.  */
913
914 extern struct symtab *
915 psymtab_to_symtab PARAMS ((struct partial_symtab *));
916
917 extern void
918 clear_solib PARAMS ((void));
919
920 extern struct objfile *
921 symbol_file_add PARAMS ((char *, int, CORE_ADDR, int, int, int));
922
923 /* source.c */
924
925 extern int
926 identify_source_line PARAMS ((struct symtab *, int, int));
927
928 extern void
929 print_source_lines PARAMS ((struct symtab *, int, int, int));
930
931 extern void
932 forget_cached_source_info PARAMS ((void));
933
934 extern void
935 select_source_symtab PARAMS ((struct symtab *));
936
937 extern char **
938 make_symbol_completion_list PARAMS ((char *));
939
940 /* symtab.c */
941
942 extern void
943 clear_symtab_users_once PARAMS ((void));
944
945 extern struct partial_symtab *
946 find_main_psymtab PARAMS ((void));
947
948 /* blockframe.c */
949
950 extern struct blockvector *
951 blockvector_for_pc PARAMS ((CORE_ADDR, int *));
952
953 /* symfile.c */
954
955 extern enum language
956 deduce_language_from_filename PARAMS ((char *));
957
958 #endif /* !defined(SYMTAB_H) */
This page took 0.074878 seconds and 4 git commands to generate.