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