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