]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/hpread.h
import gdb-1999-07-07 post reformat
[thirdparty/binutils-gdb.git] / gdb / hpread.h
CommitLineData
c906108c
SS
1/* hpread.h
2 * Common include file for:
3 * hp_symtab_read.c
4 * hp_psymtab_read.c
5 */
6
7/* Copyright 1993, 1996 Free Software Foundation, Inc.
8
9 This file is part of GDB.
10
11 This program is free software; you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 2 of the License, or
14 (at your option) any later version.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, write to the Free Software
c5aa993b
JM
23 Foundation, Inc., 59 Temple Place - Suite 330,
24 Boston, MA 02111-1307, USA.
c906108c
SS
25
26 Written by the Center for Software Science at the University of Utah
27 and by Cygnus Support. */
28
29#include "defs.h"
30#include "bfd.h"
31#include "gdb_string.h"
32#include "hp-symtab.h"
33#include "syms.h"
34#include "symtab.h"
35#include "symfile.h"
36#include "objfiles.h"
37#include "buildsym.h"
38#include "complaints.h"
39#include "gdb-stabs.h"
40#include "gdbtypes.h"
41#include "demangle.h"
42
43/* Private information attached to an objfile which we use to find
44 and internalize the HP C debug symbols within that objfile. */
45
46struct hpread_symfile_info
c5aa993b
JM
47 {
48 /* The contents of each of the debug sections (there are 4 of them). */
49 char *gntt;
50 char *lntt;
51 char *slt;
52 char *vt;
c906108c 53
c5aa993b
JM
54 /* We keep the size of the $VT$ section for range checking. */
55 unsigned int vt_size;
c906108c 56
c5aa993b
JM
57 /* Some routines still need to know the number of symbols in the
58 main debug sections ($LNTT$ and $GNTT$). */
59 unsigned int lntt_symcount;
60 unsigned int gntt_symcount;
c906108c 61
c5aa993b
JM
62 /* To keep track of all the types we've processed. */
63 struct type **type_vector;
64 int type_vector_length;
c906108c 65
c5aa993b
JM
66 /* Keeps track of the beginning of a range of source lines. */
67 sltpointer sl_index;
c906108c 68
c5aa993b
JM
69 /* Some state variables we'll need. */
70 int within_function;
c906108c 71
c5aa993b
JM
72 /* Keep track of the current function's address. We may need to look
73 up something based on this address. */
74 unsigned int current_function_value;
75 };
c906108c
SS
76
77/* Accessor macros to get at the fields. */
78#define HPUX_SYMFILE_INFO(o) \
79 ((struct hpread_symfile_info *)((o)->sym_private))
80#define GNTT(o) (HPUX_SYMFILE_INFO(o)->gntt)
81#define LNTT(o) (HPUX_SYMFILE_INFO(o)->lntt)
82#define SLT(o) (HPUX_SYMFILE_INFO(o)->slt)
83#define VT(o) (HPUX_SYMFILE_INFO(o)->vt)
84#define VT_SIZE(o) (HPUX_SYMFILE_INFO(o)->vt_size)
85#define LNTT_SYMCOUNT(o) (HPUX_SYMFILE_INFO(o)->lntt_symcount)
86#define GNTT_SYMCOUNT(o) (HPUX_SYMFILE_INFO(o)->gntt_symcount)
87#define TYPE_VECTOR(o) (HPUX_SYMFILE_INFO(o)->type_vector)
88#define TYPE_VECTOR_LENGTH(o) (HPUX_SYMFILE_INFO(o)->type_vector_length)
89#define SL_INDEX(o) (HPUX_SYMFILE_INFO(o)->sl_index)
90#define WITHIN_FUNCTION(o) (HPUX_SYMFILE_INFO(o)->within_function)
91#define CURRENT_FUNCTION_VALUE(o) (HPUX_SYMFILE_INFO(o)->current_function_value)
92
93/* Given the native debug symbol SYM, set NAMEP to the name associated
94 with the debug symbol. Note we may be called with a debug symbol which
95 has no associated name, in that case we return an empty string.
96
97 Also note we "know" that the name for any symbol is always in the
98 same place. Hence we don't have to conditionalize on the symbol type. */
99#define SET_NAMESTRING(SYM, NAMEP, OBJFILE) \
100 if (! hpread_has_name ((SYM)->dblock.kind)) \
101 *NAMEP = ""; \
102 else if (((unsigned)(SYM)->dsfile.name) >= VT_SIZE (OBJFILE)) \
103 { \
104 complain (&string_table_offset_complaint, (char *) symnum); \
105 *NAMEP = ""; \
106 } \
107 else \
108 *NAMEP = (SYM)->dsfile.name + VT (OBJFILE)
109\f
110/* We put a pointer to this structure in the read_symtab_private field
111 of the psymtab. */
112
113struct symloc
c5aa993b
JM
114 {
115 /* The offset within the file symbol table of first local symbol for
116 this file. */
c906108c 117
c5aa993b 118 int ldsymoff;
c906108c 119
c5aa993b
JM
120 /* Length (in bytes) of the section of the symbol table devoted to
121 this file's symbols (actually, the section bracketed may contain
122 more than just this file's symbols). If ldsymlen is 0, the only
123 reason for this thing's existence is the dependency list.
124 Nothing else will happen when it is read in. */
c906108c 125
c5aa993b
JM
126 int ldsymlen;
127 };
c906108c
SS
128
129#define LDSYMOFF(p) (((struct symloc *)((p)->read_symtab_private))->ldsymoff)
130#define LDSYMLEN(p) (((struct symloc *)((p)->read_symtab_private))->ldsymlen)
131#define SYMLOC(p) ((struct symloc *)((p)->read_symtab_private))
132\f
133/* FIXME: Shouldn't this stuff be in a .h file somewhere? */
134/* Nonzero means give verbose info on gdb action. */
135extern int info_verbose;
136
137/* Complaints about the symbols we have encountered. */
138extern struct complaint string_table_offset_complaint;
139extern struct complaint lbrac_unmatched_complaint;
140extern struct complaint lbrac_mismatch_complaint;
141
142extern union sltentry *hpread_get_slt
143 PARAMS ((int, struct objfile *));
144
145extern union dnttentry *hpread_get_lntt
146 PARAMS ((int, struct objfile *));
147
148int hpread_has_name
149 PARAMS ((enum dntt_entry_type));
150
151/* end of hpread.h */