]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/buildsym.c
Update Copyright year range in all files maintained by GDB.
[thirdparty/binutils-gdb.git] / gdb / buildsym.c
CommitLineData
c906108c 1/* Support routines for building symbol tables in GDB's internal format.
ecd75fc8 2 Copyright (C) 1986-2014 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
SS
18
19/* This module provides subroutines used for creating and adding to
20 the symbol table. These routines are called from various symbol-
21 file-reading routines.
22
23 Routines to support specific debugging information formats (stabs,
4a64f543 24 DWARF, etc) belong somewhere else. */
c906108c
SS
25
26#include "defs.h"
27#include "bfd.h"
04ea0df1 28#include "gdb_obstack.h"
c906108c 29#include "symtab.h"
72367fb4 30#include "symfile.h"
c906108c
SS
31#include "objfiles.h"
32#include "gdbtypes.h"
0c5e171a 33#include "gdb_assert.h"
c906108c 34#include "complaints.h"
0e9f083f 35#include <string.h>
4a64f543 36#include "expression.h" /* For "enum exp_opcode" used by... */
357e46e7 37#include "bcache.h"
4a64f543 38#include "filenames.h" /* For DOSish file names. */
99d9066e 39#include "macrotab.h"
261397f8 40#include "demangle.h" /* Needed by SYMBOL_INIT_DEMANGLED_NAME. */
fe898f56 41#include "block.h"
9219021c 42#include "cp-support.h"
de4f826b 43#include "dictionary.h"
801e3a5b 44#include "addrmap.h"
9219021c 45
c906108c 46/* Ask buildsym.h to define the vars it normally declares `extern'. */
c5aa993b
JM
47#define EXTERN
48/**/
4a64f543 49#include "buildsym.h" /* Our own declarations. */
c906108c
SS
50#undef EXTERN
51
0a0edcd5 52/* For cleanup_undefined_stabs_types and finish_global_stabs (somewhat
c906108c
SS
53 questionable--see comment where we call them). */
54
55#include "stabsread.h"
56
94d09e04
DE
57/* List of subfiles. */
58
59static struct subfile *subfiles;
60
c906108c
SS
61/* List of free `struct pending' structures for reuse. */
62
63static struct pending *free_pendings;
64
65/* Non-zero if symtab has line number info. This prevents an
66 otherwise empty symtab from being tossed. */
67
68static int have_line_numbers;
801e3a5b
JB
69
70/* The mutable address map for the compilation unit whose symbols
71 we're currently reading. The symtabs' shared blockvector will
72 point to a fixed copy of this. */
73static struct addrmap *pending_addrmap;
74
75/* The obstack on which we allocate pending_addrmap.
76 If pending_addrmap is NULL, this is uninitialized; otherwise, it is
77 initialized (and holds pending_addrmap). */
78static struct obstack pending_addrmap_obstack;
79
80/* Non-zero if we recorded any ranges in the addrmap that are
81 different from those in the blockvector already. We set this to
82 zero when we start processing a symfile, and if it's still zero at
83 the end, then we just toss the addrmap. */
84static int pending_addrmap_interesting;
85
93eed41f
TT
86/* An obstack used for allocating pending blocks. */
87
88static struct obstack pending_block_obstack;
89
90/* List of blocks already made (lexical contexts already closed).
91 This is used at the end to make the blockvector. */
92
93struct pending_block
94 {
95 struct pending_block *next;
96 struct block *block;
97 };
98
99/* Pointer to the head of a linked list of symbol blocks which have
100 already been finalized (lexical contexts already closed) and which
101 are just waiting to be built into a blockvector when finalizing the
102 associated symtab. */
103
104static struct pending_block *pending_blocks;
fc474241
DE
105
106struct subfile_stack
107 {
108 struct subfile_stack *next;
109 char *name;
110 };
111
112static struct subfile_stack *subfile_stack;
113
114/* The macro table for the compilation unit whose symbols we're
115 currently reading. All the symtabs for the CU will point to this. */
116static struct macro_table *pending_macros;
117
c906108c 118static int compare_line_numbers (const void *ln1p, const void *ln2p);
0b49e518
TT
119
120static void record_pending_block (struct objfile *objfile,
121 struct block *block,
122 struct pending_block *opblock);
c906108c
SS
123
124/* Initial sizes of data structures. These are realloc'd larger if
125 needed, and realloc'd down to the size actually used, when
126 completed. */
127
128#define INITIAL_CONTEXT_STACK_SIZE 10
129#define INITIAL_LINE_VECTOR_LENGTH 1000
130\f
131
4a64f543 132/* Maintain the lists of symbols and blocks. */
c906108c 133
93bf33fd 134/* Add a symbol to one of the lists of symbols. */
c906108c
SS
135
136void
137add_symbol_to_list (struct symbol *symbol, struct pending **listhead)
138{
52f0bd74 139 struct pending *link;
c906108c
SS
140
141 /* If this is an alias for another symbol, don't add it. */
142 if (symbol->ginfo.name && symbol->ginfo.name[0] == '#')
143 return;
144
4a64f543 145 /* We keep PENDINGSIZE symbols in each link of the list. If we
c906108c
SS
146 don't have a link with room in it, add a new link. */
147 if (*listhead == NULL || (*listhead)->nsyms == PENDINGSIZE)
148 {
149 if (free_pendings)
150 {
151 link = free_pendings;
152 free_pendings = link->next;
153 }
154 else
155 {
156 link = (struct pending *) xmalloc (sizeof (struct pending));
157 }
158
159 link->next = *listhead;
160 *listhead = link;
161 link->nsyms = 0;
162 }
163
164 (*listhead)->symbol[(*listhead)->nsyms++] = symbol;
165}
166
167/* Find a symbol named NAME on a LIST. NAME need not be
168 '\0'-terminated; LENGTH is the length of the name. */
169
170struct symbol *
171find_symbol_in_list (struct pending *list, char *name, int length)
172{
173 int j;
0d5cff50 174 const char *pp;
c906108c
SS
175
176 while (list != NULL)
177 {
178 for (j = list->nsyms; --j >= 0;)
179 {
3567439c 180 pp = SYMBOL_LINKAGE_NAME (list->symbol[j]);
5aafa1cc
PM
181 if (*pp == *name && strncmp (pp, name, length) == 0
182 && pp[length] == '\0')
c906108c
SS
183 {
184 return (list->symbol[j]);
185 }
186 }
187 list = list->next;
188 }
189 return (NULL);
190}
191
192/* At end of reading syms, or in case of quit, really free as many
4a64f543 193 `struct pending's as we can easily find. */
c906108c 194
c906108c 195void
bde58177 196really_free_pendings (void *dummy)
c906108c
SS
197{
198 struct pending *next, *next1;
199
200 for (next = free_pendings; next; next = next1)
201 {
202 next1 = next->next;
b8c9b27d 203 xfree ((void *) next);
c906108c
SS
204 }
205 free_pendings = NULL;
206
207 free_pending_blocks ();
208
209 for (next = file_symbols; next != NULL; next = next1)
210 {
211 next1 = next->next;
b8c9b27d 212 xfree ((void *) next);
c906108c
SS
213 }
214 file_symbols = NULL;
215
216 for (next = global_symbols; next != NULL; next = next1)
217 {
218 next1 = next->next;
b8c9b27d 219 xfree ((void *) next);
c906108c
SS
220 }
221 global_symbols = NULL;
99d9066e
JB
222
223 if (pending_macros)
224 free_macro_table (pending_macros);
801e3a5b
JB
225
226 if (pending_addrmap)
227 {
228 obstack_free (&pending_addrmap_obstack, NULL);
229 pending_addrmap = NULL;
230 }
c906108c
SS
231}
232
4a64f543 233/* This function is called to discard any pending blocks. */
c906108c
SS
234
235void
236free_pending_blocks (void)
237{
93eed41f
TT
238 if (pending_blocks != NULL)
239 {
240 obstack_free (&pending_block_obstack, NULL);
241 pending_blocks = NULL;
242 }
c906108c
SS
243}
244
245/* Take one of the lists of symbols and make a block from it. Keep
246 the order the symbols have in the list (reversed from the input
247 file). Put the block on the list of pending blocks. */
248
84a146c9
TT
249static struct block *
250finish_block_internal (struct symbol *symbol, struct pending **listhead,
251 struct pending_block *old_blocks,
252 CORE_ADDR start, CORE_ADDR end,
253 struct objfile *objfile,
6d30eef8 254 int is_global, int expandable)
c906108c 255{
5af949e3 256 struct gdbarch *gdbarch = get_objfile_arch (objfile);
52f0bd74
AC
257 struct pending *next, *next1;
258 struct block *block;
259 struct pending_block *pblock;
c906108c 260 struct pending_block *opblock;
c906108c 261
84a146c9
TT
262 block = (is_global
263 ? allocate_global_block (&objfile->objfile_obstack)
264 : allocate_block (&objfile->objfile_obstack));
c906108c 265
261397f8
DJ
266 if (symbol)
267 {
4a146b47 268 BLOCK_DICT (block) = dict_create_linear (&objfile->objfile_obstack,
de4f826b 269 *listhead);
261397f8
DJ
270 }
271 else
c906108c 272 {
6d30eef8
DE
273 if (expandable)
274 {
275 BLOCK_DICT (block) = dict_create_hashed_expandable ();
276 dict_add_pending (BLOCK_DICT (block), *listhead);
277 }
278 else
279 {
280 BLOCK_DICT (block) =
281 dict_create_hashed (&objfile->objfile_obstack, *listhead);
282 }
c906108c
SS
283 }
284
285 BLOCK_START (block) = start;
286 BLOCK_END (block) = end;
c906108c 287
c906108c
SS
288 /* Put the block in as the value of the symbol that names it. */
289
290 if (symbol)
291 {
292 struct type *ftype = SYMBOL_TYPE (symbol);
de4f826b 293 struct dict_iterator iter;
c906108c
SS
294 SYMBOL_BLOCK_VALUE (symbol) = block;
295 BLOCK_FUNCTION (block) = symbol;
296
297 if (TYPE_NFIELDS (ftype) <= 0)
298 {
299 /* No parameter type information is recorded with the
300 function's type. Set that from the type of the
4a64f543 301 parameter symbols. */
c906108c
SS
302 int nparams = 0, iparams;
303 struct symbol *sym;
8157b174
TT
304
305 /* Here we want to directly access the dictionary, because
306 we haven't fully initialized the block yet. */
307 ALL_DICT_SYMBOLS (BLOCK_DICT (block), iter, sym)
c906108c 308 {
2a2d4dc3
AS
309 if (SYMBOL_IS_ARGUMENT (sym))
310 nparams++;
c906108c
SS
311 }
312 if (nparams > 0)
313 {
314 TYPE_NFIELDS (ftype) = nparams;
315 TYPE_FIELDS (ftype) = (struct field *)
316 TYPE_ALLOC (ftype, nparams * sizeof (struct field));
317
de4f826b 318 iparams = 0;
8157b174
TT
319 /* Here we want to directly access the dictionary, because
320 we haven't fully initialized the block yet. */
321 ALL_DICT_SYMBOLS (BLOCK_DICT (block), iter, sym)
c906108c 322 {
de4f826b
DC
323 if (iparams == nparams)
324 break;
325
2a2d4dc3 326 if (SYMBOL_IS_ARGUMENT (sym))
c906108c 327 {
c906108c 328 TYPE_FIELD_TYPE (ftype, iparams) = SYMBOL_TYPE (sym);
8176bb6d 329 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
c906108c 330 iparams++;
c906108c
SS
331 }
332 }
333 }
334 }
335 }
336 else
337 {
338 BLOCK_FUNCTION (block) = NULL;
339 }
340
341 /* Now "free" the links of the list, and empty the list. */
342
343 for (next = *listhead; next; next = next1)
344 {
345 next1 = next->next;
346 next->next = free_pendings;
347 free_pendings = next;
348 }
349 *listhead = NULL;
350
c906108c 351 /* Check to be sure that the blocks have an end address that is
4a64f543 352 greater than starting address. */
c906108c
SS
353
354 if (BLOCK_END (block) < BLOCK_START (block))
355 {
356 if (symbol)
357 {
23136709 358 complaint (&symfile_complaints,
3e43a32a
MS
359 _("block end address less than block "
360 "start address in %s (patched it)"),
de5ad195 361 SYMBOL_PRINT_NAME (symbol));
c906108c
SS
362 }
363 else
364 {
23136709 365 complaint (&symfile_complaints,
3e43a32a
MS
366 _("block end address %s less than block "
367 "start address %s (patched it)"),
5af949e3
UW
368 paddress (gdbarch, BLOCK_END (block)),
369 paddress (gdbarch, BLOCK_START (block)));
c906108c 370 }
4a64f543 371 /* Better than nothing. */
c906108c
SS
372 BLOCK_END (block) = BLOCK_START (block);
373 }
c906108c
SS
374
375 /* Install this block as the superblock of all blocks made since the
376 start of this scope that don't have superblocks yet. */
377
378 opblock = NULL;
c0219d42
MS
379 for (pblock = pending_blocks;
380 pblock && pblock != old_blocks;
381 pblock = pblock->next)
c906108c
SS
382 {
383 if (BLOCK_SUPERBLOCK (pblock->block) == NULL)
384 {
c906108c 385 /* Check to be sure the blocks are nested as we receive
4a64f543 386 them. If the compiler/assembler/linker work, this just
14711c82
DJ
387 burns a small amount of time.
388
389 Skip blocks which correspond to a function; they're not
390 physically nested inside this other blocks, only
391 lexically nested. */
392 if (BLOCK_FUNCTION (pblock->block) == NULL
393 && (BLOCK_START (pblock->block) < BLOCK_START (block)
394 || BLOCK_END (pblock->block) > BLOCK_END (block)))
c906108c
SS
395 {
396 if (symbol)
397 {
23136709 398 complaint (&symfile_complaints,
3d263c1d 399 _("inner block not inside outer block in %s"),
de5ad195 400 SYMBOL_PRINT_NAME (symbol));
c906108c
SS
401 }
402 else
403 {
23136709 404 complaint (&symfile_complaints,
3e43a32a
MS
405 _("inner block (%s-%s) not "
406 "inside outer block (%s-%s)"),
5af949e3
UW
407 paddress (gdbarch, BLOCK_START (pblock->block)),
408 paddress (gdbarch, BLOCK_END (pblock->block)),
409 paddress (gdbarch, BLOCK_START (block)),
410 paddress (gdbarch, BLOCK_END (block)));
c906108c
SS
411 }
412 if (BLOCK_START (pblock->block) < BLOCK_START (block))
413 BLOCK_START (pblock->block) = BLOCK_START (block);
414 if (BLOCK_END (pblock->block) > BLOCK_END (block))
415 BLOCK_END (pblock->block) = BLOCK_END (block);
416 }
c906108c
SS
417 BLOCK_SUPERBLOCK (pblock->block) = block;
418 }
419 opblock = pblock;
420 }
421
27aa8d6a 422 block_set_using (block, using_directives, &objfile->objfile_obstack);
00ae8fef 423 using_directives = NULL;
27aa8d6a 424
c906108c 425 record_pending_block (objfile, block, opblock);
801e3a5b
JB
426
427 return block;
c906108c
SS
428}
429
84a146c9
TT
430struct block *
431finish_block (struct symbol *symbol, struct pending **listhead,
432 struct pending_block *old_blocks,
433 CORE_ADDR start, CORE_ADDR end,
434 struct objfile *objfile)
435{
436 return finish_block_internal (symbol, listhead, old_blocks,
6d30eef8 437 start, end, objfile, 0, 0);
84a146c9 438}
de4f826b 439
c906108c
SS
440/* Record BLOCK on the list of all blocks in the file. Put it after
441 OPBLOCK, or at the beginning if opblock is NULL. This puts the
442 block in the list after all its subblocks.
443
4a146b47 444 Allocate the pending block struct in the objfile_obstack to save
c906108c
SS
445 time. This wastes a little space. FIXME: Is it worth it? */
446
0b49e518 447static void
c906108c
SS
448record_pending_block (struct objfile *objfile, struct block *block,
449 struct pending_block *opblock)
450{
52f0bd74 451 struct pending_block *pblock;
c906108c 452
93eed41f
TT
453 if (pending_blocks == NULL)
454 obstack_init (&pending_block_obstack);
455
c906108c 456 pblock = (struct pending_block *)
93eed41f 457 obstack_alloc (&pending_block_obstack, sizeof (struct pending_block));
c906108c
SS
458 pblock->block = block;
459 if (opblock)
460 {
461 pblock->next = opblock->next;
462 opblock->next = pblock;
463 }
464 else
465 {
466 pblock->next = pending_blocks;
467 pending_blocks = pblock;
468 }
469}
470
801e3a5b
JB
471
472/* Record that the range of addresses from START to END_INCLUSIVE
473 (inclusive, like it says) belongs to BLOCK. BLOCK's start and end
474 addresses must be set already. You must apply this function to all
475 BLOCK's children before applying it to BLOCK.
476
477 If a call to this function complicates the picture beyond that
478 already provided by BLOCK_START and BLOCK_END, then we create an
479 address map for the block. */
480void
481record_block_range (struct block *block,
482 CORE_ADDR start, CORE_ADDR end_inclusive)
483{
484 /* If this is any different from the range recorded in the block's
485 own BLOCK_START and BLOCK_END, then note that the address map has
486 become interesting. Note that even if this block doesn't have
487 any "interesting" ranges, some later block might, so we still
488 need to record this block in the addrmap. */
489 if (start != BLOCK_START (block)
490 || end_inclusive + 1 != BLOCK_END (block))
491 pending_addrmap_interesting = 1;
492
493 if (! pending_addrmap)
494 {
495 obstack_init (&pending_addrmap_obstack);
496 pending_addrmap = addrmap_create_mutable (&pending_addrmap_obstack);
497 }
498
499 addrmap_set_empty (pending_addrmap, start, end_inclusive, block);
500}
501
502
822e978b 503static struct blockvector *
c906108c
SS
504make_blockvector (struct objfile *objfile)
505{
52f0bd74
AC
506 struct pending_block *next;
507 struct blockvector *blockvector;
508 int i;
c906108c
SS
509
510 /* Count the length of the list of blocks. */
511
512 for (next = pending_blocks, i = 0; next; next = next->next, i++)
513 {;
514 }
515
516 blockvector = (struct blockvector *)
4a146b47 517 obstack_alloc (&objfile->objfile_obstack,
c906108c
SS
518 (sizeof (struct blockvector)
519 + (i - 1) * sizeof (struct block *)));
520
4a64f543 521 /* Copy the blocks into the blockvector. This is done in reverse
c906108c 522 order, which happens to put the blocks into the proper order
4a64f543 523 (ascending starting address). finish_block has hair to insert
c906108c
SS
524 each block into the list after its subblocks in order to make
525 sure this is true. */
526
527 BLOCKVECTOR_NBLOCKS (blockvector) = i;
528 for (next = pending_blocks; next; next = next->next)
529 {
530 BLOCKVECTOR_BLOCK (blockvector, --i) = next->block;
531 }
532
89ba75b1 533 free_pending_blocks ();
c906108c 534
801e3a5b
JB
535 /* If we needed an address map for this symtab, record it in the
536 blockvector. */
537 if (pending_addrmap && pending_addrmap_interesting)
538 BLOCKVECTOR_MAP (blockvector)
539 = addrmap_create_fixed (pending_addrmap, &objfile->objfile_obstack);
540 else
541 BLOCKVECTOR_MAP (blockvector) = 0;
4aad0dfc 542
c906108c 543 /* Some compilers output blocks in the wrong order, but we depend on
4a64f543 544 their being in the right order so we can binary search. Check the
4aad0dfc
DE
545 order and moan about it.
546 Note: Remember that the first two blocks are the global and static
547 blocks. We could special case that fact and begin checking at block 2.
548 To avoid making that assumption we do not. */
c906108c
SS
549 if (BLOCKVECTOR_NBLOCKS (blockvector) > 1)
550 {
551 for (i = 1; i < BLOCKVECTOR_NBLOCKS (blockvector); i++)
552 {
553 if (BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i - 1))
554 > BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i)))
555 {
59527da0
JB
556 CORE_ADDR start
557 = BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i));
c906108c 558
3d263c1d 559 complaint (&symfile_complaints, _("block at %s out of order"),
bb599908 560 hex_string ((LONGEST) start));
c906108c
SS
561 }
562 }
563 }
c906108c
SS
564
565 return (blockvector);
566}
567\f
568/* Start recording information about source code that came from an
569 included (or otherwise merged-in) source file with a different
570 name. NAME is the name of the file (cannot be NULL), DIRNAME is
4a64f543
MS
571 the directory in which the file was compiled (or NULL if not
572 known). */
c906108c
SS
573
574void
72b9f47f 575start_subfile (const char *name, const char *dirname)
c906108c 576{
52f0bd74 577 struct subfile *subfile;
c906108c
SS
578
579 /* See if this subfile is already known as a subfile of the current
580 main source file. */
581
582 for (subfile = subfiles; subfile; subfile = subfile->next)
583 {
84ba0adf
DJ
584 char *subfile_name;
585
586 /* If NAME is an absolute path, and this subfile is not, then
587 attempt to create an absolute path to compare. */
588 if (IS_ABSOLUTE_PATH (name)
589 && !IS_ABSOLUTE_PATH (subfile->name)
590 && subfile->dirname != NULL)
591 subfile_name = concat (subfile->dirname, SLASH_STRING,
6eb7ee03 592 subfile->name, (char *) NULL);
84ba0adf
DJ
593 else
594 subfile_name = subfile->name;
595
596 if (FILENAME_CMP (subfile_name, name) == 0)
c906108c
SS
597 {
598 current_subfile = subfile;
84ba0adf
DJ
599 if (subfile_name != subfile->name)
600 xfree (subfile_name);
c906108c
SS
601 return;
602 }
84ba0adf
DJ
603 if (subfile_name != subfile->name)
604 xfree (subfile_name);
c906108c
SS
605 }
606
4a64f543 607 /* This subfile is not known. Add an entry for it. Make an entry
c906108c
SS
608 for this subfile in the list of all subfiles of the current main
609 source file. */
610
611 subfile = (struct subfile *) xmalloc (sizeof (struct subfile));
59527da0 612 memset ((char *) subfile, 0, sizeof (struct subfile));
c906108c
SS
613 subfile->next = subfiles;
614 subfiles = subfile;
615 current_subfile = subfile;
616
4a64f543 617 /* Save its name and compilation directory name. */
b74db436 618 subfile->name = xstrdup (name);
1b36a34b 619 subfile->dirname = (dirname == NULL) ? NULL : xstrdup (dirname);
c906108c
SS
620
621 /* Initialize line-number recording for this subfile. */
622 subfile->line_vector = NULL;
623
624 /* Default the source language to whatever can be deduced from the
625 filename. If nothing can be deduced (such as for a C/C++ include
626 file with a ".h" extension), then inherit whatever language the
627 previous subfile had. This kludgery is necessary because there
628 is no standard way in some object formats to record the source
629 language. Also, when symtabs are allocated we try to deduce a
630 language then as well, but it is too late for us to use that
631 information while reading symbols, since symtabs aren't allocated
632 until after all the symbols have been processed for a given
4a64f543 633 source file. */
c906108c
SS
634
635 subfile->language = deduce_language_from_filename (subfile->name);
5aafa1cc
PM
636 if (subfile->language == language_unknown
637 && subfile->next != NULL)
c906108c
SS
638 {
639 subfile->language = subfile->next->language;
640 }
641
642 /* Initialize the debug format string to NULL. We may supply it
4a64f543 643 later via a call to record_debugformat. */
c906108c
SS
644 subfile->debugformat = NULL;
645
303b6f5d
DJ
646 /* Similarly for the producer. */
647 subfile->producer = NULL;
648
25caa7a8 649 /* If the filename of this subfile ends in .C, then change the
c906108c 650 language of any pending subfiles from C to C++. We also accept
25caa7a8 651 any other C++ suffixes accepted by deduce_language_from_filename. */
c906108c
SS
652 /* Likewise for f2c. */
653
654 if (subfile->name)
655 {
656 struct subfile *s;
657 enum language sublang = deduce_language_from_filename (subfile->name);
658
659 if (sublang == language_cplus || sublang == language_fortran)
660 for (s = subfiles; s != NULL; s = s->next)
661 if (s->language == language_c)
662 s->language = sublang;
663 }
664
665 /* And patch up this file if necessary. */
666 if (subfile->language == language_c
667 && subfile->next != NULL
668 && (subfile->next->language == language_cplus
669 || subfile->next->language == language_fortran))
670 {
671 subfile->language = subfile->next->language;
672 }
673}
674
675/* For stabs readers, the first N_SO symbol is assumed to be the
676 source file name, and the subfile struct is initialized using that
677 assumption. If another N_SO symbol is later seen, immediately
678 following the first one, then the first one is assumed to be the
679 directory name and the second one is really the source file name.
680
681 So we have to patch up the subfile struct by moving the old name
682 value to dirname and remembering the new name. Some sanity
683 checking is performed to ensure that the state of the subfile
684 struct is reasonable and that the old name we are assuming to be a
4a64f543 685 directory name actually is (by checking for a trailing '/'). */
c906108c
SS
686
687void
688patch_subfile_names (struct subfile *subfile, char *name)
689{
690 if (subfile != NULL && subfile->dirname == NULL && subfile->name != NULL
0ba1096a 691 && IS_DIR_SEPARATOR (subfile->name[strlen (subfile->name) - 1]))
c906108c
SS
692 {
693 subfile->dirname = subfile->name;
1b36a34b 694 subfile->name = xstrdup (name);
46212e0b 695 set_last_source_file (name);
c906108c
SS
696
697 /* Default the source language to whatever can be deduced from
698 the filename. If nothing can be deduced (such as for a C/C++
699 include file with a ".h" extension), then inherit whatever
700 language the previous subfile had. This kludgery is
701 necessary because there is no standard way in some object
702 formats to record the source language. Also, when symtabs
703 are allocated we try to deduce a language then as well, but
704 it is too late for us to use that information while reading
705 symbols, since symtabs aren't allocated until after all the
4a64f543 706 symbols have been processed for a given source file. */
c906108c
SS
707
708 subfile->language = deduce_language_from_filename (subfile->name);
5aafa1cc
PM
709 if (subfile->language == language_unknown
710 && subfile->next != NULL)
c906108c
SS
711 {
712 subfile->language = subfile->next->language;
713 }
714 }
715}
716\f
717/* Handle the N_BINCL and N_EINCL symbol types that act like N_SOL for
718 switching source files (different subfiles, as we call them) within
719 one object file, but using a stack rather than in an arbitrary
720 order. */
721
722void
723push_subfile (void)
724{
52f0bd74 725 struct subfile_stack *tem
cc59ec59 726 = (struct subfile_stack *) xmalloc (sizeof (struct subfile_stack));
c906108c
SS
727
728 tem->next = subfile_stack;
729 subfile_stack = tem;
730 if (current_subfile == NULL || current_subfile->name == NULL)
731 {
4a64f543
MS
732 internal_error (__FILE__, __LINE__,
733 _("failed internal consistency check"));
c906108c
SS
734 }
735 tem->name = current_subfile->name;
736}
737
738char *
739pop_subfile (void)
740{
52f0bd74
AC
741 char *name;
742 struct subfile_stack *link = subfile_stack;
c906108c
SS
743
744 if (link == NULL)
745 {
3e43a32a
MS
746 internal_error (__FILE__, __LINE__,
747 _("failed internal consistency check"));
c906108c
SS
748 }
749 name = link->name;
750 subfile_stack = link->next;
b8c9b27d 751 xfree ((void *) link);
c906108c
SS
752 return (name);
753}
754\f
755/* Add a linetable entry for line number LINE and address PC to the
756 line vector for SUBFILE. */
757
758void
aa1ee363 759record_line (struct subfile *subfile, int line, CORE_ADDR pc)
c906108c
SS
760{
761 struct linetable_entry *e;
c906108c 762
cc59ec59 763 /* Ignore the dummy line number in libg.o */
c906108c
SS
764 if (line == 0xffff)
765 {
766 return;
767 }
768
769 /* Make sure line vector exists and is big enough. */
770 if (!subfile->line_vector)
771 {
772 subfile->line_vector_length = INITIAL_LINE_VECTOR_LENGTH;
773 subfile->line_vector = (struct linetable *)
774 xmalloc (sizeof (struct linetable)
c5aa993b 775 + subfile->line_vector_length * sizeof (struct linetable_entry));
c906108c
SS
776 subfile->line_vector->nitems = 0;
777 have_line_numbers = 1;
778 }
779
780 if (subfile->line_vector->nitems + 1 >= subfile->line_vector_length)
781 {
782 subfile->line_vector_length *= 2;
783 subfile->line_vector = (struct linetable *)
784 xrealloc ((char *) subfile->line_vector,
785 (sizeof (struct linetable)
786 + (subfile->line_vector_length
787 * sizeof (struct linetable_entry))));
788 }
789
607ae575
DJ
790 /* Normally, we treat lines as unsorted. But the end of sequence
791 marker is special. We sort line markers at the same PC by line
792 number, so end of sequence markers (which have line == 0) appear
793 first. This is right if the marker ends the previous function,
794 and there is no padding before the next function. But it is
795 wrong if the previous line was empty and we are now marking a
796 switch to a different subfile. We must leave the end of sequence
797 marker at the end of this group of lines, not sort the empty line
798 to after the marker. The easiest way to accomplish this is to
799 delete any empty lines from our table, if they are followed by
800 end of sequence markers. All we lose is the ability to set
801 breakpoints at some lines which contain no instructions
802 anyway. */
803 if (line == 0 && subfile->line_vector->nitems > 0)
804 {
805 e = subfile->line_vector->item + subfile->line_vector->nitems - 1;
806 while (subfile->line_vector->nitems > 0 && e->pc == pc)
807 {
808 e--;
809 subfile->line_vector->nitems--;
810 }
811 }
812
c906108c
SS
813 e = subfile->line_vector->item + subfile->line_vector->nitems++;
814 e->line = line;
607ae575 815 e->pc = pc;
c906108c
SS
816}
817
818/* Needed in order to sort line tables from IBM xcoff files. Sigh! */
819
820static int
821compare_line_numbers (const void *ln1p, const void *ln2p)
822{
823 struct linetable_entry *ln1 = (struct linetable_entry *) ln1p;
824 struct linetable_entry *ln2 = (struct linetable_entry *) ln2p;
825
826 /* Note: this code does not assume that CORE_ADDRs can fit in ints.
827 Please keep it that way. */
828 if (ln1->pc < ln2->pc)
829 return -1;
830
831 if (ln1->pc > ln2->pc)
832 return 1;
833
834 /* If pc equal, sort by line. I'm not sure whether this is optimum
835 behavior (see comment at struct linetable in symtab.h). */
836 return ln1->line - ln2->line;
837}
838\f
fc474241
DE
839/* Return the macro table.
840 Initialize it if this is the first use. */
841
842struct macro_table *
843get_macro_table (struct objfile *objfile, const char *comp_dir)
844{
845 if (! pending_macros)
846 pending_macros = new_macro_table (&objfile->per_bfd->storage_obstack,
847 objfile->per_bfd->macro_cache,
848 comp_dir);
849 return pending_macros;
850}
851\f
c906108c
SS
852/* Start a new symtab for a new source file. Called, for example,
853 when a stabs symbol of type N_SO is seen, or when a DWARF
854 TAG_compile_unit DIE is seen. It indicates the start of data for
0b0287a1
DE
855 one original source file.
856
857 NAME is the name of the file (cannot be NULL). DIRNAME is the directory in
858 which the file was compiled (or NULL if not known). START_ADDR is the
859 lowest address of objects in the file (or 0 if not known). */
c906108c
SS
860
861void
46212e0b 862start_symtab (const char *name, const char *dirname, CORE_ADDR start_addr)
c906108c 863{
6d30eef8 864 restart_symtab (start_addr);
46212e0b 865 set_last_source_file (name);
6d30eef8
DE
866 start_subfile (name, dirname);
867}
868
869/* Restart compilation for a symtab.
870 This is used when a symtab is built from multiple sources.
871 The symtab is first built with start_symtab and then for each additional
872 piece call restart_symtab. */
873
874void
875restart_symtab (CORE_ADDR start_addr)
876{
46212e0b 877 set_last_source_file (NULL);
c906108c
SS
878 last_source_start_addr = start_addr;
879 file_symbols = NULL;
880 global_symbols = NULL;
881 within_function = 0;
882 have_line_numbers = 0;
883
884 /* Context stack is initially empty. Allocate first one with room
885 for 10 levels; reuse it forever afterward. */
886 if (context_stack == NULL)
887 {
888 context_stack_size = INITIAL_CONTEXT_STACK_SIZE;
889 context_stack = (struct context_stack *)
890 xmalloc (context_stack_size * sizeof (struct context_stack));
891 }
892 context_stack_depth = 0;
893
801e3a5b
JB
894 /* We shouldn't have any address map at this point. */
895 gdb_assert (! pending_addrmap);
896
c906108c
SS
897 /* Initialize the list of sub source files with one entry for this
898 file (the top-level source file). */
c906108c
SS
899 subfiles = NULL;
900 current_subfile = NULL;
c906108c
SS
901}
902
4a64f543
MS
903/* Subroutine of end_symtab to simplify it. Look for a subfile that
904 matches the main source file's basename. If there is only one, and
905 if the main source file doesn't have any symbol or line number
906 information, then copy this file's symtab and line_vector to the
907 main source file's subfile and discard the other subfile. This can
908 happen because of a compiler bug or from the user playing games
909 with #line or from things like a distributed build system that
910 manipulates the debug info. */
4584e32e
DE
911
912static void
913watch_main_source_file_lossage (void)
914{
915 struct subfile *mainsub, *subfile;
916
917 /* Find the main source file.
918 This loop could be eliminated if start_symtab saved it for us. */
919 mainsub = NULL;
920 for (subfile = subfiles; subfile; subfile = subfile->next)
921 {
922 /* The main subfile is guaranteed to be the last one. */
923 if (subfile->next == NULL)
924 mainsub = subfile;
925 }
926
4a64f543
MS
927 /* If the main source file doesn't have any line number or symbol
928 info, look for an alias in another subfile.
929
930 We have to watch for mainsub == NULL here. It's a quirk of
931 end_symtab, it can return NULL so there may not be a main
932 subfile. */
4584e32e
DE
933
934 if (mainsub
935 && mainsub->line_vector == NULL
936 && mainsub->symtab == NULL)
937 {
938 const char *mainbase = lbasename (mainsub->name);
939 int nr_matches = 0;
940 struct subfile *prevsub;
941 struct subfile *mainsub_alias = NULL;
942 struct subfile *prev_mainsub_alias = NULL;
943
944 prevsub = NULL;
945 for (subfile = subfiles;
946 /* Stop before we get to the last one. */
947 subfile->next;
948 subfile = subfile->next)
949 {
0ba1096a 950 if (filename_cmp (lbasename (subfile->name), mainbase) == 0)
4584e32e
DE
951 {
952 ++nr_matches;
953 mainsub_alias = subfile;
954 prev_mainsub_alias = prevsub;
955 }
956 prevsub = subfile;
957 }
958
959 if (nr_matches == 1)
960 {
961 gdb_assert (mainsub_alias != NULL && mainsub_alias != mainsub);
962
963 /* Found a match for the main source file.
964 Copy its line_vector and symtab to the main subfile
965 and then discard it. */
966
967 mainsub->line_vector = mainsub_alias->line_vector;
968 mainsub->line_vector_length = mainsub_alias->line_vector_length;
969 mainsub->symtab = mainsub_alias->symtab;
970
971 if (prev_mainsub_alias == NULL)
972 subfiles = mainsub_alias->next;
973 else
974 prev_mainsub_alias->next = mainsub_alias->next;
975 xfree (mainsub_alias);
976 }
977 }
978}
979
98cc87bd 980/* Helper function for qsort. Parameters are `struct block *' pointers,
07e7f39f
JK
981 function sorts them in descending order by their BLOCK_START. */
982
983static int
984block_compar (const void *ap, const void *bp)
985{
986 const struct block *a = *(const struct block **) ap;
987 const struct block *b = *(const struct block **) bp;
988
989 return ((BLOCK_START (b) > BLOCK_START (a))
990 - (BLOCK_START (b) < BLOCK_START (a)));
991}
992
6d30eef8
DE
993/* Reset globals used to build symtabs. */
994
995static void
996reset_symtab_globals (void)
997{
46212e0b 998 set_last_source_file (NULL);
6d30eef8
DE
999 current_subfile = NULL;
1000 pending_macros = NULL;
1001 if (pending_addrmap)
1002 {
1003 obstack_free (&pending_addrmap_obstack, NULL);
1004 pending_addrmap = NULL;
1005 }
1006}
1007
4359dff1
JK
1008/* Implementation of the first part of end_symtab. It allows modifying
1009 STATIC_BLOCK before it gets finalized by end_symtab_from_static_block.
1010 If the returned value is NULL there is no blockvector created for
1011 this symtab (you still must call end_symtab_from_static_block).
c906108c 1012
4359dff1
JK
1013 END_ADDR is the same as for end_symtab: the address of the end of the
1014 file's text.
c906108c 1015
4359dff1 1016 If EXPANDABLE is non-zero the STATIC_BLOCK dictionary is made
36586728
TT
1017 expandable.
1018
1019 If REQUIRED is non-zero, then a symtab is created even if it does
1020 not contain any symbols. */
6d30eef8 1021
4359dff1
JK
1022struct block *
1023end_symtab_get_static_block (CORE_ADDR end_addr, struct objfile *objfile,
36586728 1024 int expandable, int required)
c906108c 1025{
c906108c
SS
1026 /* Finish the lexical context of the last function in the file; pop
1027 the context stack. */
1028
1029 if (context_stack_depth > 0)
1030 {
4359dff1
JK
1031 struct context_stack *cstk = pop_context ();
1032
c906108c
SS
1033 /* Make a block for the local symbols within. */
1034 finish_block (cstk->name, &local_symbols, cstk->old_blocks,
1035 cstk->start_addr, end_addr, objfile);
1036
1037 if (context_stack_depth > 0)
1038 {
1039 /* This is said to happen with SCO. The old coffread.c
1040 code simply emptied the context stack, so we do the
1041 same. FIXME: Find out why it is happening. This is not
1042 believed to happen in most cases (even for coffread.c);
1043 it used to be an abort(). */
23136709 1044 complaint (&symfile_complaints,
3d263c1d 1045 _("Context stack not empty in end_symtab"));
c906108c
SS
1046 context_stack_depth = 0;
1047 }
1048 }
1049
1050 /* Reordered executables may have out of order pending blocks; if
1051 OBJF_REORDERED is true, then sort the pending blocks. */
6d30eef8 1052
c906108c
SS
1053 if ((objfile->flags & OBJF_REORDERED) && pending_blocks)
1054 {
07e7f39f
JK
1055 unsigned count = 0;
1056 struct pending_block *pb;
1057 struct block **barray, **bp;
1058 struct cleanup *back_to;
c906108c 1059
07e7f39f
JK
1060 for (pb = pending_blocks; pb != NULL; pb = pb->next)
1061 count++;
c906108c 1062
07e7f39f
JK
1063 barray = xmalloc (sizeof (*barray) * count);
1064 back_to = make_cleanup (xfree, barray);
c906108c 1065
07e7f39f
JK
1066 bp = barray;
1067 for (pb = pending_blocks; pb != NULL; pb = pb->next)
1068 *bp++ = pb->block;
1069
1070 qsort (barray, count, sizeof (*barray), block_compar);
1071
1072 bp = barray;
1073 for (pb = pending_blocks; pb != NULL; pb = pb->next)
1074 pb->block = *bp++;
1075
1076 do_cleanups (back_to);
c906108c
SS
1077 }
1078
1079 /* Cleanup any undefined types that have been left hanging around
1080 (this needs to be done before the finish_blocks so that
1081 file_symbols is still good).
c5aa993b 1082
0a0edcd5 1083 Both cleanup_undefined_stabs_types and finish_global_stabs are stabs
c906108c
SS
1084 specific, but harmless for other symbol readers, since on gdb
1085 startup or when finished reading stabs, the state is set so these
1086 are no-ops. FIXME: Is this handled right in case of QUIT? Can
1087 we make this cleaner? */
1088
0a0edcd5 1089 cleanup_undefined_stabs_types (objfile);
c906108c
SS
1090 finish_global_stabs (objfile);
1091
36586728
TT
1092 if (!required
1093 && pending_blocks == NULL
c906108c
SS
1094 && file_symbols == NULL
1095 && global_symbols == NULL
99d9066e
JB
1096 && have_line_numbers == 0
1097 && pending_macros == NULL)
c906108c 1098 {
4359dff1
JK
1099 /* Ignore symtabs that have no functions with real debugging info. */
1100 return NULL;
1101 }
1102 else
1103 {
1104 /* Define the STATIC_BLOCK. */
1105 return finish_block_internal (NULL, &file_symbols, NULL,
1106 last_source_start_addr, end_addr, objfile,
1107 0, expandable);
1108 }
1109}
1110
1111/* Implementation of the second part of end_symtab. Pass STATIC_BLOCK
1112 as value returned by end_symtab_get_static_block.
1113
1114 SECTION is the same as for end_symtab: the section number
1115 (in objfile->section_offsets) of the blockvector and linetable.
1116
1117 If EXPANDABLE is non-zero the GLOBAL_BLOCK dictionary is made
1118 expandable. */
1119
1120struct symtab *
1121end_symtab_from_static_block (struct block *static_block,
1122 struct objfile *objfile, int section,
1123 int expandable)
1124{
1125 struct symtab *symtab = NULL;
1126 struct blockvector *blockvector;
1127 struct subfile *subfile;
1128 struct subfile *nextsub;
1129
1130 if (static_block == NULL)
1131 {
1132 /* Ignore symtabs that have no functions with real debugging info. */
c906108c
SS
1133 blockvector = NULL;
1134 }
1135 else
1136 {
4359dff1
JK
1137 CORE_ADDR end_addr = BLOCK_END (static_block);
1138
1139 /* Define after STATIC_BLOCK also GLOBAL_BLOCK, and build the
c906108c 1140 blockvector. */
4359dff1
JK
1141 finish_block_internal (NULL, &global_symbols, NULL,
1142 last_source_start_addr, end_addr, objfile,
1143 1, expandable);
c906108c
SS
1144 blockvector = make_blockvector (objfile);
1145 }
1146
f56ce883
DE
1147 /* Read the line table if it has to be read separately.
1148 This is only used by xcoffread.c. */
c295b2e5 1149 if (objfile->sf->sym_read_linetable != NULL)
f56ce883 1150 objfile->sf->sym_read_linetable (objfile);
c906108c 1151
4584e32e
DE
1152 /* Handle the case where the debug info specifies a different path
1153 for the main source file. It can cause us to lose track of its
1154 line number information. */
1155 watch_main_source_file_lossage ();
1156
c906108c
SS
1157 /* Now create the symtab objects proper, one for each subfile. */
1158 /* (The main file is the last one on the chain.) */
1159
1160 for (subfile = subfiles; subfile; subfile = nextsub)
1161 {
1162 int linetablesize = 0;
1163 symtab = NULL;
1164
4a64f543 1165 /* If we have blocks of symbols, make a symtab. Otherwise, just
c906108c
SS
1166 ignore this file and any line number info in it. */
1167 if (blockvector)
1168 {
1169 if (subfile->line_vector)
1170 {
1171 linetablesize = sizeof (struct linetable) +
1172 subfile->line_vector->nitems * sizeof (struct linetable_entry);
c906108c
SS
1173
1174 /* Like the pending blocks, the line table may be
1175 scrambled in reordered executables. Sort it if
1176 OBJF_REORDERED is true. */
1177 if (objfile->flags & OBJF_REORDERED)
1178 qsort (subfile->line_vector->item,
1179 subfile->line_vector->nitems,
c5aa993b 1180 sizeof (struct linetable_entry), compare_line_numbers);
c906108c
SS
1181 }
1182
1183 /* Now, allocate a symbol table. */
cb1df416
DJ
1184 if (subfile->symtab == NULL)
1185 symtab = allocate_symtab (subfile->name, objfile);
1186 else
1187 symtab = subfile->symtab;
c906108c
SS
1188
1189 /* Fill in its components. */
1190 symtab->blockvector = blockvector;
99d9066e 1191 symtab->macro_table = pending_macros;
c906108c
SS
1192 if (subfile->line_vector)
1193 {
4a64f543 1194 /* Reallocate the line table on the symbol obstack. */
c906108c 1195 symtab->linetable = (struct linetable *)
4a146b47 1196 obstack_alloc (&objfile->objfile_obstack, linetablesize);
c906108c
SS
1197 memcpy (symtab->linetable, subfile->line_vector, linetablesize);
1198 }
1199 else
1200 {
1201 symtab->linetable = NULL;
1202 }
1203 symtab->block_line_section = section;
1204 if (subfile->dirname)
1205 {
4a64f543 1206 /* Reallocate the dirname on the symbol obstack. */
8e96694e
TT
1207 symtab->dirname =
1208 obstack_copy0 (&objfile->objfile_obstack,
1209 subfile->dirname,
1210 strlen (subfile->dirname));
c906108c
SS
1211 }
1212 else
1213 {
1214 symtab->dirname = NULL;
1215 }
c906108c
SS
1216
1217 /* Use whatever language we have been using for this
1218 subfile, not the one that was deduced in allocate_symtab
1219 from the filename. We already did our own deducing when
1220 we created the subfile, and we may have altered our
1221 opinion of what language it is from things we found in
4a64f543 1222 the symbols. */
c906108c
SS
1223 symtab->language = subfile->language;
1224
9182c5bc
JK
1225 /* Save the debug format string (if any) in the symtab. */
1226 symtab->debugformat = subfile->debugformat;
1227
1228 /* Similarly for the producer. */
1229 symtab->producer = subfile->producer;
1230
c906108c
SS
1231 /* All symtabs for the main file and the subfiles share a
1232 blockvector, so we need to clear primary for everything
1233 but the main file. */
db0fec5c 1234 set_symtab_primary (symtab, 0);
c906108c 1235 }
24be086d
JB
1236 else
1237 {
1238 if (subfile->symtab)
1239 {
1240 /* Since we are ignoring that subfile, we also need
1241 to unlink the associated empty symtab that we created.
98cc87bd 1242 Otherwise, we can run into trouble because various parts
24be086d
JB
1243 such as the block-vector are uninitialized whereas
1244 the rest of the code assumes that they are.
1245
1246 We can only unlink the symtab because it was allocated
1247 on the objfile obstack. */
1248 struct symtab *s;
1249
1250 if (objfile->symtabs == subfile->symtab)
1251 objfile->symtabs = objfile->symtabs->next;
1252 else
1253 ALL_OBJFILE_SYMTABS (objfile, s)
1254 if (s->next == subfile->symtab)
1255 {
1256 s->next = s->next->next;
1257 break;
1258 }
1259 subfile->symtab = NULL;
1260 }
1261 }
c906108c
SS
1262 if (subfile->name != NULL)
1263 {
b8c9b27d 1264 xfree ((void *) subfile->name);
c906108c
SS
1265 }
1266 if (subfile->dirname != NULL)
1267 {
b8c9b27d 1268 xfree ((void *) subfile->dirname);
c906108c
SS
1269 }
1270 if (subfile->line_vector != NULL)
1271 {
b8c9b27d 1272 xfree ((void *) subfile->line_vector);
c906108c 1273 }
c906108c
SS
1274
1275 nextsub = subfile->next;
b8c9b27d 1276 xfree ((void *) subfile);
c906108c
SS
1277 }
1278
1279 /* Set this for the main source file. */
1280 if (symtab)
1281 {
db0fec5c 1282 set_symtab_primary (symtab, 1);
84a146c9
TT
1283
1284 if (symtab->blockvector)
1285 {
1286 struct block *b = BLOCKVECTOR_BLOCK (symtab->blockvector,
1287 GLOBAL_BLOCK);
1288
1289 set_block_symtab (b, symtab);
1290 }
c906108c
SS
1291 }
1292
cb1df416
DJ
1293 /* Default any symbols without a specified symtab to the primary
1294 symtab. */
1295 if (blockvector)
1296 {
1297 int block_i;
1298
1299 for (block_i = 0; block_i < BLOCKVECTOR_NBLOCKS (blockvector); block_i++)
1300 {
1301 struct block *block = BLOCKVECTOR_BLOCK (blockvector, block_i);
1302 struct symbol *sym;
1303 struct dict_iterator iter;
1304
4a64f543
MS
1305 /* Inlined functions may have symbols not in the global or
1306 static symbol lists. */
edb3359d
DJ
1307 if (BLOCK_FUNCTION (block) != NULL)
1308 if (SYMBOL_SYMTAB (BLOCK_FUNCTION (block)) == NULL)
1309 SYMBOL_SYMTAB (BLOCK_FUNCTION (block)) = symtab;
1310
8157b174 1311 /* Note that we only want to fix up symbols from the local
98cc87bd
DE
1312 blocks, not blocks coming from included symtabs. That is why
1313 we use ALL_DICT_SYMBOLS here and not ALL_BLOCK_SYMBOLS. */
8157b174 1314 ALL_DICT_SYMBOLS (BLOCK_DICT (block), iter, sym)
cb1df416
DJ
1315 if (SYMBOL_SYMTAB (sym) == NULL)
1316 SYMBOL_SYMTAB (sym) = symtab;
1317 }
1318 }
1319
6d30eef8
DE
1320 reset_symtab_globals ();
1321
1322 return symtab;
1323}
1324
4359dff1
JK
1325/* Finish the symbol definitions for one main source file, close off
1326 all the lexical contexts for that file (creating struct block's for
1327 them), then make the struct symtab for that file and put it in the
1328 list of all such.
1329
1330 END_ADDR is the address of the end of the file's text. SECTION is
1331 the section number (in objfile->section_offsets) of the blockvector
1332 and linetable.
1333
1334 Note that it is possible for end_symtab() to return NULL. In
1335 particular, for the DWARF case at least, it will return NULL when
1336 it finds a compilation unit that has exactly one DIE, a
1337 TAG_compile_unit DIE. This can happen when we link in an object
1338 file that was compiled from an empty source file. Returning NULL
1339 is probably not the correct thing to do, because then gdb will
1340 never know about this empty file (FIXME).
1341
1342 If you need to modify STATIC_BLOCK before it is finalized you should
1343 call end_symtab_get_static_block and end_symtab_from_static_block
1344 yourself. */
6d30eef8
DE
1345
1346struct symtab *
1347end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
1348{
4359dff1
JK
1349 struct block *static_block;
1350
36586728 1351 static_block = end_symtab_get_static_block (end_addr, objfile, 0, 0);
4359dff1 1352 return end_symtab_from_static_block (static_block, objfile, section, 0);
6d30eef8
DE
1353}
1354
4359dff1 1355/* Same as end_symtab except create a symtab that can be later added to. */
6d30eef8
DE
1356
1357struct symtab *
1358end_expandable_symtab (CORE_ADDR end_addr, struct objfile *objfile,
1359 int section)
1360{
4359dff1
JK
1361 struct block *static_block;
1362
36586728 1363 static_block = end_symtab_get_static_block (end_addr, objfile, 1, 0);
4359dff1 1364 return end_symtab_from_static_block (static_block, objfile, section, 1);
6d30eef8
DE
1365}
1366
1367/* Subroutine of augment_type_symtab to simplify it.
1368 Attach SYMTAB to all symbols in PENDING_LIST that don't have one. */
1369
1370static void
1371set_missing_symtab (struct pending *pending_list, struct symtab *symtab)
1372{
1373 struct pending *pending;
1374 int i;
1375
1376 for (pending = pending_list; pending != NULL; pending = pending->next)
801e3a5b 1377 {
6d30eef8
DE
1378 for (i = 0; i < pending->nsyms; ++i)
1379 {
1380 if (SYMBOL_SYMTAB (pending->symbol[i]) == NULL)
1381 SYMBOL_SYMTAB (pending->symbol[i]) = symtab;
1382 }
801e3a5b 1383 }
6d30eef8 1384}
c906108c 1385
6d30eef8
DE
1386/* Same as end_symtab, but for the case where we're adding more symbols
1387 to an existing symtab that is known to contain only type information.
1388 This is the case for DWARF4 Type Units. */
1389
1390void
1391augment_type_symtab (struct objfile *objfile, struct symtab *primary_symtab)
1392{
1393 struct blockvector *blockvector = primary_symtab->blockvector;
6d30eef8
DE
1394
1395 if (context_stack_depth > 0)
1396 {
1397 complaint (&symfile_complaints,
1398 _("Context stack not empty in augment_type_symtab"));
1399 context_stack_depth = 0;
1400 }
1401 if (pending_blocks != NULL)
1402 complaint (&symfile_complaints, _("Blocks in a type symtab"));
1403 if (pending_macros != NULL)
1404 complaint (&symfile_complaints, _("Macro in a type symtab"));
1405 if (have_line_numbers)
1406 complaint (&symfile_complaints,
1407 _("Line numbers recorded in a type symtab"));
1408
1409 if (file_symbols != NULL)
1410 {
1411 struct block *block = BLOCKVECTOR_BLOCK (blockvector, STATIC_BLOCK);
1412
1413 /* First mark any symbols without a specified symtab as belonging
1414 to the primary symtab. */
1415 set_missing_symtab (file_symbols, primary_symtab);
1416
1417 dict_add_pending (BLOCK_DICT (block), file_symbols);
1418 }
1419
1420 if (global_symbols != NULL)
1421 {
1422 struct block *block = BLOCKVECTOR_BLOCK (blockvector, GLOBAL_BLOCK);
1423
1424 /* First mark any symbols without a specified symtab as belonging
1425 to the primary symtab. */
1426 set_missing_symtab (global_symbols, primary_symtab);
1427
1428 dict_add_pending (BLOCK_DICT (block), global_symbols);
1429 }
1430
1431 reset_symtab_globals ();
c906108c
SS
1432}
1433
1434/* Push a context block. Args are an identifying nesting level
1435 (checkable when you pop it), and the starting PC address of this
1436 context. */
1437
1438struct context_stack *
1439push_context (int desc, CORE_ADDR valu)
1440{
52f0bd74 1441 struct context_stack *new;
c906108c
SS
1442
1443 if (context_stack_depth == context_stack_size)
1444 {
1445 context_stack_size *= 2;
1446 context_stack = (struct context_stack *)
1447 xrealloc ((char *) context_stack,
c5aa993b 1448 (context_stack_size * sizeof (struct context_stack)));
c906108c
SS
1449 }
1450
1451 new = &context_stack[context_stack_depth++];
1452 new->depth = desc;
1453 new->locals = local_symbols;
c906108c
SS
1454 new->old_blocks = pending_blocks;
1455 new->start_addr = valu;
27aa8d6a 1456 new->using_directives = using_directives;
c906108c
SS
1457 new->name = NULL;
1458
1459 local_symbols = NULL;
27aa8d6a 1460 using_directives = NULL;
c906108c
SS
1461
1462 return new;
1463}
0c5e171a 1464
a672ef13 1465/* Pop a context block. Returns the address of the context block just
4a64f543 1466 popped. */
a672ef13 1467
0c5e171a
KD
1468struct context_stack *
1469pop_context (void)
1470{
1471 gdb_assert (context_stack_depth > 0);
1472 return (&context_stack[--context_stack_depth]);
1473}
1474
c906108c 1475\f
357e46e7 1476
4a64f543 1477/* Compute a small integer hash code for the given name. */
c906108c
SS
1478
1479int
0d5cff50 1480hashname (const char *name)
c906108c 1481{
357e46e7 1482 return (hash(name,strlen(name)) % HASHSIZE);
c906108c
SS
1483}
1484\f
1485
1486void
554d387d 1487record_debugformat (const char *format)
c906108c 1488{
554d387d 1489 current_subfile->debugformat = format;
c906108c
SS
1490}
1491
303b6f5d
DJ
1492void
1493record_producer (const char *producer)
1494{
554d387d 1495 current_subfile->producer = producer;
303b6f5d
DJ
1496}
1497
c906108c
SS
1498/* Merge the first symbol list SRCLIST into the second symbol list
1499 TARGETLIST by repeated calls to add_symbol_to_list(). This
1500 procedure "frees" each link of SRCLIST by adding it to the
1501 free_pendings list. Caller must set SRCLIST to a null list after
1502 calling this function.
1503
4a64f543 1504 Void return. */
c906108c
SS
1505
1506void
1507merge_symbol_lists (struct pending **srclist, struct pending **targetlist)
1508{
52f0bd74 1509 int i;
c906108c
SS
1510
1511 if (!srclist || !*srclist)
1512 return;
1513
1514 /* Merge in elements from current link. */
1515 for (i = 0; i < (*srclist)->nsyms; i++)
1516 add_symbol_to_list ((*srclist)->symbol[i], targetlist);
1517
1518 /* Recurse on next. */
1519 merge_symbol_lists (&(*srclist)->next, targetlist);
1520
1521 /* "Free" the current link. */
1522 (*srclist)->next = free_pendings;
1523 free_pendings = (*srclist);
1524}
1525\f
46212e0b
TT
1526
1527/* Name of source file whose symbol data we are now processing. This
1528 comes from a symbol of type N_SO for stabs. For Dwarf it comes
1529 from the DW_AT_name attribute of a DW_TAG_compile_unit DIE. */
1530
1531static char *last_source_file;
1532
1533/* See buildsym.h. */
1534
1535void
1536set_last_source_file (const char *name)
1537{
1538 xfree (last_source_file);
1539 last_source_file = name == NULL ? NULL : xstrdup (name);
1540}
1541
1542/* See buildsym.h. */
1543
1544const char *
1545get_last_source_file (void)
1546{
1547 return last_source_file;
1548}
1549
1550\f
1551
c906108c
SS
1552/* Initialize anything that needs initializing when starting to read a
1553 fresh piece of a symbol file, e.g. reading in the stuff
1554 corresponding to a psymtab. */
1555
1556void
fba45db2 1557buildsym_init (void)
c906108c
SS
1558{
1559 free_pendings = NULL;
1560 file_symbols = NULL;
1561 global_symbols = NULL;
1562 pending_blocks = NULL;
99d9066e 1563 pending_macros = NULL;
aa14df25 1564 using_directives = NULL;
fc474241 1565 subfile_stack = NULL;
801e3a5b
JB
1566
1567 /* We shouldn't have any address map at this point. */
1568 gdb_assert (! pending_addrmap);
1569 pending_addrmap_interesting = 0;
c906108c
SS
1570}
1571
1572/* Initialize anything that needs initializing when a completely new
1573 symbol file is specified (not just adding some symbols from another
1574 file, e.g. a shared library). */
1575
1576void
fba45db2 1577buildsym_new_init (void)
c906108c
SS
1578{
1579 buildsym_init ();
1580}