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