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