]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/symfile.h
* config/sh/tm-sh.h (BELIEVE_PCC_PROMOTION): Define, so that
[thirdparty/binutils-gdb.git] / gdb / symfile.h
CommitLineData
bd5635a1 1/* Definitions for reading symbol files into GDB.
14b22711
FF
2 Copyright (C) 1990, 1991, 1992, 1993, 1994, 1996
3 Free Software Foundation, Inc.
bd5635a1
RP
4
5This file is part of GDB.
6
2f068b0d 7This program is free software; you can redistribute it and/or modify
bd5635a1 8it under the terms of the GNU General Public License as published by
2f068b0d
FF
9the Free Software Foundation; either version 2 of the License, or
10(at your option) any later version.
bd5635a1 11
2f068b0d 12This program is distributed in the hope that it will be useful,
bd5635a1
RP
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
2f068b0d 18along with this program; if not, write to the Free Software
14b22711 19Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
bd5635a1 20
318bf84f
FF
21#if !defined (SYMFILE_H)
22#define SYMFILE_H
23
bd5635a1
RP
24/* This file requires that you first include "bfd.h". */
25
2ad5709f
FF
26/* Partial symbols are stored in the psymbol_cache and pointers to them
27 are kept in a dynamically grown array that is obtained from malloc and
28 grown as necessary via realloc. Each objfile typically has two of these,
29 one for global symbols and one for static symbols. Although this adds
30 a level of indirection for storing or accessing the partial symbols,
31 it allows us to throw away duplicate psymbols and set all pointers
32 to the single saved instance. */
33
318bf84f 34struct psymbol_allocation_list {
e74acce4
MA
35
36 /* Pointer to beginning of dynamically allocated array of pointers to
37 partial symbols. The array is dynamically expanded as necessary to
38 accommodate more pointers. */
39
40 struct partial_symbol **list;
41
42 /* Pointer to next available slot in which to store a pointer to a partial
43 symbol. */
44
45 struct partial_symbol **next;
46
47 /* Number of allocated pointer slots in current dynamic array (not the
48 number of bytes of storage). The "next" pointer will always point
49 somewhere between list[0] and list[size], and when at list[size] the
50 array will be expanded on the next attempt to store a pointer. */
51
52 int size;
318bf84f
FF
53};
54
80d68b1d
FF
55/* Structure to keep track of symbol reading functions for various
56 object file types. */
57
58struct sym_fns {
59
14b22711
FF
60 /* BFD flavour that we handle, or (as a special kludge, see xcoffread.c,
61 (enum bfd_flavour)-1 for xcoff). */
80d68b1d 62
14b22711 63 enum bfd_flavour sym_flavour;
80d68b1d
FF
64
65 /* Initializes anything that is global to the entire symbol table. It is
66 called during symbol_file_add, when we begin debugging an entirely new
67 program. */
68
69 void (*sym_new_init) PARAMS ((struct objfile *));
70
71 /* Reads any initial information from a symbol file, and initializes the
72 struct sym_fns SF in preparation for sym_read(). It is called every
73 time we read a symbol file for any reason. */
74
75 void (*sym_init) PARAMS ((struct objfile *));
76
77 /* sym_read (objfile, addr, mainline)
78 Reads a symbol file into a psymtab (or possibly a symtab).
51b80b00
FF
79 OBJFILE is the objfile struct for the file we are reading.
80 SECTION_OFFSETS
81 are the offset between the file's specified section addresses and
82 their true addresses in memory.
83 MAINLINE is 1 if this is the
80d68b1d
FF
84 main symbol table being read, and 0 if a secondary
85 symbol file (e.g. shared library or dynamically loaded file)
86 is being read. */
87
51b80b00 88 void (*sym_read) PARAMS ((struct objfile *, struct section_offsets *, int));
80d68b1d
FF
89
90 /* Called when we are finished with an objfile. Should do all cleanup
91 that is specific to the object file format for the particular objfile. */
92
93 void (*sym_finish) PARAMS ((struct objfile *));
94
51b80b00
FF
95 /* This function produces a file-dependent section_offsets structure,
96 allocated in the objfile's storage, and based on the parameter.
97 The parameter is currently a CORE_ADDR (FIXME!) for backward compatibility
98 with the higher levels of GDB. It should probably be changed to
99 a string, where NULL means the default, and others are parsed in a file
100 dependent way. The result of this function is handed in to sym_read. */
101
102 struct section_offsets *(*sym_offsets) PARAMS ((struct objfile *, CORE_ADDR));
103
80d68b1d
FF
104 /* Finds the next struct sym_fns. They are allocated and initialized
105 in whatever module implements the functions pointed to; an
106 initializer calls add_symtab_fns to add them to the global chain. */
107
108 struct sym_fns *next;
109
110};
111
e74acce4
MA
112/* The default version of sym_fns.sym_offsets for readers that don't
113 do anything special. */
114
115extern struct section_offsets *
116default_symfile_offsets PARAMS ((struct objfile *objfile, CORE_ADDR addr));
117
118
318bf84f
FF
119extern void
120extend_psymbol_list PARAMS ((struct psymbol_allocation_list *,
121 struct objfile *));
7e258d18
PB
122
123/* Add any kind of symbol to a psymbol_allocation_list. */
124
e74acce4 125/* #include "demangle.h" */
2e4964ad 126
e74acce4
MA
127extern void
128add_psymbol_to_list PARAMS ((char *, int, namespace_enum, enum address_class,
129 struct psymbol_allocation_list *, long, CORE_ADDR,
130 enum language, struct objfile *));
318bf84f 131
14b22711 132extern void init_psymbol_list PARAMS ((struct objfile *, int));
bd5635a1 133
318bf84f
FF
134extern void
135sort_pst_symbols PARAMS ((struct partial_symtab *));
136
137extern struct symtab *
138allocate_symtab PARAMS ((char *, struct objfile *));
139
318bf84f
FF
140extern int
141free_named_symtabs PARAMS ((char *));
bd5635a1 142
318bf84f
FF
143extern void
144fill_in_vptr_fieldno PARAMS ((struct type *));
bd5635a1 145
318bf84f
FF
146extern void
147add_symtab_fns PARAMS ((struct sym_fns *));
148
51b80b00
FF
149extern void
150init_entry_point_info PARAMS ((struct objfile *));
151
318bf84f
FF
152extern void
153syms_from_objfile PARAMS ((struct objfile *, CORE_ADDR, int, int));
154
51b80b00
FF
155extern void
156new_symfile_objfile PARAMS ((struct objfile *, int, int));
157
318bf84f 158extern struct partial_symtab *
51b80b00
FF
159start_psymtab_common PARAMS ((struct objfile *, struct section_offsets *,
160 char *, CORE_ADDR,
2ad5709f
FF
161 struct partial_symbol **,
162 struct partial_symbol **));
bd5635a1
RP
163
164/* Sorting your symbols for fast lookup or alphabetical printing. */
165
318bf84f
FF
166extern void
167sort_block_syms PARAMS ((struct block *));
168
169extern void
170sort_symtab_syms PARAMS ((struct symtab *));
171
bd5635a1
RP
172/* Make a copy of the string at PTR with SIZE characters in the symbol obstack
173 (and add a null character at the end in the copy).
174 Returns the address of the copy. */
175
318bf84f
FF
176extern char *
177obsavestring PARAMS ((char *, int, struct obstack *));
bd5635a1
RP
178
179/* Concatenate strings S1, S2 and S3; return the new string.
180 Space is found in the symbol_obstack. */
181
318bf84f
FF
182extern char *
183obconcat PARAMS ((struct obstack *obstackp, const char *, const char *,
184 const char *));
bd5635a1
RP
185
186 /* Variables */
187
14b22711
FF
188/* whether to auto load solibs at startup time: 0/1. */
189
190extern int auto_solib_add;
191
318bf84f
FF
192/* From symfile.c */
193
194extern struct partial_symtab *
195allocate_psymtab PARAMS ((char *, struct objfile *));
196
e74acce4
MA
197extern void find_lowest_section PARAMS ((bfd *, asection *, PTR));
198
14b22711
FF
199/* Remote targets may wish to use this as their load function. */
200extern void generic_load PARAMS ((char *name, int from_tty));
201
51b80b00 202/* From dwarfread.c */
318bf84f 203
51b80b00
FF
204extern void
205dwarf_build_psymtabs PARAMS ((struct objfile *, struct section_offsets *, int,
206 file_ptr, unsigned int, file_ptr, unsigned int));
318bf84f 207
fcf05549
SS
208/* From dwarf2read.c */
209
210extern int dwarf2_has_info PARAMS ((bfd *abfd));
211
212extern void dwarf2_build_psymtabs PARAMS ((struct objfile *,
213 struct section_offsets *,
214 int));
14b22711
FF
215/* From mdebugread.c */
216
217/* Hack to force structures to exist before use in parameter list. */
218struct ecoff_debug_hack
219{
220 struct ecoff_debug_swap *a;
221 struct ecoff_debug_info *b;
222};
223extern void
224mdebug_build_psymtabs PARAMS ((struct objfile *,
225 const struct ecoff_debug_swap *,
226 struct ecoff_debug_info *,
227 struct section_offsets *));
318bf84f 228
51b80b00 229extern void
14b22711
FF
230elfmdebug_build_psymtabs PARAMS ((struct objfile *,
231 const struct ecoff_debug_swap *,
232 asection *,
233 struct section_offsets *));
318bf84f 234
51b80b00 235/* From demangle.c */
318bf84f
FF
236
237extern void
51b80b00 238set_demangling_style PARAMS ((char *));
318bf84f
FF
239
240#endif /* !defined(SYMFILE_H) */