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