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