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