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