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