Replace psymbol_allocation_list with std::vector
[external/binutils.git] / gdb / symfile.c
1 /* Generic symbol file reading for the GNU debugger, GDB.
2
3    Copyright (C) 1990-2017 Free Software Foundation, Inc.
4
5    Contributed by Cygnus Support, using pieces from other GDB modules.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include "arch-utils.h"
24 #include "bfdlink.h"
25 #include "symtab.h"
26 #include "gdbtypes.h"
27 #include "gdbcore.h"
28 #include "frame.h"
29 #include "target.h"
30 #include "value.h"
31 #include "symfile.h"
32 #include "objfiles.h"
33 #include "source.h"
34 #include "gdbcmd.h"
35 #include "breakpoint.h"
36 #include "language.h"
37 #include "complaints.h"
38 #include "demangle.h"
39 #include "inferior.h"
40 #include "regcache.h"
41 #include "filenames.h"          /* for DOSish file names */
42 #include "gdb-stabs.h"
43 #include "gdb_obstack.h"
44 #include "completer.h"
45 #include "bcache.h"
46 #include "hashtab.h"
47 #include "readline/readline.h"
48 #include "block.h"
49 #include "observer.h"
50 #include "exec.h"
51 #include "parser-defs.h"
52 #include "varobj.h"
53 #include "elf-bfd.h"
54 #include "solib.h"
55 #include "remote.h"
56 #include "stack.h"
57 #include "gdb_bfd.h"
58 #include "cli/cli-utils.h"
59 #include "common/byte-vector.h"
60
61 #include <sys/types.h>
62 #include <fcntl.h>
63 #include <sys/stat.h>
64 #include <ctype.h>
65 #include <chrono>
66
67 #include "psymtab.h"
68
69 int (*deprecated_ui_load_progress_hook) (const char *section,
70                                          unsigned long num);
71 void (*deprecated_show_load_progress) (const char *section,
72                             unsigned long section_sent,
73                             unsigned long section_size,
74                             unsigned long total_sent,
75                             unsigned long total_size);
76 void (*deprecated_pre_add_symbol_hook) (const char *);
77 void (*deprecated_post_add_symbol_hook) (void);
78
79 static void clear_symtab_users_cleanup (void *ignore);
80
81 /* Global variables owned by this file.  */
82 int readnow_symbol_files;       /* Read full symbols immediately.  */
83
84 /* Functions this file defines.  */
85
86 static void load_command (char *, int);
87
88 static void symbol_file_add_main_1 (const char *args, symfile_add_flags add_flags,
89                                     objfile_flags flags);
90
91 static const struct sym_fns *find_sym_fns (bfd *);
92
93 static void overlay_invalidate_all (void);
94
95 static void simple_free_overlay_table (void);
96
97 static void read_target_long_array (CORE_ADDR, unsigned int *, int, int,
98                                     enum bfd_endian);
99
100 static int simple_read_overlay_table (void);
101
102 static int simple_overlay_update_1 (struct obj_section *);
103
104 static void info_ext_lang_command (char *args, int from_tty);
105
106 static void symfile_find_segment_sections (struct objfile *objfile);
107
108 /* List of all available sym_fns.  On gdb startup, each object file reader
109    calls add_symtab_fns() to register information on each format it is
110    prepared to read.  */
111
112 struct registered_sym_fns
113 {
114   registered_sym_fns (bfd_flavour sym_flavour_, const struct sym_fns *sym_fns_)
115   : sym_flavour (sym_flavour_), sym_fns (sym_fns_)
116   {}
117
118   /* BFD flavour that we handle.  */
119   enum bfd_flavour sym_flavour;
120
121   /* The "vtable" of symbol functions.  */
122   const struct sym_fns *sym_fns;
123 };
124
125 static std::vector<registered_sym_fns> symtab_fns;
126
127 /* Values for "set print symbol-loading".  */
128
129 const char print_symbol_loading_off[] = "off";
130 const char print_symbol_loading_brief[] = "brief";
131 const char print_symbol_loading_full[] = "full";
132 static const char *print_symbol_loading_enums[] =
133 {
134   print_symbol_loading_off,
135   print_symbol_loading_brief,
136   print_symbol_loading_full,
137   NULL
138 };
139 static const char *print_symbol_loading = print_symbol_loading_full;
140
141 /* If non-zero, shared library symbols will be added automatically
142    when the inferior is created, new libraries are loaded, or when
143    attaching to the inferior.  This is almost always what users will
144    want to have happen; but for very large programs, the startup time
145    will be excessive, and so if this is a problem, the user can clear
146    this flag and then add the shared library symbols as needed.  Note
147    that there is a potential for confusion, since if the shared
148    library symbols are not loaded, commands like "info fun" will *not*
149    report all the functions that are actually present.  */
150
151 int auto_solib_add = 1;
152 \f
153
154 /* Return non-zero if symbol-loading messages should be printed.
155    FROM_TTY is the standard from_tty argument to gdb commands.
156    If EXEC is non-zero the messages are for the executable.
157    Otherwise, messages are for shared libraries.
158    If FULL is non-zero then the caller is printing a detailed message.
159    E.g., the message includes the shared library name.
160    Otherwise, the caller is printing a brief "summary" message.  */
161
162 int
163 print_symbol_loading_p (int from_tty, int exec, int full)
164 {
165   if (!from_tty && !info_verbose)
166     return 0;
167
168   if (exec)
169     {
170       /* We don't check FULL for executables, there are few such
171          messages, therefore brief == full.  */
172       return print_symbol_loading != print_symbol_loading_off;
173     }
174   if (full)
175     return print_symbol_loading == print_symbol_loading_full;
176   return print_symbol_loading == print_symbol_loading_brief;
177 }
178
179 /* True if we are reading a symbol table.  */
180
181 int currently_reading_symtab = 0;
182
183 /* Increment currently_reading_symtab and return a cleanup that can be
184    used to decrement it.  */
185
186 scoped_restore_tmpl<int>
187 increment_reading_symtab (void)
188 {
189   gdb_assert (currently_reading_symtab >= 0);
190   return make_scoped_restore (&currently_reading_symtab,
191                               currently_reading_symtab + 1);
192 }
193
194 /* Remember the lowest-addressed loadable section we've seen.
195    This function is called via bfd_map_over_sections.
196
197    In case of equal vmas, the section with the largest size becomes the
198    lowest-addressed loadable section.
199
200    If the vmas and sizes are equal, the last section is considered the
201    lowest-addressed loadable section.  */
202
203 void
204 find_lowest_section (bfd *abfd, asection *sect, void *obj)
205 {
206   asection **lowest = (asection **) obj;
207
208   if (0 == (bfd_get_section_flags (abfd, sect) & (SEC_ALLOC | SEC_LOAD)))
209     return;
210   if (!*lowest)
211     *lowest = sect;             /* First loadable section */
212   else if (bfd_section_vma (abfd, *lowest) > bfd_section_vma (abfd, sect))
213     *lowest = sect;             /* A lower loadable section */
214   else if (bfd_section_vma (abfd, *lowest) == bfd_section_vma (abfd, sect)
215            && (bfd_section_size (abfd, (*lowest))
216                <= bfd_section_size (abfd, sect)))
217     *lowest = sect;
218 }
219
220 /* Create a new section_addr_info, with room for NUM_SECTIONS.  The
221    new object's 'num_sections' field is set to 0; it must be updated
222    by the caller.  */
223
224 struct section_addr_info *
225 alloc_section_addr_info (size_t num_sections)
226 {
227   struct section_addr_info *sap;
228   size_t size;
229
230   size = (sizeof (struct section_addr_info)
231           +  sizeof (struct other_sections) * (num_sections - 1));
232   sap = (struct section_addr_info *) xmalloc (size);
233   memset (sap, 0, size);
234
235   return sap;
236 }
237
238 /* Build (allocate and populate) a section_addr_info struct from
239    an existing section table.  */
240
241 extern struct section_addr_info *
242 build_section_addr_info_from_section_table (const struct target_section *start,
243                                             const struct target_section *end)
244 {
245   struct section_addr_info *sap;
246   const struct target_section *stp;
247   int oidx;
248
249   sap = alloc_section_addr_info (end - start);
250
251   for (stp = start, oidx = 0; stp != end; stp++)
252     {
253       struct bfd_section *asect = stp->the_bfd_section;
254       bfd *abfd = asect->owner;
255
256       if (bfd_get_section_flags (abfd, asect) & (SEC_ALLOC | SEC_LOAD)
257           && oidx < end - start)
258         {
259           sap->other[oidx].addr = stp->addr;
260           sap->other[oidx].name = xstrdup (bfd_section_name (abfd, asect));
261           sap->other[oidx].sectindex = gdb_bfd_section_index (abfd, asect);
262           oidx++;
263         }
264     }
265
266   sap->num_sections = oidx;
267
268   return sap;
269 }
270
271 /* Create a section_addr_info from section offsets in ABFD.  */
272
273 static struct section_addr_info *
274 build_section_addr_info_from_bfd (bfd *abfd)
275 {
276   struct section_addr_info *sap;
277   int i;
278   struct bfd_section *sec;
279
280   sap = alloc_section_addr_info (bfd_count_sections (abfd));
281   for (i = 0, sec = abfd->sections; sec != NULL; sec = sec->next)
282     if (bfd_get_section_flags (abfd, sec) & (SEC_ALLOC | SEC_LOAD))
283       {
284         sap->other[i].addr = bfd_get_section_vma (abfd, sec);
285         sap->other[i].name = xstrdup (bfd_get_section_name (abfd, sec));
286         sap->other[i].sectindex = gdb_bfd_section_index (abfd, sec);
287         i++;
288       }
289
290   sap->num_sections = i;
291
292   return sap;
293 }
294
295 /* Create a section_addr_info from section offsets in OBJFILE.  */
296
297 struct section_addr_info *
298 build_section_addr_info_from_objfile (const struct objfile *objfile)
299 {
300   struct section_addr_info *sap;
301   int i;
302
303   /* Before reread_symbols gets rewritten it is not safe to call:
304      gdb_assert (objfile->num_sections == bfd_count_sections (objfile->obfd));
305      */
306   sap = build_section_addr_info_from_bfd (objfile->obfd);
307   for (i = 0; i < sap->num_sections; i++)
308     {
309       int sectindex = sap->other[i].sectindex;
310
311       sap->other[i].addr += objfile->section_offsets->offsets[sectindex];
312     }
313   return sap;
314 }
315
316 /* Free all memory allocated by build_section_addr_info_from_section_table.  */
317
318 extern void
319 free_section_addr_info (struct section_addr_info *sap)
320 {
321   int idx;
322
323   for (idx = 0; idx < sap->num_sections; idx++)
324     xfree (sap->other[idx].name);
325   xfree (sap);
326 }
327
328 /* Initialize OBJFILE's sect_index_* members.  */
329
330 static void
331 init_objfile_sect_indices (struct objfile *objfile)
332 {
333   asection *sect;
334   int i;
335
336   sect = bfd_get_section_by_name (objfile->obfd, ".text");
337   if (sect)
338     objfile->sect_index_text = sect->index;
339
340   sect = bfd_get_section_by_name (objfile->obfd, ".data");
341   if (sect)
342     objfile->sect_index_data = sect->index;
343
344   sect = bfd_get_section_by_name (objfile->obfd, ".bss");
345   if (sect)
346     objfile->sect_index_bss = sect->index;
347
348   sect = bfd_get_section_by_name (objfile->obfd, ".rodata");
349   if (sect)
350     objfile->sect_index_rodata = sect->index;
351
352   /* This is where things get really weird...  We MUST have valid
353      indices for the various sect_index_* members or gdb will abort.
354      So if for example, there is no ".text" section, we have to
355      accomodate that.  First, check for a file with the standard
356      one or two segments.  */
357
358   symfile_find_segment_sections (objfile);
359
360   /* Except when explicitly adding symbol files at some address,
361      section_offsets contains nothing but zeros, so it doesn't matter
362      which slot in section_offsets the individual sect_index_* members
363      index into.  So if they are all zero, it is safe to just point
364      all the currently uninitialized indices to the first slot.  But
365      beware: if this is the main executable, it may be relocated
366      later, e.g. by the remote qOffsets packet, and then this will
367      be wrong!  That's why we try segments first.  */
368
369   for (i = 0; i < objfile->num_sections; i++)
370     {
371       if (ANOFFSET (objfile->section_offsets, i) != 0)
372         {
373           break;
374         }
375     }
376   if (i == objfile->num_sections)
377     {
378       if (objfile->sect_index_text == -1)
379         objfile->sect_index_text = 0;
380       if (objfile->sect_index_data == -1)
381         objfile->sect_index_data = 0;
382       if (objfile->sect_index_bss == -1)
383         objfile->sect_index_bss = 0;
384       if (objfile->sect_index_rodata == -1)
385         objfile->sect_index_rodata = 0;
386     }
387 }
388
389 /* The arguments to place_section.  */
390
391 struct place_section_arg
392 {
393   struct section_offsets *offsets;
394   CORE_ADDR lowest;
395 };
396
397 /* Find a unique offset to use for loadable section SECT if
398    the user did not provide an offset.  */
399
400 static void
401 place_section (bfd *abfd, asection *sect, void *obj)
402 {
403   struct place_section_arg *arg = (struct place_section_arg *) obj;
404   CORE_ADDR *offsets = arg->offsets->offsets, start_addr;
405   int done;
406   ULONGEST align = ((ULONGEST) 1) << bfd_get_section_alignment (abfd, sect);
407
408   /* We are only interested in allocated sections.  */
409   if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
410     return;
411
412   /* If the user specified an offset, honor it.  */
413   if (offsets[gdb_bfd_section_index (abfd, sect)] != 0)
414     return;
415
416   /* Otherwise, let's try to find a place for the section.  */
417   start_addr = (arg->lowest + align - 1) & -align;
418
419   do {
420     asection *cur_sec;
421
422     done = 1;
423
424     for (cur_sec = abfd->sections; cur_sec != NULL; cur_sec = cur_sec->next)
425       {
426         int indx = cur_sec->index;
427
428         /* We don't need to compare against ourself.  */
429         if (cur_sec == sect)
430           continue;
431
432         /* We can only conflict with allocated sections.  */
433         if ((bfd_get_section_flags (abfd, cur_sec) & SEC_ALLOC) == 0)
434           continue;
435
436         /* If the section offset is 0, either the section has not been placed
437            yet, or it was the lowest section placed (in which case LOWEST
438            will be past its end).  */
439         if (offsets[indx] == 0)
440           continue;
441
442         /* If this section would overlap us, then we must move up.  */
443         if (start_addr + bfd_get_section_size (sect) > offsets[indx]
444             && start_addr < offsets[indx] + bfd_get_section_size (cur_sec))
445           {
446             start_addr = offsets[indx] + bfd_get_section_size (cur_sec);
447             start_addr = (start_addr + align - 1) & -align;
448             done = 0;
449             break;
450           }
451
452         /* Otherwise, we appear to be OK.  So far.  */
453       }
454     }
455   while (!done);
456
457   offsets[gdb_bfd_section_index (abfd, sect)] = start_addr;
458   arg->lowest = start_addr + bfd_get_section_size (sect);
459 }
460
461 /* Store struct section_addr_info as prepared (made relative and with SECTINDEX
462    filled-in) by addr_info_make_relative into SECTION_OFFSETS of NUM_SECTIONS
463    entries.  */
464
465 void
466 relative_addr_info_to_section_offsets (struct section_offsets *section_offsets,
467                                        int num_sections,
468                                        const struct section_addr_info *addrs)
469 {
470   int i;
471
472   memset (section_offsets, 0, SIZEOF_N_SECTION_OFFSETS (num_sections));
473
474   /* Now calculate offsets for section that were specified by the caller.  */
475   for (i = 0; i < addrs->num_sections; i++)
476     {
477       const struct other_sections *osp;
478
479       osp = &addrs->other[i];
480       if (osp->sectindex == -1)
481         continue;
482
483       /* Record all sections in offsets.  */
484       /* The section_offsets in the objfile are here filled in using
485          the BFD index.  */
486       section_offsets->offsets[osp->sectindex] = osp->addr;
487     }
488 }
489
490 /* Transform section name S for a name comparison.  prelink can split section
491    `.bss' into two sections `.dynbss' and `.bss' (in this order).  Similarly
492    prelink can split `.sbss' into `.sdynbss' and `.sbss'.  Use virtual address
493    of the new `.dynbss' (`.sdynbss') section as the adjacent new `.bss'
494    (`.sbss') section has invalid (increased) virtual address.  */
495
496 static const char *
497 addr_section_name (const char *s)
498 {
499   if (strcmp (s, ".dynbss") == 0)
500     return ".bss";
501   if (strcmp (s, ".sdynbss") == 0)
502     return ".sbss";
503
504   return s;
505 }
506
507 /* qsort comparator for addrs_section_sort.  Sort entries in ascending order by
508    their (name, sectindex) pair.  sectindex makes the sort by name stable.  */
509
510 static int
511 addrs_section_compar (const void *ap, const void *bp)
512 {
513   const struct other_sections *a = *((struct other_sections **) ap);
514   const struct other_sections *b = *((struct other_sections **) bp);
515   int retval;
516
517   retval = strcmp (addr_section_name (a->name), addr_section_name (b->name));
518   if (retval)
519     return retval;
520
521   return a->sectindex - b->sectindex;
522 }
523
524 /* Provide sorted array of pointers to sections of ADDRS.  The array is
525    terminated by NULL.  Caller is responsible to call xfree for it.  */
526
527 static struct other_sections **
528 addrs_section_sort (struct section_addr_info *addrs)
529 {
530   struct other_sections **array;
531   int i;
532
533   /* `+ 1' for the NULL terminator.  */
534   array = XNEWVEC (struct other_sections *, addrs->num_sections + 1);
535   for (i = 0; i < addrs->num_sections; i++)
536     array[i] = &addrs->other[i];
537   array[i] = NULL;
538
539   qsort (array, i, sizeof (*array), addrs_section_compar);
540
541   return array;
542 }
543
544 /* Relativize absolute addresses in ADDRS into offsets based on ABFD.  Fill-in
545    also SECTINDEXes specific to ABFD there.  This function can be used to
546    rebase ADDRS to start referencing different BFD than before.  */
547
548 void
549 addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd)
550 {
551   asection *lower_sect;
552   CORE_ADDR lower_offset;
553   int i;
554   struct cleanup *my_cleanup;
555   struct section_addr_info *abfd_addrs;
556   struct other_sections **addrs_sorted, **abfd_addrs_sorted;
557   struct other_sections **addrs_to_abfd_addrs;
558
559   /* Find lowest loadable section to be used as starting point for
560      continguous sections.  */
561   lower_sect = NULL;
562   bfd_map_over_sections (abfd, find_lowest_section, &lower_sect);
563   if (lower_sect == NULL)
564     {
565       warning (_("no loadable sections found in added symbol-file %s"),
566                bfd_get_filename (abfd));
567       lower_offset = 0;
568     }
569   else
570     lower_offset = bfd_section_vma (bfd_get_filename (abfd), lower_sect);
571
572   /* Create ADDRS_TO_ABFD_ADDRS array to map the sections in ADDRS to sections
573      in ABFD.  Section names are not unique - there can be multiple sections of
574      the same name.  Also the sections of the same name do not have to be
575      adjacent to each other.  Some sections may be present only in one of the
576      files.  Even sections present in both files do not have to be in the same
577      order.
578
579      Use stable sort by name for the sections in both files.  Then linearly
580      scan both lists matching as most of the entries as possible.  */
581
582   addrs_sorted = addrs_section_sort (addrs);
583   my_cleanup = make_cleanup (xfree, addrs_sorted);
584
585   abfd_addrs = build_section_addr_info_from_bfd (abfd);
586   make_cleanup_free_section_addr_info (abfd_addrs);
587   abfd_addrs_sorted = addrs_section_sort (abfd_addrs);
588   make_cleanup (xfree, abfd_addrs_sorted);
589
590   /* Now create ADDRS_TO_ABFD_ADDRS from ADDRS_SORTED and
591      ABFD_ADDRS_SORTED.  */
592
593   addrs_to_abfd_addrs = XCNEWVEC (struct other_sections *, addrs->num_sections);
594   make_cleanup (xfree, addrs_to_abfd_addrs);
595
596   while (*addrs_sorted)
597     {
598       const char *sect_name = addr_section_name ((*addrs_sorted)->name);
599
600       while (*abfd_addrs_sorted
601              && strcmp (addr_section_name ((*abfd_addrs_sorted)->name),
602                         sect_name) < 0)
603         abfd_addrs_sorted++;
604
605       if (*abfd_addrs_sorted
606           && strcmp (addr_section_name ((*abfd_addrs_sorted)->name),
607                      sect_name) == 0)
608         {
609           int index_in_addrs;
610
611           /* Make the found item directly addressable from ADDRS.  */
612           index_in_addrs = *addrs_sorted - addrs->other;
613           gdb_assert (addrs_to_abfd_addrs[index_in_addrs] == NULL);
614           addrs_to_abfd_addrs[index_in_addrs] = *abfd_addrs_sorted;
615
616           /* Never use the same ABFD entry twice.  */
617           abfd_addrs_sorted++;
618         }
619
620       addrs_sorted++;
621     }
622
623   /* Calculate offsets for the loadable sections.
624      FIXME! Sections must be in order of increasing loadable section
625      so that contiguous sections can use the lower-offset!!!
626
627      Adjust offsets if the segments are not contiguous.
628      If the section is contiguous, its offset should be set to
629      the offset of the highest loadable section lower than it
630      (the loadable section directly below it in memory).
631      this_offset = lower_offset = lower_addr - lower_orig_addr */
632
633   for (i = 0; i < addrs->num_sections; i++)
634     {
635       struct other_sections *sect = addrs_to_abfd_addrs[i];
636
637       if (sect)
638         {
639           /* This is the index used by BFD.  */
640           addrs->other[i].sectindex = sect->sectindex;
641
642           if (addrs->other[i].addr != 0)
643             {
644               addrs->other[i].addr -= sect->addr;
645               lower_offset = addrs->other[i].addr;
646             }
647           else
648             addrs->other[i].addr = lower_offset;
649         }
650       else
651         {
652           /* addr_section_name transformation is not used for SECT_NAME.  */
653           const char *sect_name = addrs->other[i].name;
654
655           /* This section does not exist in ABFD, which is normally
656              unexpected and we want to issue a warning.
657
658              However, the ELF prelinker does create a few sections which are
659              marked in the main executable as loadable (they are loaded in
660              memory from the DYNAMIC segment) and yet are not present in
661              separate debug info files.  This is fine, and should not cause
662              a warning.  Shared libraries contain just the section
663              ".gnu.liblist" but it is not marked as loadable there.  There is
664              no other way to identify them than by their name as the sections
665              created by prelink have no special flags.
666
667              For the sections `.bss' and `.sbss' see addr_section_name.  */
668
669           if (!(strcmp (sect_name, ".gnu.liblist") == 0
670                 || strcmp (sect_name, ".gnu.conflict") == 0
671                 || (strcmp (sect_name, ".bss") == 0
672                     && i > 0
673                     && strcmp (addrs->other[i - 1].name, ".dynbss") == 0
674                     && addrs_to_abfd_addrs[i - 1] != NULL)
675                 || (strcmp (sect_name, ".sbss") == 0
676                     && i > 0
677                     && strcmp (addrs->other[i - 1].name, ".sdynbss") == 0
678                     && addrs_to_abfd_addrs[i - 1] != NULL)))
679             warning (_("section %s not found in %s"), sect_name,
680                      bfd_get_filename (abfd));
681
682           addrs->other[i].addr = 0;
683           addrs->other[i].sectindex = -1;
684         }
685     }
686
687   do_cleanups (my_cleanup);
688 }
689
690 /* Parse the user's idea of an offset for dynamic linking, into our idea
691    of how to represent it for fast symbol reading.  This is the default
692    version of the sym_fns.sym_offsets function for symbol readers that
693    don't need to do anything special.  It allocates a section_offsets table
694    for the objectfile OBJFILE and stuffs ADDR into all of the offsets.  */
695
696 void
697 default_symfile_offsets (struct objfile *objfile,
698                          const struct section_addr_info *addrs)
699 {
700   objfile->num_sections = gdb_bfd_count_sections (objfile->obfd);
701   objfile->section_offsets = (struct section_offsets *)
702     obstack_alloc (&objfile->objfile_obstack,
703                    SIZEOF_N_SECTION_OFFSETS (objfile->num_sections));
704   relative_addr_info_to_section_offsets (objfile->section_offsets,
705                                          objfile->num_sections, addrs);
706
707   /* For relocatable files, all loadable sections will start at zero.
708      The zero is meaningless, so try to pick arbitrary addresses such
709      that no loadable sections overlap.  This algorithm is quadratic,
710      but the number of sections in a single object file is generally
711      small.  */
712   if ((bfd_get_file_flags (objfile->obfd) & (EXEC_P | DYNAMIC)) == 0)
713     {
714       struct place_section_arg arg;
715       bfd *abfd = objfile->obfd;
716       asection *cur_sec;
717
718       for (cur_sec = abfd->sections; cur_sec != NULL; cur_sec = cur_sec->next)
719         /* We do not expect this to happen; just skip this step if the
720            relocatable file has a section with an assigned VMA.  */
721         if (bfd_section_vma (abfd, cur_sec) != 0)
722           break;
723
724       if (cur_sec == NULL)
725         {
726           CORE_ADDR *offsets = objfile->section_offsets->offsets;
727
728           /* Pick non-overlapping offsets for sections the user did not
729              place explicitly.  */
730           arg.offsets = objfile->section_offsets;
731           arg.lowest = 0;
732           bfd_map_over_sections (objfile->obfd, place_section, &arg);
733
734           /* Correctly filling in the section offsets is not quite
735              enough.  Relocatable files have two properties that
736              (most) shared objects do not:
737
738              - Their debug information will contain relocations.  Some
739              shared libraries do also, but many do not, so this can not
740              be assumed.
741
742              - If there are multiple code sections they will be loaded
743              at different relative addresses in memory than they are
744              in the objfile, since all sections in the file will start
745              at address zero.
746
747              Because GDB has very limited ability to map from an
748              address in debug info to the correct code section,
749              it relies on adding SECT_OFF_TEXT to things which might be
750              code.  If we clear all the section offsets, and set the
751              section VMAs instead, then symfile_relocate_debug_section
752              will return meaningful debug information pointing at the
753              correct sections.
754
755              GDB has too many different data structures for section
756              addresses - a bfd, objfile, and so_list all have section
757              tables, as does exec_ops.  Some of these could probably
758              be eliminated.  */
759
760           for (cur_sec = abfd->sections; cur_sec != NULL;
761                cur_sec = cur_sec->next)
762             {
763               if ((bfd_get_section_flags (abfd, cur_sec) & SEC_ALLOC) == 0)
764                 continue;
765
766               bfd_set_section_vma (abfd, cur_sec, offsets[cur_sec->index]);
767               exec_set_section_address (bfd_get_filename (abfd),
768                                         cur_sec->index,
769                                         offsets[cur_sec->index]);
770               offsets[cur_sec->index] = 0;
771             }
772         }
773     }
774
775   /* Remember the bfd indexes for the .text, .data, .bss and
776      .rodata sections.  */
777   init_objfile_sect_indices (objfile);
778 }
779
780 /* Divide the file into segments, which are individual relocatable units.
781    This is the default version of the sym_fns.sym_segments function for
782    symbol readers that do not have an explicit representation of segments.
783    It assumes that object files do not have segments, and fully linked
784    files have a single segment.  */
785
786 struct symfile_segment_data *
787 default_symfile_segments (bfd *abfd)
788 {
789   int num_sections, i;
790   asection *sect;
791   struct symfile_segment_data *data;
792   CORE_ADDR low, high;
793
794   /* Relocatable files contain enough information to position each
795      loadable section independently; they should not be relocated
796      in segments.  */
797   if ((bfd_get_file_flags (abfd) & (EXEC_P | DYNAMIC)) == 0)
798     return NULL;
799
800   /* Make sure there is at least one loadable section in the file.  */
801   for (sect = abfd->sections; sect != NULL; sect = sect->next)
802     {
803       if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
804         continue;
805
806       break;
807     }
808   if (sect == NULL)
809     return NULL;
810
811   low = bfd_get_section_vma (abfd, sect);
812   high = low + bfd_get_section_size (sect);
813
814   data = XCNEW (struct symfile_segment_data);
815   data->num_segments = 1;
816   data->segment_bases = XCNEW (CORE_ADDR);
817   data->segment_sizes = XCNEW (CORE_ADDR);
818
819   num_sections = bfd_count_sections (abfd);
820   data->segment_info = XCNEWVEC (int, num_sections);
821
822   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
823     {
824       CORE_ADDR vma;
825
826       if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
827         continue;
828
829       vma = bfd_get_section_vma (abfd, sect);
830       if (vma < low)
831         low = vma;
832       if (vma + bfd_get_section_size (sect) > high)
833         high = vma + bfd_get_section_size (sect);
834
835       data->segment_info[i] = 1;
836     }
837
838   data->segment_bases[0] = low;
839   data->segment_sizes[0] = high - low;
840
841   return data;
842 }
843
844 /* This is a convenience function to call sym_read for OBJFILE and
845    possibly force the partial symbols to be read.  */
846
847 static void
848 read_symbols (struct objfile *objfile, symfile_add_flags add_flags)
849 {
850   (*objfile->sf->sym_read) (objfile, add_flags);
851   objfile->per_bfd->minsyms_read = true;
852
853   /* find_separate_debug_file_in_section should be called only if there is
854      single binary with no existing separate debug info file.  */
855   if (!objfile_has_partial_symbols (objfile)
856       && objfile->separate_debug_objfile == NULL
857       && objfile->separate_debug_objfile_backlink == NULL)
858     {
859       gdb_bfd_ref_ptr abfd (find_separate_debug_file_in_section (objfile));
860
861       if (abfd != NULL)
862         {
863           /* find_separate_debug_file_in_section uses the same filename for the
864              virtual section-as-bfd like the bfd filename containing the
865              section.  Therefore use also non-canonical name form for the same
866              file containing the section.  */
867           symbol_file_add_separate (abfd.get (), objfile->original_name,
868                                     add_flags, objfile);
869         }
870     }
871   if ((add_flags & SYMFILE_NO_READ) == 0)
872     require_partial_symbols (objfile, 0);
873 }
874
875 /* Initialize entry point information for this objfile.  */
876
877 static void
878 init_entry_point_info (struct objfile *objfile)
879 {
880   struct entry_info *ei = &objfile->per_bfd->ei;
881
882   if (ei->initialized)
883     return;
884   ei->initialized = 1;
885
886   /* Save startup file's range of PC addresses to help blockframe.c
887      decide where the bottom of the stack is.  */
888
889   if (bfd_get_file_flags (objfile->obfd) & EXEC_P)
890     {
891       /* Executable file -- record its entry point so we'll recognize
892          the startup file because it contains the entry point.  */
893       ei->entry_point = bfd_get_start_address (objfile->obfd);
894       ei->entry_point_p = 1;
895     }
896   else if (bfd_get_file_flags (objfile->obfd) & DYNAMIC
897            && bfd_get_start_address (objfile->obfd) != 0)
898     {
899       /* Some shared libraries may have entry points set and be
900          runnable.  There's no clear way to indicate this, so just check
901          for values other than zero.  */
902       ei->entry_point = bfd_get_start_address (objfile->obfd);
903       ei->entry_point_p = 1;
904     }
905   else
906     {
907       /* Examination of non-executable.o files.  Short-circuit this stuff.  */
908       ei->entry_point_p = 0;
909     }
910
911   if (ei->entry_point_p)
912     {
913       struct obj_section *osect;
914       CORE_ADDR entry_point =  ei->entry_point;
915       int found;
916
917       /* Make certain that the address points at real code, and not a
918          function descriptor.  */
919       entry_point
920         = gdbarch_convert_from_func_ptr_addr (get_objfile_arch (objfile),
921                                               entry_point,
922                                               &current_target);
923
924       /* Remove any ISA markers, so that this matches entries in the
925          symbol table.  */
926       ei->entry_point
927         = gdbarch_addr_bits_remove (get_objfile_arch (objfile), entry_point);
928
929       found = 0;
930       ALL_OBJFILE_OSECTIONS (objfile, osect)
931         {
932           struct bfd_section *sect = osect->the_bfd_section;
933
934           if (entry_point >= bfd_get_section_vma (objfile->obfd, sect)
935               && entry_point < (bfd_get_section_vma (objfile->obfd, sect)
936                                 + bfd_get_section_size (sect)))
937             {
938               ei->the_bfd_section_index
939                 = gdb_bfd_section_index (objfile->obfd, sect);
940               found = 1;
941               break;
942             }
943         }
944
945       if (!found)
946         ei->the_bfd_section_index = SECT_OFF_TEXT (objfile);
947     }
948 }
949
950 /* Process a symbol file, as either the main file or as a dynamically
951    loaded file.
952
953    This function does not set the OBJFILE's entry-point info.
954
955    OBJFILE is where the symbols are to be read from.
956
957    ADDRS is the list of section load addresses.  If the user has given
958    an 'add-symbol-file' command, then this is the list of offsets and
959    addresses he or she provided as arguments to the command; or, if
960    we're handling a shared library, these are the actual addresses the
961    sections are loaded at, according to the inferior's dynamic linker
962    (as gleaned by GDB's shared library code).  We convert each address
963    into an offset from the section VMA's as it appears in the object
964    file, and then call the file's sym_offsets function to convert this
965    into a format-specific offset table --- a `struct section_offsets'.
966
967    ADD_FLAGS encodes verbosity level, whether this is main symbol or
968    an extra symbol file such as dynamically loaded code, and wether
969    breakpoint reset should be deferred.  */
970
971 static void
972 syms_from_objfile_1 (struct objfile *objfile,
973                      struct section_addr_info *addrs,
974                      symfile_add_flags add_flags)
975 {
976   struct section_addr_info *local_addr = NULL;
977   struct cleanup *old_chain;
978   const int mainline = add_flags & SYMFILE_MAINLINE;
979
980   objfile_set_sym_fns (objfile, find_sym_fns (objfile->obfd));
981
982   if (objfile->sf == NULL)
983     {
984       /* No symbols to load, but we still need to make sure
985          that the section_offsets table is allocated.  */
986       int num_sections = gdb_bfd_count_sections (objfile->obfd);
987       size_t size = SIZEOF_N_SECTION_OFFSETS (num_sections);
988
989       objfile->num_sections = num_sections;
990       objfile->section_offsets
991         = (struct section_offsets *) obstack_alloc (&objfile->objfile_obstack,
992                                                     size);
993       memset (objfile->section_offsets, 0, size);
994       return;
995     }
996
997   /* Make sure that partially constructed symbol tables will be cleaned up
998      if an error occurs during symbol reading.  */
999   old_chain = make_cleanup_free_objfile (objfile);
1000
1001   /* If ADDRS is NULL, put together a dummy address list.
1002      We now establish the convention that an addr of zero means
1003      no load address was specified.  */
1004   if (! addrs)
1005     {
1006       local_addr = alloc_section_addr_info (1);
1007       make_cleanup (xfree, local_addr);
1008       addrs = local_addr;
1009     }
1010
1011   if (mainline)
1012     {
1013       /* We will modify the main symbol table, make sure that all its users
1014          will be cleaned up if an error occurs during symbol reading.  */
1015       make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/);
1016
1017       /* Since no error yet, throw away the old symbol table.  */
1018
1019       if (symfile_objfile != NULL)
1020         {
1021           delete symfile_objfile;
1022           gdb_assert (symfile_objfile == NULL);
1023         }
1024
1025       /* Currently we keep symbols from the add-symbol-file command.
1026          If the user wants to get rid of them, they should do "symbol-file"
1027          without arguments first.  Not sure this is the best behavior
1028          (PR 2207).  */
1029
1030       (*objfile->sf->sym_new_init) (objfile);
1031     }
1032
1033   /* Convert addr into an offset rather than an absolute address.
1034      We find the lowest address of a loaded segment in the objfile,
1035      and assume that <addr> is where that got loaded.
1036
1037      We no longer warn if the lowest section is not a text segment (as
1038      happens for the PA64 port.  */
1039   if (addrs->num_sections > 0)
1040     addr_info_make_relative (addrs, objfile->obfd);
1041
1042   /* Initialize symbol reading routines for this objfile, allow complaints to
1043      appear for this new file, and record how verbose to be, then do the
1044      initial symbol reading for this file.  */
1045
1046   (*objfile->sf->sym_init) (objfile);
1047   clear_complaints (&symfile_complaints, 1, add_flags & SYMFILE_VERBOSE);
1048
1049   (*objfile->sf->sym_offsets) (objfile, addrs);
1050
1051   read_symbols (objfile, add_flags);
1052
1053   /* Discard cleanups as symbol reading was successful.  */
1054
1055   discard_cleanups (old_chain);
1056   xfree (local_addr);
1057 }
1058
1059 /* Same as syms_from_objfile_1, but also initializes the objfile
1060    entry-point info.  */
1061
1062 static void
1063 syms_from_objfile (struct objfile *objfile,
1064                    struct section_addr_info *addrs,
1065                    symfile_add_flags add_flags)
1066 {
1067   syms_from_objfile_1 (objfile, addrs, add_flags);
1068   init_entry_point_info (objfile);
1069 }
1070
1071 /* Perform required actions after either reading in the initial
1072    symbols for a new objfile, or mapping in the symbols from a reusable
1073    objfile.  ADD_FLAGS is a bitmask of enum symfile_add_flags.  */
1074
1075 static void
1076 finish_new_objfile (struct objfile *objfile, symfile_add_flags add_flags)
1077 {
1078   /* If this is the main symbol file we have to clean up all users of the
1079      old main symbol file.  Otherwise it is sufficient to fixup all the
1080      breakpoints that may have been redefined by this symbol file.  */
1081   if (add_flags & SYMFILE_MAINLINE)
1082     {
1083       /* OK, make it the "real" symbol file.  */
1084       symfile_objfile = objfile;
1085
1086       clear_symtab_users (add_flags);
1087     }
1088   else if ((add_flags & SYMFILE_DEFER_BP_RESET) == 0)
1089     {
1090       breakpoint_re_set ();
1091     }
1092
1093   /* We're done reading the symbol file; finish off complaints.  */
1094   clear_complaints (&symfile_complaints, 0, add_flags & SYMFILE_VERBOSE);
1095 }
1096
1097 /* Process a symbol file, as either the main file or as a dynamically
1098    loaded file.
1099
1100    ABFD is a BFD already open on the file, as from symfile_bfd_open.
1101    A new reference is acquired by this function.
1102
1103    For NAME description see the objfile constructor.
1104
1105    ADD_FLAGS encodes verbosity, whether this is main symbol file or
1106    extra, such as dynamically loaded code, and what to do with breakpoins.
1107
1108    ADDRS is as described for syms_from_objfile_1, above.
1109    ADDRS is ignored when SYMFILE_MAINLINE bit is set in ADD_FLAGS.
1110
1111    PARENT is the original objfile if ABFD is a separate debug info file.
1112    Otherwise PARENT is NULL.
1113
1114    Upon success, returns a pointer to the objfile that was added.
1115    Upon failure, jumps back to command level (never returns).  */
1116
1117 static struct objfile *
1118 symbol_file_add_with_addrs (bfd *abfd, const char *name,
1119                             symfile_add_flags add_flags,
1120                             struct section_addr_info *addrs,
1121                             objfile_flags flags, struct objfile *parent)
1122 {
1123   struct objfile *objfile;
1124   const int from_tty = add_flags & SYMFILE_VERBOSE;
1125   const int mainline = add_flags & SYMFILE_MAINLINE;
1126   const int should_print = (print_symbol_loading_p (from_tty, mainline, 1)
1127                             && (readnow_symbol_files
1128                                 || (add_flags & SYMFILE_NO_READ) == 0));
1129
1130   if (readnow_symbol_files)
1131     {
1132       flags |= OBJF_READNOW;
1133       add_flags &= ~SYMFILE_NO_READ;
1134     }
1135
1136   /* Give user a chance to burp if we'd be
1137      interactively wiping out any existing symbols.  */
1138
1139   if ((have_full_symbols () || have_partial_symbols ())
1140       && mainline
1141       && from_tty
1142       && !query (_("Load new symbol table from \"%s\"? "), name))
1143     error (_("Not confirmed."));
1144
1145   if (mainline)
1146     flags |= OBJF_MAINLINE;
1147   objfile = new struct objfile (abfd, name, flags);
1148
1149   if (parent)
1150     add_separate_debug_objfile (objfile, parent);
1151
1152   /* We either created a new mapped symbol table, mapped an existing
1153      symbol table file which has not had initial symbol reading
1154      performed, or need to read an unmapped symbol table.  */
1155   if (should_print)
1156     {
1157       if (deprecated_pre_add_symbol_hook)
1158         deprecated_pre_add_symbol_hook (name);
1159       else
1160         {
1161           printf_unfiltered (_("Reading symbols from %s..."), name);
1162           wrap_here ("");
1163           gdb_flush (gdb_stdout);
1164         }
1165     }
1166   syms_from_objfile (objfile, addrs, add_flags);
1167
1168   /* We now have at least a partial symbol table.  Check to see if the
1169      user requested that all symbols be read on initial access via either
1170      the gdb startup command line or on a per symbol file basis.  Expand
1171      all partial symbol tables for this objfile if so.  */
1172
1173   if ((flags & OBJF_READNOW))
1174     {
1175       if (should_print)
1176         {
1177           printf_unfiltered (_("expanding to full symbols..."));
1178           wrap_here ("");
1179           gdb_flush (gdb_stdout);
1180         }
1181
1182       if (objfile->sf)
1183         objfile->sf->qf->expand_all_symtabs (objfile);
1184     }
1185
1186   if (should_print && !objfile_has_symbols (objfile))
1187     {
1188       wrap_here ("");
1189       printf_unfiltered (_("(no debugging symbols found)..."));
1190       wrap_here ("");
1191     }
1192
1193   if (should_print)
1194     {
1195       if (deprecated_post_add_symbol_hook)
1196         deprecated_post_add_symbol_hook ();
1197       else
1198         printf_unfiltered (_("done.\n"));
1199     }
1200
1201   /* We print some messages regardless of whether 'from_tty ||
1202      info_verbose' is true, so make sure they go out at the right
1203      time.  */
1204   gdb_flush (gdb_stdout);
1205
1206   if (objfile->sf == NULL)
1207     {
1208       observer_notify_new_objfile (objfile);
1209       return objfile;   /* No symbols.  */
1210     }
1211
1212   finish_new_objfile (objfile, add_flags);
1213
1214   observer_notify_new_objfile (objfile);
1215
1216   bfd_cache_close_all ();
1217   return (objfile);
1218 }
1219
1220 /* Add BFD as a separate debug file for OBJFILE.  For NAME description
1221    see the objfile constructor.  */
1222
1223 void
1224 symbol_file_add_separate (bfd *bfd, const char *name,
1225                           symfile_add_flags symfile_flags,
1226                           struct objfile *objfile)
1227 {
1228   struct section_addr_info *sap;
1229   struct cleanup *my_cleanup;
1230
1231   /* Create section_addr_info.  We can't directly use offsets from OBJFILE
1232      because sections of BFD may not match sections of OBJFILE and because
1233      vma may have been modified by tools such as prelink.  */
1234   sap = build_section_addr_info_from_objfile (objfile);
1235   my_cleanup = make_cleanup_free_section_addr_info (sap);
1236
1237   symbol_file_add_with_addrs
1238     (bfd, name, symfile_flags, sap,
1239      objfile->flags & (OBJF_REORDERED | OBJF_SHARED | OBJF_READNOW
1240                        | OBJF_USERLOADED),
1241      objfile);
1242
1243   do_cleanups (my_cleanup);
1244 }
1245
1246 /* Process the symbol file ABFD, as either the main file or as a
1247    dynamically loaded file.
1248    See symbol_file_add_with_addrs's comments for details.  */
1249
1250 struct objfile *
1251 symbol_file_add_from_bfd (bfd *abfd, const char *name,
1252                           symfile_add_flags add_flags,
1253                           struct section_addr_info *addrs,
1254                           objfile_flags flags, struct objfile *parent)
1255 {
1256   return symbol_file_add_with_addrs (abfd, name, add_flags, addrs, flags,
1257                                      parent);
1258 }
1259
1260 /* Process a symbol file, as either the main file or as a dynamically
1261    loaded file.  See symbol_file_add_with_addrs's comments for details.  */
1262
1263 struct objfile *
1264 symbol_file_add (const char *name, symfile_add_flags add_flags,
1265                  struct section_addr_info *addrs, objfile_flags flags)
1266 {
1267   gdb_bfd_ref_ptr bfd (symfile_bfd_open (name));
1268
1269   return symbol_file_add_from_bfd (bfd.get (), name, add_flags, addrs,
1270                                    flags, NULL);
1271 }
1272
1273 /* Call symbol_file_add() with default values and update whatever is
1274    affected by the loading of a new main().
1275    Used when the file is supplied in the gdb command line
1276    and by some targets with special loading requirements.
1277    The auxiliary function, symbol_file_add_main_1(), has the flags
1278    argument for the switches that can only be specified in the symbol_file
1279    command itself.  */
1280
1281 void
1282 symbol_file_add_main (const char *args, symfile_add_flags add_flags)
1283 {
1284   symbol_file_add_main_1 (args, add_flags, 0);
1285 }
1286
1287 static void
1288 symbol_file_add_main_1 (const char *args, symfile_add_flags add_flags,
1289                         objfile_flags flags)
1290 {
1291   add_flags |= current_inferior ()->symfile_flags | SYMFILE_MAINLINE;
1292
1293   symbol_file_add (args, add_flags, NULL, flags);
1294
1295   /* Getting new symbols may change our opinion about
1296      what is frameless.  */
1297   reinit_frame_cache ();
1298
1299   if ((add_flags & SYMFILE_NO_READ) == 0)
1300     set_initial_language ();
1301 }
1302
1303 void
1304 symbol_file_clear (int from_tty)
1305 {
1306   if ((have_full_symbols () || have_partial_symbols ())
1307       && from_tty
1308       && (symfile_objfile
1309           ? !query (_("Discard symbol table from `%s'? "),
1310                     objfile_name (symfile_objfile))
1311           : !query (_("Discard symbol table? "))))
1312     error (_("Not confirmed."));
1313
1314   /* solib descriptors may have handles to objfiles.  Wipe them before their
1315      objfiles get stale by free_all_objfiles.  */
1316   no_shared_libraries (NULL, from_tty);
1317
1318   free_all_objfiles ();
1319
1320   gdb_assert (symfile_objfile == NULL);
1321   if (from_tty)
1322     printf_unfiltered (_("No symbol file now.\n"));
1323 }
1324
1325 /* See symfile.h.  */
1326
1327 int separate_debug_file_debug = 0;
1328
1329 static int
1330 separate_debug_file_exists (const char *name, unsigned long crc,
1331                             struct objfile *parent_objfile)
1332 {
1333   unsigned long file_crc;
1334   int file_crc_p;
1335   struct stat parent_stat, abfd_stat;
1336   int verified_as_different;
1337
1338   /* Find a separate debug info file as if symbols would be present in
1339      PARENT_OBJFILE itself this function would not be called.  .gnu_debuglink
1340      section can contain just the basename of PARENT_OBJFILE without any
1341      ".debug" suffix as "/usr/lib/debug/path/to/file" is a separate tree where
1342      the separate debug infos with the same basename can exist.  */
1343
1344   if (filename_cmp (name, objfile_name (parent_objfile)) == 0)
1345     return 0;
1346
1347   if (separate_debug_file_debug)
1348     printf_unfiltered (_("  Trying %s\n"), name);
1349
1350   gdb_bfd_ref_ptr abfd (gdb_bfd_open (name, gnutarget, -1));
1351
1352   if (abfd == NULL)
1353     return 0;
1354
1355   /* Verify symlinks were not the cause of filename_cmp name difference above.
1356
1357      Some operating systems, e.g. Windows, do not provide a meaningful
1358      st_ino; they always set it to zero.  (Windows does provide a
1359      meaningful st_dev.)  Files accessed from gdbservers that do not
1360      support the vFile:fstat packet will also have st_ino set to zero.
1361      Do not indicate a duplicate library in either case.  While there
1362      is no guarantee that a system that provides meaningful inode
1363      numbers will never set st_ino to zero, this is merely an
1364      optimization, so we do not need to worry about false negatives.  */
1365
1366   if (bfd_stat (abfd.get (), &abfd_stat) == 0
1367       && abfd_stat.st_ino != 0
1368       && bfd_stat (parent_objfile->obfd, &parent_stat) == 0)
1369     {
1370       if (abfd_stat.st_dev == parent_stat.st_dev
1371           && abfd_stat.st_ino == parent_stat.st_ino)
1372         return 0;
1373       verified_as_different = 1;
1374     }
1375   else
1376     verified_as_different = 0;
1377
1378   file_crc_p = gdb_bfd_crc (abfd.get (), &file_crc);
1379
1380   if (!file_crc_p)
1381     return 0;
1382
1383   if (crc != file_crc)
1384     {
1385       unsigned long parent_crc;
1386
1387       /* If the files could not be verified as different with
1388          bfd_stat then we need to calculate the parent's CRC
1389          to verify whether the files are different or not.  */
1390
1391       if (!verified_as_different)
1392         {
1393           if (!gdb_bfd_crc (parent_objfile->obfd, &parent_crc))
1394             return 0;
1395         }
1396
1397       if (verified_as_different || parent_crc != file_crc)
1398         warning (_("the debug information found in \"%s\""
1399                    " does not match \"%s\" (CRC mismatch).\n"),
1400                  name, objfile_name (parent_objfile));
1401
1402       return 0;
1403     }
1404
1405   return 1;
1406 }
1407
1408 char *debug_file_directory = NULL;
1409 static void
1410 show_debug_file_directory (struct ui_file *file, int from_tty,
1411                            struct cmd_list_element *c, const char *value)
1412 {
1413   fprintf_filtered (file,
1414                     _("The directory where separate debug "
1415                       "symbols are searched for is \"%s\".\n"),
1416                     value);
1417 }
1418
1419 #if ! defined (DEBUG_SUBDIRECTORY)
1420 #define DEBUG_SUBDIRECTORY ".debug"
1421 #endif
1422
1423 /* Find a separate debuginfo file for OBJFILE, using DIR as the directory
1424    where the original file resides (may not be the same as
1425    dirname(objfile->name) due to symlinks), and DEBUGLINK as the file we are
1426    looking for.  CANON_DIR is the "realpath" form of DIR.
1427    DIR must contain a trailing '/'.
1428    Returns the path of the file with separate debug info, of NULL.  */
1429
1430 static char *
1431 find_separate_debug_file (const char *dir,
1432                           const char *canon_dir,
1433                           const char *debuglink,
1434                           unsigned long crc32, struct objfile *objfile)
1435 {
1436   char *debugdir;
1437   char *debugfile;
1438   int i;
1439   VEC (char_ptr) *debugdir_vec;
1440   struct cleanup *back_to;
1441   int ix;
1442
1443   if (separate_debug_file_debug)
1444     printf_unfiltered (_("\nLooking for separate debug info (debug link) for "
1445                          "%s\n"), objfile_name (objfile));
1446
1447   /* Set I to std::max (strlen (canon_dir), strlen (dir)).  */
1448   i = strlen (dir);
1449   if (canon_dir != NULL && strlen (canon_dir) > i)
1450     i = strlen (canon_dir);
1451
1452   debugfile
1453     = (char *) xmalloc (strlen (debug_file_directory) + 1
1454                         + i
1455                         + strlen (DEBUG_SUBDIRECTORY)
1456                         + strlen ("/")
1457                         + strlen (debuglink)
1458                         + 1);
1459
1460   /* First try in the same directory as the original file.  */
1461   strcpy (debugfile, dir);
1462   strcat (debugfile, debuglink);
1463
1464   if (separate_debug_file_exists (debugfile, crc32, objfile))
1465     return debugfile;
1466
1467   /* Then try in the subdirectory named DEBUG_SUBDIRECTORY.  */
1468   strcpy (debugfile, dir);
1469   strcat (debugfile, DEBUG_SUBDIRECTORY);
1470   strcat (debugfile, "/");
1471   strcat (debugfile, debuglink);
1472
1473   if (separate_debug_file_exists (debugfile, crc32, objfile))
1474     return debugfile;
1475
1476   /* Then try in the global debugfile directories.
1477
1478      Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
1479      cause "/..." lookups.  */
1480
1481   debugdir_vec = dirnames_to_char_ptr_vec (debug_file_directory);
1482   back_to = make_cleanup_free_char_ptr_vec (debugdir_vec);
1483
1484   for (ix = 0; VEC_iterate (char_ptr, debugdir_vec, ix, debugdir); ++ix)
1485     {
1486       strcpy (debugfile, debugdir);
1487       strcat (debugfile, "/");
1488       strcat (debugfile, dir);
1489       strcat (debugfile, debuglink);
1490
1491       if (separate_debug_file_exists (debugfile, crc32, objfile))
1492         {
1493           do_cleanups (back_to);
1494           return debugfile;
1495         }
1496
1497       /* If the file is in the sysroot, try using its base path in the
1498          global debugfile directory.  */
1499       if (canon_dir != NULL
1500           && filename_ncmp (canon_dir, gdb_sysroot,
1501                             strlen (gdb_sysroot)) == 0
1502           && IS_DIR_SEPARATOR (canon_dir[strlen (gdb_sysroot)]))
1503         {
1504           strcpy (debugfile, debugdir);
1505           strcat (debugfile, canon_dir + strlen (gdb_sysroot));
1506           strcat (debugfile, "/");
1507           strcat (debugfile, debuglink);
1508
1509           if (separate_debug_file_exists (debugfile, crc32, objfile))
1510             {
1511               do_cleanups (back_to);
1512               return debugfile;
1513             }
1514         }
1515     }
1516
1517   do_cleanups (back_to);
1518   xfree (debugfile);
1519   return NULL;
1520 }
1521
1522 /* Modify PATH to contain only "[/]directory/" part of PATH.
1523    If there were no directory separators in PATH, PATH will be empty
1524    string on return.  */
1525
1526 static void
1527 terminate_after_last_dir_separator (char *path)
1528 {
1529   int i;
1530
1531   /* Strip off the final filename part, leaving the directory name,
1532      followed by a slash.  The directory can be relative or absolute.  */
1533   for (i = strlen(path) - 1; i >= 0; i--)
1534     if (IS_DIR_SEPARATOR (path[i]))
1535       break;
1536
1537   /* If I is -1 then no directory is present there and DIR will be "".  */
1538   path[i + 1] = '\0';
1539 }
1540
1541 /* Find separate debuginfo for OBJFILE (using .gnu_debuglink section).
1542    Returns pathname, or NULL.  */
1543
1544 char *
1545 find_separate_debug_file_by_debuglink (struct objfile *objfile)
1546 {
1547   char *debuglink;
1548   char *dir, *canon_dir;
1549   char *debugfile;
1550   unsigned long crc32;
1551   struct cleanup *cleanups;
1552
1553   debuglink = bfd_get_debug_link_info (objfile->obfd, &crc32);
1554
1555   if (debuglink == NULL)
1556     {
1557       /* There's no separate debug info, hence there's no way we could
1558          load it => no warning.  */
1559       return NULL;
1560     }
1561
1562   cleanups = make_cleanup (xfree, debuglink);
1563   dir = xstrdup (objfile_name (objfile));
1564   make_cleanup (xfree, dir);
1565   terminate_after_last_dir_separator (dir);
1566   canon_dir = lrealpath (dir);
1567
1568   debugfile = find_separate_debug_file (dir, canon_dir, debuglink,
1569                                         crc32, objfile);
1570   xfree (canon_dir);
1571
1572   if (debugfile == NULL)
1573     {
1574       /* For PR gdb/9538, try again with realpath (if different from the
1575          original).  */
1576
1577       struct stat st_buf;
1578
1579       if (lstat (objfile_name (objfile), &st_buf) == 0
1580           && S_ISLNK (st_buf.st_mode))
1581         {
1582           char *symlink_dir;
1583
1584           symlink_dir = lrealpath (objfile_name (objfile));
1585           if (symlink_dir != NULL)
1586             {
1587               make_cleanup (xfree, symlink_dir);
1588               terminate_after_last_dir_separator (symlink_dir);
1589               if (strcmp (dir, symlink_dir) != 0)
1590                 {
1591                   /* Different directory, so try using it.  */
1592                   debugfile = find_separate_debug_file (symlink_dir,
1593                                                         symlink_dir,
1594                                                         debuglink,
1595                                                         crc32,
1596                                                         objfile);
1597                 }
1598             }
1599         }
1600     }
1601
1602   do_cleanups (cleanups);
1603   return debugfile;
1604 }
1605
1606 /* This is the symbol-file command.  Read the file, analyze its
1607    symbols, and add a struct symtab to a symtab list.  The syntax of
1608    the command is rather bizarre:
1609
1610    1. The function buildargv implements various quoting conventions
1611    which are undocumented and have little or nothing in common with
1612    the way things are quoted (or not quoted) elsewhere in GDB.
1613
1614    2. Options are used, which are not generally used in GDB (perhaps
1615    "set mapped on", "set readnow on" would be better)
1616
1617    3. The order of options matters, which is contrary to GNU
1618    conventions (because it is confusing and inconvenient).  */
1619
1620 void
1621 symbol_file_command (const char *args, int from_tty)
1622 {
1623   dont_repeat ();
1624
1625   if (args == NULL)
1626     {
1627       symbol_file_clear (from_tty);
1628     }
1629   else
1630     {
1631       objfile_flags flags = OBJF_USERLOADED;
1632       symfile_add_flags add_flags = 0;
1633       char *name = NULL;
1634
1635       if (from_tty)
1636         add_flags |= SYMFILE_VERBOSE;
1637
1638       gdb_argv built_argv (args);
1639       for (char *arg : built_argv)
1640         {
1641           if (strcmp (arg, "-readnow") == 0)
1642             flags |= OBJF_READNOW;
1643           else if (*arg == '-')
1644             error (_("unknown option `%s'"), arg);
1645           else
1646             {
1647               symbol_file_add_main_1 (arg, add_flags, flags);
1648               name = arg;
1649             }
1650         }
1651
1652       if (name == NULL)
1653         error (_("no symbol file name was specified"));
1654     }
1655 }
1656
1657 /* Set the initial language.
1658
1659    FIXME: A better solution would be to record the language in the
1660    psymtab when reading partial symbols, and then use it (if known) to
1661    set the language.  This would be a win for formats that encode the
1662    language in an easily discoverable place, such as DWARF.  For
1663    stabs, we can jump through hoops looking for specially named
1664    symbols or try to intuit the language from the specific type of
1665    stabs we find, but we can't do that until later when we read in
1666    full symbols.  */
1667
1668 void
1669 set_initial_language (void)
1670 {
1671   enum language lang = main_language ();
1672
1673   if (lang == language_unknown)
1674     {
1675       char *name = main_name ();
1676       struct symbol *sym = lookup_symbol (name, NULL, VAR_DOMAIN, NULL).symbol;
1677
1678       if (sym != NULL)
1679         lang = SYMBOL_LANGUAGE (sym);
1680     }
1681
1682   if (lang == language_unknown)
1683     {
1684       /* Make C the default language */
1685       lang = language_c;
1686     }
1687
1688   set_language (lang);
1689   expected_language = current_language; /* Don't warn the user.  */
1690 }
1691
1692 /* Open the file specified by NAME and hand it off to BFD for
1693    preliminary analysis.  Return a newly initialized bfd *, which
1694    includes a newly malloc'd` copy of NAME (tilde-expanded and made
1695    absolute).  In case of trouble, error() is called.  */
1696
1697 gdb_bfd_ref_ptr
1698 symfile_bfd_open (const char *name)
1699 {
1700   int desc = -1;
1701   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
1702
1703   if (!is_target_filename (name))
1704     {
1705       char *absolute_name;
1706
1707       gdb::unique_xmalloc_ptr<char> expanded_name (tilde_expand (name));
1708
1709       /* Look down path for it, allocate 2nd new malloc'd copy.  */
1710       desc = openp (getenv ("PATH"),
1711                     OPF_TRY_CWD_FIRST | OPF_RETURN_REALPATH,
1712                     expanded_name.get (), O_RDONLY | O_BINARY, &absolute_name);
1713 #if defined(__GO32__) || defined(_WIN32) || defined (__CYGWIN__)
1714       if (desc < 0)
1715         {
1716           char *exename = (char *) alloca (strlen (expanded_name.get ()) + 5);
1717
1718           strcat (strcpy (exename, expanded_name.get ()), ".exe");
1719           desc = openp (getenv ("PATH"),
1720                         OPF_TRY_CWD_FIRST | OPF_RETURN_REALPATH,
1721                         exename, O_RDONLY | O_BINARY, &absolute_name);
1722         }
1723 #endif
1724       if (desc < 0)
1725         perror_with_name (expanded_name.get ());
1726
1727       make_cleanup (xfree, absolute_name);
1728       name = absolute_name;
1729     }
1730
1731   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (name, gnutarget, desc));
1732   if (sym_bfd == NULL)
1733     error (_("`%s': can't open to read symbols: %s."), name,
1734            bfd_errmsg (bfd_get_error ()));
1735
1736   if (!gdb_bfd_has_target_filename (sym_bfd.get ()))
1737     bfd_set_cacheable (sym_bfd.get (), 1);
1738
1739   if (!bfd_check_format (sym_bfd.get (), bfd_object))
1740     error (_("`%s': can't read symbols: %s."), name,
1741            bfd_errmsg (bfd_get_error ()));
1742
1743   do_cleanups (back_to);
1744
1745   return sym_bfd;
1746 }
1747
1748 /* Return the section index for SECTION_NAME on OBJFILE.  Return -1 if
1749    the section was not found.  */
1750
1751 int
1752 get_section_index (struct objfile *objfile, const char *section_name)
1753 {
1754   asection *sect = bfd_get_section_by_name (objfile->obfd, section_name);
1755
1756   if (sect)
1757     return sect->index;
1758   else
1759     return -1;
1760 }
1761
1762 /* Link SF into the global symtab_fns list.
1763    FLAVOUR is the file format that SF handles.
1764    Called on startup by the _initialize routine in each object file format
1765    reader, to register information about each format the reader is prepared
1766    to handle.  */
1767
1768 void
1769 add_symtab_fns (enum bfd_flavour flavour, const struct sym_fns *sf)
1770 {
1771   symtab_fns.emplace_back (flavour, sf);
1772 }
1773
1774 /* Initialize OBJFILE to read symbols from its associated BFD.  It
1775    either returns or calls error().  The result is an initialized
1776    struct sym_fns in the objfile structure, that contains cached
1777    information about the symbol file.  */
1778
1779 static const struct sym_fns *
1780 find_sym_fns (bfd *abfd)
1781 {
1782   enum bfd_flavour our_flavour = bfd_get_flavour (abfd);
1783
1784   if (our_flavour == bfd_target_srec_flavour
1785       || our_flavour == bfd_target_ihex_flavour
1786       || our_flavour == bfd_target_tekhex_flavour)
1787     return NULL;        /* No symbols.  */
1788
1789   for (const registered_sym_fns &rsf : symtab_fns)
1790     if (our_flavour == rsf.sym_flavour)
1791       return rsf.sym_fns;
1792
1793   error (_("I'm sorry, Dave, I can't do that.  Symbol format `%s' unknown."),
1794          bfd_get_target (abfd));
1795 }
1796 \f
1797
1798 /* This function runs the load command of our current target.  */
1799
1800 static void
1801 load_command (char *arg, int from_tty)
1802 {
1803   struct cleanup *cleanup = make_cleanup (null_cleanup, NULL);
1804
1805   dont_repeat ();
1806
1807   /* The user might be reloading because the binary has changed.  Take
1808      this opportunity to check.  */
1809   reopen_exec_file ();
1810   reread_symbols ();
1811
1812   if (arg == NULL)
1813     {
1814       char *parg;
1815       int count = 0;
1816
1817       parg = arg = get_exec_file (1);
1818
1819       /* Count how many \ " ' tab space there are in the name.  */
1820       while ((parg = strpbrk (parg, "\\\"'\t ")))
1821         {
1822           parg++;
1823           count++;
1824         }
1825
1826       if (count)
1827         {
1828           /* We need to quote this string so buildargv can pull it apart.  */
1829           char *temp = (char *) xmalloc (strlen (arg) + count + 1 );
1830           char *ptemp = temp;
1831           char *prev;
1832
1833           make_cleanup (xfree, temp);
1834
1835           prev = parg = arg;
1836           while ((parg = strpbrk (parg, "\\\"'\t ")))
1837             {
1838               strncpy (ptemp, prev, parg - prev);
1839               ptemp += parg - prev;
1840               prev = parg++;
1841               *ptemp++ = '\\';
1842             }
1843           strcpy (ptemp, prev);
1844
1845           arg = temp;
1846         }
1847     }
1848
1849   target_load (arg, from_tty);
1850
1851   /* After re-loading the executable, we don't really know which
1852      overlays are mapped any more.  */
1853   overlay_cache_invalid = 1;
1854
1855   do_cleanups (cleanup);
1856 }
1857
1858 /* This version of "load" should be usable for any target.  Currently
1859    it is just used for remote targets, not inftarg.c or core files,
1860    on the theory that only in that case is it useful.
1861
1862    Avoiding xmodem and the like seems like a win (a) because we don't have
1863    to worry about finding it, and (b) On VMS, fork() is very slow and so
1864    we don't want to run a subprocess.  On the other hand, I'm not sure how
1865    performance compares.  */
1866
1867 static int validate_download = 0;
1868
1869 /* Callback service function for generic_load (bfd_map_over_sections).  */
1870
1871 static void
1872 add_section_size_callback (bfd *abfd, asection *asec, void *data)
1873 {
1874   bfd_size_type *sum = (bfd_size_type *) data;
1875
1876   *sum += bfd_get_section_size (asec);
1877 }
1878
1879 /* Opaque data for load_section_callback.  */
1880 struct load_section_data {
1881   CORE_ADDR load_offset;
1882   struct load_progress_data *progress_data;
1883   VEC(memory_write_request_s) *requests;
1884 };
1885
1886 /* Opaque data for load_progress.  */
1887 struct load_progress_data {
1888   /* Cumulative data.  */
1889   unsigned long write_count;
1890   unsigned long data_count;
1891   bfd_size_type total_size;
1892 };
1893
1894 /* Opaque data for load_progress for a single section.  */
1895 struct load_progress_section_data {
1896   struct load_progress_data *cumulative;
1897
1898   /* Per-section data.  */
1899   const char *section_name;
1900   ULONGEST section_sent;
1901   ULONGEST section_size;
1902   CORE_ADDR lma;
1903   gdb_byte *buffer;
1904 };
1905
1906 /* Target write callback routine for progress reporting.  */
1907
1908 static void
1909 load_progress (ULONGEST bytes, void *untyped_arg)
1910 {
1911   struct load_progress_section_data *args
1912     = (struct load_progress_section_data *) untyped_arg;
1913   struct load_progress_data *totals;
1914
1915   if (args == NULL)
1916     /* Writing padding data.  No easy way to get at the cumulative
1917        stats, so just ignore this.  */
1918     return;
1919
1920   totals = args->cumulative;
1921
1922   if (bytes == 0 && args->section_sent == 0)
1923     {
1924       /* The write is just starting.  Let the user know we've started
1925          this section.  */
1926       current_uiout->message ("Loading section %s, size %s lma %s\n",
1927                               args->section_name,
1928                               hex_string (args->section_size),
1929                               paddress (target_gdbarch (), args->lma));
1930       return;
1931     }
1932
1933   if (validate_download)
1934     {
1935       /* Broken memories and broken monitors manifest themselves here
1936          when bring new computers to life.  This doubles already slow
1937          downloads.  */
1938       /* NOTE: cagney/1999-10-18: A more efficient implementation
1939          might add a verify_memory() method to the target vector and
1940          then use that.  remote.c could implement that method using
1941          the ``qCRC'' packet.  */
1942       gdb::byte_vector check (bytes);
1943
1944       if (target_read_memory (args->lma, check.data (), bytes) != 0)
1945         error (_("Download verify read failed at %s"),
1946                paddress (target_gdbarch (), args->lma));
1947       if (memcmp (args->buffer, check.data (), bytes) != 0)
1948         error (_("Download verify compare failed at %s"),
1949                paddress (target_gdbarch (), args->lma));
1950     }
1951   totals->data_count += bytes;
1952   args->lma += bytes;
1953   args->buffer += bytes;
1954   totals->write_count += 1;
1955   args->section_sent += bytes;
1956   if (check_quit_flag ()
1957       || (deprecated_ui_load_progress_hook != NULL
1958           && deprecated_ui_load_progress_hook (args->section_name,
1959                                                args->section_sent)))
1960     error (_("Canceled the download"));
1961
1962   if (deprecated_show_load_progress != NULL)
1963     deprecated_show_load_progress (args->section_name,
1964                                    args->section_sent,
1965                                    args->section_size,
1966                                    totals->data_count,
1967                                    totals->total_size);
1968 }
1969
1970 /* Callback service function for generic_load (bfd_map_over_sections).  */
1971
1972 static void
1973 load_section_callback (bfd *abfd, asection *asec, void *data)
1974 {
1975   struct memory_write_request *new_request;
1976   struct load_section_data *args = (struct load_section_data *) data;
1977   struct load_progress_section_data *section_data;
1978   bfd_size_type size = bfd_get_section_size (asec);
1979   gdb_byte *buffer;
1980   const char *sect_name = bfd_get_section_name (abfd, asec);
1981
1982   if ((bfd_get_section_flags (abfd, asec) & SEC_LOAD) == 0)
1983     return;
1984
1985   if (size == 0)
1986     return;
1987
1988   new_request = VEC_safe_push (memory_write_request_s,
1989                                args->requests, NULL);
1990   memset (new_request, 0, sizeof (struct memory_write_request));
1991   section_data = XCNEW (struct load_progress_section_data);
1992   new_request->begin = bfd_section_lma (abfd, asec) + args->load_offset;
1993   new_request->end = new_request->begin + size; /* FIXME Should size
1994                                                    be in instead?  */
1995   new_request->data = (gdb_byte *) xmalloc (size);
1996   new_request->baton = section_data;
1997
1998   buffer = new_request->data;
1999
2000   section_data->cumulative = args->progress_data;
2001   section_data->section_name = sect_name;
2002   section_data->section_size = size;
2003   section_data->lma = new_request->begin;
2004   section_data->buffer = buffer;
2005
2006   bfd_get_section_contents (abfd, asec, buffer, 0, size);
2007 }
2008
2009 /* Clean up an entire memory request vector, including load
2010    data and progress records.  */
2011
2012 static void
2013 clear_memory_write_data (void *arg)
2014 {
2015   VEC(memory_write_request_s) **vec_p = (VEC(memory_write_request_s) **) arg;
2016   VEC(memory_write_request_s) *vec = *vec_p;
2017   int i;
2018   struct memory_write_request *mr;
2019
2020   for (i = 0; VEC_iterate (memory_write_request_s, vec, i, mr); ++i)
2021     {
2022       xfree (mr->data);
2023       xfree (mr->baton);
2024     }
2025   VEC_free (memory_write_request_s, vec);
2026 }
2027
2028 static void print_transfer_performance (struct ui_file *stream,
2029                                         unsigned long data_count,
2030                                         unsigned long write_count,
2031                                         std::chrono::steady_clock::duration d);
2032
2033 void
2034 generic_load (const char *args, int from_tty)
2035 {
2036   struct cleanup *old_cleanups;
2037   struct load_section_data cbdata;
2038   struct load_progress_data total_progress;
2039   struct ui_out *uiout = current_uiout;
2040
2041   CORE_ADDR entry;
2042
2043   memset (&cbdata, 0, sizeof (cbdata));
2044   memset (&total_progress, 0, sizeof (total_progress));
2045   cbdata.progress_data = &total_progress;
2046
2047   old_cleanups = make_cleanup (clear_memory_write_data, &cbdata.requests);
2048
2049   if (args == NULL)
2050     error_no_arg (_("file to load"));
2051
2052   gdb_argv argv (args);
2053
2054   gdb::unique_xmalloc_ptr<char> filename (tilde_expand (argv[0]));
2055
2056   if (argv[1] != NULL)
2057     {
2058       const char *endptr;
2059
2060       cbdata.load_offset = strtoulst (argv[1], &endptr, 0);
2061
2062       /* If the last word was not a valid number then
2063          treat it as a file name with spaces in.  */
2064       if (argv[1] == endptr)
2065         error (_("Invalid download offset:%s."), argv[1]);
2066
2067       if (argv[2] != NULL)
2068         error (_("Too many parameters."));
2069     }
2070
2071   /* Open the file for loading.  */
2072   gdb_bfd_ref_ptr loadfile_bfd (gdb_bfd_open (filename.get (), gnutarget, -1));
2073   if (loadfile_bfd == NULL)
2074     perror_with_name (filename.get ());
2075
2076   if (!bfd_check_format (loadfile_bfd.get (), bfd_object))
2077     {
2078       error (_("\"%s\" is not an object file: %s"), filename.get (),
2079              bfd_errmsg (bfd_get_error ()));
2080     }
2081
2082   bfd_map_over_sections (loadfile_bfd.get (), add_section_size_callback,
2083                          (void *) &total_progress.total_size);
2084
2085   bfd_map_over_sections (loadfile_bfd.get (), load_section_callback, &cbdata);
2086
2087   using namespace std::chrono;
2088
2089   steady_clock::time_point start_time = steady_clock::now ();
2090
2091   if (target_write_memory_blocks (cbdata.requests, flash_discard,
2092                                   load_progress) != 0)
2093     error (_("Load failed"));
2094
2095   steady_clock::time_point end_time = steady_clock::now ();
2096
2097   entry = bfd_get_start_address (loadfile_bfd.get ());
2098   entry = gdbarch_addr_bits_remove (target_gdbarch (), entry);
2099   uiout->text ("Start address ");
2100   uiout->field_fmt ("address", "%s", paddress (target_gdbarch (), entry));
2101   uiout->text (", load size ");
2102   uiout->field_fmt ("load-size", "%lu", total_progress.data_count);
2103   uiout->text ("\n");
2104   regcache_write_pc (get_current_regcache (), entry);
2105
2106   /* Reset breakpoints, now that we have changed the load image.  For
2107      instance, breakpoints may have been set (or reset, by
2108      post_create_inferior) while connected to the target but before we
2109      loaded the program.  In that case, the prologue analyzer could
2110      have read instructions from the target to find the right
2111      breakpoint locations.  Loading has changed the contents of that
2112      memory.  */
2113
2114   breakpoint_re_set ();
2115
2116   print_transfer_performance (gdb_stdout, total_progress.data_count,
2117                               total_progress.write_count,
2118                               end_time - start_time);
2119
2120   do_cleanups (old_cleanups);
2121 }
2122
2123 /* Report on STREAM the performance of a memory transfer operation,
2124    such as 'load'.  DATA_COUNT is the number of bytes transferred.
2125    WRITE_COUNT is the number of separate write operations, or 0, if
2126    that information is not available.  TIME is how long the operation
2127    lasted.  */
2128
2129 static void
2130 print_transfer_performance (struct ui_file *stream,
2131                             unsigned long data_count,
2132                             unsigned long write_count,
2133                             std::chrono::steady_clock::duration time)
2134 {
2135   using namespace std::chrono;
2136   struct ui_out *uiout = current_uiout;
2137
2138   milliseconds ms = duration_cast<milliseconds> (time);
2139
2140   uiout->text ("Transfer rate: ");
2141   if (ms.count () > 0)
2142     {
2143       unsigned long rate = ((ULONGEST) data_count * 1000) / ms.count ();
2144
2145       if (uiout->is_mi_like_p ())
2146         {
2147           uiout->field_fmt ("transfer-rate", "%lu", rate * 8);
2148           uiout->text (" bits/sec");
2149         }
2150       else if (rate < 1024)
2151         {
2152           uiout->field_fmt ("transfer-rate", "%lu", rate);
2153           uiout->text (" bytes/sec");
2154         }
2155       else
2156         {
2157           uiout->field_fmt ("transfer-rate", "%lu", rate / 1024);
2158           uiout->text (" KB/sec");
2159         }
2160     }
2161   else
2162     {
2163       uiout->field_fmt ("transferred-bits", "%lu", (data_count * 8));
2164       uiout->text (" bits in <1 sec");
2165     }
2166   if (write_count > 0)
2167     {
2168       uiout->text (", ");
2169       uiout->field_fmt ("write-rate", "%lu", data_count / write_count);
2170       uiout->text (" bytes/write");
2171     }
2172   uiout->text (".\n");
2173 }
2174
2175 /* This function allows the addition of incrementally linked object files.
2176    It does not modify any state in the target, only in the debugger.  */
2177 /* Note: ezannoni 2000-04-13 This function/command used to have a
2178    special case syntax for the rombug target (Rombug is the boot
2179    monitor for Microware's OS-9 / OS-9000, see remote-os9k.c). In the
2180    rombug case, the user doesn't need to supply a text address,
2181    instead a call to target_link() (in target.c) would supply the
2182    value to use.  We are now discontinuing this type of ad hoc syntax.  */
2183
2184 static void
2185 add_symbol_file_command (const char *args, int from_tty)
2186 {
2187   struct gdbarch *gdbarch = get_current_arch ();
2188   gdb::unique_xmalloc_ptr<char> filename;
2189   char *arg;
2190   int argcnt = 0;
2191   int sec_num = 0;
2192   int expecting_sec_name = 0;
2193   int expecting_sec_addr = 0;
2194   struct objfile *objf;
2195   objfile_flags flags = OBJF_USERLOADED | OBJF_SHARED;
2196   symfile_add_flags add_flags = 0;
2197
2198   if (from_tty)
2199     add_flags |= SYMFILE_VERBOSE;
2200
2201   struct sect_opt
2202   {
2203     const char *name;
2204     const char *value;
2205   };
2206
2207   struct section_addr_info *section_addrs;
2208   std::vector<sect_opt> sect_opts;
2209   struct cleanup *my_cleanups = make_cleanup (null_cleanup, NULL);
2210
2211   dont_repeat ();
2212
2213   if (args == NULL)
2214     error (_("add-symbol-file takes a file name and an address"));
2215
2216   gdb_argv argv (args);
2217
2218   for (arg = argv[0], argcnt = 0; arg != NULL; arg = argv[++argcnt])
2219     {
2220       /* Process the argument.  */
2221       if (argcnt == 0)
2222         {
2223           /* The first argument is the file name.  */
2224           filename.reset (tilde_expand (arg));
2225         }
2226       else if (argcnt == 1)
2227         {
2228           /* The second argument is always the text address at which
2229              to load the program.  */
2230           sect_opt sect = { ".text", arg };
2231           sect_opts.push_back (sect);
2232         }
2233       else
2234         {
2235           /* It's an option (starting with '-') or it's an argument
2236              to an option.  */
2237           if (expecting_sec_name)
2238             {
2239               sect_opt sect = { arg, NULL };
2240               sect_opts.push_back (sect);
2241               expecting_sec_name = 0;
2242             }
2243           else if (expecting_sec_addr)
2244             {
2245               sect_opts.back ().value = arg;
2246               expecting_sec_addr = 0;
2247             }
2248           else if (strcmp (arg, "-readnow") == 0)
2249             flags |= OBJF_READNOW;
2250           else if (strcmp (arg, "-s") == 0)
2251             {
2252               expecting_sec_name = 1;
2253               expecting_sec_addr = 1;
2254             }
2255           else
2256             error (_("USAGE: add-symbol-file <filename> <textaddress>"
2257                      " [-readnow] [-s <secname> <addr>]*"));
2258         }
2259     }
2260
2261   /* This command takes at least two arguments.  The first one is a
2262      filename, and the second is the address where this file has been
2263      loaded.  Abort now if this address hasn't been provided by the
2264      user.  */
2265   if (sect_opts.empty ())
2266     error (_("The address where %s has been loaded is missing"),
2267            filename.get ());
2268
2269   /* Print the prompt for the query below.  And save the arguments into
2270      a sect_addr_info structure to be passed around to other
2271      functions.  We have to split this up into separate print
2272      statements because hex_string returns a local static
2273      string.  */
2274
2275   printf_unfiltered (_("add symbol table from file \"%s\" at\n"),
2276                      filename.get ());
2277   section_addrs = alloc_section_addr_info (sect_opts.size ());
2278   make_cleanup (xfree, section_addrs);
2279   for (sect_opt &sect : sect_opts)
2280     {
2281       CORE_ADDR addr;
2282       const char *val = sect.value;
2283       const char *sec = sect.name;
2284
2285       addr = parse_and_eval_address (val);
2286
2287       /* Here we store the section offsets in the order they were
2288          entered on the command line.  */
2289       section_addrs->other[sec_num].name = (char *) sec;
2290       section_addrs->other[sec_num].addr = addr;
2291       printf_unfiltered ("\t%s_addr = %s\n", sec,
2292                          paddress (gdbarch, addr));
2293       sec_num++;
2294
2295       /* The object's sections are initialized when a
2296          call is made to build_objfile_section_table (objfile).
2297          This happens in reread_symbols.
2298          At this point, we don't know what file type this is,
2299          so we can't determine what section names are valid.  */
2300     }
2301   section_addrs->num_sections = sec_num;
2302
2303   if (from_tty && (!query ("%s", "")))
2304     error (_("Not confirmed."));
2305
2306   objf = symbol_file_add (filename.get (), add_flags, section_addrs, flags);
2307
2308   add_target_sections_of_objfile (objf);
2309
2310   /* Getting new symbols may change our opinion about what is
2311      frameless.  */
2312   reinit_frame_cache ();
2313   do_cleanups (my_cleanups);
2314 }
2315 \f
2316
2317 /* This function removes a symbol file that was added via add-symbol-file.  */
2318
2319 static void
2320 remove_symbol_file_command (const char *args, int from_tty)
2321 {
2322   struct objfile *objf = NULL;
2323   struct program_space *pspace = current_program_space;
2324
2325   dont_repeat ();
2326
2327   if (args == NULL)
2328     error (_("remove-symbol-file: no symbol file provided"));
2329
2330   gdb_argv argv (args);
2331
2332   if (strcmp (argv[0], "-a") == 0)
2333     {
2334       /* Interpret the next argument as an address.  */
2335       CORE_ADDR addr;
2336
2337       if (argv[1] == NULL)
2338         error (_("Missing address argument"));
2339
2340       if (argv[2] != NULL)
2341         error (_("Junk after %s"), argv[1]);
2342
2343       addr = parse_and_eval_address (argv[1]);
2344
2345       ALL_OBJFILES (objf)
2346         {
2347           if ((objf->flags & OBJF_USERLOADED) != 0
2348               && (objf->flags & OBJF_SHARED) != 0
2349               && objf->pspace == pspace && is_addr_in_objfile (addr, objf))
2350             break;
2351         }
2352     }
2353   else if (argv[0] != NULL)
2354     {
2355       /* Interpret the current argument as a file name.  */
2356
2357       if (argv[1] != NULL)
2358         error (_("Junk after %s"), argv[0]);
2359
2360       gdb::unique_xmalloc_ptr<char> filename (tilde_expand (argv[0]));
2361
2362       ALL_OBJFILES (objf)
2363         {
2364           if ((objf->flags & OBJF_USERLOADED) != 0
2365               && (objf->flags & OBJF_SHARED) != 0
2366               && objf->pspace == pspace
2367               && filename_cmp (filename.get (), objfile_name (objf)) == 0)
2368             break;
2369         }
2370     }
2371
2372   if (objf == NULL)
2373     error (_("No symbol file found"));
2374
2375   if (from_tty
2376       && !query (_("Remove symbol table from file \"%s\"? "),
2377                  objfile_name (objf)))
2378     error (_("Not confirmed."));
2379
2380   delete objf;
2381   clear_symtab_users (0);
2382 }
2383
2384 /* Re-read symbols if a symbol-file has changed.  */
2385
2386 void
2387 reread_symbols (void)
2388 {
2389   struct objfile *objfile;
2390   long new_modtime;
2391   struct stat new_statbuf;
2392   int res;
2393   std::vector<struct objfile *> new_objfiles;
2394
2395   /* With the addition of shared libraries, this should be modified,
2396      the load time should be saved in the partial symbol tables, since
2397      different tables may come from different source files.  FIXME.
2398      This routine should then walk down each partial symbol table
2399      and see if the symbol table that it originates from has been changed.  */
2400
2401   for (objfile = object_files; objfile; objfile = objfile->next)
2402     {
2403       if (objfile->obfd == NULL)
2404         continue;
2405
2406       /* Separate debug objfiles are handled in the main objfile.  */
2407       if (objfile->separate_debug_objfile_backlink)
2408         continue;
2409
2410       /* If this object is from an archive (what you usually create with
2411          `ar', often called a `static library' on most systems, though
2412          a `shared library' on AIX is also an archive), then you should
2413          stat on the archive name, not member name.  */
2414       if (objfile->obfd->my_archive)
2415         res = stat (objfile->obfd->my_archive->filename, &new_statbuf);
2416       else
2417         res = stat (objfile_name (objfile), &new_statbuf);
2418       if (res != 0)
2419         {
2420           /* FIXME, should use print_sys_errmsg but it's not filtered.  */
2421           printf_unfiltered (_("`%s' has disappeared; keeping its symbols.\n"),
2422                              objfile_name (objfile));
2423           continue;
2424         }
2425       new_modtime = new_statbuf.st_mtime;
2426       if (new_modtime != objfile->mtime)
2427         {
2428           struct cleanup *old_cleanups;
2429           struct section_offsets *offsets;
2430           int num_offsets;
2431           char *original_name;
2432
2433           printf_unfiltered (_("`%s' has changed; re-reading symbols.\n"),
2434                              objfile_name (objfile));
2435
2436           /* There are various functions like symbol_file_add,
2437              symfile_bfd_open, syms_from_objfile, etc., which might
2438              appear to do what we want.  But they have various other
2439              effects which we *don't* want.  So we just do stuff
2440              ourselves.  We don't worry about mapped files (for one thing,
2441              any mapped file will be out of date).  */
2442
2443           /* If we get an error, blow away this objfile (not sure if
2444              that is the correct response for things like shared
2445              libraries).  */
2446           old_cleanups = make_cleanup_free_objfile (objfile);
2447           /* We need to do this whenever any symbols go away.  */
2448           make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/);
2449
2450           if (exec_bfd != NULL
2451               && filename_cmp (bfd_get_filename (objfile->obfd),
2452                                bfd_get_filename (exec_bfd)) == 0)
2453             {
2454               /* Reload EXEC_BFD without asking anything.  */
2455
2456               exec_file_attach (bfd_get_filename (objfile->obfd), 0);
2457             }
2458
2459           /* Keep the calls order approx. the same as in free_objfile.  */
2460
2461           /* Free the separate debug objfiles.  It will be
2462              automatically recreated by sym_read.  */
2463           free_objfile_separate_debug (objfile);
2464
2465           /* Remove any references to this objfile in the global
2466              value lists.  */
2467           preserve_values (objfile);
2468
2469           /* Nuke all the state that we will re-read.  Much of the following
2470              code which sets things to NULL really is necessary to tell
2471              other parts of GDB that there is nothing currently there.
2472
2473              Try to keep the freeing order compatible with free_objfile.  */
2474
2475           if (objfile->sf != NULL)
2476             {
2477               (*objfile->sf->sym_finish) (objfile);
2478             }
2479
2480           clear_objfile_data (objfile);
2481
2482           /* Clean up any state BFD has sitting around.  */
2483           {
2484             gdb_bfd_ref_ptr obfd (objfile->obfd);
2485             char *obfd_filename;
2486
2487             obfd_filename = bfd_get_filename (objfile->obfd);
2488             /* Open the new BFD before freeing the old one, so that
2489                the filename remains live.  */
2490             gdb_bfd_ref_ptr temp (gdb_bfd_open (obfd_filename, gnutarget, -1));
2491             objfile->obfd = temp.release ();
2492             if (objfile->obfd == NULL)
2493               error (_("Can't open %s to read symbols."), obfd_filename);
2494           }
2495
2496           original_name = xstrdup (objfile->original_name);
2497           make_cleanup (xfree, original_name);
2498
2499           /* bfd_openr sets cacheable to true, which is what we want.  */
2500           if (!bfd_check_format (objfile->obfd, bfd_object))
2501             error (_("Can't read symbols from %s: %s."), objfile_name (objfile),
2502                    bfd_errmsg (bfd_get_error ()));
2503
2504           /* Save the offsets, we will nuke them with the rest of the
2505              objfile_obstack.  */
2506           num_offsets = objfile->num_sections;
2507           offsets = ((struct section_offsets *)
2508                      alloca (SIZEOF_N_SECTION_OFFSETS (num_offsets)));
2509           memcpy (offsets, objfile->section_offsets,
2510                   SIZEOF_N_SECTION_OFFSETS (num_offsets));
2511
2512           /* FIXME: Do we have to free a whole linked list, or is this
2513              enough?  */
2514           objfile->global_psymbols.clear ();
2515           objfile->static_psymbols.clear ();
2516
2517           /* Free the obstacks for non-reusable objfiles.  */
2518           psymbol_bcache_free (objfile->psymbol_cache);
2519           objfile->psymbol_cache = psymbol_bcache_init ();
2520
2521           /* NB: after this call to obstack_free, objfiles_changed
2522              will need to be called (see discussion below).  */
2523           obstack_free (&objfile->objfile_obstack, 0);
2524           objfile->sections = NULL;
2525           objfile->compunit_symtabs = NULL;
2526           objfile->psymtabs = NULL;
2527           objfile->psymtabs_addrmap = NULL;
2528           objfile->free_psymtabs = NULL;
2529           objfile->template_symbols = NULL;
2530
2531           /* obstack_init also initializes the obstack so it is
2532              empty.  We could use obstack_specify_allocation but
2533              gdb_obstack.h specifies the alloc/dealloc functions.  */
2534           obstack_init (&objfile->objfile_obstack);
2535
2536           /* set_objfile_per_bfd potentially allocates the per-bfd
2537              data on the objfile's obstack (if sharing data across
2538              multiple users is not possible), so it's important to
2539              do it *after* the obstack has been initialized.  */
2540           set_objfile_per_bfd (objfile);
2541
2542           objfile->original_name
2543             = (char *) obstack_copy0 (&objfile->objfile_obstack, original_name,
2544                                       strlen (original_name));
2545
2546           /* Reset the sym_fns pointer.  The ELF reader can change it
2547              based on whether .gdb_index is present, and we need it to
2548              start over.  PR symtab/15885  */
2549           objfile_set_sym_fns (objfile, find_sym_fns (objfile->obfd));
2550
2551           build_objfile_section_table (objfile);
2552           terminate_minimal_symbol_table (objfile);
2553
2554           /* We use the same section offsets as from last time.  I'm not
2555              sure whether that is always correct for shared libraries.  */
2556           objfile->section_offsets = (struct section_offsets *)
2557             obstack_alloc (&objfile->objfile_obstack,
2558                            SIZEOF_N_SECTION_OFFSETS (num_offsets));
2559           memcpy (objfile->section_offsets, offsets,
2560                   SIZEOF_N_SECTION_OFFSETS (num_offsets));
2561           objfile->num_sections = num_offsets;
2562
2563           /* What the hell is sym_new_init for, anyway?  The concept of
2564              distinguishing between the main file and additional files
2565              in this way seems rather dubious.  */
2566           if (objfile == symfile_objfile)
2567             {
2568               (*objfile->sf->sym_new_init) (objfile);
2569             }
2570
2571           (*objfile->sf->sym_init) (objfile);
2572           clear_complaints (&symfile_complaints, 1, 1);
2573
2574           objfile->flags &= ~OBJF_PSYMTABS_READ;
2575
2576           /* We are about to read new symbols and potentially also
2577              DWARF information.  Some targets may want to pass addresses
2578              read from DWARF DIE's through an adjustment function before
2579              saving them, like MIPS, which may call into
2580              "find_pc_section".  When called, that function will make
2581              use of per-objfile program space data.
2582
2583              Since we discarded our section information above, we have
2584              dangling pointers in the per-objfile program space data
2585              structure.  Force GDB to update the section mapping
2586              information by letting it know the objfile has changed,
2587              making the dangling pointers point to correct data
2588              again.  */
2589
2590           objfiles_changed ();
2591
2592           read_symbols (objfile, 0);
2593
2594           if (!objfile_has_symbols (objfile))
2595             {
2596               wrap_here ("");
2597               printf_unfiltered (_("(no debugging symbols found)\n"));
2598               wrap_here ("");
2599             }
2600
2601           /* We're done reading the symbol file; finish off complaints.  */
2602           clear_complaints (&symfile_complaints, 0, 1);
2603
2604           /* Getting new symbols may change our opinion about what is
2605              frameless.  */
2606
2607           reinit_frame_cache ();
2608
2609           /* Discard cleanups as symbol reading was successful.  */
2610           discard_cleanups (old_cleanups);
2611
2612           /* If the mtime has changed between the time we set new_modtime
2613              and now, we *want* this to be out of date, so don't call stat
2614              again now.  */
2615           objfile->mtime = new_modtime;
2616           init_entry_point_info (objfile);
2617
2618           new_objfiles.push_back (objfile);
2619         }
2620     }
2621
2622   if (!new_objfiles.empty ())
2623     {
2624       clear_symtab_users (0);
2625
2626       /* clear_objfile_data for each objfile was called before freeing it and
2627          observer_notify_new_objfile (NULL) has been called by
2628          clear_symtab_users above.  Notify the new files now.  */
2629       for (auto iter : new_objfiles)
2630         observer_notify_new_objfile (iter);
2631
2632       /* At least one objfile has changed, so we can consider that
2633          the executable we're debugging has changed too.  */
2634       observer_notify_executable_changed ();
2635     }
2636 }
2637 \f
2638
2639 typedef struct
2640 {
2641   char *ext;
2642   enum language lang;
2643 } filename_language;
2644
2645 DEF_VEC_O (filename_language);
2646
2647 static VEC (filename_language) *filename_language_table;
2648
2649 /* See symfile.h.  */
2650
2651 void
2652 add_filename_language (const char *ext, enum language lang)
2653 {
2654   filename_language entry;
2655
2656   entry.ext = xstrdup (ext);
2657   entry.lang = lang;
2658
2659   VEC_safe_push (filename_language, filename_language_table, &entry);
2660 }
2661
2662 static char *ext_args;
2663 static void
2664 show_ext_args (struct ui_file *file, int from_tty,
2665                struct cmd_list_element *c, const char *value)
2666 {
2667   fprintf_filtered (file,
2668                     _("Mapping between filename extension "
2669                       "and source language is \"%s\".\n"),
2670                     value);
2671 }
2672
2673 static void
2674 set_ext_lang_command (char *args, int from_tty, struct cmd_list_element *e)
2675 {
2676   int i;
2677   char *cp = ext_args;
2678   enum language lang;
2679   filename_language *entry;
2680
2681   /* First arg is filename extension, starting with '.'  */
2682   if (*cp != '.')
2683     error (_("'%s': Filename extension must begin with '.'"), ext_args);
2684
2685   /* Find end of first arg.  */
2686   while (*cp && !isspace (*cp))
2687     cp++;
2688
2689   if (*cp == '\0')
2690     error (_("'%s': two arguments required -- "
2691              "filename extension and language"),
2692            ext_args);
2693
2694   /* Null-terminate first arg.  */
2695   *cp++ = '\0';
2696
2697   /* Find beginning of second arg, which should be a source language.  */
2698   cp = skip_spaces (cp);
2699
2700   if (*cp == '\0')
2701     error (_("'%s': two arguments required -- "
2702              "filename extension and language"),
2703            ext_args);
2704
2705   /* Lookup the language from among those we know.  */
2706   lang = language_enum (cp);
2707
2708   /* Now lookup the filename extension: do we already know it?  */
2709   for (i = 0;
2710        VEC_iterate (filename_language, filename_language_table, i, entry);
2711        ++i)
2712     {
2713       if (0 == strcmp (ext_args, entry->ext))
2714         break;
2715     }
2716
2717   if (entry == NULL)
2718     {
2719       /* New file extension.  */
2720       add_filename_language (ext_args, lang);
2721     }
2722   else
2723     {
2724       /* Redefining a previously known filename extension.  */
2725
2726       /* if (from_tty) */
2727       /*   query ("Really make files of type %s '%s'?", */
2728       /*          ext_args, language_str (lang));           */
2729
2730       xfree (entry->ext);
2731       entry->ext = xstrdup (ext_args);
2732       entry->lang = lang;
2733     }
2734 }
2735
2736 static void
2737 info_ext_lang_command (char *args, int from_tty)
2738 {
2739   int i;
2740   filename_language *entry;
2741
2742   printf_filtered (_("Filename extensions and the languages they represent:"));
2743   printf_filtered ("\n\n");
2744   for (i = 0;
2745        VEC_iterate (filename_language, filename_language_table, i, entry);
2746        ++i)
2747     printf_filtered ("\t%s\t- %s\n", entry->ext, language_str (entry->lang));
2748 }
2749
2750 enum language
2751 deduce_language_from_filename (const char *filename)
2752 {
2753   int i;
2754   const char *cp;
2755
2756   if (filename != NULL)
2757     if ((cp = strrchr (filename, '.')) != NULL)
2758       {
2759         filename_language *entry;
2760
2761         for (i = 0;
2762              VEC_iterate (filename_language, filename_language_table, i, entry);
2763              ++i)
2764           if (strcmp (cp, entry->ext) == 0)
2765             return entry->lang;
2766       }
2767
2768   return language_unknown;
2769 }
2770 \f
2771 /* Allocate and initialize a new symbol table.
2772    CUST is from the result of allocate_compunit_symtab.  */
2773
2774 struct symtab *
2775 allocate_symtab (struct compunit_symtab *cust, const char *filename)
2776 {
2777   struct objfile *objfile = cust->objfile;
2778   struct symtab *symtab
2779     = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symtab);
2780
2781   symtab->filename
2782     = (const char *) bcache (filename, strlen (filename) + 1,
2783                              objfile->per_bfd->filename_cache);
2784   symtab->fullname = NULL;
2785   symtab->language = deduce_language_from_filename (filename);
2786
2787   /* This can be very verbose with lots of headers.
2788      Only print at higher debug levels.  */
2789   if (symtab_create_debug >= 2)
2790     {
2791       /* Be a bit clever with debugging messages, and don't print objfile
2792          every time, only when it changes.  */
2793       static char *last_objfile_name = NULL;
2794
2795       if (last_objfile_name == NULL
2796           || strcmp (last_objfile_name, objfile_name (objfile)) != 0)
2797         {
2798           xfree (last_objfile_name);
2799           last_objfile_name = xstrdup (objfile_name (objfile));
2800           fprintf_unfiltered (gdb_stdlog,
2801                               "Creating one or more symtabs for objfile %s ...\n",
2802                               last_objfile_name);
2803         }
2804       fprintf_unfiltered (gdb_stdlog,
2805                           "Created symtab %s for module %s.\n",
2806                           host_address_to_string (symtab), filename);
2807     }
2808
2809   /* Add it to CUST's list of symtabs.  */
2810   if (cust->filetabs == NULL)
2811     {
2812       cust->filetabs = symtab;
2813       cust->last_filetab = symtab;
2814     }
2815   else
2816     {
2817       cust->last_filetab->next = symtab;
2818       cust->last_filetab = symtab;
2819     }
2820
2821   /* Backlink to the containing compunit symtab.  */
2822   symtab->compunit_symtab = cust;
2823
2824   return symtab;
2825 }
2826
2827 /* Allocate and initialize a new compunit.
2828    NAME is the name of the main source file, if there is one, or some
2829    descriptive text if there are no source files.  */
2830
2831 struct compunit_symtab *
2832 allocate_compunit_symtab (struct objfile *objfile, const char *name)
2833 {
2834   struct compunit_symtab *cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2835                                                struct compunit_symtab);
2836   const char *saved_name;
2837
2838   cu->objfile = objfile;
2839
2840   /* The name we record here is only for display/debugging purposes.
2841      Just save the basename to avoid path issues (too long for display,
2842      relative vs absolute, etc.).  */
2843   saved_name = lbasename (name);
2844   cu->name
2845     = (const char *) obstack_copy0 (&objfile->objfile_obstack, saved_name,
2846                                     strlen (saved_name));
2847
2848   COMPUNIT_DEBUGFORMAT (cu) = "unknown";
2849
2850   if (symtab_create_debug)
2851     {
2852       fprintf_unfiltered (gdb_stdlog,
2853                           "Created compunit symtab %s for %s.\n",
2854                           host_address_to_string (cu),
2855                           cu->name);
2856     }
2857
2858   return cu;
2859 }
2860
2861 /* Hook CU to the objfile it comes from.  */
2862
2863 void
2864 add_compunit_symtab_to_objfile (struct compunit_symtab *cu)
2865 {
2866   cu->next = cu->objfile->compunit_symtabs;
2867   cu->objfile->compunit_symtabs = cu;
2868 }
2869 \f
2870
2871 /* Reset all data structures in gdb which may contain references to
2872    symbol table data.  */
2873
2874 void
2875 clear_symtab_users (symfile_add_flags add_flags)
2876 {
2877   /* Someday, we should do better than this, by only blowing away
2878      the things that really need to be blown.  */
2879
2880   /* Clear the "current" symtab first, because it is no longer valid.
2881      breakpoint_re_set may try to access the current symtab.  */
2882   clear_current_source_symtab_and_line ();
2883
2884   clear_displays ();
2885   clear_last_displayed_sal ();
2886   clear_pc_function_cache ();
2887   observer_notify_new_objfile (NULL);
2888
2889   /* Clear globals which might have pointed into a removed objfile.
2890      FIXME: It's not clear which of these are supposed to persist
2891      between expressions and which ought to be reset each time.  */
2892   expression_context_block = NULL;
2893   innermost_block = NULL;
2894
2895   /* Varobj may refer to old symbols, perform a cleanup.  */
2896   varobj_invalidate ();
2897
2898   /* Now that the various caches have been cleared, we can re_set
2899      our breakpoints without risking it using stale data.  */
2900   if ((add_flags & SYMFILE_DEFER_BP_RESET) == 0)
2901     breakpoint_re_set ();
2902 }
2903
2904 static void
2905 clear_symtab_users_cleanup (void *ignore)
2906 {
2907   clear_symtab_users (0);
2908 }
2909 \f
2910 /* OVERLAYS:
2911    The following code implements an abstraction for debugging overlay sections.
2912
2913    The target model is as follows:
2914    1) The gnu linker will permit multiple sections to be mapped into the
2915    same VMA, each with its own unique LMA (or load address).
2916    2) It is assumed that some runtime mechanism exists for mapping the
2917    sections, one by one, from the load address into the VMA address.
2918    3) This code provides a mechanism for gdb to keep track of which
2919    sections should be considered to be mapped from the VMA to the LMA.
2920    This information is used for symbol lookup, and memory read/write.
2921    For instance, if a section has been mapped then its contents
2922    should be read from the VMA, otherwise from the LMA.
2923
2924    Two levels of debugger support for overlays are available.  One is
2925    "manual", in which the debugger relies on the user to tell it which
2926    overlays are currently mapped.  This level of support is
2927    implemented entirely in the core debugger, and the information about
2928    whether a section is mapped is kept in the objfile->obj_section table.
2929
2930    The second level of support is "automatic", and is only available if
2931    the target-specific code provides functionality to read the target's
2932    overlay mapping table, and translate its contents for the debugger
2933    (by updating the mapped state information in the obj_section tables).
2934
2935    The interface is as follows:
2936    User commands:
2937    overlay map <name>   -- tell gdb to consider this section mapped
2938    overlay unmap <name> -- tell gdb to consider this section unmapped
2939    overlay list         -- list the sections that GDB thinks are mapped
2940    overlay read-target  -- get the target's state of what's mapped
2941    overlay off/manual/auto -- set overlay debugging state
2942    Functional interface:
2943    find_pc_mapped_section(pc):    if the pc is in the range of a mapped
2944    section, return that section.
2945    find_pc_overlay(pc):       find any overlay section that contains
2946    the pc, either in its VMA or its LMA
2947    section_is_mapped(sect):       true if overlay is marked as mapped
2948    section_is_overlay(sect):      true if section's VMA != LMA
2949    pc_in_mapped_range(pc,sec):    true if pc belongs to section's VMA
2950    pc_in_unmapped_range(...):     true if pc belongs to section's LMA
2951    sections_overlap(sec1, sec2):  true if mapped sec1 and sec2 ranges overlap
2952    overlay_mapped_address(...):   map an address from section's LMA to VMA
2953    overlay_unmapped_address(...): map an address from section's VMA to LMA
2954    symbol_overlayed_address(...): Return a "current" address for symbol:
2955    either in VMA or LMA depending on whether
2956    the symbol's section is currently mapped.  */
2957
2958 /* Overlay debugging state: */
2959
2960 enum overlay_debugging_state overlay_debugging = ovly_off;
2961 int overlay_cache_invalid = 0;  /* True if need to refresh mapped state.  */
2962
2963 /* Function: section_is_overlay (SECTION)
2964    Returns true if SECTION has VMA not equal to LMA, ie.
2965    SECTION is loaded at an address different from where it will "run".  */
2966
2967 int
2968 section_is_overlay (struct obj_section *section)
2969 {
2970   if (overlay_debugging && section)
2971     {
2972       bfd *abfd = section->objfile->obfd;
2973       asection *bfd_section = section->the_bfd_section;
2974
2975       if (bfd_section_lma (abfd, bfd_section) != 0
2976           && bfd_section_lma (abfd, bfd_section)
2977              != bfd_section_vma (abfd, bfd_section))
2978         return 1;
2979     }
2980
2981   return 0;
2982 }
2983
2984 /* Function: overlay_invalidate_all (void)
2985    Invalidate the mapped state of all overlay sections (mark it as stale).  */
2986
2987 static void
2988 overlay_invalidate_all (void)
2989 {
2990   struct objfile *objfile;
2991   struct obj_section *sect;
2992
2993   ALL_OBJSECTIONS (objfile, sect)
2994     if (section_is_overlay (sect))
2995       sect->ovly_mapped = -1;
2996 }
2997
2998 /* Function: section_is_mapped (SECTION)
2999    Returns true if section is an overlay, and is currently mapped.
3000
3001    Access to the ovly_mapped flag is restricted to this function, so
3002    that we can do automatic update.  If the global flag
3003    OVERLAY_CACHE_INVALID is set (by wait_for_inferior), then call
3004    overlay_invalidate_all.  If the mapped state of the particular
3005    section is stale, then call TARGET_OVERLAY_UPDATE to refresh it.  */
3006
3007 int
3008 section_is_mapped (struct obj_section *osect)
3009 {
3010   struct gdbarch *gdbarch;
3011
3012   if (osect == 0 || !section_is_overlay (osect))
3013     return 0;
3014
3015   switch (overlay_debugging)
3016     {
3017     default:
3018     case ovly_off:
3019       return 0;                 /* overlay debugging off */
3020     case ovly_auto:             /* overlay debugging automatic */
3021       /* Unles there is a gdbarch_overlay_update function,
3022          there's really nothing useful to do here (can't really go auto).  */
3023       gdbarch = get_objfile_arch (osect->objfile);
3024       if (gdbarch_overlay_update_p (gdbarch))
3025         {
3026           if (overlay_cache_invalid)
3027             {
3028               overlay_invalidate_all ();
3029               overlay_cache_invalid = 0;
3030             }
3031           if (osect->ovly_mapped == -1)
3032             gdbarch_overlay_update (gdbarch, osect);
3033         }
3034       /* fall thru to manual case */
3035     case ovly_on:               /* overlay debugging manual */
3036       return osect->ovly_mapped == 1;
3037     }
3038 }
3039
3040 /* Function: pc_in_unmapped_range
3041    If PC falls into the lma range of SECTION, return true, else false.  */
3042
3043 CORE_ADDR
3044 pc_in_unmapped_range (CORE_ADDR pc, struct obj_section *section)
3045 {
3046   if (section_is_overlay (section))
3047     {
3048       bfd *abfd = section->objfile->obfd;
3049       asection *bfd_section = section->the_bfd_section;
3050
3051       /* We assume the LMA is relocated by the same offset as the VMA.  */
3052       bfd_vma size = bfd_get_section_size (bfd_section);
3053       CORE_ADDR offset = obj_section_offset (section);
3054
3055       if (bfd_get_section_lma (abfd, bfd_section) + offset <= pc
3056           && pc < bfd_get_section_lma (abfd, bfd_section) + offset + size)
3057         return 1;
3058     }
3059
3060   return 0;
3061 }
3062
3063 /* Function: pc_in_mapped_range
3064    If PC falls into the vma range of SECTION, return true, else false.  */
3065
3066 CORE_ADDR
3067 pc_in_mapped_range (CORE_ADDR pc, struct obj_section *section)
3068 {
3069   if (section_is_overlay (section))
3070     {
3071       if (obj_section_addr (section) <= pc
3072           && pc < obj_section_endaddr (section))
3073         return 1;
3074     }
3075
3076   return 0;
3077 }
3078
3079 /* Return true if the mapped ranges of sections A and B overlap, false
3080    otherwise.  */
3081
3082 static int
3083 sections_overlap (struct obj_section *a, struct obj_section *b)
3084 {
3085   CORE_ADDR a_start = obj_section_addr (a);
3086   CORE_ADDR a_end = obj_section_endaddr (a);
3087   CORE_ADDR b_start = obj_section_addr (b);
3088   CORE_ADDR b_end = obj_section_endaddr (b);
3089
3090   return (a_start < b_end && b_start < a_end);
3091 }
3092
3093 /* Function: overlay_unmapped_address (PC, SECTION)
3094    Returns the address corresponding to PC in the unmapped (load) range.
3095    May be the same as PC.  */
3096
3097 CORE_ADDR
3098 overlay_unmapped_address (CORE_ADDR pc, struct obj_section *section)
3099 {
3100   if (section_is_overlay (section) && pc_in_mapped_range (pc, section))
3101     {
3102       bfd *abfd = section->objfile->obfd;
3103       asection *bfd_section = section->the_bfd_section;
3104
3105       return pc + bfd_section_lma (abfd, bfd_section)
3106                 - bfd_section_vma (abfd, bfd_section);
3107     }
3108
3109   return pc;
3110 }
3111
3112 /* Function: overlay_mapped_address (PC, SECTION)
3113    Returns the address corresponding to PC in the mapped (runtime) range.
3114    May be the same as PC.  */
3115
3116 CORE_ADDR
3117 overlay_mapped_address (CORE_ADDR pc, struct obj_section *section)
3118 {
3119   if (section_is_overlay (section) && pc_in_unmapped_range (pc, section))
3120     {
3121       bfd *abfd = section->objfile->obfd;
3122       asection *bfd_section = section->the_bfd_section;
3123
3124       return pc + bfd_section_vma (abfd, bfd_section)
3125                 - bfd_section_lma (abfd, bfd_section);
3126     }
3127
3128   return pc;
3129 }
3130
3131 /* Function: symbol_overlayed_address
3132    Return one of two addresses (relative to the VMA or to the LMA),
3133    depending on whether the section is mapped or not.  */
3134
3135 CORE_ADDR
3136 symbol_overlayed_address (CORE_ADDR address, struct obj_section *section)
3137 {
3138   if (overlay_debugging)
3139     {
3140       /* If the symbol has no section, just return its regular address.  */
3141       if (section == 0)
3142         return address;
3143       /* If the symbol's section is not an overlay, just return its
3144          address.  */
3145       if (!section_is_overlay (section))
3146         return address;
3147       /* If the symbol's section is mapped, just return its address.  */
3148       if (section_is_mapped (section))
3149         return address;
3150       /*
3151        * HOWEVER: if the symbol is in an overlay section which is NOT mapped,
3152        * then return its LOADED address rather than its vma address!!
3153        */
3154       return overlay_unmapped_address (address, section);
3155     }
3156   return address;
3157 }
3158
3159 /* Function: find_pc_overlay (PC)
3160    Return the best-match overlay section for PC:
3161    If PC matches a mapped overlay section's VMA, return that section.
3162    Else if PC matches an unmapped section's VMA, return that section.
3163    Else if PC matches an unmapped section's LMA, return that section.  */
3164
3165 struct obj_section *
3166 find_pc_overlay (CORE_ADDR pc)
3167 {
3168   struct objfile *objfile;
3169   struct obj_section *osect, *best_match = NULL;
3170
3171   if (overlay_debugging)
3172     {
3173       ALL_OBJSECTIONS (objfile, osect)
3174         if (section_is_overlay (osect))
3175           {
3176             if (pc_in_mapped_range (pc, osect))
3177               {
3178                 if (section_is_mapped (osect))
3179                   return osect;
3180                 else
3181                   best_match = osect;
3182               }
3183             else if (pc_in_unmapped_range (pc, osect))
3184               best_match = osect;
3185           }
3186     }
3187   return best_match;
3188 }
3189
3190 /* Function: find_pc_mapped_section (PC)
3191    If PC falls into the VMA address range of an overlay section that is
3192    currently marked as MAPPED, return that section.  Else return NULL.  */
3193
3194 struct obj_section *
3195 find_pc_mapped_section (CORE_ADDR pc)
3196 {
3197   struct objfile *objfile;
3198   struct obj_section *osect;
3199
3200   if (overlay_debugging)
3201     {
3202       ALL_OBJSECTIONS (objfile, osect)
3203         if (pc_in_mapped_range (pc, osect) && section_is_mapped (osect))
3204           return osect;
3205     }
3206
3207   return NULL;
3208 }
3209
3210 /* Function: list_overlays_command
3211    Print a list of mapped sections and their PC ranges.  */
3212
3213 static void
3214 list_overlays_command (const char *args, int from_tty)
3215 {
3216   int nmapped = 0;
3217   struct objfile *objfile;
3218   struct obj_section *osect;
3219
3220   if (overlay_debugging)
3221     {
3222       ALL_OBJSECTIONS (objfile, osect)
3223       if (section_is_mapped (osect))
3224         {
3225           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3226           const char *name;
3227           bfd_vma lma, vma;
3228           int size;
3229
3230           vma = bfd_section_vma (objfile->obfd, osect->the_bfd_section);
3231           lma = bfd_section_lma (objfile->obfd, osect->the_bfd_section);
3232           size = bfd_get_section_size (osect->the_bfd_section);
3233           name = bfd_section_name (objfile->obfd, osect->the_bfd_section);
3234
3235           printf_filtered ("Section %s, loaded at ", name);
3236           fputs_filtered (paddress (gdbarch, lma), gdb_stdout);
3237           puts_filtered (" - ");
3238           fputs_filtered (paddress (gdbarch, lma + size), gdb_stdout);
3239           printf_filtered (", mapped at ");
3240           fputs_filtered (paddress (gdbarch, vma), gdb_stdout);
3241           puts_filtered (" - ");
3242           fputs_filtered (paddress (gdbarch, vma + size), gdb_stdout);
3243           puts_filtered ("\n");
3244
3245           nmapped++;
3246         }
3247     }
3248   if (nmapped == 0)
3249     printf_filtered (_("No sections are mapped.\n"));
3250 }
3251
3252 /* Function: map_overlay_command
3253    Mark the named section as mapped (ie. residing at its VMA address).  */
3254
3255 static void
3256 map_overlay_command (const char *args, int from_tty)
3257 {
3258   struct objfile *objfile, *objfile2;
3259   struct obj_section *sec, *sec2;
3260
3261   if (!overlay_debugging)
3262     error (_("Overlay debugging not enabled.  Use "
3263              "either the 'overlay auto' or\n"
3264              "the 'overlay manual' command."));
3265
3266   if (args == 0 || *args == 0)
3267     error (_("Argument required: name of an overlay section"));
3268
3269   /* First, find a section matching the user supplied argument.  */
3270   ALL_OBJSECTIONS (objfile, sec)
3271     if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3272     {
3273       /* Now, check to see if the section is an overlay.  */
3274       if (!section_is_overlay (sec))
3275         continue;               /* not an overlay section */
3276
3277       /* Mark the overlay as "mapped".  */
3278       sec->ovly_mapped = 1;
3279
3280       /* Next, make a pass and unmap any sections that are
3281          overlapped by this new section: */
3282       ALL_OBJSECTIONS (objfile2, sec2)
3283         if (sec2->ovly_mapped && sec != sec2 && sections_overlap (sec, sec2))
3284         {
3285           if (info_verbose)
3286             printf_unfiltered (_("Note: section %s unmapped by overlap\n"),
3287                              bfd_section_name (objfile->obfd,
3288                                                sec2->the_bfd_section));
3289           sec2->ovly_mapped = 0;        /* sec2 overlaps sec: unmap sec2.  */
3290         }
3291       return;
3292     }
3293   error (_("No overlay section called %s"), args);
3294 }
3295
3296 /* Function: unmap_overlay_command
3297    Mark the overlay section as unmapped
3298    (ie. resident in its LMA address range, rather than the VMA range).  */
3299
3300 static void
3301 unmap_overlay_command (const char *args, int from_tty)
3302 {
3303   struct objfile *objfile;
3304   struct obj_section *sec = NULL;
3305
3306   if (!overlay_debugging)
3307     error (_("Overlay debugging not enabled.  "
3308              "Use either the 'overlay auto' or\n"
3309              "the 'overlay manual' command."));
3310
3311   if (args == 0 || *args == 0)
3312     error (_("Argument required: name of an overlay section"));
3313
3314   /* First, find a section matching the user supplied argument.  */
3315   ALL_OBJSECTIONS (objfile, sec)
3316     if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3317     {
3318       if (!sec->ovly_mapped)
3319         error (_("Section %s is not mapped"), args);
3320       sec->ovly_mapped = 0;
3321       return;
3322     }
3323   error (_("No overlay section called %s"), args);
3324 }
3325
3326 /* Function: overlay_auto_command
3327    A utility command to turn on overlay debugging.
3328    Possibly this should be done via a set/show command.  */
3329
3330 static void
3331 overlay_auto_command (const char *args, int from_tty)
3332 {
3333   overlay_debugging = ovly_auto;
3334   enable_overlay_breakpoints ();
3335   if (info_verbose)
3336     printf_unfiltered (_("Automatic overlay debugging enabled."));
3337 }
3338
3339 /* Function: overlay_manual_command
3340    A utility command to turn on overlay debugging.
3341    Possibly this should be done via a set/show command.  */
3342
3343 static void
3344 overlay_manual_command (const char *args, int from_tty)
3345 {
3346   overlay_debugging = ovly_on;
3347   disable_overlay_breakpoints ();
3348   if (info_verbose)
3349     printf_unfiltered (_("Overlay debugging enabled."));
3350 }
3351
3352 /* Function: overlay_off_command
3353    A utility command to turn on overlay debugging.
3354    Possibly this should be done via a set/show command.  */
3355
3356 static void
3357 overlay_off_command (const char *args, int from_tty)
3358 {
3359   overlay_debugging = ovly_off;
3360   disable_overlay_breakpoints ();
3361   if (info_verbose)
3362     printf_unfiltered (_("Overlay debugging disabled."));
3363 }
3364
3365 static void
3366 overlay_load_command (const char *args, int from_tty)
3367 {
3368   struct gdbarch *gdbarch = get_current_arch ();
3369
3370   if (gdbarch_overlay_update_p (gdbarch))
3371     gdbarch_overlay_update (gdbarch, NULL);
3372   else
3373     error (_("This target does not know how to read its overlay state."));
3374 }
3375
3376 /* Function: overlay_command
3377    A place-holder for a mis-typed command.  */
3378
3379 /* Command list chain containing all defined "overlay" subcommands.  */
3380 static struct cmd_list_element *overlaylist;
3381
3382 static void
3383 overlay_command (const char *args, int from_tty)
3384 {
3385   printf_unfiltered
3386     ("\"overlay\" must be followed by the name of an overlay command.\n");
3387   help_list (overlaylist, "overlay ", all_commands, gdb_stdout);
3388 }
3389
3390 /* Target Overlays for the "Simplest" overlay manager:
3391
3392    This is GDB's default target overlay layer.  It works with the
3393    minimal overlay manager supplied as an example by Cygnus.  The
3394    entry point is via a function pointer "gdbarch_overlay_update",
3395    so targets that use a different runtime overlay manager can
3396    substitute their own overlay_update function and take over the
3397    function pointer.
3398
3399    The overlay_update function pokes around in the target's data structures
3400    to see what overlays are mapped, and updates GDB's overlay mapping with
3401    this information.
3402
3403    In this simple implementation, the target data structures are as follows:
3404    unsigned _novlys;            /# number of overlay sections #/
3405    unsigned _ovly_table[_novlys][4] = {
3406    {VMA, OSIZE, LMA, MAPPED},    /# one entry per overlay section #/
3407    {..., ...,  ..., ...},
3408    }
3409    unsigned _novly_regions;     /# number of overlay regions #/
3410    unsigned _ovly_region_table[_novly_regions][3] = {
3411    {VMA, OSIZE, MAPPED_TO_LMA},  /# one entry per overlay region #/
3412    {..., ...,  ...},
3413    }
3414    These functions will attempt to update GDB's mappedness state in the
3415    symbol section table, based on the target's mappedness state.
3416
3417    To do this, we keep a cached copy of the target's _ovly_table, and
3418    attempt to detect when the cached copy is invalidated.  The main
3419    entry point is "simple_overlay_update(SECT), which looks up SECT in
3420    the cached table and re-reads only the entry for that section from
3421    the target (whenever possible).  */
3422
3423 /* Cached, dynamically allocated copies of the target data structures: */
3424 static unsigned (*cache_ovly_table)[4] = 0;
3425 static unsigned cache_novlys = 0;
3426 static CORE_ADDR cache_ovly_table_base = 0;
3427 enum ovly_index
3428   {
3429     VMA, OSIZE, LMA, MAPPED
3430   };
3431
3432 /* Throw away the cached copy of _ovly_table.  */
3433
3434 static void
3435 simple_free_overlay_table (void)
3436 {
3437   if (cache_ovly_table)
3438     xfree (cache_ovly_table);
3439   cache_novlys = 0;
3440   cache_ovly_table = NULL;
3441   cache_ovly_table_base = 0;
3442 }
3443
3444 /* Read an array of ints of size SIZE from the target into a local buffer.
3445    Convert to host order.  int LEN is number of ints.  */
3446
3447 static void
3448 read_target_long_array (CORE_ADDR memaddr, unsigned int *myaddr,
3449                         int len, int size, enum bfd_endian byte_order)
3450 {
3451   /* FIXME (alloca): Not safe if array is very large.  */
3452   gdb_byte *buf = (gdb_byte *) alloca (len * size);
3453   int i;
3454
3455   read_memory (memaddr, buf, len * size);
3456   for (i = 0; i < len; i++)
3457     myaddr[i] = extract_unsigned_integer (size * i + buf, size, byte_order);
3458 }
3459
3460 /* Find and grab a copy of the target _ovly_table
3461    (and _novlys, which is needed for the table's size).  */
3462
3463 static int
3464 simple_read_overlay_table (void)
3465 {
3466   struct bound_minimal_symbol novlys_msym;
3467   struct bound_minimal_symbol ovly_table_msym;
3468   struct gdbarch *gdbarch;
3469   int word_size;
3470   enum bfd_endian byte_order;
3471
3472   simple_free_overlay_table ();
3473   novlys_msym = lookup_minimal_symbol ("_novlys", NULL, NULL);
3474   if (! novlys_msym.minsym)
3475     {
3476       error (_("Error reading inferior's overlay table: "
3477              "couldn't find `_novlys' variable\n"
3478              "in inferior.  Use `overlay manual' mode."));
3479       return 0;
3480     }
3481
3482   ovly_table_msym = lookup_bound_minimal_symbol ("_ovly_table");
3483   if (! ovly_table_msym.minsym)
3484     {
3485       error (_("Error reading inferior's overlay table: couldn't find "
3486              "`_ovly_table' array\n"
3487              "in inferior.  Use `overlay manual' mode."));
3488       return 0;
3489     }
3490
3491   gdbarch = get_objfile_arch (ovly_table_msym.objfile);
3492   word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3493   byte_order = gdbarch_byte_order (gdbarch);
3494
3495   cache_novlys = read_memory_integer (BMSYMBOL_VALUE_ADDRESS (novlys_msym),
3496                                       4, byte_order);
3497   cache_ovly_table
3498     = (unsigned int (*)[4]) xmalloc (cache_novlys * sizeof (*cache_ovly_table));
3499   cache_ovly_table_base = BMSYMBOL_VALUE_ADDRESS (ovly_table_msym);
3500   read_target_long_array (cache_ovly_table_base,
3501                           (unsigned int *) cache_ovly_table,
3502                           cache_novlys * 4, word_size, byte_order);
3503
3504   return 1;                     /* SUCCESS */
3505 }
3506
3507 /* Function: simple_overlay_update_1
3508    A helper function for simple_overlay_update.  Assuming a cached copy
3509    of _ovly_table exists, look through it to find an entry whose vma,
3510    lma and size match those of OSECT.  Re-read the entry and make sure
3511    it still matches OSECT (else the table may no longer be valid).
3512    Set OSECT's mapped state to match the entry.  Return: 1 for
3513    success, 0 for failure.  */
3514
3515 static int
3516 simple_overlay_update_1 (struct obj_section *osect)
3517 {
3518   int i;
3519   bfd *obfd = osect->objfile->obfd;
3520   asection *bsect = osect->the_bfd_section;
3521   struct gdbarch *gdbarch = get_objfile_arch (osect->objfile);
3522   int word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3523   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
3524
3525   for (i = 0; i < cache_novlys; i++)
3526     if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3527         && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect))
3528       {
3529         read_target_long_array (cache_ovly_table_base + i * word_size,
3530                                 (unsigned int *) cache_ovly_table[i],
3531                                 4, word_size, byte_order);
3532         if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3533             && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect))
3534           {
3535             osect->ovly_mapped = cache_ovly_table[i][MAPPED];
3536             return 1;
3537           }
3538         else    /* Warning!  Warning!  Target's ovly table has changed!  */
3539           return 0;
3540       }
3541   return 0;
3542 }
3543
3544 /* Function: simple_overlay_update
3545    If OSECT is NULL, then update all sections' mapped state
3546    (after re-reading the entire target _ovly_table).
3547    If OSECT is non-NULL, then try to find a matching entry in the
3548    cached ovly_table and update only OSECT's mapped state.
3549    If a cached entry can't be found or the cache isn't valid, then
3550    re-read the entire cache, and go ahead and update all sections.  */
3551
3552 void
3553 simple_overlay_update (struct obj_section *osect)
3554 {
3555   struct objfile *objfile;
3556
3557   /* Were we given an osect to look up?  NULL means do all of them.  */
3558   if (osect)
3559     /* Have we got a cached copy of the target's overlay table?  */
3560     if (cache_ovly_table != NULL)
3561       {
3562         /* Does its cached location match what's currently in the
3563            symtab?  */
3564         struct bound_minimal_symbol minsym
3565           = lookup_minimal_symbol ("_ovly_table", NULL, NULL);
3566
3567         if (minsym.minsym == NULL)
3568           error (_("Error reading inferior's overlay table: couldn't "
3569                    "find `_ovly_table' array\n"
3570                    "in inferior.  Use `overlay manual' mode."));
3571         
3572         if (cache_ovly_table_base == BMSYMBOL_VALUE_ADDRESS (minsym))
3573           /* Then go ahead and try to look up this single section in
3574              the cache.  */
3575           if (simple_overlay_update_1 (osect))
3576             /* Found it!  We're done.  */
3577             return;
3578       }
3579
3580   /* Cached table no good: need to read the entire table anew.
3581      Or else we want all the sections, in which case it's actually
3582      more efficient to read the whole table in one block anyway.  */
3583
3584   if (! simple_read_overlay_table ())
3585     return;
3586
3587   /* Now may as well update all sections, even if only one was requested.  */
3588   ALL_OBJSECTIONS (objfile, osect)
3589     if (section_is_overlay (osect))
3590     {
3591       int i;
3592       bfd *obfd = osect->objfile->obfd;
3593       asection *bsect = osect->the_bfd_section;
3594
3595       for (i = 0; i < cache_novlys; i++)
3596         if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3597             && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect))
3598           { /* obj_section matches i'th entry in ovly_table.  */
3599             osect->ovly_mapped = cache_ovly_table[i][MAPPED];
3600             break;              /* finished with inner for loop: break out.  */
3601           }
3602     }
3603 }
3604
3605 /* Set the output sections and output offsets for section SECTP in
3606    ABFD.  The relocation code in BFD will read these offsets, so we
3607    need to be sure they're initialized.  We map each section to itself,
3608    with no offset; this means that SECTP->vma will be honored.  */
3609
3610 static void
3611 symfile_dummy_outputs (bfd *abfd, asection *sectp, void *dummy)
3612 {
3613   sectp->output_section = sectp;
3614   sectp->output_offset = 0;
3615 }
3616
3617 /* Default implementation for sym_relocate.  */
3618
3619 bfd_byte *
3620 default_symfile_relocate (struct objfile *objfile, asection *sectp,
3621                           bfd_byte *buf)
3622 {
3623   /* Use sectp->owner instead of objfile->obfd.  sectp may point to a
3624      DWO file.  */
3625   bfd *abfd = sectp->owner;
3626
3627   /* We're only interested in sections with relocation
3628      information.  */
3629   if ((sectp->flags & SEC_RELOC) == 0)
3630     return NULL;
3631
3632   /* We will handle section offsets properly elsewhere, so relocate as if
3633      all sections begin at 0.  */
3634   bfd_map_over_sections (abfd, symfile_dummy_outputs, NULL);
3635
3636   return bfd_simple_get_relocated_section_contents (abfd, sectp, buf, NULL);
3637 }
3638
3639 /* Relocate the contents of a debug section SECTP in ABFD.  The
3640    contents are stored in BUF if it is non-NULL, or returned in a
3641    malloc'd buffer otherwise.
3642
3643    For some platforms and debug info formats, shared libraries contain
3644    relocations against the debug sections (particularly for DWARF-2;
3645    one affected platform is PowerPC GNU/Linux, although it depends on
3646    the version of the linker in use).  Also, ELF object files naturally
3647    have unresolved relocations for their debug sections.  We need to apply
3648    the relocations in order to get the locations of symbols correct.
3649    Another example that may require relocation processing, is the
3650    DWARF-2 .eh_frame section in .o files, although it isn't strictly a
3651    debug section.  */
3652
3653 bfd_byte *
3654 symfile_relocate_debug_section (struct objfile *objfile,
3655                                 asection *sectp, bfd_byte *buf)
3656 {
3657   gdb_assert (objfile->sf->sym_relocate);
3658
3659   return (*objfile->sf->sym_relocate) (objfile, sectp, buf);
3660 }
3661
3662 struct symfile_segment_data *
3663 get_symfile_segment_data (bfd *abfd)
3664 {
3665   const struct sym_fns *sf = find_sym_fns (abfd);
3666
3667   if (sf == NULL)
3668     return NULL;
3669
3670   return sf->sym_segments (abfd);
3671 }
3672
3673 void
3674 free_symfile_segment_data (struct symfile_segment_data *data)
3675 {
3676   xfree (data->segment_bases);
3677   xfree (data->segment_sizes);
3678   xfree (data->segment_info);
3679   xfree (data);
3680 }
3681
3682 /* Given:
3683    - DATA, containing segment addresses from the object file ABFD, and
3684      the mapping from ABFD's sections onto the segments that own them,
3685      and
3686    - SEGMENT_BASES[0 .. NUM_SEGMENT_BASES - 1], holding the actual
3687      segment addresses reported by the target,
3688    store the appropriate offsets for each section in OFFSETS.
3689
3690    If there are fewer entries in SEGMENT_BASES than there are segments
3691    in DATA, then apply SEGMENT_BASES' last entry to all the segments.
3692
3693    If there are more entries, then ignore the extra.  The target may
3694    not be able to distinguish between an empty data segment and a
3695    missing data segment; a missing text segment is less plausible.  */
3696
3697 int
3698 symfile_map_offsets_to_segments (bfd *abfd,
3699                                  const struct symfile_segment_data *data,
3700                                  struct section_offsets *offsets,
3701                                  int num_segment_bases,
3702                                  const CORE_ADDR *segment_bases)
3703 {
3704   int i;
3705   asection *sect;
3706
3707   /* It doesn't make sense to call this function unless you have some
3708      segment base addresses.  */
3709   gdb_assert (num_segment_bases > 0);
3710
3711   /* If we do not have segment mappings for the object file, we
3712      can not relocate it by segments.  */
3713   gdb_assert (data != NULL);
3714   gdb_assert (data->num_segments > 0);
3715
3716   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
3717     {
3718       int which = data->segment_info[i];
3719
3720       gdb_assert (0 <= which && which <= data->num_segments);
3721
3722       /* Don't bother computing offsets for sections that aren't
3723          loaded as part of any segment.  */
3724       if (! which)
3725         continue;
3726
3727       /* Use the last SEGMENT_BASES entry as the address of any extra
3728          segments mentioned in DATA->segment_info.  */
3729       if (which > num_segment_bases)
3730         which = num_segment_bases;
3731
3732       offsets->offsets[i] = (segment_bases[which - 1]
3733                              - data->segment_bases[which - 1]);
3734     }
3735
3736   return 1;
3737 }
3738
3739 static void
3740 symfile_find_segment_sections (struct objfile *objfile)
3741 {
3742   bfd *abfd = objfile->obfd;
3743   int i;
3744   asection *sect;
3745   struct symfile_segment_data *data;
3746
3747   data = get_symfile_segment_data (objfile->obfd);
3748   if (data == NULL)
3749     return;
3750
3751   if (data->num_segments != 1 && data->num_segments != 2)
3752     {
3753       free_symfile_segment_data (data);
3754       return;
3755     }
3756
3757   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
3758     {
3759       int which = data->segment_info[i];
3760
3761       if (which == 1)
3762         {
3763           if (objfile->sect_index_text == -1)
3764             objfile->sect_index_text = sect->index;
3765
3766           if (objfile->sect_index_rodata == -1)
3767             objfile->sect_index_rodata = sect->index;
3768         }
3769       else if (which == 2)
3770         {
3771           if (objfile->sect_index_data == -1)
3772             objfile->sect_index_data = sect->index;
3773
3774           if (objfile->sect_index_bss == -1)
3775             objfile->sect_index_bss = sect->index;
3776         }
3777     }
3778
3779   free_symfile_segment_data (data);
3780 }
3781
3782 /* Listen for free_objfile events.  */
3783
3784 static void
3785 symfile_free_objfile (struct objfile *objfile)
3786 {
3787   /* Remove the target sections owned by this objfile.  */
3788   if (objfile != NULL)
3789     remove_target_sections ((void *) objfile);
3790 }
3791
3792 /* Wrapper around the quick_symbol_functions expand_symtabs_matching "method".
3793    Expand all symtabs that match the specified criteria.
3794    See quick_symbol_functions.expand_symtabs_matching for details.  */
3795
3796 void
3797 expand_symtabs_matching
3798   (gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
3799    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
3800    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
3801    enum search_domain kind)
3802 {
3803   struct objfile *objfile;
3804
3805   ALL_OBJFILES (objfile)
3806   {
3807     if (objfile->sf)
3808       objfile->sf->qf->expand_symtabs_matching (objfile, file_matcher,
3809                                                 symbol_matcher,
3810                                                 expansion_notify, kind);
3811   }
3812 }
3813
3814 /* Wrapper around the quick_symbol_functions map_symbol_filenames "method".
3815    Map function FUN over every file.
3816    See quick_symbol_functions.map_symbol_filenames for details.  */
3817
3818 void
3819 map_symbol_filenames (symbol_filename_ftype *fun, void *data,
3820                       int need_fullname)
3821 {
3822   struct objfile *objfile;
3823
3824   ALL_OBJFILES (objfile)
3825   {
3826     if (objfile->sf)
3827       objfile->sf->qf->map_symbol_filenames (objfile, fun, data,
3828                                              need_fullname);
3829   }
3830 }
3831
3832 void
3833 _initialize_symfile (void)
3834 {
3835   struct cmd_list_element *c;
3836
3837   observer_attach_free_objfile (symfile_free_objfile);
3838
3839   c = add_cmd ("symbol-file", class_files, symbol_file_command, _("\
3840 Load symbol table from executable file FILE.\n\
3841 The `file' command can also load symbol tables, as well as setting the file\n\
3842 to execute."), &cmdlist);
3843   set_cmd_completer (c, filename_completer);
3844
3845   c = add_cmd ("add-symbol-file", class_files, add_symbol_file_command, _("\
3846 Load symbols from FILE, assuming FILE has been dynamically loaded.\n\
3847 Usage: add-symbol-file FILE ADDR [-s <SECT> <SECT_ADDR> -s <SECT> <SECT_ADDR>\
3848  ...]\nADDR is the starting address of the file's text.\n\
3849 The optional arguments are section-name section-address pairs and\n\
3850 should be specified if the data and bss segments are not contiguous\n\
3851 with the text.  SECT is a section name to be loaded at SECT_ADDR."),
3852                &cmdlist);
3853   set_cmd_completer (c, filename_completer);
3854
3855   c = add_cmd ("remove-symbol-file", class_files,
3856                remove_symbol_file_command, _("\
3857 Remove a symbol file added via the add-symbol-file command.\n\
3858 Usage: remove-symbol-file FILENAME\n\
3859        remove-symbol-file -a ADDRESS\n\
3860 The file to remove can be identified by its filename or by an address\n\
3861 that lies within the boundaries of this symbol file in memory."),
3862                &cmdlist);
3863
3864   c = add_cmd ("load", class_files, load_command, _("\
3865 Dynamically load FILE into the running program, and record its symbols\n\
3866 for access from GDB.\n\
3867 An optional load OFFSET may also be given as a literal address.\n\
3868 When OFFSET is provided, FILE must also be provided.  FILE can be provided\n\
3869 on its own.\n\
3870 Usage: load [FILE] [OFFSET]"), &cmdlist);
3871   set_cmd_completer (c, filename_completer);
3872
3873   add_prefix_cmd ("overlay", class_support, overlay_command,
3874                   _("Commands for debugging overlays."), &overlaylist,
3875                   "overlay ", 0, &cmdlist);
3876
3877   add_com_alias ("ovly", "overlay", class_alias, 1);
3878   add_com_alias ("ov", "overlay", class_alias, 1);
3879
3880   add_cmd ("map-overlay", class_support, map_overlay_command,
3881            _("Assert that an overlay section is mapped."), &overlaylist);
3882
3883   add_cmd ("unmap-overlay", class_support, unmap_overlay_command,
3884            _("Assert that an overlay section is unmapped."), &overlaylist);
3885
3886   add_cmd ("list-overlays", class_support, list_overlays_command,
3887            _("List mappings of overlay sections."), &overlaylist);
3888
3889   add_cmd ("manual", class_support, overlay_manual_command,
3890            _("Enable overlay debugging."), &overlaylist);
3891   add_cmd ("off", class_support, overlay_off_command,
3892            _("Disable overlay debugging."), &overlaylist);
3893   add_cmd ("auto", class_support, overlay_auto_command,
3894            _("Enable automatic overlay debugging."), &overlaylist);
3895   add_cmd ("load-target", class_support, overlay_load_command,
3896            _("Read the overlay mapping state from the target."), &overlaylist);
3897
3898   /* Filename extension to source language lookup table: */
3899   add_setshow_string_noescape_cmd ("extension-language", class_files,
3900                                    &ext_args, _("\
3901 Set mapping between filename extension and source language."), _("\
3902 Show mapping between filename extension and source language."), _("\
3903 Usage: set extension-language .foo bar"),
3904                                    set_ext_lang_command,
3905                                    show_ext_args,
3906                                    &setlist, &showlist);
3907
3908   add_info ("extensions", info_ext_lang_command,
3909             _("All filename extensions associated with a source language."));
3910
3911   add_setshow_optional_filename_cmd ("debug-file-directory", class_support,
3912                                      &debug_file_directory, _("\
3913 Set the directories where separate debug symbols are searched for."), _("\
3914 Show the directories where separate debug symbols are searched for."), _("\
3915 Separate debug symbols are first searched for in the same\n\
3916 directory as the binary, then in the `" DEBUG_SUBDIRECTORY "' subdirectory,\n\
3917 and lastly at the path of the directory of the binary with\n\
3918 each global debug-file-directory component prepended."),
3919                                      NULL,
3920                                      show_debug_file_directory,
3921                                      &setlist, &showlist);
3922
3923   add_setshow_enum_cmd ("symbol-loading", no_class,
3924                         print_symbol_loading_enums, &print_symbol_loading,
3925                         _("\
3926 Set printing of symbol loading messages."), _("\
3927 Show printing of symbol loading messages."), _("\
3928 off   == turn all messages off\n\
3929 brief == print messages for the executable,\n\
3930          and brief messages for shared libraries\n\
3931 full  == print messages for the executable,\n\
3932          and messages for each shared library."),
3933                         NULL,
3934                         NULL,
3935                         &setprintlist, &showprintlist);
3936
3937   add_setshow_boolean_cmd ("separate-debug-file", no_class,
3938                            &separate_debug_file_debug, _("\
3939 Set printing of separate debug info file search debug."), _("\
3940 Show printing of separate debug info file search debug."), _("\
3941 When on, GDB prints the searched locations while looking for separate debug \
3942 info files."), NULL, NULL, &setdebuglist, &showdebuglist);
3943 }