aboutsummaryrefslogtreecommitdiff
path: root/gdb/symfile.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/symfile.h')
-rw-r--r--gdb/symfile.h170
1 files changed, 170 insertions, 0 deletions
diff --git a/gdb/symfile.h b/gdb/symfile.h
new file mode 100644
index 0000000..6785117
--- /dev/null
+++ b/gdb/symfile.h
@@ -0,0 +1,170 @@
+/* Definitions for reading symbol files into GDB.
+ Copyright (C) 1990 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDB is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* This file requires that you first include "bfd.h". */
+
+/* Data structures and function definitions for dealing with
+ symbol table reading from files. */
+
+/* Structure to keep track of symbol reading functions for various
+ object file types. */
+
+struct sym_fns {
+
+ /* sym_name
+ is the name, or name prefix, of the BFD "target type" that this
+ set of functions handles. E.g. "a.out" or "sunOs" or "coff". */
+
+ char *sym_name;
+
+ /* sym_namelen
+ counts how many bytes of sym_name should be checked against the
+ BFD target type of the file being read. If an exact match is
+ desired, specify the number of characters in sym_name plus 1 for the
+ NUL. If a prefix match is desired, specify the number of characters in
+ sym_name. */
+
+ int sym_namelen;
+
+ /* sym_new_init
+ initializes anything that is global to the entire
+ symbol table. It is called e.g. during symbol_file_command, when
+ we begin debugging an entirely new program. */
+
+ void (*sym_new_init) ();
+
+ /* sym_init (sf)
+ reads any initial information from a symbol file, and
+ initializes the struct sym_fns SF in preparation for sym_read().
+ It is called every time we read a symbol file for any reason. */
+
+ void (*sym_init) ();
+
+ /* sym_read (sf, addr, mainline)
+ reads a symbol file into a psymtab (or possibly a symtab).
+ SF is the struct sym_fns that sym_init initialized. ADDR
+ is the offset between the file's specified start address and
+ its true address in memory. MAINLINE is 1 if this is the
+ main symbol table being read, and 0 if a secondary
+ symbol file (e.g. shared library or dynamically loaded file)
+ is being read. */
+
+ void (*sym_read) ();
+
+ /* sym_discard (sf)
+ discards any cached information from SF or elsewhere, that
+ was saved as part of reading a single symbol file. */
+
+ void (*sym_discard) ();
+
+ /* sym_bfd
+ is the accessor for the symbol file being read. */
+
+ bfd *sym_bfd;
+
+ /* sym_private
+ is where information can be shared among sym_init, sym_read and
+ sym_discard. It is typically a pointer to malloc'd memory. */
+
+ char *sym_private; /* Should be void * */
+
+ /* next
+ finds the next struct sym_fns. They are allocated and initialized
+ in whatever module implements the functions pointed to; an
+ initializer calls add_symtab_fns to add them to the global chain. */
+ struct sym_fns *next;
+};
+
+ /* Functions */
+
+extern void free_named_symtab ();
+extern int fill_in_vptr_fieldno ();
+extern void add_symtab_fns ();
+
+/* Functions for dealing with the misc "function" vector, really a misc
+ address<->symbol mapping vector for things we don't have debug symbols
+ for. */
+
+extern void init_misc_bunches ();
+extern void prim_record_misc_function ();
+extern void discard_misc_bunches ();
+extern void condense_misc_bunches ();
+
+/* Sorting your symbols for fast lookup or alphabetical printing. */
+
+extern void sort_block_syms ();
+extern void sort_symtab_syms ();
+extern void sort_all_symtab_syms ();
+extern void sort_block_syms ();
+
+/* Make a copy of the string at PTR with SIZE characters in the symbol obstack
+ (and add a null character at the end in the copy).
+ Returns the address of the copy. */
+
+extern char *obsavestring ();
+
+/* Concatenate strings S1, S2 and S3; return the new string.
+ Space is found in the symbol_obstack. */
+
+extern char *obconcat ();
+
+ /* Variables */
+
+/* File name symbols were loaded from. */
+
+extern char *symfile;
+
+/* The modification date of the file when they were loaded. */
+
+extern int symfile_mtime;
+
+/* The BFD for this file -- only good while we're actively reading
+ symbols into a psymtab or a symtab. */
+
+static bfd *symfile_bfd;
+
+/* Vectors of all partial symbols read in from file. */
+
+extern struct psymbol_allocation_list {
+ struct partial_symbol *list, *next;
+ int size;
+} global_psymbols, static_psymbols;
+
+/* Support for complaining about things in the symbol file that aren't
+ catastrophic.
+
+ Each such thing gets a counter. The first time we have the problem,
+ during a symbol read, we report it. At the end of symbol reading,
+ if verbose, we report how many of each problem we had. */
+
+struct complaint {
+ char *message;
+ unsigned counter;
+ struct complaint *next;
+};
+
+/* Root of the chain of complaints that have at some point been issued.
+ This is used to reset the counters, and/or report the total counts. */
+
+extern struct complaint complaint_root[1];
+
+/* Functions that handle complaints. (in symfile.c) */
+
+int complain();
+void clear_complaints();