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