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