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