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