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