47e05b1aba3bef94617654f58802355d7ffe35a0
[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_objfile (objfile);
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               /* FIXME: Do we have to free a whole linked list, or is this
2340                  enough?  */
2341               if (objfile->global_psymbols.list)
2342                 xfree (objfile->global_psymbols.list);
2343               memset (&objfile->global_psymbols, 0,
2344                       sizeof (objfile->global_psymbols));
2345               if (objfile->static_psymbols.list)
2346                 xfree (objfile->static_psymbols.list);
2347               memset (&objfile->static_psymbols, 0,
2348                       sizeof (objfile->static_psymbols));
2349
2350               /* Free the obstacks for non-reusable objfiles */
2351               bcache_xfree (objfile->psymbol_cache);
2352               objfile->psymbol_cache = bcache_xmalloc ();
2353               bcache_xfree (objfile->macro_cache);
2354               objfile->macro_cache = bcache_xmalloc ();
2355               if (objfile->demangled_names_hash != NULL)
2356                 {
2357                   htab_delete (objfile->demangled_names_hash);
2358                   objfile->demangled_names_hash = NULL;
2359                 }
2360               obstack_free (&objfile->objfile_obstack, 0);
2361               objfile->sections = NULL;
2362               objfile->symtabs = NULL;
2363               objfile->psymtabs = NULL;
2364               objfile->psymtabs_addrmap = NULL;
2365               objfile->free_psymtabs = NULL;
2366               objfile->cp_namespace_symtab = NULL;
2367               objfile->msymbols = NULL;
2368               objfile->deprecated_sym_private = NULL;
2369               objfile->minimal_symbol_count = 0;
2370               memset (&objfile->msymbol_hash, 0,
2371                       sizeof (objfile->msymbol_hash));
2372               memset (&objfile->msymbol_demangled_hash, 0,
2373                       sizeof (objfile->msymbol_demangled_hash));
2374               clear_objfile_data (objfile);
2375               if (objfile->sf != NULL)
2376                 {
2377                   (*objfile->sf->sym_finish) (objfile);
2378                 }
2379
2380               objfile->psymbol_cache = bcache_xmalloc ();
2381               objfile->macro_cache = bcache_xmalloc ();
2382               /* obstack_init also initializes the obstack so it is
2383                  empty.  We could use obstack_specify_allocation but
2384                  gdb_obstack.h specifies the alloc/dealloc
2385                  functions.  */
2386               obstack_init (&objfile->objfile_obstack);
2387               if (build_objfile_section_table (objfile))
2388                 {
2389                   error (_("Can't find the file sections in `%s': %s"),
2390                          objfile->name, bfd_errmsg (bfd_get_error ()));
2391                 }
2392               terminate_minimal_symbol_table (objfile);
2393
2394               /* We use the same section offsets as from last time.  I'm not
2395                  sure whether that is always correct for shared libraries.  */
2396               objfile->section_offsets = (struct section_offsets *)
2397                 obstack_alloc (&objfile->objfile_obstack,
2398                                SIZEOF_N_SECTION_OFFSETS (num_offsets));
2399               memcpy (objfile->section_offsets, offsets,
2400                       SIZEOF_N_SECTION_OFFSETS (num_offsets));
2401               objfile->num_sections = num_offsets;
2402
2403               /* What the hell is sym_new_init for, anyway?  The concept of
2404                  distinguishing between the main file and additional files
2405                  in this way seems rather dubious.  */
2406               if (objfile == symfile_objfile)
2407                 {
2408                   (*objfile->sf->sym_new_init) (objfile);
2409                 }
2410
2411               (*objfile->sf->sym_init) (objfile);
2412               clear_complaints (&symfile_complaints, 1, 1);
2413               /* The "mainline" parameter is a hideous hack; I think leaving it
2414                  zero is OK since dbxread.c also does what it needs to do if
2415                  objfile->global_psymbols.size is 0.  */
2416               (*objfile->sf->sym_read) (objfile, 0);
2417               if (!have_partial_symbols () && !have_full_symbols ())
2418                 {
2419                   wrap_here ("");
2420                   printf_unfiltered (_("(no debugging symbols found)\n"));
2421                   wrap_here ("");
2422                 }
2423
2424               /* We're done reading the symbol file; finish off complaints.  */
2425               clear_complaints (&symfile_complaints, 0, 1);
2426
2427               /* Getting new symbols may change our opinion about what is
2428                  frameless.  */
2429
2430               reinit_frame_cache ();
2431
2432               /* Discard cleanups as symbol reading was successful.  */
2433               discard_cleanups (old_cleanups);
2434
2435               /* If the mtime has changed between the time we set new_modtime
2436                  and now, we *want* this to be out of date, so don't call stat
2437                  again now.  */
2438               objfile->mtime = new_modtime;
2439               reread_one = 1;
2440               reread_separate_symbols (objfile);
2441               init_entry_point_info (objfile);
2442             }
2443         }
2444     }
2445
2446   if (reread_one)
2447     {
2448       clear_symtab_users ();
2449       /* At least one objfile has changed, so we can consider that
2450          the executable we're debugging has changed too.  */
2451       observer_notify_executable_changed ();
2452     }
2453       
2454 }
2455
2456
2457 /* Handle separate debug info for OBJFILE, which has just been
2458    re-read:
2459    - If we had separate debug info before, but now we don't, get rid
2460      of the separated objfile.
2461    - If we didn't have separated debug info before, but now we do,
2462      read in the new separated debug info file.
2463    - If the debug link points to a different file, toss the old one
2464      and read the new one.
2465    This function does *not* handle the case where objfile is still
2466    using the same separate debug info file, but that file's timestamp
2467    has changed.  That case should be handled by the loop in
2468    reread_symbols already.  */
2469 static void
2470 reread_separate_symbols (struct objfile *objfile)
2471 {
2472   char *debug_file;
2473   unsigned long crc32;
2474
2475   /* Does the updated objfile's debug info live in a
2476      separate file?  */
2477   debug_file = find_separate_debug_file (objfile);
2478
2479   if (objfile->separate_debug_objfile)
2480     {
2481       /* There are two cases where we need to get rid of
2482          the old separated debug info objfile:
2483          - if the new primary objfile doesn't have
2484          separated debug info, or
2485          - if the new primary objfile has separate debug
2486          info, but it's under a different filename.
2487
2488          If the old and new objfiles both have separate
2489          debug info, under the same filename, then we're
2490          okay --- if the separated file's contents have
2491          changed, we will have caught that when we
2492          visited it in this function's outermost
2493          loop.  */
2494       if (! debug_file
2495           || strcmp (debug_file, objfile->separate_debug_objfile->name) != 0)
2496         free_objfile (objfile->separate_debug_objfile);
2497     }
2498
2499   /* If the new objfile has separate debug info, and we
2500      haven't loaded it already, do so now.  */
2501   if (debug_file
2502       && ! objfile->separate_debug_objfile)
2503     {
2504       /* Use the same section offset table as objfile itself.
2505          Preserve the flags from objfile that make sense.  */
2506       objfile->separate_debug_objfile
2507         = (symbol_file_add_with_addrs_or_offsets
2508            (symfile_bfd_open (debug_file),
2509             info_verbose ? SYMFILE_VERBOSE : 0,
2510             0, /* No addr table.  */
2511             objfile->section_offsets, objfile->num_sections,
2512             objfile->flags & (OBJF_REORDERED | OBJF_SHARED | OBJF_READNOW
2513                               | OBJF_USERLOADED)));
2514       objfile->separate_debug_objfile->separate_debug_objfile_backlink
2515         = objfile;
2516     }
2517   if (debug_file)
2518     xfree (debug_file);
2519 }
2520
2521
2522 \f
2523
2524
2525 typedef struct
2526 {
2527   char *ext;
2528   enum language lang;
2529 }
2530 filename_language;
2531
2532 static filename_language *filename_language_table;
2533 static int fl_table_size, fl_table_next;
2534
2535 static void
2536 add_filename_language (char *ext, enum language lang)
2537 {
2538   if (fl_table_next >= fl_table_size)
2539     {
2540       fl_table_size += 10;
2541       filename_language_table =
2542         xrealloc (filename_language_table,
2543                   fl_table_size * sizeof (*filename_language_table));
2544     }
2545
2546   filename_language_table[fl_table_next].ext = xstrdup (ext);
2547   filename_language_table[fl_table_next].lang = lang;
2548   fl_table_next++;
2549 }
2550
2551 static char *ext_args;
2552 static void
2553 show_ext_args (struct ui_file *file, int from_tty,
2554                struct cmd_list_element *c, const char *value)
2555 {
2556   fprintf_filtered (file, _("\
2557 Mapping between filename extension and source language is \"%s\".\n"),
2558                     value);
2559 }
2560
2561 static void
2562 set_ext_lang_command (char *args, int from_tty, struct cmd_list_element *e)
2563 {
2564   int i;
2565   char *cp = ext_args;
2566   enum language lang;
2567
2568   /* First arg is filename extension, starting with '.' */
2569   if (*cp != '.')
2570     error (_("'%s': Filename extension must begin with '.'"), ext_args);
2571
2572   /* Find end of first arg.  */
2573   while (*cp && !isspace (*cp))
2574     cp++;
2575
2576   if (*cp == '\0')
2577     error (_("'%s': two arguments required -- filename extension and language"),
2578            ext_args);
2579
2580   /* Null-terminate first arg */
2581   *cp++ = '\0';
2582
2583   /* Find beginning of second arg, which should be a source language.  */
2584   while (*cp && isspace (*cp))
2585     cp++;
2586
2587   if (*cp == '\0')
2588     error (_("'%s': two arguments required -- filename extension and language"),
2589            ext_args);
2590
2591   /* Lookup the language from among those we know.  */
2592   lang = language_enum (cp);
2593
2594   /* Now lookup the filename extension: do we already know it?  */
2595   for (i = 0; i < fl_table_next; i++)
2596     if (0 == strcmp (ext_args, filename_language_table[i].ext))
2597       break;
2598
2599   if (i >= fl_table_next)
2600     {
2601       /* new file extension */
2602       add_filename_language (ext_args, lang);
2603     }
2604   else
2605     {
2606       /* redefining a previously known filename extension */
2607
2608       /* if (from_tty) */
2609       /*   query ("Really make files of type %s '%s'?", */
2610       /*          ext_args, language_str (lang));           */
2611
2612       xfree (filename_language_table[i].ext);
2613       filename_language_table[i].ext = xstrdup (ext_args);
2614       filename_language_table[i].lang = lang;
2615     }
2616 }
2617
2618 static void
2619 info_ext_lang_command (char *args, int from_tty)
2620 {
2621   int i;
2622
2623   printf_filtered (_("Filename extensions and the languages they represent:"));
2624   printf_filtered ("\n\n");
2625   for (i = 0; i < fl_table_next; i++)
2626     printf_filtered ("\t%s\t- %s\n",
2627                      filename_language_table[i].ext,
2628                      language_str (filename_language_table[i].lang));
2629 }
2630
2631 static void
2632 init_filename_language_table (void)
2633 {
2634   if (fl_table_size == 0)       /* protect against repetition */
2635     {
2636       fl_table_size = 20;
2637       fl_table_next = 0;
2638       filename_language_table =
2639         xmalloc (fl_table_size * sizeof (*filename_language_table));
2640       add_filename_language (".c", language_c);
2641       add_filename_language (".C", language_cplus);
2642       add_filename_language (".cc", language_cplus);
2643       add_filename_language (".cp", language_cplus);
2644       add_filename_language (".cpp", language_cplus);
2645       add_filename_language (".cxx", language_cplus);
2646       add_filename_language (".c++", language_cplus);
2647       add_filename_language (".java", language_java);
2648       add_filename_language (".class", language_java);
2649       add_filename_language (".m", language_objc);
2650       add_filename_language (".f", language_fortran);
2651       add_filename_language (".F", language_fortran);
2652       add_filename_language (".s", language_asm);
2653       add_filename_language (".sx", language_asm);
2654       add_filename_language (".S", language_asm);
2655       add_filename_language (".pas", language_pascal);
2656       add_filename_language (".p", language_pascal);
2657       add_filename_language (".pp", language_pascal);
2658       add_filename_language (".adb", language_ada);
2659       add_filename_language (".ads", language_ada);
2660       add_filename_language (".a", language_ada);
2661       add_filename_language (".ada", language_ada);
2662     }
2663 }
2664
2665 enum language
2666 deduce_language_from_filename (char *filename)
2667 {
2668   int i;
2669   char *cp;
2670
2671   if (filename != NULL)
2672     if ((cp = strrchr (filename, '.')) != NULL)
2673       for (i = 0; i < fl_table_next; i++)
2674         if (strcmp (cp, filename_language_table[i].ext) == 0)
2675           return filename_language_table[i].lang;
2676
2677   return language_unknown;
2678 }
2679 \f
2680 /* allocate_symtab:
2681
2682    Allocate and partly initialize a new symbol table.  Return a pointer
2683    to it.  error() if no space.
2684
2685    Caller must set these fields:
2686    LINETABLE(symtab)
2687    symtab->blockvector
2688    symtab->dirname
2689    symtab->free_code
2690    symtab->free_ptr
2691    possibly free_named_symtabs (symtab->filename);
2692  */
2693
2694 struct symtab *
2695 allocate_symtab (char *filename, struct objfile *objfile)
2696 {
2697   struct symtab *symtab;
2698
2699   symtab = (struct symtab *)
2700     obstack_alloc (&objfile->objfile_obstack, sizeof (struct symtab));
2701   memset (symtab, 0, sizeof (*symtab));
2702   symtab->filename = obsavestring (filename, strlen (filename),
2703                                    &objfile->objfile_obstack);
2704   symtab->fullname = NULL;
2705   symtab->language = deduce_language_from_filename (filename);
2706   symtab->debugformat = obsavestring ("unknown", 7,
2707                                       &objfile->objfile_obstack);
2708
2709   /* Hook it to the objfile it comes from */
2710
2711   symtab->objfile = objfile;
2712   symtab->next = objfile->symtabs;
2713   objfile->symtabs = symtab;
2714
2715   return (symtab);
2716 }
2717
2718 struct partial_symtab *
2719 allocate_psymtab (char *filename, struct objfile *objfile)
2720 {
2721   struct partial_symtab *psymtab;
2722
2723   if (objfile->free_psymtabs)
2724     {
2725       psymtab = objfile->free_psymtabs;
2726       objfile->free_psymtabs = psymtab->next;
2727     }
2728   else
2729     psymtab = (struct partial_symtab *)
2730       obstack_alloc (&objfile->objfile_obstack,
2731                      sizeof (struct partial_symtab));
2732
2733   memset (psymtab, 0, sizeof (struct partial_symtab));
2734   psymtab->filename = obsavestring (filename, strlen (filename),
2735                                     &objfile->objfile_obstack);
2736   psymtab->symtab = NULL;
2737
2738   /* Prepend it to the psymtab list for the objfile it belongs to.
2739      Psymtabs are searched in most recent inserted -> least recent
2740      inserted order. */
2741
2742   psymtab->objfile = objfile;
2743   psymtab->next = objfile->psymtabs;
2744   objfile->psymtabs = psymtab;
2745 #if 0
2746   {
2747     struct partial_symtab **prev_pst;
2748     psymtab->objfile = objfile;
2749     psymtab->next = NULL;
2750     prev_pst = &(objfile->psymtabs);
2751     while ((*prev_pst) != NULL)
2752       prev_pst = &((*prev_pst)->next);
2753     (*prev_pst) = psymtab;
2754   }
2755 #endif
2756
2757   return (psymtab);
2758 }
2759
2760 void
2761 discard_psymtab (struct partial_symtab *pst)
2762 {
2763   struct partial_symtab **prev_pst;
2764
2765   /* From dbxread.c:
2766      Empty psymtabs happen as a result of header files which don't
2767      have any symbols in them.  There can be a lot of them.  But this
2768      check is wrong, in that a psymtab with N_SLINE entries but
2769      nothing else is not empty, but we don't realize that.  Fixing
2770      that without slowing things down might be tricky.  */
2771
2772   /* First, snip it out of the psymtab chain */
2773
2774   prev_pst = &(pst->objfile->psymtabs);
2775   while ((*prev_pst) != pst)
2776     prev_pst = &((*prev_pst)->next);
2777   (*prev_pst) = pst->next;
2778
2779   /* Next, put it on a free list for recycling */
2780
2781   pst->next = pst->objfile->free_psymtabs;
2782   pst->objfile->free_psymtabs = pst;
2783 }
2784 \f
2785
2786 /* Reset all data structures in gdb which may contain references to symbol
2787    table data.  */
2788
2789 void
2790 clear_symtab_users (void)
2791 {
2792   /* Someday, we should do better than this, by only blowing away
2793      the things that really need to be blown.  */
2794
2795   /* Clear the "current" symtab first, because it is no longer valid.
2796      breakpoint_re_set may try to access the current symtab.  */
2797   clear_current_source_symtab_and_line ();
2798
2799   clear_displays ();
2800   breakpoint_re_set ();
2801   set_default_breakpoint (0, 0, 0, 0);
2802   clear_pc_function_cache ();
2803   observer_notify_new_objfile (NULL);
2804
2805   /* Clear globals which might have pointed into a removed objfile.
2806      FIXME: It's not clear which of these are supposed to persist
2807      between expressions and which ought to be reset each time.  */
2808   expression_context_block = NULL;
2809   innermost_block = NULL;
2810
2811   /* Varobj may refer to old symbols, perform a cleanup.  */
2812   varobj_invalidate ();
2813
2814 }
2815
2816 static void
2817 clear_symtab_users_cleanup (void *ignore)
2818 {
2819   clear_symtab_users ();
2820 }
2821
2822 /* clear_symtab_users_once:
2823
2824    This function is run after symbol reading, or from a cleanup.
2825    If an old symbol table was obsoleted, the old symbol table
2826    has been blown away, but the other GDB data structures that may
2827    reference it have not yet been cleared or re-directed.  (The old
2828    symtab was zapped, and the cleanup queued, in free_named_symtab()
2829    below.)
2830
2831    This function can be queued N times as a cleanup, or called
2832    directly; it will do all the work the first time, and then will be a
2833    no-op until the next time it is queued.  This works by bumping a
2834    counter at queueing time.  Much later when the cleanup is run, or at
2835    the end of symbol processing (in case the cleanup is discarded), if
2836    the queued count is greater than the "done-count", we do the work
2837    and set the done-count to the queued count.  If the queued count is
2838    less than or equal to the done-count, we just ignore the call.  This
2839    is needed because reading a single .o file will often replace many
2840    symtabs (one per .h file, for example), and we don't want to reset
2841    the breakpoints N times in the user's face.
2842
2843    The reason we both queue a cleanup, and call it directly after symbol
2844    reading, is because the cleanup protects us in case of errors, but is
2845    discarded if symbol reading is successful.  */
2846
2847 #if 0
2848 /* FIXME:  As free_named_symtabs is currently a big noop this function
2849    is no longer needed.  */
2850 static void clear_symtab_users_once (void);
2851
2852 static int clear_symtab_users_queued;
2853 static int clear_symtab_users_done;
2854
2855 static void
2856 clear_symtab_users_once (void)
2857 {
2858   /* Enforce once-per-`do_cleanups'-semantics */
2859   if (clear_symtab_users_queued <= clear_symtab_users_done)
2860     return;
2861   clear_symtab_users_done = clear_symtab_users_queued;
2862
2863   clear_symtab_users ();
2864 }
2865 #endif
2866
2867 /* Delete the specified psymtab, and any others that reference it.  */
2868
2869 static void
2870 cashier_psymtab (struct partial_symtab *pst)
2871 {
2872   struct partial_symtab *ps, *pprev = NULL;
2873   int i;
2874
2875   /* Find its previous psymtab in the chain */
2876   for (ps = pst->objfile->psymtabs; ps; ps = ps->next)
2877     {
2878       if (ps == pst)
2879         break;
2880       pprev = ps;
2881     }
2882
2883   if (ps)
2884     {
2885       /* Unhook it from the chain.  */
2886       if (ps == pst->objfile->psymtabs)
2887         pst->objfile->psymtabs = ps->next;
2888       else
2889         pprev->next = ps->next;
2890
2891       /* FIXME, we can't conveniently deallocate the entries in the
2892          partial_symbol lists (global_psymbols/static_psymbols) that
2893          this psymtab points to.  These just take up space until all
2894          the psymtabs are reclaimed.  Ditto the dependencies list and
2895          filename, which are all in the objfile_obstack.  */
2896
2897       /* We need to cashier any psymtab that has this one as a dependency... */
2898     again:
2899       for (ps = pst->objfile->psymtabs; ps; ps = ps->next)
2900         {
2901           for (i = 0; i < ps->number_of_dependencies; i++)
2902             {
2903               if (ps->dependencies[i] == pst)
2904                 {
2905                   cashier_psymtab (ps);
2906                   goto again;   /* Must restart, chain has been munged. */
2907                 }
2908             }
2909         }
2910     }
2911 }
2912
2913 /* If a symtab or psymtab for filename NAME is found, free it along
2914    with any dependent breakpoints, displays, etc.
2915    Used when loading new versions of object modules with the "add-file"
2916    command.  This is only called on the top-level symtab or psymtab's name;
2917    it is not called for subsidiary files such as .h files.
2918
2919    Return value is 1 if we blew away the environment, 0 if not.
2920    FIXME.  The return value appears to never be used.
2921
2922    FIXME.  I think this is not the best way to do this.  We should
2923    work on being gentler to the environment while still cleaning up
2924    all stray pointers into the freed symtab.  */
2925
2926 int
2927 free_named_symtabs (char *name)
2928 {
2929 #if 0
2930   /* FIXME:  With the new method of each objfile having it's own
2931      psymtab list, this function needs serious rethinking.  In particular,
2932      why was it ever necessary to toss psymtabs with specific compilation
2933      unit filenames, as opposed to all psymtabs from a particular symbol
2934      file?  -- fnf
2935      Well, the answer is that some systems permit reloading of particular
2936      compilation units.  We want to blow away any old info about these
2937      compilation units, regardless of which objfiles they arrived in. --gnu.  */
2938
2939   struct symtab *s;
2940   struct symtab *prev;
2941   struct partial_symtab *ps;
2942   struct blockvector *bv;
2943   int blewit = 0;
2944
2945   /* We only wack things if the symbol-reload switch is set.  */
2946   if (!symbol_reloading)
2947     return 0;
2948
2949   /* Some symbol formats have trouble providing file names... */
2950   if (name == 0 || *name == '\0')
2951     return 0;
2952
2953   /* Look for a psymtab with the specified name.  */
2954
2955 again2:
2956   for (ps = partial_symtab_list; ps; ps = ps->next)
2957     {
2958       if (strcmp (name, ps->filename) == 0)
2959         {
2960           cashier_psymtab (ps); /* Blow it away...and its little dog, too.  */
2961           goto again2;          /* Must restart, chain has been munged */
2962         }
2963     }
2964
2965   /* Look for a symtab with the specified name.  */
2966
2967   for (s = symtab_list; s; s = s->next)
2968     {
2969       if (strcmp (name, s->filename) == 0)
2970         break;
2971       prev = s;
2972     }
2973
2974   if (s)
2975     {
2976       if (s == symtab_list)
2977         symtab_list = s->next;
2978       else
2979         prev->next = s->next;
2980
2981       /* For now, queue a delete for all breakpoints, displays, etc., whether
2982          or not they depend on the symtab being freed.  This should be
2983          changed so that only those data structures affected are deleted.  */
2984
2985       /* But don't delete anything if the symtab is empty.
2986          This test is necessary due to a bug in "dbxread.c" that
2987          causes empty symtabs to be created for N_SO symbols that
2988          contain the pathname of the object file.  (This problem
2989          has been fixed in GDB 3.9x).  */
2990
2991       bv = BLOCKVECTOR (s);
2992       if (BLOCKVECTOR_NBLOCKS (bv) > 2
2993           || BLOCK_NSYMS (BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK))
2994           || BLOCK_NSYMS (BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK)))
2995         {
2996           complaint (&symfile_complaints, _("Replacing old symbols for `%s'"),
2997                      name);
2998           clear_symtab_users_queued++;
2999           make_cleanup (clear_symtab_users_once, 0);
3000           blewit = 1;
3001         }
3002       else
3003         complaint (&symfile_complaints, _("Empty symbol table found for `%s'"),
3004                    name);
3005
3006       free_symtab (s);
3007     }
3008   else
3009     {
3010       /* It is still possible that some breakpoints will be affected
3011          even though no symtab was found, since the file might have
3012          been compiled without debugging, and hence not be associated
3013          with a symtab.  In order to handle this correctly, we would need
3014          to keep a list of text address ranges for undebuggable files.
3015          For now, we do nothing, since this is a fairly obscure case.  */
3016       ;
3017     }
3018
3019   /* FIXME, what about the minimal symbol table? */
3020   return blewit;
3021 #else
3022   return (0);
3023 #endif
3024 }
3025 \f
3026 /* Allocate and partially fill a partial symtab.  It will be
3027    completely filled at the end of the symbol list.
3028
3029    FILENAME is the name of the symbol-file we are reading from. */
3030
3031 struct partial_symtab *
3032 start_psymtab_common (struct objfile *objfile,
3033                       struct section_offsets *section_offsets, char *filename,
3034                       CORE_ADDR textlow, struct partial_symbol **global_syms,
3035                       struct partial_symbol **static_syms)
3036 {
3037   struct partial_symtab *psymtab;
3038
3039   psymtab = allocate_psymtab (filename, objfile);
3040   psymtab->section_offsets = section_offsets;
3041   psymtab->textlow = textlow;
3042   psymtab->texthigh = psymtab->textlow;         /* default */
3043   psymtab->globals_offset = global_syms - objfile->global_psymbols.list;
3044   psymtab->statics_offset = static_syms - objfile->static_psymbols.list;
3045   return (psymtab);
3046 }
3047 \f
3048 /* Helper function, initialises partial symbol structure and stashes 
3049    it into objfile's bcache.  Note that our caching mechanism will
3050    use all fields of struct partial_symbol to determine hash value of the
3051    structure.  In other words, having two symbols with the same name but
3052    different domain (or address) is possible and correct.  */
3053
3054 static const struct partial_symbol *
3055 add_psymbol_to_bcache (char *name, int namelength, domain_enum domain,
3056                        enum address_class class,
3057                        long val,        /* Value as a long */
3058                        CORE_ADDR coreaddr,      /* Value as a CORE_ADDR */
3059                        enum language language, struct objfile *objfile,
3060                        int *added)
3061 {
3062   char *buf = name;  
3063   /* psymbol is static so that there will be no uninitialized gaps in the
3064      structure which might contain random data, causing cache misses in
3065      bcache. */
3066   static struct partial_symbol psymbol;
3067   
3068   if (name[namelength] != '\0')
3069     {
3070       buf = alloca (namelength + 1);
3071       /* Create local copy of the partial symbol */
3072       memcpy (buf, name, namelength);
3073       buf[namelength] = '\0';
3074     }
3075   /* val and coreaddr are mutually exclusive, one of them *will* be zero */
3076   if (val != 0)
3077     {
3078       SYMBOL_VALUE (&psymbol) = val;
3079     }
3080   else
3081     {
3082       SYMBOL_VALUE_ADDRESS (&psymbol) = coreaddr;
3083     }
3084   SYMBOL_SECTION (&psymbol) = 0;
3085   SYMBOL_LANGUAGE (&psymbol) = language;
3086   PSYMBOL_DOMAIN (&psymbol) = domain;
3087   PSYMBOL_CLASS (&psymbol) = class;
3088
3089   SYMBOL_SET_NAMES (&psymbol, buf, namelength, objfile);
3090
3091   /* Stash the partial symbol away in the cache */
3092   return bcache_full (&psymbol, sizeof (struct partial_symbol),
3093                       objfile->psymbol_cache, added);
3094 }
3095
3096 /* Helper function, adds partial symbol to the given partial symbol
3097    list.  */
3098
3099 static void
3100 append_psymbol_to_list (struct psymbol_allocation_list *list,
3101                         const struct partial_symbol *psym,
3102                         struct objfile *objfile)
3103 {
3104   if (list->next >= list->list + list->size)
3105     extend_psymbol_list (list, objfile);
3106   *list->next++ = (struct partial_symbol *) psym;
3107   OBJSTAT (objfile, n_psyms++);
3108 }
3109
3110 /* Add a symbol with a long value to a psymtab.
3111    Since one arg is a struct, we pass in a ptr and deref it (sigh).
3112    Return the partial symbol that has been added.  */
3113
3114 /* NOTE: carlton/2003-09-11: The reason why we return the partial
3115    symbol is so that callers can get access to the symbol's demangled
3116    name, which they don't have any cheap way to determine otherwise.
3117    (Currenly, dwarf2read.c is the only file who uses that information,
3118    though it's possible that other readers might in the future.)
3119    Elena wasn't thrilled about that, and I don't blame her, but we
3120    couldn't come up with a better way to get that information.  If
3121    it's needed in other situations, we could consider breaking up
3122    SYMBOL_SET_NAMES to provide access to the demangled name lookup
3123    cache.  */
3124
3125 const struct partial_symbol *
3126 add_psymbol_to_list (char *name, int namelength, domain_enum domain,
3127                      enum address_class class,
3128                      struct psymbol_allocation_list *list, 
3129                      long val,  /* Value as a long */
3130                      CORE_ADDR coreaddr,        /* Value as a CORE_ADDR */
3131                      enum language language, struct objfile *objfile)
3132 {
3133   const struct partial_symbol *psym;
3134
3135   int added;
3136
3137   /* Stash the partial symbol away in the cache */
3138   psym = add_psymbol_to_bcache (name, namelength, domain, class,
3139                                 val, coreaddr, language, objfile, &added);
3140
3141   /* Do not duplicate global partial symbols.  */
3142   if (list == &objfile->global_psymbols
3143       && !added)
3144     return psym;
3145
3146   /* Save pointer to partial symbol in psymtab, growing symtab if needed. */
3147   append_psymbol_to_list (list, psym, objfile);
3148   return psym;
3149 }
3150
3151 /* Initialize storage for partial symbols.  */
3152
3153 void
3154 init_psymbol_list (struct objfile *objfile, int total_symbols)
3155 {
3156   /* Free any previously allocated psymbol lists.  */
3157
3158   if (objfile->global_psymbols.list)
3159     {
3160       xfree (objfile->global_psymbols.list);
3161     }
3162   if (objfile->static_psymbols.list)
3163     {
3164       xfree (objfile->static_psymbols.list);
3165     }
3166
3167   /* Current best guess is that approximately a twentieth
3168      of the total symbols (in a debugging file) are global or static
3169      oriented symbols */
3170
3171   objfile->global_psymbols.size = total_symbols / 10;
3172   objfile->static_psymbols.size = total_symbols / 10;
3173
3174   if (objfile->global_psymbols.size > 0)
3175     {
3176       objfile->global_psymbols.next =
3177         objfile->global_psymbols.list = (struct partial_symbol **)
3178         xmalloc ((objfile->global_psymbols.size
3179                   * sizeof (struct partial_symbol *)));
3180     }
3181   if (objfile->static_psymbols.size > 0)
3182     {
3183       objfile->static_psymbols.next =
3184         objfile->static_psymbols.list = (struct partial_symbol **)
3185         xmalloc ((objfile->static_psymbols.size
3186                   * sizeof (struct partial_symbol *)));
3187     }
3188 }
3189
3190 /* OVERLAYS:
3191    The following code implements an abstraction for debugging overlay sections.
3192
3193    The target model is as follows:
3194    1) The gnu linker will permit multiple sections to be mapped into the
3195    same VMA, each with its own unique LMA (or load address).
3196    2) It is assumed that some runtime mechanism exists for mapping the
3197    sections, one by one, from the load address into the VMA address.
3198    3) This code provides a mechanism for gdb to keep track of which
3199    sections should be considered to be mapped from the VMA to the LMA.
3200    This information is used for symbol lookup, and memory read/write.
3201    For instance, if a section has been mapped then its contents
3202    should be read from the VMA, otherwise from the LMA.
3203
3204    Two levels of debugger support for overlays are available.  One is
3205    "manual", in which the debugger relies on the user to tell it which
3206    overlays are currently mapped.  This level of support is
3207    implemented entirely in the core debugger, and the information about
3208    whether a section is mapped is kept in the objfile->obj_section table.
3209
3210    The second level of support is "automatic", and is only available if
3211    the target-specific code provides functionality to read the target's
3212    overlay mapping table, and translate its contents for the debugger
3213    (by updating the mapped state information in the obj_section tables).
3214
3215    The interface is as follows:
3216    User commands:
3217    overlay map <name>   -- tell gdb to consider this section mapped
3218    overlay unmap <name> -- tell gdb to consider this section unmapped
3219    overlay list         -- list the sections that GDB thinks are mapped
3220    overlay read-target  -- get the target's state of what's mapped
3221    overlay off/manual/auto -- set overlay debugging state
3222    Functional interface:
3223    find_pc_mapped_section(pc):    if the pc is in the range of a mapped
3224    section, return that section.
3225    find_pc_overlay(pc):       find any overlay section that contains
3226    the pc, either in its VMA or its LMA
3227    section_is_mapped(sect):       true if overlay is marked as mapped
3228    section_is_overlay(sect):      true if section's VMA != LMA
3229    pc_in_mapped_range(pc,sec):    true if pc belongs to section's VMA
3230    pc_in_unmapped_range(...):     true if pc belongs to section's LMA
3231    sections_overlap(sec1, sec2):  true if mapped sec1 and sec2 ranges overlap
3232    overlay_mapped_address(...):   map an address from section's LMA to VMA
3233    overlay_unmapped_address(...): map an address from section's VMA to LMA
3234    symbol_overlayed_address(...): Return a "current" address for symbol:
3235    either in VMA or LMA depending on whether
3236    the symbol's section is currently mapped
3237  */
3238
3239 /* Overlay debugging state: */
3240
3241 enum overlay_debugging_state overlay_debugging = ovly_off;
3242 int overlay_cache_invalid = 0;  /* True if need to refresh mapped state */
3243
3244 /* Function: section_is_overlay (SECTION)
3245    Returns true if SECTION has VMA not equal to LMA, ie.
3246    SECTION is loaded at an address different from where it will "run".  */
3247
3248 int
3249 section_is_overlay (struct obj_section *section)
3250 {
3251   if (overlay_debugging && section)
3252     {
3253       bfd *abfd = section->objfile->obfd;
3254       asection *bfd_section = section->the_bfd_section;
3255   
3256       if (bfd_section_lma (abfd, bfd_section) != 0
3257           && bfd_section_lma (abfd, bfd_section)
3258              != bfd_section_vma (abfd, bfd_section))
3259         return 1;
3260     }
3261
3262   return 0;
3263 }
3264
3265 /* Function: overlay_invalidate_all (void)
3266    Invalidate the mapped state of all overlay sections (mark it as stale).  */
3267
3268 static void
3269 overlay_invalidate_all (void)
3270 {
3271   struct objfile *objfile;
3272   struct obj_section *sect;
3273
3274   ALL_OBJSECTIONS (objfile, sect)
3275     if (section_is_overlay (sect))
3276       sect->ovly_mapped = -1;
3277 }
3278
3279 /* Function: section_is_mapped (SECTION)
3280    Returns true if section is an overlay, and is currently mapped.
3281
3282    Access to the ovly_mapped flag is restricted to this function, so
3283    that we can do automatic update.  If the global flag
3284    OVERLAY_CACHE_INVALID is set (by wait_for_inferior), then call
3285    overlay_invalidate_all.  If the mapped state of the particular
3286    section is stale, then call TARGET_OVERLAY_UPDATE to refresh it.  */
3287
3288 int
3289 section_is_mapped (struct obj_section *osect)
3290 {
3291   struct gdbarch *gdbarch;
3292
3293   if (osect == 0 || !section_is_overlay (osect))
3294     return 0;
3295
3296   switch (overlay_debugging)
3297     {
3298     default:
3299     case ovly_off:
3300       return 0;                 /* overlay debugging off */
3301     case ovly_auto:             /* overlay debugging automatic */
3302       /* Unles there is a gdbarch_overlay_update function,
3303          there's really nothing useful to do here (can't really go auto)  */
3304       gdbarch = get_objfile_arch (osect->objfile);
3305       if (gdbarch_overlay_update_p (gdbarch))
3306         {
3307           if (overlay_cache_invalid)
3308             {
3309               overlay_invalidate_all ();
3310               overlay_cache_invalid = 0;
3311             }
3312           if (osect->ovly_mapped == -1)
3313             gdbarch_overlay_update (gdbarch, osect);
3314         }
3315       /* fall thru to manual case */
3316     case ovly_on:               /* overlay debugging manual */
3317       return osect->ovly_mapped == 1;
3318     }
3319 }
3320
3321 /* Function: pc_in_unmapped_range
3322    If PC falls into the lma range of SECTION, return true, else false.  */
3323
3324 CORE_ADDR
3325 pc_in_unmapped_range (CORE_ADDR pc, struct obj_section *section)
3326 {
3327   if (section_is_overlay (section))
3328     {
3329       bfd *abfd = section->objfile->obfd;
3330       asection *bfd_section = section->the_bfd_section;
3331
3332       /* We assume the LMA is relocated by the same offset as the VMA.  */
3333       bfd_vma size = bfd_get_section_size (bfd_section);
3334       CORE_ADDR offset = obj_section_offset (section);
3335
3336       if (bfd_get_section_lma (abfd, bfd_section) + offset <= pc
3337           && pc < bfd_get_section_lma (abfd, bfd_section) + offset + size)
3338         return 1;
3339     }
3340
3341   return 0;
3342 }
3343
3344 /* Function: pc_in_mapped_range
3345    If PC falls into the vma range of SECTION, return true, else false.  */
3346
3347 CORE_ADDR
3348 pc_in_mapped_range (CORE_ADDR pc, struct obj_section *section)
3349 {
3350   if (section_is_overlay (section))
3351     {
3352       if (obj_section_addr (section) <= pc
3353           && pc < obj_section_endaddr (section))
3354         return 1;
3355     }
3356
3357   return 0;
3358 }
3359
3360
3361 /* Return true if the mapped ranges of sections A and B overlap, false
3362    otherwise.  */
3363 static int
3364 sections_overlap (struct obj_section *a, struct obj_section *b)
3365 {
3366   CORE_ADDR a_start = obj_section_addr (a);
3367   CORE_ADDR a_end = obj_section_endaddr (a);
3368   CORE_ADDR b_start = obj_section_addr (b);
3369   CORE_ADDR b_end = obj_section_endaddr (b);
3370
3371   return (a_start < b_end && b_start < a_end);
3372 }
3373
3374 /* Function: overlay_unmapped_address (PC, SECTION)
3375    Returns the address corresponding to PC in the unmapped (load) range.
3376    May be the same as PC.  */
3377
3378 CORE_ADDR
3379 overlay_unmapped_address (CORE_ADDR pc, struct obj_section *section)
3380 {
3381   if (section_is_overlay (section) && pc_in_mapped_range (pc, section))
3382     {
3383       bfd *abfd = section->objfile->obfd;
3384       asection *bfd_section = section->the_bfd_section;
3385
3386       return pc + bfd_section_lma (abfd, bfd_section)
3387                 - bfd_section_vma (abfd, bfd_section);
3388     }
3389
3390   return pc;
3391 }
3392
3393 /* Function: overlay_mapped_address (PC, SECTION)
3394    Returns the address corresponding to PC in the mapped (runtime) range.
3395    May be the same as PC.  */
3396
3397 CORE_ADDR
3398 overlay_mapped_address (CORE_ADDR pc, struct obj_section *section)
3399 {
3400   if (section_is_overlay (section) && pc_in_unmapped_range (pc, section))
3401     {
3402       bfd *abfd = section->objfile->obfd;
3403       asection *bfd_section = section->the_bfd_section;
3404
3405       return pc + bfd_section_vma (abfd, bfd_section)
3406                 - bfd_section_lma (abfd, bfd_section);
3407     }
3408
3409   return pc;
3410 }
3411
3412
3413 /* Function: symbol_overlayed_address
3414    Return one of two addresses (relative to the VMA or to the LMA),
3415    depending on whether the section is mapped or not.  */
3416
3417 CORE_ADDR
3418 symbol_overlayed_address (CORE_ADDR address, struct obj_section *section)
3419 {
3420   if (overlay_debugging)
3421     {
3422       /* If the symbol has no section, just return its regular address. */
3423       if (section == 0)
3424         return address;
3425       /* If the symbol's section is not an overlay, just return its address */
3426       if (!section_is_overlay (section))
3427         return address;
3428       /* If the symbol's section is mapped, just return its address */
3429       if (section_is_mapped (section))
3430         return address;
3431       /*
3432        * HOWEVER: if the symbol is in an overlay section which is NOT mapped,
3433        * then return its LOADED address rather than its vma address!!
3434        */
3435       return overlay_unmapped_address (address, section);
3436     }
3437   return address;
3438 }
3439
3440 /* Function: find_pc_overlay (PC)
3441    Return the best-match overlay section for PC:
3442    If PC matches a mapped overlay section's VMA, return that section.
3443    Else if PC matches an unmapped section's VMA, return that section.
3444    Else if PC matches an unmapped section's LMA, return that section.  */
3445
3446 struct obj_section *
3447 find_pc_overlay (CORE_ADDR pc)
3448 {
3449   struct objfile *objfile;
3450   struct obj_section *osect, *best_match = NULL;
3451
3452   if (overlay_debugging)
3453     ALL_OBJSECTIONS (objfile, osect)
3454       if (section_is_overlay (osect))
3455       {
3456         if (pc_in_mapped_range (pc, osect))
3457           {
3458             if (section_is_mapped (osect))
3459               return osect;
3460             else
3461               best_match = osect;
3462           }
3463         else if (pc_in_unmapped_range (pc, osect))
3464           best_match = osect;
3465       }
3466   return best_match;
3467 }
3468
3469 /* Function: find_pc_mapped_section (PC)
3470    If PC falls into the VMA address range of an overlay section that is
3471    currently marked as MAPPED, return that section.  Else return NULL.  */
3472
3473 struct obj_section *
3474 find_pc_mapped_section (CORE_ADDR pc)
3475 {
3476   struct objfile *objfile;
3477   struct obj_section *osect;
3478
3479   if (overlay_debugging)
3480     ALL_OBJSECTIONS (objfile, osect)
3481       if (pc_in_mapped_range (pc, osect) && section_is_mapped (osect))
3482         return osect;
3483
3484   return NULL;
3485 }
3486
3487 /* Function: list_overlays_command
3488    Print a list of mapped sections and their PC ranges */
3489
3490 void
3491 list_overlays_command (char *args, int from_tty)
3492 {
3493   int nmapped = 0;
3494   struct objfile *objfile;
3495   struct obj_section *osect;
3496
3497   if (overlay_debugging)
3498     ALL_OBJSECTIONS (objfile, osect)
3499       if (section_is_mapped (osect))
3500       {
3501         const char *name;
3502         bfd_vma lma, vma;
3503         int size;
3504
3505         vma = bfd_section_vma (objfile->obfd, osect->the_bfd_section);
3506         lma = bfd_section_lma (objfile->obfd, osect->the_bfd_section);
3507         size = bfd_get_section_size (osect->the_bfd_section);
3508         name = bfd_section_name (objfile->obfd, osect->the_bfd_section);
3509
3510         printf_filtered ("Section %s, loaded at ", name);
3511         fputs_filtered (paddress (lma), gdb_stdout);
3512         puts_filtered (" - ");
3513         fputs_filtered (paddress (lma + size), gdb_stdout);
3514         printf_filtered (", mapped at ");
3515         fputs_filtered (paddress (vma), gdb_stdout);
3516         puts_filtered (" - ");
3517         fputs_filtered (paddress (vma + size), gdb_stdout);
3518         puts_filtered ("\n");
3519
3520         nmapped++;
3521       }
3522   if (nmapped == 0)
3523     printf_filtered (_("No sections are mapped.\n"));
3524 }
3525
3526 /* Function: map_overlay_command
3527    Mark the named section as mapped (ie. residing at its VMA address).  */
3528
3529 void
3530 map_overlay_command (char *args, int from_tty)
3531 {
3532   struct objfile *objfile, *objfile2;
3533   struct obj_section *sec, *sec2;
3534
3535   if (!overlay_debugging)
3536     error (_("\
3537 Overlay debugging not enabled.  Use either the 'overlay auto' or\n\
3538 the 'overlay manual' command."));
3539
3540   if (args == 0 || *args == 0)
3541     error (_("Argument required: name of an overlay section"));
3542
3543   /* First, find a section matching the user supplied argument */
3544   ALL_OBJSECTIONS (objfile, sec)
3545     if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3546     {
3547       /* Now, check to see if the section is an overlay. */
3548       if (!section_is_overlay (sec))
3549         continue;               /* not an overlay section */
3550
3551       /* Mark the overlay as "mapped" */
3552       sec->ovly_mapped = 1;
3553
3554       /* Next, make a pass and unmap any sections that are
3555          overlapped by this new section: */
3556       ALL_OBJSECTIONS (objfile2, sec2)
3557         if (sec2->ovly_mapped && sec != sec2 && sections_overlap (sec, sec2))
3558         {
3559           if (info_verbose)
3560             printf_unfiltered (_("Note: section %s unmapped by overlap\n"),
3561                              bfd_section_name (objfile->obfd,
3562                                                sec2->the_bfd_section));
3563           sec2->ovly_mapped = 0;        /* sec2 overlaps sec: unmap sec2 */
3564         }
3565       return;
3566     }
3567   error (_("No overlay section called %s"), args);
3568 }
3569
3570 /* Function: unmap_overlay_command
3571    Mark the overlay section as unmapped
3572    (ie. resident in its LMA address range, rather than the VMA range).  */
3573
3574 void
3575 unmap_overlay_command (char *args, int from_tty)
3576 {
3577   struct objfile *objfile;
3578   struct obj_section *sec;
3579
3580   if (!overlay_debugging)
3581     error (_("\
3582 Overlay debugging not enabled.  Use either the 'overlay auto' or\n\
3583 the 'overlay manual' command."));
3584
3585   if (args == 0 || *args == 0)
3586     error (_("Argument required: name of an overlay section"));
3587
3588   /* First, find a section matching the user supplied argument */
3589   ALL_OBJSECTIONS (objfile, sec)
3590     if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3591     {
3592       if (!sec->ovly_mapped)
3593         error (_("Section %s is not mapped"), args);
3594       sec->ovly_mapped = 0;
3595       return;
3596     }
3597   error (_("No overlay section called %s"), args);
3598 }
3599
3600 /* Function: overlay_auto_command
3601    A utility command to turn on overlay debugging.
3602    Possibly this should be done via a set/show command. */
3603
3604 static void
3605 overlay_auto_command (char *args, int from_tty)
3606 {
3607   overlay_debugging = ovly_auto;
3608   enable_overlay_breakpoints ();
3609   if (info_verbose)
3610     printf_unfiltered (_("Automatic overlay debugging enabled."));
3611 }
3612
3613 /* Function: overlay_manual_command
3614    A utility command to turn on overlay debugging.
3615    Possibly this should be done via a set/show command. */
3616
3617 static void
3618 overlay_manual_command (char *args, int from_tty)
3619 {
3620   overlay_debugging = ovly_on;
3621   disable_overlay_breakpoints ();
3622   if (info_verbose)
3623     printf_unfiltered (_("Overlay debugging enabled."));
3624 }
3625
3626 /* Function: overlay_off_command
3627    A utility command to turn on overlay debugging.
3628    Possibly this should be done via a set/show command. */
3629
3630 static void
3631 overlay_off_command (char *args, int from_tty)
3632 {
3633   overlay_debugging = ovly_off;
3634   disable_overlay_breakpoints ();
3635   if (info_verbose)
3636     printf_unfiltered (_("Overlay debugging disabled."));
3637 }
3638
3639 static void
3640 overlay_load_command (char *args, int from_tty)
3641 {
3642   if (gdbarch_overlay_update_p (current_gdbarch))
3643     gdbarch_overlay_update (current_gdbarch, NULL);
3644   else
3645     error (_("This target does not know how to read its overlay state."));
3646 }
3647
3648 /* Function: overlay_command
3649    A place-holder for a mis-typed command */
3650
3651 /* Command list chain containing all defined "overlay" subcommands. */
3652 struct cmd_list_element *overlaylist;
3653
3654 static void
3655 overlay_command (char *args, int from_tty)
3656 {
3657   printf_unfiltered
3658     ("\"overlay\" must be followed by the name of an overlay command.\n");
3659   help_list (overlaylist, "overlay ", -1, gdb_stdout);
3660 }
3661
3662
3663 /* Target Overlays for the "Simplest" overlay manager:
3664
3665    This is GDB's default target overlay layer.  It works with the
3666    minimal overlay manager supplied as an example by Cygnus.  The
3667    entry point is via a function pointer "gdbarch_overlay_update",
3668    so targets that use a different runtime overlay manager can
3669    substitute their own overlay_update function and take over the
3670    function pointer.
3671
3672    The overlay_update function pokes around in the target's data structures
3673    to see what overlays are mapped, and updates GDB's overlay mapping with
3674    this information.
3675
3676    In this simple implementation, the target data structures are as follows:
3677    unsigned _novlys;            /# number of overlay sections #/
3678    unsigned _ovly_table[_novlys][4] = {
3679    {VMA, SIZE, LMA, MAPPED},    /# one entry per overlay section #/
3680    {..., ...,  ..., ...},
3681    }
3682    unsigned _novly_regions;     /# number of overlay regions #/
3683    unsigned _ovly_region_table[_novly_regions][3] = {
3684    {VMA, SIZE, MAPPED_TO_LMA},  /# one entry per overlay region #/
3685    {..., ...,  ...},
3686    }
3687    These functions will attempt to update GDB's mappedness state in the
3688    symbol section table, based on the target's mappedness state.
3689
3690    To do this, we keep a cached copy of the target's _ovly_table, and
3691    attempt to detect when the cached copy is invalidated.  The main
3692    entry point is "simple_overlay_update(SECT), which looks up SECT in
3693    the cached table and re-reads only the entry for that section from
3694    the target (whenever possible).
3695  */
3696
3697 /* Cached, dynamically allocated copies of the target data structures: */
3698 static unsigned (*cache_ovly_table)[4] = 0;
3699 #if 0
3700 static unsigned (*cache_ovly_region_table)[3] = 0;
3701 #endif
3702 static unsigned cache_novlys = 0;
3703 #if 0
3704 static unsigned cache_novly_regions = 0;
3705 #endif
3706 static CORE_ADDR cache_ovly_table_base = 0;
3707 #if 0
3708 static CORE_ADDR cache_ovly_region_table_base = 0;
3709 #endif
3710 enum ovly_index
3711   {
3712     VMA, SIZE, LMA, MAPPED
3713   };
3714
3715 /* Throw away the cached copy of _ovly_table */
3716 static void
3717 simple_free_overlay_table (void)
3718 {
3719   if (cache_ovly_table)
3720     xfree (cache_ovly_table);
3721   cache_novlys = 0;
3722   cache_ovly_table = NULL;
3723   cache_ovly_table_base = 0;
3724 }
3725
3726 #if 0
3727 /* Throw away the cached copy of _ovly_region_table */
3728 static void
3729 simple_free_overlay_region_table (void)
3730 {
3731   if (cache_ovly_region_table)
3732     xfree (cache_ovly_region_table);
3733   cache_novly_regions = 0;
3734   cache_ovly_region_table = NULL;
3735   cache_ovly_region_table_base = 0;
3736 }
3737 #endif
3738
3739 /* Read an array of ints of size SIZE from the target into a local buffer.
3740    Convert to host order.  int LEN is number of ints  */
3741 static void
3742 read_target_long_array (CORE_ADDR memaddr, unsigned int *myaddr,
3743                         int len, int size)
3744 {
3745   /* FIXME (alloca): Not safe if array is very large. */
3746   gdb_byte *buf = alloca (len * size);
3747   int i;
3748
3749   read_memory (memaddr, buf, len * size);
3750   for (i = 0; i < len; i++)
3751     myaddr[i] = extract_unsigned_integer (size * i + buf, size);
3752 }
3753
3754 /* Find and grab a copy of the target _ovly_table
3755    (and _novlys, which is needed for the table's size) */
3756 static int
3757 simple_read_overlay_table (void)
3758 {
3759   struct minimal_symbol *novlys_msym, *ovly_table_msym;
3760   struct gdbarch *gdbarch;
3761   int word_size;
3762
3763   simple_free_overlay_table ();
3764   novlys_msym = lookup_minimal_symbol ("_novlys", NULL, NULL);
3765   if (! novlys_msym)
3766     {
3767       error (_("Error reading inferior's overlay table: "
3768              "couldn't find `_novlys' variable\n"
3769              "in inferior.  Use `overlay manual' mode."));
3770       return 0;
3771     }
3772
3773   ovly_table_msym = lookup_minimal_symbol ("_ovly_table", NULL, NULL);
3774   if (! ovly_table_msym)
3775     {
3776       error (_("Error reading inferior's overlay table: couldn't find "
3777              "`_ovly_table' array\n"
3778              "in inferior.  Use `overlay manual' mode."));
3779       return 0;
3780     }
3781
3782   gdbarch = get_objfile_arch (msymbol_objfile (ovly_table_msym));
3783   word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3784
3785   cache_novlys = read_memory_integer (SYMBOL_VALUE_ADDRESS (novlys_msym), 4);
3786   cache_ovly_table
3787     = (void *) xmalloc (cache_novlys * sizeof (*cache_ovly_table));
3788   cache_ovly_table_base = SYMBOL_VALUE_ADDRESS (ovly_table_msym);
3789   read_target_long_array (cache_ovly_table_base,
3790                           (unsigned int *) cache_ovly_table,
3791                           cache_novlys * 4, word_size);
3792
3793   return 1;                     /* SUCCESS */
3794 }
3795
3796 #if 0
3797 /* Find and grab a copy of the target _ovly_region_table
3798    (and _novly_regions, which is needed for the table's size) */
3799 static int
3800 simple_read_overlay_region_table (void)
3801 {
3802   struct minimal_symbol *msym;
3803
3804   simple_free_overlay_region_table ();
3805   msym = lookup_minimal_symbol ("_novly_regions", NULL, NULL);
3806   if (msym != NULL)
3807     cache_novly_regions = read_memory_integer (SYMBOL_VALUE_ADDRESS (msym), 4);
3808   else
3809     return 0;                   /* failure */
3810   cache_ovly_region_table = (void *) xmalloc (cache_novly_regions * 12);
3811   if (cache_ovly_region_table != NULL)
3812     {
3813       msym = lookup_minimal_symbol ("_ovly_region_table", NULL, NULL);
3814       if (msym != NULL)
3815         {
3816           struct gdbarch *gdbarch = get_objfile_arch (msymbol_objfile (msym));
3817           int word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3818           cache_ovly_region_table_base = SYMBOL_VALUE_ADDRESS (msym);
3819           read_target_long_array (cache_ovly_region_table_base,
3820                                   (unsigned int *) cache_ovly_region_table,
3821                                   cache_novly_regions * 3, word_size);
3822         }
3823       else
3824         return 0;               /* failure */
3825     }
3826   else
3827     return 0;                   /* failure */
3828   return 1;                     /* SUCCESS */
3829 }
3830 #endif
3831
3832 /* Function: simple_overlay_update_1
3833    A helper function for simple_overlay_update.  Assuming a cached copy
3834    of _ovly_table exists, look through it to find an entry whose vma,
3835    lma and size match those of OSECT.  Re-read the entry and make sure
3836    it still matches OSECT (else the table may no longer be valid).
3837    Set OSECT's mapped state to match the entry.  Return: 1 for
3838    success, 0 for failure.  */
3839
3840 static int
3841 simple_overlay_update_1 (struct obj_section *osect)
3842 {
3843   int i, size;
3844   bfd *obfd = osect->objfile->obfd;
3845   asection *bsect = osect->the_bfd_section;
3846   struct gdbarch *gdbarch = get_objfile_arch (osect->objfile);
3847   int word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3848
3849   size = bfd_get_section_size (osect->the_bfd_section);
3850   for (i = 0; i < cache_novlys; i++)
3851     if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3852         && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
3853         /* && cache_ovly_table[i][SIZE] == size */ )
3854       {
3855         read_target_long_array (cache_ovly_table_base + i * word_size,
3856                                 (unsigned int *) cache_ovly_table[i],
3857                                 4, word_size);
3858         if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3859             && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
3860             /* && cache_ovly_table[i][SIZE] == size */ )
3861           {
3862             osect->ovly_mapped = cache_ovly_table[i][MAPPED];
3863             return 1;
3864           }
3865         else    /* Warning!  Warning!  Target's ovly table has changed! */
3866           return 0;
3867       }
3868   return 0;
3869 }
3870
3871 /* Function: simple_overlay_update
3872    If OSECT is NULL, then update all sections' mapped state
3873    (after re-reading the entire target _ovly_table).
3874    If OSECT is non-NULL, then try to find a matching entry in the
3875    cached ovly_table and update only OSECT's mapped state.
3876    If a cached entry can't be found or the cache isn't valid, then
3877    re-read the entire cache, and go ahead and update all sections.  */
3878
3879 void
3880 simple_overlay_update (struct obj_section *osect)
3881 {
3882   struct objfile *objfile;
3883
3884   /* Were we given an osect to look up?  NULL means do all of them. */
3885   if (osect)
3886     /* Have we got a cached copy of the target's overlay table? */
3887     if (cache_ovly_table != NULL)
3888       /* Does its cached location match what's currently in the symtab? */
3889       if (cache_ovly_table_base ==
3890           SYMBOL_VALUE_ADDRESS (lookup_minimal_symbol ("_ovly_table", NULL, NULL)))
3891         /* Then go ahead and try to look up this single section in the cache */
3892         if (simple_overlay_update_1 (osect))
3893           /* Found it!  We're done. */
3894           return;
3895
3896   /* Cached table no good: need to read the entire table anew.
3897      Or else we want all the sections, in which case it's actually
3898      more efficient to read the whole table in one block anyway.  */
3899
3900   if (! simple_read_overlay_table ())
3901     return;
3902
3903   /* Now may as well update all sections, even if only one was requested. */
3904   ALL_OBJSECTIONS (objfile, osect)
3905     if (section_is_overlay (osect))
3906     {
3907       int i, size;
3908       bfd *obfd = osect->objfile->obfd;
3909       asection *bsect = osect->the_bfd_section;
3910
3911       size = bfd_get_section_size (bsect);
3912       for (i = 0; i < cache_novlys; i++)
3913         if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3914             && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
3915             /* && cache_ovly_table[i][SIZE] == size */ )
3916           { /* obj_section matches i'th entry in ovly_table */
3917             osect->ovly_mapped = cache_ovly_table[i][MAPPED];
3918             break;              /* finished with inner for loop: break out */
3919           }
3920     }
3921 }
3922
3923 /* Set the output sections and output offsets for section SECTP in
3924    ABFD.  The relocation code in BFD will read these offsets, so we
3925    need to be sure they're initialized.  We map each section to itself,
3926    with no offset; this means that SECTP->vma will be honored.  */
3927
3928 static void
3929 symfile_dummy_outputs (bfd *abfd, asection *sectp, void *dummy)
3930 {
3931   sectp->output_section = sectp;
3932   sectp->output_offset = 0;
3933 }
3934
3935 /* Relocate the contents of a debug section SECTP in ABFD.  The
3936    contents are stored in BUF if it is non-NULL, or returned in a
3937    malloc'd buffer otherwise.
3938
3939    For some platforms and debug info formats, shared libraries contain
3940    relocations against the debug sections (particularly for DWARF-2;
3941    one affected platform is PowerPC GNU/Linux, although it depends on
3942    the version of the linker in use).  Also, ELF object files naturally
3943    have unresolved relocations for their debug sections.  We need to apply
3944    the relocations in order to get the locations of symbols correct.
3945    Another example that may require relocation processing, is the
3946    DWARF-2 .eh_frame section in .o files, although it isn't strictly a
3947    debug section.  */
3948
3949 bfd_byte *
3950 symfile_relocate_debug_section (bfd *abfd, asection *sectp, bfd_byte *buf)
3951 {
3952   /* We're only interested in sections with relocation
3953      information.  */
3954   if ((sectp->flags & SEC_RELOC) == 0)
3955     return NULL;
3956
3957   /* We will handle section offsets properly elsewhere, so relocate as if
3958      all sections begin at 0.  */
3959   bfd_map_over_sections (abfd, symfile_dummy_outputs, NULL);
3960
3961   return bfd_simple_get_relocated_section_contents (abfd, sectp, buf, NULL);
3962 }
3963
3964 struct symfile_segment_data *
3965 get_symfile_segment_data (bfd *abfd)
3966 {
3967   struct sym_fns *sf = find_sym_fns (abfd);
3968
3969   if (sf == NULL)
3970     return NULL;
3971
3972   return sf->sym_segments (abfd);
3973 }
3974
3975 void
3976 free_symfile_segment_data (struct symfile_segment_data *data)
3977 {
3978   xfree (data->segment_bases);
3979   xfree (data->segment_sizes);
3980   xfree (data->segment_info);
3981   xfree (data);
3982 }
3983
3984
3985 /* Given:
3986    - DATA, containing segment addresses from the object file ABFD, and
3987      the mapping from ABFD's sections onto the segments that own them,
3988      and
3989    - SEGMENT_BASES[0 .. NUM_SEGMENT_BASES - 1], holding the actual
3990      segment addresses reported by the target,
3991    store the appropriate offsets for each section in OFFSETS.
3992
3993    If there are fewer entries in SEGMENT_BASES than there are segments
3994    in DATA, then apply SEGMENT_BASES' last entry to all the segments.
3995
3996    If there are more entries, then ignore the extra.  The target may
3997    not be able to distinguish between an empty data segment and a
3998    missing data segment; a missing text segment is less plausible.  */
3999 int
4000 symfile_map_offsets_to_segments (bfd *abfd, struct symfile_segment_data *data,
4001                                  struct section_offsets *offsets,
4002                                  int num_segment_bases,
4003                                  const CORE_ADDR *segment_bases)
4004 {
4005   int i;
4006   asection *sect;
4007
4008   /* It doesn't make sense to call this function unless you have some
4009      segment base addresses.  */
4010   gdb_assert (segment_bases > 0);
4011
4012   /* If we do not have segment mappings for the object file, we
4013      can not relocate it by segments.  */
4014   gdb_assert (data != NULL);
4015   gdb_assert (data->num_segments > 0);
4016
4017   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
4018     {
4019       int which = data->segment_info[i];
4020
4021       gdb_assert (0 <= which && which <= data->num_segments);
4022
4023       /* Don't bother computing offsets for sections that aren't
4024          loaded as part of any segment.  */
4025       if (! which)
4026         continue;
4027
4028       /* Use the last SEGMENT_BASES entry as the address of any extra
4029          segments mentioned in DATA->segment_info.  */
4030       if (which > num_segment_bases)
4031         which = num_segment_bases;
4032
4033       offsets->offsets[i] = (segment_bases[which - 1]
4034                              - data->segment_bases[which - 1]);
4035     }
4036
4037   return 1;
4038 }
4039
4040 static void
4041 symfile_find_segment_sections (struct objfile *objfile)
4042 {
4043   bfd *abfd = objfile->obfd;
4044   int i;
4045   asection *sect;
4046   struct symfile_segment_data *data;
4047
4048   data = get_symfile_segment_data (objfile->obfd);
4049   if (data == NULL)
4050     return;
4051
4052   if (data->num_segments != 1 && data->num_segments != 2)
4053     {
4054       free_symfile_segment_data (data);
4055       return;
4056     }
4057
4058   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
4059     {
4060       CORE_ADDR vma;
4061       int which = data->segment_info[i];
4062
4063       if (which == 1)
4064         {
4065           if (objfile->sect_index_text == -1)
4066             objfile->sect_index_text = sect->index;
4067
4068           if (objfile->sect_index_rodata == -1)
4069             objfile->sect_index_rodata = sect->index;
4070         }
4071       else if (which == 2)
4072         {
4073           if (objfile->sect_index_data == -1)
4074             objfile->sect_index_data = sect->index;
4075
4076           if (objfile->sect_index_bss == -1)
4077             objfile->sect_index_bss = sect->index;
4078         }
4079     }
4080
4081   free_symfile_segment_data (data);
4082 }
4083
4084 void
4085 _initialize_symfile (void)
4086 {
4087   struct cmd_list_element *c;
4088
4089   c = add_cmd ("symbol-file", class_files, symbol_file_command, _("\
4090 Load symbol table from executable file FILE.\n\
4091 The `file' command can also load symbol tables, as well as setting the file\n\
4092 to execute."), &cmdlist);
4093   set_cmd_completer (c, filename_completer);
4094
4095   c = add_cmd ("add-symbol-file", class_files, add_symbol_file_command, _("\
4096 Load symbols from FILE, assuming FILE has been dynamically loaded.\n\
4097 Usage: add-symbol-file FILE ADDR [-s <SECT> <SECT_ADDR> -s <SECT> <SECT_ADDR> ...]\n\
4098 ADDR is the starting address of the file's text.\n\
4099 The optional arguments are section-name section-address pairs and\n\
4100 should be specified if the data and bss segments are not contiguous\n\
4101 with the text.  SECT is a section name to be loaded at SECT_ADDR."),
4102                &cmdlist);
4103   set_cmd_completer (c, filename_completer);
4104
4105   c = add_cmd ("load", class_files, load_command, _("\
4106 Dynamically load FILE into the running program, and record its symbols\n\
4107 for access from GDB.\n\
4108 A load OFFSET may also be given."), &cmdlist);
4109   set_cmd_completer (c, filename_completer);
4110
4111   add_setshow_boolean_cmd ("symbol-reloading", class_support,
4112                            &symbol_reloading, _("\
4113 Set dynamic symbol table reloading multiple times in one run."), _("\
4114 Show dynamic symbol table reloading multiple times in one run."), NULL,
4115                            NULL,
4116                            show_symbol_reloading,
4117                            &setlist, &showlist);
4118
4119   add_prefix_cmd ("overlay", class_support, overlay_command,
4120                   _("Commands for debugging overlays."), &overlaylist,
4121                   "overlay ", 0, &cmdlist);
4122
4123   add_com_alias ("ovly", "overlay", class_alias, 1);
4124   add_com_alias ("ov", "overlay", class_alias, 1);
4125
4126   add_cmd ("map-overlay", class_support, map_overlay_command,
4127            _("Assert that an overlay section is mapped."), &overlaylist);
4128
4129   add_cmd ("unmap-overlay", class_support, unmap_overlay_command,
4130            _("Assert that an overlay section is unmapped."), &overlaylist);
4131
4132   add_cmd ("list-overlays", class_support, list_overlays_command,
4133            _("List mappings of overlay sections."), &overlaylist);
4134
4135   add_cmd ("manual", class_support, overlay_manual_command,
4136            _("Enable overlay debugging."), &overlaylist);
4137   add_cmd ("off", class_support, overlay_off_command,
4138            _("Disable overlay debugging."), &overlaylist);
4139   add_cmd ("auto", class_support, overlay_auto_command,
4140            _("Enable automatic overlay debugging."), &overlaylist);
4141   add_cmd ("load-target", class_support, overlay_load_command,
4142            _("Read the overlay mapping state from the target."), &overlaylist);
4143
4144   /* Filename extension to source language lookup table: */
4145   init_filename_language_table ();
4146   add_setshow_string_noescape_cmd ("extension-language", class_files,
4147                                    &ext_args, _("\
4148 Set mapping between filename extension and source language."), _("\
4149 Show mapping between filename extension and source language."), _("\
4150 Usage: set extension-language .foo bar"),
4151                                    set_ext_lang_command,
4152                                    show_ext_args,
4153                                    &setlist, &showlist);
4154
4155   add_info ("extensions", info_ext_lang_command,
4156             _("All filename extensions associated with a source language."));
4157
4158   add_setshow_optional_filename_cmd ("debug-file-directory", class_support,
4159                                      &debug_file_directory, _("\
4160 Set the directory where separate debug symbols are searched for."), _("\
4161 Show the directory where separate debug symbols are searched for."), _("\
4162 Separate debug symbols are first searched for in the same\n\
4163 directory as the binary, then in the `" DEBUG_SUBDIRECTORY "' subdirectory,\n\
4164 and lastly at the path of the directory of the binary with\n\
4165 the global debug-file directory prepended."),
4166                                      NULL,
4167                                      show_debug_file_directory,
4168                                      &setlist, &showlist);
4169
4170   add_setshow_boolean_cmd ("symbol-loading", no_class,
4171                            &print_symbol_loading, _("\
4172 Set printing of symbol loading messages."), _("\
4173 Show printing of symbol loading messages."), NULL,
4174                            NULL,
4175                            NULL,
4176                            &setprintlist, &showprintlist);
4177 }