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