OSDN Git Service

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