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