* ax-gdb.c (gen_exp_binop_rest) [BINOP_SUBSCRIPT]: Error out if
[binutils-gdb.git] / gdb / symfile.c
blobefa341dfe32d7127180b73f0a52a116bbc6e9b28
1 /* Generic symbol file reading for the GNU debugger, GDB.
3 Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
5 Free Software Foundation, Inc.
7 Contributed by Cygnus Support, using pieces from other GDB modules.
9 This file is part of GDB.
11 This program is free software; you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 3 of the License, or
14 (at your option) any later version.
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
21 You should have received a copy of the GNU General Public License
22 along with this program. If not, see <http://www.gnu.org/licenses/>. */
24 #include "defs.h"
25 #include "arch-utils.h"
26 #include "bfdlink.h"
27 #include "symtab.h"
28 #include "gdbtypes.h"
29 #include "gdbcore.h"
30 #include "frame.h"
31 #include "target.h"
32 #include "value.h"
33 #include "symfile.h"
34 #include "objfiles.h"
35 #include "source.h"
36 #include "gdbcmd.h"
37 #include "breakpoint.h"
38 #include "language.h"
39 #include "complaints.h"
40 #include "demangle.h"
41 #include "inferior.h"
42 #include "regcache.h"
43 #include "filenames.h" /* for DOSish file names */
44 #include "gdb-stabs.h"
45 #include "gdb_obstack.h"
46 #include "completer.h"
47 #include "bcache.h"
48 #include "hashtab.h"
49 #include "readline/readline.h"
50 #include "gdb_assert.h"
51 #include "block.h"
52 #include "observer.h"
53 #include "exec.h"
54 #include "parser-defs.h"
55 #include "varobj.h"
56 #include "elf-bfd.h"
57 #include "solib.h"
58 #include "remote.h"
60 #include <sys/types.h>
61 #include <fcntl.h>
62 #include "gdb_string.h"
63 #include "gdb_stat.h"
64 #include <ctype.h>
65 #include <time.h>
66 #include <sys/time.h>
69 int (*deprecated_ui_load_progress_hook) (const char *section, unsigned long num);
70 void (*deprecated_show_load_progress) (const char *section,
71 unsigned long section_sent,
72 unsigned long section_size,
73 unsigned long total_sent,
74 unsigned long total_size);
75 void (*deprecated_pre_add_symbol_hook) (const char *);
76 void (*deprecated_post_add_symbol_hook) (void);
78 static void clear_symtab_users_cleanup (void *ignore);
80 /* Global variables owned by this file */
81 int readnow_symbol_files; /* Read full symbols immediately */
83 /* External variables and functions referenced. */
85 extern void report_transfer_performance (unsigned long, time_t, time_t);
87 /* Functions this file defines */
89 #if 0
90 static int simple_read_overlay_region_table (void);
91 static void simple_free_overlay_region_table (void);
92 #endif
94 static void load_command (char *, int);
96 static void symbol_file_add_main_1 (char *args, int from_tty, int flags);
98 static void add_symbol_file_command (char *, int);
100 bfd *symfile_bfd_open (char *);
102 int get_section_index (struct objfile *, char *);
104 static struct sym_fns *find_sym_fns (bfd *);
106 static void decrement_reading_symtab (void *);
108 static void overlay_invalidate_all (void);
110 void list_overlays_command (char *, int);
112 void map_overlay_command (char *, int);
114 void unmap_overlay_command (char *, int);
116 static void overlay_auto_command (char *, int);
118 static void overlay_manual_command (char *, int);
120 static void overlay_off_command (char *, int);
122 static void overlay_load_command (char *, int);
124 static void overlay_command (char *, int);
126 static void simple_free_overlay_table (void);
128 static void read_target_long_array (CORE_ADDR, unsigned int *, int, int,
129 enum bfd_endian);
131 static int simple_read_overlay_table (void);
133 static int simple_overlay_update_1 (struct obj_section *);
135 static void add_filename_language (char *ext, enum language lang);
137 static void info_ext_lang_command (char *args, int from_tty);
139 static void init_filename_language_table (void);
141 static void symfile_find_segment_sections (struct objfile *objfile);
143 void _initialize_symfile (void);
145 /* List of all available sym_fns. On gdb startup, each object file reader
146 calls add_symtab_fns() to register information on each format it is
147 prepared to read. */
149 static struct sym_fns *symtab_fns = NULL;
151 /* Flag for whether user will be reloading symbols multiple times.
152 Defaults to ON for VxWorks, otherwise OFF. */
154 #ifdef SYMBOL_RELOADING_DEFAULT
155 int symbol_reloading = SYMBOL_RELOADING_DEFAULT;
156 #else
157 int symbol_reloading = 0;
158 #endif
159 static void
160 show_symbol_reloading (struct ui_file *file, int from_tty,
161 struct cmd_list_element *c, const char *value)
163 fprintf_filtered (file, _("\
164 Dynamic symbol table reloading multiple times in one run is %s.\n"),
165 value);
168 /* If non-zero, shared library symbols will be added automatically
169 when the inferior is created, new libraries are loaded, or when
170 attaching to the inferior. This is almost always what users will
171 want to have happen; but for very large programs, the startup time
172 will be excessive, and so if this is a problem, the user can clear
173 this flag and then add the shared library symbols as needed. Note
174 that there is a potential for confusion, since if the shared
175 library symbols are not loaded, commands like "info fun" will *not*
176 report all the functions that are actually present. */
178 int auto_solib_add = 1;
180 /* For systems that support it, a threshold size in megabytes. If
181 automatically adding a new library's symbol table to those already
182 known to the debugger would cause the total shared library symbol
183 size to exceed this threshhold, then the shlib's symbols are not
184 added. The threshold is ignored if the user explicitly asks for a
185 shlib to be added, such as when using the "sharedlibrary"
186 command. */
188 int auto_solib_limit;
191 /* This compares two partial symbols by names, using strcmp_iw_ordered
192 for the comparison. */
194 static int
195 compare_psymbols (const void *s1p, const void *s2p)
197 struct partial_symbol *const *s1 = s1p;
198 struct partial_symbol *const *s2 = s2p;
200 return strcmp_iw_ordered (SYMBOL_SEARCH_NAME (*s1),
201 SYMBOL_SEARCH_NAME (*s2));
204 void
205 sort_pst_symbols (struct partial_symtab *pst)
207 /* Sort the global list; don't sort the static list */
209 qsort (pst->objfile->global_psymbols.list + pst->globals_offset,
210 pst->n_global_syms, sizeof (struct partial_symbol *),
211 compare_psymbols);
214 /* Make a null terminated copy of the string at PTR with SIZE characters in
215 the obstack pointed to by OBSTACKP . Returns the address of the copy.
216 Note that the string at PTR does not have to be null terminated, I.E. it
217 may be part of a larger string and we are only saving a substring. */
219 char *
220 obsavestring (const char *ptr, int size, struct obstack *obstackp)
222 char *p = (char *) obstack_alloc (obstackp, size + 1);
223 /* Open-coded memcpy--saves function call time. These strings are usually
224 short. FIXME: Is this really still true with a compiler that can
225 inline memcpy? */
227 const char *p1 = ptr;
228 char *p2 = p;
229 const char *end = ptr + size;
230 while (p1 != end)
231 *p2++ = *p1++;
233 p[size] = 0;
234 return p;
237 /* Concatenate strings S1, S2 and S3; return the new string. Space is found
238 in the obstack pointed to by OBSTACKP. */
240 char *
241 obconcat (struct obstack *obstackp, const char *s1, const char *s2,
242 const char *s3)
244 int len = strlen (s1) + strlen (s2) + strlen (s3) + 1;
245 char *val = (char *) obstack_alloc (obstackp, len);
246 strcpy (val, s1);
247 strcat (val, s2);
248 strcat (val, s3);
249 return val;
252 /* True if we are nested inside psymtab_to_symtab. */
254 int currently_reading_symtab = 0;
256 static void
257 decrement_reading_symtab (void *dummy)
259 currently_reading_symtab--;
262 /* Get the symbol table that corresponds to a partial_symtab.
263 This is fast after the first time you do it. In fact, there
264 is an even faster macro PSYMTAB_TO_SYMTAB that does the fast
265 case inline. */
267 struct symtab *
268 psymtab_to_symtab (struct partial_symtab *pst)
270 /* If it's been looked up before, return it. */
271 if (pst->symtab)
272 return pst->symtab;
274 /* If it has not yet been read in, read it. */
275 if (!pst->readin)
277 struct cleanup *back_to = make_cleanup (decrement_reading_symtab, NULL);
278 currently_reading_symtab++;
279 (*pst->read_symtab) (pst);
280 do_cleanups (back_to);
283 return pst->symtab;
286 /* Remember the lowest-addressed loadable section we've seen.
287 This function is called via bfd_map_over_sections.
289 In case of equal vmas, the section with the largest size becomes the
290 lowest-addressed loadable section.
292 If the vmas and sizes are equal, the last section is considered the
293 lowest-addressed loadable section. */
295 void
296 find_lowest_section (bfd *abfd, asection *sect, void *obj)
298 asection **lowest = (asection **) obj;
300 if (0 == (bfd_get_section_flags (abfd, sect) & SEC_LOAD))
301 return;
302 if (!*lowest)
303 *lowest = sect; /* First loadable section */
304 else if (bfd_section_vma (abfd, *lowest) > bfd_section_vma (abfd, sect))
305 *lowest = sect; /* A lower loadable section */
306 else if (bfd_section_vma (abfd, *lowest) == bfd_section_vma (abfd, sect)
307 && (bfd_section_size (abfd, (*lowest))
308 <= bfd_section_size (abfd, sect)))
309 *lowest = sect;
312 /* Create a new section_addr_info, with room for NUM_SECTIONS. */
314 struct section_addr_info *
315 alloc_section_addr_info (size_t num_sections)
317 struct section_addr_info *sap;
318 size_t size;
320 size = (sizeof (struct section_addr_info)
321 + sizeof (struct other_sections) * (num_sections - 1));
322 sap = (struct section_addr_info *) xmalloc (size);
323 memset (sap, 0, size);
324 sap->num_sections = num_sections;
326 return sap;
329 /* Build (allocate and populate) a section_addr_info struct from
330 an existing section table. */
332 extern struct section_addr_info *
333 build_section_addr_info_from_section_table (const struct target_section *start,
334 const struct target_section *end)
336 struct section_addr_info *sap;
337 const struct target_section *stp;
338 int oidx;
340 sap = alloc_section_addr_info (end - start);
342 for (stp = start, oidx = 0; stp != end; stp++)
344 if (bfd_get_section_flags (stp->bfd,
345 stp->the_bfd_section) & (SEC_ALLOC | SEC_LOAD)
346 && oidx < end - start)
348 sap->other[oidx].addr = stp->addr;
349 sap->other[oidx].name
350 = xstrdup (bfd_section_name (stp->bfd, stp->the_bfd_section));
351 sap->other[oidx].sectindex = stp->the_bfd_section->index;
352 oidx++;
356 return sap;
359 /* Create a section_addr_info from section offsets in OBJFILE. */
361 struct section_addr_info *
362 build_section_addr_info_from_objfile (const struct objfile *objfile)
364 struct section_addr_info *sap;
365 int i;
366 struct bfd_section *sec;
367 int addr_bit = gdbarch_addr_bit (objfile->gdbarch);
368 CORE_ADDR mask = CORE_ADDR_MAX;
370 if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
371 mask = ((CORE_ADDR) 1 << addr_bit) - 1;
373 sap = alloc_section_addr_info (objfile->num_sections);
374 for (i = 0, sec = objfile->obfd->sections;
375 i < objfile->num_sections;
376 i++, sec = sec->next)
378 gdb_assert (sec != NULL);
379 sap->other[i].addr = (bfd_get_section_vma (objfile->obfd, sec)
380 + objfile->section_offsets->offsets[i]) & mask;
381 sap->other[i].name = xstrdup (bfd_get_section_name (objfile->obfd, sec));
382 sap->other[i].sectindex = sec->index;
384 return sap;
388 /* Free all memory allocated by build_section_addr_info_from_section_table. */
390 extern void
391 free_section_addr_info (struct section_addr_info *sap)
393 int idx;
395 for (idx = 0; idx < sap->num_sections; idx++)
396 if (sap->other[idx].name)
397 xfree (sap->other[idx].name);
398 xfree (sap);
402 /* Initialize OBJFILE's sect_index_* members. */
403 static void
404 init_objfile_sect_indices (struct objfile *objfile)
406 asection *sect;
407 int i;
409 sect = bfd_get_section_by_name (objfile->obfd, ".text");
410 if (sect)
411 objfile->sect_index_text = sect->index;
413 sect = bfd_get_section_by_name (objfile->obfd, ".data");
414 if (sect)
415 objfile->sect_index_data = sect->index;
417 sect = bfd_get_section_by_name (objfile->obfd, ".bss");
418 if (sect)
419 objfile->sect_index_bss = sect->index;
421 sect = bfd_get_section_by_name (objfile->obfd, ".rodata");
422 if (sect)
423 objfile->sect_index_rodata = sect->index;
425 /* This is where things get really weird... We MUST have valid
426 indices for the various sect_index_* members or gdb will abort.
427 So if for example, there is no ".text" section, we have to
428 accomodate that. First, check for a file with the standard
429 one or two segments. */
431 symfile_find_segment_sections (objfile);
433 /* Except when explicitly adding symbol files at some address,
434 section_offsets contains nothing but zeros, so it doesn't matter
435 which slot in section_offsets the individual sect_index_* members
436 index into. So if they are all zero, it is safe to just point
437 all the currently uninitialized indices to the first slot. But
438 beware: if this is the main executable, it may be relocated
439 later, e.g. by the remote qOffsets packet, and then this will
440 be wrong! That's why we try segments first. */
442 for (i = 0; i < objfile->num_sections; i++)
444 if (ANOFFSET (objfile->section_offsets, i) != 0)
446 break;
449 if (i == objfile->num_sections)
451 if (objfile->sect_index_text == -1)
452 objfile->sect_index_text = 0;
453 if (objfile->sect_index_data == -1)
454 objfile->sect_index_data = 0;
455 if (objfile->sect_index_bss == -1)
456 objfile->sect_index_bss = 0;
457 if (objfile->sect_index_rodata == -1)
458 objfile->sect_index_rodata = 0;
462 /* The arguments to place_section. */
464 struct place_section_arg
466 struct section_offsets *offsets;
467 CORE_ADDR lowest;
470 /* Find a unique offset to use for loadable section SECT if
471 the user did not provide an offset. */
473 static void
474 place_section (bfd *abfd, asection *sect, void *obj)
476 struct place_section_arg *arg = obj;
477 CORE_ADDR *offsets = arg->offsets->offsets, start_addr;
478 int done;
479 ULONGEST align = ((ULONGEST) 1) << bfd_get_section_alignment (abfd, sect);
481 /* We are only interested in allocated sections. */
482 if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
483 return;
485 /* If the user specified an offset, honor it. */
486 if (offsets[sect->index] != 0)
487 return;
489 /* Otherwise, let's try to find a place for the section. */
490 start_addr = (arg->lowest + align - 1) & -align;
492 do {
493 asection *cur_sec;
495 done = 1;
497 for (cur_sec = abfd->sections; cur_sec != NULL; cur_sec = cur_sec->next)
499 int indx = cur_sec->index;
500 CORE_ADDR cur_offset;
502 /* We don't need to compare against ourself. */
503 if (cur_sec == sect)
504 continue;
506 /* We can only conflict with allocated sections. */
507 if ((bfd_get_section_flags (abfd, cur_sec) & SEC_ALLOC) == 0)
508 continue;
510 /* If the section offset is 0, either the section has not been placed
511 yet, or it was the lowest section placed (in which case LOWEST
512 will be past its end). */
513 if (offsets[indx] == 0)
514 continue;
516 /* If this section would overlap us, then we must move up. */
517 if (start_addr + bfd_get_section_size (sect) > offsets[indx]
518 && start_addr < offsets[indx] + bfd_get_section_size (cur_sec))
520 start_addr = offsets[indx] + bfd_get_section_size (cur_sec);
521 start_addr = (start_addr + align - 1) & -align;
522 done = 0;
523 break;
526 /* Otherwise, we appear to be OK. So far. */
529 while (!done);
531 offsets[sect->index] = start_addr;
532 arg->lowest = start_addr + bfd_get_section_size (sect);
535 /* Store struct section_addr_info as prepared (made relative and with SECTINDEX
536 filled-in) by addr_info_make_relative into SECTION_OFFSETS of NUM_SECTIONS
537 entries. */
539 void
540 relative_addr_info_to_section_offsets (struct section_offsets *section_offsets,
541 int num_sections,
542 struct section_addr_info *addrs)
544 int i;
546 memset (section_offsets, 0, SIZEOF_N_SECTION_OFFSETS (num_sections));
548 /* Now calculate offsets for section that were specified by the caller. */
549 for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++)
551 struct other_sections *osp;
553 osp = &addrs->other[i];
554 if (osp->addr == 0)
555 continue;
557 /* Record all sections in offsets */
558 /* The section_offsets in the objfile are here filled in using
559 the BFD index. */
560 section_offsets->offsets[osp->sectindex] = osp->addr;
564 /* Relativize absolute addresses in ADDRS into offsets based on ABFD. Fill-in
565 also SECTINDEXes there. */
567 void
568 addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd)
570 asection *lower_sect;
571 asection *sect;
572 CORE_ADDR lower_offset;
573 int i;
575 /* Find lowest loadable section to be used as starting point for
576 continguous sections. FIXME!! won't work without call to find
577 .text first, but this assumes text is lowest section. */
578 lower_sect = bfd_get_section_by_name (abfd, ".text");
579 if (lower_sect == NULL)
580 bfd_map_over_sections (abfd, find_lowest_section, &lower_sect);
581 if (lower_sect == NULL)
583 warning (_("no loadable sections found in added symbol-file %s"),
584 bfd_get_filename (abfd));
585 lower_offset = 0;
587 else
588 lower_offset = bfd_section_vma (bfd_get_filename (abfd), lower_sect);
590 /* Calculate offsets for the loadable sections.
591 FIXME! Sections must be in order of increasing loadable section
592 so that contiguous sections can use the lower-offset!!!
594 Adjust offsets if the segments are not contiguous.
595 If the section is contiguous, its offset should be set to
596 the offset of the highest loadable section lower than it
597 (the loadable section directly below it in memory).
598 this_offset = lower_offset = lower_addr - lower_orig_addr */
600 for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++)
602 if (addrs->other[i].addr != 0)
604 sect = bfd_get_section_by_name (abfd, addrs->other[i].name);
605 if (sect)
607 addrs->other[i].addr -= bfd_section_vma (abfd, sect);
608 lower_offset = addrs->other[i].addr;
609 /* This is the index used by BFD. */
610 addrs->other[i].sectindex = sect->index;
612 else
614 warning (_("section %s not found in %s"), addrs->other[i].name,
615 bfd_get_filename (abfd));
616 addrs->other[i].addr = 0;
619 else
620 addrs->other[i].addr = lower_offset;
624 /* Parse the user's idea of an offset for dynamic linking, into our idea
625 of how to represent it for fast symbol reading. This is the default
626 version of the sym_fns.sym_offsets function for symbol readers that
627 don't need to do anything special. It allocates a section_offsets table
628 for the objectfile OBJFILE and stuffs ADDR into all of the offsets. */
630 void
631 default_symfile_offsets (struct objfile *objfile,
632 struct section_addr_info *addrs)
634 objfile->num_sections = bfd_count_sections (objfile->obfd);
635 objfile->section_offsets = (struct section_offsets *)
636 obstack_alloc (&objfile->objfile_obstack,
637 SIZEOF_N_SECTION_OFFSETS (objfile->num_sections));
638 relative_addr_info_to_section_offsets (objfile->section_offsets,
639 objfile->num_sections, addrs);
641 /* For relocatable files, all loadable sections will start at zero.
642 The zero is meaningless, so try to pick arbitrary addresses such
643 that no loadable sections overlap. This algorithm is quadratic,
644 but the number of sections in a single object file is generally
645 small. */
646 if ((bfd_get_file_flags (objfile->obfd) & (EXEC_P | DYNAMIC)) == 0)
648 struct place_section_arg arg;
649 bfd *abfd = objfile->obfd;
650 asection *cur_sec;
651 CORE_ADDR lowest = 0;
653 for (cur_sec = abfd->sections; cur_sec != NULL; cur_sec = cur_sec->next)
654 /* We do not expect this to happen; just skip this step if the
655 relocatable file has a section with an assigned VMA. */
656 if (bfd_section_vma (abfd, cur_sec) != 0)
657 break;
659 if (cur_sec == NULL)
661 CORE_ADDR *offsets = objfile->section_offsets->offsets;
663 /* Pick non-overlapping offsets for sections the user did not
664 place explicitly. */
665 arg.offsets = objfile->section_offsets;
666 arg.lowest = 0;
667 bfd_map_over_sections (objfile->obfd, place_section, &arg);
669 /* Correctly filling in the section offsets is not quite
670 enough. Relocatable files have two properties that
671 (most) shared objects do not:
673 - Their debug information will contain relocations. Some
674 shared libraries do also, but many do not, so this can not
675 be assumed.
677 - If there are multiple code sections they will be loaded
678 at different relative addresses in memory than they are
679 in the objfile, since all sections in the file will start
680 at address zero.
682 Because GDB has very limited ability to map from an
683 address in debug info to the correct code section,
684 it relies on adding SECT_OFF_TEXT to things which might be
685 code. If we clear all the section offsets, and set the
686 section VMAs instead, then symfile_relocate_debug_section
687 will return meaningful debug information pointing at the
688 correct sections.
690 GDB has too many different data structures for section
691 addresses - a bfd, objfile, and so_list all have section
692 tables, as does exec_ops. Some of these could probably
693 be eliminated. */
695 for (cur_sec = abfd->sections; cur_sec != NULL;
696 cur_sec = cur_sec->next)
698 if ((bfd_get_section_flags (abfd, cur_sec) & SEC_ALLOC) == 0)
699 continue;
701 bfd_set_section_vma (abfd, cur_sec, offsets[cur_sec->index]);
702 exec_set_section_address (bfd_get_filename (abfd), cur_sec->index,
703 offsets[cur_sec->index]);
704 offsets[cur_sec->index] = 0;
709 /* Remember the bfd indexes for the .text, .data, .bss and
710 .rodata sections. */
711 init_objfile_sect_indices (objfile);
715 /* Divide the file into segments, which are individual relocatable units.
716 This is the default version of the sym_fns.sym_segments function for
717 symbol readers that do not have an explicit representation of segments.
718 It assumes that object files do not have segments, and fully linked
719 files have a single segment. */
721 struct symfile_segment_data *
722 default_symfile_segments (bfd *abfd)
724 int num_sections, i;
725 asection *sect;
726 struct symfile_segment_data *data;
727 CORE_ADDR low, high;
729 /* Relocatable files contain enough information to position each
730 loadable section independently; they should not be relocated
731 in segments. */
732 if ((bfd_get_file_flags (abfd) & (EXEC_P | DYNAMIC)) == 0)
733 return NULL;
735 /* Make sure there is at least one loadable section in the file. */
736 for (sect = abfd->sections; sect != NULL; sect = sect->next)
738 if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
739 continue;
741 break;
743 if (sect == NULL)
744 return NULL;
746 low = bfd_get_section_vma (abfd, sect);
747 high = low + bfd_get_section_size (sect);
749 data = XZALLOC (struct symfile_segment_data);
750 data->num_segments = 1;
751 data->segment_bases = XCALLOC (1, CORE_ADDR);
752 data->segment_sizes = XCALLOC (1, CORE_ADDR);
754 num_sections = bfd_count_sections (abfd);
755 data->segment_info = XCALLOC (num_sections, int);
757 for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
759 CORE_ADDR vma;
761 if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
762 continue;
764 vma = bfd_get_section_vma (abfd, sect);
765 if (vma < low)
766 low = vma;
767 if (vma + bfd_get_section_size (sect) > high)
768 high = vma + bfd_get_section_size (sect);
770 data->segment_info[i] = 1;
773 data->segment_bases[0] = low;
774 data->segment_sizes[0] = high - low;
776 return data;
779 /* Process a symbol file, as either the main file or as a dynamically
780 loaded file.
782 OBJFILE is where the symbols are to be read from.
784 ADDRS is the list of section load addresses. If the user has given
785 an 'add-symbol-file' command, then this is the list of offsets and
786 addresses he or she provided as arguments to the command; or, if
787 we're handling a shared library, these are the actual addresses the
788 sections are loaded at, according to the inferior's dynamic linker
789 (as gleaned by GDB's shared library code). We convert each address
790 into an offset from the section VMA's as it appears in the object
791 file, and then call the file's sym_offsets function to convert this
792 into a format-specific offset table --- a `struct section_offsets'.
793 If ADDRS is non-zero, OFFSETS must be zero.
795 OFFSETS is a table of section offsets already in the right
796 format-specific representation. NUM_OFFSETS is the number of
797 elements present in OFFSETS->offsets. If OFFSETS is non-zero, we
798 assume this is the proper table the call to sym_offsets described
799 above would produce. Instead of calling sym_offsets, we just dump
800 it right into objfile->section_offsets. (When we're re-reading
801 symbols from an objfile, we don't have the original load address
802 list any more; all we have is the section offset table.) If
803 OFFSETS is non-zero, ADDRS must be zero.
805 ADD_FLAGS encodes verbosity level, whether this is main symbol or
806 an extra symbol file such as dynamically loaded code, and wether
807 breakpoint reset should be deferred. */
809 void
810 syms_from_objfile (struct objfile *objfile,
811 struct section_addr_info *addrs,
812 struct section_offsets *offsets,
813 int num_offsets,
814 int add_flags)
816 struct section_addr_info *local_addr = NULL;
817 struct cleanup *old_chain;
818 const int mainline = add_flags & SYMFILE_MAINLINE;
820 gdb_assert (! (addrs && offsets));
822 init_entry_point_info (objfile);
823 objfile->sf = find_sym_fns (objfile->obfd);
825 if (objfile->sf == NULL)
826 return; /* No symbols. */
828 /* Make sure that partially constructed symbol tables will be cleaned up
829 if an error occurs during symbol reading. */
830 old_chain = make_cleanup_free_objfile (objfile);
832 /* If ADDRS and OFFSETS are both NULL, put together a dummy address
833 list. We now establish the convention that an addr of zero means
834 no load address was specified. */
835 if (! addrs && ! offsets)
837 local_addr
838 = alloc_section_addr_info (bfd_count_sections (objfile->obfd));
839 make_cleanup (xfree, local_addr);
840 addrs = local_addr;
843 /* Now either addrs or offsets is non-zero. */
845 if (mainline)
847 /* We will modify the main symbol table, make sure that all its users
848 will be cleaned up if an error occurs during symbol reading. */
849 make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/);
851 /* Since no error yet, throw away the old symbol table. */
853 if (symfile_objfile != NULL)
855 free_objfile (symfile_objfile);
856 gdb_assert (symfile_objfile == NULL);
859 /* Currently we keep symbols from the add-symbol-file command.
860 If the user wants to get rid of them, they should do "symbol-file"
861 without arguments first. Not sure this is the best behavior
862 (PR 2207). */
864 (*objfile->sf->sym_new_init) (objfile);
867 /* Convert addr into an offset rather than an absolute address.
868 We find the lowest address of a loaded segment in the objfile,
869 and assume that <addr> is where that got loaded.
871 We no longer warn if the lowest section is not a text segment (as
872 happens for the PA64 port. */
873 if (addrs && addrs->other[0].name)
874 addr_info_make_relative (addrs, objfile->obfd);
876 /* Initialize symbol reading routines for this objfile, allow complaints to
877 appear for this new file, and record how verbose to be, then do the
878 initial symbol reading for this file. */
880 (*objfile->sf->sym_init) (objfile);
881 clear_complaints (&symfile_complaints, 1, add_flags & SYMFILE_VERBOSE);
883 if (addrs)
884 (*objfile->sf->sym_offsets) (objfile, addrs);
885 else
887 size_t size = SIZEOF_N_SECTION_OFFSETS (num_offsets);
889 /* Just copy in the offset table directly as given to us. */
890 objfile->num_sections = num_offsets;
891 objfile->section_offsets
892 = ((struct section_offsets *)
893 obstack_alloc (&objfile->objfile_obstack, size));
894 memcpy (objfile->section_offsets, offsets, size);
896 init_objfile_sect_indices (objfile);
899 (*objfile->sf->sym_read) (objfile, add_flags);
901 /* Discard cleanups as symbol reading was successful. */
903 discard_cleanups (old_chain);
904 xfree (local_addr);
907 /* Perform required actions after either reading in the initial
908 symbols for a new objfile, or mapping in the symbols from a reusable
909 objfile. */
911 void
912 new_symfile_objfile (struct objfile *objfile, int add_flags)
915 /* If this is the main symbol file we have to clean up all users of the
916 old main symbol file. Otherwise it is sufficient to fixup all the
917 breakpoints that may have been redefined by this symbol file. */
918 if (add_flags & SYMFILE_MAINLINE)
920 /* OK, make it the "real" symbol file. */
921 symfile_objfile = objfile;
923 clear_symtab_users ();
925 else if ((add_flags & SYMFILE_DEFER_BP_RESET) == 0)
927 breakpoint_re_set ();
930 /* We're done reading the symbol file; finish off complaints. */
931 clear_complaints (&symfile_complaints, 0, add_flags & SYMFILE_VERBOSE);
934 /* Process a symbol file, as either the main file or as a dynamically
935 loaded file.
937 ABFD is a BFD already open on the file, as from symfile_bfd_open.
938 This BFD will be closed on error, and is always consumed by this function.
940 ADD_FLAGS encodes verbosity, whether this is main symbol file or
941 extra, such as dynamically loaded code, and what to do with breakpoins.
943 ADDRS, OFFSETS, and NUM_OFFSETS are as described for
944 syms_from_objfile, above.
945 ADDRS is ignored when SYMFILE_MAINLINE bit is set in ADD_FLAGS.
947 Upon success, returns a pointer to the objfile that was added.
948 Upon failure, jumps back to command level (never returns). */
950 static struct objfile *
951 symbol_file_add_with_addrs_or_offsets (bfd *abfd,
952 int add_flags,
953 struct section_addr_info *addrs,
954 struct section_offsets *offsets,
955 int num_offsets,
956 int flags)
958 struct objfile *objfile;
959 struct partial_symtab *psymtab;
960 struct cleanup *my_cleanups;
961 const char *name = bfd_get_filename (abfd);
962 const int from_tty = add_flags & SYMFILE_VERBOSE;
964 my_cleanups = make_cleanup_bfd_close (abfd);
966 /* Give user a chance to burp if we'd be
967 interactively wiping out any existing symbols. */
969 if ((have_full_symbols () || have_partial_symbols ())
970 && (add_flags & SYMFILE_MAINLINE)
971 && from_tty
972 && !query (_("Load new symbol table from \"%s\"? "), name))
973 error (_("Not confirmed."));
975 objfile = allocate_objfile (abfd, flags);
976 discard_cleanups (my_cleanups);
978 /* We either created a new mapped symbol table, mapped an existing
979 symbol table file which has not had initial symbol reading
980 performed, or need to read an unmapped symbol table. */
981 if (from_tty || info_verbose)
983 if (deprecated_pre_add_symbol_hook)
984 deprecated_pre_add_symbol_hook (name);
985 else
987 printf_unfiltered (_("Reading symbols from %s..."), name);
988 wrap_here ("");
989 gdb_flush (gdb_stdout);
992 syms_from_objfile (objfile, addrs, offsets, num_offsets,
993 add_flags);
995 /* We now have at least a partial symbol table. Check to see if the
996 user requested that all symbols be read on initial access via either
997 the gdb startup command line or on a per symbol file basis. Expand
998 all partial symbol tables for this objfile if so. */
1000 if ((flags & OBJF_READNOW) || readnow_symbol_files)
1002 if (from_tty || info_verbose)
1004 printf_unfiltered (_("expanding to full symbols..."));
1005 wrap_here ("");
1006 gdb_flush (gdb_stdout);
1009 for (psymtab = objfile->psymtabs;
1010 psymtab != NULL;
1011 psymtab = psymtab->next)
1013 psymtab_to_symtab (psymtab);
1017 if ((from_tty || info_verbose)
1018 && !objfile_has_symbols (objfile))
1020 wrap_here ("");
1021 printf_unfiltered (_("(no debugging symbols found)..."));
1022 wrap_here ("");
1025 if (from_tty || info_verbose)
1027 if (deprecated_post_add_symbol_hook)
1028 deprecated_post_add_symbol_hook ();
1029 else
1030 printf_unfiltered (_("done.\n"));
1033 /* We print some messages regardless of whether 'from_tty ||
1034 info_verbose' is true, so make sure they go out at the right
1035 time. */
1036 gdb_flush (gdb_stdout);
1038 do_cleanups (my_cleanups);
1040 if (objfile->sf == NULL)
1042 observer_notify_new_objfile (objfile);
1043 return objfile; /* No symbols. */
1046 new_symfile_objfile (objfile, add_flags);
1048 observer_notify_new_objfile (objfile);
1050 bfd_cache_close_all ();
1051 return (objfile);
1054 /* Add BFD as a separate debug file for OBJFILE. */
1056 void
1057 symbol_file_add_separate (bfd *bfd, int symfile_flags, struct objfile *objfile)
1059 struct objfile *new_objfile;
1060 struct section_addr_info *sap;
1061 struct cleanup *my_cleanup;
1063 /* Create section_addr_info. We can't directly use offsets from OBJFILE
1064 because sections of BFD may not match sections of OBJFILE and because
1065 vma may have been modified by tools such as prelink. */
1066 sap = build_section_addr_info_from_objfile (objfile);
1067 my_cleanup = make_cleanup_free_section_addr_info (sap);
1069 new_objfile = symbol_file_add_with_addrs_or_offsets
1070 (bfd, symfile_flags,
1071 sap, NULL, 0,
1072 objfile->flags & (OBJF_REORDERED | OBJF_SHARED | OBJF_READNOW
1073 | OBJF_USERLOADED));
1075 do_cleanups (my_cleanup);
1077 add_separate_debug_objfile (new_objfile, objfile);
1080 /* Process the symbol file ABFD, as either the main file or as a
1081 dynamically loaded file.
1083 See symbol_file_add_with_addrs_or_offsets's comments for
1084 details. */
1085 struct objfile *
1086 symbol_file_add_from_bfd (bfd *abfd, int add_flags,
1087 struct section_addr_info *addrs,
1088 int flags)
1090 return symbol_file_add_with_addrs_or_offsets (abfd, add_flags, addrs, 0, 0,
1091 flags);
1095 /* Process a symbol file, as either the main file or as a dynamically
1096 loaded file. See symbol_file_add_with_addrs_or_offsets's comments
1097 for details. */
1098 struct objfile *
1099 symbol_file_add (char *name, int add_flags, struct section_addr_info *addrs,
1100 int flags)
1102 return symbol_file_add_from_bfd (symfile_bfd_open (name), add_flags, addrs,
1103 flags);
1107 /* Call symbol_file_add() with default values and update whatever is
1108 affected by the loading of a new main().
1109 Used when the file is supplied in the gdb command line
1110 and by some targets with special loading requirements.
1111 The auxiliary function, symbol_file_add_main_1(), has the flags
1112 argument for the switches that can only be specified in the symbol_file
1113 command itself. */
1115 void
1116 symbol_file_add_main (char *args, int from_tty)
1118 symbol_file_add_main_1 (args, from_tty, 0);
1121 static void
1122 symbol_file_add_main_1 (char *args, int from_tty, int flags)
1124 const int add_flags = SYMFILE_MAINLINE | (from_tty ? SYMFILE_VERBOSE : 0);
1125 symbol_file_add (args, add_flags, NULL, flags);
1127 /* Getting new symbols may change our opinion about
1128 what is frameless. */
1129 reinit_frame_cache ();
1131 set_initial_language ();
1134 void
1135 symbol_file_clear (int from_tty)
1137 if ((have_full_symbols () || have_partial_symbols ())
1138 && from_tty
1139 && (symfile_objfile
1140 ? !query (_("Discard symbol table from `%s'? "),
1141 symfile_objfile->name)
1142 : !query (_("Discard symbol table? "))))
1143 error (_("Not confirmed."));
1145 free_all_objfiles ();
1147 /* solib descriptors may have handles to objfiles. Since their
1148 storage has just been released, we'd better wipe the solib
1149 descriptors as well. */
1150 no_shared_libraries (NULL, from_tty);
1152 gdb_assert (symfile_objfile == NULL);
1153 if (from_tty)
1154 printf_unfiltered (_("No symbol file now.\n"));
1157 static char *
1158 get_debug_link_info (struct objfile *objfile, unsigned long *crc32_out)
1160 asection *sect;
1161 bfd_size_type debuglink_size;
1162 unsigned long crc32;
1163 char *contents;
1164 int crc_offset;
1165 unsigned char *p;
1167 sect = bfd_get_section_by_name (objfile->obfd, ".gnu_debuglink");
1169 if (sect == NULL)
1170 return NULL;
1172 debuglink_size = bfd_section_size (objfile->obfd, sect);
1174 contents = xmalloc (debuglink_size);
1175 bfd_get_section_contents (objfile->obfd, sect, contents,
1176 (file_ptr)0, (bfd_size_type)debuglink_size);
1178 /* Crc value is stored after the filename, aligned up to 4 bytes. */
1179 crc_offset = strlen (contents) + 1;
1180 crc_offset = (crc_offset + 3) & ~3;
1182 crc32 = bfd_get_32 (objfile->obfd, (bfd_byte *) (contents + crc_offset));
1184 *crc32_out = crc32;
1185 return contents;
1188 static int
1189 separate_debug_file_exists (const char *name, unsigned long crc,
1190 struct objfile *parent_objfile)
1192 unsigned long file_crc = 0;
1193 bfd *abfd;
1194 gdb_byte buffer[8*1024];
1195 int count;
1196 struct stat parent_stat, abfd_stat;
1198 /* Find a separate debug info file as if symbols would be present in
1199 PARENT_OBJFILE itself this function would not be called. .gnu_debuglink
1200 section can contain just the basename of PARENT_OBJFILE without any
1201 ".debug" suffix as "/usr/lib/debug/path/to/file" is a separate tree where
1202 the separate debug infos with the same basename can exist. */
1204 if (strcmp (name, parent_objfile->name) == 0)
1205 return 0;
1207 abfd = bfd_open_maybe_remote (name);
1209 if (!abfd)
1210 return 0;
1212 /* Verify symlinks were not the cause of strcmp name difference above.
1214 Some operating systems, e.g. Windows, do not provide a meaningful
1215 st_ino; they always set it to zero. (Windows does provide a
1216 meaningful st_dev.) Do not indicate a duplicate library in that
1217 case. While there is no guarantee that a system that provides
1218 meaningful inode numbers will never set st_ino to zero, this is
1219 merely an optimization, so we do not need to worry about false
1220 negatives. */
1222 if (bfd_stat (abfd, &abfd_stat) == 0
1223 && bfd_stat (parent_objfile->obfd, &parent_stat) == 0
1224 && abfd_stat.st_dev == parent_stat.st_dev
1225 && abfd_stat.st_ino == parent_stat.st_ino
1226 && abfd_stat.st_ino != 0)
1228 bfd_close (abfd);
1229 return 0;
1232 while ((count = bfd_bread (buffer, sizeof (buffer), abfd)) > 0)
1233 file_crc = gnu_debuglink_crc32 (file_crc, buffer, count);
1235 bfd_close (abfd);
1237 if (crc != file_crc)
1239 warning (_("the debug information found in \"%s\""
1240 " does not match \"%s\" (CRC mismatch).\n"),
1241 name, parent_objfile->name);
1242 return 0;
1245 return 1;
1248 char *debug_file_directory = NULL;
1249 static void
1250 show_debug_file_directory (struct ui_file *file, int from_tty,
1251 struct cmd_list_element *c, const char *value)
1253 fprintf_filtered (file, _("\
1254 The directory where separate debug symbols are searched for is \"%s\".\n"),
1255 value);
1258 #if ! defined (DEBUG_SUBDIRECTORY)
1259 #define DEBUG_SUBDIRECTORY ".debug"
1260 #endif
1262 char *
1263 find_separate_debug_file_by_debuglink (struct objfile *objfile)
1265 asection *sect;
1266 char *basename, *name_copy, *debugdir;
1267 char *dir = NULL;
1268 char *debugfile = NULL;
1269 char *canon_name = NULL;
1270 bfd_size_type debuglink_size;
1271 unsigned long crc32;
1272 int i;
1274 basename = get_debug_link_info (objfile, &crc32);
1276 if (basename == NULL)
1277 /* There's no separate debug info, hence there's no way we could
1278 load it => no warning. */
1279 goto cleanup_return_debugfile;
1281 dir = xstrdup (objfile->name);
1283 /* Strip off the final filename part, leaving the directory name,
1284 followed by a slash. Objfile names should always be absolute and
1285 tilde-expanded, so there should always be a slash in there
1286 somewhere. */
1287 for (i = strlen(dir) - 1; i >= 0; i--)
1289 if (IS_DIR_SEPARATOR (dir[i]))
1290 break;
1292 gdb_assert (i >= 0 && IS_DIR_SEPARATOR (dir[i]));
1293 dir[i+1] = '\0';
1295 /* Set I to max (strlen (canon_name), strlen (dir)). */
1296 canon_name = lrealpath (dir);
1297 i = strlen (dir);
1298 if (canon_name && strlen (canon_name) > i)
1299 i = strlen (canon_name);
1301 debugfile = xmalloc (strlen (debug_file_directory) + 1
1303 + strlen (DEBUG_SUBDIRECTORY)
1304 + strlen ("/")
1305 + strlen (basename)
1306 + 1);
1308 /* First try in the same directory as the original file. */
1309 strcpy (debugfile, dir);
1310 strcat (debugfile, basename);
1312 if (separate_debug_file_exists (debugfile, crc32, objfile))
1313 goto cleanup_return_debugfile;
1315 /* Then try in the subdirectory named DEBUG_SUBDIRECTORY. */
1316 strcpy (debugfile, dir);
1317 strcat (debugfile, DEBUG_SUBDIRECTORY);
1318 strcat (debugfile, "/");
1319 strcat (debugfile, basename);
1321 if (separate_debug_file_exists (debugfile, crc32, objfile))
1322 goto cleanup_return_debugfile;
1324 /* Then try in the global debugfile directories.
1326 Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
1327 cause "/..." lookups. */
1329 debugdir = debug_file_directory;
1332 char *debugdir_end;
1334 while (*debugdir == DIRNAME_SEPARATOR)
1335 debugdir++;
1337 debugdir_end = strchr (debugdir, DIRNAME_SEPARATOR);
1338 if (debugdir_end == NULL)
1339 debugdir_end = &debugdir[strlen (debugdir)];
1341 memcpy (debugfile, debugdir, debugdir_end - debugdir);
1342 debugfile[debugdir_end - debugdir] = 0;
1343 strcat (debugfile, "/");
1344 strcat (debugfile, dir);
1345 strcat (debugfile, basename);
1347 if (separate_debug_file_exists (debugfile, crc32, objfile))
1348 goto cleanup_return_debugfile;
1350 /* If the file is in the sysroot, try using its base path in the
1351 global debugfile directory. */
1352 if (canon_name
1353 && strncmp (canon_name, gdb_sysroot, strlen (gdb_sysroot)) == 0
1354 && IS_DIR_SEPARATOR (canon_name[strlen (gdb_sysroot)]))
1356 memcpy (debugfile, debugdir, debugdir_end - debugdir);
1357 debugfile[debugdir_end - debugdir] = 0;
1358 strcat (debugfile, canon_name + strlen (gdb_sysroot));
1359 strcat (debugfile, "/");
1360 strcat (debugfile, basename);
1362 if (separate_debug_file_exists (debugfile, crc32, objfile))
1363 goto cleanup_return_debugfile;
1366 debugdir = debugdir_end;
1368 while (*debugdir != 0);
1370 xfree (debugfile);
1371 debugfile = NULL;
1373 cleanup_return_debugfile:
1374 xfree (canon_name);
1375 xfree (basename);
1376 xfree (dir);
1377 return debugfile;
1381 /* This is the symbol-file command. Read the file, analyze its
1382 symbols, and add a struct symtab to a symtab list. The syntax of
1383 the command is rather bizarre:
1385 1. The function buildargv implements various quoting conventions
1386 which are undocumented and have little or nothing in common with
1387 the way things are quoted (or not quoted) elsewhere in GDB.
1389 2. Options are used, which are not generally used in GDB (perhaps
1390 "set mapped on", "set readnow on" would be better)
1392 3. The order of options matters, which is contrary to GNU
1393 conventions (because it is confusing and inconvenient). */
1395 void
1396 symbol_file_command (char *args, int from_tty)
1398 dont_repeat ();
1400 if (args == NULL)
1402 symbol_file_clear (from_tty);
1404 else
1406 char **argv = gdb_buildargv (args);
1407 int flags = OBJF_USERLOADED;
1408 struct cleanup *cleanups;
1409 char *name = NULL;
1411 cleanups = make_cleanup_freeargv (argv);
1412 while (*argv != NULL)
1414 if (strcmp (*argv, "-readnow") == 0)
1415 flags |= OBJF_READNOW;
1416 else if (**argv == '-')
1417 error (_("unknown option `%s'"), *argv);
1418 else
1420 symbol_file_add_main_1 (*argv, from_tty, flags);
1421 name = *argv;
1424 argv++;
1427 if (name == NULL)
1428 error (_("no symbol file name was specified"));
1430 do_cleanups (cleanups);
1434 /* Set the initial language.
1436 FIXME: A better solution would be to record the language in the
1437 psymtab when reading partial symbols, and then use it (if known) to
1438 set the language. This would be a win for formats that encode the
1439 language in an easily discoverable place, such as DWARF. For
1440 stabs, we can jump through hoops looking for specially named
1441 symbols or try to intuit the language from the specific type of
1442 stabs we find, but we can't do that until later when we read in
1443 full symbols. */
1445 void
1446 set_initial_language (void)
1448 struct partial_symtab *pst;
1449 enum language lang = language_unknown;
1451 pst = find_main_psymtab ();
1452 if (pst != NULL)
1454 if (pst->filename != NULL)
1455 lang = deduce_language_from_filename (pst->filename);
1457 if (lang == language_unknown)
1459 /* Make C the default language */
1460 lang = language_c;
1463 set_language (lang);
1464 expected_language = current_language; /* Don't warn the user. */
1468 /* If NAME is a remote name open the file using remote protocol, otherwise
1469 open it normally. */
1471 bfd *
1472 bfd_open_maybe_remote (const char *name)
1474 if (remote_filename_p (name))
1475 return remote_bfd_open (name, gnutarget);
1476 else
1477 return bfd_openr (name, gnutarget);
1481 /* Open the file specified by NAME and hand it off to BFD for
1482 preliminary analysis. Return a newly initialized bfd *, which
1483 includes a newly malloc'd` copy of NAME (tilde-expanded and made
1484 absolute). In case of trouble, error() is called. */
1486 bfd *
1487 symfile_bfd_open (char *name)
1489 bfd *sym_bfd;
1490 int desc;
1491 char *absolute_name;
1493 if (remote_filename_p (name))
1495 name = xstrdup (name);
1496 sym_bfd = remote_bfd_open (name, gnutarget);
1497 if (!sym_bfd)
1499 make_cleanup (xfree, name);
1500 error (_("`%s': can't open to read symbols: %s."), name,
1501 bfd_errmsg (bfd_get_error ()));
1504 if (!bfd_check_format (sym_bfd, bfd_object))
1506 bfd_close (sym_bfd);
1507 make_cleanup (xfree, name);
1508 error (_("`%s': can't read symbols: %s."), name,
1509 bfd_errmsg (bfd_get_error ()));
1512 return sym_bfd;
1515 name = tilde_expand (name); /* Returns 1st new malloc'd copy. */
1517 /* Look down path for it, allocate 2nd new malloc'd copy. */
1518 desc = openp (getenv ("PATH"), OPF_TRY_CWD_FIRST, name,
1519 O_RDONLY | O_BINARY, &absolute_name);
1520 #if defined(__GO32__) || defined(_WIN32) || defined (__CYGWIN__)
1521 if (desc < 0)
1523 char *exename = alloca (strlen (name) + 5);
1524 strcat (strcpy (exename, name), ".exe");
1525 desc = openp (getenv ("PATH"), OPF_TRY_CWD_FIRST, exename,
1526 O_RDONLY | O_BINARY, &absolute_name);
1528 #endif
1529 if (desc < 0)
1531 make_cleanup (xfree, name);
1532 perror_with_name (name);
1535 /* Free 1st new malloc'd copy, but keep the 2nd malloc'd copy in
1536 bfd. It'll be freed in free_objfile(). */
1537 xfree (name);
1538 name = absolute_name;
1540 sym_bfd = bfd_fopen (name, gnutarget, FOPEN_RB, desc);
1541 if (!sym_bfd)
1543 close (desc);
1544 make_cleanup (xfree, name);
1545 error (_("`%s': can't open to read symbols: %s."), name,
1546 bfd_errmsg (bfd_get_error ()));
1548 bfd_set_cacheable (sym_bfd, 1);
1550 if (!bfd_check_format (sym_bfd, bfd_object))
1552 /* FIXME: should be checking for errors from bfd_close (for one
1553 thing, on error it does not free all the storage associated
1554 with the bfd). */
1555 bfd_close (sym_bfd); /* This also closes desc. */
1556 make_cleanup (xfree, name);
1557 error (_("`%s': can't read symbols: %s."), name,
1558 bfd_errmsg (bfd_get_error ()));
1561 /* bfd_usrdata exists for applications and libbfd must not touch it. */
1562 gdb_assert (bfd_usrdata (sym_bfd) == NULL);
1564 return sym_bfd;
1567 /* Return the section index for SECTION_NAME on OBJFILE. Return -1 if
1568 the section was not found. */
1571 get_section_index (struct objfile *objfile, char *section_name)
1573 asection *sect = bfd_get_section_by_name (objfile->obfd, section_name);
1575 if (sect)
1576 return sect->index;
1577 else
1578 return -1;
1581 /* Link SF into the global symtab_fns list. Called on startup by the
1582 _initialize routine in each object file format reader, to register
1583 information about each format the the reader is prepared to
1584 handle. */
1586 void
1587 add_symtab_fns (struct sym_fns *sf)
1589 sf->next = symtab_fns;
1590 symtab_fns = sf;
1593 /* Initialize OBJFILE to read symbols from its associated BFD. It
1594 either returns or calls error(). The result is an initialized
1595 struct sym_fns in the objfile structure, that contains cached
1596 information about the symbol file. */
1598 static struct sym_fns *
1599 find_sym_fns (bfd *abfd)
1601 struct sym_fns *sf;
1602 enum bfd_flavour our_flavour = bfd_get_flavour (abfd);
1604 if (our_flavour == bfd_target_srec_flavour
1605 || our_flavour == bfd_target_ihex_flavour
1606 || our_flavour == bfd_target_tekhex_flavour)
1607 return NULL; /* No symbols. */
1609 for (sf = symtab_fns; sf != NULL; sf = sf->next)
1610 if (our_flavour == sf->sym_flavour)
1611 return sf;
1613 error (_("I'm sorry, Dave, I can't do that. Symbol format `%s' unknown."),
1614 bfd_get_target (abfd));
1618 /* This function runs the load command of our current target. */
1620 static void
1621 load_command (char *arg, int from_tty)
1623 /* The user might be reloading because the binary has changed. Take
1624 this opportunity to check. */
1625 reopen_exec_file ();
1626 reread_symbols ();
1628 if (arg == NULL)
1630 char *parg;
1631 int count = 0;
1633 parg = arg = get_exec_file (1);
1635 /* Count how many \ " ' tab space there are in the name. */
1636 while ((parg = strpbrk (parg, "\\\"'\t ")))
1638 parg++;
1639 count++;
1642 if (count)
1644 /* We need to quote this string so buildargv can pull it apart. */
1645 char *temp = xmalloc (strlen (arg) + count + 1 );
1646 char *ptemp = temp;
1647 char *prev;
1649 make_cleanup (xfree, temp);
1651 prev = parg = arg;
1652 while ((parg = strpbrk (parg, "\\\"'\t ")))
1654 strncpy (ptemp, prev, parg - prev);
1655 ptemp += parg - prev;
1656 prev = parg++;
1657 *ptemp++ = '\\';
1659 strcpy (ptemp, prev);
1661 arg = temp;
1665 target_load (arg, from_tty);
1667 /* After re-loading the executable, we don't really know which
1668 overlays are mapped any more. */
1669 overlay_cache_invalid = 1;
1672 /* This version of "load" should be usable for any target. Currently
1673 it is just used for remote targets, not inftarg.c or core files,
1674 on the theory that only in that case is it useful.
1676 Avoiding xmodem and the like seems like a win (a) because we don't have
1677 to worry about finding it, and (b) On VMS, fork() is very slow and so
1678 we don't want to run a subprocess. On the other hand, I'm not sure how
1679 performance compares. */
1681 static int validate_download = 0;
1683 /* Callback service function for generic_load (bfd_map_over_sections). */
1685 static void
1686 add_section_size_callback (bfd *abfd, asection *asec, void *data)
1688 bfd_size_type *sum = data;
1690 *sum += bfd_get_section_size (asec);
1693 /* Opaque data for load_section_callback. */
1694 struct load_section_data {
1695 unsigned long load_offset;
1696 struct load_progress_data *progress_data;
1697 VEC(memory_write_request_s) *requests;
1700 /* Opaque data for load_progress. */
1701 struct load_progress_data {
1702 /* Cumulative data. */
1703 unsigned long write_count;
1704 unsigned long data_count;
1705 bfd_size_type total_size;
1708 /* Opaque data for load_progress for a single section. */
1709 struct load_progress_section_data {
1710 struct load_progress_data *cumulative;
1712 /* Per-section data. */
1713 const char *section_name;
1714 ULONGEST section_sent;
1715 ULONGEST section_size;
1716 CORE_ADDR lma;
1717 gdb_byte *buffer;
1720 /* Target write callback routine for progress reporting. */
1722 static void
1723 load_progress (ULONGEST bytes, void *untyped_arg)
1725 struct load_progress_section_data *args = untyped_arg;
1726 struct load_progress_data *totals;
1728 if (args == NULL)
1729 /* Writing padding data. No easy way to get at the cumulative
1730 stats, so just ignore this. */
1731 return;
1733 totals = args->cumulative;
1735 if (bytes == 0 && args->section_sent == 0)
1737 /* The write is just starting. Let the user know we've started
1738 this section. */
1739 ui_out_message (uiout, 0, "Loading section %s, size %s lma %s\n",
1740 args->section_name, hex_string (args->section_size),
1741 paddress (target_gdbarch, args->lma));
1742 return;
1745 if (validate_download)
1747 /* Broken memories and broken monitors manifest themselves here
1748 when bring new computers to life. This doubles already slow
1749 downloads. */
1750 /* NOTE: cagney/1999-10-18: A more efficient implementation
1751 might add a verify_memory() method to the target vector and
1752 then use that. remote.c could implement that method using
1753 the ``qCRC'' packet. */
1754 gdb_byte *check = xmalloc (bytes);
1755 struct cleanup *verify_cleanups = make_cleanup (xfree, check);
1757 if (target_read_memory (args->lma, check, bytes) != 0)
1758 error (_("Download verify read failed at %s"),
1759 paddress (target_gdbarch, args->lma));
1760 if (memcmp (args->buffer, check, bytes) != 0)
1761 error (_("Download verify compare failed at %s"),
1762 paddress (target_gdbarch, args->lma));
1763 do_cleanups (verify_cleanups);
1765 totals->data_count += bytes;
1766 args->lma += bytes;
1767 args->buffer += bytes;
1768 totals->write_count += 1;
1769 args->section_sent += bytes;
1770 if (quit_flag
1771 || (deprecated_ui_load_progress_hook != NULL
1772 && deprecated_ui_load_progress_hook (args->section_name,
1773 args->section_sent)))
1774 error (_("Canceled the download"));
1776 if (deprecated_show_load_progress != NULL)
1777 deprecated_show_load_progress (args->section_name,
1778 args->section_sent,
1779 args->section_size,
1780 totals->data_count,
1781 totals->total_size);
1784 /* Callback service function for generic_load (bfd_map_over_sections). */
1786 static void
1787 load_section_callback (bfd *abfd, asection *asec, void *data)
1789 struct memory_write_request *new_request;
1790 struct load_section_data *args = data;
1791 struct load_progress_section_data *section_data;
1792 bfd_size_type size = bfd_get_section_size (asec);
1793 gdb_byte *buffer;
1794 const char *sect_name = bfd_get_section_name (abfd, asec);
1796 if ((bfd_get_section_flags (abfd, asec) & SEC_LOAD) == 0)
1797 return;
1799 if (size == 0)
1800 return;
1802 new_request = VEC_safe_push (memory_write_request_s,
1803 args->requests, NULL);
1804 memset (new_request, 0, sizeof (struct memory_write_request));
1805 section_data = xcalloc (1, sizeof (struct load_progress_section_data));
1806 new_request->begin = bfd_section_lma (abfd, asec) + args->load_offset;
1807 new_request->end = new_request->begin + size; /* FIXME Should size be in instead? */
1808 new_request->data = xmalloc (size);
1809 new_request->baton = section_data;
1811 buffer = new_request->data;
1813 section_data->cumulative = args->progress_data;
1814 section_data->section_name = sect_name;
1815 section_data->section_size = size;
1816 section_data->lma = new_request->begin;
1817 section_data->buffer = buffer;
1819 bfd_get_section_contents (abfd, asec, buffer, 0, size);
1822 /* Clean up an entire memory request vector, including load
1823 data and progress records. */
1825 static void
1826 clear_memory_write_data (void *arg)
1828 VEC(memory_write_request_s) **vec_p = arg;
1829 VEC(memory_write_request_s) *vec = *vec_p;
1830 int i;
1831 struct memory_write_request *mr;
1833 for (i = 0; VEC_iterate (memory_write_request_s, vec, i, mr); ++i)
1835 xfree (mr->data);
1836 xfree (mr->baton);
1838 VEC_free (memory_write_request_s, vec);
1841 void
1842 generic_load (char *args, int from_tty)
1844 bfd *loadfile_bfd;
1845 struct timeval start_time, end_time;
1846 char *filename;
1847 struct cleanup *old_cleanups = make_cleanup (null_cleanup, 0);
1848 struct load_section_data cbdata;
1849 struct load_progress_data total_progress;
1851 CORE_ADDR entry;
1852 char **argv;
1854 memset (&cbdata, 0, sizeof (cbdata));
1855 memset (&total_progress, 0, sizeof (total_progress));
1856 cbdata.progress_data = &total_progress;
1858 make_cleanup (clear_memory_write_data, &cbdata.requests);
1860 if (args == NULL)
1861 error_no_arg (_("file to load"));
1863 argv = gdb_buildargv (args);
1864 make_cleanup_freeargv (argv);
1866 filename = tilde_expand (argv[0]);
1867 make_cleanup (xfree, filename);
1869 if (argv[1] != NULL)
1871 char *endptr;
1873 cbdata.load_offset = strtoul (argv[1], &endptr, 0);
1875 /* If the last word was not a valid number then
1876 treat it as a file name with spaces in. */
1877 if (argv[1] == endptr)
1878 error (_("Invalid download offset:%s."), argv[1]);
1880 if (argv[2] != NULL)
1881 error (_("Too many parameters."));
1884 /* Open the file for loading. */
1885 loadfile_bfd = bfd_openr (filename, gnutarget);
1886 if (loadfile_bfd == NULL)
1888 perror_with_name (filename);
1889 return;
1892 /* FIXME: should be checking for errors from bfd_close (for one thing,
1893 on error it does not free all the storage associated with the
1894 bfd). */
1895 make_cleanup_bfd_close (loadfile_bfd);
1897 if (!bfd_check_format (loadfile_bfd, bfd_object))
1899 error (_("\"%s\" is not an object file: %s"), filename,
1900 bfd_errmsg (bfd_get_error ()));
1903 bfd_map_over_sections (loadfile_bfd, add_section_size_callback,
1904 (void *) &total_progress.total_size);
1906 bfd_map_over_sections (loadfile_bfd, load_section_callback, &cbdata);
1908 gettimeofday (&start_time, NULL);
1910 if (target_write_memory_blocks (cbdata.requests, flash_discard,
1911 load_progress) != 0)
1912 error (_("Load failed"));
1914 gettimeofday (&end_time, NULL);
1916 entry = bfd_get_start_address (loadfile_bfd);
1917 ui_out_text (uiout, "Start address ");
1918 ui_out_field_fmt (uiout, "address", "%s", paddress (target_gdbarch, entry));
1919 ui_out_text (uiout, ", load size ");
1920 ui_out_field_fmt (uiout, "load-size", "%lu", total_progress.data_count);
1921 ui_out_text (uiout, "\n");
1922 /* We were doing this in remote-mips.c, I suspect it is right
1923 for other targets too. */
1924 regcache_write_pc (get_current_regcache (), entry);
1926 /* FIXME: are we supposed to call symbol_file_add or not? According
1927 to a comment from remote-mips.c (where a call to symbol_file_add
1928 was commented out), making the call confuses GDB if more than one
1929 file is loaded in. Some targets do (e.g., remote-vx.c) but
1930 others don't (or didn't - perhaps they have all been deleted). */
1932 print_transfer_performance (gdb_stdout, total_progress.data_count,
1933 total_progress.write_count,
1934 &start_time, &end_time);
1936 do_cleanups (old_cleanups);
1939 /* Report how fast the transfer went. */
1941 /* DEPRECATED: cagney/1999-10-18: report_transfer_performance is being
1942 replaced by print_transfer_performance (with a very different
1943 function signature). */
1945 void
1946 report_transfer_performance (unsigned long data_count, time_t start_time,
1947 time_t end_time)
1949 struct timeval start, end;
1951 start.tv_sec = start_time;
1952 start.tv_usec = 0;
1953 end.tv_sec = end_time;
1954 end.tv_usec = 0;
1956 print_transfer_performance (gdb_stdout, data_count, 0, &start, &end);
1959 void
1960 print_transfer_performance (struct ui_file *stream,
1961 unsigned long data_count,
1962 unsigned long write_count,
1963 const struct timeval *start_time,
1964 const struct timeval *end_time)
1966 ULONGEST time_count;
1968 /* Compute the elapsed time in milliseconds, as a tradeoff between
1969 accuracy and overflow. */
1970 time_count = (end_time->tv_sec - start_time->tv_sec) * 1000;
1971 time_count += (end_time->tv_usec - start_time->tv_usec) / 1000;
1973 ui_out_text (uiout, "Transfer rate: ");
1974 if (time_count > 0)
1976 unsigned long rate = ((ULONGEST) data_count * 1000) / time_count;
1978 if (ui_out_is_mi_like_p (uiout))
1980 ui_out_field_fmt (uiout, "transfer-rate", "%lu", rate * 8);
1981 ui_out_text (uiout, " bits/sec");
1983 else if (rate < 1024)
1985 ui_out_field_fmt (uiout, "transfer-rate", "%lu", rate);
1986 ui_out_text (uiout, " bytes/sec");
1988 else
1990 ui_out_field_fmt (uiout, "transfer-rate", "%lu", rate / 1024);
1991 ui_out_text (uiout, " KB/sec");
1994 else
1996 ui_out_field_fmt (uiout, "transferred-bits", "%lu", (data_count * 8));
1997 ui_out_text (uiout, " bits in <1 sec");
1999 if (write_count > 0)
2001 ui_out_text (uiout, ", ");
2002 ui_out_field_fmt (uiout, "write-rate", "%lu", data_count / write_count);
2003 ui_out_text (uiout, " bytes/write");
2005 ui_out_text (uiout, ".\n");
2008 /* This function allows the addition of incrementally linked object files.
2009 It does not modify any state in the target, only in the debugger. */
2010 /* Note: ezannoni 2000-04-13 This function/command used to have a
2011 special case syntax for the rombug target (Rombug is the boot
2012 monitor for Microware's OS-9 / OS-9000, see remote-os9k.c). In the
2013 rombug case, the user doesn't need to supply a text address,
2014 instead a call to target_link() (in target.c) would supply the
2015 value to use. We are now discontinuing this type of ad hoc syntax. */
2017 static void
2018 add_symbol_file_command (char *args, int from_tty)
2020 struct gdbarch *gdbarch = get_current_arch ();
2021 char *filename = NULL;
2022 int flags = OBJF_USERLOADED;
2023 char *arg;
2024 int expecting_option = 0;
2025 int section_index = 0;
2026 int argcnt = 0;
2027 int sec_num = 0;
2028 int i;
2029 int expecting_sec_name = 0;
2030 int expecting_sec_addr = 0;
2031 char **argv;
2033 struct sect_opt
2035 char *name;
2036 char *value;
2039 struct section_addr_info *section_addrs;
2040 struct sect_opt *sect_opts = NULL;
2041 size_t num_sect_opts = 0;
2042 struct cleanup *my_cleanups = make_cleanup (null_cleanup, NULL);
2044 num_sect_opts = 16;
2045 sect_opts = (struct sect_opt *) xmalloc (num_sect_opts
2046 * sizeof (struct sect_opt));
2048 dont_repeat ();
2050 if (args == NULL)
2051 error (_("add-symbol-file takes a file name and an address"));
2053 argv = gdb_buildargv (args);
2054 make_cleanup_freeargv (argv);
2056 for (arg = argv[0], argcnt = 0; arg != NULL; arg = argv[++argcnt])
2058 /* Process the argument. */
2059 if (argcnt == 0)
2061 /* The first argument is the file name. */
2062 filename = tilde_expand (arg);
2063 make_cleanup (xfree, filename);
2065 else
2066 if (argcnt == 1)
2068 /* The second argument is always the text address at which
2069 to load the program. */
2070 sect_opts[section_index].name = ".text";
2071 sect_opts[section_index].value = arg;
2072 if (++section_index >= num_sect_opts)
2074 num_sect_opts *= 2;
2075 sect_opts = ((struct sect_opt *)
2076 xrealloc (sect_opts,
2077 num_sect_opts
2078 * sizeof (struct sect_opt)));
2081 else
2083 /* It's an option (starting with '-') or it's an argument
2084 to an option */
2086 if (*arg == '-')
2088 if (strcmp (arg, "-readnow") == 0)
2089 flags |= OBJF_READNOW;
2090 else if (strcmp (arg, "-s") == 0)
2092 expecting_sec_name = 1;
2093 expecting_sec_addr = 1;
2096 else
2098 if (expecting_sec_name)
2100 sect_opts[section_index].name = arg;
2101 expecting_sec_name = 0;
2103 else
2104 if (expecting_sec_addr)
2106 sect_opts[section_index].value = arg;
2107 expecting_sec_addr = 0;
2108 if (++section_index >= num_sect_opts)
2110 num_sect_opts *= 2;
2111 sect_opts = ((struct sect_opt *)
2112 xrealloc (sect_opts,
2113 num_sect_opts
2114 * sizeof (struct sect_opt)));
2117 else
2118 error (_("USAGE: add-symbol-file <filename> <textaddress> [-mapped] [-readnow] [-s <secname> <addr>]*"));
2123 /* This command takes at least two arguments. The first one is a
2124 filename, and the second is the address where this file has been
2125 loaded. Abort now if this address hasn't been provided by the
2126 user. */
2127 if (section_index < 1)
2128 error (_("The address where %s has been loaded is missing"), filename);
2130 /* Print the prompt for the query below. And save the arguments into
2131 a sect_addr_info structure to be passed around to other
2132 functions. We have to split this up into separate print
2133 statements because hex_string returns a local static
2134 string. */
2136 printf_unfiltered (_("add symbol table from file \"%s\" at\n"), filename);
2137 section_addrs = alloc_section_addr_info (section_index);
2138 make_cleanup (xfree, section_addrs);
2139 for (i = 0; i < section_index; i++)
2141 CORE_ADDR addr;
2142 char *val = sect_opts[i].value;
2143 char *sec = sect_opts[i].name;
2145 addr = parse_and_eval_address (val);
2147 /* Here we store the section offsets in the order they were
2148 entered on the command line. */
2149 section_addrs->other[sec_num].name = sec;
2150 section_addrs->other[sec_num].addr = addr;
2151 printf_unfiltered ("\t%s_addr = %s\n", sec,
2152 paddress (gdbarch, addr));
2153 sec_num++;
2155 /* The object's sections are initialized when a
2156 call is made to build_objfile_section_table (objfile).
2157 This happens in reread_symbols.
2158 At this point, we don't know what file type this is,
2159 so we can't determine what section names are valid. */
2162 if (from_tty && (!query ("%s", "")))
2163 error (_("Not confirmed."));
2165 symbol_file_add (filename, from_tty ? SYMFILE_VERBOSE : 0,
2166 section_addrs, flags);
2168 /* Getting new symbols may change our opinion about what is
2169 frameless. */
2170 reinit_frame_cache ();
2171 do_cleanups (my_cleanups);
2175 /* Re-read symbols if a symbol-file has changed. */
2176 void
2177 reread_symbols (void)
2179 struct objfile *objfile;
2180 long new_modtime;
2181 int reread_one = 0;
2182 struct stat new_statbuf;
2183 int res;
2185 /* With the addition of shared libraries, this should be modified,
2186 the load time should be saved in the partial symbol tables, since
2187 different tables may come from different source files. FIXME.
2188 This routine should then walk down each partial symbol table
2189 and see if the symbol table that it originates from has been changed */
2191 for (objfile = object_files; objfile; objfile = objfile->next)
2193 /* solib-sunos.c creates one objfile with obfd. */
2194 if (objfile->obfd == NULL)
2195 continue;
2197 /* Separate debug objfiles are handled in the main objfile. */
2198 if (objfile->separate_debug_objfile_backlink)
2199 continue;
2201 #ifdef DEPRECATED_IBM6000_TARGET
2202 /* If this object is from a shared library, then you should
2203 stat on the library name, not member name. */
2205 if (objfile->obfd->my_archive)
2206 res = stat (objfile->obfd->my_archive->filename, &new_statbuf);
2207 else
2208 #endif
2209 res = stat (objfile->name, &new_statbuf);
2210 if (res != 0)
2212 /* FIXME, should use print_sys_errmsg but it's not filtered. */
2213 printf_unfiltered (_("`%s' has disappeared; keeping its symbols.\n"),
2214 objfile->name);
2215 continue;
2217 new_modtime = new_statbuf.st_mtime;
2218 if (new_modtime != objfile->mtime)
2220 struct cleanup *old_cleanups;
2221 struct section_offsets *offsets;
2222 int num_offsets;
2223 char *obfd_filename;
2225 printf_unfiltered (_("`%s' has changed; re-reading symbols.\n"),
2226 objfile->name);
2228 /* There are various functions like symbol_file_add,
2229 symfile_bfd_open, syms_from_objfile, etc., which might
2230 appear to do what we want. But they have various other
2231 effects which we *don't* want. So we just do stuff
2232 ourselves. We don't worry about mapped files (for one thing,
2233 any mapped file will be out of date). */
2235 /* If we get an error, blow away this objfile (not sure if
2236 that is the correct response for things like shared
2237 libraries). */
2238 old_cleanups = make_cleanup_free_objfile (objfile);
2239 /* We need to do this whenever any symbols go away. */
2240 make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/);
2242 if (exec_bfd != NULL && strcmp (bfd_get_filename (objfile->obfd),
2243 bfd_get_filename (exec_bfd)) == 0)
2245 /* Reload EXEC_BFD without asking anything. */
2247 exec_file_attach (bfd_get_filename (objfile->obfd), 0);
2250 /* Clean up any state BFD has sitting around. We don't need
2251 to close the descriptor but BFD lacks a way of closing the
2252 BFD without closing the descriptor. */
2253 obfd_filename = bfd_get_filename (objfile->obfd);
2254 if (!bfd_close (objfile->obfd))
2255 error (_("Can't close BFD for %s: %s"), objfile->name,
2256 bfd_errmsg (bfd_get_error ()));
2257 objfile->obfd = bfd_open_maybe_remote (obfd_filename);
2258 if (objfile->obfd == NULL)
2259 error (_("Can't open %s to read symbols."), objfile->name);
2260 else
2261 objfile->obfd = gdb_bfd_ref (objfile->obfd);
2262 /* bfd_openr sets cacheable to true, which is what we want. */
2263 if (!bfd_check_format (objfile->obfd, bfd_object))
2264 error (_("Can't read symbols from %s: %s."), objfile->name,
2265 bfd_errmsg (bfd_get_error ()));
2267 /* Save the offsets, we will nuke them with the rest of the
2268 objfile_obstack. */
2269 num_offsets = objfile->num_sections;
2270 offsets = ((struct section_offsets *)
2271 alloca (SIZEOF_N_SECTION_OFFSETS (num_offsets)));
2272 memcpy (offsets, objfile->section_offsets,
2273 SIZEOF_N_SECTION_OFFSETS (num_offsets));
2275 /* Remove any references to this objfile in the global
2276 value lists. */
2277 preserve_values (objfile);
2279 /* Nuke all the state that we will re-read. Much of the following
2280 code which sets things to NULL really is necessary to tell
2281 other parts of GDB that there is nothing currently there.
2283 Try to keep the freeing order compatible with free_objfile. */
2285 if (objfile->sf != NULL)
2287 (*objfile->sf->sym_finish) (objfile);
2290 clear_objfile_data (objfile);
2292 /* Free the separate debug objfiles. It will be
2293 automatically recreated by sym_read. */
2294 free_objfile_separate_debug (objfile);
2296 /* FIXME: Do we have to free a whole linked list, or is this
2297 enough? */
2298 if (objfile->global_psymbols.list)
2299 xfree (objfile->global_psymbols.list);
2300 memset (&objfile->global_psymbols, 0,
2301 sizeof (objfile->global_psymbols));
2302 if (objfile->static_psymbols.list)
2303 xfree (objfile->static_psymbols.list);
2304 memset (&objfile->static_psymbols, 0,
2305 sizeof (objfile->static_psymbols));
2307 /* Free the obstacks for non-reusable objfiles */
2308 bcache_xfree (objfile->psymbol_cache);
2309 objfile->psymbol_cache = bcache_xmalloc ();
2310 bcache_xfree (objfile->macro_cache);
2311 objfile->macro_cache = bcache_xmalloc ();
2312 bcache_xfree (objfile->filename_cache);
2313 objfile->filename_cache = bcache_xmalloc ();
2314 if (objfile->demangled_names_hash != NULL)
2316 htab_delete (objfile->demangled_names_hash);
2317 objfile->demangled_names_hash = NULL;
2319 obstack_free (&objfile->objfile_obstack, 0);
2320 objfile->sections = NULL;
2321 objfile->symtabs = NULL;
2322 objfile->psymtabs = NULL;
2323 objfile->psymtabs_addrmap = NULL;
2324 objfile->free_psymtabs = NULL;
2325 objfile->cp_namespace_symtab = NULL;
2326 objfile->msymbols = NULL;
2327 objfile->deprecated_sym_private = NULL;
2328 objfile->minimal_symbol_count = 0;
2329 memset (&objfile->msymbol_hash, 0,
2330 sizeof (objfile->msymbol_hash));
2331 memset (&objfile->msymbol_demangled_hash, 0,
2332 sizeof (objfile->msymbol_demangled_hash));
2334 objfile->psymbol_cache = bcache_xmalloc ();
2335 objfile->macro_cache = bcache_xmalloc ();
2336 objfile->filename_cache = bcache_xmalloc ();
2337 /* obstack_init also initializes the obstack so it is
2338 empty. We could use obstack_specify_allocation but
2339 gdb_obstack.h specifies the alloc/dealloc
2340 functions. */
2341 obstack_init (&objfile->objfile_obstack);
2342 if (build_objfile_section_table (objfile))
2344 error (_("Can't find the file sections in `%s': %s"),
2345 objfile->name, bfd_errmsg (bfd_get_error ()));
2347 terminate_minimal_symbol_table (objfile);
2349 /* We use the same section offsets as from last time. I'm not
2350 sure whether that is always correct for shared libraries. */
2351 objfile->section_offsets = (struct section_offsets *)
2352 obstack_alloc (&objfile->objfile_obstack,
2353 SIZEOF_N_SECTION_OFFSETS (num_offsets));
2354 memcpy (objfile->section_offsets, offsets,
2355 SIZEOF_N_SECTION_OFFSETS (num_offsets));
2356 objfile->num_sections = num_offsets;
2358 /* What the hell is sym_new_init for, anyway? The concept of
2359 distinguishing between the main file and additional files
2360 in this way seems rather dubious. */
2361 if (objfile == symfile_objfile)
2363 (*objfile->sf->sym_new_init) (objfile);
2366 (*objfile->sf->sym_init) (objfile);
2367 clear_complaints (&symfile_complaints, 1, 1);
2368 /* Do not set flags as this is safe and we don't want to be
2369 verbose. */
2370 (*objfile->sf->sym_read) (objfile, 0);
2371 if (!objfile_has_symbols (objfile))
2373 wrap_here ("");
2374 printf_unfiltered (_("(no debugging symbols found)\n"));
2375 wrap_here ("");
2378 /* We're done reading the symbol file; finish off complaints. */
2379 clear_complaints (&symfile_complaints, 0, 1);
2381 /* Getting new symbols may change our opinion about what is
2382 frameless. */
2384 reinit_frame_cache ();
2386 /* Discard cleanups as symbol reading was successful. */
2387 discard_cleanups (old_cleanups);
2389 /* If the mtime has changed between the time we set new_modtime
2390 and now, we *want* this to be out of date, so don't call stat
2391 again now. */
2392 objfile->mtime = new_modtime;
2393 reread_one = 1;
2394 init_entry_point_info (objfile);
2398 if (reread_one)
2400 /* Notify objfiles that we've modified objfile sections. */
2401 objfiles_changed ();
2403 clear_symtab_users ();
2404 /* At least one objfile has changed, so we can consider that
2405 the executable we're debugging has changed too. */
2406 observer_notify_executable_changed ();
2412 typedef struct
2414 char *ext;
2415 enum language lang;
2417 filename_language;
2419 static filename_language *filename_language_table;
2420 static int fl_table_size, fl_table_next;
2422 static void
2423 add_filename_language (char *ext, enum language lang)
2425 if (fl_table_next >= fl_table_size)
2427 fl_table_size += 10;
2428 filename_language_table =
2429 xrealloc (filename_language_table,
2430 fl_table_size * sizeof (*filename_language_table));
2433 filename_language_table[fl_table_next].ext = xstrdup (ext);
2434 filename_language_table[fl_table_next].lang = lang;
2435 fl_table_next++;
2438 static char *ext_args;
2439 static void
2440 show_ext_args (struct ui_file *file, int from_tty,
2441 struct cmd_list_element *c, const char *value)
2443 fprintf_filtered (file, _("\
2444 Mapping between filename extension and source language is \"%s\".\n"),
2445 value);
2448 static void
2449 set_ext_lang_command (char *args, int from_tty, struct cmd_list_element *e)
2451 int i;
2452 char *cp = ext_args;
2453 enum language lang;
2455 /* First arg is filename extension, starting with '.' */
2456 if (*cp != '.')
2457 error (_("'%s': Filename extension must begin with '.'"), ext_args);
2459 /* Find end of first arg. */
2460 while (*cp && !isspace (*cp))
2461 cp++;
2463 if (*cp == '\0')
2464 error (_("'%s': two arguments required -- filename extension and language"),
2465 ext_args);
2467 /* Null-terminate first arg */
2468 *cp++ = '\0';
2470 /* Find beginning of second arg, which should be a source language. */
2471 while (*cp && isspace (*cp))
2472 cp++;
2474 if (*cp == '\0')
2475 error (_("'%s': two arguments required -- filename extension and language"),
2476 ext_args);
2478 /* Lookup the language from among those we know. */
2479 lang = language_enum (cp);
2481 /* Now lookup the filename extension: do we already know it? */
2482 for (i = 0; i < fl_table_next; i++)
2483 if (0 == strcmp (ext_args, filename_language_table[i].ext))
2484 break;
2486 if (i >= fl_table_next)
2488 /* new file extension */
2489 add_filename_language (ext_args, lang);
2491 else
2493 /* redefining a previously known filename extension */
2495 /* if (from_tty) */
2496 /* query ("Really make files of type %s '%s'?", */
2497 /* ext_args, language_str (lang)); */
2499 xfree (filename_language_table[i].ext);
2500 filename_language_table[i].ext = xstrdup (ext_args);
2501 filename_language_table[i].lang = lang;
2505 static void
2506 info_ext_lang_command (char *args, int from_tty)
2508 int i;
2510 printf_filtered (_("Filename extensions and the languages they represent:"));
2511 printf_filtered ("\n\n");
2512 for (i = 0; i < fl_table_next; i++)
2513 printf_filtered ("\t%s\t- %s\n",
2514 filename_language_table[i].ext,
2515 language_str (filename_language_table[i].lang));
2518 static void
2519 init_filename_language_table (void)
2521 if (fl_table_size == 0) /* protect against repetition */
2523 fl_table_size = 20;
2524 fl_table_next = 0;
2525 filename_language_table =
2526 xmalloc (fl_table_size * sizeof (*filename_language_table));
2527 add_filename_language (".c", language_c);
2528 add_filename_language (".C", language_cplus);
2529 add_filename_language (".cc", language_cplus);
2530 add_filename_language (".cp", language_cplus);
2531 add_filename_language (".cpp", language_cplus);
2532 add_filename_language (".cxx", language_cplus);
2533 add_filename_language (".c++", language_cplus);
2534 add_filename_language (".java", language_java);
2535 add_filename_language (".class", language_java);
2536 add_filename_language (".m", language_objc);
2537 add_filename_language (".f", language_fortran);
2538 add_filename_language (".F", language_fortran);
2539 add_filename_language (".s", language_asm);
2540 add_filename_language (".sx", language_asm);
2541 add_filename_language (".S", language_asm);
2542 add_filename_language (".pas", language_pascal);
2543 add_filename_language (".p", language_pascal);
2544 add_filename_language (".pp", language_pascal);
2545 add_filename_language (".adb", language_ada);
2546 add_filename_language (".ads", language_ada);
2547 add_filename_language (".a", language_ada);
2548 add_filename_language (".ada", language_ada);
2552 enum language
2553 deduce_language_from_filename (char *filename)
2555 int i;
2556 char *cp;
2558 if (filename != NULL)
2559 if ((cp = strrchr (filename, '.')) != NULL)
2560 for (i = 0; i < fl_table_next; i++)
2561 if (strcmp (cp, filename_language_table[i].ext) == 0)
2562 return filename_language_table[i].lang;
2564 return language_unknown;
2567 /* allocate_symtab:
2569 Allocate and partly initialize a new symbol table. Return a pointer
2570 to it. error() if no space.
2572 Caller must set these fields:
2573 LINETABLE(symtab)
2574 symtab->blockvector
2575 symtab->dirname
2576 symtab->free_code
2577 symtab->free_ptr
2580 struct symtab *
2581 allocate_symtab (char *filename, struct objfile *objfile)
2583 struct symtab *symtab;
2585 symtab = (struct symtab *)
2586 obstack_alloc (&objfile->objfile_obstack, sizeof (struct symtab));
2587 memset (symtab, 0, sizeof (*symtab));
2588 symtab->filename = (char *) bcache (filename, strlen (filename) + 1,
2589 objfile->filename_cache);
2590 symtab->fullname = NULL;
2591 symtab->language = deduce_language_from_filename (filename);
2592 symtab->debugformat = "unknown";
2594 /* Hook it to the objfile it comes from */
2596 symtab->objfile = objfile;
2597 symtab->next = objfile->symtabs;
2598 objfile->symtabs = symtab;
2600 return (symtab);
2603 struct partial_symtab *
2604 allocate_psymtab (const char *filename, struct objfile *objfile)
2606 struct partial_symtab *psymtab;
2608 if (objfile->free_psymtabs)
2610 psymtab = objfile->free_psymtabs;
2611 objfile->free_psymtabs = psymtab->next;
2613 else
2614 psymtab = (struct partial_symtab *)
2615 obstack_alloc (&objfile->objfile_obstack,
2616 sizeof (struct partial_symtab));
2618 memset (psymtab, 0, sizeof (struct partial_symtab));
2619 psymtab->filename = (char *) bcache (filename, strlen (filename) + 1,
2620 objfile->filename_cache);
2621 psymtab->symtab = NULL;
2623 /* Prepend it to the psymtab list for the objfile it belongs to.
2624 Psymtabs are searched in most recent inserted -> least recent
2625 inserted order. */
2627 psymtab->objfile = objfile;
2628 psymtab->next = objfile->psymtabs;
2629 objfile->psymtabs = psymtab;
2630 #if 0
2632 struct partial_symtab **prev_pst;
2633 psymtab->objfile = objfile;
2634 psymtab->next = NULL;
2635 prev_pst = &(objfile->psymtabs);
2636 while ((*prev_pst) != NULL)
2637 prev_pst = &((*prev_pst)->next);
2638 (*prev_pst) = psymtab;
2640 #endif
2642 return (psymtab);
2645 void
2646 discard_psymtab (struct partial_symtab *pst)
2648 struct partial_symtab **prev_pst;
2650 /* From dbxread.c:
2651 Empty psymtabs happen as a result of header files which don't
2652 have any symbols in them. There can be a lot of them. But this
2653 check is wrong, in that a psymtab with N_SLINE entries but
2654 nothing else is not empty, but we don't realize that. Fixing
2655 that without slowing things down might be tricky. */
2657 /* First, snip it out of the psymtab chain */
2659 prev_pst = &(pst->objfile->psymtabs);
2660 while ((*prev_pst) != pst)
2661 prev_pst = &((*prev_pst)->next);
2662 (*prev_pst) = pst->next;
2664 /* Next, put it on a free list for recycling */
2666 pst->next = pst->objfile->free_psymtabs;
2667 pst->objfile->free_psymtabs = pst;
2671 /* Reset all data structures in gdb which may contain references to symbol
2672 table data. */
2674 void
2675 clear_symtab_users (void)
2677 /* Someday, we should do better than this, by only blowing away
2678 the things that really need to be blown. */
2680 /* Clear the "current" symtab first, because it is no longer valid.
2681 breakpoint_re_set may try to access the current symtab. */
2682 clear_current_source_symtab_and_line ();
2684 clear_displays ();
2685 breakpoint_re_set ();
2686 set_default_breakpoint (0, NULL, 0, 0, 0);
2687 clear_pc_function_cache ();
2688 observer_notify_new_objfile (NULL);
2690 /* Clear globals which might have pointed into a removed objfile.
2691 FIXME: It's not clear which of these are supposed to persist
2692 between expressions and which ought to be reset each time. */
2693 expression_context_block = NULL;
2694 innermost_block = NULL;
2696 /* Varobj may refer to old symbols, perform a cleanup. */
2697 varobj_invalidate ();
2701 static void
2702 clear_symtab_users_cleanup (void *ignore)
2704 clear_symtab_users ();
2707 /* Allocate and partially fill a partial symtab. It will be
2708 completely filled at the end of the symbol list.
2710 FILENAME is the name of the symbol-file we are reading from. */
2712 struct partial_symtab *
2713 start_psymtab_common (struct objfile *objfile,
2714 struct section_offsets *section_offsets,
2715 const char *filename,
2716 CORE_ADDR textlow, struct partial_symbol **global_syms,
2717 struct partial_symbol **static_syms)
2719 struct partial_symtab *psymtab;
2721 psymtab = allocate_psymtab (filename, objfile);
2722 psymtab->section_offsets = section_offsets;
2723 psymtab->textlow = textlow;
2724 psymtab->texthigh = psymtab->textlow; /* default */
2725 psymtab->globals_offset = global_syms - objfile->global_psymbols.list;
2726 psymtab->statics_offset = static_syms - objfile->static_psymbols.list;
2727 return (psymtab);
2730 /* Helper function, initialises partial symbol structure and stashes
2731 it into objfile's bcache. Note that our caching mechanism will
2732 use all fields of struct partial_symbol to determine hash value of the
2733 structure. In other words, having two symbols with the same name but
2734 different domain (or address) is possible and correct. */
2736 static const struct partial_symbol *
2737 add_psymbol_to_bcache (char *name, int namelength, int copy_name,
2738 domain_enum domain,
2739 enum address_class class,
2740 long val, /* Value as a long */
2741 CORE_ADDR coreaddr, /* Value as a CORE_ADDR */
2742 enum language language, struct objfile *objfile,
2743 int *added)
2745 /* psymbol is static so that there will be no uninitialized gaps in the
2746 structure which might contain random data, causing cache misses in
2747 bcache. */
2748 static struct partial_symbol psymbol;
2750 /* However, we must ensure that the entire 'value' field has been
2751 zeroed before assigning to it, because an assignment may not
2752 write the entire field. */
2753 memset (&psymbol.ginfo.value, 0, sizeof (psymbol.ginfo.value));
2754 /* val and coreaddr are mutually exclusive, one of them *will* be zero */
2755 if (val != 0)
2757 SYMBOL_VALUE (&psymbol) = val;
2759 else
2761 SYMBOL_VALUE_ADDRESS (&psymbol) = coreaddr;
2763 SYMBOL_SECTION (&psymbol) = 0;
2764 SYMBOL_LANGUAGE (&psymbol) = language;
2765 PSYMBOL_DOMAIN (&psymbol) = domain;
2766 PSYMBOL_CLASS (&psymbol) = class;
2768 SYMBOL_SET_NAMES (&psymbol, name, namelength, copy_name, objfile);
2770 /* Stash the partial symbol away in the cache */
2771 return bcache_full (&psymbol, sizeof (struct partial_symbol),
2772 objfile->psymbol_cache, added);
2775 /* Helper function, adds partial symbol to the given partial symbol
2776 list. */
2778 static void
2779 append_psymbol_to_list (struct psymbol_allocation_list *list,
2780 const struct partial_symbol *psym,
2781 struct objfile *objfile)
2783 if (list->next >= list->list + list->size)
2784 extend_psymbol_list (list, objfile);
2785 *list->next++ = (struct partial_symbol *) psym;
2786 OBJSTAT (objfile, n_psyms++);
2789 /* Add a symbol with a long value to a psymtab.
2790 Since one arg is a struct, we pass in a ptr and deref it (sigh).
2791 Return the partial symbol that has been added. */
2793 /* NOTE: carlton/2003-09-11: The reason why we return the partial
2794 symbol is so that callers can get access to the symbol's demangled
2795 name, which they don't have any cheap way to determine otherwise.
2796 (Currenly, dwarf2read.c is the only file who uses that information,
2797 though it's possible that other readers might in the future.)
2798 Elena wasn't thrilled about that, and I don't blame her, but we
2799 couldn't come up with a better way to get that information. If
2800 it's needed in other situations, we could consider breaking up
2801 SYMBOL_SET_NAMES to provide access to the demangled name lookup
2802 cache. */
2804 const struct partial_symbol *
2805 add_psymbol_to_list (char *name, int namelength, int copy_name,
2806 domain_enum domain,
2807 enum address_class class,
2808 struct psymbol_allocation_list *list,
2809 long val, /* Value as a long */
2810 CORE_ADDR coreaddr, /* Value as a CORE_ADDR */
2811 enum language language, struct objfile *objfile)
2813 const struct partial_symbol *psym;
2815 int added;
2817 /* Stash the partial symbol away in the cache */
2818 psym = add_psymbol_to_bcache (name, namelength, copy_name, domain, class,
2819 val, coreaddr, language, objfile, &added);
2821 /* Do not duplicate global partial symbols. */
2822 if (list == &objfile->global_psymbols
2823 && !added)
2824 return psym;
2826 /* Save pointer to partial symbol in psymtab, growing symtab if needed. */
2827 append_psymbol_to_list (list, psym, objfile);
2828 return psym;
2831 /* Initialize storage for partial symbols. */
2833 void
2834 init_psymbol_list (struct objfile *objfile, int total_symbols)
2836 /* Free any previously allocated psymbol lists. */
2838 if (objfile->global_psymbols.list)
2840 xfree (objfile->global_psymbols.list);
2842 if (objfile->static_psymbols.list)
2844 xfree (objfile->static_psymbols.list);
2847 /* Current best guess is that approximately a twentieth
2848 of the total symbols (in a debugging file) are global or static
2849 oriented symbols */
2851 objfile->global_psymbols.size = total_symbols / 10;
2852 objfile->static_psymbols.size = total_symbols / 10;
2854 if (objfile->global_psymbols.size > 0)
2856 objfile->global_psymbols.next =
2857 objfile->global_psymbols.list = (struct partial_symbol **)
2858 xmalloc ((objfile->global_psymbols.size
2859 * sizeof (struct partial_symbol *)));
2861 if (objfile->static_psymbols.size > 0)
2863 objfile->static_psymbols.next =
2864 objfile->static_psymbols.list = (struct partial_symbol **)
2865 xmalloc ((objfile->static_psymbols.size
2866 * sizeof (struct partial_symbol *)));
2870 /* OVERLAYS:
2871 The following code implements an abstraction for debugging overlay sections.
2873 The target model is as follows:
2874 1) The gnu linker will permit multiple sections to be mapped into the
2875 same VMA, each with its own unique LMA (or load address).
2876 2) It is assumed that some runtime mechanism exists for mapping the
2877 sections, one by one, from the load address into the VMA address.
2878 3) This code provides a mechanism for gdb to keep track of which
2879 sections should be considered to be mapped from the VMA to the LMA.
2880 This information is used for symbol lookup, and memory read/write.
2881 For instance, if a section has been mapped then its contents
2882 should be read from the VMA, otherwise from the LMA.
2884 Two levels of debugger support for overlays are available. One is
2885 "manual", in which the debugger relies on the user to tell it which
2886 overlays are currently mapped. This level of support is
2887 implemented entirely in the core debugger, and the information about
2888 whether a section is mapped is kept in the objfile->obj_section table.
2890 The second level of support is "automatic", and is only available if
2891 the target-specific code provides functionality to read the target's
2892 overlay mapping table, and translate its contents for the debugger
2893 (by updating the mapped state information in the obj_section tables).
2895 The interface is as follows:
2896 User commands:
2897 overlay map <name> -- tell gdb to consider this section mapped
2898 overlay unmap <name> -- tell gdb to consider this section unmapped
2899 overlay list -- list the sections that GDB thinks are mapped
2900 overlay read-target -- get the target's state of what's mapped
2901 overlay off/manual/auto -- set overlay debugging state
2902 Functional interface:
2903 find_pc_mapped_section(pc): if the pc is in the range of a mapped
2904 section, return that section.
2905 find_pc_overlay(pc): find any overlay section that contains
2906 the pc, either in its VMA or its LMA
2907 section_is_mapped(sect): true if overlay is marked as mapped
2908 section_is_overlay(sect): true if section's VMA != LMA
2909 pc_in_mapped_range(pc,sec): true if pc belongs to section's VMA
2910 pc_in_unmapped_range(...): true if pc belongs to section's LMA
2911 sections_overlap(sec1, sec2): true if mapped sec1 and sec2 ranges overlap
2912 overlay_mapped_address(...): map an address from section's LMA to VMA
2913 overlay_unmapped_address(...): map an address from section's VMA to LMA
2914 symbol_overlayed_address(...): Return a "current" address for symbol:
2915 either in VMA or LMA depending on whether
2916 the symbol's section is currently mapped
2919 /* Overlay debugging state: */
2921 enum overlay_debugging_state overlay_debugging = ovly_off;
2922 int overlay_cache_invalid = 0; /* True if need to refresh mapped state */
2924 /* Function: section_is_overlay (SECTION)
2925 Returns true if SECTION has VMA not equal to LMA, ie.
2926 SECTION is loaded at an address different from where it will "run". */
2929 section_is_overlay (struct obj_section *section)
2931 if (overlay_debugging && section)
2933 bfd *abfd = section->objfile->obfd;
2934 asection *bfd_section = section->the_bfd_section;
2936 if (bfd_section_lma (abfd, bfd_section) != 0
2937 && bfd_section_lma (abfd, bfd_section)
2938 != bfd_section_vma (abfd, bfd_section))
2939 return 1;
2942 return 0;
2945 /* Function: overlay_invalidate_all (void)
2946 Invalidate the mapped state of all overlay sections (mark it as stale). */
2948 static void
2949 overlay_invalidate_all (void)
2951 struct objfile *objfile;
2952 struct obj_section *sect;
2954 ALL_OBJSECTIONS (objfile, sect)
2955 if (section_is_overlay (sect))
2956 sect->ovly_mapped = -1;
2959 /* Function: section_is_mapped (SECTION)
2960 Returns true if section is an overlay, and is currently mapped.
2962 Access to the ovly_mapped flag is restricted to this function, so
2963 that we can do automatic update. If the global flag
2964 OVERLAY_CACHE_INVALID is set (by wait_for_inferior), then call
2965 overlay_invalidate_all. If the mapped state of the particular
2966 section is stale, then call TARGET_OVERLAY_UPDATE to refresh it. */
2969 section_is_mapped (struct obj_section *osect)
2971 struct gdbarch *gdbarch;
2973 if (osect == 0 || !section_is_overlay (osect))
2974 return 0;
2976 switch (overlay_debugging)
2978 default:
2979 case ovly_off:
2980 return 0; /* overlay debugging off */
2981 case ovly_auto: /* overlay debugging automatic */
2982 /* Unles there is a gdbarch_overlay_update function,
2983 there's really nothing useful to do here (can't really go auto) */
2984 gdbarch = get_objfile_arch (osect->objfile);
2985 if (gdbarch_overlay_update_p (gdbarch))
2987 if (overlay_cache_invalid)
2989 overlay_invalidate_all ();
2990 overlay_cache_invalid = 0;
2992 if (osect->ovly_mapped == -1)
2993 gdbarch_overlay_update (gdbarch, osect);
2995 /* fall thru to manual case */
2996 case ovly_on: /* overlay debugging manual */
2997 return osect->ovly_mapped == 1;
3001 /* Function: pc_in_unmapped_range
3002 If PC falls into the lma range of SECTION, return true, else false. */
3004 CORE_ADDR
3005 pc_in_unmapped_range (CORE_ADDR pc, struct obj_section *section)
3007 if (section_is_overlay (section))
3009 bfd *abfd = section->objfile->obfd;
3010 asection *bfd_section = section->the_bfd_section;
3012 /* We assume the LMA is relocated by the same offset as the VMA. */
3013 bfd_vma size = bfd_get_section_size (bfd_section);
3014 CORE_ADDR offset = obj_section_offset (section);
3016 if (bfd_get_section_lma (abfd, bfd_section) + offset <= pc
3017 && pc < bfd_get_section_lma (abfd, bfd_section) + offset + size)
3018 return 1;
3021 return 0;
3024 /* Function: pc_in_mapped_range
3025 If PC falls into the vma range of SECTION, return true, else false. */
3027 CORE_ADDR
3028 pc_in_mapped_range (CORE_ADDR pc, struct obj_section *section)
3030 if (section_is_overlay (section))
3032 if (obj_section_addr (section) <= pc
3033 && pc < obj_section_endaddr (section))
3034 return 1;
3037 return 0;
3041 /* Return true if the mapped ranges of sections A and B overlap, false
3042 otherwise. */
3043 static int
3044 sections_overlap (struct obj_section *a, struct obj_section *b)
3046 CORE_ADDR a_start = obj_section_addr (a);
3047 CORE_ADDR a_end = obj_section_endaddr (a);
3048 CORE_ADDR b_start = obj_section_addr (b);
3049 CORE_ADDR b_end = obj_section_endaddr (b);
3051 return (a_start < b_end && b_start < a_end);
3054 /* Function: overlay_unmapped_address (PC, SECTION)
3055 Returns the address corresponding to PC in the unmapped (load) range.
3056 May be the same as PC. */
3058 CORE_ADDR
3059 overlay_unmapped_address (CORE_ADDR pc, struct obj_section *section)
3061 if (section_is_overlay (section) && pc_in_mapped_range (pc, section))
3063 bfd *abfd = section->objfile->obfd;
3064 asection *bfd_section = section->the_bfd_section;
3066 return pc + bfd_section_lma (abfd, bfd_section)
3067 - bfd_section_vma (abfd, bfd_section);
3070 return pc;
3073 /* Function: overlay_mapped_address (PC, SECTION)
3074 Returns the address corresponding to PC in the mapped (runtime) range.
3075 May be the same as PC. */
3077 CORE_ADDR
3078 overlay_mapped_address (CORE_ADDR pc, struct obj_section *section)
3080 if (section_is_overlay (section) && pc_in_unmapped_range (pc, section))
3082 bfd *abfd = section->objfile->obfd;
3083 asection *bfd_section = section->the_bfd_section;
3085 return pc + bfd_section_vma (abfd, bfd_section)
3086 - bfd_section_lma (abfd, bfd_section);
3089 return pc;
3093 /* Function: symbol_overlayed_address
3094 Return one of two addresses (relative to the VMA or to the LMA),
3095 depending on whether the section is mapped or not. */
3097 CORE_ADDR
3098 symbol_overlayed_address (CORE_ADDR address, struct obj_section *section)
3100 if (overlay_debugging)
3102 /* If the symbol has no section, just return its regular address. */
3103 if (section == 0)
3104 return address;
3105 /* If the symbol's section is not an overlay, just return its address */
3106 if (!section_is_overlay (section))
3107 return address;
3108 /* If the symbol's section is mapped, just return its address */
3109 if (section_is_mapped (section))
3110 return address;
3112 * HOWEVER: if the symbol is in an overlay section which is NOT mapped,
3113 * then return its LOADED address rather than its vma address!!
3115 return overlay_unmapped_address (address, section);
3117 return address;
3120 /* Function: find_pc_overlay (PC)
3121 Return the best-match overlay section for PC:
3122 If PC matches a mapped overlay section's VMA, return that section.
3123 Else if PC matches an unmapped section's VMA, return that section.
3124 Else if PC matches an unmapped section's LMA, return that section. */
3126 struct obj_section *
3127 find_pc_overlay (CORE_ADDR pc)
3129 struct objfile *objfile;
3130 struct obj_section *osect, *best_match = NULL;
3132 if (overlay_debugging)
3133 ALL_OBJSECTIONS (objfile, osect)
3134 if (section_is_overlay (osect))
3136 if (pc_in_mapped_range (pc, osect))
3138 if (section_is_mapped (osect))
3139 return osect;
3140 else
3141 best_match = osect;
3143 else if (pc_in_unmapped_range (pc, osect))
3144 best_match = osect;
3146 return best_match;
3149 /* Function: find_pc_mapped_section (PC)
3150 If PC falls into the VMA address range of an overlay section that is
3151 currently marked as MAPPED, return that section. Else return NULL. */
3153 struct obj_section *
3154 find_pc_mapped_section (CORE_ADDR pc)
3156 struct objfile *objfile;
3157 struct obj_section *osect;
3159 if (overlay_debugging)
3160 ALL_OBJSECTIONS (objfile, osect)
3161 if (pc_in_mapped_range (pc, osect) && section_is_mapped (osect))
3162 return osect;
3164 return NULL;
3167 /* Function: list_overlays_command
3168 Print a list of mapped sections and their PC ranges */
3170 void
3171 list_overlays_command (char *args, int from_tty)
3173 int nmapped = 0;
3174 struct objfile *objfile;
3175 struct obj_section *osect;
3177 if (overlay_debugging)
3178 ALL_OBJSECTIONS (objfile, osect)
3179 if (section_is_mapped (osect))
3181 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3182 const char *name;
3183 bfd_vma lma, vma;
3184 int size;
3186 vma = bfd_section_vma (objfile->obfd, osect->the_bfd_section);
3187 lma = bfd_section_lma (objfile->obfd, osect->the_bfd_section);
3188 size = bfd_get_section_size (osect->the_bfd_section);
3189 name = bfd_section_name (objfile->obfd, osect->the_bfd_section);
3191 printf_filtered ("Section %s, loaded at ", name);
3192 fputs_filtered (paddress (gdbarch, lma), gdb_stdout);
3193 puts_filtered (" - ");
3194 fputs_filtered (paddress (gdbarch, lma + size), gdb_stdout);
3195 printf_filtered (", mapped at ");
3196 fputs_filtered (paddress (gdbarch, vma), gdb_stdout);
3197 puts_filtered (" - ");
3198 fputs_filtered (paddress (gdbarch, vma + size), gdb_stdout);
3199 puts_filtered ("\n");
3201 nmapped++;
3203 if (nmapped == 0)
3204 printf_filtered (_("No sections are mapped.\n"));
3207 /* Function: map_overlay_command
3208 Mark the named section as mapped (ie. residing at its VMA address). */
3210 void
3211 map_overlay_command (char *args, int from_tty)
3213 struct objfile *objfile, *objfile2;
3214 struct obj_section *sec, *sec2;
3216 if (!overlay_debugging)
3217 error (_("\
3218 Overlay debugging not enabled. Use either the 'overlay auto' or\n\
3219 the 'overlay manual' command."));
3221 if (args == 0 || *args == 0)
3222 error (_("Argument required: name of an overlay section"));
3224 /* First, find a section matching the user supplied argument */
3225 ALL_OBJSECTIONS (objfile, sec)
3226 if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3228 /* Now, check to see if the section is an overlay. */
3229 if (!section_is_overlay (sec))
3230 continue; /* not an overlay section */
3232 /* Mark the overlay as "mapped" */
3233 sec->ovly_mapped = 1;
3235 /* Next, make a pass and unmap any sections that are
3236 overlapped by this new section: */
3237 ALL_OBJSECTIONS (objfile2, sec2)
3238 if (sec2->ovly_mapped && sec != sec2 && sections_overlap (sec, sec2))
3240 if (info_verbose)
3241 printf_unfiltered (_("Note: section %s unmapped by overlap\n"),
3242 bfd_section_name (objfile->obfd,
3243 sec2->the_bfd_section));
3244 sec2->ovly_mapped = 0; /* sec2 overlaps sec: unmap sec2 */
3246 return;
3248 error (_("No overlay section called %s"), args);
3251 /* Function: unmap_overlay_command
3252 Mark the overlay section as unmapped
3253 (ie. resident in its LMA address range, rather than the VMA range). */
3255 void
3256 unmap_overlay_command (char *args, int from_tty)
3258 struct objfile *objfile;
3259 struct obj_section *sec;
3261 if (!overlay_debugging)
3262 error (_("\
3263 Overlay debugging not enabled. Use either the 'overlay auto' or\n\
3264 the 'overlay manual' command."));
3266 if (args == 0 || *args == 0)
3267 error (_("Argument required: name of an overlay section"));
3269 /* First, find a section matching the user supplied argument */
3270 ALL_OBJSECTIONS (objfile, sec)
3271 if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3273 if (!sec->ovly_mapped)
3274 error (_("Section %s is not mapped"), args);
3275 sec->ovly_mapped = 0;
3276 return;
3278 error (_("No overlay section called %s"), args);
3281 /* Function: overlay_auto_command
3282 A utility command to turn on overlay debugging.
3283 Possibly this should be done via a set/show command. */
3285 static void
3286 overlay_auto_command (char *args, int from_tty)
3288 overlay_debugging = ovly_auto;
3289 enable_overlay_breakpoints ();
3290 if (info_verbose)
3291 printf_unfiltered (_("Automatic overlay debugging enabled."));
3294 /* Function: overlay_manual_command
3295 A utility command to turn on overlay debugging.
3296 Possibly this should be done via a set/show command. */
3298 static void
3299 overlay_manual_command (char *args, int from_tty)
3301 overlay_debugging = ovly_on;
3302 disable_overlay_breakpoints ();
3303 if (info_verbose)
3304 printf_unfiltered (_("Overlay debugging enabled."));
3307 /* Function: overlay_off_command
3308 A utility command to turn on overlay debugging.
3309 Possibly this should be done via a set/show command. */
3311 static void
3312 overlay_off_command (char *args, int from_tty)
3314 overlay_debugging = ovly_off;
3315 disable_overlay_breakpoints ();
3316 if (info_verbose)
3317 printf_unfiltered (_("Overlay debugging disabled."));
3320 static void
3321 overlay_load_command (char *args, int from_tty)
3323 struct gdbarch *gdbarch = get_current_arch ();
3325 if (gdbarch_overlay_update_p (gdbarch))
3326 gdbarch_overlay_update (gdbarch, NULL);
3327 else
3328 error (_("This target does not know how to read its overlay state."));
3331 /* Function: overlay_command
3332 A place-holder for a mis-typed command */
3334 /* Command list chain containing all defined "overlay" subcommands. */
3335 struct cmd_list_element *overlaylist;
3337 static void
3338 overlay_command (char *args, int from_tty)
3340 printf_unfiltered
3341 ("\"overlay\" must be followed by the name of an overlay command.\n");
3342 help_list (overlaylist, "overlay ", -1, gdb_stdout);
3346 /* Target Overlays for the "Simplest" overlay manager:
3348 This is GDB's default target overlay layer. It works with the
3349 minimal overlay manager supplied as an example by Cygnus. The
3350 entry point is via a function pointer "gdbarch_overlay_update",
3351 so targets that use a different runtime overlay manager can
3352 substitute their own overlay_update function and take over the
3353 function pointer.
3355 The overlay_update function pokes around in the target's data structures
3356 to see what overlays are mapped, and updates GDB's overlay mapping with
3357 this information.
3359 In this simple implementation, the target data structures are as follows:
3360 unsigned _novlys; /# number of overlay sections #/
3361 unsigned _ovly_table[_novlys][4] = {
3362 {VMA, SIZE, LMA, MAPPED}, /# one entry per overlay section #/
3363 {..., ..., ..., ...},
3365 unsigned _novly_regions; /# number of overlay regions #/
3366 unsigned _ovly_region_table[_novly_regions][3] = {
3367 {VMA, SIZE, MAPPED_TO_LMA}, /# one entry per overlay region #/
3368 {..., ..., ...},
3370 These functions will attempt to update GDB's mappedness state in the
3371 symbol section table, based on the target's mappedness state.
3373 To do this, we keep a cached copy of the target's _ovly_table, and
3374 attempt to detect when the cached copy is invalidated. The main
3375 entry point is "simple_overlay_update(SECT), which looks up SECT in
3376 the cached table and re-reads only the entry for that section from
3377 the target (whenever possible).
3380 /* Cached, dynamically allocated copies of the target data structures: */
3381 static unsigned (*cache_ovly_table)[4] = 0;
3382 #if 0
3383 static unsigned (*cache_ovly_region_table)[3] = 0;
3384 #endif
3385 static unsigned cache_novlys = 0;
3386 #if 0
3387 static unsigned cache_novly_regions = 0;
3388 #endif
3389 static CORE_ADDR cache_ovly_table_base = 0;
3390 #if 0
3391 static CORE_ADDR cache_ovly_region_table_base = 0;
3392 #endif
3393 enum ovly_index
3395 VMA, SIZE, LMA, MAPPED
3398 /* Throw away the cached copy of _ovly_table */
3399 static void
3400 simple_free_overlay_table (void)
3402 if (cache_ovly_table)
3403 xfree (cache_ovly_table);
3404 cache_novlys = 0;
3405 cache_ovly_table = NULL;
3406 cache_ovly_table_base = 0;
3409 #if 0
3410 /* Throw away the cached copy of _ovly_region_table */
3411 static void
3412 simple_free_overlay_region_table (void)
3414 if (cache_ovly_region_table)
3415 xfree (cache_ovly_region_table);
3416 cache_novly_regions = 0;
3417 cache_ovly_region_table = NULL;
3418 cache_ovly_region_table_base = 0;
3420 #endif
3422 /* Read an array of ints of size SIZE from the target into a local buffer.
3423 Convert to host order. int LEN is number of ints */
3424 static void
3425 read_target_long_array (CORE_ADDR memaddr, unsigned int *myaddr,
3426 int len, int size, enum bfd_endian byte_order)
3428 /* FIXME (alloca): Not safe if array is very large. */
3429 gdb_byte *buf = alloca (len * size);
3430 int i;
3432 read_memory (memaddr, buf, len * size);
3433 for (i = 0; i < len; i++)
3434 myaddr[i] = extract_unsigned_integer (size * i + buf, size, byte_order);
3437 /* Find and grab a copy of the target _ovly_table
3438 (and _novlys, which is needed for the table's size) */
3439 static int
3440 simple_read_overlay_table (void)
3442 struct minimal_symbol *novlys_msym, *ovly_table_msym;
3443 struct gdbarch *gdbarch;
3444 int word_size;
3445 enum bfd_endian byte_order;
3447 simple_free_overlay_table ();
3448 novlys_msym = lookup_minimal_symbol ("_novlys", NULL, NULL);
3449 if (! novlys_msym)
3451 error (_("Error reading inferior's overlay table: "
3452 "couldn't find `_novlys' variable\n"
3453 "in inferior. Use `overlay manual' mode."));
3454 return 0;
3457 ovly_table_msym = lookup_minimal_symbol ("_ovly_table", NULL, NULL);
3458 if (! ovly_table_msym)
3460 error (_("Error reading inferior's overlay table: couldn't find "
3461 "`_ovly_table' array\n"
3462 "in inferior. Use `overlay manual' mode."));
3463 return 0;
3466 gdbarch = get_objfile_arch (msymbol_objfile (ovly_table_msym));
3467 word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3468 byte_order = gdbarch_byte_order (gdbarch);
3470 cache_novlys = read_memory_integer (SYMBOL_VALUE_ADDRESS (novlys_msym),
3471 4, byte_order);
3472 cache_ovly_table
3473 = (void *) xmalloc (cache_novlys * sizeof (*cache_ovly_table));
3474 cache_ovly_table_base = SYMBOL_VALUE_ADDRESS (ovly_table_msym);
3475 read_target_long_array (cache_ovly_table_base,
3476 (unsigned int *) cache_ovly_table,
3477 cache_novlys * 4, word_size, byte_order);
3479 return 1; /* SUCCESS */
3482 #if 0
3483 /* Find and grab a copy of the target _ovly_region_table
3484 (and _novly_regions, which is needed for the table's size) */
3485 static int
3486 simple_read_overlay_region_table (void)
3488 struct minimal_symbol *msym;
3489 struct gdbarch *gdbarch;
3490 int word_size;
3491 enum bfd_endian byte_order;
3493 simple_free_overlay_region_table ();
3494 msym = lookup_minimal_symbol ("_novly_regions", NULL, NULL);
3495 if (msym == NULL)
3496 return 0; /* failure */
3498 gdbarch = get_objfile_arch (msymbol_objfile (msym));
3499 word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3500 byte_order = gdbarch_byte_order (gdbarch);
3502 cache_novly_regions = read_memory_integer (SYMBOL_VALUE_ADDRESS (msym),
3503 4, byte_order);
3505 cache_ovly_region_table = (void *) xmalloc (cache_novly_regions * 12);
3506 if (cache_ovly_region_table != NULL)
3508 msym = lookup_minimal_symbol ("_ovly_region_table", NULL, NULL);
3509 if (msym != NULL)
3511 cache_ovly_region_table_base = SYMBOL_VALUE_ADDRESS (msym);
3512 read_target_long_array (cache_ovly_region_table_base,
3513 (unsigned int *) cache_ovly_region_table,
3514 cache_novly_regions * 3,
3515 word_size, byte_order);
3517 else
3518 return 0; /* failure */
3520 else
3521 return 0; /* failure */
3522 return 1; /* SUCCESS */
3524 #endif
3526 /* Function: simple_overlay_update_1
3527 A helper function for simple_overlay_update. Assuming a cached copy
3528 of _ovly_table exists, look through it to find an entry whose vma,
3529 lma and size match those of OSECT. Re-read the entry and make sure
3530 it still matches OSECT (else the table may no longer be valid).
3531 Set OSECT's mapped state to match the entry. Return: 1 for
3532 success, 0 for failure. */
3534 static int
3535 simple_overlay_update_1 (struct obj_section *osect)
3537 int i, size;
3538 bfd *obfd = osect->objfile->obfd;
3539 asection *bsect = osect->the_bfd_section;
3540 struct gdbarch *gdbarch = get_objfile_arch (osect->objfile);
3541 int word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3542 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
3544 size = bfd_get_section_size (osect->the_bfd_section);
3545 for (i = 0; i < cache_novlys; i++)
3546 if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3547 && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
3548 /* && cache_ovly_table[i][SIZE] == size */ )
3550 read_target_long_array (cache_ovly_table_base + i * word_size,
3551 (unsigned int *) cache_ovly_table[i],
3552 4, word_size, byte_order);
3553 if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3554 && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
3555 /* && cache_ovly_table[i][SIZE] == size */ )
3557 osect->ovly_mapped = cache_ovly_table[i][MAPPED];
3558 return 1;
3560 else /* Warning! Warning! Target's ovly table has changed! */
3561 return 0;
3563 return 0;
3566 /* Function: simple_overlay_update
3567 If OSECT is NULL, then update all sections' mapped state
3568 (after re-reading the entire target _ovly_table).
3569 If OSECT is non-NULL, then try to find a matching entry in the
3570 cached ovly_table and update only OSECT's mapped state.
3571 If a cached entry can't be found or the cache isn't valid, then
3572 re-read the entire cache, and go ahead and update all sections. */
3574 void
3575 simple_overlay_update (struct obj_section *osect)
3577 struct objfile *objfile;
3579 /* Were we given an osect to look up? NULL means do all of them. */
3580 if (osect)
3581 /* Have we got a cached copy of the target's overlay table? */
3582 if (cache_ovly_table != NULL)
3583 /* Does its cached location match what's currently in the symtab? */
3584 if (cache_ovly_table_base ==
3585 SYMBOL_VALUE_ADDRESS (lookup_minimal_symbol ("_ovly_table", NULL, NULL)))
3586 /* Then go ahead and try to look up this single section in the cache */
3587 if (simple_overlay_update_1 (osect))
3588 /* Found it! We're done. */
3589 return;
3591 /* Cached table no good: need to read the entire table anew.
3592 Or else we want all the sections, in which case it's actually
3593 more efficient to read the whole table in one block anyway. */
3595 if (! simple_read_overlay_table ())
3596 return;
3598 /* Now may as well update all sections, even if only one was requested. */
3599 ALL_OBJSECTIONS (objfile, osect)
3600 if (section_is_overlay (osect))
3602 int i, size;
3603 bfd *obfd = osect->objfile->obfd;
3604 asection *bsect = osect->the_bfd_section;
3606 size = bfd_get_section_size (bsect);
3607 for (i = 0; i < cache_novlys; i++)
3608 if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3609 && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
3610 /* && cache_ovly_table[i][SIZE] == size */ )
3611 { /* obj_section matches i'th entry in ovly_table */
3612 osect->ovly_mapped = cache_ovly_table[i][MAPPED];
3613 break; /* finished with inner for loop: break out */
3618 /* Set the output sections and output offsets for section SECTP in
3619 ABFD. The relocation code in BFD will read these offsets, so we
3620 need to be sure they're initialized. We map each section to itself,
3621 with no offset; this means that SECTP->vma will be honored. */
3623 static void
3624 symfile_dummy_outputs (bfd *abfd, asection *sectp, void *dummy)
3626 sectp->output_section = sectp;
3627 sectp->output_offset = 0;
3630 /* Default implementation for sym_relocate. */
3633 bfd_byte *
3634 default_symfile_relocate (struct objfile *objfile, asection *sectp,
3635 bfd_byte *buf)
3637 bfd *abfd = objfile->obfd;
3639 /* We're only interested in sections with relocation
3640 information. */
3641 if ((sectp->flags & SEC_RELOC) == 0)
3642 return NULL;
3644 /* We will handle section offsets properly elsewhere, so relocate as if
3645 all sections begin at 0. */
3646 bfd_map_over_sections (abfd, symfile_dummy_outputs, NULL);
3648 return bfd_simple_get_relocated_section_contents (abfd, sectp, buf, NULL);
3651 /* Relocate the contents of a debug section SECTP in ABFD. The
3652 contents are stored in BUF if it is non-NULL, or returned in a
3653 malloc'd buffer otherwise.
3655 For some platforms and debug info formats, shared libraries contain
3656 relocations against the debug sections (particularly for DWARF-2;
3657 one affected platform is PowerPC GNU/Linux, although it depends on
3658 the version of the linker in use). Also, ELF object files naturally
3659 have unresolved relocations for their debug sections. We need to apply
3660 the relocations in order to get the locations of symbols correct.
3661 Another example that may require relocation processing, is the
3662 DWARF-2 .eh_frame section in .o files, although it isn't strictly a
3663 debug section. */
3665 bfd_byte *
3666 symfile_relocate_debug_section (struct objfile *objfile,
3667 asection *sectp, bfd_byte *buf)
3669 gdb_assert (objfile->sf->sym_relocate);
3671 return (*objfile->sf->sym_relocate) (objfile, sectp, buf);
3674 struct symfile_segment_data *
3675 get_symfile_segment_data (bfd *abfd)
3677 struct sym_fns *sf = find_sym_fns (abfd);
3679 if (sf == NULL)
3680 return NULL;
3682 return sf->sym_segments (abfd);
3685 void
3686 free_symfile_segment_data (struct symfile_segment_data *data)
3688 xfree (data->segment_bases);
3689 xfree (data->segment_sizes);
3690 xfree (data->segment_info);
3691 xfree (data);
3695 /* Given:
3696 - DATA, containing segment addresses from the object file ABFD, and
3697 the mapping from ABFD's sections onto the segments that own them,
3699 - SEGMENT_BASES[0 .. NUM_SEGMENT_BASES - 1], holding the actual
3700 segment addresses reported by the target,
3701 store the appropriate offsets for each section in OFFSETS.
3703 If there are fewer entries in SEGMENT_BASES than there are segments
3704 in DATA, then apply SEGMENT_BASES' last entry to all the segments.
3706 If there are more entries, then ignore the extra. The target may
3707 not be able to distinguish between an empty data segment and a
3708 missing data segment; a missing text segment is less plausible. */
3710 symfile_map_offsets_to_segments (bfd *abfd, struct symfile_segment_data *data,
3711 struct section_offsets *offsets,
3712 int num_segment_bases,
3713 const CORE_ADDR *segment_bases)
3715 int i;
3716 asection *sect;
3718 /* It doesn't make sense to call this function unless you have some
3719 segment base addresses. */
3720 gdb_assert (segment_bases > 0);
3722 /* If we do not have segment mappings for the object file, we
3723 can not relocate it by segments. */
3724 gdb_assert (data != NULL);
3725 gdb_assert (data->num_segments > 0);
3727 for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
3729 int which = data->segment_info[i];
3731 gdb_assert (0 <= which && which <= data->num_segments);
3733 /* Don't bother computing offsets for sections that aren't
3734 loaded as part of any segment. */
3735 if (! which)
3736 continue;
3738 /* Use the last SEGMENT_BASES entry as the address of any extra
3739 segments mentioned in DATA->segment_info. */
3740 if (which > num_segment_bases)
3741 which = num_segment_bases;
3743 offsets->offsets[i] = (segment_bases[which - 1]
3744 - data->segment_bases[which - 1]);
3747 return 1;
3750 static void
3751 symfile_find_segment_sections (struct objfile *objfile)
3753 bfd *abfd = objfile->obfd;
3754 int i;
3755 asection *sect;
3756 struct symfile_segment_data *data;
3758 data = get_symfile_segment_data (objfile->obfd);
3759 if (data == NULL)
3760 return;
3762 if (data->num_segments != 1 && data->num_segments != 2)
3764 free_symfile_segment_data (data);
3765 return;
3768 for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
3770 CORE_ADDR vma;
3771 int which = data->segment_info[i];
3773 if (which == 1)
3775 if (objfile->sect_index_text == -1)
3776 objfile->sect_index_text = sect->index;
3778 if (objfile->sect_index_rodata == -1)
3779 objfile->sect_index_rodata = sect->index;
3781 else if (which == 2)
3783 if (objfile->sect_index_data == -1)
3784 objfile->sect_index_data = sect->index;
3786 if (objfile->sect_index_bss == -1)
3787 objfile->sect_index_bss = sect->index;
3791 free_symfile_segment_data (data);
3794 void
3795 _initialize_symfile (void)
3797 struct cmd_list_element *c;
3799 c = add_cmd ("symbol-file", class_files, symbol_file_command, _("\
3800 Load symbol table from executable file FILE.\n\
3801 The `file' command can also load symbol tables, as well as setting the file\n\
3802 to execute."), &cmdlist);
3803 set_cmd_completer (c, filename_completer);
3805 c = add_cmd ("add-symbol-file", class_files, add_symbol_file_command, _("\
3806 Load symbols from FILE, assuming FILE has been dynamically loaded.\n\
3807 Usage: add-symbol-file FILE ADDR [-s <SECT> <SECT_ADDR> -s <SECT> <SECT_ADDR> ...]\n\
3808 ADDR is the starting address of the file's text.\n\
3809 The optional arguments are section-name section-address pairs and\n\
3810 should be specified if the data and bss segments are not contiguous\n\
3811 with the text. SECT is a section name to be loaded at SECT_ADDR."),
3812 &cmdlist);
3813 set_cmd_completer (c, filename_completer);
3815 c = add_cmd ("load", class_files, load_command, _("\
3816 Dynamically load FILE into the running program, and record its symbols\n\
3817 for access from GDB.\n\
3818 A load OFFSET may also be given."), &cmdlist);
3819 set_cmd_completer (c, filename_completer);
3821 add_setshow_boolean_cmd ("symbol-reloading", class_support,
3822 &symbol_reloading, _("\
3823 Set dynamic symbol table reloading multiple times in one run."), _("\
3824 Show dynamic symbol table reloading multiple times in one run."), NULL,
3825 NULL,
3826 show_symbol_reloading,
3827 &setlist, &showlist);
3829 add_prefix_cmd ("overlay", class_support, overlay_command,
3830 _("Commands for debugging overlays."), &overlaylist,
3831 "overlay ", 0, &cmdlist);
3833 add_com_alias ("ovly", "overlay", class_alias, 1);
3834 add_com_alias ("ov", "overlay", class_alias, 1);
3836 add_cmd ("map-overlay", class_support, map_overlay_command,
3837 _("Assert that an overlay section is mapped."), &overlaylist);
3839 add_cmd ("unmap-overlay", class_support, unmap_overlay_command,
3840 _("Assert that an overlay section is unmapped."), &overlaylist);
3842 add_cmd ("list-overlays", class_support, list_overlays_command,
3843 _("List mappings of overlay sections."), &overlaylist);
3845 add_cmd ("manual", class_support, overlay_manual_command,
3846 _("Enable overlay debugging."), &overlaylist);
3847 add_cmd ("off", class_support, overlay_off_command,
3848 _("Disable overlay debugging."), &overlaylist);
3849 add_cmd ("auto", class_support, overlay_auto_command,
3850 _("Enable automatic overlay debugging."), &overlaylist);
3851 add_cmd ("load-target", class_support, overlay_load_command,
3852 _("Read the overlay mapping state from the target."), &overlaylist);
3854 /* Filename extension to source language lookup table: */
3855 init_filename_language_table ();
3856 add_setshow_string_noescape_cmd ("extension-language", class_files,
3857 &ext_args, _("\
3858 Set mapping between filename extension and source language."), _("\
3859 Show mapping between filename extension and source language."), _("\
3860 Usage: set extension-language .foo bar"),
3861 set_ext_lang_command,
3862 show_ext_args,
3863 &setlist, &showlist);
3865 add_info ("extensions", info_ext_lang_command,
3866 _("All filename extensions associated with a source language."));
3868 add_setshow_optional_filename_cmd ("debug-file-directory", class_support,
3869 &debug_file_directory, _("\
3870 Set the directories where separate debug symbols are searched for."), _("\
3871 Show the directories where separate debug symbols are searched for."), _("\
3872 Separate debug symbols are first searched for in the same\n\
3873 directory as the binary, then in the `" DEBUG_SUBDIRECTORY "' subdirectory,\n\
3874 and lastly at the path of the directory of the binary with\n\
3875 each global debug-file-directory component prepended."),
3876 NULL,
3877 show_debug_file_directory,
3878 &setlist, &showlist);