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