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