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