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