]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/stabsread.h
Update copyright year range in all GDB files.
[thirdparty/binutils-gdb.git] / gdb / stabsread.h
CommitLineData
c906108c 1/* Include file for stabs debugging format support functions.
42a4f53d 2 Copyright (C) 1986-2019 Free Software Foundation, Inc.
c906108c 3
c5aa993b 4 This file is part of GDB.
c906108c 5
c5aa993b
JM
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
a9762ec7 8 the Free Software Foundation; either version 3 of the License, or
c5aa993b 9 (at your option) any later version.
c906108c 10
c5aa993b
JM
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.
c906108c 15
c5aa993b 16 You should have received a copy of the GNU General Public License
a9762ec7 17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c 18
da3331ec 19struct objfile;
5ffa0793 20enum language;
da3331ec 21
c906108c
SS
22/* Definitions, prototypes, etc for stabs debugging format support
23 functions.
24
25 Variables declared in this file can be defined by #define-ing
26 the name EXTERN to null. It is used to declare variables that
27 are normally extern, but which get defined in a single module
28 using this technique. */
29
30#ifndef EXTERN
31#define EXTERN extern
32#endif
33
2150c3ef
TT
34#define HASHSIZE 127 /* Size of things hashed via
35 hashname(). */
36
37/* Compute a small integer hash code for the given name. */
38
39extern int hashname (const char *name);
40
41/* Count symbols as they are processed, for error messages. */
42
43EXTERN unsigned int symnum;
44
45#define next_symbol_text(objfile) (*next_symbol_text_func)(objfile)
46
47/* Function to invoke get the next symbol. Return the symbol name. */
48
49EXTERN const char *(*next_symbol_text_func) (struct objfile *);
50
6b84eeb2
TT
51/* Global variable which, when set, indicates that we are processing a
52 .o file compiled with gcc */
53
54EXTERN unsigned char processing_gcc_compilation;
55
5985ac61
TT
56/* Nonzero if within a function (so symbols should be local, if
57 nothing says specifically). */
58
59EXTERN int within_function;
60
c906108c
SS
61/* Hash table of global symbols whose values are not known yet.
62 They are chained thru the SYMBOL_VALUE_CHAIN, since we don't
63 have the correct data for that slot yet.
64
65 The use of the LOC_BLOCK code in this chain is nonstandard--
66 it refers to a FORTRAN common block rather than the usual meaning, and
67 the such LOC_BLOCK symbols use their fields in nonstandard ways. */
68
69EXTERN struct symbol *global_sym_chain[HASHSIZE];
70
a121b7c1 71extern void common_block_start (const char *, struct objfile *);
a14ed312 72extern void common_block_end (struct objfile *);
c906108c
SS
73
74/* Kludge for xcoffread.c */
75
76struct pending_stabs
c5aa993b
JM
77 {
78 int count;
79 int length;
80 char *stab[1];
81 };
c906108c
SS
82
83EXTERN struct pending_stabs *global_stabs;
84
85/* The type code that process_one_symbol saw on its previous invocation.
c378eb4e 86 Used to detect pairs of N_SO symbols. */
c906108c
SS
87
88EXTERN int previous_stab_code;
89\f
c378eb4e 90/* Support for Sun changes to dbx symbol format. */
c906108c
SS
91
92/* For each identified header file, we have a table of types defined
93 in that header file.
94
95 header_files maps header file names to their type tables.
96 It is a vector of n_header_files elements.
97 Each element describes one header file.
98 It contains a vector of types.
99
100 Sometimes it can happen that the same header file produces
101 different results when included in different places.
102 This can result from conditionals or from different
103 things done before including the file.
104 When this happens, there are multiple entries for the file in this table,
105 one entry for each distinct set of results.
106 The entries are distinguished by the INSTANCE field.
107 The INSTANCE field appears in the N_BINCL and N_EXCL symbol table and is
108 used to match header-file references to their corresponding data. */
109
110struct header_file
c5aa993b 111 {
c906108c 112
c5aa993b 113 /* Name of header file */
c906108c 114
c5aa993b 115 char *name;
c906108c 116
3e43a32a
MS
117 /* Numeric code distinguishing instances of one header file that
118 produced different results when included. It comes from the
c378eb4e 119 N_BINCL or N_EXCL. */
c906108c 120
c5aa993b 121 int instance;
c906108c 122
c5aa993b 123 /* Pointer to vector of types */
c906108c 124
c5aa993b 125 struct type **vector;
c906108c 126
c5aa993b 127 /* Allocated length (# elts) of that vector */
c906108c 128
c5aa993b
JM
129 int length;
130
131 };
c906108c 132
c378eb4e 133/* The table of header_files of this OBJFILE. */
c906108c
SS
134#define HEADER_FILES(OBJFILE) (DBX_SYMFILE_INFO (OBJFILE)->header_files)
135
c378eb4e 136/* The actual length of HEADER_FILES. */
c906108c
SS
137#define N_HEADER_FILES(OBJFILE) (DBX_SYMFILE_INFO (OBJFILE)->n_header_files)
138
c378eb4e 139/* The allocated lengh of HEADER_FILES. */
c906108c
SS
140#define N_ALLOCATED_HEADER_FILES(OBJFILE) \
141 (DBX_SYMFILE_INFO (OBJFILE)->n_allocated_header_files)
142
143/* Within each object file, various header files are assigned numbers.
144 A type is defined or referred to with a pair of numbers
145 (FILENUM,TYPENUM) where FILENUM is the number of the header file
146 and TYPENUM is the number within that header file.
147 TYPENUM is the index within the vector of types for that header file.
148
149 FILENUM == 0 is special; it refers to the main source of the object file,
150 and not to any header file. FILENUM != 1 is interpreted by looking it up
151 in the following table, which contains indices in header_files. */
152
153EXTERN int *this_object_header_files;
154
155EXTERN int n_this_object_header_files;
156
157EXTERN int n_allocated_this_object_header_files;
158
0a0edcd5 159extern void cleanup_undefined_stabs_types (struct objfile *);
c906108c 160
a14ed312 161extern long read_number (char **, int);
c906108c 162
a121b7c1 163extern struct symbol *define_symbol (CORE_ADDR, const char *, int, int,
a14ed312 164 struct objfile *);
c906108c 165
a14ed312 166extern void stabsread_init (void);
c906108c 167
a14ed312 168extern void stabsread_new_init (void);
c906108c 169
a14ed312 170extern void start_stabs (void);
c906108c 171
a14ed312 172extern void end_stabs (void);
c906108c 173
a14ed312 174extern void finish_global_stabs (struct objfile *objfile);
c906108c 175\f
c906108c
SS
176/* COFF files can have multiple .stab sections, if they are linked
177 using --split-by-reloc. This linked list is used to pass the
178 information into the functions in dbxread.c. */
179struct stab_section_list
c5aa993b
JM
180 {
181 /* Next in list. */
182 struct stab_section_list *next;
c906108c 183
c5aa993b
JM
184 /* Stab section. */
185 asection *section;
186 };
c906108c
SS
187\f
188/* Functions exported by dbxread.c. These are not in stabsread.c because
189 they are only used by some stabs readers. */
190
8763cede
DE
191extern struct partial_symtab *dbx_end_psymtab
192 (struct objfile *objfile, struct partial_symtab *pst,
193 const char **include_list, int num_includes,
194 int capping_symbol_offset, CORE_ADDR capping_text,
195 struct partial_symtab **dependency_list, int number_dependencies,
196 int textlow_not_set);
c906108c 197
a121b7c1 198extern void process_one_symbol (int, int, CORE_ADDR, const char *,
3189cb12 199 const struct section_offsets *,
5ffa0793 200 struct objfile *, enum language);
5ae5f592
AC
201
202extern void elfstab_build_psymtabs (struct objfile *objfile,
086df311 203 asection *stabsect,
5ae5f592
AC
204 file_ptr stabstroffset,
205 unsigned int stabstrsize);
c906108c
SS
206
207extern void coffstab_build_psymtabs
a14ed312 208 (struct objfile *objfile,
a14ed312
KB
209 CORE_ADDR textaddr, unsigned int textsize,
210 struct stab_section_list *stabs,
211 file_ptr stabstroffset, unsigned int stabstrsize);
c906108c 212
c67a9c90
TG
213extern void stabsect_build_psymtabs (struct objfile *objfile, char *stab_name,
214 char *stabstr_name, char *text_name);
c906108c 215
a121b7c1 216extern int symbol_reference_defined (const char **);
c906108c 217
a121b7c1 218extern void ref_add (int, struct symbol *, const char *, CORE_ADDR);
c906108c 219
a14ed312 220extern struct symbol *ref_search (int);
c906108c 221
d3d55eeb
EZ
222extern void free_header_files (void);
223
224extern void init_header_files (void);
225
77d6f1aa
TT
226/* Scan through all of the global symbols defined in the object file,
227 assigning values to the debugging symbols that need to be assigned
228 to. Get these symbols from the minimal symbol table. */
229
230extern void scan_file_globals (struct objfile *objfile);
231
c906108c 232#undef EXTERN