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