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