1 /* Definitions for reading symbol files into GDB.
2 Copyright (C) 1990 Free Software Foundation, Inc.
4 This file is part of GDB.
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)
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.
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. */
20 /* This file requires that you first include "bfd.h". */
22 /* Data structures and function definitions for dealing with
23 symbol table reading from files. */
25 /* Structure to keep track of symbol reading functions for various
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". */
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
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. */
50 void (*sym_new_init) ();
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. */
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)
71 discards any cached information from SF or elsewhere, that
72 was saved as part of reading a single symbol file. */
74 void (*sym_discard) ();
77 is the accessor for the symbol file being read. */
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. */
85 char *sym_private; /* Should be void * */
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. */
96 extern int free_named_symtabs ();
97 extern void fill_in_vptr_fieldno ();
98 extern void add_symtab_fns ();
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
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 ();
109 /* Sorting your symbols for fast lookup or alphabetical printing. */
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 ();
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. */
120 extern char *obsavestring ();
122 /* Concatenate strings S1, S2 and S3; return the new string.
123 Space is found in the symbol_obstack. */
125 extern char *obconcat ();
129 /* File name symbols were loaded from. */
131 extern char *symfile;
133 /* The modification date of the file when they were loaded. */
135 extern int symfile_mtime;
137 /* The BFD for this file -- only good while we're actively reading
138 symbols into a psymtab or a symtab. */
140 static bfd *symfile_bfd;
142 /* Vectors of all partial symbols read in from file. */
144 extern struct psymbol_allocation_list {
145 struct partial_symbol *list, *next;
147 } global_psymbols, static_psymbols;
149 /* Support for complaining about things in the symbol file that aren't
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. */
159 struct complaint *next;
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. */
165 extern struct complaint complaint_root[1];
167 /* Functions that handle complaints. (in symfile.c) */
170 void clear_complaints();