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