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