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