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