1 /* Generic symbol file reading for the GNU debugger, GDB.
3 Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
4 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
6 Contributed by Cygnus Support, using pieces from other GDB modules.
8 This file is part of GDB.
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 2 of the License, or
13 (at your option) any later version.
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 59 Temple Place - Suite 330,
23 Boston, MA 02111-1307, USA. */
37 #include "breakpoint.h"
39 #include "complaints.h"
41 #include "inferior.h" /* for write_pc */
42 #include "filenames.h" /* for DOSish file names */
43 #include "gdb-stabs.h"
44 #include "gdb_obstack.h"
45 #include "completer.h"
48 #include <readline/readline.h>
49 #include "gdb_assert.h"
51 #include <sys/types.h>
53 #include "gdb_string.h"
64 /* Some HP-UX related globals to clear when a new "main"
65 symbol file is loaded. HP-specific. */
67 extern int hp_som_som_object_present;
68 extern int hp_cxx_exception_support_initialized;
69 #define RESET_HP_UX_GLOBALS() do {\
70 hp_som_som_object_present = 0; /* indicates HP-compiled code */ \
71 hp_cxx_exception_support_initialized = 0; /* must reinitialize exception stuff */ \
75 int (*ui_load_progress_hook) (const char *section, unsigned long num);
76 void (*show_load_progress) (const char *section,
77 unsigned long section_sent,
78 unsigned long section_size,
79 unsigned long total_sent,
80 unsigned long total_size);
81 void (*pre_add_symbol_hook) (char *);
82 void (*post_add_symbol_hook) (void);
83 void (*target_new_objfile_hook) (struct objfile *);
85 static void clear_symtab_users_cleanup (void *ignore);
87 /* Global variables owned by this file */
88 int readnow_symbol_files; /* Read full symbols immediately */
90 /* External variables and functions referenced. */
92 extern void report_transfer_performance (unsigned long, time_t, time_t);
94 /* Functions this file defines */
97 static int simple_read_overlay_region_table (void);
98 static void simple_free_overlay_region_table (void);
101 static void set_initial_language (void);
103 static void load_command (char *, int);
105 static void symbol_file_add_main_1 (char *args, int from_tty, int flags);
107 static void add_symbol_file_command (char *, int);
109 static void add_shared_symbol_files_command (char *, int);
111 static void reread_separate_symbols (struct objfile *objfile);
113 static void cashier_psymtab (struct partial_symtab *);
115 bfd *symfile_bfd_open (char *);
117 int get_section_index (struct objfile *, char *);
119 static void find_sym_fns (struct objfile *);
121 static void decrement_reading_symtab (void *);
123 static void overlay_invalidate_all (void);
125 static int overlay_is_mapped (struct obj_section *);
127 void list_overlays_command (char *, int);
129 void map_overlay_command (char *, int);
131 void unmap_overlay_command (char *, int);
133 static void overlay_auto_command (char *, int);
135 static void overlay_manual_command (char *, int);
137 static void overlay_off_command (char *, int);
139 static void overlay_load_command (char *, int);
141 static void overlay_command (char *, int);
143 static void simple_free_overlay_table (void);
145 static void read_target_long_array (CORE_ADDR, unsigned int *, int);
147 static int simple_read_overlay_table (void);
149 static int simple_overlay_update_1 (struct obj_section *);
151 static void add_filename_language (char *ext, enum language lang);
153 static void set_ext_lang_command (char *args, int from_tty);
155 static void info_ext_lang_command (char *args, int from_tty);
157 static char *find_separate_debug_file (struct objfile *objfile);
159 static void init_filename_language_table (void);
161 void _initialize_symfile (void);
163 /* List of all available sym_fns. On gdb startup, each object file reader
164 calls add_symtab_fns() to register information on each format it is
167 static struct sym_fns *symtab_fns = NULL;
169 /* Flag for whether user will be reloading symbols multiple times.
170 Defaults to ON for VxWorks, otherwise OFF. */
172 #ifdef SYMBOL_RELOADING_DEFAULT
173 int symbol_reloading = SYMBOL_RELOADING_DEFAULT;
175 int symbol_reloading = 0;
178 /* If non-zero, shared library symbols will be added automatically
179 when the inferior is created, new libraries are loaded, or when
180 attaching to the inferior. This is almost always what users will
181 want to have happen; but for very large programs, the startup time
182 will be excessive, and so if this is a problem, the user can clear
183 this flag and then add the shared library symbols as needed. Note
184 that there is a potential for confusion, since if the shared
185 library symbols are not loaded, commands like "info fun" will *not*
186 report all the functions that are actually present. */
188 int auto_solib_add = 1;
190 /* For systems that support it, a threshold size in megabytes. If
191 automatically adding a new library's symbol table to those already
192 known to the debugger would cause the total shared library symbol
193 size to exceed this threshhold, then the shlib's symbols are not
194 added. The threshold is ignored if the user explicitly asks for a
195 shlib to be added, such as when using the "sharedlibrary"
198 int auto_solib_limit;
201 /* Since this function is called from within qsort, in an ANSI environment
202 it must conform to the prototype for qsort, which specifies that the
203 comparison function takes two "void *" pointers. */
206 compare_symbols (const void *s1p, const void *s2p)
208 register struct symbol **s1, **s2;
210 s1 = (struct symbol **) s1p;
211 s2 = (struct symbol **) s2p;
212 return (strcmp (SYMBOL_SOURCE_NAME (*s1), SYMBOL_SOURCE_NAME (*s2)));
219 compare_psymbols -- compare two partial symbols by name
223 Given pointers to pointers to two partial symbol table entries,
224 compare them by name and return -N, 0, or +N (ala strcmp).
225 Typically used by sorting routines like qsort().
229 Does direct compare of first two characters before punting
230 and passing to strcmp for longer compares. Note that the
231 original version had a bug whereby two null strings or two
232 identically named one character strings would return the
233 comparison of memory following the null byte.
238 compare_psymbols (const void *s1p, const void *s2p)
240 register struct partial_symbol **s1, **s2;
241 register char *st1, *st2;
243 s1 = (struct partial_symbol **) s1p;
244 s2 = (struct partial_symbol **) s2p;
245 st1 = SYMBOL_SOURCE_NAME (*s1);
246 st2 = SYMBOL_SOURCE_NAME (*s2);
249 if ((st1[0] - st2[0]) || !st1[0])
251 return (st1[0] - st2[0]);
253 else if ((st1[1] - st2[1]) || !st1[1])
255 return (st1[1] - st2[1]);
259 return (strcmp (st1, st2));
264 sort_pst_symbols (struct partial_symtab *pst)
266 /* Sort the global list; don't sort the static list */
268 qsort (pst->objfile->global_psymbols.list + pst->globals_offset,
269 pst->n_global_syms, sizeof (struct partial_symbol *),
273 /* Call sort_block_syms to sort alphabetically the symbols of one block. */
276 sort_block_syms (register struct block *b)
278 qsort (&BLOCK_SYM (b, 0), BLOCK_NSYMS (b),
279 sizeof (struct symbol *), compare_symbols);
282 /* Call sort_symtab_syms to sort alphabetically
283 the symbols of each block of one symtab. */
286 sort_symtab_syms (register struct symtab *s)
288 register struct blockvector *bv;
291 register struct block *b;
295 bv = BLOCKVECTOR (s);
296 nbl = BLOCKVECTOR_NBLOCKS (bv);
297 for (i = 0; i < nbl; i++)
299 b = BLOCKVECTOR_BLOCK (bv, i);
300 if (BLOCK_SHOULD_SORT (b))
305 /* Make a null terminated copy of the string at PTR with SIZE characters in
306 the obstack pointed to by OBSTACKP . Returns the address of the copy.
307 Note that the string at PTR does not have to be null terminated, I.E. it
308 may be part of a larger string and we are only saving a substring. */
311 obsavestring (const char *ptr, int size, struct obstack *obstackp)
313 register char *p = (char *) obstack_alloc (obstackp, size + 1);
314 /* Open-coded memcpy--saves function call time. These strings are usually
315 short. FIXME: Is this really still true with a compiler that can
318 register const char *p1 = ptr;
319 register char *p2 = p;
320 const char *end = ptr + size;
328 /* Concatenate strings S1, S2 and S3; return the new string. Space is found
329 in the obstack pointed to by OBSTACKP. */
332 obconcat (struct obstack *obstackp, const char *s1, const char *s2,
335 register int len = strlen (s1) + strlen (s2) + strlen (s3) + 1;
336 register char *val = (char *) obstack_alloc (obstackp, len);
343 /* True if we are nested inside psymtab_to_symtab. */
345 int currently_reading_symtab = 0;
348 decrement_reading_symtab (void *dummy)
350 currently_reading_symtab--;
353 /* Get the symbol table that corresponds to a partial_symtab.
354 This is fast after the first time you do it. In fact, there
355 is an even faster macro PSYMTAB_TO_SYMTAB that does the fast
359 psymtab_to_symtab (register struct partial_symtab *pst)
361 /* If it's been looked up before, return it. */
365 /* If it has not yet been read in, read it. */
368 struct cleanup *back_to = make_cleanup (decrement_reading_symtab, NULL);
369 currently_reading_symtab++;
370 (*pst->read_symtab) (pst);
371 do_cleanups (back_to);
377 /* Initialize entry point information for this objfile. */
380 init_entry_point_info (struct objfile *objfile)
382 /* Save startup file's range of PC addresses to help blockframe.c
383 decide where the bottom of the stack is. */
385 if (bfd_get_file_flags (objfile->obfd) & EXEC_P)
387 /* Executable file -- record its entry point so we'll recognize
388 the startup file because it contains the entry point. */
389 objfile->ei.entry_point = bfd_get_start_address (objfile->obfd);
393 /* Examination of non-executable.o files. Short-circuit this stuff. */
394 objfile->ei.entry_point = INVALID_ENTRY_POINT;
396 objfile->ei.entry_file_lowpc = INVALID_ENTRY_LOWPC;
397 objfile->ei.entry_file_highpc = INVALID_ENTRY_HIGHPC;
398 objfile->ei.entry_func_lowpc = INVALID_ENTRY_LOWPC;
399 objfile->ei.entry_func_highpc = INVALID_ENTRY_HIGHPC;
400 objfile->ei.main_func_lowpc = INVALID_ENTRY_LOWPC;
401 objfile->ei.main_func_highpc = INVALID_ENTRY_HIGHPC;
404 /* Get current entry point address. */
407 entry_point_address (void)
409 return symfile_objfile ? symfile_objfile->ei.entry_point : 0;
412 /* Remember the lowest-addressed loadable section we've seen.
413 This function is called via bfd_map_over_sections.
415 In case of equal vmas, the section with the largest size becomes the
416 lowest-addressed loadable section.
418 If the vmas and sizes are equal, the last section is considered the
419 lowest-addressed loadable section. */
422 find_lowest_section (bfd *abfd, asection *sect, void *obj)
424 asection **lowest = (asection **) obj;
426 if (0 == (bfd_get_section_flags (abfd, sect) & SEC_LOAD))
429 *lowest = sect; /* First loadable section */
430 else if (bfd_section_vma (abfd, *lowest) > bfd_section_vma (abfd, sect))
431 *lowest = sect; /* A lower loadable section */
432 else if (bfd_section_vma (abfd, *lowest) == bfd_section_vma (abfd, sect)
433 && (bfd_section_size (abfd, (*lowest))
434 <= bfd_section_size (abfd, sect)))
439 /* Build (allocate and populate) a section_addr_info struct from
440 an existing section table. */
442 extern struct section_addr_info *
443 build_section_addr_info_from_section_table (const struct section_table *start,
444 const struct section_table *end)
446 struct section_addr_info *sap;
447 const struct section_table *stp;
450 sap = xmalloc (sizeof (struct section_addr_info));
451 memset (sap, 0, sizeof (struct section_addr_info));
453 for (stp = start, oidx = 0; stp != end; stp++)
455 if (bfd_get_section_flags (stp->bfd,
456 stp->the_bfd_section) & (SEC_ALLOC | SEC_LOAD)
457 && oidx < MAX_SECTIONS)
459 sap->other[oidx].addr = stp->addr;
460 sap->other[oidx].name
461 = xstrdup (bfd_section_name (stp->bfd, stp->the_bfd_section));
462 sap->other[oidx].sectindex = stp->the_bfd_section->index;
471 /* Free all memory allocated by build_section_addr_info_from_section_table. */
474 free_section_addr_info (struct section_addr_info *sap)
478 for (idx = 0; idx < MAX_SECTIONS; idx++)
479 if (sap->other[idx].name)
480 xfree (sap->other[idx].name);
485 /* Initialize OBJFILE's sect_index_* members. */
487 init_objfile_sect_indices (struct objfile *objfile)
492 sect = bfd_get_section_by_name (objfile->obfd, ".text");
494 objfile->sect_index_text = sect->index;
496 sect = bfd_get_section_by_name (objfile->obfd, ".data");
498 objfile->sect_index_data = sect->index;
500 sect = bfd_get_section_by_name (objfile->obfd, ".bss");
502 objfile->sect_index_bss = sect->index;
504 sect = bfd_get_section_by_name (objfile->obfd, ".rodata");
506 objfile->sect_index_rodata = sect->index;
508 /* This is where things get really weird... We MUST have valid
509 indices for the various sect_index_* members or gdb will abort.
510 So if for example, there is no ".text" section, we have to
511 accomodate that. Except when explicitly adding symbol files at
512 some address, section_offsets contains nothing but zeros, so it
513 doesn't matter which slot in section_offsets the individual
514 sect_index_* members index into. So if they are all zero, it is
515 safe to just point all the currently uninitialized indices to the
518 for (i = 0; i < objfile->num_sections; i++)
520 if (ANOFFSET (objfile->section_offsets, i) != 0)
525 if (i == objfile->num_sections)
527 if (objfile->sect_index_text == -1)
528 objfile->sect_index_text = 0;
529 if (objfile->sect_index_data == -1)
530 objfile->sect_index_data = 0;
531 if (objfile->sect_index_bss == -1)
532 objfile->sect_index_bss = 0;
533 if (objfile->sect_index_rodata == -1)
534 objfile->sect_index_rodata = 0;
539 /* Parse the user's idea of an offset for dynamic linking, into our idea
540 of how to represent it for fast symbol reading. This is the default
541 version of the sym_fns.sym_offsets function for symbol readers that
542 don't need to do anything special. It allocates a section_offsets table
543 for the objectfile OBJFILE and stuffs ADDR into all of the offsets. */
546 default_symfile_offsets (struct objfile *objfile,
547 struct section_addr_info *addrs)
551 objfile->num_sections = SECT_OFF_MAX;
552 objfile->section_offsets = (struct section_offsets *)
553 obstack_alloc (&objfile->psymbol_obstack, SIZEOF_SECTION_OFFSETS);
554 memset (objfile->section_offsets, 0, SIZEOF_SECTION_OFFSETS);
556 /* Now calculate offsets for section that were specified by the
558 for (i = 0; i < MAX_SECTIONS && addrs->other[i].name; i++)
560 struct other_sections *osp ;
562 osp = &addrs->other[i] ;
566 /* Record all sections in offsets */
567 /* The section_offsets in the objfile are here filled in using
569 (objfile->section_offsets)->offsets[osp->sectindex] = osp->addr;
572 /* Remember the bfd indexes for the .text, .data, .bss and
574 init_objfile_sect_indices (objfile);
578 /* Process a symbol file, as either the main file or as a dynamically
581 OBJFILE is where the symbols are to be read from.
583 ADDRS is the list of section load addresses. If the user has given
584 an 'add-symbol-file' command, then this is the list of offsets and
585 addresses he or she provided as arguments to the command; or, if
586 we're handling a shared library, these are the actual addresses the
587 sections are loaded at, according to the inferior's dynamic linker
588 (as gleaned by GDB's shared library code). We convert each address
589 into an offset from the section VMA's as it appears in the object
590 file, and then call the file's sym_offsets function to convert this
591 into a format-specific offset table --- a `struct section_offsets'.
592 If ADDRS is non-zero, OFFSETS must be zero.
594 OFFSETS is a table of section offsets already in the right
595 format-specific representation. NUM_OFFSETS is the number of
596 elements present in OFFSETS->offsets. If OFFSETS is non-zero, we
597 assume this is the proper table the call to sym_offsets described
598 above would produce. Instead of calling sym_offsets, we just dump
599 it right into objfile->section_offsets. (When we're re-reading
600 symbols from an objfile, we don't have the original load address
601 list any more; all we have is the section offset table.) If
602 OFFSETS is non-zero, ADDRS must be zero.
604 MAINLINE is nonzero if this is the main symbol file, or zero if
605 it's an extra symbol file such as dynamically loaded code.
607 VERBO is nonzero if the caller has printed a verbose message about
608 the symbol reading (and complaints can be more terse about it). */
611 syms_from_objfile (struct objfile *objfile,
612 struct section_addr_info *addrs,
613 struct section_offsets *offsets,
618 asection *lower_sect;
620 CORE_ADDR lower_offset;
621 struct section_addr_info local_addr;
622 struct cleanup *old_chain;
625 gdb_assert (! (addrs && offsets));
627 /* If ADDRS and OFFSETS are both NULL, put together a dummy address
628 list. We now establish the convention that an addr of zero means
629 no load address was specified. */
630 if (! addrs && ! offsets)
632 memset (&local_addr, 0, sizeof (local_addr));
636 /* Now either addrs or offsets is non-zero. */
638 init_entry_point_info (objfile);
639 find_sym_fns (objfile);
641 if (objfile->sf == NULL)
642 return; /* No symbols. */
644 /* Make sure that partially constructed symbol tables will be cleaned up
645 if an error occurs during symbol reading. */
646 old_chain = make_cleanup_free_objfile (objfile);
650 /* We will modify the main symbol table, make sure that all its users
651 will be cleaned up if an error occurs during symbol reading. */
652 make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/);
654 /* Since no error yet, throw away the old symbol table. */
656 if (symfile_objfile != NULL)
658 free_objfile (symfile_objfile);
659 symfile_objfile = NULL;
662 /* Currently we keep symbols from the add-symbol-file command.
663 If the user wants to get rid of them, they should do "symbol-file"
664 without arguments first. Not sure this is the best behavior
667 (*objfile->sf->sym_new_init) (objfile);
670 /* Convert addr into an offset rather than an absolute address.
671 We find the lowest address of a loaded segment in the objfile,
672 and assume that <addr> is where that got loaded.
674 We no longer warn if the lowest section is not a text segment (as
675 happens for the PA64 port. */
678 /* Find lowest loadable section to be used as starting point for
679 continguous sections. FIXME!! won't work without call to find
680 .text first, but this assumes text is lowest section. */
681 lower_sect = bfd_get_section_by_name (objfile->obfd, ".text");
682 if (lower_sect == NULL)
683 bfd_map_over_sections (objfile->obfd, find_lowest_section,
685 if (lower_sect == NULL)
686 warning ("no loadable sections found in added symbol-file %s",
689 if ((bfd_get_section_flags (objfile->obfd, lower_sect) & SEC_CODE) == 0)
690 warning ("Lowest section in %s is %s at %s",
692 bfd_section_name (objfile->obfd, lower_sect),
693 paddr (bfd_section_vma (objfile->obfd, lower_sect)));
694 if (lower_sect != NULL)
695 lower_offset = bfd_section_vma (objfile->obfd, lower_sect);
699 /* Calculate offsets for the loadable sections.
700 FIXME! Sections must be in order of increasing loadable section
701 so that contiguous sections can use the lower-offset!!!
703 Adjust offsets if the segments are not contiguous.
704 If the section is contiguous, its offset should be set to
705 the offset of the highest loadable section lower than it
706 (the loadable section directly below it in memory).
707 this_offset = lower_offset = lower_addr - lower_orig_addr */
709 /* Calculate offsets for sections. */
711 for (i=0 ; i < MAX_SECTIONS && addrs->other[i].name; i++)
713 if (addrs->other[i].addr != 0)
715 sect = bfd_get_section_by_name (objfile->obfd,
716 addrs->other[i].name);
720 -= bfd_section_vma (objfile->obfd, sect);
721 lower_offset = addrs->other[i].addr;
722 /* This is the index used by BFD. */
723 addrs->other[i].sectindex = sect->index ;
727 warning ("section %s not found in %s",
728 addrs->other[i].name,
730 addrs->other[i].addr = 0;
734 addrs->other[i].addr = lower_offset;
738 /* Initialize symbol reading routines for this objfile, allow complaints to
739 appear for this new file, and record how verbose to be, then do the
740 initial symbol reading for this file. */
742 (*objfile->sf->sym_init) (objfile);
743 clear_complaints (&symfile_complaints, 1, verbo);
746 (*objfile->sf->sym_offsets) (objfile, addrs);
749 size_t size = SIZEOF_N_SECTION_OFFSETS (num_offsets);
751 /* Just copy in the offset table directly as given to us. */
752 objfile->num_sections = num_offsets;
753 objfile->section_offsets
754 = ((struct section_offsets *)
755 obstack_alloc (&objfile->psymbol_obstack, size));
756 memcpy (objfile->section_offsets, offsets, size);
758 init_objfile_sect_indices (objfile);
761 #ifndef IBM6000_TARGET
762 /* This is a SVR4/SunOS specific hack, I think. In any event, it
763 screws RS/6000. sym_offsets should be doing this sort of thing,
764 because it knows the mapping between bfd sections and
766 /* This is a hack. As far as I can tell, section offsets are not
767 target dependent. They are all set to addr with a couple of
768 exceptions. The exceptions are sysvr4 shared libraries, whose
769 offsets are kept in solib structures anyway and rs6000 xcoff
770 which handles shared libraries in a completely unique way.
772 Section offsets are built similarly, except that they are built
773 by adding addr in all cases because there is no clear mapping
774 from section_offsets into actual sections. Note that solib.c
775 has a different algorithm for finding section offsets.
777 These should probably all be collapsed into some target
778 independent form of shared library support. FIXME. */
782 struct obj_section *s;
784 /* Map section offsets in "addr" back to the object's
785 sections by comparing the section names with bfd's
786 section names. Then adjust the section address by
787 the offset. */ /* for gdb/13815 */
789 ALL_OBJFILE_OSECTIONS (objfile, s)
791 CORE_ADDR s_addr = 0;
795 !s_addr && i < MAX_SECTIONS && addrs->other[i].name;
797 if (strcmp (bfd_section_name (s->objfile->obfd,
799 addrs->other[i].name) == 0)
800 s_addr = addrs->other[i].addr; /* end added for gdb/13815 */
802 s->addr -= s->offset;
804 s->endaddr -= s->offset;
805 s->endaddr += s_addr;
809 #endif /* not IBM6000_TARGET */
811 (*objfile->sf->sym_read) (objfile, mainline);
813 /* Don't allow char * to have a typename (else would get caddr_t).
814 Ditto void *. FIXME: Check whether this is now done by all the
815 symbol readers themselves (many of them now do), and if so remove
818 TYPE_NAME (lookup_pointer_type (builtin_type_char)) = 0;
819 TYPE_NAME (lookup_pointer_type (builtin_type_void)) = 0;
821 /* Mark the objfile has having had initial symbol read attempted. Note
822 that this does not mean we found any symbols... */
824 objfile->flags |= OBJF_SYMS;
826 /* Discard cleanups as symbol reading was successful. */
828 discard_cleanups (old_chain);
830 /* Call this after reading in a new symbol table to give target
831 dependent code a crack at the new symbols. For instance, this
832 could be used to update the values of target-specific symbols GDB
833 needs to keep track of (such as _sigtramp, or whatever). */
835 TARGET_SYMFILE_POSTREAD (objfile);
838 /* Perform required actions after either reading in the initial
839 symbols for a new objfile, or mapping in the symbols from a reusable
843 new_symfile_objfile (struct objfile *objfile, int mainline, int verbo)
846 /* If this is the main symbol file we have to clean up all users of the
847 old main symbol file. Otherwise it is sufficient to fixup all the
848 breakpoints that may have been redefined by this symbol file. */
851 /* OK, make it the "real" symbol file. */
852 symfile_objfile = objfile;
854 clear_symtab_users ();
858 breakpoint_re_set ();
861 /* We're done reading the symbol file; finish off complaints. */
862 clear_complaints (&symfile_complaints, 0, verbo);
865 /* Process a symbol file, as either the main file or as a dynamically
868 NAME is the file name (which will be tilde-expanded and made
869 absolute herein) (but we don't free or modify NAME itself).
871 FROM_TTY says how verbose to be.
873 MAINLINE specifies whether this is the main symbol file, or whether
874 it's an extra symbol file such as dynamically loaded code.
876 ADDRS, OFFSETS, and NUM_OFFSETS are as described for
877 syms_from_objfile, above. ADDRS is ignored when MAINLINE is
880 Upon success, returns a pointer to the objfile that was added.
881 Upon failure, jumps back to command level (never returns). */
882 static struct objfile *
883 symbol_file_add_with_addrs_or_offsets (char *name, int from_tty,
884 struct section_addr_info *addrs,
885 struct section_offsets *offsets,
887 int mainline, int flags)
889 struct objfile *objfile;
890 struct partial_symtab *psymtab;
893 struct section_addr_info orig_addrs;
898 /* Open a bfd for the file, and give user a chance to burp if we'd be
899 interactively wiping out any existing symbols. */
901 abfd = symfile_bfd_open (name);
903 if ((have_full_symbols () || have_partial_symbols ())
906 && !query ("Load new symbol table from \"%s\"? ", name))
907 error ("Not confirmed.");
909 objfile = allocate_objfile (abfd, flags);
911 /* If the objfile uses a mapped symbol file, and we have a psymtab for
912 it, then skip reading any symbols at this time. */
914 if ((objfile->flags & OBJF_MAPPED) && (objfile->flags & OBJF_SYMS))
916 /* We mapped in an existing symbol table file that already has had
917 initial symbol reading performed, so we can skip that part. Notify
918 the user that instead of reading the symbols, they have been mapped.
920 if (from_tty || info_verbose)
922 printf_filtered ("Mapped symbols for %s...", name);
924 gdb_flush (gdb_stdout);
926 init_entry_point_info (objfile);
927 find_sym_fns (objfile);
931 /* We either created a new mapped symbol table, mapped an existing
932 symbol table file which has not had initial symbol reading
933 performed, or need to read an unmapped symbol table. */
934 if (from_tty || info_verbose)
936 if (pre_add_symbol_hook)
937 pre_add_symbol_hook (name);
940 printf_filtered ("Reading symbols from %s...", name);
942 gdb_flush (gdb_stdout);
945 syms_from_objfile (objfile, addrs, offsets, num_offsets,
949 /* We now have at least a partial symbol table. Check to see if the
950 user requested that all symbols be read on initial access via either
951 the gdb startup command line or on a per symbol file basis. Expand
952 all partial symbol tables for this objfile if so. */
954 if ((flags & OBJF_READNOW) || readnow_symbol_files)
956 if (from_tty || info_verbose)
958 printf_filtered ("expanding to full symbols...");
960 gdb_flush (gdb_stdout);
963 for (psymtab = objfile->psymtabs;
965 psymtab = psymtab->next)
967 psymtab_to_symtab (psymtab);
971 debugfile = find_separate_debug_file (objfile);
976 objfile->separate_debug_objfile
977 = symbol_file_add (debugfile, from_tty, &orig_addrs, 0, flags);
981 objfile->separate_debug_objfile
982 = symbol_file_add (debugfile, from_tty, NULL, 0, flags);
984 objfile->separate_debug_objfile->separate_debug_objfile_backlink
987 /* Put the separate debug object before the normal one, this is so that
988 usage of the ALL_OBJFILES_SAFE macro will stay safe. */
989 put_objfile_before (objfile->separate_debug_objfile, objfile);
994 if (!have_partial_symbols () && !have_full_symbols ())
997 printf_filtered ("(no debugging symbols found)...");
1001 if (from_tty || info_verbose)
1003 if (post_add_symbol_hook)
1004 post_add_symbol_hook ();
1007 printf_filtered ("done.\n");
1011 /* We print some messages regardless of whether 'from_tty ||
1012 info_verbose' is true, so make sure they go out at the right
1014 gdb_flush (gdb_stdout);
1016 if (objfile->sf == NULL)
1017 return objfile; /* No symbols. */
1019 new_symfile_objfile (objfile, mainline, from_tty);
1021 if (target_new_objfile_hook)
1022 target_new_objfile_hook (objfile);
1028 /* Process a symbol file, as either the main file or as a dynamically
1029 loaded file. See symbol_file_add_with_addrs_or_offsets's comments
1032 symbol_file_add (char *name, int from_tty, struct section_addr_info *addrs,
1033 int mainline, int flags)
1035 return symbol_file_add_with_addrs_or_offsets (name, from_tty, addrs, 0, 0,
1040 /* Call symbol_file_add() with default values and update whatever is
1041 affected by the loading of a new main().
1042 Used when the file is supplied in the gdb command line
1043 and by some targets with special loading requirements.
1044 The auxiliary function, symbol_file_add_main_1(), has the flags
1045 argument for the switches that can only be specified in the symbol_file
1049 symbol_file_add_main (char *args, int from_tty)
1051 symbol_file_add_main_1 (args, from_tty, 0);
1055 symbol_file_add_main_1 (char *args, int from_tty, int flags)
1057 symbol_file_add (args, from_tty, NULL, 1, flags);
1060 RESET_HP_UX_GLOBALS ();
1063 /* Getting new symbols may change our opinion about
1064 what is frameless. */
1065 reinit_frame_cache ();
1067 set_initial_language ();
1071 symbol_file_clear (int from_tty)
1073 if ((have_full_symbols () || have_partial_symbols ())
1075 && !query ("Discard symbol table from `%s'? ",
1076 symfile_objfile->name))
1077 error ("Not confirmed.");
1078 free_all_objfiles ();
1080 /* solib descriptors may have handles to objfiles. Since their
1081 storage has just been released, we'd better wipe the solib
1082 descriptors as well.
1084 #if defined(SOLIB_RESTART)
1088 symfile_objfile = NULL;
1090 printf_unfiltered ("No symbol file now.\n");
1092 RESET_HP_UX_GLOBALS ();
1097 get_debug_link_info (struct objfile *objfile, unsigned long *crc32_out)
1100 bfd_size_type debuglink_size;
1101 unsigned long crc32;
1106 sect = bfd_get_section_by_name (objfile->obfd, ".gnu_debuglink");
1111 debuglink_size = bfd_section_size (objfile->obfd, sect);
1113 contents = xmalloc (debuglink_size);
1114 bfd_get_section_contents (objfile->obfd, sect, contents,
1115 (file_ptr)0, (bfd_size_type)debuglink_size);
1117 /* Crc value is stored after the filename, aligned up to 4 bytes. */
1118 crc_offset = strlen (contents) + 1;
1119 crc_offset = (crc_offset + 3) & ~3;
1121 crc32 = bfd_get_32 (objfile->obfd, (bfd_byte *) (contents + crc_offset));
1128 separate_debug_file_exists (const char *name, unsigned long crc)
1130 unsigned long file_crc = 0;
1132 char buffer[8*1024];
1135 fd = open (name, O_RDONLY | O_BINARY);
1139 while ((count = read (fd, buffer, sizeof (buffer))) > 0)
1140 file_crc = gnu_debuglink_crc32 (file_crc, buffer, count);
1144 return crc == file_crc;
1147 static char *debug_file_directory = NULL;
1149 #if ! defined (DEBUG_SUBDIRECTORY)
1150 #define DEBUG_SUBDIRECTORY ".debug"
1154 find_separate_debug_file (struct objfile *objfile)
1161 bfd_size_type debuglink_size;
1162 unsigned long crc32;
1165 basename = get_debug_link_info (objfile, &crc32);
1167 if (basename == NULL)
1170 dir = xstrdup (objfile->name);
1172 /* Strip off the final filename part, leaving the directory name,
1173 followed by a slash. Objfile names should always be absolute and
1174 tilde-expanded, so there should always be a slash in there
1176 for (i = strlen(dir) - 1; i >= 0; i--)
1178 if (IS_DIR_SEPARATOR (dir[i]))
1181 gdb_assert (i >= 0 && IS_DIR_SEPARATOR (dir[i]));
1184 debugfile = alloca (strlen (debug_file_directory) + 1
1186 + strlen (DEBUG_SUBDIRECTORY)
1191 /* First try in the same directory as the original file. */
1192 strcpy (debugfile, dir);
1193 strcat (debugfile, basename);
1195 if (separate_debug_file_exists (debugfile, crc32))
1199 return xstrdup (debugfile);
1202 /* Then try in the subdirectory named DEBUG_SUBDIRECTORY. */
1203 strcpy (debugfile, dir);
1204 strcat (debugfile, DEBUG_SUBDIRECTORY);
1205 strcat (debugfile, "/");
1206 strcat (debugfile, basename);
1208 if (separate_debug_file_exists (debugfile, crc32))
1212 return xstrdup (debugfile);
1215 /* Then try in the global debugfile directory. */
1216 strcpy (debugfile, debug_file_directory);
1217 strcat (debugfile, "/");
1218 strcat (debugfile, dir);
1219 strcat (debugfile, basename);
1221 if (separate_debug_file_exists (debugfile, crc32))
1225 return xstrdup (debugfile);
1234 /* This is the symbol-file command. Read the file, analyze its
1235 symbols, and add a struct symtab to a symtab list. The syntax of
1236 the command is rather bizarre--(1) buildargv implements various
1237 quoting conventions which are undocumented and have little or
1238 nothing in common with the way things are quoted (or not quoted)
1239 elsewhere in GDB, (2) options are used, which are not generally
1240 used in GDB (perhaps "set mapped on", "set readnow on" would be
1241 better), (3) the order of options matters, which is contrary to GNU
1242 conventions (because it is confusing and inconvenient). */
1243 /* Note: ezannoni 2000-04-17. This function used to have support for
1244 rombug (see remote-os9k.c). It consisted of a call to target_link()
1245 (target.c) to get the address of the text segment from the target,
1246 and pass that to symbol_file_add(). This is no longer supported. */
1249 symbol_file_command (char *args, int from_tty)
1253 struct cleanup *cleanups;
1254 int flags = OBJF_USERLOADED;
1260 symbol_file_clear (from_tty);
1264 if ((argv = buildargv (args)) == NULL)
1268 cleanups = make_cleanup_freeargv (argv);
1269 while (*argv != NULL)
1271 if (STREQ (*argv, "-mapped"))
1272 flags |= OBJF_MAPPED;
1274 if (STREQ (*argv, "-readnow"))
1275 flags |= OBJF_READNOW;
1278 error ("unknown option `%s'", *argv);
1283 symbol_file_add_main_1 (name, from_tty, flags);
1290 error ("no symbol file name was specified");
1292 do_cleanups (cleanups);
1296 /* Set the initial language.
1298 A better solution would be to record the language in the psymtab when reading
1299 partial symbols, and then use it (if known) to set the language. This would
1300 be a win for formats that encode the language in an easily discoverable place,
1301 such as DWARF. For stabs, we can jump through hoops looking for specially
1302 named symbols or try to intuit the language from the specific type of stabs
1303 we find, but we can't do that until later when we read in full symbols.
1307 set_initial_language (void)
1309 struct partial_symtab *pst;
1310 enum language lang = language_unknown;
1312 pst = find_main_psymtab ();
1315 if (pst->filename != NULL)
1317 lang = deduce_language_from_filename (pst->filename);
1319 if (lang == language_unknown)
1321 /* Make C the default language */
1324 set_language (lang);
1325 expected_language = current_language; /* Don't warn the user */
1329 /* Open file specified by NAME and hand it off to BFD for preliminary
1330 analysis. Result is a newly initialized bfd *, which includes a newly
1331 malloc'd` copy of NAME (tilde-expanded and made absolute).
1332 In case of trouble, error() is called. */
1335 symfile_bfd_open (char *name)
1339 char *absolute_name;
1343 name = tilde_expand (name); /* Returns 1st new malloc'd copy */
1345 /* Look down path for it, allocate 2nd new malloc'd copy. */
1346 desc = openp (getenv ("PATH"), 1, name, O_RDONLY | O_BINARY, 0, &absolute_name);
1347 #if defined(__GO32__) || defined(_WIN32) || defined (__CYGWIN__)
1350 char *exename = alloca (strlen (name) + 5);
1351 strcat (strcpy (exename, name), ".exe");
1352 desc = openp (getenv ("PATH"), 1, exename, O_RDONLY | O_BINARY,
1358 make_cleanup (xfree, name);
1359 perror_with_name (name);
1361 xfree (name); /* Free 1st new malloc'd copy */
1362 name = absolute_name; /* Keep 2nd malloc'd copy in bfd */
1363 /* It'll be freed in free_objfile(). */
1365 sym_bfd = bfd_fdopenr (name, gnutarget, desc);
1369 make_cleanup (xfree, name);
1370 error ("\"%s\": can't open to read symbols: %s.", name,
1371 bfd_errmsg (bfd_get_error ()));
1373 sym_bfd->cacheable = 1;
1375 if (!bfd_check_format (sym_bfd, bfd_object))
1377 /* FIXME: should be checking for errors from bfd_close (for one thing,
1378 on error it does not free all the storage associated with the
1380 bfd_close (sym_bfd); /* This also closes desc */
1381 make_cleanup (xfree, name);
1382 error ("\"%s\": can't read symbols: %s.", name,
1383 bfd_errmsg (bfd_get_error ()));
1388 /* Return the section index for the given section name. Return -1 if
1389 the section was not found. */
1391 get_section_index (struct objfile *objfile, char *section_name)
1393 asection *sect = bfd_get_section_by_name (objfile->obfd, section_name);
1400 /* Link a new symtab_fns into the global symtab_fns list. Called on gdb
1401 startup by the _initialize routine in each object file format reader,
1402 to register information about each format the the reader is prepared
1406 add_symtab_fns (struct sym_fns *sf)
1408 sf->next = symtab_fns;
1413 /* Initialize to read symbols from the symbol file sym_bfd. It either
1414 returns or calls error(). The result is an initialized struct sym_fns
1415 in the objfile structure, that contains cached information about the
1419 find_sym_fns (struct objfile *objfile)
1422 enum bfd_flavour our_flavour = bfd_get_flavour (objfile->obfd);
1423 char *our_target = bfd_get_target (objfile->obfd);
1425 if (our_flavour == bfd_target_srec_flavour
1426 || our_flavour == bfd_target_ihex_flavour
1427 || our_flavour == bfd_target_tekhex_flavour)
1428 return; /* No symbols. */
1430 /* Special kludge for apollo. See dstread.c. */
1431 if (STREQN (our_target, "apollo", 6))
1432 our_flavour = (enum bfd_flavour) -2;
1434 for (sf = symtab_fns; sf != NULL; sf = sf->next)
1436 if (our_flavour == sf->sym_flavour)
1442 error ("I'm sorry, Dave, I can't do that. Symbol format `%s' unknown.",
1443 bfd_get_target (objfile->obfd));
1446 /* This function runs the load command of our current target. */
1449 load_command (char *arg, int from_tty)
1452 arg = get_exec_file (1);
1453 target_load (arg, from_tty);
1455 /* After re-loading the executable, we don't really know which
1456 overlays are mapped any more. */
1457 overlay_cache_invalid = 1;
1460 /* This version of "load" should be usable for any target. Currently
1461 it is just used for remote targets, not inftarg.c or core files,
1462 on the theory that only in that case is it useful.
1464 Avoiding xmodem and the like seems like a win (a) because we don't have
1465 to worry about finding it, and (b) On VMS, fork() is very slow and so
1466 we don't want to run a subprocess. On the other hand, I'm not sure how
1467 performance compares. */
1469 static int download_write_size = 512;
1470 static int validate_download = 0;
1472 /* Callback service function for generic_load (bfd_map_over_sections). */
1475 add_section_size_callback (bfd *abfd, asection *asec, void *data)
1477 bfd_size_type *sum = data;
1479 *sum += bfd_get_section_size_before_reloc (asec);
1482 /* Opaque data for load_section_callback. */
1483 struct load_section_data {
1484 unsigned long load_offset;
1485 unsigned long write_count;
1486 unsigned long data_count;
1487 bfd_size_type total_size;
1490 /* Callback service function for generic_load (bfd_map_over_sections). */
1493 load_section_callback (bfd *abfd, asection *asec, void *data)
1495 struct load_section_data *args = data;
1497 if (bfd_get_section_flags (abfd, asec) & SEC_LOAD)
1499 bfd_size_type size = bfd_get_section_size_before_reloc (asec);
1503 struct cleanup *old_chain;
1504 CORE_ADDR lma = bfd_section_lma (abfd, asec) + args->load_offset;
1505 bfd_size_type block_size;
1507 const char *sect_name = bfd_get_section_name (abfd, asec);
1510 if (download_write_size > 0 && size > download_write_size)
1511 block_size = download_write_size;
1515 buffer = xmalloc (size);
1516 old_chain = make_cleanup (xfree, buffer);
1518 /* Is this really necessary? I guess it gives the user something
1519 to look at during a long download. */
1520 ui_out_message (uiout, 0, "Loading section %s, size 0x%s lma 0x%s\n",
1521 sect_name, paddr_nz (size), paddr_nz (lma));
1523 bfd_get_section_contents (abfd, asec, buffer, 0, size);
1529 bfd_size_type this_transfer = size - sent;
1531 if (this_transfer >= block_size)
1532 this_transfer = block_size;
1533 len = target_write_memory_partial (lma, buffer,
1534 this_transfer, &err);
1537 if (validate_download)
1539 /* Broken memories and broken monitors manifest
1540 themselves here when bring new computers to
1541 life. This doubles already slow downloads. */
1542 /* NOTE: cagney/1999-10-18: A more efficient
1543 implementation might add a verify_memory()
1544 method to the target vector and then use
1545 that. remote.c could implement that method
1546 using the ``qCRC'' packet. */
1547 char *check = xmalloc (len);
1548 struct cleanup *verify_cleanups =
1549 make_cleanup (xfree, check);
1551 if (target_read_memory (lma, check, len) != 0)
1552 error ("Download verify read failed at 0x%s",
1554 if (memcmp (buffer, check, len) != 0)
1555 error ("Download verify compare failed at 0x%s",
1557 do_cleanups (verify_cleanups);
1559 args->data_count += len;
1562 args->write_count += 1;
1565 || (ui_load_progress_hook != NULL
1566 && ui_load_progress_hook (sect_name, sent)))
1567 error ("Canceled the download");
1569 if (show_load_progress != NULL)
1570 show_load_progress (sect_name, sent, size,
1571 args->data_count, args->total_size);
1573 while (sent < size);
1576 error ("Memory access error while loading section %s.", sect_name);
1578 do_cleanups (old_chain);
1584 generic_load (char *args, int from_tty)
1588 time_t start_time, end_time; /* Start and end times of download */
1590 struct cleanup *old_cleanups;
1592 struct load_section_data cbdata;
1595 cbdata.load_offset = 0; /* Offset to add to vma for each section. */
1596 cbdata.write_count = 0; /* Number of writes needed. */
1597 cbdata.data_count = 0; /* Number of bytes written to target memory. */
1598 cbdata.total_size = 0; /* Total size of all bfd sectors. */
1600 /* Parse the input argument - the user can specify a load offset as
1601 a second argument. */
1602 filename = xmalloc (strlen (args) + 1);
1603 old_cleanups = make_cleanup (xfree, filename);
1604 strcpy (filename, args);
1605 offptr = strchr (filename, ' ');
1610 cbdata.load_offset = strtoul (offptr, &endptr, 0);
1611 if (offptr == endptr)
1612 error ("Invalid download offset:%s\n", offptr);
1616 cbdata.load_offset = 0;
1618 /* Open the file for loading. */
1619 loadfile_bfd = bfd_openr (filename, gnutarget);
1620 if (loadfile_bfd == NULL)
1622 perror_with_name (filename);
1626 /* FIXME: should be checking for errors from bfd_close (for one thing,
1627 on error it does not free all the storage associated with the
1629 make_cleanup_bfd_close (loadfile_bfd);
1631 if (!bfd_check_format (loadfile_bfd, bfd_object))
1633 error ("\"%s\" is not an object file: %s", filename,
1634 bfd_errmsg (bfd_get_error ()));
1637 bfd_map_over_sections (loadfile_bfd, add_section_size_callback,
1638 (void *) &cbdata.total_size);
1640 start_time = time (NULL);
1642 bfd_map_over_sections (loadfile_bfd, load_section_callback, &cbdata);
1644 end_time = time (NULL);
1646 entry = bfd_get_start_address (loadfile_bfd);
1647 ui_out_text (uiout, "Start address ");
1648 ui_out_field_fmt (uiout, "address", "0x%s", paddr_nz (entry));
1649 ui_out_text (uiout, ", load size ");
1650 ui_out_field_fmt (uiout, "load-size", "%lu", cbdata.data_count);
1651 ui_out_text (uiout, "\n");
1652 /* We were doing this in remote-mips.c, I suspect it is right
1653 for other targets too. */
1656 /* FIXME: are we supposed to call symbol_file_add or not? According
1657 to a comment from remote-mips.c (where a call to symbol_file_add
1658 was commented out), making the call confuses GDB if more than one
1659 file is loaded in. Some targets do (e.g., remote-vx.c) but
1660 others don't (or didn't - perhaphs they have all been deleted). */
1662 print_transfer_performance (gdb_stdout, cbdata.data_count,
1663 cbdata.write_count, end_time - start_time);
1665 do_cleanups (old_cleanups);
1668 /* Report how fast the transfer went. */
1670 /* DEPRECATED: cagney/1999-10-18: report_transfer_performance is being
1671 replaced by print_transfer_performance (with a very different
1672 function signature). */
1675 report_transfer_performance (unsigned long data_count, time_t start_time,
1678 print_transfer_performance (gdb_stdout, data_count,
1679 end_time - start_time, 0);
1683 print_transfer_performance (struct ui_file *stream,
1684 unsigned long data_count,
1685 unsigned long write_count,
1686 unsigned long time_count)
1688 ui_out_text (uiout, "Transfer rate: ");
1691 ui_out_field_fmt (uiout, "transfer-rate", "%lu",
1692 (data_count * 8) / time_count);
1693 ui_out_text (uiout, " bits/sec");
1697 ui_out_field_fmt (uiout, "transferred-bits", "%lu", (data_count * 8));
1698 ui_out_text (uiout, " bits in <1 sec");
1700 if (write_count > 0)
1702 ui_out_text (uiout, ", ");
1703 ui_out_field_fmt (uiout, "write-rate", "%lu", data_count / write_count);
1704 ui_out_text (uiout, " bytes/write");
1706 ui_out_text (uiout, ".\n");
1709 /* This function allows the addition of incrementally linked object files.
1710 It does not modify any state in the target, only in the debugger. */
1711 /* Note: ezannoni 2000-04-13 This function/command used to have a
1712 special case syntax for the rombug target (Rombug is the boot
1713 monitor for Microware's OS-9 / OS-9000, see remote-os9k.c). In the
1714 rombug case, the user doesn't need to supply a text address,
1715 instead a call to target_link() (in target.c) would supply the
1716 value to use. We are now discontinuing this type of ad hoc syntax. */
1720 add_symbol_file_command (char *args, int from_tty)
1722 char *filename = NULL;
1723 int flags = OBJF_USERLOADED;
1725 int expecting_option = 0;
1726 int section_index = 0;
1730 int expecting_sec_name = 0;
1731 int expecting_sec_addr = 0;
1737 } sect_opts[SECT_OFF_MAX];
1739 struct section_addr_info section_addrs;
1740 struct cleanup *my_cleanups = make_cleanup (null_cleanup, NULL);
1745 error ("add-symbol-file takes a file name and an address");
1747 /* Make a copy of the string that we can safely write into. */
1748 args = xstrdup (args);
1750 /* Ensure section_addrs is initialized */
1751 memset (§ion_addrs, 0, sizeof (section_addrs));
1753 while (*args != '\000')
1755 /* Any leading spaces? */
1756 while (isspace (*args))
1759 /* Point arg to the beginning of the argument. */
1762 /* Move args pointer over the argument. */
1763 while ((*args != '\000') && !isspace (*args))
1766 /* If there are more arguments, terminate arg and
1768 if (*args != '\000')
1771 /* Now process the argument. */
1774 /* The first argument is the file name. */
1775 filename = tilde_expand (arg);
1776 make_cleanup (xfree, filename);
1781 /* The second argument is always the text address at which
1782 to load the program. */
1783 sect_opts[section_index].name = ".text";
1784 sect_opts[section_index].value = arg;
1789 /* It's an option (starting with '-') or it's an argument
1794 if (strcmp (arg, "-mapped") == 0)
1795 flags |= OBJF_MAPPED;
1797 if (strcmp (arg, "-readnow") == 0)
1798 flags |= OBJF_READNOW;
1800 if (strcmp (arg, "-s") == 0)
1802 if (section_index >= SECT_OFF_MAX)
1803 error ("Too many sections specified.");
1804 expecting_sec_name = 1;
1805 expecting_sec_addr = 1;
1810 if (expecting_sec_name)
1812 sect_opts[section_index].name = arg;
1813 expecting_sec_name = 0;
1816 if (expecting_sec_addr)
1818 sect_opts[section_index].value = arg;
1819 expecting_sec_addr = 0;
1823 error ("USAGE: add-symbol-file <filename> <textaddress> [-mapped] [-readnow] [-s <secname> <addr>]*");
1829 /* Print the prompt for the query below. And save the arguments into
1830 a sect_addr_info structure to be passed around to other
1831 functions. We have to split this up into separate print
1832 statements because local_hex_string returns a local static
1835 printf_filtered ("add symbol table from file \"%s\" at\n", filename);
1836 for (i = 0; i < section_index; i++)
1839 char *val = sect_opts[i].value;
1840 char *sec = sect_opts[i].name;
1842 val = sect_opts[i].value;
1843 if (val[0] == '0' && val[1] == 'x')
1844 addr = strtoul (val+2, NULL, 16);
1846 addr = strtoul (val, NULL, 10);
1848 /* Here we store the section offsets in the order they were
1849 entered on the command line. */
1850 section_addrs.other[sec_num].name = sec;
1851 section_addrs.other[sec_num].addr = addr;
1852 printf_filtered ("\t%s_addr = %s\n",
1854 local_hex_string ((unsigned long)addr));
1857 /* The object's sections are initialized when a
1858 call is made to build_objfile_section_table (objfile).
1859 This happens in reread_symbols.
1860 At this point, we don't know what file type this is,
1861 so we can't determine what section names are valid. */
1864 if (from_tty && (!query ("%s", "")))
1865 error ("Not confirmed.");
1867 symbol_file_add (filename, from_tty, §ion_addrs, 0, flags);
1869 /* Getting new symbols may change our opinion about what is
1871 reinit_frame_cache ();
1872 do_cleanups (my_cleanups);
1876 add_shared_symbol_files_command (char *args, int from_tty)
1878 #ifdef ADD_SHARED_SYMBOL_FILES
1879 ADD_SHARED_SYMBOL_FILES (args, from_tty);
1881 error ("This command is not available in this configuration of GDB.");
1885 /* Re-read symbols if a symbol-file has changed. */
1887 reread_symbols (void)
1889 struct objfile *objfile;
1892 struct stat new_statbuf;
1895 /* With the addition of shared libraries, this should be modified,
1896 the load time should be saved in the partial symbol tables, since
1897 different tables may come from different source files. FIXME.
1898 This routine should then walk down each partial symbol table
1899 and see if the symbol table that it originates from has been changed */
1901 for (objfile = object_files; objfile; objfile = objfile->next)
1905 #ifdef IBM6000_TARGET
1906 /* If this object is from a shared library, then you should
1907 stat on the library name, not member name. */
1909 if (objfile->obfd->my_archive)
1910 res = stat (objfile->obfd->my_archive->filename, &new_statbuf);
1913 res = stat (objfile->name, &new_statbuf);
1916 /* FIXME, should use print_sys_errmsg but it's not filtered. */
1917 printf_filtered ("`%s' has disappeared; keeping its symbols.\n",
1921 new_modtime = new_statbuf.st_mtime;
1922 if (new_modtime != objfile->mtime)
1924 struct cleanup *old_cleanups;
1925 struct section_offsets *offsets;
1927 char *obfd_filename;
1929 printf_filtered ("`%s' has changed; re-reading symbols.\n",
1932 /* There are various functions like symbol_file_add,
1933 symfile_bfd_open, syms_from_objfile, etc., which might
1934 appear to do what we want. But they have various other
1935 effects which we *don't* want. So we just do stuff
1936 ourselves. We don't worry about mapped files (for one thing,
1937 any mapped file will be out of date). */
1939 /* If we get an error, blow away this objfile (not sure if
1940 that is the correct response for things like shared
1942 old_cleanups = make_cleanup_free_objfile (objfile);
1943 /* We need to do this whenever any symbols go away. */
1944 make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/);
1946 /* Clean up any state BFD has sitting around. We don't need
1947 to close the descriptor but BFD lacks a way of closing the
1948 BFD without closing the descriptor. */
1949 obfd_filename = bfd_get_filename (objfile->obfd);
1950 if (!bfd_close (objfile->obfd))
1951 error ("Can't close BFD for %s: %s", objfile->name,
1952 bfd_errmsg (bfd_get_error ()));
1953 objfile->obfd = bfd_openr (obfd_filename, gnutarget);
1954 if (objfile->obfd == NULL)
1955 error ("Can't open %s to read symbols.", objfile->name);
1956 /* bfd_openr sets cacheable to true, which is what we want. */
1957 if (!bfd_check_format (objfile->obfd, bfd_object))
1958 error ("Can't read symbols from %s: %s.", objfile->name,
1959 bfd_errmsg (bfd_get_error ()));
1961 /* Save the offsets, we will nuke them with the rest of the
1963 num_offsets = objfile->num_sections;
1964 offsets = (struct section_offsets *) alloca (SIZEOF_SECTION_OFFSETS);
1965 memcpy (offsets, objfile->section_offsets, SIZEOF_SECTION_OFFSETS);
1967 /* Nuke all the state that we will re-read. Much of the following
1968 code which sets things to NULL really is necessary to tell
1969 other parts of GDB that there is nothing currently there. */
1971 /* FIXME: Do we have to free a whole linked list, or is this
1973 if (objfile->global_psymbols.list)
1974 xmfree (objfile->md, objfile->global_psymbols.list);
1975 memset (&objfile->global_psymbols, 0,
1976 sizeof (objfile->global_psymbols));
1977 if (objfile->static_psymbols.list)
1978 xmfree (objfile->md, objfile->static_psymbols.list);
1979 memset (&objfile->static_psymbols, 0,
1980 sizeof (objfile->static_psymbols));
1982 /* Free the obstacks for non-reusable objfiles */
1983 bcache_xfree (objfile->psymbol_cache);
1984 objfile->psymbol_cache = bcache_xmalloc ();
1985 bcache_xfree (objfile->macro_cache);
1986 objfile->macro_cache = bcache_xmalloc ();
1987 if (objfile->demangled_names_hash != NULL)
1989 htab_delete (objfile->demangled_names_hash);
1990 objfile->demangled_names_hash = NULL;
1992 obstack_free (&objfile->psymbol_obstack, 0);
1993 obstack_free (&objfile->symbol_obstack, 0);
1994 obstack_free (&objfile->type_obstack, 0);
1995 objfile->sections = NULL;
1996 objfile->symtabs = NULL;
1997 objfile->psymtabs = NULL;
1998 objfile->free_psymtabs = NULL;
1999 objfile->msymbols = NULL;
2000 objfile->minimal_symbol_count = 0;
2001 memset (&objfile->msymbol_hash, 0,
2002 sizeof (objfile->msymbol_hash));
2003 memset (&objfile->msymbol_demangled_hash, 0,
2004 sizeof (objfile->msymbol_demangled_hash));
2005 objfile->fundamental_types = NULL;
2006 if (objfile->sf != NULL)
2008 (*objfile->sf->sym_finish) (objfile);
2011 /* We never make this a mapped file. */
2013 /* obstack_specify_allocation also initializes the obstack so
2015 objfile->psymbol_cache = bcache_xmalloc ();
2016 objfile->macro_cache = bcache_xmalloc ();
2017 obstack_specify_allocation (&objfile->psymbol_obstack, 0, 0,
2019 obstack_specify_allocation (&objfile->symbol_obstack, 0, 0,
2021 obstack_specify_allocation (&objfile->type_obstack, 0, 0,
2023 if (build_objfile_section_table (objfile))
2025 error ("Can't find the file sections in `%s': %s",
2026 objfile->name, bfd_errmsg (bfd_get_error ()));
2028 terminate_minimal_symbol_table (objfile);
2030 /* We use the same section offsets as from last time. I'm not
2031 sure whether that is always correct for shared libraries. */
2032 objfile->section_offsets = (struct section_offsets *)
2033 obstack_alloc (&objfile->psymbol_obstack, SIZEOF_SECTION_OFFSETS);
2034 memcpy (objfile->section_offsets, offsets, SIZEOF_SECTION_OFFSETS);
2035 objfile->num_sections = num_offsets;
2037 /* What the hell is sym_new_init for, anyway? The concept of
2038 distinguishing between the main file and additional files
2039 in this way seems rather dubious. */
2040 if (objfile == symfile_objfile)
2042 (*objfile->sf->sym_new_init) (objfile);
2044 RESET_HP_UX_GLOBALS ();
2048 (*objfile->sf->sym_init) (objfile);
2049 clear_complaints (&symfile_complaints, 1, 1);
2050 /* The "mainline" parameter is a hideous hack; I think leaving it
2051 zero is OK since dbxread.c also does what it needs to do if
2052 objfile->global_psymbols.size is 0. */
2053 (*objfile->sf->sym_read) (objfile, 0);
2054 if (!have_partial_symbols () && !have_full_symbols ())
2057 printf_filtered ("(no debugging symbols found)\n");
2060 objfile->flags |= OBJF_SYMS;
2062 /* We're done reading the symbol file; finish off complaints. */
2063 clear_complaints (&symfile_complaints, 0, 1);
2065 /* Getting new symbols may change our opinion about what is
2068 reinit_frame_cache ();
2070 /* Discard cleanups as symbol reading was successful. */
2071 discard_cleanups (old_cleanups);
2073 /* If the mtime has changed between the time we set new_modtime
2074 and now, we *want* this to be out of date, so don't call stat
2076 objfile->mtime = new_modtime;
2079 /* Call this after reading in a new symbol table to give target
2080 dependent code a crack at the new symbols. For instance, this
2081 could be used to update the values of target-specific symbols GDB
2082 needs to keep track of (such as _sigtramp, or whatever). */
2084 TARGET_SYMFILE_POSTREAD (objfile);
2086 reread_separate_symbols (objfile);
2092 clear_symtab_users ();
2096 /* Handle separate debug info for OBJFILE, which has just been
2098 - If we had separate debug info before, but now we don't, get rid
2099 of the separated objfile.
2100 - If we didn't have separated debug info before, but now we do,
2101 read in the new separated debug info file.
2102 - If the debug link points to a different file, toss the old one
2103 and read the new one.
2104 This function does *not* handle the case where objfile is still
2105 using the same separate debug info file, but that file's timestamp
2106 has changed. That case should be handled by the loop in
2107 reread_symbols already. */
2109 reread_separate_symbols (struct objfile *objfile)
2112 unsigned long crc32;
2114 /* Does the updated objfile's debug info live in a
2116 debug_file = find_separate_debug_file (objfile);
2118 if (objfile->separate_debug_objfile)
2120 /* There are two cases where we need to get rid of
2121 the old separated debug info objfile:
2122 - if the new primary objfile doesn't have
2123 separated debug info, or
2124 - if the new primary objfile has separate debug
2125 info, but it's under a different filename.
2127 If the old and new objfiles both have separate
2128 debug info, under the same filename, then we're
2129 okay --- if the separated file's contents have
2130 changed, we will have caught that when we
2131 visited it in this function's outermost
2134 || strcmp (debug_file, objfile->separate_debug_objfile->name) != 0)
2135 free_objfile (objfile->separate_debug_objfile);
2138 /* If the new objfile has separate debug info, and we
2139 haven't loaded it already, do so now. */
2141 && ! objfile->separate_debug_objfile)
2143 /* Use the same section offset table as objfile itself.
2144 Preserve the flags from objfile that make sense. */
2145 objfile->separate_debug_objfile
2146 = (symbol_file_add_with_addrs_or_offsets
2148 info_verbose, /* from_tty: Don't override the default. */
2149 0, /* No addr table. */
2150 objfile->section_offsets, objfile->num_sections,
2151 0, /* Not mainline. See comments about this above. */
2152 objfile->flags & (OBJF_MAPPED | OBJF_REORDERED
2153 | OBJF_SHARED | OBJF_READNOW
2154 | OBJF_USERLOADED)));
2155 objfile->separate_debug_objfile->separate_debug_objfile_backlink
2171 static filename_language *filename_language_table;
2172 static int fl_table_size, fl_table_next;
2175 add_filename_language (char *ext, enum language lang)
2177 if (fl_table_next >= fl_table_size)
2179 fl_table_size += 10;
2180 filename_language_table =
2181 xrealloc (filename_language_table,
2182 fl_table_size * sizeof (*filename_language_table));
2185 filename_language_table[fl_table_next].ext = xstrdup (ext);
2186 filename_language_table[fl_table_next].lang = lang;
2190 static char *ext_args;
2193 set_ext_lang_command (char *args, int from_tty)
2196 char *cp = ext_args;
2199 /* First arg is filename extension, starting with '.' */
2201 error ("'%s': Filename extension must begin with '.'", ext_args);
2203 /* Find end of first arg. */
2204 while (*cp && !isspace (*cp))
2208 error ("'%s': two arguments required -- filename extension and language",
2211 /* Null-terminate first arg */
2214 /* Find beginning of second arg, which should be a source language. */
2215 while (*cp && isspace (*cp))
2219 error ("'%s': two arguments required -- filename extension and language",
2222 /* Lookup the language from among those we know. */
2223 lang = language_enum (cp);
2225 /* Now lookup the filename extension: do we already know it? */
2226 for (i = 0; i < fl_table_next; i++)
2227 if (0 == strcmp (ext_args, filename_language_table[i].ext))
2230 if (i >= fl_table_next)
2232 /* new file extension */
2233 add_filename_language (ext_args, lang);
2237 /* redefining a previously known filename extension */
2240 /* query ("Really make files of type %s '%s'?", */
2241 /* ext_args, language_str (lang)); */
2243 xfree (filename_language_table[i].ext);
2244 filename_language_table[i].ext = xstrdup (ext_args);
2245 filename_language_table[i].lang = lang;
2250 info_ext_lang_command (char *args, int from_tty)
2254 printf_filtered ("Filename extensions and the languages they represent:");
2255 printf_filtered ("\n\n");
2256 for (i = 0; i < fl_table_next; i++)
2257 printf_filtered ("\t%s\t- %s\n",
2258 filename_language_table[i].ext,
2259 language_str (filename_language_table[i].lang));
2263 init_filename_language_table (void)
2265 if (fl_table_size == 0) /* protect against repetition */
2269 filename_language_table =
2270 xmalloc (fl_table_size * sizeof (*filename_language_table));
2271 add_filename_language (".c", language_c);
2272 add_filename_language (".C", language_cplus);
2273 add_filename_language (".cc", language_cplus);
2274 add_filename_language (".cp", language_cplus);
2275 add_filename_language (".cpp", language_cplus);
2276 add_filename_language (".cxx", language_cplus);
2277 add_filename_language (".c++", language_cplus);
2278 add_filename_language (".java", language_java);
2279 add_filename_language (".class", language_java);
2280 add_filename_language (".m", language_objc);
2281 add_filename_language (".f", language_fortran);
2282 add_filename_language (".F", language_fortran);
2283 add_filename_language (".s", language_asm);
2284 add_filename_language (".S", language_asm);
2285 add_filename_language (".pas", language_pascal);
2286 add_filename_language (".p", language_pascal);
2287 add_filename_language (".pp", language_pascal);
2292 deduce_language_from_filename (char *filename)
2297 if (filename != NULL)
2298 if ((cp = strrchr (filename, '.')) != NULL)
2299 for (i = 0; i < fl_table_next; i++)
2300 if (strcmp (cp, filename_language_table[i].ext) == 0)
2301 return filename_language_table[i].lang;
2303 return language_unknown;
2308 Allocate and partly initialize a new symbol table. Return a pointer
2309 to it. error() if no space.
2311 Caller must set these fields:
2317 possibly free_named_symtabs (symtab->filename);
2321 allocate_symtab (char *filename, struct objfile *objfile)
2323 register struct symtab *symtab;
2325 symtab = (struct symtab *)
2326 obstack_alloc (&objfile->symbol_obstack, sizeof (struct symtab));
2327 memset (symtab, 0, sizeof (*symtab));
2328 symtab->filename = obsavestring (filename, strlen (filename),
2329 &objfile->symbol_obstack);
2330 symtab->fullname = NULL;
2331 symtab->language = deduce_language_from_filename (filename);
2332 symtab->debugformat = obsavestring ("unknown", 7,
2333 &objfile->symbol_obstack);
2335 /* Hook it to the objfile it comes from */
2337 symtab->objfile = objfile;
2338 symtab->next = objfile->symtabs;
2339 objfile->symtabs = symtab;
2341 /* FIXME: This should go away. It is only defined for the Z8000,
2342 and the Z8000 definition of this macro doesn't have anything to
2343 do with the now-nonexistent EXTRA_SYMTAB_INFO macro, it's just
2344 here for convenience. */
2345 #ifdef INIT_EXTRA_SYMTAB_INFO
2346 INIT_EXTRA_SYMTAB_INFO (symtab);
2352 struct partial_symtab *
2353 allocate_psymtab (char *filename, struct objfile *objfile)
2355 struct partial_symtab *psymtab;
2357 if (objfile->free_psymtabs)
2359 psymtab = objfile->free_psymtabs;
2360 objfile->free_psymtabs = psymtab->next;
2363 psymtab = (struct partial_symtab *)
2364 obstack_alloc (&objfile->psymbol_obstack,
2365 sizeof (struct partial_symtab));
2367 memset (psymtab, 0, sizeof (struct partial_symtab));
2368 psymtab->filename = obsavestring (filename, strlen (filename),
2369 &objfile->psymbol_obstack);
2370 psymtab->symtab = NULL;
2372 /* Prepend it to the psymtab list for the objfile it belongs to.
2373 Psymtabs are searched in most recent inserted -> least recent
2376 psymtab->objfile = objfile;
2377 psymtab->next = objfile->psymtabs;
2378 objfile->psymtabs = psymtab;
2381 struct partial_symtab **prev_pst;
2382 psymtab->objfile = objfile;
2383 psymtab->next = NULL;
2384 prev_pst = &(objfile->psymtabs);
2385 while ((*prev_pst) != NULL)
2386 prev_pst = &((*prev_pst)->next);
2387 (*prev_pst) = psymtab;
2395 discard_psymtab (struct partial_symtab *pst)
2397 struct partial_symtab **prev_pst;
2400 Empty psymtabs happen as a result of header files which don't
2401 have any symbols in them. There can be a lot of them. But this
2402 check is wrong, in that a psymtab with N_SLINE entries but
2403 nothing else is not empty, but we don't realize that. Fixing
2404 that without slowing things down might be tricky. */
2406 /* First, snip it out of the psymtab chain */
2408 prev_pst = &(pst->objfile->psymtabs);
2409 while ((*prev_pst) != pst)
2410 prev_pst = &((*prev_pst)->next);
2411 (*prev_pst) = pst->next;
2413 /* Next, put it on a free list for recycling */
2415 pst->next = pst->objfile->free_psymtabs;
2416 pst->objfile->free_psymtabs = pst;
2420 /* Reset all data structures in gdb which may contain references to symbol
2424 clear_symtab_users (void)
2426 /* Someday, we should do better than this, by only blowing away
2427 the things that really need to be blown. */
2428 clear_value_history ();
2430 clear_internalvars ();
2431 breakpoint_re_set ();
2432 set_default_breakpoint (0, 0, 0, 0);
2433 clear_current_source_symtab_and_line ();
2434 clear_pc_function_cache ();
2435 if (target_new_objfile_hook)
2436 target_new_objfile_hook (NULL);
2440 clear_symtab_users_cleanup (void *ignore)
2442 clear_symtab_users ();
2445 /* clear_symtab_users_once:
2447 This function is run after symbol reading, or from a cleanup.
2448 If an old symbol table was obsoleted, the old symbol table
2449 has been blown away, but the other GDB data structures that may
2450 reference it have not yet been cleared or re-directed. (The old
2451 symtab was zapped, and the cleanup queued, in free_named_symtab()
2454 This function can be queued N times as a cleanup, or called
2455 directly; it will do all the work the first time, and then will be a
2456 no-op until the next time it is queued. This works by bumping a
2457 counter at queueing time. Much later when the cleanup is run, or at
2458 the end of symbol processing (in case the cleanup is discarded), if
2459 the queued count is greater than the "done-count", we do the work
2460 and set the done-count to the queued count. If the queued count is
2461 less than or equal to the done-count, we just ignore the call. This
2462 is needed because reading a single .o file will often replace many
2463 symtabs (one per .h file, for example), and we don't want to reset
2464 the breakpoints N times in the user's face.
2466 The reason we both queue a cleanup, and call it directly after symbol
2467 reading, is because the cleanup protects us in case of errors, but is
2468 discarded if symbol reading is successful. */
2471 /* FIXME: As free_named_symtabs is currently a big noop this function
2472 is no longer needed. */
2473 static void clear_symtab_users_once (void);
2475 static int clear_symtab_users_queued;
2476 static int clear_symtab_users_done;
2479 clear_symtab_users_once (void)
2481 /* Enforce once-per-`do_cleanups'-semantics */
2482 if (clear_symtab_users_queued <= clear_symtab_users_done)
2484 clear_symtab_users_done = clear_symtab_users_queued;
2486 clear_symtab_users ();
2490 /* Delete the specified psymtab, and any others that reference it. */
2493 cashier_psymtab (struct partial_symtab *pst)
2495 struct partial_symtab *ps, *pprev = NULL;
2498 /* Find its previous psymtab in the chain */
2499 for (ps = pst->objfile->psymtabs; ps; ps = ps->next)
2508 /* Unhook it from the chain. */
2509 if (ps == pst->objfile->psymtabs)
2510 pst->objfile->psymtabs = ps->next;
2512 pprev->next = ps->next;
2514 /* FIXME, we can't conveniently deallocate the entries in the
2515 partial_symbol lists (global_psymbols/static_psymbols) that
2516 this psymtab points to. These just take up space until all
2517 the psymtabs are reclaimed. Ditto the dependencies list and
2518 filename, which are all in the psymbol_obstack. */
2520 /* We need to cashier any psymtab that has this one as a dependency... */
2522 for (ps = pst->objfile->psymtabs; ps; ps = ps->next)
2524 for (i = 0; i < ps->number_of_dependencies; i++)
2526 if (ps->dependencies[i] == pst)
2528 cashier_psymtab (ps);
2529 goto again; /* Must restart, chain has been munged. */
2536 /* If a symtab or psymtab for filename NAME is found, free it along
2537 with any dependent breakpoints, displays, etc.
2538 Used when loading new versions of object modules with the "add-file"
2539 command. This is only called on the top-level symtab or psymtab's name;
2540 it is not called for subsidiary files such as .h files.
2542 Return value is 1 if we blew away the environment, 0 if not.
2543 FIXME. The return value appears to never be used.
2545 FIXME. I think this is not the best way to do this. We should
2546 work on being gentler to the environment while still cleaning up
2547 all stray pointers into the freed symtab. */
2550 free_named_symtabs (char *name)
2553 /* FIXME: With the new method of each objfile having it's own
2554 psymtab list, this function needs serious rethinking. In particular,
2555 why was it ever necessary to toss psymtabs with specific compilation
2556 unit filenames, as opposed to all psymtabs from a particular symbol
2558 Well, the answer is that some systems permit reloading of particular
2559 compilation units. We want to blow away any old info about these
2560 compilation units, regardless of which objfiles they arrived in. --gnu. */
2562 register struct symtab *s;
2563 register struct symtab *prev;
2564 register struct partial_symtab *ps;
2565 struct blockvector *bv;
2568 /* We only wack things if the symbol-reload switch is set. */
2569 if (!symbol_reloading)
2572 /* Some symbol formats have trouble providing file names... */
2573 if (name == 0 || *name == '\0')
2576 /* Look for a psymtab with the specified name. */
2579 for (ps = partial_symtab_list; ps; ps = ps->next)
2581 if (STREQ (name, ps->filename))
2583 cashier_psymtab (ps); /* Blow it away...and its little dog, too. */
2584 goto again2; /* Must restart, chain has been munged */
2588 /* Look for a symtab with the specified name. */
2590 for (s = symtab_list; s; s = s->next)
2592 if (STREQ (name, s->filename))
2599 if (s == symtab_list)
2600 symtab_list = s->next;
2602 prev->next = s->next;
2604 /* For now, queue a delete for all breakpoints, displays, etc., whether
2605 or not they depend on the symtab being freed. This should be
2606 changed so that only those data structures affected are deleted. */
2608 /* But don't delete anything if the symtab is empty.
2609 This test is necessary due to a bug in "dbxread.c" that
2610 causes empty symtabs to be created for N_SO symbols that
2611 contain the pathname of the object file. (This problem
2612 has been fixed in GDB 3.9x). */
2614 bv = BLOCKVECTOR (s);
2615 if (BLOCKVECTOR_NBLOCKS (bv) > 2
2616 || BLOCK_NSYMS (BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK))
2617 || BLOCK_NSYMS (BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK)))
2619 complaint (&symfile_complaints, "Replacing old symbols for `%s'",
2621 clear_symtab_users_queued++;
2622 make_cleanup (clear_symtab_users_once, 0);
2627 complaint (&symfile_complaints, "Empty symbol table found for `%s'",
2635 /* It is still possible that some breakpoints will be affected
2636 even though no symtab was found, since the file might have
2637 been compiled without debugging, and hence not be associated
2638 with a symtab. In order to handle this correctly, we would need
2639 to keep a list of text address ranges for undebuggable files.
2640 For now, we do nothing, since this is a fairly obscure case. */
2644 /* FIXME, what about the minimal symbol table? */
2651 /* Allocate and partially fill a partial symtab. It will be
2652 completely filled at the end of the symbol list.
2654 FILENAME is the name of the symbol-file we are reading from. */
2656 struct partial_symtab *
2657 start_psymtab_common (struct objfile *objfile,
2658 struct section_offsets *section_offsets, char *filename,
2659 CORE_ADDR textlow, struct partial_symbol **global_syms,
2660 struct partial_symbol **static_syms)
2662 struct partial_symtab *psymtab;
2664 psymtab = allocate_psymtab (filename, objfile);
2665 psymtab->section_offsets = section_offsets;
2666 psymtab->textlow = textlow;
2667 psymtab->texthigh = psymtab->textlow; /* default */
2668 psymtab->globals_offset = global_syms - objfile->global_psymbols.list;
2669 psymtab->statics_offset = static_syms - objfile->static_psymbols.list;
2673 /* Add a symbol with a long value to a psymtab.
2674 Since one arg is a struct, we pass in a ptr and deref it (sigh). */
2677 add_psymbol_to_list (char *name, int namelength, namespace_enum namespace,
2678 enum address_class class,
2679 struct psymbol_allocation_list *list, long val, /* Value as a long */
2680 CORE_ADDR coreaddr, /* Value as a CORE_ADDR */
2681 enum language language, struct objfile *objfile)
2683 register struct partial_symbol *psym;
2684 char *buf = alloca (namelength + 1);
2685 /* psymbol is static so that there will be no uninitialized gaps in the
2686 structure which might contain random data, causing cache misses in
2688 static struct partial_symbol psymbol;
2690 /* Create local copy of the partial symbol */
2691 memcpy (buf, name, namelength);
2692 buf[namelength] = '\0';
2693 /* val and coreaddr are mutually exclusive, one of them *will* be zero */
2696 SYMBOL_VALUE (&psymbol) = val;
2700 SYMBOL_VALUE_ADDRESS (&psymbol) = coreaddr;
2702 SYMBOL_SECTION (&psymbol) = 0;
2703 SYMBOL_LANGUAGE (&psymbol) = language;
2704 PSYMBOL_NAMESPACE (&psymbol) = namespace;
2705 PSYMBOL_CLASS (&psymbol) = class;
2707 SYMBOL_SET_NAMES (&psymbol, buf, namelength, objfile);
2709 /* Stash the partial symbol away in the cache */
2710 psym = bcache (&psymbol, sizeof (struct partial_symbol), objfile->psymbol_cache);
2712 /* Save pointer to partial symbol in psymtab, growing symtab if needed. */
2713 if (list->next >= list->list + list->size)
2715 extend_psymbol_list (list, objfile);
2717 *list->next++ = psym;
2718 OBJSTAT (objfile, n_psyms++);
2721 /* Add a symbol with a long value to a psymtab. This differs from
2722 * add_psymbol_to_list above in taking both a mangled and a demangled
2726 add_psymbol_with_dem_name_to_list (char *name, int namelength, char *dem_name,
2727 int dem_namelength, namespace_enum namespace,
2728 enum address_class class,
2729 struct psymbol_allocation_list *list, long val, /* Value as a long */
2730 CORE_ADDR coreaddr, /* Value as a CORE_ADDR */
2731 enum language language,
2732 struct objfile *objfile)
2734 register struct partial_symbol *psym;
2735 char *buf = alloca (namelength + 1);
2736 /* psymbol is static so that there will be no uninitialized gaps in the
2737 structure which might contain random data, causing cache misses in
2739 static struct partial_symbol psymbol;
2741 /* Create local copy of the partial symbol */
2743 memcpy (buf, name, namelength);
2744 buf[namelength] = '\0';
2745 SYMBOL_NAME (&psymbol) = bcache (buf, namelength + 1, objfile->psymbol_cache);
2747 buf = alloca (dem_namelength + 1);
2748 memcpy (buf, dem_name, dem_namelength);
2749 buf[dem_namelength] = '\0';
2754 case language_cplus:
2755 SYMBOL_CPLUS_DEMANGLED_NAME (&psymbol) =
2756 bcache (buf, dem_namelength + 1, objfile->psymbol_cache);
2758 /* FIXME What should be done for the default case? Ignoring for now. */
2761 /* val and coreaddr are mutually exclusive, one of them *will* be zero */
2764 SYMBOL_VALUE (&psymbol) = val;
2768 SYMBOL_VALUE_ADDRESS (&psymbol) = coreaddr;
2770 SYMBOL_SECTION (&psymbol) = 0;
2771 SYMBOL_LANGUAGE (&psymbol) = language;
2772 PSYMBOL_NAMESPACE (&psymbol) = namespace;
2773 PSYMBOL_CLASS (&psymbol) = class;
2774 SYMBOL_INIT_LANGUAGE_SPECIFIC (&psymbol, language);
2776 /* Stash the partial symbol away in the cache */
2777 psym = bcache (&psymbol, sizeof (struct partial_symbol), objfile->psymbol_cache);
2779 /* Save pointer to partial symbol in psymtab, growing symtab if needed. */
2780 if (list->next >= list->list + list->size)
2782 extend_psymbol_list (list, objfile);
2784 *list->next++ = psym;
2785 OBJSTAT (objfile, n_psyms++);
2788 /* Initialize storage for partial symbols. */
2791 init_psymbol_list (struct objfile *objfile, int total_symbols)
2793 /* Free any previously allocated psymbol lists. */
2795 if (objfile->global_psymbols.list)
2797 xmfree (objfile->md, objfile->global_psymbols.list);
2799 if (objfile->static_psymbols.list)
2801 xmfree (objfile->md, objfile->static_psymbols.list);
2804 /* Current best guess is that approximately a twentieth
2805 of the total symbols (in a debugging file) are global or static
2808 objfile->global_psymbols.size = total_symbols / 10;
2809 objfile->static_psymbols.size = total_symbols / 10;
2811 if (objfile->global_psymbols.size > 0)
2813 objfile->global_psymbols.next =
2814 objfile->global_psymbols.list = (struct partial_symbol **)
2815 xmmalloc (objfile->md, (objfile->global_psymbols.size
2816 * sizeof (struct partial_symbol *)));
2818 if (objfile->static_psymbols.size > 0)
2820 objfile->static_psymbols.next =
2821 objfile->static_psymbols.list = (struct partial_symbol **)
2822 xmmalloc (objfile->md, (objfile->static_psymbols.size
2823 * sizeof (struct partial_symbol *)));
2828 The following code implements an abstraction for debugging overlay sections.
2830 The target model is as follows:
2831 1) The gnu linker will permit multiple sections to be mapped into the
2832 same VMA, each with its own unique LMA (or load address).
2833 2) It is assumed that some runtime mechanism exists for mapping the
2834 sections, one by one, from the load address into the VMA address.
2835 3) This code provides a mechanism for gdb to keep track of which
2836 sections should be considered to be mapped from the VMA to the LMA.
2837 This information is used for symbol lookup, and memory read/write.
2838 For instance, if a section has been mapped then its contents
2839 should be read from the VMA, otherwise from the LMA.
2841 Two levels of debugger support for overlays are available. One is
2842 "manual", in which the debugger relies on the user to tell it which
2843 overlays are currently mapped. This level of support is
2844 implemented entirely in the core debugger, and the information about
2845 whether a section is mapped is kept in the objfile->obj_section table.
2847 The second level of support is "automatic", and is only available if
2848 the target-specific code provides functionality to read the target's
2849 overlay mapping table, and translate its contents for the debugger
2850 (by updating the mapped state information in the obj_section tables).
2852 The interface is as follows:
2854 overlay map <name> -- tell gdb to consider this section mapped
2855 overlay unmap <name> -- tell gdb to consider this section unmapped
2856 overlay list -- list the sections that GDB thinks are mapped
2857 overlay read-target -- get the target's state of what's mapped
2858 overlay off/manual/auto -- set overlay debugging state
2859 Functional interface:
2860 find_pc_mapped_section(pc): if the pc is in the range of a mapped
2861 section, return that section.
2862 find_pc_overlay(pc): find any overlay section that contains
2863 the pc, either in its VMA or its LMA
2864 overlay_is_mapped(sect): true if overlay is marked as mapped
2865 section_is_overlay(sect): true if section's VMA != LMA
2866 pc_in_mapped_range(pc,sec): true if pc belongs to section's VMA
2867 pc_in_unmapped_range(...): true if pc belongs to section's LMA
2868 sections_overlap(sec1, sec2): true if mapped sec1 and sec2 ranges overlap
2869 overlay_mapped_address(...): map an address from section's LMA to VMA
2870 overlay_unmapped_address(...): map an address from section's VMA to LMA
2871 symbol_overlayed_address(...): Return a "current" address for symbol:
2872 either in VMA or LMA depending on whether
2873 the symbol's section is currently mapped
2876 /* Overlay debugging state: */
2878 enum overlay_debugging_state overlay_debugging = ovly_off;
2879 int overlay_cache_invalid = 0; /* True if need to refresh mapped state */
2881 /* Target vector for refreshing overlay mapped state */
2882 static void simple_overlay_update (struct obj_section *);
2883 void (*target_overlay_update) (struct obj_section *) = simple_overlay_update;
2885 /* Function: section_is_overlay (SECTION)
2886 Returns true if SECTION has VMA not equal to LMA, ie.
2887 SECTION is loaded at an address different from where it will "run". */
2890 section_is_overlay (asection *section)
2892 /* FIXME: need bfd *, so we can use bfd_section_lma methods. */
2894 if (overlay_debugging)
2895 if (section && section->lma != 0 &&
2896 section->vma != section->lma)
2902 /* Function: overlay_invalidate_all (void)
2903 Invalidate the mapped state of all overlay sections (mark it as stale). */
2906 overlay_invalidate_all (void)
2908 struct objfile *objfile;
2909 struct obj_section *sect;
2911 ALL_OBJSECTIONS (objfile, sect)
2912 if (section_is_overlay (sect->the_bfd_section))
2913 sect->ovly_mapped = -1;
2916 /* Function: overlay_is_mapped (SECTION)
2917 Returns true if section is an overlay, and is currently mapped.
2918 Private: public access is thru function section_is_mapped.
2920 Access to the ovly_mapped flag is restricted to this function, so
2921 that we can do automatic update. If the global flag
2922 OVERLAY_CACHE_INVALID is set (by wait_for_inferior), then call
2923 overlay_invalidate_all. If the mapped state of the particular
2924 section is stale, then call TARGET_OVERLAY_UPDATE to refresh it. */
2927 overlay_is_mapped (struct obj_section *osect)
2929 if (osect == 0 || !section_is_overlay (osect->the_bfd_section))
2932 switch (overlay_debugging)
2936 return 0; /* overlay debugging off */
2937 case ovly_auto: /* overlay debugging automatic */
2938 /* Unles there is a target_overlay_update function,
2939 there's really nothing useful to do here (can't really go auto) */
2940 if (target_overlay_update)
2942 if (overlay_cache_invalid)
2944 overlay_invalidate_all ();
2945 overlay_cache_invalid = 0;
2947 if (osect->ovly_mapped == -1)
2948 (*target_overlay_update) (osect);
2950 /* fall thru to manual case */
2951 case ovly_on: /* overlay debugging manual */
2952 return osect->ovly_mapped == 1;
2956 /* Function: section_is_mapped
2957 Returns true if section is an overlay, and is currently mapped. */
2960 section_is_mapped (asection *section)
2962 struct objfile *objfile;
2963 struct obj_section *osect;
2965 if (overlay_debugging)
2966 if (section && section_is_overlay (section))
2967 ALL_OBJSECTIONS (objfile, osect)
2968 if (osect->the_bfd_section == section)
2969 return overlay_is_mapped (osect);
2974 /* Function: pc_in_unmapped_range
2975 If PC falls into the lma range of SECTION, return true, else false. */
2978 pc_in_unmapped_range (CORE_ADDR pc, asection *section)
2980 /* FIXME: need bfd *, so we can use bfd_section_lma methods. */
2984 if (overlay_debugging)
2985 if (section && section_is_overlay (section))
2987 size = bfd_get_section_size_before_reloc (section);
2988 if (section->lma <= pc && pc < section->lma + size)
2994 /* Function: pc_in_mapped_range
2995 If PC falls into the vma range of SECTION, return true, else false. */
2998 pc_in_mapped_range (CORE_ADDR pc, asection *section)
3000 /* FIXME: need bfd *, so we can use bfd_section_vma methods. */
3004 if (overlay_debugging)
3005 if (section && section_is_overlay (section))
3007 size = bfd_get_section_size_before_reloc (section);
3008 if (section->vma <= pc && pc < section->vma + size)
3015 /* Return true if the mapped ranges of sections A and B overlap, false
3018 sections_overlap (asection *a, asection *b)
3020 /* FIXME: need bfd *, so we can use bfd_section_vma methods. */
3022 CORE_ADDR a_start = a->vma;
3023 CORE_ADDR a_end = a->vma + bfd_get_section_size_before_reloc (a);
3024 CORE_ADDR b_start = b->vma;
3025 CORE_ADDR b_end = b->vma + bfd_get_section_size_before_reloc (b);
3027 return (a_start < b_end && b_start < a_end);
3030 /* Function: overlay_unmapped_address (PC, SECTION)
3031 Returns the address corresponding to PC in the unmapped (load) range.
3032 May be the same as PC. */
3035 overlay_unmapped_address (CORE_ADDR pc, asection *section)
3037 /* FIXME: need bfd *, so we can use bfd_section_lma methods. */
3039 if (overlay_debugging)
3040 if (section && section_is_overlay (section) &&
3041 pc_in_mapped_range (pc, section))
3042 return pc + section->lma - section->vma;
3047 /* Function: overlay_mapped_address (PC, SECTION)
3048 Returns the address corresponding to PC in the mapped (runtime) range.
3049 May be the same as PC. */
3052 overlay_mapped_address (CORE_ADDR pc, asection *section)
3054 /* FIXME: need bfd *, so we can use bfd_section_vma methods. */
3056 if (overlay_debugging)
3057 if (section && section_is_overlay (section) &&
3058 pc_in_unmapped_range (pc, section))
3059 return pc + section->vma - section->lma;
3065 /* Function: symbol_overlayed_address
3066 Return one of two addresses (relative to the VMA or to the LMA),
3067 depending on whether the section is mapped or not. */
3070 symbol_overlayed_address (CORE_ADDR address, asection *section)
3072 if (overlay_debugging)
3074 /* If the symbol has no section, just return its regular address. */
3077 /* If the symbol's section is not an overlay, just return its address */
3078 if (!section_is_overlay (section))
3080 /* If the symbol's section is mapped, just return its address */
3081 if (section_is_mapped (section))
3084 * HOWEVER: if the symbol is in an overlay section which is NOT mapped,
3085 * then return its LOADED address rather than its vma address!!
3087 return overlay_unmapped_address (address, section);
3092 /* Function: find_pc_overlay (PC)
3093 Return the best-match overlay section for PC:
3094 If PC matches a mapped overlay section's VMA, return that section.
3095 Else if PC matches an unmapped section's VMA, return that section.
3096 Else if PC matches an unmapped section's LMA, return that section. */
3099 find_pc_overlay (CORE_ADDR pc)
3101 struct objfile *objfile;
3102 struct obj_section *osect, *best_match = NULL;
3104 if (overlay_debugging)
3105 ALL_OBJSECTIONS (objfile, osect)
3106 if (section_is_overlay (osect->the_bfd_section))
3108 if (pc_in_mapped_range (pc, osect->the_bfd_section))
3110 if (overlay_is_mapped (osect))
3111 return osect->the_bfd_section;
3115 else if (pc_in_unmapped_range (pc, osect->the_bfd_section))
3118 return best_match ? best_match->the_bfd_section : NULL;
3121 /* Function: find_pc_mapped_section (PC)
3122 If PC falls into the VMA address range of an overlay section that is
3123 currently marked as MAPPED, return that section. Else return NULL. */
3126 find_pc_mapped_section (CORE_ADDR pc)
3128 struct objfile *objfile;
3129 struct obj_section *osect;
3131 if (overlay_debugging)
3132 ALL_OBJSECTIONS (objfile, osect)
3133 if (pc_in_mapped_range (pc, osect->the_bfd_section) &&
3134 overlay_is_mapped (osect))
3135 return osect->the_bfd_section;
3140 /* Function: list_overlays_command
3141 Print a list of mapped sections and their PC ranges */
3144 list_overlays_command (char *args, int from_tty)
3147 struct objfile *objfile;
3148 struct obj_section *osect;
3150 if (overlay_debugging)
3151 ALL_OBJSECTIONS (objfile, osect)
3152 if (overlay_is_mapped (osect))
3158 vma = bfd_section_vma (objfile->obfd, osect->the_bfd_section);
3159 lma = bfd_section_lma (objfile->obfd, osect->the_bfd_section);
3160 size = bfd_get_section_size_before_reloc (osect->the_bfd_section);
3161 name = bfd_section_name (objfile->obfd, osect->the_bfd_section);
3163 printf_filtered ("Section %s, loaded at ", name);
3164 print_address_numeric (lma, 1, gdb_stdout);
3165 puts_filtered (" - ");
3166 print_address_numeric (lma + size, 1, gdb_stdout);
3167 printf_filtered (", mapped at ");
3168 print_address_numeric (vma, 1, gdb_stdout);
3169 puts_filtered (" - ");
3170 print_address_numeric (vma + size, 1, gdb_stdout);
3171 puts_filtered ("\n");
3176 printf_filtered ("No sections are mapped.\n");
3179 /* Function: map_overlay_command
3180 Mark the named section as mapped (ie. residing at its VMA address). */
3183 map_overlay_command (char *args, int from_tty)
3185 struct objfile *objfile, *objfile2;
3186 struct obj_section *sec, *sec2;
3189 if (!overlay_debugging)
3191 Overlay debugging not enabled. Use either the 'overlay auto' or\n\
3192 the 'overlay manual' command.");
3194 if (args == 0 || *args == 0)
3195 error ("Argument required: name of an overlay section");
3197 /* First, find a section matching the user supplied argument */
3198 ALL_OBJSECTIONS (objfile, sec)
3199 if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3201 /* Now, check to see if the section is an overlay. */
3202 bfdsec = sec->the_bfd_section;
3203 if (!section_is_overlay (bfdsec))
3204 continue; /* not an overlay section */
3206 /* Mark the overlay as "mapped" */
3207 sec->ovly_mapped = 1;
3209 /* Next, make a pass and unmap any sections that are
3210 overlapped by this new section: */
3211 ALL_OBJSECTIONS (objfile2, sec2)
3212 if (sec2->ovly_mapped
3214 && sec->the_bfd_section != sec2->the_bfd_section
3215 && sections_overlap (sec->the_bfd_section,
3216 sec2->the_bfd_section))
3219 printf_filtered ("Note: section %s unmapped by overlap\n",
3220 bfd_section_name (objfile->obfd,
3221 sec2->the_bfd_section));
3222 sec2->ovly_mapped = 0; /* sec2 overlaps sec: unmap sec2 */
3226 error ("No overlay section called %s", args);
3229 /* Function: unmap_overlay_command
3230 Mark the overlay section as unmapped
3231 (ie. resident in its LMA address range, rather than the VMA range). */
3234 unmap_overlay_command (char *args, int from_tty)
3236 struct objfile *objfile;
3237 struct obj_section *sec;
3239 if (!overlay_debugging)
3241 Overlay debugging not enabled. Use either the 'overlay auto' or\n\
3242 the 'overlay manual' command.");
3244 if (args == 0 || *args == 0)
3245 error ("Argument required: name of an overlay section");
3247 /* First, find a section matching the user supplied argument */
3248 ALL_OBJSECTIONS (objfile, sec)
3249 if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3251 if (!sec->ovly_mapped)
3252 error ("Section %s is not mapped", args);
3253 sec->ovly_mapped = 0;
3256 error ("No overlay section called %s", args);
3259 /* Function: overlay_auto_command
3260 A utility command to turn on overlay debugging.
3261 Possibly this should be done via a set/show command. */
3264 overlay_auto_command (char *args, int from_tty)
3266 overlay_debugging = ovly_auto;
3267 enable_overlay_breakpoints ();
3269 printf_filtered ("Automatic overlay debugging enabled.");
3272 /* Function: overlay_manual_command
3273 A utility command to turn on overlay debugging.
3274 Possibly this should be done via a set/show command. */
3277 overlay_manual_command (char *args, int from_tty)
3279 overlay_debugging = ovly_on;
3280 disable_overlay_breakpoints ();
3282 printf_filtered ("Overlay debugging enabled.");
3285 /* Function: overlay_off_command
3286 A utility command to turn on overlay debugging.
3287 Possibly this should be done via a set/show command. */
3290 overlay_off_command (char *args, int from_tty)
3292 overlay_debugging = ovly_off;
3293 disable_overlay_breakpoints ();
3295 printf_filtered ("Overlay debugging disabled.");
3299 overlay_load_command (char *args, int from_tty)
3301 if (target_overlay_update)
3302 (*target_overlay_update) (NULL);
3304 error ("This target does not know how to read its overlay state.");
3307 /* Function: overlay_command
3308 A place-holder for a mis-typed command */
3310 /* Command list chain containing all defined "overlay" subcommands. */
3311 struct cmd_list_element *overlaylist;
3314 overlay_command (char *args, int from_tty)
3317 ("\"overlay\" must be followed by the name of an overlay command.\n");
3318 help_list (overlaylist, "overlay ", -1, gdb_stdout);
3322 /* Target Overlays for the "Simplest" overlay manager:
3324 This is GDB's default target overlay layer. It works with the
3325 minimal overlay manager supplied as an example by Cygnus. The
3326 entry point is via a function pointer "target_overlay_update",
3327 so targets that use a different runtime overlay manager can
3328 substitute their own overlay_update function and take over the
3331 The overlay_update function pokes around in the target's data structures
3332 to see what overlays are mapped, and updates GDB's overlay mapping with
3335 In this simple implementation, the target data structures are as follows:
3336 unsigned _novlys; /# number of overlay sections #/
3337 unsigned _ovly_table[_novlys][4] = {
3338 {VMA, SIZE, LMA, MAPPED}, /# one entry per overlay section #/
3339 {..., ..., ..., ...},
3341 unsigned _novly_regions; /# number of overlay regions #/
3342 unsigned _ovly_region_table[_novly_regions][3] = {
3343 {VMA, SIZE, MAPPED_TO_LMA}, /# one entry per overlay region #/
3346 These functions will attempt to update GDB's mappedness state in the
3347 symbol section table, based on the target's mappedness state.
3349 To do this, we keep a cached copy of the target's _ovly_table, and
3350 attempt to detect when the cached copy is invalidated. The main
3351 entry point is "simple_overlay_update(SECT), which looks up SECT in
3352 the cached table and re-reads only the entry for that section from
3353 the target (whenever possible).
3356 /* Cached, dynamically allocated copies of the target data structures: */
3357 static unsigned (*cache_ovly_table)[4] = 0;
3359 static unsigned (*cache_ovly_region_table)[3] = 0;
3361 static unsigned cache_novlys = 0;
3363 static unsigned cache_novly_regions = 0;
3365 static CORE_ADDR cache_ovly_table_base = 0;
3367 static CORE_ADDR cache_ovly_region_table_base = 0;
3371 VMA, SIZE, LMA, MAPPED
3373 #define TARGET_LONG_BYTES (TARGET_LONG_BIT / TARGET_CHAR_BIT)
3375 /* Throw away the cached copy of _ovly_table */
3377 simple_free_overlay_table (void)
3379 if (cache_ovly_table)
3380 xfree (cache_ovly_table);
3382 cache_ovly_table = NULL;
3383 cache_ovly_table_base = 0;
3387 /* Throw away the cached copy of _ovly_region_table */
3389 simple_free_overlay_region_table (void)
3391 if (cache_ovly_region_table)
3392 xfree (cache_ovly_region_table);
3393 cache_novly_regions = 0;
3394 cache_ovly_region_table = NULL;
3395 cache_ovly_region_table_base = 0;
3399 /* Read an array of ints from the target into a local buffer.
3400 Convert to host order. int LEN is number of ints */
3402 read_target_long_array (CORE_ADDR memaddr, unsigned int *myaddr, int len)
3404 /* FIXME (alloca): Not safe if array is very large. */
3405 char *buf = alloca (len * TARGET_LONG_BYTES);
3408 read_memory (memaddr, buf, len * TARGET_LONG_BYTES);
3409 for (i = 0; i < len; i++)
3410 myaddr[i] = extract_unsigned_integer (TARGET_LONG_BYTES * i + buf,
3414 /* Find and grab a copy of the target _ovly_table
3415 (and _novlys, which is needed for the table's size) */
3417 simple_read_overlay_table (void)
3419 struct minimal_symbol *novlys_msym, *ovly_table_msym;
3421 simple_free_overlay_table ();
3422 novlys_msym = lookup_minimal_symbol ("_novlys", NULL, NULL);
3425 error ("Error reading inferior's overlay table: "
3426 "couldn't find `_novlys' variable\n"
3427 "in inferior. Use `overlay manual' mode.");
3431 ovly_table_msym = lookup_minimal_symbol ("_ovly_table", NULL, NULL);
3432 if (! ovly_table_msym)
3434 error ("Error reading inferior's overlay table: couldn't find "
3435 "`_ovly_table' array\n"
3436 "in inferior. Use `overlay manual' mode.");
3440 cache_novlys = read_memory_integer (SYMBOL_VALUE_ADDRESS (novlys_msym), 4);
3442 = (void *) xmalloc (cache_novlys * sizeof (*cache_ovly_table));
3443 cache_ovly_table_base = SYMBOL_VALUE_ADDRESS (ovly_table_msym);
3444 read_target_long_array (cache_ovly_table_base,
3445 (int *) cache_ovly_table,
3448 return 1; /* SUCCESS */
3452 /* Find and grab a copy of the target _ovly_region_table
3453 (and _novly_regions, which is needed for the table's size) */
3455 simple_read_overlay_region_table (void)
3457 struct minimal_symbol *msym;
3459 simple_free_overlay_region_table ();
3460 msym = lookup_minimal_symbol ("_novly_regions", NULL, NULL);
3462 cache_novly_regions = read_memory_integer (SYMBOL_VALUE_ADDRESS (msym), 4);
3464 return 0; /* failure */
3465 cache_ovly_region_table = (void *) xmalloc (cache_novly_regions * 12);
3466 if (cache_ovly_region_table != NULL)
3468 msym = lookup_minimal_symbol ("_ovly_region_table", NULL, NULL);
3471 cache_ovly_region_table_base = SYMBOL_VALUE_ADDRESS (msym);
3472 read_target_long_array (cache_ovly_region_table_base,
3473 (int *) cache_ovly_region_table,
3474 cache_novly_regions * 3);
3477 return 0; /* failure */
3480 return 0; /* failure */
3481 return 1; /* SUCCESS */
3485 /* Function: simple_overlay_update_1
3486 A helper function for simple_overlay_update. Assuming a cached copy
3487 of _ovly_table exists, look through it to find an entry whose vma,
3488 lma and size match those of OSECT. Re-read the entry and make sure
3489 it still matches OSECT (else the table may no longer be valid).
3490 Set OSECT's mapped state to match the entry. Return: 1 for
3491 success, 0 for failure. */
3494 simple_overlay_update_1 (struct obj_section *osect)
3497 bfd *obfd = osect->objfile->obfd;
3498 asection *bsect = osect->the_bfd_section;
3500 size = bfd_get_section_size_before_reloc (osect->the_bfd_section);
3501 for (i = 0; i < cache_novlys; i++)
3502 if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3503 && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
3504 /* && cache_ovly_table[i][SIZE] == size */ )
3506 read_target_long_array (cache_ovly_table_base + i * TARGET_LONG_BYTES,
3507 (int *) cache_ovly_table[i], 4);
3508 if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3509 && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
3510 /* && cache_ovly_table[i][SIZE] == size */ )
3512 osect->ovly_mapped = cache_ovly_table[i][MAPPED];
3515 else /* Warning! Warning! Target's ovly table has changed! */
3521 /* Function: simple_overlay_update
3522 If OSECT is NULL, then update all sections' mapped state
3523 (after re-reading the entire target _ovly_table).
3524 If OSECT is non-NULL, then try to find a matching entry in the
3525 cached ovly_table and update only OSECT's mapped state.
3526 If a cached entry can't be found or the cache isn't valid, then
3527 re-read the entire cache, and go ahead and update all sections. */
3530 simple_overlay_update (struct obj_section *osect)
3532 struct objfile *objfile;
3534 /* Were we given an osect to look up? NULL means do all of them. */
3536 /* Have we got a cached copy of the target's overlay table? */
3537 if (cache_ovly_table != NULL)
3538 /* Does its cached location match what's currently in the symtab? */
3539 if (cache_ovly_table_base ==
3540 SYMBOL_VALUE_ADDRESS (lookup_minimal_symbol ("_ovly_table", NULL, NULL)))
3541 /* Then go ahead and try to look up this single section in the cache */
3542 if (simple_overlay_update_1 (osect))
3543 /* Found it! We're done. */
3546 /* Cached table no good: need to read the entire table anew.
3547 Or else we want all the sections, in which case it's actually
3548 more efficient to read the whole table in one block anyway. */
3550 if (! simple_read_overlay_table ())
3553 /* Now may as well update all sections, even if only one was requested. */
3554 ALL_OBJSECTIONS (objfile, osect)
3555 if (section_is_overlay (osect->the_bfd_section))
3558 bfd *obfd = osect->objfile->obfd;
3559 asection *bsect = osect->the_bfd_section;
3561 size = bfd_get_section_size_before_reloc (osect->the_bfd_section);
3562 for (i = 0; i < cache_novlys; i++)
3563 if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3564 && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
3565 /* && cache_ovly_table[i][SIZE] == size */ )
3566 { /* obj_section matches i'th entry in ovly_table */
3567 osect->ovly_mapped = cache_ovly_table[i][MAPPED];
3568 break; /* finished with inner for loop: break out */
3573 /* Set the output sections and output offsets for section SECTP in
3574 ABFD. The relocation code in BFD will read these offsets, so we
3575 need to be sure they're initialized. We map each section to itself,
3576 with no offset; this means that SECTP->vma will be honored. */
3579 symfile_dummy_outputs (bfd *abfd, asection *sectp, void *dummy)
3581 sectp->output_section = sectp;
3582 sectp->output_offset = 0;
3585 /* Relocate the contents of a debug section SECTP in ABFD. The
3586 contents are stored in BUF if it is non-NULL, or returned in a
3587 malloc'd buffer otherwise.
3589 For some platforms and debug info formats, shared libraries contain
3590 relocations against the debug sections (particularly for DWARF-2;
3591 one affected platform is PowerPC GNU/Linux, although it depends on
3592 the version of the linker in use). Also, ELF object files naturally
3593 have unresolved relocations for their debug sections. We need to apply
3594 the relocations in order to get the locations of symbols correct. */
3597 symfile_relocate_debug_section (bfd *abfd, asection *sectp, bfd_byte *buf)
3599 /* We're only interested in debugging sections with relocation
3601 if ((sectp->flags & SEC_RELOC) == 0)
3603 if ((sectp->flags & SEC_DEBUGGING) == 0)
3606 /* We will handle section offsets properly elsewhere, so relocate as if
3607 all sections begin at 0. */
3608 bfd_map_over_sections (abfd, symfile_dummy_outputs, NULL);
3610 return bfd_simple_get_relocated_section_contents (abfd, sectp, buf);
3614 _initialize_symfile (void)
3616 struct cmd_list_element *c;
3618 c = add_cmd ("symbol-file", class_files, symbol_file_command,
3619 "Load symbol table from executable file FILE.\n\
3620 The `file' command can also load symbol tables, as well as setting the file\n\
3621 to execute.", &cmdlist);
3622 set_cmd_completer (c, filename_completer);
3624 c = add_cmd ("add-symbol-file", class_files, add_symbol_file_command,
3625 "Usage: add-symbol-file FILE ADDR [-s <SECT> <SECT_ADDR> -s <SECT> <SECT_ADDR> ...]\n\
3626 Load the symbols from FILE, assuming FILE has been dynamically loaded.\n\
3627 ADDR is the starting address of the file's text.\n\
3628 The optional arguments are section-name section-address pairs and\n\
3629 should be specified if the data and bss segments are not contiguous\n\
3630 with the text. SECT is a section name to be loaded at SECT_ADDR.",
3632 set_cmd_completer (c, filename_completer);
3634 c = add_cmd ("add-shared-symbol-files", class_files,
3635 add_shared_symbol_files_command,
3636 "Load the symbols from shared objects in the dynamic linker's link map.",
3638 c = add_alias_cmd ("assf", "add-shared-symbol-files", class_files, 1,
3641 c = add_cmd ("load", class_files, load_command,
3642 "Dynamically load FILE into the running program, and record its symbols\n\
3643 for access from GDB.", &cmdlist);
3644 set_cmd_completer (c, filename_completer);
3647 (add_set_cmd ("symbol-reloading", class_support, var_boolean,
3648 (char *) &symbol_reloading,
3649 "Set dynamic symbol table reloading multiple times in one run.",
3653 add_prefix_cmd ("overlay", class_support, overlay_command,
3654 "Commands for debugging overlays.", &overlaylist,
3655 "overlay ", 0, &cmdlist);
3657 add_com_alias ("ovly", "overlay", class_alias, 1);
3658 add_com_alias ("ov", "overlay", class_alias, 1);
3660 add_cmd ("map-overlay", class_support, map_overlay_command,
3661 "Assert that an overlay section is mapped.", &overlaylist);
3663 add_cmd ("unmap-overlay", class_support, unmap_overlay_command,
3664 "Assert that an overlay section is unmapped.", &overlaylist);
3666 add_cmd ("list-overlays", class_support, list_overlays_command,
3667 "List mappings of overlay sections.", &overlaylist);
3669 add_cmd ("manual", class_support, overlay_manual_command,
3670 "Enable overlay debugging.", &overlaylist);
3671 add_cmd ("off", class_support, overlay_off_command,
3672 "Disable overlay debugging.", &overlaylist);
3673 add_cmd ("auto", class_support, overlay_auto_command,
3674 "Enable automatic overlay debugging.", &overlaylist);
3675 add_cmd ("load-target", class_support, overlay_load_command,
3676 "Read the overlay mapping state from the target.", &overlaylist);
3678 /* Filename extension to source language lookup table: */
3679 init_filename_language_table ();
3680 c = add_set_cmd ("extension-language", class_files, var_string_noescape,
3682 "Set mapping between filename extension and source language.\n\
3683 Usage: set extension-language .foo bar",
3685 set_cmd_cfunc (c, set_ext_lang_command);
3687 add_info ("extensions", info_ext_lang_command,
3688 "All filename extensions associated with a source language.");
3691 (add_set_cmd ("download-write-size", class_obscure,
3692 var_integer, (char *) &download_write_size,
3693 "Set the write size used when downloading a program.\n"
3694 "Only used when downloading a program onto a remote\n"
3695 "target. Specify zero, or a negative value, to disable\n"
3696 "blocked writes. The actual size of each transfer is also\n"
3697 "limited by the size of the target packet and the memory\n"
3702 debug_file_directory = xstrdup (DEBUGDIR);
3704 ("debug-file-directory", class_support, var_string,
3705 (char *) &debug_file_directory,
3706 "Set the directory where separate debug symbols are searched for.\n"
3707 "Separate debug symbols are first searched for in the same\n"
3708 "directory as the binary, then in the `" DEBUG_SUBDIRECTORY
3710 "and lastly at the path of the directory of the binary with\n"
3711 "the global debug-file directory prepended\n",
3713 add_show_from_set (c, &showlist);
3714 set_cmd_completer (c, filename_completer);