OSDN Git Service

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