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