* symfile.c (fill_in_vptr_fieldno): Don't call check_stub_type.
[external/binutils.git] / gdb / symfile.h
1 /* Definitions for reading symbol files into GDB.
2    Copyright (C) 1990  Free Software Foundation, Inc.
3
4 This file is part of GDB.
5
6 GDB 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 1, or (at your option)
9 any later version.
10
11 GDB 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 GDB; see the file COPYING.  If not, write to
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
19
20 /* This file requires that you first include "bfd.h".  */
21
22 /* Data structures and function definitions for dealing with
23    symbol table reading from files.  */
24
25 /* Structure to keep track of symbol reading functions for various
26    object file types.  */
27
28 struct sym_fns {
29
30   /* sym_name
31      is the name, or name prefix, of the BFD "target type" that this
32      set of functions handles.  E.g. "a.out" or "sunOs" or "coff".  */
33
34   char *sym_name;
35
36   /* sym_namelen
37      counts how many bytes of sym_name should be checked against the
38      BFD target type of the file being read.  If an exact match is
39      desired, specify the number of characters in sym_name plus 1 for the
40      NUL.  If a prefix match is desired, specify the number of characters in
41      sym_name.  */
42
43   int sym_namelen;
44
45   /* sym_new_init
46      initializes anything that is global to the entire
47      symbol table.  It is called e.g. during symbol_file_command, when
48      we begin debugging an entirely new program.  */
49
50   void (*sym_new_init) ();
51
52   /* sym_init (sf)
53      reads any initial information from a symbol file, and
54      initializes the struct sym_fns SF in preparation for sym_read().
55      It is called every time we read a symbol file for any reason.  */
56
57   void (*sym_init) ();
58
59   /* sym_read (sf, addr, mainline)
60      reads a symbol file into a psymtab (or possibly a symtab).
61      SF is the struct sym_fns that sym_init initialized.  ADDR
62      is the offset between the file's specified start address and
63      its true address in memory.  MAINLINE is 1 if this is the
64      main symbol table being read, and 0 if a secondary
65      symbol file (e.g. shared library or dynamically loaded file)
66      is being read.  */
67
68   void (*sym_read) ();
69
70   /* sym_discard (sf)
71      discards any cached information from SF or elsewhere, that
72      was saved as part of reading a single symbol file.  */
73
74   void (*sym_discard) ();
75
76   /* sym_bfd
77      is the accessor for the symbol file being read.  */
78
79   bfd  *sym_bfd;
80
81   /* sym_private
82      is where information can be shared among sym_init, sym_read and
83      sym_discard.  It is typically a pointer to malloc'd memory.  */
84
85   char *sym_private;                    /* Should be void * */
86
87   /* next
88      finds the next struct sym_fns.  They are allocated and initialized
89      in whatever module implements the functions pointed to; an 
90      initializer calls add_symtab_fns to add them to the global chain.  */
91   struct sym_fns *next;
92 };
93
94                         /*   Functions   */
95
96 extern int  free_named_symtabs ();
97 extern void fill_in_vptr_fieldno ();
98 extern void add_symtab_fns ();
99
100 /* Functions for dealing with the misc "function" vector, really a misc
101    address<->symbol mapping vector for things we don't have debug symbols
102    for.  */
103
104 extern void init_misc_bunches ();
105 extern void prim_record_misc_function ();
106 extern void discard_misc_bunches ();
107 extern void condense_misc_bunches ();
108
109 /* Sorting your symbols for fast lookup or alphabetical printing.  */
110
111 extern void sort_block_syms ();
112 extern void sort_symtab_syms ();
113 extern void sort_all_symtab_syms ();
114 extern void sort_block_syms ();
115
116 /* Make a copy of the string at PTR with SIZE characters in the symbol obstack
117    (and add a null character at the end in the copy).
118    Returns the address of the copy.  */
119
120 extern char *obsavestring ();
121
122 /* Concatenate strings S1, S2 and S3; return the new string.
123    Space is found in the symbol_obstack.  */
124
125 extern char *obconcat ();
126
127                         /*   Variables   */
128
129 /* File name symbols were loaded from.  */
130
131 extern char *symfile;
132
133 /* The modification date of the file when they were loaded.  */
134
135 extern int symfile_mtime;
136
137 /* The BFD for this file -- only good while we're actively reading
138    symbols into a psymtab or a symtab.  */
139
140 static bfd *symfile_bfd;
141
142 /* Vectors of all partial symbols read in from file.  */
143
144 extern struct psymbol_allocation_list {
145   struct partial_symbol *list, *next;
146   int size;
147 } global_psymbols, static_psymbols;
148
149 /* Support for complaining about things in the symbol file that aren't
150    catastrophic.
151
152    Each such thing gets a counter.  The first time we have the problem,
153    during a symbol read, we report it.  At the end of symbol reading,
154    if verbose, we report how many of each problem we had.  */
155
156 struct complaint {
157   char *message;
158   unsigned counter;
159   struct complaint *next;
160 };
161
162 /* Root of the chain of complaints that have at some point been issued. 
163    This is used to reset the counters, and/or report the total counts.  */
164
165 extern struct complaint complaint_root[1];
166
167 /* Functions that handle complaints.  (in symfile.c)  */
168
169 int complain();
170 void clear_complaints();