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