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