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