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