Move the symbol lists 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     struct pending *next, *next1;
136
137     for (next = m_file_symbols; next != NULL; next = next1)
138       {
139         next1 = next->next;
140         xfree ((void *) next);
141       }
142
143     for (next = m_global_symbols; next != NULL; next = next1)
144       {
145         next1 = next->next;
146         xfree ((void *) next);
147       }
148   }
149
150   void set_last_source_file (const char *name)
151   {
152     char *new_name = name == NULL ? NULL : xstrdup (name);
153     m_last_source_file.reset (new_name);
154   }
155
156   struct macro_table *get_macro_table ()
157   {
158     if (m_pending_macros == nullptr)
159       m_pending_macros = new_macro_table (&objfile->per_bfd->storage_obstack,
160                                           objfile->per_bfd->macro_cache,
161                                           compunit_symtab);
162     return m_pending_macros;
163   }
164
165   struct macro_table *release_macros ()
166   {
167     struct macro_table *result = m_pending_macros;
168     m_pending_macros = nullptr;
169     return result;
170   }
171
172   /* This function is called to discard any pending blocks.  */
173
174   void free_pending_blocks ()
175   {
176     m_pending_block_obstack.clear ();
177     m_pending_blocks = nullptr;
178   }
179
180   /* The objfile we're reading debug info from.  */
181   struct objfile *objfile;
182
183   /* List of subfiles (source files).
184      Files are added to the front of the list.
185      This is important mostly for the language determination hacks we use,
186      which iterate over previously added files.  */
187   struct subfile *subfiles = nullptr;
188
189   /* The subfile of the main source file.  */
190   struct subfile *main_subfile = nullptr;
191
192   /* Name of source file whose symbol data we are now processing.  This
193      comes from a symbol of type N_SO for stabs.  For DWARF it comes
194      from the DW_AT_name attribute of a DW_TAG_compile_unit DIE.  */
195   gdb::unique_xmalloc_ptr<char> m_last_source_file;
196
197   /* E.g., DW_AT_comp_dir if DWARF.  Space for this is malloc'd.  */
198   gdb::unique_xmalloc_ptr<char> comp_dir;
199
200   /* Space for this is not malloc'd, and is assumed to have at least
201      the same lifetime as objfile.  */
202   const char *producer = nullptr;
203
204   /* Space for this is not malloc'd, and is assumed to have at least
205      the same lifetime as objfile.  */
206   const char *debugformat = nullptr;
207
208   /* The compunit we are building.  */
209   struct compunit_symtab *compunit_symtab = nullptr;
210
211   /* Language of this compunit_symtab.  */
212   enum language language;
213
214   /* The macro table for the compilation unit whose symbols we're
215      currently reading.  */
216   struct macro_table *m_pending_macros = nullptr;
217
218   /* True if symtab has line number info.  This prevents an otherwise
219      empty symtab from being tossed.  */
220   bool m_have_line_numbers = false;
221
222   /* Core address of start of text of current source file.  This too
223      comes from the N_SO symbol.  For Dwarf it typically comes from the
224      DW_AT_low_pc attribute of a DW_TAG_compile_unit DIE.  */
225   CORE_ADDR m_last_source_start_addr;
226
227   /* Stack of subfile names.  */
228   std::vector<const char *> m_subfile_stack;
229
230   /* The "using" directives local to lexical context.  */
231   struct using_direct *m_local_using_directives = nullptr;
232
233   /* Global "using" directives.  */
234   struct using_direct *m_global_using_directives = nullptr;
235
236   /* The stack of contexts that are pushed by push_context and popped
237      by pop_context.  */
238   std::vector<struct context_stack> m_context_stack;
239
240   struct subfile *m_current_subfile = nullptr;
241
242   /* The mutable address map for the compilation unit whose symbols
243      we're currently reading.  The symtabs' shared blockvector will
244      point to a fixed copy of this.  */
245   struct addrmap *m_pending_addrmap = nullptr;
246
247   /* The obstack on which we allocate pending_addrmap.
248      If pending_addrmap is NULL, this is uninitialized; otherwise, it is
249      initialized (and holds pending_addrmap).  */
250   auto_obstack m_pending_addrmap_obstack;
251
252   /* True if we recorded any ranges in the addrmap that are different
253      from those in the blockvector already.  We set this to false when
254      we start processing a symfile, and if it's still false at the
255      end, then we just toss the addrmap.  */
256   bool m_pending_addrmap_interesting = false;
257
258   /* An obstack used for allocating pending blocks.  */
259   auto_obstack m_pending_block_obstack;
260
261   /* Pointer to the head of a linked list of symbol blocks which have
262      already been finalized (lexical contexts already closed) and which
263      are just waiting to be built into a blockvector when finalizing the
264      associated symtab.  */
265   struct pending_block *m_pending_blocks = nullptr;
266
267   /* Pending static symbols and types at the top level.  */
268   struct pending *m_file_symbols = nullptr;
269
270   /* Pending global functions and variables.  */
271   struct pending *m_global_symbols = nullptr;
272
273   /* Pending symbols that are local to the lexical context.  */
274   struct pending *m_local_symbols = nullptr;
275 };
276
277 /* The work-in-progress of the compunit we are building.
278    This is created first, before any subfiles by start_symtab.  */
279
280 static struct buildsym_compunit *buildsym_compunit;
281
282 /* List of blocks already made (lexical contexts already closed).
283    This is used at the end to make the blockvector.  */
284
285 struct pending_block
286   {
287     struct pending_block *next;
288     struct block *block;
289   };
290
291 static void free_buildsym_compunit (void);
292
293 static int compare_line_numbers (const void *ln1p, const void *ln2p);
294
295 static void record_pending_block (struct objfile *objfile,
296                                   struct block *block,
297                                   struct pending_block *opblock);
298
299 /* Initial sizes of data structures.  These are realloc'd larger if
300    needed, and realloc'd down to the size actually used, when
301    completed.  */
302
303 #define INITIAL_LINE_VECTOR_LENGTH      1000
304 \f
305
306 /* Maintain the lists of symbols and blocks.  */
307
308 /* Add a symbol to one of the lists of symbols.  */
309
310 void
311 add_symbol_to_list (struct symbol *symbol, struct pending **listhead)
312 {
313   struct pending *link;
314
315   /* If this is an alias for another symbol, don't add it.  */
316   if (symbol->ginfo.name && symbol->ginfo.name[0] == '#')
317     return;
318
319   /* We keep PENDINGSIZE symbols in each link of the list.  If we
320      don't have a link with room in it, add a new link.  */
321   if (*listhead == NULL || (*listhead)->nsyms == PENDINGSIZE)
322     {
323       link = XNEW (struct pending);
324       link->next = *listhead;
325       *listhead = link;
326       link->nsyms = 0;
327     }
328
329   (*listhead)->symbol[(*listhead)->nsyms++] = symbol;
330 }
331
332 /* Find a symbol named NAME on a LIST.  NAME need not be
333    '\0'-terminated; LENGTH is the length of the name.  */
334
335 struct symbol *
336 find_symbol_in_list (struct pending *list, char *name, int length)
337 {
338   int j;
339   const char *pp;
340
341   while (list != NULL)
342     {
343       for (j = list->nsyms; --j >= 0;)
344         {
345           pp = SYMBOL_LINKAGE_NAME (list->symbol[j]);
346           if (*pp == *name && strncmp (pp, name, length) == 0
347               && pp[length] == '\0')
348             {
349               return (list->symbol[j]);
350             }
351         }
352       list = list->next;
353     }
354   return (NULL);
355 }
356
357 /* At end of reading syms, or in case of quit, ensure everything
358    associated with building symtabs is freed.
359
360    N.B. This is *not* intended to be used when building psymtabs.  Some debug
361    info readers call this anyway, which is harmless if confusing.  */
362
363 scoped_free_pendings::~scoped_free_pendings ()
364 {
365   free_buildsym_compunit ();
366 }
367
368 /* Take one of the lists of symbols and make a block from it.  Keep
369    the order the symbols have in the list (reversed from the input
370    file).  Put the block on the list of pending blocks.  */
371
372 static struct block *
373 finish_block_internal (struct symbol *symbol,
374                        struct pending **listhead,
375                        struct pending_block *old_blocks,
376                        const struct dynamic_prop *static_link,
377                        CORE_ADDR start, CORE_ADDR end,
378                        int is_global, int expandable)
379 {
380   struct objfile *objfile = buildsym_compunit->objfile;
381   struct gdbarch *gdbarch = get_objfile_arch (objfile);
382   struct pending *next, *next1;
383   struct block *block;
384   struct pending_block *pblock;
385   struct pending_block *opblock;
386
387   block = (is_global
388            ? allocate_global_block (&objfile->objfile_obstack)
389            : allocate_block (&objfile->objfile_obstack));
390
391   if (symbol)
392     {
393       BLOCK_DICT (block)
394         = dict_create_linear (&objfile->objfile_obstack,
395                               buildsym_compunit->language, *listhead);
396     }
397   else
398     {
399       if (expandable)
400         {
401           BLOCK_DICT (block)
402             = dict_create_hashed_expandable (buildsym_compunit->language);
403           dict_add_pending (BLOCK_DICT (block), *listhead);
404         }
405       else
406         {
407           BLOCK_DICT (block) =
408             dict_create_hashed (&objfile->objfile_obstack,
409                                 buildsym_compunit->language, *listhead);
410         }
411     }
412
413   BLOCK_START (block) = start;
414   BLOCK_END (block) = end;
415
416   /* Put the block in as the value of the symbol that names it.  */
417
418   if (symbol)
419     {
420       struct type *ftype = SYMBOL_TYPE (symbol);
421       struct dict_iterator iter;
422       SYMBOL_BLOCK_VALUE (symbol) = block;
423       BLOCK_FUNCTION (block) = symbol;
424
425       if (TYPE_NFIELDS (ftype) <= 0)
426         {
427           /* No parameter type information is recorded with the
428              function's type.  Set that from the type of the
429              parameter symbols.  */
430           int nparams = 0, iparams;
431           struct symbol *sym;
432
433           /* Here we want to directly access the dictionary, because
434              we haven't fully initialized the block yet.  */
435           ALL_DICT_SYMBOLS (BLOCK_DICT (block), iter, sym)
436             {
437               if (SYMBOL_IS_ARGUMENT (sym))
438                 nparams++;
439             }
440           if (nparams > 0)
441             {
442               TYPE_NFIELDS (ftype) = nparams;
443               TYPE_FIELDS (ftype) = (struct field *)
444                 TYPE_ALLOC (ftype, nparams * sizeof (struct field));
445
446               iparams = 0;
447               /* Here we want to directly access the dictionary, because
448                  we haven't fully initialized the block yet.  */
449               ALL_DICT_SYMBOLS (BLOCK_DICT (block), iter, sym)
450                 {
451                   if (iparams == nparams)
452                     break;
453
454                   if (SYMBOL_IS_ARGUMENT (sym))
455                     {
456                       TYPE_FIELD_TYPE (ftype, iparams) = SYMBOL_TYPE (sym);
457                       TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
458                       iparams++;
459                     }
460                 }
461             }
462         }
463     }
464   else
465     {
466       BLOCK_FUNCTION (block) = NULL;
467     }
468
469   if (static_link != NULL)
470     objfile_register_static_link (objfile, block, static_link);
471
472   /* Now free the links of the list, and empty the list.  */
473
474   for (next = *listhead; next; next = next1)
475     {
476       next1 = next->next;
477       xfree (next);
478     }
479   *listhead = NULL;
480
481   /* Check to be sure that the blocks have an end address that is
482      greater than starting address.  */
483
484   if (BLOCK_END (block) < BLOCK_START (block))
485     {
486       if (symbol)
487         {
488           complaint (_("block end address less than block "
489                        "start address in %s (patched it)"),
490                      SYMBOL_PRINT_NAME (symbol));
491         }
492       else
493         {
494           complaint (_("block end address %s less than block "
495                        "start address %s (patched it)"),
496                      paddress (gdbarch, BLOCK_END (block)),
497                      paddress (gdbarch, BLOCK_START (block)));
498         }
499       /* Better than nothing.  */
500       BLOCK_END (block) = BLOCK_START (block);
501     }
502
503   /* Install this block as the superblock of all blocks made since the
504      start of this scope that don't have superblocks yet.  */
505
506   opblock = NULL;
507   for (pblock = buildsym_compunit->m_pending_blocks; 
508        pblock && pblock != old_blocks; 
509        pblock = pblock->next)
510     {
511       if (BLOCK_SUPERBLOCK (pblock->block) == NULL)
512         {
513           /* Check to be sure the blocks are nested as we receive
514              them.  If the compiler/assembler/linker work, this just
515              burns a small amount of time.
516
517              Skip blocks which correspond to a function; they're not
518              physically nested inside this other blocks, only
519              lexically nested.  */
520           if (BLOCK_FUNCTION (pblock->block) == NULL
521               && (BLOCK_START (pblock->block) < BLOCK_START (block)
522                   || BLOCK_END (pblock->block) > BLOCK_END (block)))
523             {
524               if (symbol)
525                 {
526                   complaint (_("inner block not inside outer block in %s"),
527                              SYMBOL_PRINT_NAME (symbol));
528                 }
529               else
530                 {
531                   complaint (_("inner block (%s-%s) not "
532                                "inside outer block (%s-%s)"),
533                              paddress (gdbarch, BLOCK_START (pblock->block)),
534                              paddress (gdbarch, BLOCK_END (pblock->block)),
535                              paddress (gdbarch, BLOCK_START (block)),
536                              paddress (gdbarch, BLOCK_END (block)));
537                 }
538               if (BLOCK_START (pblock->block) < BLOCK_START (block))
539                 BLOCK_START (pblock->block) = BLOCK_START (block);
540               if (BLOCK_END (pblock->block) > BLOCK_END (block))
541                 BLOCK_END (pblock->block) = BLOCK_END (block);
542             }
543           BLOCK_SUPERBLOCK (pblock->block) = block;
544         }
545       opblock = pblock;
546     }
547
548   block_set_using (block,
549                    (is_global
550                     ? buildsym_compunit->m_global_using_directives
551                     : buildsym_compunit->m_local_using_directives),
552                    &objfile->objfile_obstack);
553   if (is_global)
554     buildsym_compunit->m_global_using_directives = NULL;
555   else
556     buildsym_compunit->m_local_using_directives = NULL;
557
558   record_pending_block (objfile, block, opblock);
559
560   return block;
561 }
562
563 struct block *
564 finish_block (struct symbol *symbol,
565               struct pending_block *old_blocks,
566               const struct dynamic_prop *static_link,
567               CORE_ADDR start, CORE_ADDR end)
568 {
569   return finish_block_internal (symbol, &buildsym_compunit->m_local_symbols,
570                                 old_blocks, static_link,
571                                 start, end, 0, 0);
572 }
573
574 /* Record BLOCK on the list of all blocks in the file.  Put it after
575    OPBLOCK, or at the beginning if opblock is NULL.  This puts the
576    block in the list after all its subblocks.
577
578    Allocate the pending block struct in the objfile_obstack to save
579    time.  This wastes a little space.  FIXME: Is it worth it?  */
580
581 static void
582 record_pending_block (struct objfile *objfile, struct block *block,
583                       struct pending_block *opblock)
584 {
585   struct pending_block *pblock;
586
587   pblock = XOBNEW (&buildsym_compunit->m_pending_block_obstack,
588                    struct pending_block);
589   pblock->block = block;
590   if (opblock)
591     {
592       pblock->next = opblock->next;
593       opblock->next = pblock;
594     }
595   else
596     {
597       pblock->next = buildsym_compunit->m_pending_blocks;
598       buildsym_compunit->m_pending_blocks = pblock;
599     }
600 }
601
602
603 /* Record that the range of addresses from START to END_INCLUSIVE
604    (inclusive, like it says) belongs to BLOCK.  BLOCK's start and end
605    addresses must be set already.  You must apply this function to all
606    BLOCK's children before applying it to BLOCK.
607
608    If a call to this function complicates the picture beyond that
609    already provided by BLOCK_START and BLOCK_END, then we create an
610    address map for the block.  */
611 void
612 record_block_range (struct block *block,
613                     CORE_ADDR start, CORE_ADDR end_inclusive)
614 {
615   /* If this is any different from the range recorded in the block's
616      own BLOCK_START and BLOCK_END, then note that the address map has
617      become interesting.  Note that even if this block doesn't have
618      any "interesting" ranges, some later block might, so we still
619      need to record this block in the addrmap.  */
620   if (start != BLOCK_START (block)
621       || end_inclusive + 1 != BLOCK_END (block))
622     buildsym_compunit->m_pending_addrmap_interesting = true;
623
624   if (buildsym_compunit->m_pending_addrmap == nullptr)
625     buildsym_compunit->m_pending_addrmap
626       = addrmap_create_mutable (&buildsym_compunit->m_pending_addrmap_obstack);
627
628   addrmap_set_empty (buildsym_compunit->m_pending_addrmap,
629                      start, end_inclusive, block);
630 }
631
632 static struct blockvector *
633 make_blockvector (void)
634 {
635   struct objfile *objfile = buildsym_compunit->objfile;
636   struct pending_block *next;
637   struct blockvector *blockvector;
638   int i;
639
640   /* Count the length of the list of blocks.  */
641
642   for (next = buildsym_compunit->m_pending_blocks, i = 0;
643        next;
644        next = next->next, i++)
645     {
646     }
647
648   blockvector = (struct blockvector *)
649     obstack_alloc (&objfile->objfile_obstack,
650                    (sizeof (struct blockvector)
651                     + (i - 1) * sizeof (struct block *)));
652
653   /* Copy the blocks into the blockvector.  This is done in reverse
654      order, which happens to put the blocks into the proper order
655      (ascending starting address).  finish_block has hair to insert
656      each block into the list after its subblocks in order to make
657      sure this is true.  */
658
659   BLOCKVECTOR_NBLOCKS (blockvector) = i;
660   for (next = buildsym_compunit->m_pending_blocks; next; next = next->next)
661     {
662       BLOCKVECTOR_BLOCK (blockvector, --i) = next->block;
663     }
664
665   buildsym_compunit->free_pending_blocks ();
666
667   /* If we needed an address map for this symtab, record it in the
668      blockvector.  */
669   if (buildsym_compunit->m_pending_addrmap != nullptr
670       && buildsym_compunit->m_pending_addrmap_interesting)
671     BLOCKVECTOR_MAP (blockvector)
672       = addrmap_create_fixed (buildsym_compunit->m_pending_addrmap,
673                               &objfile->objfile_obstack);
674   else
675     BLOCKVECTOR_MAP (blockvector) = 0;
676
677   /* Some compilers output blocks in the wrong order, but we depend on
678      their being in the right order so we can binary search.  Check the
679      order and moan about it.
680      Note: Remember that the first two blocks are the global and static
681      blocks.  We could special case that fact and begin checking at block 2.
682      To avoid making that assumption we do not.  */
683   if (BLOCKVECTOR_NBLOCKS (blockvector) > 1)
684     {
685       for (i = 1; i < BLOCKVECTOR_NBLOCKS (blockvector); i++)
686         {
687           if (BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i - 1))
688               > BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i)))
689             {
690               CORE_ADDR start
691                 = BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i));
692
693               complaint (_("block at %s out of order"),
694                          hex_string ((LONGEST) start));
695             }
696         }
697     }
698
699   return (blockvector);
700 }
701 \f
702 /* Start recording information about source code that came from an
703    included (or otherwise merged-in) source file with a different
704    name.  NAME is the name of the file (cannot be NULL).  */
705
706 void
707 start_subfile (const char *name)
708 {
709   const char *subfile_dirname;
710   struct subfile *subfile;
711
712   gdb_assert (buildsym_compunit != NULL);
713
714   subfile_dirname = buildsym_compunit->comp_dir.get ();
715
716   /* See if this subfile is already registered.  */
717
718   for (subfile = buildsym_compunit->subfiles; subfile; subfile = subfile->next)
719     {
720       char *subfile_name;
721
722       /* If NAME is an absolute path, and this subfile is not, then
723          attempt to create an absolute path to compare.  */
724       if (IS_ABSOLUTE_PATH (name)
725           && !IS_ABSOLUTE_PATH (subfile->name)
726           && subfile_dirname != NULL)
727         subfile_name = concat (subfile_dirname, SLASH_STRING,
728                                subfile->name, (char *) NULL);
729       else
730         subfile_name = subfile->name;
731
732       if (FILENAME_CMP (subfile_name, name) == 0)
733         {
734           buildsym_compunit->m_current_subfile = subfile;
735           if (subfile_name != subfile->name)
736             xfree (subfile_name);
737           return;
738         }
739       if (subfile_name != subfile->name)
740         xfree (subfile_name);
741     }
742
743   /* This subfile is not known.  Add an entry for it.  */
744
745   subfile = XNEW (struct subfile);
746   memset (subfile, 0, sizeof (struct subfile));
747   subfile->buildsym_compunit = buildsym_compunit;
748
749   subfile->next = buildsym_compunit->subfiles;
750   buildsym_compunit->subfiles = subfile;
751
752   buildsym_compunit->m_current_subfile = subfile;
753
754   subfile->name = xstrdup (name);
755
756   /* Initialize line-number recording for this subfile.  */
757   subfile->line_vector = NULL;
758
759   /* Default the source language to whatever can be deduced from the
760      filename.  If nothing can be deduced (such as for a C/C++ include
761      file with a ".h" extension), then inherit whatever language the
762      previous subfile had.  This kludgery is necessary because there
763      is no standard way in some object formats to record the source
764      language.  Also, when symtabs are allocated we try to deduce a
765      language then as well, but it is too late for us to use that
766      information while reading symbols, since symtabs aren't allocated
767      until after all the symbols have been processed for a given
768      source file.  */
769
770   subfile->language = deduce_language_from_filename (subfile->name);
771   if (subfile->language == language_unknown
772       && subfile->next != NULL)
773     {
774       subfile->language = subfile->next->language;
775     }
776
777   /* If the filename of this subfile ends in .C, then change the
778      language of any pending subfiles from C to C++.  We also accept
779      any other C++ suffixes accepted by deduce_language_from_filename.  */
780   /* Likewise for f2c.  */
781
782   if (subfile->name)
783     {
784       struct subfile *s;
785       enum language sublang = deduce_language_from_filename (subfile->name);
786
787       if (sublang == language_cplus || sublang == language_fortran)
788         for (s = buildsym_compunit->subfiles; s != NULL; s = s->next)
789           if (s->language == language_c)
790             s->language = sublang;
791     }
792
793   /* And patch up this file if necessary.  */
794   if (subfile->language == language_c
795       && subfile->next != NULL
796       && (subfile->next->language == language_cplus
797           || subfile->next->language == language_fortran))
798     {
799       subfile->language = subfile->next->language;
800     }
801 }
802
803 /* Delete the buildsym compunit.  */
804
805 static void
806 free_buildsym_compunit (void)
807 {
808   if (buildsym_compunit == NULL)
809     return;
810   delete buildsym_compunit;
811   buildsym_compunit = NULL;
812 }
813
814 /* For stabs readers, the first N_SO symbol is assumed to be the
815    source file name, and the subfile struct is initialized using that
816    assumption.  If another N_SO symbol is later seen, immediately
817    following the first one, then the first one is assumed to be the
818    directory name and the second one is really the source file name.
819
820    So we have to patch up the subfile struct by moving the old name
821    value to dirname and remembering the new name.  Some sanity
822    checking is performed to ensure that the state of the subfile
823    struct is reasonable and that the old name we are assuming to be a
824    directory name actually is (by checking for a trailing '/').  */
825
826 void
827 patch_subfile_names (struct subfile *subfile, const char *name)
828 {
829   if (subfile != NULL
830       && buildsym_compunit->comp_dir == NULL
831       && subfile->name != NULL
832       && IS_DIR_SEPARATOR (subfile->name[strlen (subfile->name) - 1]))
833     {
834       buildsym_compunit->comp_dir.reset (subfile->name);
835       subfile->name = xstrdup (name);
836       set_last_source_file (name);
837
838       /* Default the source language to whatever can be deduced from
839          the filename.  If nothing can be deduced (such as for a C/C++
840          include file with a ".h" extension), then inherit whatever
841          language the previous subfile had.  This kludgery is
842          necessary because there is no standard way in some object
843          formats to record the source language.  Also, when symtabs
844          are allocated we try to deduce a language then as well, but
845          it is too late for us to use that information while reading
846          symbols, since symtabs aren't allocated until after all the
847          symbols have been processed for a given source file.  */
848
849       subfile->language = deduce_language_from_filename (subfile->name);
850       if (subfile->language == language_unknown
851           && subfile->next != NULL)
852         {
853           subfile->language = subfile->next->language;
854         }
855     }
856 }
857 \f
858 /* Handle the N_BINCL and N_EINCL symbol types that act like N_SOL for
859    switching source files (different subfiles, as we call them) within
860    one object file, but using a stack rather than in an arbitrary
861    order.  */
862
863 void
864 push_subfile ()
865 {
866   gdb_assert (buildsym_compunit != nullptr);
867   gdb_assert (buildsym_compunit->m_current_subfile != NULL);
868   gdb_assert (buildsym_compunit->m_current_subfile->name != NULL);
869   buildsym_compunit->m_subfile_stack.push_back
870     (buildsym_compunit->m_current_subfile->name);
871 }
872
873 const char *
874 pop_subfile ()
875 {
876   gdb_assert (buildsym_compunit != nullptr);
877   gdb_assert (!buildsym_compunit->m_subfile_stack.empty ());
878   const char *name = buildsym_compunit->m_subfile_stack.back ();
879   buildsym_compunit->m_subfile_stack.pop_back ();
880   return name;
881 }
882 \f
883 /* Add a linetable entry for line number LINE and address PC to the
884    line vector for SUBFILE.  */
885
886 void
887 record_line (struct subfile *subfile, int line, CORE_ADDR pc)
888 {
889   struct linetable_entry *e;
890
891   /* Ignore the dummy line number in libg.o */
892   if (line == 0xffff)
893     {
894       return;
895     }
896
897   /* Make sure line vector exists and is big enough.  */
898   if (!subfile->line_vector)
899     {
900       subfile->line_vector_length = INITIAL_LINE_VECTOR_LENGTH;
901       subfile->line_vector = (struct linetable *)
902         xmalloc (sizeof (struct linetable)
903            + subfile->line_vector_length * sizeof (struct linetable_entry));
904       subfile->line_vector->nitems = 0;
905       buildsym_compunit->m_have_line_numbers = true;
906     }
907
908   if (subfile->line_vector->nitems + 1 >= subfile->line_vector_length)
909     {
910       subfile->line_vector_length *= 2;
911       subfile->line_vector = (struct linetable *)
912         xrealloc ((char *) subfile->line_vector,
913                   (sizeof (struct linetable)
914                    + (subfile->line_vector_length
915                       * sizeof (struct linetable_entry))));
916     }
917
918   /* Normally, we treat lines as unsorted.  But the end of sequence
919      marker is special.  We sort line markers at the same PC by line
920      number, so end of sequence markers (which have line == 0) appear
921      first.  This is right if the marker ends the previous function,
922      and there is no padding before the next function.  But it is
923      wrong if the previous line was empty and we are now marking a
924      switch to a different subfile.  We must leave the end of sequence
925      marker at the end of this group of lines, not sort the empty line
926      to after the marker.  The easiest way to accomplish this is to
927      delete any empty lines from our table, if they are followed by
928      end of sequence markers.  All we lose is the ability to set
929      breakpoints at some lines which contain no instructions
930      anyway.  */
931   if (line == 0 && subfile->line_vector->nitems > 0)
932     {
933       e = subfile->line_vector->item + subfile->line_vector->nitems - 1;
934       while (subfile->line_vector->nitems > 0 && e->pc == pc)
935         {
936           e--;
937           subfile->line_vector->nitems--;
938         }
939     }
940
941   e = subfile->line_vector->item + subfile->line_vector->nitems++;
942   e->line = line;
943   e->pc = pc;
944 }
945
946 /* Needed in order to sort line tables from IBM xcoff files.  Sigh!  */
947
948 static int
949 compare_line_numbers (const void *ln1p, const void *ln2p)
950 {
951   struct linetable_entry *ln1 = (struct linetable_entry *) ln1p;
952   struct linetable_entry *ln2 = (struct linetable_entry *) ln2p;
953
954   /* Note: this code does not assume that CORE_ADDRs can fit in ints.
955      Please keep it that way.  */
956   if (ln1->pc < ln2->pc)
957     return -1;
958
959   if (ln1->pc > ln2->pc)
960     return 1;
961
962   /* If pc equal, sort by line.  I'm not sure whether this is optimum
963      behavior (see comment at struct linetable in symtab.h).  */
964   return ln1->line - ln2->line;
965 }
966 \f
967 /* See buildsym.h.  */
968
969 struct compunit_symtab *
970 buildsym_compunit_symtab (void)
971 {
972   gdb_assert (buildsym_compunit != NULL);
973
974   return buildsym_compunit->compunit_symtab;
975 }
976
977 /* See buildsym.h.  */
978
979 struct macro_table *
980 get_macro_table (void)
981 {
982   struct objfile *objfile;
983
984   gdb_assert (buildsym_compunit != NULL);
985   return buildsym_compunit->get_macro_table ();
986 }
987 \f
988 /* Init state to prepare for building a symtab.
989    Note: This can't be done in buildsym_init because dbxread.c and xcoffread.c
990    can call start_symtab+end_symtab multiple times after one call to
991    buildsym_init.  */
992
993 static void
994 prepare_for_building ()
995 {
996   /* These should have been reset either by successful completion of building
997      a symtab, or by the scoped_free_pendings destructor.  */
998   gdb_assert (buildsym_compunit == nullptr);
999 }
1000
1001 /* Start a new symtab for a new source file in OBJFILE.  Called, for example,
1002    when a stabs symbol of type N_SO is seen, or when a DWARF
1003    TAG_compile_unit DIE is seen.  It indicates the start of data for
1004    one original source file.
1005
1006    NAME is the name of the file (cannot be NULL).  COMP_DIR is the
1007    directory in which the file was compiled (or NULL if not known).
1008    START_ADDR is the lowest address of objects in the file (or 0 if
1009    not known).  LANGUAGE is the language of the source file, or
1010    language_unknown if not known, in which case it'll be deduced from
1011    the filename.  */
1012
1013 struct compunit_symtab *
1014 start_symtab (struct objfile *objfile, const char *name, const char *comp_dir,
1015               CORE_ADDR start_addr, enum language language)
1016 {
1017   prepare_for_building ();
1018
1019   buildsym_compunit = new struct buildsym_compunit (objfile, name, comp_dir,
1020                                                     language, start_addr);
1021
1022   /* Allocate the compunit symtab now.  The caller needs it to allocate
1023      non-primary symtabs.  It is also needed by get_macro_table.  */
1024   buildsym_compunit->compunit_symtab = allocate_compunit_symtab (objfile,
1025                                                                  name);
1026
1027   /* Build the subfile for NAME (the main source file) so that we can record
1028      a pointer to it for later.
1029      IMPORTANT: Do not allocate a struct symtab for NAME here.
1030      It can happen that the debug info provides a different path to NAME than
1031      DIRNAME,NAME.  We cope with this in watch_main_source_file_lossage but
1032      that only works if the main_subfile doesn't have a symtab yet.  */
1033   start_subfile (name);
1034   /* Save this so that we don't have to go looking for it at the end
1035      of the subfiles list.  */
1036   buildsym_compunit->main_subfile = buildsym_compunit->m_current_subfile;
1037
1038   return buildsym_compunit->compunit_symtab;
1039 }
1040
1041 /* Restart compilation for a symtab.
1042    CUST is the result of end_expandable_symtab.
1043    NAME, START_ADDR are the source file we are resuming with.
1044
1045    This is used when a symtab is built from multiple sources.
1046    The symtab is first built with start_symtab/end_expandable_symtab
1047    and then for each additional piece call restart_symtab/augment_*_symtab.
1048    Note: At the moment there is only augment_type_symtab.  */
1049
1050 void
1051 restart_symtab (struct compunit_symtab *cust,
1052                 const char *name, CORE_ADDR start_addr)
1053 {
1054   prepare_for_building ();
1055
1056   buildsym_compunit
1057     = new struct buildsym_compunit (COMPUNIT_OBJFILE (cust),
1058                                     name,
1059                                     COMPUNIT_DIRNAME (cust),
1060                                     compunit_language (cust),
1061                                     start_addr);
1062   buildsym_compunit->compunit_symtab = cust;
1063 }
1064
1065 /* Subroutine of end_symtab to simplify it.  Look for a subfile that
1066    matches the main source file's basename.  If there is only one, and
1067    if the main source file doesn't have any symbol or line number
1068    information, then copy this file's symtab and line_vector to the
1069    main source file's subfile and discard the other subfile.  This can
1070    happen because of a compiler bug or from the user playing games
1071    with #line or from things like a distributed build system that
1072    manipulates the debug info.  This can also happen from an innocent
1073    symlink in the paths, we don't canonicalize paths here.  */
1074
1075 static void
1076 watch_main_source_file_lossage (void)
1077 {
1078   struct subfile *mainsub, *subfile;
1079
1080   /* We have to watch for buildsym_compunit == NULL here.  It's a quirk of
1081      end_symtab, it can return NULL so there may not be a main subfile.  */
1082   if (buildsym_compunit == NULL)
1083     return;
1084
1085   /* Get the main source file.  */
1086   mainsub = buildsym_compunit->main_subfile;
1087
1088   /* If the main source file doesn't have any line number or symbol
1089      info, look for an alias in another subfile.  */
1090
1091   if (mainsub->line_vector == NULL
1092       && mainsub->symtab == NULL)
1093     {
1094       const char *mainbase = lbasename (mainsub->name);
1095       int nr_matches = 0;
1096       struct subfile *prevsub;
1097       struct subfile *mainsub_alias = NULL;
1098       struct subfile *prev_mainsub_alias = NULL;
1099
1100       prevsub = NULL;
1101       for (subfile = buildsym_compunit->subfiles;
1102            subfile != NULL;
1103            subfile = subfile->next)
1104         {
1105           if (subfile == mainsub)
1106             continue;
1107           if (filename_cmp (lbasename (subfile->name), mainbase) == 0)
1108             {
1109               ++nr_matches;
1110               mainsub_alias = subfile;
1111               prev_mainsub_alias = prevsub;
1112             }
1113           prevsub = subfile;
1114         }
1115
1116       if (nr_matches == 1)
1117         {
1118           gdb_assert (mainsub_alias != NULL && mainsub_alias != mainsub);
1119
1120           /* Found a match for the main source file.
1121              Copy its line_vector and symtab to the main subfile
1122              and then discard it.  */
1123
1124           mainsub->line_vector = mainsub_alias->line_vector;
1125           mainsub->line_vector_length = mainsub_alias->line_vector_length;
1126           mainsub->symtab = mainsub_alias->symtab;
1127
1128           if (prev_mainsub_alias == NULL)
1129             buildsym_compunit->subfiles = mainsub_alias->next;
1130           else
1131             prev_mainsub_alias->next = mainsub_alias->next;
1132           xfree (mainsub_alias->name);
1133           xfree (mainsub_alias);
1134         }
1135     }
1136 }
1137
1138 /* Reset state after a successful building of a symtab.
1139    This exists because dbxread.c and xcoffread.c can call
1140    start_symtab+end_symtab multiple times after one call to buildsym_init,
1141    and before the scoped_free_pendings destructor is called.
1142    We keep the free_pendings list around for dbx/xcoff sake.  */
1143
1144 static void
1145 reset_symtab_globals (void)
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       && buildsym_compunit->m_file_symbols == NULL
1234       && buildsym_compunit->m_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, get_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, get_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 (buildsym_compunit->m_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 (buildsym_compunit->m_file_symbols, cust);
1548
1549       dict_add_pending (BLOCK_DICT (block), buildsym_compunit->m_file_symbols);
1550     }
1551
1552   if (buildsym_compunit->m_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 (buildsym_compunit->m_global_symbols, cust);
1559
1560       dict_add_pending (BLOCK_DICT (block),
1561                         buildsym_compunit->m_global_symbols);
1562     }
1563
1564   reset_symtab_globals ();
1565 }
1566
1567 /* Push a context block.  Args are an identifying nesting level
1568    (checkable when you pop it), and the starting PC address of this
1569    context.  */
1570
1571 struct context_stack *
1572 push_context (int desc, CORE_ADDR valu)
1573 {
1574   gdb_assert (buildsym_compunit != nullptr);
1575
1576   buildsym_compunit->m_context_stack.emplace_back ();
1577   struct context_stack *newobj = &buildsym_compunit->m_context_stack.back ();
1578
1579   newobj->depth = desc;
1580   newobj->locals = buildsym_compunit->m_local_symbols;
1581   newobj->old_blocks = buildsym_compunit->m_pending_blocks;
1582   newobj->start_addr = valu;
1583   newobj->local_using_directives
1584     = buildsym_compunit->m_local_using_directives;
1585   newobj->name = NULL;
1586
1587   buildsym_compunit->m_local_symbols = NULL;
1588   buildsym_compunit->m_local_using_directives = NULL;
1589
1590   return newobj;
1591 }
1592
1593 /* Pop a context block.  Returns the address of the context block just
1594    popped.  */
1595
1596 struct context_stack
1597 pop_context ()
1598 {
1599   gdb_assert (buildsym_compunit != nullptr);
1600   gdb_assert (!buildsym_compunit->m_context_stack.empty ());
1601   struct context_stack result = buildsym_compunit->m_context_stack.back ();
1602   buildsym_compunit->m_context_stack.pop_back ();
1603   return result;
1604 }
1605
1606 \f
1607
1608 void
1609 record_debugformat (const char *format)
1610 {
1611   buildsym_compunit->debugformat = format;
1612 }
1613
1614 void
1615 record_producer (const char *producer)
1616 {
1617   buildsym_compunit->producer = producer;
1618 }
1619
1620 \f
1621
1622 /* See buildsym.h.  */
1623
1624 void
1625 set_last_source_file (const char *name)
1626 {
1627   gdb_assert (buildsym_compunit != nullptr || name == nullptr);
1628   if (buildsym_compunit != nullptr)
1629     buildsym_compunit->set_last_source_file (name);
1630 }
1631
1632 /* See buildsym.h.  */
1633
1634 const char *
1635 get_last_source_file (void)
1636 {
1637   if (buildsym_compunit == nullptr)
1638     return nullptr;
1639   return buildsym_compunit->m_last_source_file.get ();
1640 }
1641
1642 /* See buildsym.h.  */
1643
1644 void
1645 set_last_source_start_addr (CORE_ADDR addr)
1646 {
1647   gdb_assert (buildsym_compunit != nullptr);
1648   buildsym_compunit->m_last_source_start_addr = addr;
1649 }
1650
1651 /* See buildsym.h.  */
1652
1653 CORE_ADDR
1654 get_last_source_start_addr ()
1655 {
1656   gdb_assert (buildsym_compunit != nullptr);
1657   return buildsym_compunit->m_last_source_start_addr;
1658 }
1659
1660 /* See buildsym.h.  */
1661
1662 struct using_direct **
1663 get_local_using_directives ()
1664 {
1665   gdb_assert (buildsym_compunit != nullptr);
1666   return &buildsym_compunit->m_local_using_directives;
1667 }
1668
1669 /* See buildsym.h.  */
1670
1671 void
1672 set_local_using_directives (struct using_direct *new_local)
1673 {
1674   gdb_assert (buildsym_compunit != nullptr);
1675   buildsym_compunit->m_local_using_directives = new_local;
1676 }
1677
1678 /* See buildsym.h.  */
1679
1680 struct using_direct **
1681 get_global_using_directives ()
1682 {
1683   gdb_assert (buildsym_compunit != nullptr);
1684   return &buildsym_compunit->m_global_using_directives;
1685 }
1686
1687 /* See buildsym.h.  */
1688
1689 bool
1690 outermost_context_p ()
1691 {
1692   gdb_assert (buildsym_compunit != nullptr);
1693   return buildsym_compunit->m_context_stack.empty ();
1694 }
1695
1696 /* See buildsym.h.  */
1697
1698 struct context_stack *
1699 get_current_context_stack ()
1700 {
1701   gdb_assert (buildsym_compunit != nullptr);
1702   if (buildsym_compunit->m_context_stack.empty ())
1703     return nullptr;
1704   return &buildsym_compunit->m_context_stack.back ();
1705 }
1706
1707 /* See buildsym.h.  */
1708
1709 int
1710 get_context_stack_depth ()
1711 {
1712   gdb_assert (buildsym_compunit != nullptr);
1713   return buildsym_compunit->m_context_stack.size ();
1714 }
1715
1716 /* See buildsym.h.  */
1717
1718 struct subfile *
1719 get_current_subfile ()
1720 {
1721   gdb_assert (buildsym_compunit != nullptr);
1722   return buildsym_compunit->m_current_subfile;
1723 }
1724
1725 /* See buildsym.h.  */
1726
1727 struct pending **
1728 get_local_symbols ()
1729 {
1730   gdb_assert (buildsym_compunit != nullptr);
1731   return &buildsym_compunit->m_local_symbols;
1732 }
1733
1734 /* See buildsym.h.  */
1735
1736 struct pending **
1737 get_file_symbols ()
1738 {
1739   gdb_assert (buildsym_compunit != nullptr);
1740   return &buildsym_compunit->m_file_symbols;
1741 }
1742
1743 /* See buildsym.h.  */
1744
1745 struct pending **
1746 get_global_symbols ()
1747 {
1748   gdb_assert (buildsym_compunit != nullptr);
1749   return &buildsym_compunit->m_global_symbols;
1750 }
1751
1752 \f
1753
1754 /* Initialize anything that needs initializing when starting to read a
1755    fresh piece of a symbol file, e.g. reading in the stuff
1756    corresponding to a psymtab.  */
1757
1758 void
1759 buildsym_init ()
1760 {
1761 }