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