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