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