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