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