OSDN Git Service

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