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