gdb/
[platform/upstream/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                             struct objfile *parent_objfile)
1312 {
1313   unsigned long file_crc = 0;
1314   bfd *abfd;
1315   gdb_byte buffer[8*1024];
1316   int count;
1317   struct stat parent_stat, abfd_stat;
1318
1319   /* Find a separate debug info file as if symbols would be present in
1320      PARENT_OBJFILE itself this function would not be called.  .gnu_debuglink
1321      section can contain just the basename of PARENT_OBJFILE without any
1322      ".debug" suffix as "/usr/lib/debug/path/to/file" is a separate tree where
1323      the separate debug infos with the same basename can exist. */
1324
1325   if (strcmp (name, parent_objfile->name) == 0)
1326     return 0;
1327
1328   if (remote_filename_p (name))
1329     abfd = remote_bfd_open (name, gnutarget);
1330   else
1331     abfd = bfd_openr (name, gnutarget);
1332
1333   if (!abfd)
1334     return 0;
1335
1336   /* Verify symlinks were not the cause of strcmp name difference above.
1337
1338      Some operating systems, e.g. Windows, do not provide a meaningful
1339      st_ino; they always set it to zero.  (Windows does provide a
1340      meaningful st_dev.)  Do not indicate a duplicate library in that
1341      case.  While there is no guarantee that a system that provides
1342      meaningful inode numbers will never set st_ino to zero, this is
1343      merely an optimization, so we do not need to worry about false
1344      negatives.  */
1345
1346   if (bfd_stat (abfd, &abfd_stat) == 0
1347       && bfd_stat (parent_objfile->obfd, &parent_stat) == 0
1348       && abfd_stat.st_dev == parent_stat.st_dev
1349       && abfd_stat.st_ino == parent_stat.st_ino
1350       && abfd_stat.st_ino != 0)
1351     {
1352       bfd_close (abfd);
1353       return 0;
1354     }
1355
1356   while ((count = bfd_bread (buffer, sizeof (buffer), abfd)) > 0)
1357     file_crc = gnu_debuglink_crc32 (file_crc, buffer, count);
1358
1359   bfd_close (abfd);
1360
1361   if (crc != file_crc)
1362     {
1363       warning (_("the debug information found in \"%s\""
1364                  " does not match \"%s\" (CRC mismatch).\n"),
1365                name, parent_objfile->name);
1366       return 0;
1367     }
1368
1369   return 1;
1370 }
1371
1372 char *debug_file_directory = NULL;
1373 static void
1374 show_debug_file_directory (struct ui_file *file, int from_tty,
1375                            struct cmd_list_element *c, const char *value)
1376 {
1377   fprintf_filtered (file, _("\
1378 The directory where separate debug symbols are searched for is \"%s\".\n"),
1379                     value);
1380 }
1381
1382 #if ! defined (DEBUG_SUBDIRECTORY)
1383 #define DEBUG_SUBDIRECTORY ".debug"
1384 #endif
1385
1386 static char *
1387 find_separate_debug_file (struct objfile *objfile)
1388 {
1389   asection *sect;
1390   char *basename, *name_copy, *debugdir;
1391   char *dir = NULL;
1392   char *debugfile = NULL;
1393   char *canon_name = NULL;
1394   bfd_size_type debuglink_size;
1395   unsigned long crc32;
1396   int i;
1397   struct build_id *build_id;
1398
1399   build_id = build_id_bfd_get (objfile->obfd);
1400   if (build_id != NULL)
1401     {
1402       char *build_id_name;
1403
1404       build_id_name = build_id_to_debug_filename (build_id);
1405       xfree (build_id);
1406       /* Prevent looping on a stripped .debug file.  */
1407       if (build_id_name != NULL && strcmp (build_id_name, objfile->name) == 0)
1408         {
1409           warning (_("\"%s\": separate debug info file has no debug info"),
1410                    build_id_name);
1411           xfree (build_id_name);
1412         }
1413       else if (build_id_name != NULL)
1414         return build_id_name;
1415     }
1416
1417   basename = get_debug_link_info (objfile, &crc32);
1418
1419   if (basename == NULL)
1420     /* There's no separate debug info, hence there's no way we could
1421        load it => no warning.  */
1422     goto cleanup_return_debugfile;
1423
1424   dir = xstrdup (objfile->name);
1425
1426   /* Strip off the final filename part, leaving the directory name,
1427      followed by a slash.  Objfile names should always be absolute and
1428      tilde-expanded, so there should always be a slash in there
1429      somewhere.  */
1430   for (i = strlen(dir) - 1; i >= 0; i--)
1431     {
1432       if (IS_DIR_SEPARATOR (dir[i]))
1433         break;
1434     }
1435   gdb_assert (i >= 0 && IS_DIR_SEPARATOR (dir[i]));
1436   dir[i+1] = '\0';
1437
1438   /* Set I to max (strlen (canon_name), strlen (dir)). */
1439   canon_name = lrealpath (dir);
1440   i = strlen (dir);
1441   if (canon_name && strlen (canon_name) > i)
1442     i = strlen (canon_name);
1443
1444   debugfile = xmalloc (strlen (debug_file_directory) + 1
1445                        + i
1446                        + strlen (DEBUG_SUBDIRECTORY)
1447                        + strlen ("/")
1448                        + strlen (basename)
1449                        + 1);
1450
1451   /* First try in the same directory as the original file.  */
1452   strcpy (debugfile, dir);
1453   strcat (debugfile, basename);
1454
1455   if (separate_debug_file_exists (debugfile, crc32, objfile))
1456     goto cleanup_return_debugfile;
1457
1458   /* Then try in the subdirectory named DEBUG_SUBDIRECTORY.  */
1459   strcpy (debugfile, dir);
1460   strcat (debugfile, DEBUG_SUBDIRECTORY);
1461   strcat (debugfile, "/");
1462   strcat (debugfile, basename);
1463
1464   if (separate_debug_file_exists (debugfile, crc32, objfile))
1465     goto cleanup_return_debugfile;
1466
1467   /* Then try in the global debugfile directories.
1468  
1469      Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
1470      cause "/..." lookups.  */
1471
1472   debugdir = debug_file_directory;
1473   do
1474     {
1475       char *debugdir_end;
1476
1477       while (*debugdir == DIRNAME_SEPARATOR)
1478         debugdir++;
1479
1480       debugdir_end = strchr (debugdir, DIRNAME_SEPARATOR);
1481       if (debugdir_end == NULL)
1482         debugdir_end = &debugdir[strlen (debugdir)];
1483
1484       memcpy (debugfile, debugdir, debugdir_end - debugdir);
1485       debugfile[debugdir_end - debugdir] = 0;
1486       strcat (debugfile, "/");
1487       strcat (debugfile, dir);
1488       strcat (debugfile, basename);
1489
1490       if (separate_debug_file_exists (debugfile, crc32, objfile))
1491         goto cleanup_return_debugfile;
1492
1493       /* If the file is in the sysroot, try using its base path in the
1494          global debugfile directory.  */
1495       if (canon_name
1496           && strncmp (canon_name, gdb_sysroot, strlen (gdb_sysroot)) == 0
1497           && IS_DIR_SEPARATOR (canon_name[strlen (gdb_sysroot)]))
1498         {
1499           memcpy (debugfile, debugdir, debugdir_end - debugdir);
1500           debugfile[debugdir_end - debugdir] = 0;
1501           strcat (debugfile, canon_name + strlen (gdb_sysroot));
1502           strcat (debugfile, "/");
1503           strcat (debugfile, basename);
1504
1505           if (separate_debug_file_exists (debugfile, crc32, objfile))
1506             goto cleanup_return_debugfile;
1507         }
1508
1509       debugdir = debugdir_end;
1510     }
1511   while (*debugdir != 0);
1512   
1513   xfree (debugfile);
1514   debugfile = NULL;
1515
1516 cleanup_return_debugfile:
1517   xfree (canon_name);
1518   xfree (basename);
1519   xfree (dir);
1520   return debugfile;
1521 }
1522
1523
1524 /* This is the symbol-file command.  Read the file, analyze its
1525    symbols, and add a struct symtab to a symtab list.  The syntax of
1526    the command is rather bizarre:
1527
1528    1. The function buildargv implements various quoting conventions
1529    which are undocumented and have little or nothing in common with
1530    the way things are quoted (or not quoted) elsewhere in GDB.
1531
1532    2. Options are used, which are not generally used in GDB (perhaps
1533    "set mapped on", "set readnow on" would be better)
1534
1535    3. The order of options matters, which is contrary to GNU
1536    conventions (because it is confusing and inconvenient).  */
1537
1538 void
1539 symbol_file_command (char *args, int from_tty)
1540 {
1541   dont_repeat ();
1542
1543   if (args == NULL)
1544     {
1545       symbol_file_clear (from_tty);
1546     }
1547   else
1548     {
1549       char **argv = gdb_buildargv (args);
1550       int flags = OBJF_USERLOADED;
1551       struct cleanup *cleanups;
1552       char *name = NULL;
1553
1554       cleanups = make_cleanup_freeargv (argv);
1555       while (*argv != NULL)
1556         {
1557           if (strcmp (*argv, "-readnow") == 0)
1558             flags |= OBJF_READNOW;
1559           else if (**argv == '-')
1560             error (_("unknown option `%s'"), *argv);
1561           else
1562             {
1563               symbol_file_add_main_1 (*argv, from_tty, flags);
1564               name = *argv;
1565             }
1566
1567           argv++;
1568         }
1569
1570       if (name == NULL)
1571         error (_("no symbol file name was specified"));
1572
1573       do_cleanups (cleanups);
1574     }
1575 }
1576
1577 /* Set the initial language.
1578
1579    FIXME: A better solution would be to record the language in the
1580    psymtab when reading partial symbols, and then use it (if known) to
1581    set the language.  This would be a win for formats that encode the
1582    language in an easily discoverable place, such as DWARF.  For
1583    stabs, we can jump through hoops looking for specially named
1584    symbols or try to intuit the language from the specific type of
1585    stabs we find, but we can't do that until later when we read in
1586    full symbols.  */
1587
1588 void
1589 set_initial_language (void)
1590 {
1591   struct partial_symtab *pst;
1592   enum language lang = language_unknown;
1593
1594   pst = find_main_psymtab ();
1595   if (pst != NULL)
1596     {
1597       if (pst->filename != NULL)
1598         lang = deduce_language_from_filename (pst->filename);
1599
1600       if (lang == language_unknown)
1601         {
1602           /* Make C the default language */
1603           lang = language_c;
1604         }
1605
1606       set_language (lang);
1607       expected_language = current_language; /* Don't warn the user.  */
1608     }
1609 }
1610
1611 /* Open the file specified by NAME and hand it off to BFD for
1612    preliminary analysis.  Return a newly initialized bfd *, which
1613    includes a newly malloc'd` copy of NAME (tilde-expanded and made
1614    absolute).  In case of trouble, error() is called.  */
1615
1616 bfd *
1617 symfile_bfd_open (char *name)
1618 {
1619   bfd *sym_bfd;
1620   int desc;
1621   char *absolute_name;
1622
1623   if (remote_filename_p (name))
1624     {
1625       name = xstrdup (name);
1626       sym_bfd = remote_bfd_open (name, gnutarget);
1627       if (!sym_bfd)
1628         {
1629           make_cleanup (xfree, name);
1630           error (_("`%s': can't open to read symbols: %s."), name,
1631                  bfd_errmsg (bfd_get_error ()));
1632         }
1633
1634       if (!bfd_check_format (sym_bfd, bfd_object))
1635         {
1636           bfd_close (sym_bfd);
1637           make_cleanup (xfree, name);
1638           error (_("`%s': can't read symbols: %s."), name,
1639                  bfd_errmsg (bfd_get_error ()));
1640         }
1641
1642       return sym_bfd;
1643     }
1644
1645   name = tilde_expand (name);   /* Returns 1st new malloc'd copy.  */
1646
1647   /* Look down path for it, allocate 2nd new malloc'd copy.  */
1648   desc = openp (getenv ("PATH"), OPF_TRY_CWD_FIRST, name,
1649                 O_RDONLY | O_BINARY, &absolute_name);
1650 #if defined(__GO32__) || defined(_WIN32) || defined (__CYGWIN__)
1651   if (desc < 0)
1652     {
1653       char *exename = alloca (strlen (name) + 5);
1654       strcat (strcpy (exename, name), ".exe");
1655       desc = openp (getenv ("PATH"), OPF_TRY_CWD_FIRST, exename,
1656                     O_RDONLY | O_BINARY, &absolute_name);
1657     }
1658 #endif
1659   if (desc < 0)
1660     {
1661       make_cleanup (xfree, name);
1662       perror_with_name (name);
1663     }
1664
1665   /* Free 1st new malloc'd copy, but keep the 2nd malloc'd copy in
1666      bfd.  It'll be freed in free_objfile(). */
1667   xfree (name);
1668   name = absolute_name;
1669
1670   sym_bfd = bfd_fopen (name, gnutarget, FOPEN_RB, desc);
1671   if (!sym_bfd)
1672     {
1673       close (desc);
1674       make_cleanup (xfree, name);
1675       error (_("`%s': can't open to read symbols: %s."), name,
1676              bfd_errmsg (bfd_get_error ()));
1677     }
1678   bfd_set_cacheable (sym_bfd, 1);
1679
1680   if (!bfd_check_format (sym_bfd, bfd_object))
1681     {
1682       /* FIXME: should be checking for errors from bfd_close (for one
1683          thing, on error it does not free all the storage associated
1684          with the bfd).  */
1685       bfd_close (sym_bfd);      /* This also closes desc.  */
1686       make_cleanup (xfree, name);
1687       error (_("`%s': can't read symbols: %s."), name,
1688              bfd_errmsg (bfd_get_error ()));
1689     }
1690
1691   /* bfd_usrdata exists for applications and libbfd must not touch it.  */
1692   gdb_assert (bfd_usrdata (sym_bfd) == NULL);
1693
1694   return sym_bfd;
1695 }
1696
1697 /* Return the section index for SECTION_NAME on OBJFILE.  Return -1 if
1698    the section was not found.  */
1699
1700 int
1701 get_section_index (struct objfile *objfile, char *section_name)
1702 {
1703   asection *sect = bfd_get_section_by_name (objfile->obfd, section_name);
1704
1705   if (sect)
1706     return sect->index;
1707   else
1708     return -1;
1709 }
1710
1711 /* Link SF into the global symtab_fns list.  Called on startup by the
1712    _initialize routine in each object file format reader, to register
1713    information about each format the the reader is prepared to
1714    handle. */
1715
1716 void
1717 add_symtab_fns (struct sym_fns *sf)
1718 {
1719   sf->next = symtab_fns;
1720   symtab_fns = sf;
1721 }
1722
1723 /* Initialize OBJFILE to read symbols from its associated BFD.  It
1724    either returns or calls error().  The result is an initialized
1725    struct sym_fns in the objfile structure, that contains cached
1726    information about the symbol file.  */
1727
1728 static struct sym_fns *
1729 find_sym_fns (bfd *abfd)
1730 {
1731   struct sym_fns *sf;
1732   enum bfd_flavour our_flavour = bfd_get_flavour (abfd);
1733
1734   if (our_flavour == bfd_target_srec_flavour
1735       || our_flavour == bfd_target_ihex_flavour
1736       || our_flavour == bfd_target_tekhex_flavour)
1737     return NULL;        /* No symbols.  */
1738
1739   for (sf = symtab_fns; sf != NULL; sf = sf->next)
1740     if (our_flavour == sf->sym_flavour)
1741       return sf;
1742
1743   error (_("I'm sorry, Dave, I can't do that.  Symbol format `%s' unknown."),
1744          bfd_get_target (abfd));
1745 }
1746 \f
1747
1748 /* This function runs the load command of our current target.  */
1749
1750 static void
1751 load_command (char *arg, int from_tty)
1752 {
1753   /* The user might be reloading because the binary has changed.  Take
1754      this opportunity to check.  */
1755   reopen_exec_file ();
1756   reread_symbols ();
1757
1758   if (arg == NULL)
1759     {
1760       char *parg;
1761       int count = 0;
1762
1763       parg = arg = get_exec_file (1);
1764
1765       /* Count how many \ " ' tab space there are in the name.  */
1766       while ((parg = strpbrk (parg, "\\\"'\t ")))
1767         {
1768           parg++;
1769           count++;
1770         }
1771
1772       if (count)
1773         {
1774           /* We need to quote this string so buildargv can pull it apart.  */
1775           char *temp = xmalloc (strlen (arg) + count + 1 );
1776           char *ptemp = temp;
1777           char *prev;
1778
1779           make_cleanup (xfree, temp);
1780
1781           prev = parg = arg;
1782           while ((parg = strpbrk (parg, "\\\"'\t ")))
1783             {
1784               strncpy (ptemp, prev, parg - prev);
1785               ptemp += parg - prev;
1786               prev = parg++;
1787               *ptemp++ = '\\';
1788             }
1789           strcpy (ptemp, prev);
1790
1791           arg = temp;
1792         }
1793     }
1794
1795   target_load (arg, from_tty);
1796
1797   /* After re-loading the executable, we don't really know which
1798      overlays are mapped any more.  */
1799   overlay_cache_invalid = 1;
1800 }
1801
1802 /* This version of "load" should be usable for any target.  Currently
1803    it is just used for remote targets, not inftarg.c or core files,
1804    on the theory that only in that case is it useful.
1805
1806    Avoiding xmodem and the like seems like a win (a) because we don't have
1807    to worry about finding it, and (b) On VMS, fork() is very slow and so
1808    we don't want to run a subprocess.  On the other hand, I'm not sure how
1809    performance compares.  */
1810
1811 static int validate_download = 0;
1812
1813 /* Callback service function for generic_load (bfd_map_over_sections).  */
1814
1815 static void
1816 add_section_size_callback (bfd *abfd, asection *asec, void *data)
1817 {
1818   bfd_size_type *sum = data;
1819
1820   *sum += bfd_get_section_size (asec);
1821 }
1822
1823 /* Opaque data for load_section_callback.  */
1824 struct load_section_data {
1825   unsigned long load_offset;
1826   struct load_progress_data *progress_data;
1827   VEC(memory_write_request_s) *requests;
1828 };
1829
1830 /* Opaque data for load_progress.  */
1831 struct load_progress_data {
1832   /* Cumulative data.  */
1833   unsigned long write_count;
1834   unsigned long data_count;
1835   bfd_size_type total_size;
1836 };
1837
1838 /* Opaque data for load_progress for a single section.  */
1839 struct load_progress_section_data {
1840   struct load_progress_data *cumulative;
1841
1842   /* Per-section data.  */
1843   const char *section_name;
1844   ULONGEST section_sent;
1845   ULONGEST section_size;
1846   CORE_ADDR lma;
1847   gdb_byte *buffer;
1848 };
1849
1850 /* Target write callback routine for progress reporting.  */
1851
1852 static void
1853 load_progress (ULONGEST bytes, void *untyped_arg)
1854 {
1855   struct load_progress_section_data *args = untyped_arg;
1856   struct load_progress_data *totals;
1857
1858   if (args == NULL)
1859     /* Writing padding data.  No easy way to get at the cumulative
1860        stats, so just ignore this.  */
1861     return;
1862
1863   totals = args->cumulative;
1864
1865   if (bytes == 0 && args->section_sent == 0)
1866     {
1867       /* The write is just starting.  Let the user know we've started
1868          this section.  */
1869       ui_out_message (uiout, 0, "Loading section %s, size %s lma %s\n",
1870                       args->section_name, hex_string (args->section_size),
1871                       paddress (target_gdbarch, args->lma));
1872       return;
1873     }
1874
1875   if (validate_download)
1876     {
1877       /* Broken memories and broken monitors manifest themselves here
1878          when bring new computers to life.  This doubles already slow
1879          downloads.  */
1880       /* NOTE: cagney/1999-10-18: A more efficient implementation
1881          might add a verify_memory() method to the target vector and
1882          then use that.  remote.c could implement that method using
1883          the ``qCRC'' packet.  */
1884       gdb_byte *check = xmalloc (bytes);
1885       struct cleanup *verify_cleanups = make_cleanup (xfree, check);
1886
1887       if (target_read_memory (args->lma, check, bytes) != 0)
1888         error (_("Download verify read failed at %s"),
1889                paddress (target_gdbarch, args->lma));
1890       if (memcmp (args->buffer, check, bytes) != 0)
1891         error (_("Download verify compare failed at %s"),
1892                paddress (target_gdbarch, args->lma));
1893       do_cleanups (verify_cleanups);
1894     }
1895   totals->data_count += bytes;
1896   args->lma += bytes;
1897   args->buffer += bytes;
1898   totals->write_count += 1;
1899   args->section_sent += bytes;
1900   if (quit_flag
1901       || (deprecated_ui_load_progress_hook != NULL
1902           && deprecated_ui_load_progress_hook (args->section_name,
1903                                                args->section_sent)))
1904     error (_("Canceled the download"));
1905
1906   if (deprecated_show_load_progress != NULL)
1907     deprecated_show_load_progress (args->section_name,
1908                                    args->section_sent,
1909                                    args->section_size,
1910                                    totals->data_count,
1911                                    totals->total_size);
1912 }
1913
1914 /* Callback service function for generic_load (bfd_map_over_sections).  */
1915
1916 static void
1917 load_section_callback (bfd *abfd, asection *asec, void *data)
1918 {
1919   struct memory_write_request *new_request;
1920   struct load_section_data *args = data;
1921   struct load_progress_section_data *section_data;
1922   bfd_size_type size = bfd_get_section_size (asec);
1923   gdb_byte *buffer;
1924   const char *sect_name = bfd_get_section_name (abfd, asec);
1925
1926   if ((bfd_get_section_flags (abfd, asec) & SEC_LOAD) == 0)
1927     return;
1928
1929   if (size == 0)
1930     return;
1931
1932   new_request = VEC_safe_push (memory_write_request_s,
1933                                args->requests, NULL);
1934   memset (new_request, 0, sizeof (struct memory_write_request));
1935   section_data = xcalloc (1, sizeof (struct load_progress_section_data));
1936   new_request->begin = bfd_section_lma (abfd, asec) + args->load_offset;
1937   new_request->end = new_request->begin + size; /* FIXME Should size be in instead?  */
1938   new_request->data = xmalloc (size);
1939   new_request->baton = section_data;
1940
1941   buffer = new_request->data;
1942
1943   section_data->cumulative = args->progress_data;
1944   section_data->section_name = sect_name;
1945   section_data->section_size = size;
1946   section_data->lma = new_request->begin;
1947   section_data->buffer = buffer;
1948
1949   bfd_get_section_contents (abfd, asec, buffer, 0, size);
1950 }
1951
1952 /* Clean up an entire memory request vector, including load
1953    data and progress records.  */
1954
1955 static void
1956 clear_memory_write_data (void *arg)
1957 {
1958   VEC(memory_write_request_s) **vec_p = arg;
1959   VEC(memory_write_request_s) *vec = *vec_p;
1960   int i;
1961   struct memory_write_request *mr;
1962
1963   for (i = 0; VEC_iterate (memory_write_request_s, vec, i, mr); ++i)
1964     {
1965       xfree (mr->data);
1966       xfree (mr->baton);
1967     }
1968   VEC_free (memory_write_request_s, vec);
1969 }
1970
1971 void
1972 generic_load (char *args, int from_tty)
1973 {
1974   bfd *loadfile_bfd;
1975   struct timeval start_time, end_time;
1976   char *filename;
1977   struct cleanup *old_cleanups = make_cleanup (null_cleanup, 0);
1978   struct load_section_data cbdata;
1979   struct load_progress_data total_progress;
1980
1981   CORE_ADDR entry;
1982   char **argv;
1983
1984   memset (&cbdata, 0, sizeof (cbdata));
1985   memset (&total_progress, 0, sizeof (total_progress));
1986   cbdata.progress_data = &total_progress;
1987
1988   make_cleanup (clear_memory_write_data, &cbdata.requests);
1989
1990   if (args == NULL)
1991     error_no_arg (_("file to load"));
1992
1993   argv = gdb_buildargv (args);
1994   make_cleanup_freeargv (argv);
1995
1996   filename = tilde_expand (argv[0]);
1997   make_cleanup (xfree, filename);
1998
1999   if (argv[1] != NULL)
2000     {
2001       char *endptr;
2002
2003       cbdata.load_offset = strtoul (argv[1], &endptr, 0);
2004
2005       /* If the last word was not a valid number then
2006          treat it as a file name with spaces in.  */
2007       if (argv[1] == endptr)
2008         error (_("Invalid download offset:%s."), argv[1]);
2009
2010       if (argv[2] != NULL)
2011         error (_("Too many parameters."));
2012     }
2013
2014   /* Open the file for loading. */
2015   loadfile_bfd = bfd_openr (filename, gnutarget);
2016   if (loadfile_bfd == NULL)
2017     {
2018       perror_with_name (filename);
2019       return;
2020     }
2021
2022   /* FIXME: should be checking for errors from bfd_close (for one thing,
2023      on error it does not free all the storage associated with the
2024      bfd).  */
2025   make_cleanup_bfd_close (loadfile_bfd);
2026
2027   if (!bfd_check_format (loadfile_bfd, bfd_object))
2028     {
2029       error (_("\"%s\" is not an object file: %s"), filename,
2030              bfd_errmsg (bfd_get_error ()));
2031     }
2032
2033   bfd_map_over_sections (loadfile_bfd, add_section_size_callback,
2034                          (void *) &total_progress.total_size);
2035
2036   bfd_map_over_sections (loadfile_bfd, load_section_callback, &cbdata);
2037
2038   gettimeofday (&start_time, NULL);
2039
2040   if (target_write_memory_blocks (cbdata.requests, flash_discard,
2041                                   load_progress) != 0)
2042     error (_("Load failed"));
2043
2044   gettimeofday (&end_time, NULL);
2045
2046   entry = bfd_get_start_address (loadfile_bfd);
2047   ui_out_text (uiout, "Start address ");
2048   ui_out_field_fmt (uiout, "address", "%s", paddress (target_gdbarch, entry));
2049   ui_out_text (uiout, ", load size ");
2050   ui_out_field_fmt (uiout, "load-size", "%lu", total_progress.data_count);
2051   ui_out_text (uiout, "\n");
2052   /* We were doing this in remote-mips.c, I suspect it is right
2053      for other targets too.  */
2054   regcache_write_pc (get_current_regcache (), entry);
2055
2056   /* FIXME: are we supposed to call symbol_file_add or not?  According
2057      to a comment from remote-mips.c (where a call to symbol_file_add
2058      was commented out), making the call confuses GDB if more than one
2059      file is loaded in.  Some targets do (e.g., remote-vx.c) but
2060      others don't (or didn't - perhaps they have all been deleted).  */
2061
2062   print_transfer_performance (gdb_stdout, total_progress.data_count,
2063                               total_progress.write_count,
2064                               &start_time, &end_time);
2065
2066   do_cleanups (old_cleanups);
2067 }
2068
2069 /* Report how fast the transfer went. */
2070
2071 /* DEPRECATED: cagney/1999-10-18: report_transfer_performance is being
2072    replaced by print_transfer_performance (with a very different
2073    function signature). */
2074
2075 void
2076 report_transfer_performance (unsigned long data_count, time_t start_time,
2077                              time_t end_time)
2078 {
2079   struct timeval start, end;
2080
2081   start.tv_sec = start_time;
2082   start.tv_usec = 0;
2083   end.tv_sec = end_time;
2084   end.tv_usec = 0;
2085
2086   print_transfer_performance (gdb_stdout, data_count, 0, &start, &end);
2087 }
2088
2089 void
2090 print_transfer_performance (struct ui_file *stream,
2091                             unsigned long data_count,
2092                             unsigned long write_count,
2093                             const struct timeval *start_time,
2094                             const struct timeval *end_time)
2095 {
2096   ULONGEST time_count;
2097
2098   /* Compute the elapsed time in milliseconds, as a tradeoff between
2099      accuracy and overflow.  */
2100   time_count = (end_time->tv_sec - start_time->tv_sec) * 1000;
2101   time_count += (end_time->tv_usec - start_time->tv_usec) / 1000;
2102
2103   ui_out_text (uiout, "Transfer rate: ");
2104   if (time_count > 0)
2105     {
2106       unsigned long rate = ((ULONGEST) data_count * 1000) / time_count;
2107
2108       if (ui_out_is_mi_like_p (uiout))
2109         {
2110           ui_out_field_fmt (uiout, "transfer-rate", "%lu", rate * 8);
2111           ui_out_text (uiout, " bits/sec");
2112         }
2113       else if (rate < 1024)
2114         {
2115           ui_out_field_fmt (uiout, "transfer-rate", "%lu", rate);
2116           ui_out_text (uiout, " bytes/sec");
2117         }
2118       else
2119         {
2120           ui_out_field_fmt (uiout, "transfer-rate", "%lu", rate / 1024);
2121           ui_out_text (uiout, " KB/sec");
2122         }
2123     }
2124   else
2125     {
2126       ui_out_field_fmt (uiout, "transferred-bits", "%lu", (data_count * 8));
2127       ui_out_text (uiout, " bits in <1 sec");
2128     }
2129   if (write_count > 0)
2130     {
2131       ui_out_text (uiout, ", ");
2132       ui_out_field_fmt (uiout, "write-rate", "%lu", data_count / write_count);
2133       ui_out_text (uiout, " bytes/write");
2134     }
2135   ui_out_text (uiout, ".\n");
2136 }
2137
2138 /* This function allows the addition of incrementally linked object files.
2139    It does not modify any state in the target, only in the debugger.  */
2140 /* Note: ezannoni 2000-04-13 This function/command used to have a
2141    special case syntax for the rombug target (Rombug is the boot
2142    monitor for Microware's OS-9 / OS-9000, see remote-os9k.c). In the
2143    rombug case, the user doesn't need to supply a text address,
2144    instead a call to target_link() (in target.c) would supply the
2145    value to use. We are now discontinuing this type of ad hoc syntax. */
2146
2147 static void
2148 add_symbol_file_command (char *args, int from_tty)
2149 {
2150   struct gdbarch *gdbarch = get_current_arch ();
2151   char *filename = NULL;
2152   int flags = OBJF_USERLOADED;
2153   char *arg;
2154   int expecting_option = 0;
2155   int section_index = 0;
2156   int argcnt = 0;
2157   int sec_num = 0;
2158   int i;
2159   int expecting_sec_name = 0;
2160   int expecting_sec_addr = 0;
2161   char **argv;
2162
2163   struct sect_opt
2164   {
2165     char *name;
2166     char *value;
2167   };
2168
2169   struct section_addr_info *section_addrs;
2170   struct sect_opt *sect_opts = NULL;
2171   size_t num_sect_opts = 0;
2172   struct cleanup *my_cleanups = make_cleanup (null_cleanup, NULL);
2173
2174   num_sect_opts = 16;
2175   sect_opts = (struct sect_opt *) xmalloc (num_sect_opts
2176                                            * sizeof (struct sect_opt));
2177
2178   dont_repeat ();
2179
2180   if (args == NULL)
2181     error (_("add-symbol-file takes a file name and an address"));
2182
2183   argv = gdb_buildargv (args);
2184   make_cleanup_freeargv (argv);
2185
2186   for (arg = argv[0], argcnt = 0; arg != NULL; arg = argv[++argcnt])
2187     {
2188       /* Process the argument. */
2189       if (argcnt == 0)
2190         {
2191           /* The first argument is the file name. */
2192           filename = tilde_expand (arg);
2193           make_cleanup (xfree, filename);
2194         }
2195       else
2196         if (argcnt == 1)
2197           {
2198             /* The second argument is always the text address at which
2199                to load the program. */
2200             sect_opts[section_index].name = ".text";
2201             sect_opts[section_index].value = arg;
2202             if (++section_index >= num_sect_opts)
2203               {
2204                 num_sect_opts *= 2;
2205                 sect_opts = ((struct sect_opt *)
2206                              xrealloc (sect_opts,
2207                                        num_sect_opts
2208                                        * sizeof (struct sect_opt)));
2209               }
2210           }
2211         else
2212           {
2213             /* It's an option (starting with '-') or it's an argument
2214                to an option */
2215
2216             if (*arg == '-')
2217               {
2218                 if (strcmp (arg, "-readnow") == 0)
2219                   flags |= OBJF_READNOW;
2220                 else if (strcmp (arg, "-s") == 0)
2221                   {
2222                     expecting_sec_name = 1;
2223                     expecting_sec_addr = 1;
2224                   }
2225               }
2226             else
2227               {
2228                 if (expecting_sec_name)
2229                   {
2230                     sect_opts[section_index].name = arg;
2231                     expecting_sec_name = 0;
2232                   }
2233                 else
2234                   if (expecting_sec_addr)
2235                     {
2236                       sect_opts[section_index].value = arg;
2237                       expecting_sec_addr = 0;
2238                       if (++section_index >= num_sect_opts)
2239                         {
2240                           num_sect_opts *= 2;
2241                           sect_opts = ((struct sect_opt *)
2242                                        xrealloc (sect_opts,
2243                                                  num_sect_opts
2244                                                  * sizeof (struct sect_opt)));
2245                         }
2246                     }
2247                   else
2248                     error (_("USAGE: add-symbol-file <filename> <textaddress> [-mapped] [-readnow] [-s <secname> <addr>]*"));
2249               }
2250           }
2251     }
2252
2253   /* This command takes at least two arguments.  The first one is a
2254      filename, and the second is the address where this file has been
2255      loaded.  Abort now if this address hasn't been provided by the
2256      user.  */
2257   if (section_index < 1)
2258     error (_("The address where %s has been loaded is missing"), filename);
2259
2260   /* Print the prompt for the query below. And save the arguments into
2261      a sect_addr_info structure to be passed around to other
2262      functions.  We have to split this up into separate print
2263      statements because hex_string returns a local static
2264      string. */
2265
2266   printf_unfiltered (_("add symbol table from file \"%s\" at\n"), filename);
2267   section_addrs = alloc_section_addr_info (section_index);
2268   make_cleanup (xfree, section_addrs);
2269   for (i = 0; i < section_index; i++)
2270     {
2271       CORE_ADDR addr;
2272       char *val = sect_opts[i].value;
2273       char *sec = sect_opts[i].name;
2274
2275       addr = parse_and_eval_address (val);
2276
2277       /* Here we store the section offsets in the order they were
2278          entered on the command line. */
2279       section_addrs->other[sec_num].name = sec;
2280       section_addrs->other[sec_num].addr = addr;
2281       printf_unfiltered ("\t%s_addr = %s\n", sec,
2282                          paddress (gdbarch, addr));
2283       sec_num++;
2284
2285       /* The object's sections are initialized when a
2286          call is made to build_objfile_section_table (objfile).
2287          This happens in reread_symbols.
2288          At this point, we don't know what file type this is,
2289          so we can't determine what section names are valid.  */
2290     }
2291
2292   if (from_tty && (!query ("%s", "")))
2293     error (_("Not confirmed."));
2294
2295   symbol_file_add (filename, from_tty ? SYMFILE_VERBOSE : 0,
2296                    section_addrs, flags);
2297
2298   /* Getting new symbols may change our opinion about what is
2299      frameless.  */
2300   reinit_frame_cache ();
2301   do_cleanups (my_cleanups);
2302 }
2303 \f
2304
2305 /* Re-read symbols if a symbol-file has changed.  */
2306 void
2307 reread_symbols (void)
2308 {
2309   struct objfile *objfile;
2310   long new_modtime;
2311   int reread_one = 0;
2312   struct stat new_statbuf;
2313   int res;
2314
2315   /* With the addition of shared libraries, this should be modified,
2316      the load time should be saved in the partial symbol tables, since
2317      different tables may come from different source files.  FIXME.
2318      This routine should then walk down each partial symbol table
2319      and see if the symbol table that it originates from has been changed */
2320
2321   for (objfile = object_files; objfile; objfile = objfile->next)
2322     {
2323       if (objfile->obfd)
2324         {
2325 #ifdef DEPRECATED_IBM6000_TARGET
2326           /* If this object is from a shared library, then you should
2327              stat on the library name, not member name. */
2328
2329           if (objfile->obfd->my_archive)
2330             res = stat (objfile->obfd->my_archive->filename, &new_statbuf);
2331           else
2332 #endif
2333             res = stat (objfile->name, &new_statbuf);
2334           if (res != 0)
2335             {
2336               /* FIXME, should use print_sys_errmsg but it's not filtered. */
2337               printf_unfiltered (_("`%s' has disappeared; keeping its symbols.\n"),
2338                                objfile->name);
2339               continue;
2340             }
2341           new_modtime = new_statbuf.st_mtime;
2342           if (new_modtime != objfile->mtime)
2343             {
2344               struct cleanup *old_cleanups;
2345               struct section_offsets *offsets;
2346               int num_offsets;
2347               char *obfd_filename;
2348
2349               printf_unfiltered (_("`%s' has changed; re-reading symbols.\n"),
2350                                objfile->name);
2351
2352               /* There are various functions like symbol_file_add,
2353                  symfile_bfd_open, syms_from_objfile, etc., which might
2354                  appear to do what we want.  But they have various other
2355                  effects which we *don't* want.  So we just do stuff
2356                  ourselves.  We don't worry about mapped files (for one thing,
2357                  any mapped file will be out of date).  */
2358
2359               /* If we get an error, blow away this objfile (not sure if
2360                  that is the correct response for things like shared
2361                  libraries).  */
2362               old_cleanups = make_cleanup_free_objfile (objfile);
2363               /* We need to do this whenever any symbols go away.  */
2364               make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/);
2365
2366               if (exec_bfd != NULL && strcmp (bfd_get_filename (objfile->obfd),
2367                                               bfd_get_filename (exec_bfd)) == 0)
2368                 {
2369                   /* Reload EXEC_BFD without asking anything.  */
2370
2371                   exec_file_attach (bfd_get_filename (objfile->obfd), 0);
2372                 }
2373
2374               /* Clean up any state BFD has sitting around.  We don't need
2375                  to close the descriptor but BFD lacks a way of closing the
2376                  BFD without closing the descriptor.  */
2377               obfd_filename = bfd_get_filename (objfile->obfd);
2378               if (!bfd_close (objfile->obfd))
2379                 error (_("Can't close BFD for %s: %s"), objfile->name,
2380                        bfd_errmsg (bfd_get_error ()));
2381               if (remote_filename_p (obfd_filename))
2382                 objfile->obfd = remote_bfd_open (obfd_filename, gnutarget);
2383               else
2384                 objfile->obfd = bfd_openr (obfd_filename, gnutarget);
2385               if (objfile->obfd == NULL)
2386                 error (_("Can't open %s to read symbols."), objfile->name);
2387               else
2388                 objfile->obfd = gdb_bfd_ref (objfile->obfd);
2389               /* bfd_openr sets cacheable to true, which is what we want.  */
2390               if (!bfd_check_format (objfile->obfd, bfd_object))
2391                 error (_("Can't read symbols from %s: %s."), objfile->name,
2392                        bfd_errmsg (bfd_get_error ()));
2393
2394               /* Save the offsets, we will nuke them with the rest of the
2395                  objfile_obstack.  */
2396               num_offsets = objfile->num_sections;
2397               offsets = ((struct section_offsets *)
2398                          alloca (SIZEOF_N_SECTION_OFFSETS (num_offsets)));
2399               memcpy (offsets, objfile->section_offsets,
2400                       SIZEOF_N_SECTION_OFFSETS (num_offsets));
2401
2402               /* Remove any references to this objfile in the global
2403                  value lists.  */
2404               preserve_values (objfile);
2405
2406               /* Nuke all the state that we will re-read.  Much of the following
2407                  code which sets things to NULL really is necessary to tell
2408                  other parts of GDB that there is nothing currently there.
2409                  
2410                  Try to keep the freeing order compatible with free_objfile.  */
2411
2412               if (objfile->sf != NULL)
2413                 {
2414                   (*objfile->sf->sym_finish) (objfile);
2415                 }
2416
2417               clear_objfile_data (objfile);
2418
2419               /* FIXME: Do we have to free a whole linked list, or is this
2420                  enough?  */
2421               if (objfile->global_psymbols.list)
2422                 xfree (objfile->global_psymbols.list);
2423               memset (&objfile->global_psymbols, 0,
2424                       sizeof (objfile->global_psymbols));
2425               if (objfile->static_psymbols.list)
2426                 xfree (objfile->static_psymbols.list);
2427               memset (&objfile->static_psymbols, 0,
2428                       sizeof (objfile->static_psymbols));
2429
2430               /* Free the obstacks for non-reusable objfiles */
2431               bcache_xfree (objfile->psymbol_cache);
2432               objfile->psymbol_cache = bcache_xmalloc ();
2433               bcache_xfree (objfile->macro_cache);
2434               objfile->macro_cache = bcache_xmalloc ();
2435               bcache_xfree (objfile->filename_cache);
2436               objfile->filename_cache = bcache_xmalloc ();
2437               if (objfile->demangled_names_hash != NULL)
2438                 {
2439                   htab_delete (objfile->demangled_names_hash);
2440                   objfile->demangled_names_hash = NULL;
2441                 }
2442               obstack_free (&objfile->objfile_obstack, 0);
2443               objfile->sections = NULL;
2444               objfile->symtabs = NULL;
2445               objfile->psymtabs = NULL;
2446               objfile->psymtabs_addrmap = NULL;
2447               objfile->free_psymtabs = NULL;
2448               objfile->cp_namespace_symtab = NULL;
2449               objfile->msymbols = NULL;
2450               objfile->deprecated_sym_private = NULL;
2451               objfile->minimal_symbol_count = 0;
2452               memset (&objfile->msymbol_hash, 0,
2453                       sizeof (objfile->msymbol_hash));
2454               memset (&objfile->msymbol_demangled_hash, 0,
2455                       sizeof (objfile->msymbol_demangled_hash));
2456
2457               objfile->psymbol_cache = bcache_xmalloc ();
2458               objfile->macro_cache = bcache_xmalloc ();
2459               objfile->filename_cache = bcache_xmalloc ();
2460               /* obstack_init also initializes the obstack so it is
2461                  empty.  We could use obstack_specify_allocation but
2462                  gdb_obstack.h specifies the alloc/dealloc
2463                  functions.  */
2464               obstack_init (&objfile->objfile_obstack);
2465               if (build_objfile_section_table (objfile))
2466                 {
2467                   error (_("Can't find the file sections in `%s': %s"),
2468                          objfile->name, bfd_errmsg (bfd_get_error ()));
2469                 }
2470               terminate_minimal_symbol_table (objfile);
2471
2472               /* We use the same section offsets as from last time.  I'm not
2473                  sure whether that is always correct for shared libraries.  */
2474               objfile->section_offsets = (struct section_offsets *)
2475                 obstack_alloc (&objfile->objfile_obstack,
2476                                SIZEOF_N_SECTION_OFFSETS (num_offsets));
2477               memcpy (objfile->section_offsets, offsets,
2478                       SIZEOF_N_SECTION_OFFSETS (num_offsets));
2479               objfile->num_sections = num_offsets;
2480
2481               /* What the hell is sym_new_init for, anyway?  The concept of
2482                  distinguishing between the main file and additional files
2483                  in this way seems rather dubious.  */
2484               if (objfile == symfile_objfile)
2485                 {
2486                   (*objfile->sf->sym_new_init) (objfile);
2487                 }
2488
2489               (*objfile->sf->sym_init) (objfile);
2490               clear_complaints (&symfile_complaints, 1, 1);
2491               /* The "mainline" parameter is a hideous hack; I think leaving it
2492                  zero is OK since dbxread.c also does what it needs to do if
2493                  objfile->global_psymbols.size is 0.  */
2494               (*objfile->sf->sym_read) (objfile, 0);
2495               if (!objfile_has_symbols (objfile))
2496                 {
2497                   wrap_here ("");
2498                   printf_unfiltered (_("(no debugging symbols found)\n"));
2499                   wrap_here ("");
2500                 }
2501
2502               /* We're done reading the symbol file; finish off complaints.  */
2503               clear_complaints (&symfile_complaints, 0, 1);
2504
2505               /* Getting new symbols may change our opinion about what is
2506                  frameless.  */
2507
2508               reinit_frame_cache ();
2509
2510               /* Discard cleanups as symbol reading was successful.  */
2511               discard_cleanups (old_cleanups);
2512
2513               /* If the mtime has changed between the time we set new_modtime
2514                  and now, we *want* this to be out of date, so don't call stat
2515                  again now.  */
2516               objfile->mtime = new_modtime;
2517               reread_one = 1;
2518               reread_separate_symbols (objfile);
2519               init_entry_point_info (objfile);
2520             }
2521         }
2522     }
2523
2524   if (reread_one)
2525     {
2526       /* Notify objfiles that we've modified objfile sections.  */
2527       objfiles_changed ();
2528
2529       clear_symtab_users ();
2530       /* At least one objfile has changed, so we can consider that
2531          the executable we're debugging has changed too.  */
2532       observer_notify_executable_changed ();
2533     }
2534 }
2535
2536
2537 /* Handle separate debug info for OBJFILE, which has just been
2538    re-read:
2539    - If we had separate debug info before, but now we don't, get rid
2540      of the separated objfile.
2541    - If we didn't have separated debug info before, but now we do,
2542      read in the new separated debug info file.
2543    - If the debug link points to a different file, toss the old one
2544      and read the new one.
2545    This function does *not* handle the case where objfile is still
2546    using the same separate debug info file, but that file's timestamp
2547    has changed.  That case should be handled by the loop in
2548    reread_symbols already.  */
2549 static void
2550 reread_separate_symbols (struct objfile *objfile)
2551 {
2552   char *debug_file;
2553   unsigned long crc32;
2554
2555   /* Does the updated objfile's debug info live in a
2556      separate file?  */
2557   debug_file = find_separate_debug_file (objfile);
2558
2559   if (objfile->separate_debug_objfile)
2560     {
2561       /* There are two cases where we need to get rid of
2562          the old separated debug info objfile:
2563          - if the new primary objfile doesn't have
2564          separated debug info, or
2565          - if the new primary objfile has separate debug
2566          info, but it's under a different filename.
2567
2568          If the old and new objfiles both have separate
2569          debug info, under the same filename, then we're
2570          okay --- if the separated file's contents have
2571          changed, we will have caught that when we
2572          visited it in this function's outermost
2573          loop.  */
2574       if (! debug_file
2575           || strcmp (debug_file, objfile->separate_debug_objfile->name) != 0)
2576         free_objfile (objfile->separate_debug_objfile);
2577     }
2578
2579   /* If the new objfile has separate debug info, and we
2580      haven't loaded it already, do so now.  */
2581   if (debug_file
2582       && ! objfile->separate_debug_objfile)
2583     {
2584       /* Use the same section offset table as objfile itself.
2585          Preserve the flags from objfile that make sense.  */
2586       objfile->separate_debug_objfile
2587         = (symbol_file_add_with_addrs_or_offsets
2588            (symfile_bfd_open (debug_file),
2589             info_verbose ? SYMFILE_VERBOSE : 0,
2590             0, /* No addr table.  */
2591             objfile->section_offsets, objfile->num_sections,
2592             objfile->flags & (OBJF_REORDERED | OBJF_SHARED | OBJF_READNOW
2593                               | OBJF_USERLOADED)));
2594       objfile->separate_debug_objfile->separate_debug_objfile_backlink
2595         = objfile;
2596     }
2597   if (debug_file)
2598     xfree (debug_file);
2599 }
2600
2601
2602 \f
2603
2604
2605 typedef struct
2606 {
2607   char *ext;
2608   enum language lang;
2609 }
2610 filename_language;
2611
2612 static filename_language *filename_language_table;
2613 static int fl_table_size, fl_table_next;
2614
2615 static void
2616 add_filename_language (char *ext, enum language lang)
2617 {
2618   if (fl_table_next >= fl_table_size)
2619     {
2620       fl_table_size += 10;
2621       filename_language_table =
2622         xrealloc (filename_language_table,
2623                   fl_table_size * sizeof (*filename_language_table));
2624     }
2625
2626   filename_language_table[fl_table_next].ext = xstrdup (ext);
2627   filename_language_table[fl_table_next].lang = lang;
2628   fl_table_next++;
2629 }
2630
2631 static char *ext_args;
2632 static void
2633 show_ext_args (struct ui_file *file, int from_tty,
2634                struct cmd_list_element *c, const char *value)
2635 {
2636   fprintf_filtered (file, _("\
2637 Mapping between filename extension and source language is \"%s\".\n"),
2638                     value);
2639 }
2640
2641 static void
2642 set_ext_lang_command (char *args, int from_tty, struct cmd_list_element *e)
2643 {
2644   int i;
2645   char *cp = ext_args;
2646   enum language lang;
2647
2648   /* First arg is filename extension, starting with '.' */
2649   if (*cp != '.')
2650     error (_("'%s': Filename extension must begin with '.'"), ext_args);
2651
2652   /* Find end of first arg.  */
2653   while (*cp && !isspace (*cp))
2654     cp++;
2655
2656   if (*cp == '\0')
2657     error (_("'%s': two arguments required -- filename extension and language"),
2658            ext_args);
2659
2660   /* Null-terminate first arg */
2661   *cp++ = '\0';
2662
2663   /* Find beginning of second arg, which should be a source language.  */
2664   while (*cp && isspace (*cp))
2665     cp++;
2666
2667   if (*cp == '\0')
2668     error (_("'%s': two arguments required -- filename extension and language"),
2669            ext_args);
2670
2671   /* Lookup the language from among those we know.  */
2672   lang = language_enum (cp);
2673
2674   /* Now lookup the filename extension: do we already know it?  */
2675   for (i = 0; i < fl_table_next; i++)
2676     if (0 == strcmp (ext_args, filename_language_table[i].ext))
2677       break;
2678
2679   if (i >= fl_table_next)
2680     {
2681       /* new file extension */
2682       add_filename_language (ext_args, lang);
2683     }
2684   else
2685     {
2686       /* redefining a previously known filename extension */
2687
2688       /* if (from_tty) */
2689       /*   query ("Really make files of type %s '%s'?", */
2690       /*          ext_args, language_str (lang));           */
2691
2692       xfree (filename_language_table[i].ext);
2693       filename_language_table[i].ext = xstrdup (ext_args);
2694       filename_language_table[i].lang = lang;
2695     }
2696 }
2697
2698 static void
2699 info_ext_lang_command (char *args, int from_tty)
2700 {
2701   int i;
2702
2703   printf_filtered (_("Filename extensions and the languages they represent:"));
2704   printf_filtered ("\n\n");
2705   for (i = 0; i < fl_table_next; i++)
2706     printf_filtered ("\t%s\t- %s\n",
2707                      filename_language_table[i].ext,
2708                      language_str (filename_language_table[i].lang));
2709 }
2710
2711 static void
2712 init_filename_language_table (void)
2713 {
2714   if (fl_table_size == 0)       /* protect against repetition */
2715     {
2716       fl_table_size = 20;
2717       fl_table_next = 0;
2718       filename_language_table =
2719         xmalloc (fl_table_size * sizeof (*filename_language_table));
2720       add_filename_language (".c", language_c);
2721       add_filename_language (".C", language_cplus);
2722       add_filename_language (".cc", language_cplus);
2723       add_filename_language (".cp", language_cplus);
2724       add_filename_language (".cpp", language_cplus);
2725       add_filename_language (".cxx", language_cplus);
2726       add_filename_language (".c++", language_cplus);
2727       add_filename_language (".java", language_java);
2728       add_filename_language (".class", language_java);
2729       add_filename_language (".m", language_objc);
2730       add_filename_language (".f", language_fortran);
2731       add_filename_language (".F", language_fortran);
2732       add_filename_language (".s", language_asm);
2733       add_filename_language (".sx", language_asm);
2734       add_filename_language (".S", language_asm);
2735       add_filename_language (".pas", language_pascal);
2736       add_filename_language (".p", language_pascal);
2737       add_filename_language (".pp", language_pascal);
2738       add_filename_language (".adb", language_ada);
2739       add_filename_language (".ads", language_ada);
2740       add_filename_language (".a", language_ada);
2741       add_filename_language (".ada", language_ada);
2742     }
2743 }
2744
2745 enum language
2746 deduce_language_from_filename (char *filename)
2747 {
2748   int i;
2749   char *cp;
2750
2751   if (filename != NULL)
2752     if ((cp = strrchr (filename, '.')) != NULL)
2753       for (i = 0; i < fl_table_next; i++)
2754         if (strcmp (cp, filename_language_table[i].ext) == 0)
2755           return filename_language_table[i].lang;
2756
2757   return language_unknown;
2758 }
2759 \f
2760 /* allocate_symtab:
2761
2762    Allocate and partly initialize a new symbol table.  Return a pointer
2763    to it.  error() if no space.
2764
2765    Caller must set these fields:
2766    LINETABLE(symtab)
2767    symtab->blockvector
2768    symtab->dirname
2769    symtab->free_code
2770    symtab->free_ptr
2771    possibly free_named_symtabs (symtab->filename);
2772  */
2773
2774 struct symtab *
2775 allocate_symtab (char *filename, struct objfile *objfile)
2776 {
2777   struct symtab *symtab;
2778
2779   symtab = (struct symtab *)
2780     obstack_alloc (&objfile->objfile_obstack, sizeof (struct symtab));
2781   memset (symtab, 0, sizeof (*symtab));
2782   symtab->filename = (char *) bcache (filename, strlen (filename) + 1,
2783                                       objfile->filename_cache);
2784   symtab->fullname = NULL;
2785   symtab->language = deduce_language_from_filename (filename);
2786   symtab->debugformat = "unknown";
2787
2788   /* Hook it to the objfile it comes from */
2789
2790   symtab->objfile = objfile;
2791   symtab->next = objfile->symtabs;
2792   objfile->symtabs = symtab;
2793
2794   return (symtab);
2795 }
2796
2797 struct partial_symtab *
2798 allocate_psymtab (const char *filename, struct objfile *objfile)
2799 {
2800   struct partial_symtab *psymtab;
2801
2802   if (objfile->free_psymtabs)
2803     {
2804       psymtab = objfile->free_psymtabs;
2805       objfile->free_psymtabs = psymtab->next;
2806     }
2807   else
2808     psymtab = (struct partial_symtab *)
2809       obstack_alloc (&objfile->objfile_obstack,
2810                      sizeof (struct partial_symtab));
2811
2812   memset (psymtab, 0, sizeof (struct partial_symtab));
2813   psymtab->filename = (char *) bcache (filename, strlen (filename) + 1,
2814                                        objfile->filename_cache);
2815   psymtab->symtab = NULL;
2816
2817   /* Prepend it to the psymtab list for the objfile it belongs to.
2818      Psymtabs are searched in most recent inserted -> least recent
2819      inserted order. */
2820
2821   psymtab->objfile = objfile;
2822   psymtab->next = objfile->psymtabs;
2823   objfile->psymtabs = psymtab;
2824 #if 0
2825   {
2826     struct partial_symtab **prev_pst;
2827     psymtab->objfile = objfile;
2828     psymtab->next = NULL;
2829     prev_pst = &(objfile->psymtabs);
2830     while ((*prev_pst) != NULL)
2831       prev_pst = &((*prev_pst)->next);
2832     (*prev_pst) = psymtab;
2833   }
2834 #endif
2835
2836   return (psymtab);
2837 }
2838
2839 void
2840 discard_psymtab (struct partial_symtab *pst)
2841 {
2842   struct partial_symtab **prev_pst;
2843
2844   /* From dbxread.c:
2845      Empty psymtabs happen as a result of header files which don't
2846      have any symbols in them.  There can be a lot of them.  But this
2847      check is wrong, in that a psymtab with N_SLINE entries but
2848      nothing else is not empty, but we don't realize that.  Fixing
2849      that without slowing things down might be tricky.  */
2850
2851   /* First, snip it out of the psymtab chain */
2852
2853   prev_pst = &(pst->objfile->psymtabs);
2854   while ((*prev_pst) != pst)
2855     prev_pst = &((*prev_pst)->next);
2856   (*prev_pst) = pst->next;
2857
2858   /* Next, put it on a free list for recycling */
2859
2860   pst->next = pst->objfile->free_psymtabs;
2861   pst->objfile->free_psymtabs = pst;
2862 }
2863 \f
2864
2865 /* Reset all data structures in gdb which may contain references to symbol
2866    table data.  */
2867
2868 void
2869 clear_symtab_users (void)
2870 {
2871   /* Someday, we should do better than this, by only blowing away
2872      the things that really need to be blown.  */
2873
2874   /* Clear the "current" symtab first, because it is no longer valid.
2875      breakpoint_re_set may try to access the current symtab.  */
2876   clear_current_source_symtab_and_line ();
2877
2878   clear_displays ();
2879   breakpoint_re_set ();
2880   set_default_breakpoint (0, NULL, 0, 0, 0);
2881   clear_pc_function_cache ();
2882   observer_notify_new_objfile (NULL);
2883
2884   /* Clear globals which might have pointed into a removed objfile.
2885      FIXME: It's not clear which of these are supposed to persist
2886      between expressions and which ought to be reset each time.  */
2887   expression_context_block = NULL;
2888   innermost_block = NULL;
2889
2890   /* Varobj may refer to old symbols, perform a cleanup.  */
2891   varobj_invalidate ();
2892
2893 }
2894
2895 static void
2896 clear_symtab_users_cleanup (void *ignore)
2897 {
2898   clear_symtab_users ();
2899 }
2900
2901 /* clear_symtab_users_once:
2902
2903    This function is run after symbol reading, or from a cleanup.
2904    If an old symbol table was obsoleted, the old symbol table
2905    has been blown away, but the other GDB data structures that may
2906    reference it have not yet been cleared or re-directed.  (The old
2907    symtab was zapped, and the cleanup queued, in free_named_symtab()
2908    below.)
2909
2910    This function can be queued N times as a cleanup, or called
2911    directly; it will do all the work the first time, and then will be a
2912    no-op until the next time it is queued.  This works by bumping a
2913    counter at queueing time.  Much later when the cleanup is run, or at
2914    the end of symbol processing (in case the cleanup is discarded), if
2915    the queued count is greater than the "done-count", we do the work
2916    and set the done-count to the queued count.  If the queued count is
2917    less than or equal to the done-count, we just ignore the call.  This
2918    is needed because reading a single .o file will often replace many
2919    symtabs (one per .h file, for example), and we don't want to reset
2920    the breakpoints N times in the user's face.
2921
2922    The reason we both queue a cleanup, and call it directly after symbol
2923    reading, is because the cleanup protects us in case of errors, but is
2924    discarded if symbol reading is successful.  */
2925
2926 #if 0
2927 /* FIXME:  As free_named_symtabs is currently a big noop this function
2928    is no longer needed.  */
2929 static void clear_symtab_users_once (void);
2930
2931 static int clear_symtab_users_queued;
2932 static int clear_symtab_users_done;
2933
2934 static void
2935 clear_symtab_users_once (void)
2936 {
2937   /* Enforce once-per-`do_cleanups'-semantics */
2938   if (clear_symtab_users_queued <= clear_symtab_users_done)
2939     return;
2940   clear_symtab_users_done = clear_symtab_users_queued;
2941
2942   clear_symtab_users ();
2943 }
2944 #endif
2945
2946 /* Delete the specified psymtab, and any others that reference it.  */
2947
2948 static void
2949 cashier_psymtab (struct partial_symtab *pst)
2950 {
2951   struct partial_symtab *ps, *pprev = NULL;
2952   int i;
2953
2954   /* Find its previous psymtab in the chain */
2955   for (ps = pst->objfile->psymtabs; ps; ps = ps->next)
2956     {
2957       if (ps == pst)
2958         break;
2959       pprev = ps;
2960     }
2961
2962   if (ps)
2963     {
2964       /* Unhook it from the chain.  */
2965       if (ps == pst->objfile->psymtabs)
2966         pst->objfile->psymtabs = ps->next;
2967       else
2968         pprev->next = ps->next;
2969
2970       /* FIXME, we can't conveniently deallocate the entries in the
2971          partial_symbol lists (global_psymbols/static_psymbols) that
2972          this psymtab points to.  These just take up space until all
2973          the psymtabs are reclaimed.  Ditto the dependencies list and
2974          filename, which are all in the objfile_obstack.  */
2975
2976       /* We need to cashier any psymtab that has this one as a dependency... */
2977     again:
2978       for (ps = pst->objfile->psymtabs; ps; ps = ps->next)
2979         {
2980           for (i = 0; i < ps->number_of_dependencies; i++)
2981             {
2982               if (ps->dependencies[i] == pst)
2983                 {
2984                   cashier_psymtab (ps);
2985                   goto again;   /* Must restart, chain has been munged. */
2986                 }
2987             }
2988         }
2989     }
2990 }
2991
2992 /* If a symtab or psymtab for filename NAME is found, free it along
2993    with any dependent breakpoints, displays, etc.
2994    Used when loading new versions of object modules with the "add-file"
2995    command.  This is only called on the top-level symtab or psymtab's name;
2996    it is not called for subsidiary files such as .h files.
2997
2998    Return value is 1 if we blew away the environment, 0 if not.
2999    FIXME.  The return value appears to never be used.
3000
3001    FIXME.  I think this is not the best way to do this.  We should
3002    work on being gentler to the environment while still cleaning up
3003    all stray pointers into the freed symtab.  */
3004
3005 int
3006 free_named_symtabs (char *name)
3007 {
3008 #if 0
3009   /* FIXME:  With the new method of each objfile having it's own
3010      psymtab list, this function needs serious rethinking.  In particular,
3011      why was it ever necessary to toss psymtabs with specific compilation
3012      unit filenames, as opposed to all psymtabs from a particular symbol
3013      file?  -- fnf
3014      Well, the answer is that some systems permit reloading of particular
3015      compilation units.  We want to blow away any old info about these
3016      compilation units, regardless of which objfiles they arrived in. --gnu.  */
3017
3018   struct symtab *s;
3019   struct symtab *prev;
3020   struct partial_symtab *ps;
3021   struct blockvector *bv;
3022   int blewit = 0;
3023
3024   /* We only wack things if the symbol-reload switch is set.  */
3025   if (!symbol_reloading)
3026     return 0;
3027
3028   /* Some symbol formats have trouble providing file names... */
3029   if (name == 0 || *name == '\0')
3030     return 0;
3031
3032   /* Look for a psymtab with the specified name.  */
3033
3034 again2:
3035   for (ps = partial_symtab_list; ps; ps = ps->next)
3036     {
3037       if (strcmp (name, ps->filename) == 0)
3038         {
3039           cashier_psymtab (ps); /* Blow it away...and its little dog, too.  */
3040           goto again2;          /* Must restart, chain has been munged */
3041         }
3042     }
3043
3044   /* Look for a symtab with the specified name.  */
3045
3046   for (s = symtab_list; s; s = s->next)
3047     {
3048       if (strcmp (name, s->filename) == 0)
3049         break;
3050       prev = s;
3051     }
3052
3053   if (s)
3054     {
3055       if (s == symtab_list)
3056         symtab_list = s->next;
3057       else
3058         prev->next = s->next;
3059
3060       /* For now, queue a delete for all breakpoints, displays, etc., whether
3061          or not they depend on the symtab being freed.  This should be
3062          changed so that only those data structures affected are deleted.  */
3063
3064       /* But don't delete anything if the symtab is empty.
3065          This test is necessary due to a bug in "dbxread.c" that
3066          causes empty symtabs to be created for N_SO symbols that
3067          contain the pathname of the object file.  (This problem
3068          has been fixed in GDB 3.9x).  */
3069
3070       bv = BLOCKVECTOR (s);
3071       if (BLOCKVECTOR_NBLOCKS (bv) > 2
3072           || BLOCK_NSYMS (BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK))
3073           || BLOCK_NSYMS (BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK)))
3074         {
3075           complaint (&symfile_complaints, _("Replacing old symbols for `%s'"),
3076                      name);
3077           clear_symtab_users_queued++;
3078           make_cleanup (clear_symtab_users_once, 0);
3079           blewit = 1;
3080         }
3081       else
3082         complaint (&symfile_complaints, _("Empty symbol table found for `%s'"),
3083                    name);
3084
3085       free_symtab (s);
3086     }
3087   else
3088     {
3089       /* It is still possible that some breakpoints will be affected
3090          even though no symtab was found, since the file might have
3091          been compiled without debugging, and hence not be associated
3092          with a symtab.  In order to handle this correctly, we would need
3093          to keep a list of text address ranges for undebuggable files.
3094          For now, we do nothing, since this is a fairly obscure case.  */
3095       ;
3096     }
3097
3098   /* FIXME, what about the minimal symbol table? */
3099   return blewit;
3100 #else
3101   return (0);
3102 #endif
3103 }
3104 \f
3105 /* Allocate and partially fill a partial symtab.  It will be
3106    completely filled at the end of the symbol list.
3107
3108    FILENAME is the name of the symbol-file we are reading from. */
3109
3110 struct partial_symtab *
3111 start_psymtab_common (struct objfile *objfile,
3112                       struct section_offsets *section_offsets,
3113                       const char *filename,
3114                       CORE_ADDR textlow, struct partial_symbol **global_syms,
3115                       struct partial_symbol **static_syms)
3116 {
3117   struct partial_symtab *psymtab;
3118
3119   psymtab = allocate_psymtab (filename, objfile);
3120   psymtab->section_offsets = section_offsets;
3121   psymtab->textlow = textlow;
3122   psymtab->texthigh = psymtab->textlow;         /* default */
3123   psymtab->globals_offset = global_syms - objfile->global_psymbols.list;
3124   psymtab->statics_offset = static_syms - objfile->static_psymbols.list;
3125   return (psymtab);
3126 }
3127 \f
3128 /* Helper function, initialises partial symbol structure and stashes 
3129    it into objfile's bcache.  Note that our caching mechanism will
3130    use all fields of struct partial_symbol to determine hash value of the
3131    structure.  In other words, having two symbols with the same name but
3132    different domain (or address) is possible and correct.  */
3133
3134 static const struct partial_symbol *
3135 add_psymbol_to_bcache (char *name, int namelength, domain_enum domain,
3136                        enum address_class class,
3137                        long val,        /* Value as a long */
3138                        CORE_ADDR coreaddr,      /* Value as a CORE_ADDR */
3139                        enum language language, struct objfile *objfile,
3140                        int *added)
3141 {
3142   /* psymbol is static so that there will be no uninitialized gaps in the
3143      structure which might contain random data, causing cache misses in
3144      bcache. */
3145   static struct partial_symbol psymbol;
3146
3147   /* However, we must ensure that the entire 'value' field has been
3148      zeroed before assigning to it, because an assignment may not
3149      write the entire field.  */
3150   memset (&psymbol.ginfo.value, 0, sizeof (psymbol.ginfo.value));
3151   /* val and coreaddr are mutually exclusive, one of them *will* be zero */
3152   if (val != 0)
3153     {
3154       SYMBOL_VALUE (&psymbol) = val;
3155     }
3156   else
3157     {
3158       SYMBOL_VALUE_ADDRESS (&psymbol) = coreaddr;
3159     }
3160   SYMBOL_SECTION (&psymbol) = 0;
3161   SYMBOL_LANGUAGE (&psymbol) = language;
3162   PSYMBOL_DOMAIN (&psymbol) = domain;
3163   PSYMBOL_CLASS (&psymbol) = class;
3164
3165   SYMBOL_SET_NAMES (&psymbol, name, namelength, objfile);
3166
3167   /* Stash the partial symbol away in the cache */
3168   return bcache_full (&psymbol, sizeof (struct partial_symbol),
3169                       objfile->psymbol_cache, added);
3170 }
3171
3172 /* Helper function, adds partial symbol to the given partial symbol
3173    list.  */
3174
3175 static void
3176 append_psymbol_to_list (struct psymbol_allocation_list *list,
3177                         const struct partial_symbol *psym,
3178                         struct objfile *objfile)
3179 {
3180   if (list->next >= list->list + list->size)
3181     extend_psymbol_list (list, objfile);
3182   *list->next++ = (struct partial_symbol *) psym;
3183   OBJSTAT (objfile, n_psyms++);
3184 }
3185
3186 /* Add a symbol with a long value to a psymtab.
3187    Since one arg is a struct, we pass in a ptr and deref it (sigh).
3188    Return the partial symbol that has been added.  */
3189
3190 /* NOTE: carlton/2003-09-11: The reason why we return the partial
3191    symbol is so that callers can get access to the symbol's demangled
3192    name, which they don't have any cheap way to determine otherwise.
3193    (Currenly, dwarf2read.c is the only file who uses that information,
3194    though it's possible that other readers might in the future.)
3195    Elena wasn't thrilled about that, and I don't blame her, but we
3196    couldn't come up with a better way to get that information.  If
3197    it's needed in other situations, we could consider breaking up
3198    SYMBOL_SET_NAMES to provide access to the demangled name lookup
3199    cache.  */
3200
3201 const struct partial_symbol *
3202 add_psymbol_to_list (char *name, int namelength, domain_enum domain,
3203                      enum address_class class,
3204                      struct psymbol_allocation_list *list, 
3205                      long val,  /* Value as a long */
3206                      CORE_ADDR coreaddr,        /* Value as a CORE_ADDR */
3207                      enum language language, struct objfile *objfile)
3208 {
3209   const struct partial_symbol *psym;
3210
3211   int added;
3212
3213   /* Stash the partial symbol away in the cache */
3214   psym = add_psymbol_to_bcache (name, namelength, domain, class,
3215                                 val, coreaddr, language, objfile, &added);
3216
3217   /* Do not duplicate global partial symbols.  */
3218   if (list == &objfile->global_psymbols
3219       && !added)
3220     return psym;
3221
3222   /* Save pointer to partial symbol in psymtab, growing symtab if needed. */
3223   append_psymbol_to_list (list, psym, objfile);
3224   return psym;
3225 }
3226
3227 /* Initialize storage for partial symbols.  */
3228
3229 void
3230 init_psymbol_list (struct objfile *objfile, int total_symbols)
3231 {
3232   /* Free any previously allocated psymbol lists.  */
3233
3234   if (objfile->global_psymbols.list)
3235     {
3236       xfree (objfile->global_psymbols.list);
3237     }
3238   if (objfile->static_psymbols.list)
3239     {
3240       xfree (objfile->static_psymbols.list);
3241     }
3242
3243   /* Current best guess is that approximately a twentieth
3244      of the total symbols (in a debugging file) are global or static
3245      oriented symbols */
3246
3247   objfile->global_psymbols.size = total_symbols / 10;
3248   objfile->static_psymbols.size = total_symbols / 10;
3249
3250   if (objfile->global_psymbols.size > 0)
3251     {
3252       objfile->global_psymbols.next =
3253         objfile->global_psymbols.list = (struct partial_symbol **)
3254         xmalloc ((objfile->global_psymbols.size
3255                   * sizeof (struct partial_symbol *)));
3256     }
3257   if (objfile->static_psymbols.size > 0)
3258     {
3259       objfile->static_psymbols.next =
3260         objfile->static_psymbols.list = (struct partial_symbol **)
3261         xmalloc ((objfile->static_psymbols.size
3262                   * sizeof (struct partial_symbol *)));
3263     }
3264 }
3265
3266 /* OVERLAYS:
3267    The following code implements an abstraction for debugging overlay sections.
3268
3269    The target model is as follows:
3270    1) The gnu linker will permit multiple sections to be mapped into the
3271    same VMA, each with its own unique LMA (or load address).
3272    2) It is assumed that some runtime mechanism exists for mapping the
3273    sections, one by one, from the load address into the VMA address.
3274    3) This code provides a mechanism for gdb to keep track of which
3275    sections should be considered to be mapped from the VMA to the LMA.
3276    This information is used for symbol lookup, and memory read/write.
3277    For instance, if a section has been mapped then its contents
3278    should be read from the VMA, otherwise from the LMA.
3279
3280    Two levels of debugger support for overlays are available.  One is
3281    "manual", in which the debugger relies on the user to tell it which
3282    overlays are currently mapped.  This level of support is
3283    implemented entirely in the core debugger, and the information about
3284    whether a section is mapped is kept in the objfile->obj_section table.
3285
3286    The second level of support is "automatic", and is only available if
3287    the target-specific code provides functionality to read the target's
3288    overlay mapping table, and translate its contents for the debugger
3289    (by updating the mapped state information in the obj_section tables).
3290
3291    The interface is as follows:
3292    User commands:
3293    overlay map <name>   -- tell gdb to consider this section mapped
3294    overlay unmap <name> -- tell gdb to consider this section unmapped
3295    overlay list         -- list the sections that GDB thinks are mapped
3296    overlay read-target  -- get the target's state of what's mapped
3297    overlay off/manual/auto -- set overlay debugging state
3298    Functional interface:
3299    find_pc_mapped_section(pc):    if the pc is in the range of a mapped
3300    section, return that section.
3301    find_pc_overlay(pc):       find any overlay section that contains
3302    the pc, either in its VMA or its LMA
3303    section_is_mapped(sect):       true if overlay is marked as mapped
3304    section_is_overlay(sect):      true if section's VMA != LMA
3305    pc_in_mapped_range(pc,sec):    true if pc belongs to section's VMA
3306    pc_in_unmapped_range(...):     true if pc belongs to section's LMA
3307    sections_overlap(sec1, sec2):  true if mapped sec1 and sec2 ranges overlap
3308    overlay_mapped_address(...):   map an address from section's LMA to VMA
3309    overlay_unmapped_address(...): map an address from section's VMA to LMA
3310    symbol_overlayed_address(...): Return a "current" address for symbol:
3311    either in VMA or LMA depending on whether
3312    the symbol's section is currently mapped
3313  */
3314
3315 /* Overlay debugging state: */
3316
3317 enum overlay_debugging_state overlay_debugging = ovly_off;
3318 int overlay_cache_invalid = 0;  /* True if need to refresh mapped state */
3319
3320 /* Function: section_is_overlay (SECTION)
3321    Returns true if SECTION has VMA not equal to LMA, ie.
3322    SECTION is loaded at an address different from where it will "run".  */
3323
3324 int
3325 section_is_overlay (struct obj_section *section)
3326 {
3327   if (overlay_debugging && section)
3328     {
3329       bfd *abfd = section->objfile->obfd;
3330       asection *bfd_section = section->the_bfd_section;
3331   
3332       if (bfd_section_lma (abfd, bfd_section) != 0
3333           && bfd_section_lma (abfd, bfd_section)
3334              != bfd_section_vma (abfd, bfd_section))
3335         return 1;
3336     }
3337
3338   return 0;
3339 }
3340
3341 /* Function: overlay_invalidate_all (void)
3342    Invalidate the mapped state of all overlay sections (mark it as stale).  */
3343
3344 static void
3345 overlay_invalidate_all (void)
3346 {
3347   struct objfile *objfile;
3348   struct obj_section *sect;
3349
3350   ALL_OBJSECTIONS (objfile, sect)
3351     if (section_is_overlay (sect))
3352       sect->ovly_mapped = -1;
3353 }
3354
3355 /* Function: section_is_mapped (SECTION)
3356    Returns true if section is an overlay, and is currently mapped.
3357
3358    Access to the ovly_mapped flag is restricted to this function, so
3359    that we can do automatic update.  If the global flag
3360    OVERLAY_CACHE_INVALID is set (by wait_for_inferior), then call
3361    overlay_invalidate_all.  If the mapped state of the particular
3362    section is stale, then call TARGET_OVERLAY_UPDATE to refresh it.  */
3363
3364 int
3365 section_is_mapped (struct obj_section *osect)
3366 {
3367   struct gdbarch *gdbarch;
3368
3369   if (osect == 0 || !section_is_overlay (osect))
3370     return 0;
3371
3372   switch (overlay_debugging)
3373     {
3374     default:
3375     case ovly_off:
3376       return 0;                 /* overlay debugging off */
3377     case ovly_auto:             /* overlay debugging automatic */
3378       /* Unles there is a gdbarch_overlay_update function,
3379          there's really nothing useful to do here (can't really go auto)  */
3380       gdbarch = get_objfile_arch (osect->objfile);
3381       if (gdbarch_overlay_update_p (gdbarch))
3382         {
3383           if (overlay_cache_invalid)
3384             {
3385               overlay_invalidate_all ();
3386               overlay_cache_invalid = 0;
3387             }
3388           if (osect->ovly_mapped == -1)
3389             gdbarch_overlay_update (gdbarch, osect);
3390         }
3391       /* fall thru to manual case */
3392     case ovly_on:               /* overlay debugging manual */
3393       return osect->ovly_mapped == 1;
3394     }
3395 }
3396
3397 /* Function: pc_in_unmapped_range
3398    If PC falls into the lma range of SECTION, return true, else false.  */
3399
3400 CORE_ADDR
3401 pc_in_unmapped_range (CORE_ADDR pc, struct obj_section *section)
3402 {
3403   if (section_is_overlay (section))
3404     {
3405       bfd *abfd = section->objfile->obfd;
3406       asection *bfd_section = section->the_bfd_section;
3407
3408       /* We assume the LMA is relocated by the same offset as the VMA.  */
3409       bfd_vma size = bfd_get_section_size (bfd_section);
3410       CORE_ADDR offset = obj_section_offset (section);
3411
3412       if (bfd_get_section_lma (abfd, bfd_section) + offset <= pc
3413           && pc < bfd_get_section_lma (abfd, bfd_section) + offset + size)
3414         return 1;
3415     }
3416
3417   return 0;
3418 }
3419
3420 /* Function: pc_in_mapped_range
3421    If PC falls into the vma range of SECTION, return true, else false.  */
3422
3423 CORE_ADDR
3424 pc_in_mapped_range (CORE_ADDR pc, struct obj_section *section)
3425 {
3426   if (section_is_overlay (section))
3427     {
3428       if (obj_section_addr (section) <= pc
3429           && pc < obj_section_endaddr (section))
3430         return 1;
3431     }
3432
3433   return 0;
3434 }
3435
3436
3437 /* Return true if the mapped ranges of sections A and B overlap, false
3438    otherwise.  */
3439 static int
3440 sections_overlap (struct obj_section *a, struct obj_section *b)
3441 {
3442   CORE_ADDR a_start = obj_section_addr (a);
3443   CORE_ADDR a_end = obj_section_endaddr (a);
3444   CORE_ADDR b_start = obj_section_addr (b);
3445   CORE_ADDR b_end = obj_section_endaddr (b);
3446
3447   return (a_start < b_end && b_start < a_end);
3448 }
3449
3450 /* Function: overlay_unmapped_address (PC, SECTION)
3451    Returns the address corresponding to PC in the unmapped (load) range.
3452    May be the same as PC.  */
3453
3454 CORE_ADDR
3455 overlay_unmapped_address (CORE_ADDR pc, struct obj_section *section)
3456 {
3457   if (section_is_overlay (section) && pc_in_mapped_range (pc, section))
3458     {
3459       bfd *abfd = section->objfile->obfd;
3460       asection *bfd_section = section->the_bfd_section;
3461
3462       return pc + bfd_section_lma (abfd, bfd_section)
3463                 - bfd_section_vma (abfd, bfd_section);
3464     }
3465
3466   return pc;
3467 }
3468
3469 /* Function: overlay_mapped_address (PC, SECTION)
3470    Returns the address corresponding to PC in the mapped (runtime) range.
3471    May be the same as PC.  */
3472
3473 CORE_ADDR
3474 overlay_mapped_address (CORE_ADDR pc, struct obj_section *section)
3475 {
3476   if (section_is_overlay (section) && pc_in_unmapped_range (pc, section))
3477     {
3478       bfd *abfd = section->objfile->obfd;
3479       asection *bfd_section = section->the_bfd_section;
3480
3481       return pc + bfd_section_vma (abfd, bfd_section)
3482                 - bfd_section_lma (abfd, bfd_section);
3483     }
3484
3485   return pc;
3486 }
3487
3488
3489 /* Function: symbol_overlayed_address
3490    Return one of two addresses (relative to the VMA or to the LMA),
3491    depending on whether the section is mapped or not.  */
3492
3493 CORE_ADDR
3494 symbol_overlayed_address (CORE_ADDR address, struct obj_section *section)
3495 {
3496   if (overlay_debugging)
3497     {
3498       /* If the symbol has no section, just return its regular address. */
3499       if (section == 0)
3500         return address;
3501       /* If the symbol's section is not an overlay, just return its address */
3502       if (!section_is_overlay (section))
3503         return address;
3504       /* If the symbol's section is mapped, just return its address */
3505       if (section_is_mapped (section))
3506         return address;
3507       /*
3508        * HOWEVER: if the symbol is in an overlay section which is NOT mapped,
3509        * then return its LOADED address rather than its vma address!!
3510        */
3511       return overlay_unmapped_address (address, section);
3512     }
3513   return address;
3514 }
3515
3516 /* Function: find_pc_overlay (PC)
3517    Return the best-match overlay section for PC:
3518    If PC matches a mapped overlay section's VMA, return that section.
3519    Else if PC matches an unmapped section's VMA, return that section.
3520    Else if PC matches an unmapped section's LMA, return that section.  */
3521
3522 struct obj_section *
3523 find_pc_overlay (CORE_ADDR pc)
3524 {
3525   struct objfile *objfile;
3526   struct obj_section *osect, *best_match = NULL;
3527
3528   if (overlay_debugging)
3529     ALL_OBJSECTIONS (objfile, osect)
3530       if (section_is_overlay (osect))
3531       {
3532         if (pc_in_mapped_range (pc, osect))
3533           {
3534             if (section_is_mapped (osect))
3535               return osect;
3536             else
3537               best_match = osect;
3538           }
3539         else if (pc_in_unmapped_range (pc, osect))
3540           best_match = osect;
3541       }
3542   return best_match;
3543 }
3544
3545 /* Function: find_pc_mapped_section (PC)
3546    If PC falls into the VMA address range of an overlay section that is
3547    currently marked as MAPPED, return that section.  Else return NULL.  */
3548
3549 struct obj_section *
3550 find_pc_mapped_section (CORE_ADDR pc)
3551 {
3552   struct objfile *objfile;
3553   struct obj_section *osect;
3554
3555   if (overlay_debugging)
3556     ALL_OBJSECTIONS (objfile, osect)
3557       if (pc_in_mapped_range (pc, osect) && section_is_mapped (osect))
3558         return osect;
3559
3560   return NULL;
3561 }
3562
3563 /* Function: list_overlays_command
3564    Print a list of mapped sections and their PC ranges */
3565
3566 void
3567 list_overlays_command (char *args, int from_tty)
3568 {
3569   int nmapped = 0;
3570   struct objfile *objfile;
3571   struct obj_section *osect;
3572
3573   if (overlay_debugging)
3574     ALL_OBJSECTIONS (objfile, osect)
3575       if (section_is_mapped (osect))
3576       {
3577         struct gdbarch *gdbarch = get_objfile_arch (objfile);
3578         const char *name;
3579         bfd_vma lma, vma;
3580         int size;
3581
3582         vma = bfd_section_vma (objfile->obfd, osect->the_bfd_section);
3583         lma = bfd_section_lma (objfile->obfd, osect->the_bfd_section);
3584         size = bfd_get_section_size (osect->the_bfd_section);
3585         name = bfd_section_name (objfile->obfd, osect->the_bfd_section);
3586
3587         printf_filtered ("Section %s, loaded at ", name);
3588         fputs_filtered (paddress (gdbarch, lma), gdb_stdout);
3589         puts_filtered (" - ");
3590         fputs_filtered (paddress (gdbarch, lma + size), gdb_stdout);
3591         printf_filtered (", mapped at ");
3592         fputs_filtered (paddress (gdbarch, vma), gdb_stdout);
3593         puts_filtered (" - ");
3594         fputs_filtered (paddress (gdbarch, vma + size), gdb_stdout);
3595         puts_filtered ("\n");
3596
3597         nmapped++;
3598       }
3599   if (nmapped == 0)
3600     printf_filtered (_("No sections are mapped.\n"));
3601 }
3602
3603 /* Function: map_overlay_command
3604    Mark the named section as mapped (ie. residing at its VMA address).  */
3605
3606 void
3607 map_overlay_command (char *args, int from_tty)
3608 {
3609   struct objfile *objfile, *objfile2;
3610   struct obj_section *sec, *sec2;
3611
3612   if (!overlay_debugging)
3613     error (_("\
3614 Overlay debugging not enabled.  Use either the 'overlay auto' or\n\
3615 the 'overlay manual' command."));
3616
3617   if (args == 0 || *args == 0)
3618     error (_("Argument required: name of an overlay section"));
3619
3620   /* First, find a section matching the user supplied argument */
3621   ALL_OBJSECTIONS (objfile, sec)
3622     if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3623     {
3624       /* Now, check to see if the section is an overlay. */
3625       if (!section_is_overlay (sec))
3626         continue;               /* not an overlay section */
3627
3628       /* Mark the overlay as "mapped" */
3629       sec->ovly_mapped = 1;
3630
3631       /* Next, make a pass and unmap any sections that are
3632          overlapped by this new section: */
3633       ALL_OBJSECTIONS (objfile2, sec2)
3634         if (sec2->ovly_mapped && sec != sec2 && sections_overlap (sec, sec2))
3635         {
3636           if (info_verbose)
3637             printf_unfiltered (_("Note: section %s unmapped by overlap\n"),
3638                              bfd_section_name (objfile->obfd,
3639                                                sec2->the_bfd_section));
3640           sec2->ovly_mapped = 0;        /* sec2 overlaps sec: unmap sec2 */
3641         }
3642       return;
3643     }
3644   error (_("No overlay section called %s"), args);
3645 }
3646
3647 /* Function: unmap_overlay_command
3648    Mark the overlay section as unmapped
3649    (ie. resident in its LMA address range, rather than the VMA range).  */
3650
3651 void
3652 unmap_overlay_command (char *args, int from_tty)
3653 {
3654   struct objfile *objfile;
3655   struct obj_section *sec;
3656
3657   if (!overlay_debugging)
3658     error (_("\
3659 Overlay debugging not enabled.  Use either the 'overlay auto' or\n\
3660 the 'overlay manual' command."));
3661
3662   if (args == 0 || *args == 0)
3663     error (_("Argument required: name of an overlay section"));
3664
3665   /* First, find a section matching the user supplied argument */
3666   ALL_OBJSECTIONS (objfile, sec)
3667     if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3668     {
3669       if (!sec->ovly_mapped)
3670         error (_("Section %s is not mapped"), args);
3671       sec->ovly_mapped = 0;
3672       return;
3673     }
3674   error (_("No overlay section called %s"), args);
3675 }
3676
3677 /* Function: overlay_auto_command
3678    A utility command to turn on overlay debugging.
3679    Possibly this should be done via a set/show command. */
3680
3681 static void
3682 overlay_auto_command (char *args, int from_tty)
3683 {
3684   overlay_debugging = ovly_auto;
3685   enable_overlay_breakpoints ();
3686   if (info_verbose)
3687     printf_unfiltered (_("Automatic overlay debugging enabled."));
3688 }
3689
3690 /* Function: overlay_manual_command
3691    A utility command to turn on overlay debugging.
3692    Possibly this should be done via a set/show command. */
3693
3694 static void
3695 overlay_manual_command (char *args, int from_tty)
3696 {
3697   overlay_debugging = ovly_on;
3698   disable_overlay_breakpoints ();
3699   if (info_verbose)
3700     printf_unfiltered (_("Overlay debugging enabled."));
3701 }
3702
3703 /* Function: overlay_off_command
3704    A utility command to turn on overlay debugging.
3705    Possibly this should be done via a set/show command. */
3706
3707 static void
3708 overlay_off_command (char *args, int from_tty)
3709 {
3710   overlay_debugging = ovly_off;
3711   disable_overlay_breakpoints ();
3712   if (info_verbose)
3713     printf_unfiltered (_("Overlay debugging disabled."));
3714 }
3715
3716 static void
3717 overlay_load_command (char *args, int from_tty)
3718 {
3719   struct gdbarch *gdbarch = get_current_arch ();
3720
3721   if (gdbarch_overlay_update_p (gdbarch))
3722     gdbarch_overlay_update (gdbarch, NULL);
3723   else
3724     error (_("This target does not know how to read its overlay state."));
3725 }
3726
3727 /* Function: overlay_command
3728    A place-holder for a mis-typed command */
3729
3730 /* Command list chain containing all defined "overlay" subcommands. */
3731 struct cmd_list_element *overlaylist;
3732
3733 static void
3734 overlay_command (char *args, int from_tty)
3735 {
3736   printf_unfiltered
3737     ("\"overlay\" must be followed by the name of an overlay command.\n");
3738   help_list (overlaylist, "overlay ", -1, gdb_stdout);
3739 }
3740
3741
3742 /* Target Overlays for the "Simplest" overlay manager:
3743
3744    This is GDB's default target overlay layer.  It works with the
3745    minimal overlay manager supplied as an example by Cygnus.  The
3746    entry point is via a function pointer "gdbarch_overlay_update",
3747    so targets that use a different runtime overlay manager can
3748    substitute their own overlay_update function and take over the
3749    function pointer.
3750
3751    The overlay_update function pokes around in the target's data structures
3752    to see what overlays are mapped, and updates GDB's overlay mapping with
3753    this information.
3754
3755    In this simple implementation, the target data structures are as follows:
3756    unsigned _novlys;            /# number of overlay sections #/
3757    unsigned _ovly_table[_novlys][4] = {
3758    {VMA, SIZE, LMA, MAPPED},    /# one entry per overlay section #/
3759    {..., ...,  ..., ...},
3760    }
3761    unsigned _novly_regions;     /# number of overlay regions #/
3762    unsigned _ovly_region_table[_novly_regions][3] = {
3763    {VMA, SIZE, MAPPED_TO_LMA},  /# one entry per overlay region #/
3764    {..., ...,  ...},
3765    }
3766    These functions will attempt to update GDB's mappedness state in the
3767    symbol section table, based on the target's mappedness state.
3768
3769    To do this, we keep a cached copy of the target's _ovly_table, and
3770    attempt to detect when the cached copy is invalidated.  The main
3771    entry point is "simple_overlay_update(SECT), which looks up SECT in
3772    the cached table and re-reads only the entry for that section from
3773    the target (whenever possible).
3774  */
3775
3776 /* Cached, dynamically allocated copies of the target data structures: */
3777 static unsigned (*cache_ovly_table)[4] = 0;
3778 #if 0
3779 static unsigned (*cache_ovly_region_table)[3] = 0;
3780 #endif
3781 static unsigned cache_novlys = 0;
3782 #if 0
3783 static unsigned cache_novly_regions = 0;
3784 #endif
3785 static CORE_ADDR cache_ovly_table_base = 0;
3786 #if 0
3787 static CORE_ADDR cache_ovly_region_table_base = 0;
3788 #endif
3789 enum ovly_index
3790   {
3791     VMA, SIZE, LMA, MAPPED
3792   };
3793
3794 /* Throw away the cached copy of _ovly_table */
3795 static void
3796 simple_free_overlay_table (void)
3797 {
3798   if (cache_ovly_table)
3799     xfree (cache_ovly_table);
3800   cache_novlys = 0;
3801   cache_ovly_table = NULL;
3802   cache_ovly_table_base = 0;
3803 }
3804
3805 #if 0
3806 /* Throw away the cached copy of _ovly_region_table */
3807 static void
3808 simple_free_overlay_region_table (void)
3809 {
3810   if (cache_ovly_region_table)
3811     xfree (cache_ovly_region_table);
3812   cache_novly_regions = 0;
3813   cache_ovly_region_table = NULL;
3814   cache_ovly_region_table_base = 0;
3815 }
3816 #endif
3817
3818 /* Read an array of ints of size SIZE from the target into a local buffer.
3819    Convert to host order.  int LEN is number of ints  */
3820 static void
3821 read_target_long_array (CORE_ADDR memaddr, unsigned int *myaddr,
3822                         int len, int size, enum bfd_endian byte_order)
3823 {
3824   /* FIXME (alloca): Not safe if array is very large. */
3825   gdb_byte *buf = alloca (len * size);
3826   int i;
3827
3828   read_memory (memaddr, buf, len * size);
3829   for (i = 0; i < len; i++)
3830     myaddr[i] = extract_unsigned_integer (size * i + buf, size, byte_order);
3831 }
3832
3833 /* Find and grab a copy of the target _ovly_table
3834    (and _novlys, which is needed for the table's size) */
3835 static int
3836 simple_read_overlay_table (void)
3837 {
3838   struct minimal_symbol *novlys_msym, *ovly_table_msym;
3839   struct gdbarch *gdbarch;
3840   int word_size;
3841   enum bfd_endian byte_order;
3842
3843   simple_free_overlay_table ();
3844   novlys_msym = lookup_minimal_symbol ("_novlys", NULL, NULL);
3845   if (! novlys_msym)
3846     {
3847       error (_("Error reading inferior's overlay table: "
3848              "couldn't find `_novlys' variable\n"
3849              "in inferior.  Use `overlay manual' mode."));
3850       return 0;
3851     }
3852
3853   ovly_table_msym = lookup_minimal_symbol ("_ovly_table", NULL, NULL);
3854   if (! ovly_table_msym)
3855     {
3856       error (_("Error reading inferior's overlay table: couldn't find "
3857              "`_ovly_table' array\n"
3858              "in inferior.  Use `overlay manual' mode."));
3859       return 0;
3860     }
3861
3862   gdbarch = get_objfile_arch (msymbol_objfile (ovly_table_msym));
3863   word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3864   byte_order = gdbarch_byte_order (gdbarch);
3865
3866   cache_novlys = read_memory_integer (SYMBOL_VALUE_ADDRESS (novlys_msym),
3867                                       4, byte_order);
3868   cache_ovly_table
3869     = (void *) xmalloc (cache_novlys * sizeof (*cache_ovly_table));
3870   cache_ovly_table_base = SYMBOL_VALUE_ADDRESS (ovly_table_msym);
3871   read_target_long_array (cache_ovly_table_base,
3872                           (unsigned int *) cache_ovly_table,
3873                           cache_novlys * 4, word_size, byte_order);
3874
3875   return 1;                     /* SUCCESS */
3876 }
3877
3878 #if 0
3879 /* Find and grab a copy of the target _ovly_region_table
3880    (and _novly_regions, which is needed for the table's size) */
3881 static int
3882 simple_read_overlay_region_table (void)
3883 {
3884   struct minimal_symbol *msym;
3885   struct gdbarch *gdbarch;
3886   int word_size;
3887   enum bfd_endian byte_order;
3888
3889   simple_free_overlay_region_table ();
3890   msym = lookup_minimal_symbol ("_novly_regions", NULL, NULL);
3891   if (msym == NULL)
3892     return 0;                   /* failure */
3893
3894   gdbarch = get_objfile_arch (msymbol_objfile (msym));
3895   word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3896   byte_order = gdbarch_byte_order (gdbarch);
3897
3898   cache_novly_regions = read_memory_integer (SYMBOL_VALUE_ADDRESS (msym),
3899                                              4, byte_order);
3900
3901   cache_ovly_region_table = (void *) xmalloc (cache_novly_regions * 12);
3902   if (cache_ovly_region_table != NULL)
3903     {
3904       msym = lookup_minimal_symbol ("_ovly_region_table", NULL, NULL);
3905       if (msym != NULL)
3906         {
3907           cache_ovly_region_table_base = SYMBOL_VALUE_ADDRESS (msym);
3908           read_target_long_array (cache_ovly_region_table_base,
3909                                   (unsigned int *) cache_ovly_region_table,
3910                                   cache_novly_regions * 3,
3911                                   word_size, byte_order);
3912         }
3913       else
3914         return 0;               /* failure */
3915     }
3916   else
3917     return 0;                   /* failure */
3918   return 1;                     /* SUCCESS */
3919 }
3920 #endif
3921
3922 /* Function: simple_overlay_update_1
3923    A helper function for simple_overlay_update.  Assuming a cached copy
3924    of _ovly_table exists, look through it to find an entry whose vma,
3925    lma and size match those of OSECT.  Re-read the entry and make sure
3926    it still matches OSECT (else the table may no longer be valid).
3927    Set OSECT's mapped state to match the entry.  Return: 1 for
3928    success, 0 for failure.  */
3929
3930 static int
3931 simple_overlay_update_1 (struct obj_section *osect)
3932 {
3933   int i, size;
3934   bfd *obfd = osect->objfile->obfd;
3935   asection *bsect = osect->the_bfd_section;
3936   struct gdbarch *gdbarch = get_objfile_arch (osect->objfile);
3937   int word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3938   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
3939
3940   size = bfd_get_section_size (osect->the_bfd_section);
3941   for (i = 0; i < cache_novlys; i++)
3942     if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3943         && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
3944         /* && cache_ovly_table[i][SIZE] == size */ )
3945       {
3946         read_target_long_array (cache_ovly_table_base + i * word_size,
3947                                 (unsigned int *) cache_ovly_table[i],
3948                                 4, word_size, byte_order);
3949         if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3950             && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
3951             /* && cache_ovly_table[i][SIZE] == size */ )
3952           {
3953             osect->ovly_mapped = cache_ovly_table[i][MAPPED];
3954             return 1;
3955           }
3956         else    /* Warning!  Warning!  Target's ovly table has changed! */
3957           return 0;
3958       }
3959   return 0;
3960 }
3961
3962 /* Function: simple_overlay_update
3963    If OSECT is NULL, then update all sections' mapped state
3964    (after re-reading the entire target _ovly_table).
3965    If OSECT is non-NULL, then try to find a matching entry in the
3966    cached ovly_table and update only OSECT's mapped state.
3967    If a cached entry can't be found or the cache isn't valid, then
3968    re-read the entire cache, and go ahead and update all sections.  */
3969
3970 void
3971 simple_overlay_update (struct obj_section *osect)
3972 {
3973   struct objfile *objfile;
3974
3975   /* Were we given an osect to look up?  NULL means do all of them. */
3976   if (osect)
3977     /* Have we got a cached copy of the target's overlay table? */
3978     if (cache_ovly_table != NULL)
3979       /* Does its cached location match what's currently in the symtab? */
3980       if (cache_ovly_table_base ==
3981           SYMBOL_VALUE_ADDRESS (lookup_minimal_symbol ("_ovly_table", NULL, NULL)))
3982         /* Then go ahead and try to look up this single section in the cache */
3983         if (simple_overlay_update_1 (osect))
3984           /* Found it!  We're done. */
3985           return;
3986
3987   /* Cached table no good: need to read the entire table anew.
3988      Or else we want all the sections, in which case it's actually
3989      more efficient to read the whole table in one block anyway.  */
3990
3991   if (! simple_read_overlay_table ())
3992     return;
3993
3994   /* Now may as well update all sections, even if only one was requested. */
3995   ALL_OBJSECTIONS (objfile, osect)
3996     if (section_is_overlay (osect))
3997     {
3998       int i, size;
3999       bfd *obfd = osect->objfile->obfd;
4000       asection *bsect = osect->the_bfd_section;
4001
4002       size = bfd_get_section_size (bsect);
4003       for (i = 0; i < cache_novlys; i++)
4004         if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
4005             && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
4006             /* && cache_ovly_table[i][SIZE] == size */ )
4007           { /* obj_section matches i'th entry in ovly_table */
4008             osect->ovly_mapped = cache_ovly_table[i][MAPPED];
4009             break;              /* finished with inner for loop: break out */
4010           }
4011     }
4012 }
4013
4014 /* Set the output sections and output offsets for section SECTP in
4015    ABFD.  The relocation code in BFD will read these offsets, so we
4016    need to be sure they're initialized.  We map each section to itself,
4017    with no offset; this means that SECTP->vma will be honored.  */
4018
4019 static void
4020 symfile_dummy_outputs (bfd *abfd, asection *sectp, void *dummy)
4021 {
4022   sectp->output_section = sectp;
4023   sectp->output_offset = 0;
4024 }
4025
4026 /* Relocate the contents of a debug section SECTP in ABFD.  The
4027    contents are stored in BUF if it is non-NULL, or returned in a
4028    malloc'd buffer otherwise.
4029
4030    For some platforms and debug info formats, shared libraries contain
4031    relocations against the debug sections (particularly for DWARF-2;
4032    one affected platform is PowerPC GNU/Linux, although it depends on
4033    the version of the linker in use).  Also, ELF object files naturally
4034    have unresolved relocations for their debug sections.  We need to apply
4035    the relocations in order to get the locations of symbols correct.
4036    Another example that may require relocation processing, is the
4037    DWARF-2 .eh_frame section in .o files, although it isn't strictly a
4038    debug section.  */
4039
4040 bfd_byte *
4041 symfile_relocate_debug_section (bfd *abfd, asection *sectp, bfd_byte *buf)
4042 {
4043   /* We're only interested in sections with relocation
4044      information.  */
4045   if ((sectp->flags & SEC_RELOC) == 0)
4046     return NULL;
4047
4048   /* We will handle section offsets properly elsewhere, so relocate as if
4049      all sections begin at 0.  */
4050   bfd_map_over_sections (abfd, symfile_dummy_outputs, NULL);
4051
4052   return bfd_simple_get_relocated_section_contents (abfd, sectp, buf, NULL);
4053 }
4054
4055 struct symfile_segment_data *
4056 get_symfile_segment_data (bfd *abfd)
4057 {
4058   struct sym_fns *sf = find_sym_fns (abfd);
4059
4060   if (sf == NULL)
4061     return NULL;
4062
4063   return sf->sym_segments (abfd);
4064 }
4065
4066 void
4067 free_symfile_segment_data (struct symfile_segment_data *data)
4068 {
4069   xfree (data->segment_bases);
4070   xfree (data->segment_sizes);
4071   xfree (data->segment_info);
4072   xfree (data);
4073 }
4074
4075
4076 /* Given:
4077    - DATA, containing segment addresses from the object file ABFD, and
4078      the mapping from ABFD's sections onto the segments that own them,
4079      and
4080    - SEGMENT_BASES[0 .. NUM_SEGMENT_BASES - 1], holding the actual
4081      segment addresses reported by the target,
4082    store the appropriate offsets for each section in OFFSETS.
4083
4084    If there are fewer entries in SEGMENT_BASES than there are segments
4085    in DATA, then apply SEGMENT_BASES' last entry to all the segments.
4086
4087    If there are more entries, then ignore the extra.  The target may
4088    not be able to distinguish between an empty data segment and a
4089    missing data segment; a missing text segment is less plausible.  */
4090 int
4091 symfile_map_offsets_to_segments (bfd *abfd, struct symfile_segment_data *data,
4092                                  struct section_offsets *offsets,
4093                                  int num_segment_bases,
4094                                  const CORE_ADDR *segment_bases)
4095 {
4096   int i;
4097   asection *sect;
4098
4099   /* It doesn't make sense to call this function unless you have some
4100      segment base addresses.  */
4101   gdb_assert (segment_bases > 0);
4102
4103   /* If we do not have segment mappings for the object file, we
4104      can not relocate it by segments.  */
4105   gdb_assert (data != NULL);
4106   gdb_assert (data->num_segments > 0);
4107
4108   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
4109     {
4110       int which = data->segment_info[i];
4111
4112       gdb_assert (0 <= which && which <= data->num_segments);
4113
4114       /* Don't bother computing offsets for sections that aren't
4115          loaded as part of any segment.  */
4116       if (! which)
4117         continue;
4118
4119       /* Use the last SEGMENT_BASES entry as the address of any extra
4120          segments mentioned in DATA->segment_info.  */
4121       if (which > num_segment_bases)
4122         which = num_segment_bases;
4123
4124       offsets->offsets[i] = (segment_bases[which - 1]
4125                              - data->segment_bases[which - 1]);
4126     }
4127
4128   return 1;
4129 }
4130
4131 static void
4132 symfile_find_segment_sections (struct objfile *objfile)
4133 {
4134   bfd *abfd = objfile->obfd;
4135   int i;
4136   asection *sect;
4137   struct symfile_segment_data *data;
4138
4139   data = get_symfile_segment_data (objfile->obfd);
4140   if (data == NULL)
4141     return;
4142
4143   if (data->num_segments != 1 && data->num_segments != 2)
4144     {
4145       free_symfile_segment_data (data);
4146       return;
4147     }
4148
4149   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
4150     {
4151       CORE_ADDR vma;
4152       int which = data->segment_info[i];
4153
4154       if (which == 1)
4155         {
4156           if (objfile->sect_index_text == -1)
4157             objfile->sect_index_text = sect->index;
4158
4159           if (objfile->sect_index_rodata == -1)
4160             objfile->sect_index_rodata = sect->index;
4161         }
4162       else if (which == 2)
4163         {
4164           if (objfile->sect_index_data == -1)
4165             objfile->sect_index_data = sect->index;
4166
4167           if (objfile->sect_index_bss == -1)
4168             objfile->sect_index_bss = sect->index;
4169         }
4170     }
4171
4172   free_symfile_segment_data (data);
4173 }
4174
4175 void
4176 _initialize_symfile (void)
4177 {
4178   struct cmd_list_element *c;
4179
4180   c = add_cmd ("symbol-file", class_files, symbol_file_command, _("\
4181 Load symbol table from executable file FILE.\n\
4182 The `file' command can also load symbol tables, as well as setting the file\n\
4183 to execute."), &cmdlist);
4184   set_cmd_completer (c, filename_completer);
4185
4186   c = add_cmd ("add-symbol-file", class_files, add_symbol_file_command, _("\
4187 Load symbols from FILE, assuming FILE has been dynamically loaded.\n\
4188 Usage: add-symbol-file FILE ADDR [-s <SECT> <SECT_ADDR> -s <SECT> <SECT_ADDR> ...]\n\
4189 ADDR is the starting address of the file's text.\n\
4190 The optional arguments are section-name section-address pairs and\n\
4191 should be specified if the data and bss segments are not contiguous\n\
4192 with the text.  SECT is a section name to be loaded at SECT_ADDR."),
4193                &cmdlist);
4194   set_cmd_completer (c, filename_completer);
4195
4196   c = add_cmd ("load", class_files, load_command, _("\
4197 Dynamically load FILE into the running program, and record its symbols\n\
4198 for access from GDB.\n\
4199 A load OFFSET may also be given."), &cmdlist);
4200   set_cmd_completer (c, filename_completer);
4201
4202   add_setshow_boolean_cmd ("symbol-reloading", class_support,
4203                            &symbol_reloading, _("\
4204 Set dynamic symbol table reloading multiple times in one run."), _("\
4205 Show dynamic symbol table reloading multiple times in one run."), NULL,
4206                            NULL,
4207                            show_symbol_reloading,
4208                            &setlist, &showlist);
4209
4210   add_prefix_cmd ("overlay", class_support, overlay_command,
4211                   _("Commands for debugging overlays."), &overlaylist,
4212                   "overlay ", 0, &cmdlist);
4213
4214   add_com_alias ("ovly", "overlay", class_alias, 1);
4215   add_com_alias ("ov", "overlay", class_alias, 1);
4216
4217   add_cmd ("map-overlay", class_support, map_overlay_command,
4218            _("Assert that an overlay section is mapped."), &overlaylist);
4219
4220   add_cmd ("unmap-overlay", class_support, unmap_overlay_command,
4221            _("Assert that an overlay section is unmapped."), &overlaylist);
4222
4223   add_cmd ("list-overlays", class_support, list_overlays_command,
4224            _("List mappings of overlay sections."), &overlaylist);
4225
4226   add_cmd ("manual", class_support, overlay_manual_command,
4227            _("Enable overlay debugging."), &overlaylist);
4228   add_cmd ("off", class_support, overlay_off_command,
4229            _("Disable overlay debugging."), &overlaylist);
4230   add_cmd ("auto", class_support, overlay_auto_command,
4231            _("Enable automatic overlay debugging."), &overlaylist);
4232   add_cmd ("load-target", class_support, overlay_load_command,
4233            _("Read the overlay mapping state from the target."), &overlaylist);
4234
4235   /* Filename extension to source language lookup table: */
4236   init_filename_language_table ();
4237   add_setshow_string_noescape_cmd ("extension-language", class_files,
4238                                    &ext_args, _("\
4239 Set mapping between filename extension and source language."), _("\
4240 Show mapping between filename extension and source language."), _("\
4241 Usage: set extension-language .foo bar"),
4242                                    set_ext_lang_command,
4243                                    show_ext_args,
4244                                    &setlist, &showlist);
4245
4246   add_info ("extensions", info_ext_lang_command,
4247             _("All filename extensions associated with a source language."));
4248
4249   add_setshow_optional_filename_cmd ("debug-file-directory", class_support,
4250                                      &debug_file_directory, _("\
4251 Set the directories where separate debug symbols are searched for."), _("\
4252 Show the directories where separate debug symbols are searched for."), _("\
4253 Separate debug symbols are first searched for in the same\n\
4254 directory as the binary, then in the `" DEBUG_SUBDIRECTORY "' subdirectory,\n\
4255 and lastly at the path of the directory of the binary with\n\
4256 each global debug-file-directory component prepended."),
4257                                      NULL,
4258                                      show_debug_file_directory,
4259                                      &setlist, &showlist);
4260 }