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