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