1 /* Definitions for reading symbol files into GDB.
2 Copyright (C) 1990 Free Software Foundation, Inc.
4 This file is part of GDB.
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.
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.
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. */
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" or "elf". */
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 during symbol_file_add, 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 is the accessor for the symbol file being read. */
76 is where information can be shared among sym_init and sym_read.
77 It is typically a pointer to malloc'd memory. */
79 char *sym_private; /* Should be void * */
82 finds the next struct sym_fns. They are allocated and initialized
83 in whatever module implements the functions pointed to; an
84 initializer calls add_symtab_fns to add them to the global chain. */
90 extern struct symtab *allocate_symtab ();
91 extern int free_named_symtabs ();
92 extern void fill_in_vptr_fieldno ();
93 extern void add_symtab_fns ();
95 /* Functions for dealing with the misc "function" vector, really a misc
96 address<->symbol mapping vector for things we don't have debug symbols
99 extern void init_misc_bunches ();
100 extern void prim_record_misc_function ();
101 extern void discard_misc_bunches ();
102 extern void condense_misc_bunches ();
104 /* Sorting your symbols for fast lookup or alphabetical printing. */
106 extern void sort_block_syms ();
107 extern void sort_symtab_syms ();
108 extern void sort_all_symtab_syms ();
109 extern void sort_block_syms ();
111 /* Make a copy of the string at PTR with SIZE characters in the symbol obstack
112 (and add a null character at the end in the copy).
113 Returns the address of the copy. */
115 extern char *obsavestring ();
117 /* Concatenate strings S1, S2 and S3; return the new string.
118 Space is found in the symbol_obstack. */
120 extern char *obconcat ();
124 /* File name symbols were loaded from. */
126 extern char *symfile;
128 /* The modification date of the file when they were loaded. */
130 extern long /* really time_t */ symfile_mtime;
132 /* Vectors of all partial symbols read in from file. */
134 extern struct psymbol_allocation_list {
135 struct partial_symbol *list, *next;
137 } global_psymbols, static_psymbols;
139 /* Support for complaining about things in the symbol file that aren't
142 Each such thing gets a counter. The first time we have the problem,
143 during a symbol read, we report it. At the end of symbol reading,
144 if verbose, we report how many of each problem we had. */
149 struct complaint *next;
152 /* Root of the chain of complaints that have at some point been issued.
153 This is used to reset the counters, and/or report the total counts. */
155 extern struct complaint complaint_root[1];
157 /* Functions that handle complaints. (in symfile.c) */
160 void clear_complaints();