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