Use gdb::byte_vector in load_progress
[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 overlay_command (char *, int);
96
97 static void simple_free_overlay_table (void);
98
99 static void read_target_long_array (CORE_ADDR, unsigned int *, int, int,
100                                     enum bfd_endian);
101
102 static int simple_read_overlay_table (void);
103
104 static int simple_overlay_update_1 (struct obj_section *);
105
106 static void info_ext_lang_command (char *args, int from_tty);
107
108 static void symfile_find_segment_sections (struct objfile *objfile);
109
110 /* List of all available sym_fns.  On gdb startup, each object file reader
111    calls add_symtab_fns() to register information on each format it is
112    prepared to read.  */
113
114 typedef struct
115 {
116   /* BFD flavour that we handle.  */
117   enum bfd_flavour sym_flavour;
118
119   /* The "vtable" of symbol functions.  */
120   const struct sym_fns *sym_fns;
121 } registered_sym_fns;
122
123 DEF_VEC_O (registered_sym_fns);
124
125 static VEC (registered_sym_fns) *symtab_fns = NULL;
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           free_objfile (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 allocate_objfile's definition.
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 = allocate_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 allocate_objfile's definition.  */
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   registered_sym_fns fns = { flavour, sf };
1772
1773   VEC_safe_push (registered_sym_fns, symtab_fns, &fns);
1774 }
1775
1776 /* Initialize OBJFILE to read symbols from its associated BFD.  It
1777    either returns or calls error().  The result is an initialized
1778    struct sym_fns in the objfile structure, that contains cached
1779    information about the symbol file.  */
1780
1781 static const struct sym_fns *
1782 find_sym_fns (bfd *abfd)
1783 {
1784   registered_sym_fns *rsf;
1785   enum bfd_flavour our_flavour = bfd_get_flavour (abfd);
1786   int i;
1787
1788   if (our_flavour == bfd_target_srec_flavour
1789       || our_flavour == bfd_target_ihex_flavour
1790       || our_flavour == bfd_target_tekhex_flavour)
1791     return NULL;        /* No symbols.  */
1792
1793   for (i = 0; VEC_iterate (registered_sym_fns, symtab_fns, i, rsf); ++i)
1794     if (our_flavour == rsf->sym_flavour)
1795       return rsf->sym_fns;
1796
1797   error (_("I'm sorry, Dave, I can't do that.  Symbol format `%s' unknown."),
1798          bfd_get_target (abfd));
1799 }
1800 \f
1801
1802 /* This function runs the load command of our current target.  */
1803
1804 static void
1805 load_command (char *arg, int from_tty)
1806 {
1807   struct cleanup *cleanup = make_cleanup (null_cleanup, NULL);
1808
1809   dont_repeat ();
1810
1811   /* The user might be reloading because the binary has changed.  Take
1812      this opportunity to check.  */
1813   reopen_exec_file ();
1814   reread_symbols ();
1815
1816   if (arg == NULL)
1817     {
1818       char *parg;
1819       int count = 0;
1820
1821       parg = arg = get_exec_file (1);
1822
1823       /* Count how many \ " ' tab space there are in the name.  */
1824       while ((parg = strpbrk (parg, "\\\"'\t ")))
1825         {
1826           parg++;
1827           count++;
1828         }
1829
1830       if (count)
1831         {
1832           /* We need to quote this string so buildargv can pull it apart.  */
1833           char *temp = (char *) xmalloc (strlen (arg) + count + 1 );
1834           char *ptemp = temp;
1835           char *prev;
1836
1837           make_cleanup (xfree, temp);
1838
1839           prev = parg = arg;
1840           while ((parg = strpbrk (parg, "\\\"'\t ")))
1841             {
1842               strncpy (ptemp, prev, parg - prev);
1843               ptemp += parg - prev;
1844               prev = parg++;
1845               *ptemp++ = '\\';
1846             }
1847           strcpy (ptemp, prev);
1848
1849           arg = temp;
1850         }
1851     }
1852
1853   target_load (arg, from_tty);
1854
1855   /* After re-loading the executable, we don't really know which
1856      overlays are mapped any more.  */
1857   overlay_cache_invalid = 1;
1858
1859   do_cleanups (cleanup);
1860 }
1861
1862 /* This version of "load" should be usable for any target.  Currently
1863    it is just used for remote targets, not inftarg.c or core files,
1864    on the theory that only in that case is it useful.
1865
1866    Avoiding xmodem and the like seems like a win (a) because we don't have
1867    to worry about finding it, and (b) On VMS, fork() is very slow and so
1868    we don't want to run a subprocess.  On the other hand, I'm not sure how
1869    performance compares.  */
1870
1871 static int validate_download = 0;
1872
1873 /* Callback service function for generic_load (bfd_map_over_sections).  */
1874
1875 static void
1876 add_section_size_callback (bfd *abfd, asection *asec, void *data)
1877 {
1878   bfd_size_type *sum = (bfd_size_type *) data;
1879
1880   *sum += bfd_get_section_size (asec);
1881 }
1882
1883 /* Opaque data for load_section_callback.  */
1884 struct load_section_data {
1885   CORE_ADDR load_offset;
1886   struct load_progress_data *progress_data;
1887   VEC(memory_write_request_s) *requests;
1888 };
1889
1890 /* Opaque data for load_progress.  */
1891 struct load_progress_data {
1892   /* Cumulative data.  */
1893   unsigned long write_count;
1894   unsigned long data_count;
1895   bfd_size_type total_size;
1896 };
1897
1898 /* Opaque data for load_progress for a single section.  */
1899 struct load_progress_section_data {
1900   struct load_progress_data *cumulative;
1901
1902   /* Per-section data.  */
1903   const char *section_name;
1904   ULONGEST section_sent;
1905   ULONGEST section_size;
1906   CORE_ADDR lma;
1907   gdb_byte *buffer;
1908 };
1909
1910 /* Target write callback routine for progress reporting.  */
1911
1912 static void
1913 load_progress (ULONGEST bytes, void *untyped_arg)
1914 {
1915   struct load_progress_section_data *args
1916     = (struct load_progress_section_data *) untyped_arg;
1917   struct load_progress_data *totals;
1918
1919   if (args == NULL)
1920     /* Writing padding data.  No easy way to get at the cumulative
1921        stats, so just ignore this.  */
1922     return;
1923
1924   totals = args->cumulative;
1925
1926   if (bytes == 0 && args->section_sent == 0)
1927     {
1928       /* The write is just starting.  Let the user know we've started
1929          this section.  */
1930       current_uiout->message ("Loading section %s, size %s lma %s\n",
1931                               args->section_name,
1932                               hex_string (args->section_size),
1933                               paddress (target_gdbarch (), args->lma));
1934       return;
1935     }
1936
1937   if (validate_download)
1938     {
1939       /* Broken memories and broken monitors manifest themselves here
1940          when bring new computers to life.  This doubles already slow
1941          downloads.  */
1942       /* NOTE: cagney/1999-10-18: A more efficient implementation
1943          might add a verify_memory() method to the target vector and
1944          then use that.  remote.c could implement that method using
1945          the ``qCRC'' packet.  */
1946       gdb::byte_vector check (bytes);
1947
1948       if (target_read_memory (args->lma, check.data (), bytes) != 0)
1949         error (_("Download verify read failed at %s"),
1950                paddress (target_gdbarch (), args->lma));
1951       if (memcmp (args->buffer, check.data (), bytes) != 0)
1952         error (_("Download verify compare failed at %s"),
1953                paddress (target_gdbarch (), args->lma));
1954     }
1955   totals->data_count += bytes;
1956   args->lma += bytes;
1957   args->buffer += bytes;
1958   totals->write_count += 1;
1959   args->section_sent += bytes;
1960   if (check_quit_flag ()
1961       || (deprecated_ui_load_progress_hook != NULL
1962           && deprecated_ui_load_progress_hook (args->section_name,
1963                                                args->section_sent)))
1964     error (_("Canceled the download"));
1965
1966   if (deprecated_show_load_progress != NULL)
1967     deprecated_show_load_progress (args->section_name,
1968                                    args->section_sent,
1969                                    args->section_size,
1970                                    totals->data_count,
1971                                    totals->total_size);
1972 }
1973
1974 /* Callback service function for generic_load (bfd_map_over_sections).  */
1975
1976 static void
1977 load_section_callback (bfd *abfd, asection *asec, void *data)
1978 {
1979   struct memory_write_request *new_request;
1980   struct load_section_data *args = (struct load_section_data *) data;
1981   struct load_progress_section_data *section_data;
1982   bfd_size_type size = bfd_get_section_size (asec);
1983   gdb_byte *buffer;
1984   const char *sect_name = bfd_get_section_name (abfd, asec);
1985
1986   if ((bfd_get_section_flags (abfd, asec) & SEC_LOAD) == 0)
1987     return;
1988
1989   if (size == 0)
1990     return;
1991
1992   new_request = VEC_safe_push (memory_write_request_s,
1993                                args->requests, NULL);
1994   memset (new_request, 0, sizeof (struct memory_write_request));
1995   section_data = XCNEW (struct load_progress_section_data);
1996   new_request->begin = bfd_section_lma (abfd, asec) + args->load_offset;
1997   new_request->end = new_request->begin + size; /* FIXME Should size
1998                                                    be in instead?  */
1999   new_request->data = (gdb_byte *) xmalloc (size);
2000   new_request->baton = section_data;
2001
2002   buffer = new_request->data;
2003
2004   section_data->cumulative = args->progress_data;
2005   section_data->section_name = sect_name;
2006   section_data->section_size = size;
2007   section_data->lma = new_request->begin;
2008   section_data->buffer = buffer;
2009
2010   bfd_get_section_contents (abfd, asec, buffer, 0, size);
2011 }
2012
2013 /* Clean up an entire memory request vector, including load
2014    data and progress records.  */
2015
2016 static void
2017 clear_memory_write_data (void *arg)
2018 {
2019   VEC(memory_write_request_s) **vec_p = (VEC(memory_write_request_s) **) arg;
2020   VEC(memory_write_request_s) *vec = *vec_p;
2021   int i;
2022   struct memory_write_request *mr;
2023
2024   for (i = 0; VEC_iterate (memory_write_request_s, vec, i, mr); ++i)
2025     {
2026       xfree (mr->data);
2027       xfree (mr->baton);
2028     }
2029   VEC_free (memory_write_request_s, vec);
2030 }
2031
2032 static void print_transfer_performance (struct ui_file *stream,
2033                                         unsigned long data_count,
2034                                         unsigned long write_count,
2035                                         std::chrono::steady_clock::duration d);
2036
2037 void
2038 generic_load (const char *args, int from_tty)
2039 {
2040   struct cleanup *old_cleanups;
2041   struct load_section_data cbdata;
2042   struct load_progress_data total_progress;
2043   struct ui_out *uiout = current_uiout;
2044
2045   CORE_ADDR entry;
2046
2047   memset (&cbdata, 0, sizeof (cbdata));
2048   memset (&total_progress, 0, sizeof (total_progress));
2049   cbdata.progress_data = &total_progress;
2050
2051   old_cleanups = make_cleanup (clear_memory_write_data, &cbdata.requests);
2052
2053   if (args == NULL)
2054     error_no_arg (_("file to load"));
2055
2056   gdb_argv argv (args);
2057
2058   gdb::unique_xmalloc_ptr<char> filename (tilde_expand (argv[0]));
2059
2060   if (argv[1] != NULL)
2061     {
2062       const char *endptr;
2063
2064       cbdata.load_offset = strtoulst (argv[1], &endptr, 0);
2065
2066       /* If the last word was not a valid number then
2067          treat it as a file name with spaces in.  */
2068       if (argv[1] == endptr)
2069         error (_("Invalid download offset:%s."), argv[1]);
2070
2071       if (argv[2] != NULL)
2072         error (_("Too many parameters."));
2073     }
2074
2075   /* Open the file for loading.  */
2076   gdb_bfd_ref_ptr loadfile_bfd (gdb_bfd_open (filename.get (), gnutarget, -1));
2077   if (loadfile_bfd == NULL)
2078     perror_with_name (filename.get ());
2079
2080   if (!bfd_check_format (loadfile_bfd.get (), bfd_object))
2081     {
2082       error (_("\"%s\" is not an object file: %s"), filename.get (),
2083              bfd_errmsg (bfd_get_error ()));
2084     }
2085
2086   bfd_map_over_sections (loadfile_bfd.get (), add_section_size_callback,
2087                          (void *) &total_progress.total_size);
2088
2089   bfd_map_over_sections (loadfile_bfd.get (), load_section_callback, &cbdata);
2090
2091   using namespace std::chrono;
2092
2093   steady_clock::time_point start_time = steady_clock::now ();
2094
2095   if (target_write_memory_blocks (cbdata.requests, flash_discard,
2096                                   load_progress) != 0)
2097     error (_("Load failed"));
2098
2099   steady_clock::time_point end_time = steady_clock::now ();
2100
2101   entry = bfd_get_start_address (loadfile_bfd.get ());
2102   entry = gdbarch_addr_bits_remove (target_gdbarch (), entry);
2103   uiout->text ("Start address ");
2104   uiout->field_fmt ("address", "%s", paddress (target_gdbarch (), entry));
2105   uiout->text (", load size ");
2106   uiout->field_fmt ("load-size", "%lu", total_progress.data_count);
2107   uiout->text ("\n");
2108   regcache_write_pc (get_current_regcache (), entry);
2109
2110   /* Reset breakpoints, now that we have changed the load image.  For
2111      instance, breakpoints may have been set (or reset, by
2112      post_create_inferior) while connected to the target but before we
2113      loaded the program.  In that case, the prologue analyzer could
2114      have read instructions from the target to find the right
2115      breakpoint locations.  Loading has changed the contents of that
2116      memory.  */
2117
2118   breakpoint_re_set ();
2119
2120   print_transfer_performance (gdb_stdout, total_progress.data_count,
2121                               total_progress.write_count,
2122                               end_time - start_time);
2123
2124   do_cleanups (old_cleanups);
2125 }
2126
2127 /* Report on STREAM the performance of a memory transfer operation,
2128    such as 'load'.  DATA_COUNT is the number of bytes transferred.
2129    WRITE_COUNT is the number of separate write operations, or 0, if
2130    that information is not available.  TIME is how long the operation
2131    lasted.  */
2132
2133 static void
2134 print_transfer_performance (struct ui_file *stream,
2135                             unsigned long data_count,
2136                             unsigned long write_count,
2137                             std::chrono::steady_clock::duration time)
2138 {
2139   using namespace std::chrono;
2140   struct ui_out *uiout = current_uiout;
2141
2142   milliseconds ms = duration_cast<milliseconds> (time);
2143
2144   uiout->text ("Transfer rate: ");
2145   if (ms.count () > 0)
2146     {
2147       unsigned long rate = ((ULONGEST) data_count * 1000) / ms.count ();
2148
2149       if (uiout->is_mi_like_p ())
2150         {
2151           uiout->field_fmt ("transfer-rate", "%lu", rate * 8);
2152           uiout->text (" bits/sec");
2153         }
2154       else if (rate < 1024)
2155         {
2156           uiout->field_fmt ("transfer-rate", "%lu", rate);
2157           uiout->text (" bytes/sec");
2158         }
2159       else
2160         {
2161           uiout->field_fmt ("transfer-rate", "%lu", rate / 1024);
2162           uiout->text (" KB/sec");
2163         }
2164     }
2165   else
2166     {
2167       uiout->field_fmt ("transferred-bits", "%lu", (data_count * 8));
2168       uiout->text (" bits in <1 sec");
2169     }
2170   if (write_count > 0)
2171     {
2172       uiout->text (", ");
2173       uiout->field_fmt ("write-rate", "%lu", data_count / write_count);
2174       uiout->text (" bytes/write");
2175     }
2176   uiout->text (".\n");
2177 }
2178
2179 /* This function allows the addition of incrementally linked object files.
2180    It does not modify any state in the target, only in the debugger.  */
2181 /* Note: ezannoni 2000-04-13 This function/command used to have a
2182    special case syntax for the rombug target (Rombug is the boot
2183    monitor for Microware's OS-9 / OS-9000, see remote-os9k.c). In the
2184    rombug case, the user doesn't need to supply a text address,
2185    instead a call to target_link() (in target.c) would supply the
2186    value to use.  We are now discontinuing this type of ad hoc syntax.  */
2187
2188 static void
2189 add_symbol_file_command (const char *args, int from_tty)
2190 {
2191   struct gdbarch *gdbarch = get_current_arch ();
2192   gdb::unique_xmalloc_ptr<char> filename;
2193   char *arg;
2194   int argcnt = 0;
2195   int sec_num = 0;
2196   int expecting_sec_name = 0;
2197   int expecting_sec_addr = 0;
2198   struct objfile *objf;
2199   objfile_flags flags = OBJF_USERLOADED | OBJF_SHARED;
2200   symfile_add_flags add_flags = 0;
2201
2202   if (from_tty)
2203     add_flags |= SYMFILE_VERBOSE;
2204
2205   struct sect_opt
2206   {
2207     const char *name;
2208     const char *value;
2209   };
2210
2211   struct section_addr_info *section_addrs;
2212   std::vector<sect_opt> sect_opts;
2213   struct cleanup *my_cleanups = make_cleanup (null_cleanup, NULL);
2214
2215   dont_repeat ();
2216
2217   if (args == NULL)
2218     error (_("add-symbol-file takes a file name and an address"));
2219
2220   gdb_argv argv (args);
2221
2222   for (arg = argv[0], argcnt = 0; arg != NULL; arg = argv[++argcnt])
2223     {
2224       /* Process the argument.  */
2225       if (argcnt == 0)
2226         {
2227           /* The first argument is the file name.  */
2228           filename.reset (tilde_expand (arg));
2229         }
2230       else if (argcnt == 1)
2231         {
2232           /* The second argument is always the text address at which
2233              to load the program.  */
2234           sect_opt sect = { ".text", arg };
2235           sect_opts.push_back (sect);
2236         }
2237       else
2238         {
2239           /* It's an option (starting with '-') or it's an argument
2240              to an option.  */
2241           if (expecting_sec_name)
2242             {
2243               sect_opt sect = { arg, NULL };
2244               sect_opts.push_back (sect);
2245               expecting_sec_name = 0;
2246             }
2247           else if (expecting_sec_addr)
2248             {
2249               sect_opts.back ().value = arg;
2250               expecting_sec_addr = 0;
2251             }
2252           else if (strcmp (arg, "-readnow") == 0)
2253             flags |= OBJF_READNOW;
2254           else if (strcmp (arg, "-s") == 0)
2255             {
2256               expecting_sec_name = 1;
2257               expecting_sec_addr = 1;
2258             }
2259           else
2260             error (_("USAGE: add-symbol-file <filename> <textaddress>"
2261                      " [-readnow] [-s <secname> <addr>]*"));
2262         }
2263     }
2264
2265   /* This command takes at least two arguments.  The first one is a
2266      filename, and the second is the address where this file has been
2267      loaded.  Abort now if this address hasn't been provided by the
2268      user.  */
2269   if (sect_opts.empty ())
2270     error (_("The address where %s has been loaded is missing"),
2271            filename.get ());
2272
2273   /* Print the prompt for the query below.  And save the arguments into
2274      a sect_addr_info structure to be passed around to other
2275      functions.  We have to split this up into separate print
2276      statements because hex_string returns a local static
2277      string.  */
2278
2279   printf_unfiltered (_("add symbol table from file \"%s\" at\n"),
2280                      filename.get ());
2281   section_addrs = alloc_section_addr_info (sect_opts.size ());
2282   make_cleanup (xfree, section_addrs);
2283   for (sect_opt &sect : sect_opts)
2284     {
2285       CORE_ADDR addr;
2286       const char *val = sect.value;
2287       const char *sec = sect.name;
2288
2289       addr = parse_and_eval_address (val);
2290
2291       /* Here we store the section offsets in the order they were
2292          entered on the command line.  */
2293       section_addrs->other[sec_num].name = (char *) sec;
2294       section_addrs->other[sec_num].addr = addr;
2295       printf_unfiltered ("\t%s_addr = %s\n", sec,
2296                          paddress (gdbarch, addr));
2297       sec_num++;
2298
2299       /* The object's sections are initialized when a
2300          call is made to build_objfile_section_table (objfile).
2301          This happens in reread_symbols.
2302          At this point, we don't know what file type this is,
2303          so we can't determine what section names are valid.  */
2304     }
2305   section_addrs->num_sections = sec_num;
2306
2307   if (from_tty && (!query ("%s", "")))
2308     error (_("Not confirmed."));
2309
2310   objf = symbol_file_add (filename.get (), add_flags, section_addrs, flags);
2311
2312   add_target_sections_of_objfile (objf);
2313
2314   /* Getting new symbols may change our opinion about what is
2315      frameless.  */
2316   reinit_frame_cache ();
2317   do_cleanups (my_cleanups);
2318 }
2319 \f
2320
2321 /* This function removes a symbol file that was added via add-symbol-file.  */
2322
2323 static void
2324 remove_symbol_file_command (const char *args, int from_tty)
2325 {
2326   struct objfile *objf = NULL;
2327   struct program_space *pspace = current_program_space;
2328
2329   dont_repeat ();
2330
2331   if (args == NULL)
2332     error (_("remove-symbol-file: no symbol file provided"));
2333
2334   gdb_argv argv (args);
2335
2336   if (strcmp (argv[0], "-a") == 0)
2337     {
2338       /* Interpret the next argument as an address.  */
2339       CORE_ADDR addr;
2340
2341       if (argv[1] == NULL)
2342         error (_("Missing address argument"));
2343
2344       if (argv[2] != NULL)
2345         error (_("Junk after %s"), argv[1]);
2346
2347       addr = parse_and_eval_address (argv[1]);
2348
2349       ALL_OBJFILES (objf)
2350         {
2351           if ((objf->flags & OBJF_USERLOADED) != 0
2352               && (objf->flags & OBJF_SHARED) != 0
2353               && objf->pspace == pspace && is_addr_in_objfile (addr, objf))
2354             break;
2355         }
2356     }
2357   else if (argv[0] != NULL)
2358     {
2359       /* Interpret the current argument as a file name.  */
2360
2361       if (argv[1] != NULL)
2362         error (_("Junk after %s"), argv[0]);
2363
2364       gdb::unique_xmalloc_ptr<char> filename (tilde_expand (argv[0]));
2365
2366       ALL_OBJFILES (objf)
2367         {
2368           if ((objf->flags & OBJF_USERLOADED) != 0
2369               && (objf->flags & OBJF_SHARED) != 0
2370               && objf->pspace == pspace
2371               && filename_cmp (filename.get (), objfile_name (objf)) == 0)
2372             break;
2373         }
2374     }
2375
2376   if (objf == NULL)
2377     error (_("No symbol file found"));
2378
2379   if (from_tty
2380       && !query (_("Remove symbol table from file \"%s\"? "),
2381                  objfile_name (objf)))
2382     error (_("Not confirmed."));
2383
2384   free_objfile (objf);
2385   clear_symtab_users (0);
2386 }
2387
2388 /* Re-read symbols if a symbol-file has changed.  */
2389
2390 void
2391 reread_symbols (void)
2392 {
2393   struct objfile *objfile;
2394   long new_modtime;
2395   struct stat new_statbuf;
2396   int res;
2397   std::vector<struct objfile *> new_objfiles;
2398
2399   /* With the addition of shared libraries, this should be modified,
2400      the load time should be saved in the partial symbol tables, since
2401      different tables may come from different source files.  FIXME.
2402      This routine should then walk down each partial symbol table
2403      and see if the symbol table that it originates from has been changed.  */
2404
2405   for (objfile = object_files; objfile; objfile = objfile->next)
2406     {
2407       if (objfile->obfd == NULL)
2408         continue;
2409
2410       /* Separate debug objfiles are handled in the main objfile.  */
2411       if (objfile->separate_debug_objfile_backlink)
2412         continue;
2413
2414       /* If this object is from an archive (what you usually create with
2415          `ar', often called a `static library' on most systems, though
2416          a `shared library' on AIX is also an archive), then you should
2417          stat on the archive name, not member name.  */
2418       if (objfile->obfd->my_archive)
2419         res = stat (objfile->obfd->my_archive->filename, &new_statbuf);
2420       else
2421         res = stat (objfile_name (objfile), &new_statbuf);
2422       if (res != 0)
2423         {
2424           /* FIXME, should use print_sys_errmsg but it's not filtered.  */
2425           printf_unfiltered (_("`%s' has disappeared; keeping its symbols.\n"),
2426                              objfile_name (objfile));
2427           continue;
2428         }
2429       new_modtime = new_statbuf.st_mtime;
2430       if (new_modtime != objfile->mtime)
2431         {
2432           struct cleanup *old_cleanups;
2433           struct section_offsets *offsets;
2434           int num_offsets;
2435           char *original_name;
2436
2437           printf_unfiltered (_("`%s' has changed; re-reading symbols.\n"),
2438                              objfile_name (objfile));
2439
2440           /* There are various functions like symbol_file_add,
2441              symfile_bfd_open, syms_from_objfile, etc., which might
2442              appear to do what we want.  But they have various other
2443              effects which we *don't* want.  So we just do stuff
2444              ourselves.  We don't worry about mapped files (for one thing,
2445              any mapped file will be out of date).  */
2446
2447           /* If we get an error, blow away this objfile (not sure if
2448              that is the correct response for things like shared
2449              libraries).  */
2450           old_cleanups = make_cleanup_free_objfile (objfile);
2451           /* We need to do this whenever any symbols go away.  */
2452           make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/);
2453
2454           if (exec_bfd != NULL
2455               && filename_cmp (bfd_get_filename (objfile->obfd),
2456                                bfd_get_filename (exec_bfd)) == 0)
2457             {
2458               /* Reload EXEC_BFD without asking anything.  */
2459
2460               exec_file_attach (bfd_get_filename (objfile->obfd), 0);
2461             }
2462
2463           /* Keep the calls order approx. the same as in free_objfile.  */
2464
2465           /* Free the separate debug objfiles.  It will be
2466              automatically recreated by sym_read.  */
2467           free_objfile_separate_debug (objfile);
2468
2469           /* Remove any references to this objfile in the global
2470              value lists.  */
2471           preserve_values (objfile);
2472
2473           /* Nuke all the state that we will re-read.  Much of the following
2474              code which sets things to NULL really is necessary to tell
2475              other parts of GDB that there is nothing currently there.
2476
2477              Try to keep the freeing order compatible with free_objfile.  */
2478
2479           if (objfile->sf != NULL)
2480             {
2481               (*objfile->sf->sym_finish) (objfile);
2482             }
2483
2484           clear_objfile_data (objfile);
2485
2486           /* Clean up any state BFD has sitting around.  */
2487           {
2488             gdb_bfd_ref_ptr obfd (objfile->obfd);
2489             char *obfd_filename;
2490
2491             obfd_filename = bfd_get_filename (objfile->obfd);
2492             /* Open the new BFD before freeing the old one, so that
2493                the filename remains live.  */
2494             gdb_bfd_ref_ptr temp (gdb_bfd_open (obfd_filename, gnutarget, -1));
2495             objfile->obfd = temp.release ();
2496             if (objfile->obfd == NULL)
2497               error (_("Can't open %s to read symbols."), obfd_filename);
2498           }
2499
2500           original_name = xstrdup (objfile->original_name);
2501           make_cleanup (xfree, original_name);
2502
2503           /* bfd_openr sets cacheable to true, which is what we want.  */
2504           if (!bfd_check_format (objfile->obfd, bfd_object))
2505             error (_("Can't read symbols from %s: %s."), objfile_name (objfile),
2506                    bfd_errmsg (bfd_get_error ()));
2507
2508           /* Save the offsets, we will nuke them with the rest of the
2509              objfile_obstack.  */
2510           num_offsets = objfile->num_sections;
2511           offsets = ((struct section_offsets *)
2512                      alloca (SIZEOF_N_SECTION_OFFSETS (num_offsets)));
2513           memcpy (offsets, objfile->section_offsets,
2514                   SIZEOF_N_SECTION_OFFSETS (num_offsets));
2515
2516           /* FIXME: Do we have to free a whole linked list, or is this
2517              enough?  */
2518           if (objfile->global_psymbols.list)
2519             xfree (objfile->global_psymbols.list);
2520           memset (&objfile->global_psymbols, 0,
2521                   sizeof (objfile->global_psymbols));
2522           if (objfile->static_psymbols.list)
2523             xfree (objfile->static_psymbols.list);
2524           memset (&objfile->static_psymbols, 0,
2525                   sizeof (objfile->static_psymbols));
2526
2527           /* Free the obstacks for non-reusable objfiles.  */
2528           psymbol_bcache_free (objfile->psymbol_cache);
2529           objfile->psymbol_cache = psymbol_bcache_init ();
2530
2531           /* NB: after this call to obstack_free, objfiles_changed
2532              will need to be called (see discussion below).  */
2533           obstack_free (&objfile->objfile_obstack, 0);
2534           objfile->sections = NULL;
2535           objfile->compunit_symtabs = NULL;
2536           objfile->psymtabs = NULL;
2537           objfile->psymtabs_addrmap = NULL;
2538           objfile->free_psymtabs = NULL;
2539           objfile->template_symbols = NULL;
2540
2541           /* obstack_init also initializes the obstack so it is
2542              empty.  We could use obstack_specify_allocation but
2543              gdb_obstack.h specifies the alloc/dealloc functions.  */
2544           obstack_init (&objfile->objfile_obstack);
2545
2546           /* set_objfile_per_bfd potentially allocates the per-bfd
2547              data on the objfile's obstack (if sharing data across
2548              multiple users is not possible), so it's important to
2549              do it *after* the obstack has been initialized.  */
2550           set_objfile_per_bfd (objfile);
2551
2552           objfile->original_name
2553             = (char *) obstack_copy0 (&objfile->objfile_obstack, original_name,
2554                                       strlen (original_name));
2555
2556           /* Reset the sym_fns pointer.  The ELF reader can change it
2557              based on whether .gdb_index is present, and we need it to
2558              start over.  PR symtab/15885  */
2559           objfile_set_sym_fns (objfile, find_sym_fns (objfile->obfd));
2560
2561           build_objfile_section_table (objfile);
2562           terminate_minimal_symbol_table (objfile);
2563
2564           /* We use the same section offsets as from last time.  I'm not
2565              sure whether that is always correct for shared libraries.  */
2566           objfile->section_offsets = (struct section_offsets *)
2567             obstack_alloc (&objfile->objfile_obstack,
2568                            SIZEOF_N_SECTION_OFFSETS (num_offsets));
2569           memcpy (objfile->section_offsets, offsets,
2570                   SIZEOF_N_SECTION_OFFSETS (num_offsets));
2571           objfile->num_sections = num_offsets;
2572
2573           /* What the hell is sym_new_init for, anyway?  The concept of
2574              distinguishing between the main file and additional files
2575              in this way seems rather dubious.  */
2576           if (objfile == symfile_objfile)
2577             {
2578               (*objfile->sf->sym_new_init) (objfile);
2579             }
2580
2581           (*objfile->sf->sym_init) (objfile);
2582           clear_complaints (&symfile_complaints, 1, 1);
2583
2584           objfile->flags &= ~OBJF_PSYMTABS_READ;
2585
2586           /* We are about to read new symbols and potentially also
2587              DWARF information.  Some targets may want to pass addresses
2588              read from DWARF DIE's through an adjustment function before
2589              saving them, like MIPS, which may call into
2590              "find_pc_section".  When called, that function will make
2591              use of per-objfile program space data.
2592
2593              Since we discarded our section information above, we have
2594              dangling pointers in the per-objfile program space data
2595              structure.  Force GDB to update the section mapping
2596              information by letting it know the objfile has changed,
2597              making the dangling pointers point to correct data
2598              again.  */
2599
2600           objfiles_changed ();
2601
2602           read_symbols (objfile, 0);
2603
2604           if (!objfile_has_symbols (objfile))
2605             {
2606               wrap_here ("");
2607               printf_unfiltered (_("(no debugging symbols found)\n"));
2608               wrap_here ("");
2609             }
2610
2611           /* We're done reading the symbol file; finish off complaints.  */
2612           clear_complaints (&symfile_complaints, 0, 1);
2613
2614           /* Getting new symbols may change our opinion about what is
2615              frameless.  */
2616
2617           reinit_frame_cache ();
2618
2619           /* Discard cleanups as symbol reading was successful.  */
2620           discard_cleanups (old_cleanups);
2621
2622           /* If the mtime has changed between the time we set new_modtime
2623              and now, we *want* this to be out of date, so don't call stat
2624              again now.  */
2625           objfile->mtime = new_modtime;
2626           init_entry_point_info (objfile);
2627
2628           new_objfiles.push_back (objfile);
2629         }
2630     }
2631
2632   if (!new_objfiles.empty ())
2633     {
2634       clear_symtab_users (0);
2635
2636       /* clear_objfile_data for each objfile was called before freeing it and
2637          observer_notify_new_objfile (NULL) has been called by
2638          clear_symtab_users above.  Notify the new files now.  */
2639       for (auto iter : new_objfiles)
2640         observer_notify_new_objfile (iter);
2641
2642       /* At least one objfile has changed, so we can consider that
2643          the executable we're debugging has changed too.  */
2644       observer_notify_executable_changed ();
2645     }
2646 }
2647 \f
2648
2649 typedef struct
2650 {
2651   char *ext;
2652   enum language lang;
2653 } filename_language;
2654
2655 DEF_VEC_O (filename_language);
2656
2657 static VEC (filename_language) *filename_language_table;
2658
2659 /* See symfile.h.  */
2660
2661 void
2662 add_filename_language (const char *ext, enum language lang)
2663 {
2664   filename_language entry;
2665
2666   entry.ext = xstrdup (ext);
2667   entry.lang = lang;
2668
2669   VEC_safe_push (filename_language, filename_language_table, &entry);
2670 }
2671
2672 static char *ext_args;
2673 static void
2674 show_ext_args (struct ui_file *file, int from_tty,
2675                struct cmd_list_element *c, const char *value)
2676 {
2677   fprintf_filtered (file,
2678                     _("Mapping between filename extension "
2679                       "and source language is \"%s\".\n"),
2680                     value);
2681 }
2682
2683 static void
2684 set_ext_lang_command (char *args, int from_tty, struct cmd_list_element *e)
2685 {
2686   int i;
2687   char *cp = ext_args;
2688   enum language lang;
2689   filename_language *entry;
2690
2691   /* First arg is filename extension, starting with '.'  */
2692   if (*cp != '.')
2693     error (_("'%s': Filename extension must begin with '.'"), ext_args);
2694
2695   /* Find end of first arg.  */
2696   while (*cp && !isspace (*cp))
2697     cp++;
2698
2699   if (*cp == '\0')
2700     error (_("'%s': two arguments required -- "
2701              "filename extension and language"),
2702            ext_args);
2703
2704   /* Null-terminate first arg.  */
2705   *cp++ = '\0';
2706
2707   /* Find beginning of second arg, which should be a source language.  */
2708   cp = skip_spaces (cp);
2709
2710   if (*cp == '\0')
2711     error (_("'%s': two arguments required -- "
2712              "filename extension and language"),
2713            ext_args);
2714
2715   /* Lookup the language from among those we know.  */
2716   lang = language_enum (cp);
2717
2718   /* Now lookup the filename extension: do we already know it?  */
2719   for (i = 0;
2720        VEC_iterate (filename_language, filename_language_table, i, entry);
2721        ++i)
2722     {
2723       if (0 == strcmp (ext_args, entry->ext))
2724         break;
2725     }
2726
2727   if (entry == NULL)
2728     {
2729       /* New file extension.  */
2730       add_filename_language (ext_args, lang);
2731     }
2732   else
2733     {
2734       /* Redefining a previously known filename extension.  */
2735
2736       /* if (from_tty) */
2737       /*   query ("Really make files of type %s '%s'?", */
2738       /*          ext_args, language_str (lang));           */
2739
2740       xfree (entry->ext);
2741       entry->ext = xstrdup (ext_args);
2742       entry->lang = lang;
2743     }
2744 }
2745
2746 static void
2747 info_ext_lang_command (char *args, int from_tty)
2748 {
2749   int i;
2750   filename_language *entry;
2751
2752   printf_filtered (_("Filename extensions and the languages they represent:"));
2753   printf_filtered ("\n\n");
2754   for (i = 0;
2755        VEC_iterate (filename_language, filename_language_table, i, entry);
2756        ++i)
2757     printf_filtered ("\t%s\t- %s\n", entry->ext, language_str (entry->lang));
2758 }
2759
2760 enum language
2761 deduce_language_from_filename (const char *filename)
2762 {
2763   int i;
2764   const char *cp;
2765
2766   if (filename != NULL)
2767     if ((cp = strrchr (filename, '.')) != NULL)
2768       {
2769         filename_language *entry;
2770
2771         for (i = 0;
2772              VEC_iterate (filename_language, filename_language_table, i, entry);
2773              ++i)
2774           if (strcmp (cp, entry->ext) == 0)
2775             return entry->lang;
2776       }
2777
2778   return language_unknown;
2779 }
2780 \f
2781 /* Allocate and initialize a new symbol table.
2782    CUST is from the result of allocate_compunit_symtab.  */
2783
2784 struct symtab *
2785 allocate_symtab (struct compunit_symtab *cust, const char *filename)
2786 {
2787   struct objfile *objfile = cust->objfile;
2788   struct symtab *symtab
2789     = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symtab);
2790
2791   symtab->filename
2792     = (const char *) bcache (filename, strlen (filename) + 1,
2793                              objfile->per_bfd->filename_cache);
2794   symtab->fullname = NULL;
2795   symtab->language = deduce_language_from_filename (filename);
2796
2797   /* This can be very verbose with lots of headers.
2798      Only print at higher debug levels.  */
2799   if (symtab_create_debug >= 2)
2800     {
2801       /* Be a bit clever with debugging messages, and don't print objfile
2802          every time, only when it changes.  */
2803       static char *last_objfile_name = NULL;
2804
2805       if (last_objfile_name == NULL
2806           || strcmp (last_objfile_name, objfile_name (objfile)) != 0)
2807         {
2808           xfree (last_objfile_name);
2809           last_objfile_name = xstrdup (objfile_name (objfile));
2810           fprintf_unfiltered (gdb_stdlog,
2811                               "Creating one or more symtabs for objfile %s ...\n",
2812                               last_objfile_name);
2813         }
2814       fprintf_unfiltered (gdb_stdlog,
2815                           "Created symtab %s for module %s.\n",
2816                           host_address_to_string (symtab), filename);
2817     }
2818
2819   /* Add it to CUST's list of symtabs.  */
2820   if (cust->filetabs == NULL)
2821     {
2822       cust->filetabs = symtab;
2823       cust->last_filetab = symtab;
2824     }
2825   else
2826     {
2827       cust->last_filetab->next = symtab;
2828       cust->last_filetab = symtab;
2829     }
2830
2831   /* Backlink to the containing compunit symtab.  */
2832   symtab->compunit_symtab = cust;
2833
2834   return symtab;
2835 }
2836
2837 /* Allocate and initialize a new compunit.
2838    NAME is the name of the main source file, if there is one, or some
2839    descriptive text if there are no source files.  */
2840
2841 struct compunit_symtab *
2842 allocate_compunit_symtab (struct objfile *objfile, const char *name)
2843 {
2844   struct compunit_symtab *cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2845                                                struct compunit_symtab);
2846   const char *saved_name;
2847
2848   cu->objfile = objfile;
2849
2850   /* The name we record here is only for display/debugging purposes.
2851      Just save the basename to avoid path issues (too long for display,
2852      relative vs absolute, etc.).  */
2853   saved_name = lbasename (name);
2854   cu->name
2855     = (const char *) obstack_copy0 (&objfile->objfile_obstack, saved_name,
2856                                     strlen (saved_name));
2857
2858   COMPUNIT_DEBUGFORMAT (cu) = "unknown";
2859
2860   if (symtab_create_debug)
2861     {
2862       fprintf_unfiltered (gdb_stdlog,
2863                           "Created compunit symtab %s for %s.\n",
2864                           host_address_to_string (cu),
2865                           cu->name);
2866     }
2867
2868   return cu;
2869 }
2870
2871 /* Hook CU to the objfile it comes from.  */
2872
2873 void
2874 add_compunit_symtab_to_objfile (struct compunit_symtab *cu)
2875 {
2876   cu->next = cu->objfile->compunit_symtabs;
2877   cu->objfile->compunit_symtabs = cu;
2878 }
2879 \f
2880
2881 /* Reset all data structures in gdb which may contain references to
2882    symbol table data.  */
2883
2884 void
2885 clear_symtab_users (symfile_add_flags add_flags)
2886 {
2887   /* Someday, we should do better than this, by only blowing away
2888      the things that really need to be blown.  */
2889
2890   /* Clear the "current" symtab first, because it is no longer valid.
2891      breakpoint_re_set may try to access the current symtab.  */
2892   clear_current_source_symtab_and_line ();
2893
2894   clear_displays ();
2895   clear_last_displayed_sal ();
2896   clear_pc_function_cache ();
2897   observer_notify_new_objfile (NULL);
2898
2899   /* Clear globals which might have pointed into a removed objfile.
2900      FIXME: It's not clear which of these are supposed to persist
2901      between expressions and which ought to be reset each time.  */
2902   expression_context_block = NULL;
2903   innermost_block = NULL;
2904
2905   /* Varobj may refer to old symbols, perform a cleanup.  */
2906   varobj_invalidate ();
2907
2908   /* Now that the various caches have been cleared, we can re_set
2909      our breakpoints without risking it using stale data.  */
2910   if ((add_flags & SYMFILE_DEFER_BP_RESET) == 0)
2911     breakpoint_re_set ();
2912 }
2913
2914 static void
2915 clear_symtab_users_cleanup (void *ignore)
2916 {
2917   clear_symtab_users (0);
2918 }
2919 \f
2920 /* OVERLAYS:
2921    The following code implements an abstraction for debugging overlay sections.
2922
2923    The target model is as follows:
2924    1) The gnu linker will permit multiple sections to be mapped into the
2925    same VMA, each with its own unique LMA (or load address).
2926    2) It is assumed that some runtime mechanism exists for mapping the
2927    sections, one by one, from the load address into the VMA address.
2928    3) This code provides a mechanism for gdb to keep track of which
2929    sections should be considered to be mapped from the VMA to the LMA.
2930    This information is used for symbol lookup, and memory read/write.
2931    For instance, if a section has been mapped then its contents
2932    should be read from the VMA, otherwise from the LMA.
2933
2934    Two levels of debugger support for overlays are available.  One is
2935    "manual", in which the debugger relies on the user to tell it which
2936    overlays are currently mapped.  This level of support is
2937    implemented entirely in the core debugger, and the information about
2938    whether a section is mapped is kept in the objfile->obj_section table.
2939
2940    The second level of support is "automatic", and is only available if
2941    the target-specific code provides functionality to read the target's
2942    overlay mapping table, and translate its contents for the debugger
2943    (by updating the mapped state information in the obj_section tables).
2944
2945    The interface is as follows:
2946    User commands:
2947    overlay map <name>   -- tell gdb to consider this section mapped
2948    overlay unmap <name> -- tell gdb to consider this section unmapped
2949    overlay list         -- list the sections that GDB thinks are mapped
2950    overlay read-target  -- get the target's state of what's mapped
2951    overlay off/manual/auto -- set overlay debugging state
2952    Functional interface:
2953    find_pc_mapped_section(pc):    if the pc is in the range of a mapped
2954    section, return that section.
2955    find_pc_overlay(pc):       find any overlay section that contains
2956    the pc, either in its VMA or its LMA
2957    section_is_mapped(sect):       true if overlay is marked as mapped
2958    section_is_overlay(sect):      true if section's VMA != LMA
2959    pc_in_mapped_range(pc,sec):    true if pc belongs to section's VMA
2960    pc_in_unmapped_range(...):     true if pc belongs to section's LMA
2961    sections_overlap(sec1, sec2):  true if mapped sec1 and sec2 ranges overlap
2962    overlay_mapped_address(...):   map an address from section's LMA to VMA
2963    overlay_unmapped_address(...): map an address from section's VMA to LMA
2964    symbol_overlayed_address(...): Return a "current" address for symbol:
2965    either in VMA or LMA depending on whether
2966    the symbol's section is currently mapped.  */
2967
2968 /* Overlay debugging state: */
2969
2970 enum overlay_debugging_state overlay_debugging = ovly_off;
2971 int overlay_cache_invalid = 0;  /* True if need to refresh mapped state.  */
2972
2973 /* Function: section_is_overlay (SECTION)
2974    Returns true if SECTION has VMA not equal to LMA, ie.
2975    SECTION is loaded at an address different from where it will "run".  */
2976
2977 int
2978 section_is_overlay (struct obj_section *section)
2979 {
2980   if (overlay_debugging && section)
2981     {
2982       bfd *abfd = section->objfile->obfd;
2983       asection *bfd_section = section->the_bfd_section;
2984
2985       if (bfd_section_lma (abfd, bfd_section) != 0
2986           && bfd_section_lma (abfd, bfd_section)
2987              != bfd_section_vma (abfd, bfd_section))
2988         return 1;
2989     }
2990
2991   return 0;
2992 }
2993
2994 /* Function: overlay_invalidate_all (void)
2995    Invalidate the mapped state of all overlay sections (mark it as stale).  */
2996
2997 static void
2998 overlay_invalidate_all (void)
2999 {
3000   struct objfile *objfile;
3001   struct obj_section *sect;
3002
3003   ALL_OBJSECTIONS (objfile, sect)
3004     if (section_is_overlay (sect))
3005       sect->ovly_mapped = -1;
3006 }
3007
3008 /* Function: section_is_mapped (SECTION)
3009    Returns true if section is an overlay, and is currently mapped.
3010
3011    Access to the ovly_mapped flag is restricted to this function, so
3012    that we can do automatic update.  If the global flag
3013    OVERLAY_CACHE_INVALID is set (by wait_for_inferior), then call
3014    overlay_invalidate_all.  If the mapped state of the particular
3015    section is stale, then call TARGET_OVERLAY_UPDATE to refresh it.  */
3016
3017 int
3018 section_is_mapped (struct obj_section *osect)
3019 {
3020   struct gdbarch *gdbarch;
3021
3022   if (osect == 0 || !section_is_overlay (osect))
3023     return 0;
3024
3025   switch (overlay_debugging)
3026     {
3027     default:
3028     case ovly_off:
3029       return 0;                 /* overlay debugging off */
3030     case ovly_auto:             /* overlay debugging automatic */
3031       /* Unles there is a gdbarch_overlay_update function,
3032          there's really nothing useful to do here (can't really go auto).  */
3033       gdbarch = get_objfile_arch (osect->objfile);
3034       if (gdbarch_overlay_update_p (gdbarch))
3035         {
3036           if (overlay_cache_invalid)
3037             {
3038               overlay_invalidate_all ();
3039               overlay_cache_invalid = 0;
3040             }
3041           if (osect->ovly_mapped == -1)
3042             gdbarch_overlay_update (gdbarch, osect);
3043         }
3044       /* fall thru to manual case */
3045     case ovly_on:               /* overlay debugging manual */
3046       return osect->ovly_mapped == 1;
3047     }
3048 }
3049
3050 /* Function: pc_in_unmapped_range
3051    If PC falls into the lma range of SECTION, return true, else false.  */
3052
3053 CORE_ADDR
3054 pc_in_unmapped_range (CORE_ADDR pc, struct obj_section *section)
3055 {
3056   if (section_is_overlay (section))
3057     {
3058       bfd *abfd = section->objfile->obfd;
3059       asection *bfd_section = section->the_bfd_section;
3060
3061       /* We assume the LMA is relocated by the same offset as the VMA.  */
3062       bfd_vma size = bfd_get_section_size (bfd_section);
3063       CORE_ADDR offset = obj_section_offset (section);
3064
3065       if (bfd_get_section_lma (abfd, bfd_section) + offset <= pc
3066           && pc < bfd_get_section_lma (abfd, bfd_section) + offset + size)
3067         return 1;
3068     }
3069
3070   return 0;
3071 }
3072
3073 /* Function: pc_in_mapped_range
3074    If PC falls into the vma range of SECTION, return true, else false.  */
3075
3076 CORE_ADDR
3077 pc_in_mapped_range (CORE_ADDR pc, struct obj_section *section)
3078 {
3079   if (section_is_overlay (section))
3080     {
3081       if (obj_section_addr (section) <= pc
3082           && pc < obj_section_endaddr (section))
3083         return 1;
3084     }
3085
3086   return 0;
3087 }
3088
3089 /* Return true if the mapped ranges of sections A and B overlap, false
3090    otherwise.  */
3091
3092 static int
3093 sections_overlap (struct obj_section *a, struct obj_section *b)
3094 {
3095   CORE_ADDR a_start = obj_section_addr (a);
3096   CORE_ADDR a_end = obj_section_endaddr (a);
3097   CORE_ADDR b_start = obj_section_addr (b);
3098   CORE_ADDR b_end = obj_section_endaddr (b);
3099
3100   return (a_start < b_end && b_start < a_end);
3101 }
3102
3103 /* Function: overlay_unmapped_address (PC, SECTION)
3104    Returns the address corresponding to PC in the unmapped (load) range.
3105    May be the same as PC.  */
3106
3107 CORE_ADDR
3108 overlay_unmapped_address (CORE_ADDR pc, struct obj_section *section)
3109 {
3110   if (section_is_overlay (section) && pc_in_mapped_range (pc, section))
3111     {
3112       bfd *abfd = section->objfile->obfd;
3113       asection *bfd_section = section->the_bfd_section;
3114
3115       return pc + bfd_section_lma (abfd, bfd_section)
3116                 - bfd_section_vma (abfd, bfd_section);
3117     }
3118
3119   return pc;
3120 }
3121
3122 /* Function: overlay_mapped_address (PC, SECTION)
3123    Returns the address corresponding to PC in the mapped (runtime) range.
3124    May be the same as PC.  */
3125
3126 CORE_ADDR
3127 overlay_mapped_address (CORE_ADDR pc, struct obj_section *section)
3128 {
3129   if (section_is_overlay (section) && pc_in_unmapped_range (pc, section))
3130     {
3131       bfd *abfd = section->objfile->obfd;
3132       asection *bfd_section = section->the_bfd_section;
3133
3134       return pc + bfd_section_vma (abfd, bfd_section)
3135                 - bfd_section_lma (abfd, bfd_section);
3136     }
3137
3138   return pc;
3139 }
3140
3141 /* Function: symbol_overlayed_address
3142    Return one of two addresses (relative to the VMA or to the LMA),
3143    depending on whether the section is mapped or not.  */
3144
3145 CORE_ADDR
3146 symbol_overlayed_address (CORE_ADDR address, struct obj_section *section)
3147 {
3148   if (overlay_debugging)
3149     {
3150       /* If the symbol has no section, just return its regular address.  */
3151       if (section == 0)
3152         return address;
3153       /* If the symbol's section is not an overlay, just return its
3154          address.  */
3155       if (!section_is_overlay (section))
3156         return address;
3157       /* If the symbol's section is mapped, just return its address.  */
3158       if (section_is_mapped (section))
3159         return address;
3160       /*
3161        * HOWEVER: if the symbol is in an overlay section which is NOT mapped,
3162        * then return its LOADED address rather than its vma address!!
3163        */
3164       return overlay_unmapped_address (address, section);
3165     }
3166   return address;
3167 }
3168
3169 /* Function: find_pc_overlay (PC)
3170    Return the best-match overlay section for PC:
3171    If PC matches a mapped overlay section's VMA, return that section.
3172    Else if PC matches an unmapped section's VMA, return that section.
3173    Else if PC matches an unmapped section's LMA, return that section.  */
3174
3175 struct obj_section *
3176 find_pc_overlay (CORE_ADDR pc)
3177 {
3178   struct objfile *objfile;
3179   struct obj_section *osect, *best_match = NULL;
3180
3181   if (overlay_debugging)
3182     {
3183       ALL_OBJSECTIONS (objfile, osect)
3184         if (section_is_overlay (osect))
3185           {
3186             if (pc_in_mapped_range (pc, osect))
3187               {
3188                 if (section_is_mapped (osect))
3189                   return osect;
3190                 else
3191                   best_match = osect;
3192               }
3193             else if (pc_in_unmapped_range (pc, osect))
3194               best_match = osect;
3195           }
3196     }
3197   return best_match;
3198 }
3199
3200 /* Function: find_pc_mapped_section (PC)
3201    If PC falls into the VMA address range of an overlay section that is
3202    currently marked as MAPPED, return that section.  Else return NULL.  */
3203
3204 struct obj_section *
3205 find_pc_mapped_section (CORE_ADDR pc)
3206 {
3207   struct objfile *objfile;
3208   struct obj_section *osect;
3209
3210   if (overlay_debugging)
3211     {
3212       ALL_OBJSECTIONS (objfile, osect)
3213         if (pc_in_mapped_range (pc, osect) && section_is_mapped (osect))
3214           return osect;
3215     }
3216
3217   return NULL;
3218 }
3219
3220 /* Function: list_overlays_command
3221    Print a list of mapped sections and their PC ranges.  */
3222
3223 static void
3224 list_overlays_command (const char *args, int from_tty)
3225 {
3226   int nmapped = 0;
3227   struct objfile *objfile;
3228   struct obj_section *osect;
3229
3230   if (overlay_debugging)
3231     {
3232       ALL_OBJSECTIONS (objfile, osect)
3233       if (section_is_mapped (osect))
3234         {
3235           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3236           const char *name;
3237           bfd_vma lma, vma;
3238           int size;
3239
3240           vma = bfd_section_vma (objfile->obfd, osect->the_bfd_section);
3241           lma = bfd_section_lma (objfile->obfd, osect->the_bfd_section);
3242           size = bfd_get_section_size (osect->the_bfd_section);
3243           name = bfd_section_name (objfile->obfd, osect->the_bfd_section);
3244
3245           printf_filtered ("Section %s, loaded at ", name);
3246           fputs_filtered (paddress (gdbarch, lma), gdb_stdout);
3247           puts_filtered (" - ");
3248           fputs_filtered (paddress (gdbarch, lma + size), gdb_stdout);
3249           printf_filtered (", mapped at ");
3250           fputs_filtered (paddress (gdbarch, vma), gdb_stdout);
3251           puts_filtered (" - ");
3252           fputs_filtered (paddress (gdbarch, vma + size), gdb_stdout);
3253           puts_filtered ("\n");
3254
3255           nmapped++;
3256         }
3257     }
3258   if (nmapped == 0)
3259     printf_filtered (_("No sections are mapped.\n"));
3260 }
3261
3262 /* Function: map_overlay_command
3263    Mark the named section as mapped (ie. residing at its VMA address).  */
3264
3265 static void
3266 map_overlay_command (const char *args, int from_tty)
3267 {
3268   struct objfile *objfile, *objfile2;
3269   struct obj_section *sec, *sec2;
3270
3271   if (!overlay_debugging)
3272     error (_("Overlay debugging not enabled.  Use "
3273              "either the 'overlay auto' or\n"
3274              "the 'overlay manual' command."));
3275
3276   if (args == 0 || *args == 0)
3277     error (_("Argument required: name of an overlay section"));
3278
3279   /* First, find a section matching the user supplied argument.  */
3280   ALL_OBJSECTIONS (objfile, sec)
3281     if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3282     {
3283       /* Now, check to see if the section is an overlay.  */
3284       if (!section_is_overlay (sec))
3285         continue;               /* not an overlay section */
3286
3287       /* Mark the overlay as "mapped".  */
3288       sec->ovly_mapped = 1;
3289
3290       /* Next, make a pass and unmap any sections that are
3291          overlapped by this new section: */
3292       ALL_OBJSECTIONS (objfile2, sec2)
3293         if (sec2->ovly_mapped && sec != sec2 && sections_overlap (sec, sec2))
3294         {
3295           if (info_verbose)
3296             printf_unfiltered (_("Note: section %s unmapped by overlap\n"),
3297                              bfd_section_name (objfile->obfd,
3298                                                sec2->the_bfd_section));
3299           sec2->ovly_mapped = 0;        /* sec2 overlaps sec: unmap sec2.  */
3300         }
3301       return;
3302     }
3303   error (_("No overlay section called %s"), args);
3304 }
3305
3306 /* Function: unmap_overlay_command
3307    Mark the overlay section as unmapped
3308    (ie. resident in its LMA address range, rather than the VMA range).  */
3309
3310 static void
3311 unmap_overlay_command (const char *args, int from_tty)
3312 {
3313   struct objfile *objfile;
3314   struct obj_section *sec = NULL;
3315
3316   if (!overlay_debugging)
3317     error (_("Overlay debugging not enabled.  "
3318              "Use either the 'overlay auto' or\n"
3319              "the 'overlay manual' command."));
3320
3321   if (args == 0 || *args == 0)
3322     error (_("Argument required: name of an overlay section"));
3323
3324   /* First, find a section matching the user supplied argument.  */
3325   ALL_OBJSECTIONS (objfile, sec)
3326     if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3327     {
3328       if (!sec->ovly_mapped)
3329         error (_("Section %s is not mapped"), args);
3330       sec->ovly_mapped = 0;
3331       return;
3332     }
3333   error (_("No overlay section called %s"), args);
3334 }
3335
3336 /* Function: overlay_auto_command
3337    A utility command to turn on overlay debugging.
3338    Possibly this should be done via a set/show command.  */
3339
3340 static void
3341 overlay_auto_command (const char *args, int from_tty)
3342 {
3343   overlay_debugging = ovly_auto;
3344   enable_overlay_breakpoints ();
3345   if (info_verbose)
3346     printf_unfiltered (_("Automatic overlay debugging enabled."));
3347 }
3348
3349 /* Function: overlay_manual_command
3350    A utility command to turn on overlay debugging.
3351    Possibly this should be done via a set/show command.  */
3352
3353 static void
3354 overlay_manual_command (const char *args, int from_tty)
3355 {
3356   overlay_debugging = ovly_on;
3357   disable_overlay_breakpoints ();
3358   if (info_verbose)
3359     printf_unfiltered (_("Overlay debugging enabled."));
3360 }
3361
3362 /* Function: overlay_off_command
3363    A utility command to turn on overlay debugging.
3364    Possibly this should be done via a set/show command.  */
3365
3366 static void
3367 overlay_off_command (const char *args, int from_tty)
3368 {
3369   overlay_debugging = ovly_off;
3370   disable_overlay_breakpoints ();
3371   if (info_verbose)
3372     printf_unfiltered (_("Overlay debugging disabled."));
3373 }
3374
3375 static void
3376 overlay_load_command (const char *args, int from_tty)
3377 {
3378   struct gdbarch *gdbarch = get_current_arch ();
3379
3380   if (gdbarch_overlay_update_p (gdbarch))
3381     gdbarch_overlay_update (gdbarch, NULL);
3382   else
3383     error (_("This target does not know how to read its overlay state."));
3384 }
3385
3386 /* Function: overlay_command
3387    A place-holder for a mis-typed command.  */
3388
3389 /* Command list chain containing all defined "overlay" subcommands.  */
3390 static struct cmd_list_element *overlaylist;
3391
3392 static void
3393 overlay_command (char *args, int from_tty)
3394 {
3395   printf_unfiltered
3396     ("\"overlay\" must be followed by the name of an overlay command.\n");
3397   help_list (overlaylist, "overlay ", all_commands, gdb_stdout);
3398 }
3399
3400 /* Target Overlays for the "Simplest" overlay manager:
3401
3402    This is GDB's default target overlay layer.  It works with the
3403    minimal overlay manager supplied as an example by Cygnus.  The
3404    entry point is via a function pointer "gdbarch_overlay_update",
3405    so targets that use a different runtime overlay manager can
3406    substitute their own overlay_update function and take over the
3407    function pointer.
3408
3409    The overlay_update function pokes around in the target's data structures
3410    to see what overlays are mapped, and updates GDB's overlay mapping with
3411    this information.
3412
3413    In this simple implementation, the target data structures are as follows:
3414    unsigned _novlys;            /# number of overlay sections #/
3415    unsigned _ovly_table[_novlys][4] = {
3416    {VMA, OSIZE, LMA, MAPPED},    /# one entry per overlay section #/
3417    {..., ...,  ..., ...},
3418    }
3419    unsigned _novly_regions;     /# number of overlay regions #/
3420    unsigned _ovly_region_table[_novly_regions][3] = {
3421    {VMA, OSIZE, MAPPED_TO_LMA},  /# one entry per overlay region #/
3422    {..., ...,  ...},
3423    }
3424    These functions will attempt to update GDB's mappedness state in the
3425    symbol section table, based on the target's mappedness state.
3426
3427    To do this, we keep a cached copy of the target's _ovly_table, and
3428    attempt to detect when the cached copy is invalidated.  The main
3429    entry point is "simple_overlay_update(SECT), which looks up SECT in
3430    the cached table and re-reads only the entry for that section from
3431    the target (whenever possible).  */
3432
3433 /* Cached, dynamically allocated copies of the target data structures: */
3434 static unsigned (*cache_ovly_table)[4] = 0;
3435 static unsigned cache_novlys = 0;
3436 static CORE_ADDR cache_ovly_table_base = 0;
3437 enum ovly_index
3438   {
3439     VMA, OSIZE, LMA, MAPPED
3440   };
3441
3442 /* Throw away the cached copy of _ovly_table.  */
3443
3444 static void
3445 simple_free_overlay_table (void)
3446 {
3447   if (cache_ovly_table)
3448     xfree (cache_ovly_table);
3449   cache_novlys = 0;
3450   cache_ovly_table = NULL;
3451   cache_ovly_table_base = 0;
3452 }
3453
3454 /* Read an array of ints of size SIZE from the target into a local buffer.
3455    Convert to host order.  int LEN is number of ints.  */
3456
3457 static void
3458 read_target_long_array (CORE_ADDR memaddr, unsigned int *myaddr,
3459                         int len, int size, enum bfd_endian byte_order)
3460 {
3461   /* FIXME (alloca): Not safe if array is very large.  */
3462   gdb_byte *buf = (gdb_byte *) alloca (len * size);
3463   int i;
3464
3465   read_memory (memaddr, buf, len * size);
3466   for (i = 0; i < len; i++)
3467     myaddr[i] = extract_unsigned_integer (size * i + buf, size, byte_order);
3468 }
3469
3470 /* Find and grab a copy of the target _ovly_table
3471    (and _novlys, which is needed for the table's size).  */
3472
3473 static int
3474 simple_read_overlay_table (void)
3475 {
3476   struct bound_minimal_symbol novlys_msym;
3477   struct bound_minimal_symbol ovly_table_msym;
3478   struct gdbarch *gdbarch;
3479   int word_size;
3480   enum bfd_endian byte_order;
3481
3482   simple_free_overlay_table ();
3483   novlys_msym = lookup_minimal_symbol ("_novlys", NULL, NULL);
3484   if (! novlys_msym.minsym)
3485     {
3486       error (_("Error reading inferior's overlay table: "
3487              "couldn't find `_novlys' variable\n"
3488              "in inferior.  Use `overlay manual' mode."));
3489       return 0;
3490     }
3491
3492   ovly_table_msym = lookup_bound_minimal_symbol ("_ovly_table");
3493   if (! ovly_table_msym.minsym)
3494     {
3495       error (_("Error reading inferior's overlay table: couldn't find "
3496              "`_ovly_table' array\n"
3497              "in inferior.  Use `overlay manual' mode."));
3498       return 0;
3499     }
3500
3501   gdbarch = get_objfile_arch (ovly_table_msym.objfile);
3502   word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3503   byte_order = gdbarch_byte_order (gdbarch);
3504
3505   cache_novlys = read_memory_integer (BMSYMBOL_VALUE_ADDRESS (novlys_msym),
3506                                       4, byte_order);
3507   cache_ovly_table
3508     = (unsigned int (*)[4]) xmalloc (cache_novlys * sizeof (*cache_ovly_table));
3509   cache_ovly_table_base = BMSYMBOL_VALUE_ADDRESS (ovly_table_msym);
3510   read_target_long_array (cache_ovly_table_base,
3511                           (unsigned int *) cache_ovly_table,
3512                           cache_novlys * 4, word_size, byte_order);
3513
3514   return 1;                     /* SUCCESS */
3515 }
3516
3517 /* Function: simple_overlay_update_1
3518    A helper function for simple_overlay_update.  Assuming a cached copy
3519    of _ovly_table exists, look through it to find an entry whose vma,
3520    lma and size match those of OSECT.  Re-read the entry and make sure
3521    it still matches OSECT (else the table may no longer be valid).
3522    Set OSECT's mapped state to match the entry.  Return: 1 for
3523    success, 0 for failure.  */
3524
3525 static int
3526 simple_overlay_update_1 (struct obj_section *osect)
3527 {
3528   int i;
3529   bfd *obfd = osect->objfile->obfd;
3530   asection *bsect = osect->the_bfd_section;
3531   struct gdbarch *gdbarch = get_objfile_arch (osect->objfile);
3532   int word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3533   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
3534
3535   for (i = 0; i < cache_novlys; i++)
3536     if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3537         && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect))
3538       {
3539         read_target_long_array (cache_ovly_table_base + i * word_size,
3540                                 (unsigned int *) cache_ovly_table[i],
3541                                 4, word_size, byte_order);
3542         if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3543             && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect))
3544           {
3545             osect->ovly_mapped = cache_ovly_table[i][MAPPED];
3546             return 1;
3547           }
3548         else    /* Warning!  Warning!  Target's ovly table has changed!  */
3549           return 0;
3550       }
3551   return 0;
3552 }
3553
3554 /* Function: simple_overlay_update
3555    If OSECT is NULL, then update all sections' mapped state
3556    (after re-reading the entire target _ovly_table).
3557    If OSECT is non-NULL, then try to find a matching entry in the
3558    cached ovly_table and update only OSECT's mapped state.
3559    If a cached entry can't be found or the cache isn't valid, then
3560    re-read the entire cache, and go ahead and update all sections.  */
3561
3562 void
3563 simple_overlay_update (struct obj_section *osect)
3564 {
3565   struct objfile *objfile;
3566
3567   /* Were we given an osect to look up?  NULL means do all of them.  */
3568   if (osect)
3569     /* Have we got a cached copy of the target's overlay table?  */
3570     if (cache_ovly_table != NULL)
3571       {
3572         /* Does its cached location match what's currently in the
3573            symtab?  */
3574         struct bound_minimal_symbol minsym
3575           = lookup_minimal_symbol ("_ovly_table", NULL, NULL);
3576
3577         if (minsym.minsym == NULL)
3578           error (_("Error reading inferior's overlay table: couldn't "
3579                    "find `_ovly_table' array\n"
3580                    "in inferior.  Use `overlay manual' mode."));
3581         
3582         if (cache_ovly_table_base == BMSYMBOL_VALUE_ADDRESS (minsym))
3583           /* Then go ahead and try to look up this single section in
3584              the cache.  */
3585           if (simple_overlay_update_1 (osect))
3586             /* Found it!  We're done.  */
3587             return;
3588       }
3589
3590   /* Cached table no good: need to read the entire table anew.
3591      Or else we want all the sections, in which case it's actually
3592      more efficient to read the whole table in one block anyway.  */
3593
3594   if (! simple_read_overlay_table ())
3595     return;
3596
3597   /* Now may as well update all sections, even if only one was requested.  */
3598   ALL_OBJSECTIONS (objfile, osect)
3599     if (section_is_overlay (osect))
3600     {
3601       int i;
3602       bfd *obfd = osect->objfile->obfd;
3603       asection *bsect = osect->the_bfd_section;
3604
3605       for (i = 0; i < cache_novlys; i++)
3606         if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3607             && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect))
3608           { /* obj_section matches i'th entry in ovly_table.  */
3609             osect->ovly_mapped = cache_ovly_table[i][MAPPED];
3610             break;              /* finished with inner for loop: break out.  */
3611           }
3612     }
3613 }
3614
3615 /* Set the output sections and output offsets for section SECTP in
3616    ABFD.  The relocation code in BFD will read these offsets, so we
3617    need to be sure they're initialized.  We map each section to itself,
3618    with no offset; this means that SECTP->vma will be honored.  */
3619
3620 static void
3621 symfile_dummy_outputs (bfd *abfd, asection *sectp, void *dummy)
3622 {
3623   sectp->output_section = sectp;
3624   sectp->output_offset = 0;
3625 }
3626
3627 /* Default implementation for sym_relocate.  */
3628
3629 bfd_byte *
3630 default_symfile_relocate (struct objfile *objfile, asection *sectp,
3631                           bfd_byte *buf)
3632 {
3633   /* Use sectp->owner instead of objfile->obfd.  sectp may point to a
3634      DWO file.  */
3635   bfd *abfd = sectp->owner;
3636
3637   /* We're only interested in sections with relocation
3638      information.  */
3639   if ((sectp->flags & SEC_RELOC) == 0)
3640     return NULL;
3641
3642   /* We will handle section offsets properly elsewhere, so relocate as if
3643      all sections begin at 0.  */
3644   bfd_map_over_sections (abfd, symfile_dummy_outputs, NULL);
3645
3646   return bfd_simple_get_relocated_section_contents (abfd, sectp, buf, NULL);
3647 }
3648
3649 /* Relocate the contents of a debug section SECTP in ABFD.  The
3650    contents are stored in BUF if it is non-NULL, or returned in a
3651    malloc'd buffer otherwise.
3652
3653    For some platforms and debug info formats, shared libraries contain
3654    relocations against the debug sections (particularly for DWARF-2;
3655    one affected platform is PowerPC GNU/Linux, although it depends on
3656    the version of the linker in use).  Also, ELF object files naturally
3657    have unresolved relocations for their debug sections.  We need to apply
3658    the relocations in order to get the locations of symbols correct.
3659    Another example that may require relocation processing, is the
3660    DWARF-2 .eh_frame section in .o files, although it isn't strictly a
3661    debug section.  */
3662
3663 bfd_byte *
3664 symfile_relocate_debug_section (struct objfile *objfile,
3665                                 asection *sectp, bfd_byte *buf)
3666 {
3667   gdb_assert (objfile->sf->sym_relocate);
3668
3669   return (*objfile->sf->sym_relocate) (objfile, sectp, buf);
3670 }
3671
3672 struct symfile_segment_data *
3673 get_symfile_segment_data (bfd *abfd)
3674 {
3675   const struct sym_fns *sf = find_sym_fns (abfd);
3676
3677   if (sf == NULL)
3678     return NULL;
3679
3680   return sf->sym_segments (abfd);
3681 }
3682
3683 void
3684 free_symfile_segment_data (struct symfile_segment_data *data)
3685 {
3686   xfree (data->segment_bases);
3687   xfree (data->segment_sizes);
3688   xfree (data->segment_info);
3689   xfree (data);
3690 }
3691
3692 /* Given:
3693    - DATA, containing segment addresses from the object file ABFD, and
3694      the mapping from ABFD's sections onto the segments that own them,
3695      and
3696    - SEGMENT_BASES[0 .. NUM_SEGMENT_BASES - 1], holding the actual
3697      segment addresses reported by the target,
3698    store the appropriate offsets for each section in OFFSETS.
3699
3700    If there are fewer entries in SEGMENT_BASES than there are segments
3701    in DATA, then apply SEGMENT_BASES' last entry to all the segments.
3702
3703    If there are more entries, then ignore the extra.  The target may
3704    not be able to distinguish between an empty data segment and a
3705    missing data segment; a missing text segment is less plausible.  */
3706
3707 int
3708 symfile_map_offsets_to_segments (bfd *abfd,
3709                                  const struct symfile_segment_data *data,
3710                                  struct section_offsets *offsets,
3711                                  int num_segment_bases,
3712                                  const CORE_ADDR *segment_bases)
3713 {
3714   int i;
3715   asection *sect;
3716
3717   /* It doesn't make sense to call this function unless you have some
3718      segment base addresses.  */
3719   gdb_assert (num_segment_bases > 0);
3720
3721   /* If we do not have segment mappings for the object file, we
3722      can not relocate it by segments.  */
3723   gdb_assert (data != NULL);
3724   gdb_assert (data->num_segments > 0);
3725
3726   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
3727     {
3728       int which = data->segment_info[i];
3729
3730       gdb_assert (0 <= which && which <= data->num_segments);
3731
3732       /* Don't bother computing offsets for sections that aren't
3733          loaded as part of any segment.  */
3734       if (! which)
3735         continue;
3736
3737       /* Use the last SEGMENT_BASES entry as the address of any extra
3738          segments mentioned in DATA->segment_info.  */
3739       if (which > num_segment_bases)
3740         which = num_segment_bases;
3741
3742       offsets->offsets[i] = (segment_bases[which - 1]
3743                              - data->segment_bases[which - 1]);
3744     }
3745
3746   return 1;
3747 }
3748
3749 static void
3750 symfile_find_segment_sections (struct objfile *objfile)
3751 {
3752   bfd *abfd = objfile->obfd;
3753   int i;
3754   asection *sect;
3755   struct symfile_segment_data *data;
3756
3757   data = get_symfile_segment_data (objfile->obfd);
3758   if (data == NULL)
3759     return;
3760
3761   if (data->num_segments != 1 && data->num_segments != 2)
3762     {
3763       free_symfile_segment_data (data);
3764       return;
3765     }
3766
3767   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
3768     {
3769       int which = data->segment_info[i];
3770
3771       if (which == 1)
3772         {
3773           if (objfile->sect_index_text == -1)
3774             objfile->sect_index_text = sect->index;
3775
3776           if (objfile->sect_index_rodata == -1)
3777             objfile->sect_index_rodata = sect->index;
3778         }
3779       else if (which == 2)
3780         {
3781           if (objfile->sect_index_data == -1)
3782             objfile->sect_index_data = sect->index;
3783
3784           if (objfile->sect_index_bss == -1)
3785             objfile->sect_index_bss = sect->index;
3786         }
3787     }
3788
3789   free_symfile_segment_data (data);
3790 }
3791
3792 /* Listen for free_objfile events.  */
3793
3794 static void
3795 symfile_free_objfile (struct objfile *objfile)
3796 {
3797   /* Remove the target sections owned by this objfile.  */
3798   if (objfile != NULL)
3799     remove_target_sections ((void *) objfile);
3800 }
3801
3802 /* Wrapper around the quick_symbol_functions expand_symtabs_matching "method".
3803    Expand all symtabs that match the specified criteria.
3804    See quick_symbol_functions.expand_symtabs_matching for details.  */
3805
3806 void
3807 expand_symtabs_matching
3808   (gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
3809    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
3810    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
3811    enum search_domain kind)
3812 {
3813   struct objfile *objfile;
3814
3815   ALL_OBJFILES (objfile)
3816   {
3817     if (objfile->sf)
3818       objfile->sf->qf->expand_symtabs_matching (objfile, file_matcher,
3819                                                 symbol_matcher,
3820                                                 expansion_notify, kind);
3821   }
3822 }
3823
3824 /* Wrapper around the quick_symbol_functions map_symbol_filenames "method".
3825    Map function FUN over every file.
3826    See quick_symbol_functions.map_symbol_filenames for details.  */
3827
3828 void
3829 map_symbol_filenames (symbol_filename_ftype *fun, void *data,
3830                       int need_fullname)
3831 {
3832   struct objfile *objfile;
3833
3834   ALL_OBJFILES (objfile)
3835   {
3836     if (objfile->sf)
3837       objfile->sf->qf->map_symbol_filenames (objfile, fun, data,
3838                                              need_fullname);
3839   }
3840 }
3841
3842 void
3843 _initialize_symfile (void)
3844 {
3845   struct cmd_list_element *c;
3846
3847   observer_attach_free_objfile (symfile_free_objfile);
3848
3849   c = add_cmd ("symbol-file", class_files, symbol_file_command, _("\
3850 Load symbol table from executable file FILE.\n\
3851 The `file' command can also load symbol tables, as well as setting the file\n\
3852 to execute."), &cmdlist);
3853   set_cmd_completer (c, filename_completer);
3854
3855   c = add_cmd ("add-symbol-file", class_files, add_symbol_file_command, _("\
3856 Load symbols from FILE, assuming FILE has been dynamically loaded.\n\
3857 Usage: add-symbol-file FILE ADDR [-s <SECT> <SECT_ADDR> -s <SECT> <SECT_ADDR>\
3858  ...]\nADDR is the starting address of the file's text.\n\
3859 The optional arguments are section-name section-address pairs and\n\
3860 should be specified if the data and bss segments are not contiguous\n\
3861 with the text.  SECT is a section name to be loaded at SECT_ADDR."),
3862                &cmdlist);
3863   set_cmd_completer (c, filename_completer);
3864
3865   c = add_cmd ("remove-symbol-file", class_files,
3866                remove_symbol_file_command, _("\
3867 Remove a symbol file added via the add-symbol-file command.\n\
3868 Usage: remove-symbol-file FILENAME\n\
3869        remove-symbol-file -a ADDRESS\n\
3870 The file to remove can be identified by its filename or by an address\n\
3871 that lies within the boundaries of this symbol file in memory."),
3872                &cmdlist);
3873
3874   c = add_cmd ("load", class_files, load_command, _("\
3875 Dynamically load FILE into the running program, and record its symbols\n\
3876 for access from GDB.\n\
3877 An optional load OFFSET may also be given as a literal address.\n\
3878 When OFFSET is provided, FILE must also be provided.  FILE can be provided\n\
3879 on its own.\n\
3880 Usage: load [FILE] [OFFSET]"), &cmdlist);
3881   set_cmd_completer (c, filename_completer);
3882
3883   add_prefix_cmd ("overlay", class_support, overlay_command,
3884                   _("Commands for debugging overlays."), &overlaylist,
3885                   "overlay ", 0, &cmdlist);
3886
3887   add_com_alias ("ovly", "overlay", class_alias, 1);
3888   add_com_alias ("ov", "overlay", class_alias, 1);
3889
3890   add_cmd ("map-overlay", class_support, map_overlay_command,
3891            _("Assert that an overlay section is mapped."), &overlaylist);
3892
3893   add_cmd ("unmap-overlay", class_support, unmap_overlay_command,
3894            _("Assert that an overlay section is unmapped."), &overlaylist);
3895
3896   add_cmd ("list-overlays", class_support, list_overlays_command,
3897            _("List mappings of overlay sections."), &overlaylist);
3898
3899   add_cmd ("manual", class_support, overlay_manual_command,
3900            _("Enable overlay debugging."), &overlaylist);
3901   add_cmd ("off", class_support, overlay_off_command,
3902            _("Disable overlay debugging."), &overlaylist);
3903   add_cmd ("auto", class_support, overlay_auto_command,
3904            _("Enable automatic overlay debugging."), &overlaylist);
3905   add_cmd ("load-target", class_support, overlay_load_command,
3906            _("Read the overlay mapping state from the target."), &overlaylist);
3907
3908   /* Filename extension to source language lookup table: */
3909   add_setshow_string_noescape_cmd ("extension-language", class_files,
3910                                    &ext_args, _("\
3911 Set mapping between filename extension and source language."), _("\
3912 Show mapping between filename extension and source language."), _("\
3913 Usage: set extension-language .foo bar"),
3914                                    set_ext_lang_command,
3915                                    show_ext_args,
3916                                    &setlist, &showlist);
3917
3918   add_info ("extensions", info_ext_lang_command,
3919             _("All filename extensions associated with a source language."));
3920
3921   add_setshow_optional_filename_cmd ("debug-file-directory", class_support,
3922                                      &debug_file_directory, _("\
3923 Set the directories where separate debug symbols are searched for."), _("\
3924 Show the directories where separate debug symbols are searched for."), _("\
3925 Separate debug symbols are first searched for in the same\n\
3926 directory as the binary, then in the `" DEBUG_SUBDIRECTORY "' subdirectory,\n\
3927 and lastly at the path of the directory of the binary with\n\
3928 each global debug-file-directory component prepended."),
3929                                      NULL,
3930                                      show_debug_file_directory,
3931                                      &setlist, &showlist);
3932
3933   add_setshow_enum_cmd ("symbol-loading", no_class,
3934                         print_symbol_loading_enums, &print_symbol_loading,
3935                         _("\
3936 Set printing of symbol loading messages."), _("\
3937 Show printing of symbol loading messages."), _("\
3938 off   == turn all messages off\n\
3939 brief == print messages for the executable,\n\
3940          and brief messages for shared libraries\n\
3941 full  == print messages for the executable,\n\
3942          and messages for each shared library."),
3943                         NULL,
3944                         NULL,
3945                         &setprintlist, &showprintlist);
3946
3947   add_setshow_boolean_cmd ("separate-debug-file", no_class,
3948                            &separate_debug_file_debug, _("\
3949 Set printing of separate debug info file search debug."), _("\
3950 Show printing of separate debug info file search debug."), _("\
3951 When on, GDB prints the searched locations while looking for separate debug \
3952 info files."), NULL, NULL, &setdebuglist, &showdebuglist);
3953 }