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