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