]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/symfile.h
* symfile.c (fill_in_vptr_fieldno): Don't call check_stub_type.
[thirdparty/binutils-gdb.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();