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