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