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
74int (*deprecated_ui_load_progress_hook) (const char *section,
75					 unsigned long num);
76void (*deprecated_show_load_progress) (const char *section,
77			    unsigned long section_sent,
78			    unsigned long section_size,
79			    unsigned long total_sent,
80			    unsigned long total_size);
81void (*deprecated_pre_add_symbol_hook) (const char *);
82void (*deprecated_post_add_symbol_hook) (void);
83
84using clear_symtab_users_cleanup
85  = FORWARD_SCOPE_EXIT (clear_symtab_users);
86
87/* Global variables owned by this file.  */
88int readnow_symbol_files;	/* Read full symbols immediately.  */
89int readnever_symbol_files;	/* Never read full symbols.  */
90
91/* Functions this file defines.  */
92
93static void symbol_file_add_main_1 (const char *args, symfile_add_flags add_flags,
94				    objfile_flags flags, CORE_ADDR reloff);
95
96static const struct sym_fns *find_sym_fns (bfd *);
97
98static void overlay_invalidate_all (void);
99
100static void simple_free_overlay_table (void);
101
102static void read_target_long_array (CORE_ADDR, unsigned int *, int, int,
103				    enum bfd_endian);
104
105static int simple_read_overlay_table (void);
106
107static int simple_overlay_update_1 (struct obj_section *);
108
109static void symfile_find_segment_sections (struct objfile *objfile);
110
111/* List of all available sym_fns.  On gdb startup, each object file reader
112   calls add_symtab_fns() to register information on each format it is
113   prepared to read.  */
114
115struct registered_sym_fns
116{
117  registered_sym_fns (bfd_flavour sym_flavour_, const struct sym_fns *sym_fns_)
118  : sym_flavour (sym_flavour_), sym_fns (sym_fns_)
119  {}
120
121  /* BFD flavour that we handle.  */
122  enum bfd_flavour sym_flavour;
123
124  /* The "vtable" of symbol functions.  */
125  const struct sym_fns *sym_fns;
126};
127
128static std::vector<registered_sym_fns> symtab_fns;
129
130/* Values for "set print symbol-loading".  */
131
132const char print_symbol_loading_off[] = "off";
133const char print_symbol_loading_brief[] = "brief";
134const char print_symbol_loading_full[] = "full";
135static const char *print_symbol_loading_enums[] =
136{
137  print_symbol_loading_off,
138  print_symbol_loading_brief,
139  print_symbol_loading_full,
140  NULL
141};
142static const char *print_symbol_loading = print_symbol_loading_full;
143
144/* See symfile.h.  */
145
146bool 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
157int
158print_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
176int currently_reading_symtab = 0;
177
178/* Increment currently_reading_symtab and return a cleanup that can be
179   used to decrement it.  */
180
181scoped_restore_tmpl<int>
182increment_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
198void
199find_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
217section_addr_info
218build_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
242static section_addr_info
243build_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
259section_addr_info
260build_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
279static void
280init_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
340struct 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
349static void
350place_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
414void
415relative_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
444static const char *
445addr_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
459static bool
460addrs_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
475static std::vector<const struct other_sections *>
476addrs_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
493void
494addr_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
634void
635default_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
720symfile_segment_data_up
721default_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
778static void
779read_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
809static void
810init_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
906static void
907syms_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
990static void
991syms_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
1003static void
1004finish_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
1045static struct objfile *
1046symbol_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
1152void
1153symbol_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
1173struct objfile *
1174symbol_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
1186struct objfile *
1187symbol_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
1204void
1205symbol_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
1210static void
1211symbol_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
1228void
1229symbol_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
1254bool separate_debug_file_debug = false;
1255
1256static int
1257separate_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
1364char *debug_file_directory = NULL;
1365static void
1366show_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
1387static std::string
1388find_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
1502static void
1503terminate_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
1520std::string
1521find_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
1577static void
1578validate_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
1598void
1599symbol_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
1671void
1672set_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
1705gdb_bfd_ref_ptr
1706symfile_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
1754int
1755get_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
1771void
1772add_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
1782static const struct sym_fns *
1783find_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
1803static void
1804load_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
1854static int validate_download = 0;
1855
1856/* Callback service function for generic_load (bfd_map_over_sections).  */
1857
1858static void
1859add_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.  */
1867struct 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.  */
1876struct 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.  */
1896struct 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
1918static void
1919load_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
1982static void
1983load_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
2007static 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
2014void
2015generic_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
2099static void
2100print_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
2148static void
2149set_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
2202static void
2203add_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
2359static void
2360remove_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
2433void
2434reread_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
2658struct 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
2668static std::vector<filename_language> filename_language_table;
2669
2670/* See symfile.h.  */
2671
2672void
2673add_filename_language (const char *ext, enum language lang)
2674{
2675  filename_language_table.emplace_back (ext, lang);
2676}
2677
2678static char *ext_args;
2679static void
2680show_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
2689static void
2690set_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
2748static void
2749info_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
2758enum language
2759deduce_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
2777struct symtab *
2778allocate_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
2832struct compunit_symtab *
2833allocate_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
2862void
2863add_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
2873void
2874clear_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
2947enum overlay_debugging_state overlay_debugging = ovly_off;
2948int 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
2954int
2955section_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
2972static void
2973overlay_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
2992int
2993section_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
3028CORE_ADDR
3029pc_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
3050CORE_ADDR
3051pc_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
3066static int
3067sections_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
3081CORE_ADDR
3082overlay_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
3099CORE_ADDR
3100overlay_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
3117CORE_ADDR
3118symbol_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
3147struct obj_section *
3148find_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
3176struct obj_section *
3177find_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
3195static void
3196list_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
3237static void
3238map_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
3283static void
3284unmap_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
3313static void
3314overlay_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
3326static void
3327overlay_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
3339static void
3340overlay_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
3348static void
3349overlay_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.  */
3360static 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: */
3396static unsigned (*cache_ovly_table)[4] = 0;
3397static unsigned cache_novlys = 0;
3398static CORE_ADDR cache_ovly_table_base = 0;
3399enum ovly_index
3400  {
3401    VMA, OSIZE, LMA, MAPPED
3402  };
3403
3404/* Throw away the cached copy of _ovly_table.  */
3405
3406static void
3407simple_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
3418static void
3419read_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
3434static int
3435simple_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
3486static int
3487simple_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
3522void
3523simple_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
3578static void
3579symfile_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
3587bfd_byte *
3588default_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
3621bfd_byte *
3622symfile_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
3630symfile_segment_data_up
3631get_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
3656int
3657symfile_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
3697static void
3698symfile_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
3737static void
3738symfile_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
3749void
3750expand_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
3771void
3772map_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
3785namespace selftests {
3786namespace filename_language {
3787
3788static 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
3807static void
3808test_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
3842void _initialize_symfile ();
3843void
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\
3852immediately.  This makes the command slower, but may make future operations\n\
3853faster.\n\
3854The '-readnever' option will prevent GDB from reading the symbol file's\n\
3855symbolic debug information."
3856
3857  c = add_cmd ("symbol-file", class_files, symbol_file_command, _("\
3858Load symbol table from executable file FILE.\n\
3859Usage: symbol-file [-readnow | -readnever] [-o OFF] FILE\n\
3860OFF is an optional offset which is added to each section address.\n\
3861The `file' command can also load symbol tables, as well as setting the file\n\
3862to 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, _("\
3866Load symbols from FILE, assuming FILE has been dynamically loaded.\n\
3867Usage: add-symbol-file FILE [-readnow | -readnever] [-o OFF] [ADDR] \
3868[-s SECT-NAME SECT-ADDR]...\n\
3869ADDR is the starting address of the file's text.\n\
3870Each '-s' argument provides a section name and address, and\n\
3871should be specified if the data and bss segments are not contiguous\n\
3872with the text.  SECT-NAME is a section name to be loaded at SECT-ADDR.\n\
3873OFF is an optional offset which is added to the default load addresses\n\
3874of all sections for which no other address was specified.\n"
3875READNOW_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, _("\
3881Remove a symbol file added via the add-symbol-file command.\n\
3882Usage: remove-symbol-file FILENAME\n\
3883       remove-symbol-file -a ADDRESS\n\
3884The file to remove can be identified by its filename or by an address\n\
3885that lies within the boundaries of this symbol file in memory."),
3886	       &cmdlist);
3887
3888  c = add_cmd ("load", class_files, load_command, _("\
3889Dynamically load FILE into the running program.\n\
3890FILE symbols are recorded for access from GDB.\n\
3891Usage: load [FILE] [OFFSET]\n\
3892An optional load OFFSET may also be given as a literal address.\n\
3893When OFFSET is provided, FILE must also be provided.  FILE can be provided\n\
3894on 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, _("\
3925Set mapping between filename extension and source language."), _("\
3926Show mapping between filename extension and source language."), _("\
3927Usage: 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, _("\
3937Set the directories where separate debug symbols are searched for."), _("\
3938Show the directories where separate debug symbols are searched for."), _("\
3939Separate debug symbols are first searched for in the same\n\
3940directory as the binary, then in the `" DEBUG_SUBDIRECTORY "' subdirectory,\n\
3941and lastly at the path of the directory of the binary with\n\
3942each 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			_("\
3950Set printing of symbol loading messages."), _("\
3951Show printing of symbol loading messages."), _("\
3952off   == turn all messages off\n\
3953brief == print messages for the executable,\n\
3954         and brief messages for shared libraries\n\
3955full  == 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, _("\
3963Set printing of separate debug info file search debug."), _("\
3964Show printing of separate debug info file search debug."), _("\
3965When on, GDB prints the searched locations while looking for separate debug \
3966info 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