Simplify per-BFD storage management
[deliverable/binutils-gdb.git] / gdb / objfiles.c
1 /* GDB routines for manipulating objfiles.
2
3 Copyright (C) 1992-2019 Free Software Foundation, Inc.
4
5 Contributed by Cygnus Support, using pieces from other GDB modules.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21
22 /* This file contains support routines for creating, manipulating, and
23 destroying objfile structures. */
24
25 #include "defs.h"
26 #include "bfd.h" /* Binary File Description */
27 #include "symtab.h"
28 #include "symfile.h"
29 #include "objfiles.h"
30 #include "gdb-stabs.h"
31 #include "target.h"
32 #include "bcache.h"
33 #include "expression.h"
34 #include "parser-defs.h"
35
36 #include <sys/types.h>
37 #include <sys/stat.h>
38 #include <fcntl.h>
39 #include "gdb_obstack.h"
40 #include "hashtab.h"
41
42 #include "breakpoint.h"
43 #include "block.h"
44 #include "dictionary.h"
45 #include "source.h"
46 #include "addrmap.h"
47 #include "arch-utils.h"
48 #include "exec.h"
49 #include "observable.h"
50 #include "complaints.h"
51 #include "psymtab.h"
52 #include "solist.h"
53 #include "gdb_bfd.h"
54 #include "btrace.h"
55 #include "common/pathstuff.h"
56
57 #include <vector>
58
59 /* Keep a registry of per-objfile data-pointers required by other GDB
60 modules. */
61
62 DEFINE_REGISTRY (objfile, REGISTRY_ACCESS_FIELD)
63
64 /* Externally visible variables that are owned by this module.
65 See declarations in objfile.h for more info. */
66
67 struct objfile_pspace_info
68 {
69 struct obj_section **sections;
70 int num_sections;
71
72 /* Nonzero if object files have been added since the section map
73 was last updated. */
74 int new_objfiles_available;
75
76 /* Nonzero if the section map MUST be updated before use. */
77 int section_map_dirty;
78
79 /* Nonzero if section map updates should be inhibited if possible. */
80 int inhibit_updates;
81 };
82
83 /* Per-program-space data key. */
84 static const struct program_space_data *objfiles_pspace_data;
85
86 static void
87 objfiles_pspace_data_cleanup (struct program_space *pspace, void *arg)
88 {
89 struct objfile_pspace_info *info = (struct objfile_pspace_info *) arg;
90
91 xfree (info->sections);
92 xfree (info);
93 }
94
95 /* Get the current svr4 data. If none is found yet, add it now. This
96 function always returns a valid object. */
97
98 static struct objfile_pspace_info *
99 get_objfile_pspace_data (struct program_space *pspace)
100 {
101 struct objfile_pspace_info *info;
102
103 info = ((struct objfile_pspace_info *)
104 program_space_data (pspace, objfiles_pspace_data));
105 if (info == NULL)
106 {
107 info = XCNEW (struct objfile_pspace_info);
108 set_program_space_data (pspace, objfiles_pspace_data, info);
109 }
110
111 return info;
112 }
113
114 \f
115
116 /* Per-BFD data key. */
117
118 static const struct bfd_data *objfiles_bfd_data;
119
120 objfile_per_bfd_storage::~objfile_per_bfd_storage ()
121 {
122 if (demangled_names_hash)
123 htab_delete (demangled_names_hash);
124 }
125
126 /* Create the per-BFD storage object for OBJFILE. If ABFD is not
127 NULL, and it already has a per-BFD storage object, use that.
128 Otherwise, allocate a new per-BFD storage object. Note that it is
129 not safe to call this multiple times for a given OBJFILE -- it can
130 only be called when allocating or re-initializing OBJFILE. */
131
132 static struct objfile_per_bfd_storage *
133 get_objfile_bfd_data (struct objfile *objfile, struct bfd *abfd)
134 {
135 struct objfile_per_bfd_storage *storage = NULL;
136
137 if (abfd != NULL)
138 storage = ((struct objfile_per_bfd_storage *)
139 bfd_data (abfd, objfiles_bfd_data));
140
141 if (storage == NULL)
142 {
143 storage = new objfile_per_bfd_storage;
144 /* If the object requires gdb to do relocations, we simply fall
145 back to not sharing data across users. These cases are rare
146 enough that this seems reasonable. */
147 if (abfd != NULL && !gdb_bfd_requires_relocations (abfd))
148 set_bfd_data (abfd, objfiles_bfd_data, storage);
149
150 /* Look up the gdbarch associated with the BFD. */
151 if (abfd != NULL)
152 storage->gdbarch = gdbarch_from_bfd (abfd);
153 }
154
155 return storage;
156 }
157
158 /* A deleter for objfile_per_bfd_storage that can be passed as a
159 cleanup function to the BFD registry. */
160
161 static void
162 objfile_bfd_data_free (struct bfd *unused, void *d)
163 {
164 delete (struct objfile_per_bfd_storage *) d;
165 }
166
167 /* See objfiles.h. */
168
169 void
170 set_objfile_per_bfd (struct objfile *objfile)
171 {
172 objfile->per_bfd = get_objfile_bfd_data (objfile, objfile->obfd);
173 }
174
175 /* Set the objfile's per-BFD notion of the "main" name and
176 language. */
177
178 void
179 set_objfile_main_name (struct objfile *objfile,
180 const char *name, enum language lang)
181 {
182 if (objfile->per_bfd->name_of_main == NULL
183 || strcmp (objfile->per_bfd->name_of_main, name) != 0)
184 objfile->per_bfd->name_of_main
185 = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack, name,
186 strlen (name));
187 objfile->per_bfd->language_of_main = lang;
188 }
189
190 /* Helper structure to map blocks to static link properties in hash tables. */
191
192 struct static_link_htab_entry
193 {
194 const struct block *block;
195 const struct dynamic_prop *static_link;
196 };
197
198 /* Return a hash code for struct static_link_htab_entry *P. */
199
200 static hashval_t
201 static_link_htab_entry_hash (const void *p)
202 {
203 const struct static_link_htab_entry *e
204 = (const struct static_link_htab_entry *) p;
205
206 return htab_hash_pointer (e->block);
207 }
208
209 /* Return whether P1 an P2 (pointers to struct static_link_htab_entry) are
210 mappings for the same block. */
211
212 static int
213 static_link_htab_entry_eq (const void *p1, const void *p2)
214 {
215 const struct static_link_htab_entry *e1
216 = (const struct static_link_htab_entry *) p1;
217 const struct static_link_htab_entry *e2
218 = (const struct static_link_htab_entry *) p2;
219
220 return e1->block == e2->block;
221 }
222
223 /* Register STATIC_LINK as the static link for BLOCK, which is part of OBJFILE.
224 Must not be called more than once for each BLOCK. */
225
226 void
227 objfile_register_static_link (struct objfile *objfile,
228 const struct block *block,
229 const struct dynamic_prop *static_link)
230 {
231 void **slot;
232 struct static_link_htab_entry lookup_entry;
233 struct static_link_htab_entry *entry;
234
235 if (objfile->static_links == NULL)
236 objfile->static_links = htab_create_alloc
237 (1, &static_link_htab_entry_hash, static_link_htab_entry_eq, NULL,
238 xcalloc, xfree);
239
240 /* Create a slot for the mapping, make sure it's the first mapping for this
241 block and then create the mapping itself. */
242 lookup_entry.block = block;
243 slot = htab_find_slot (objfile->static_links, &lookup_entry, INSERT);
244 gdb_assert (*slot == NULL);
245
246 entry = XOBNEW (&objfile->objfile_obstack, static_link_htab_entry);
247 entry->block = block;
248 entry->static_link = static_link;
249 *slot = (void *) entry;
250 }
251
252 /* Look for a static link for BLOCK, which is part of OBJFILE. Return NULL if
253 none was found. */
254
255 const struct dynamic_prop *
256 objfile_lookup_static_link (struct objfile *objfile,
257 const struct block *block)
258 {
259 struct static_link_htab_entry *entry;
260 struct static_link_htab_entry lookup_entry;
261
262 if (objfile->static_links == NULL)
263 return NULL;
264 lookup_entry.block = block;
265 entry
266 = (struct static_link_htab_entry *) htab_find (objfile->static_links,
267 &lookup_entry);
268 if (entry == NULL)
269 return NULL;
270
271 gdb_assert (entry->block == block);
272 return entry->static_link;
273 }
274
275 \f
276
277 /* Called via bfd_map_over_sections to build up the section table that
278 the objfile references. The objfile contains pointers to the start
279 of the table (objfile->sections) and to the first location after
280 the end of the table (objfile->sections_end). */
281
282 static void
283 add_to_objfile_sections_full (struct bfd *abfd, struct bfd_section *asect,
284 struct objfile *objfile, int force)
285 {
286 struct obj_section *section;
287
288 if (!force)
289 {
290 flagword aflag;
291
292 aflag = bfd_get_section_flags (abfd, asect);
293 if (!(aflag & SEC_ALLOC))
294 return;
295 }
296
297 section = &objfile->sections[gdb_bfd_section_index (abfd, asect)];
298 section->objfile = objfile;
299 section->the_bfd_section = asect;
300 section->ovly_mapped = 0;
301 }
302
303 static void
304 add_to_objfile_sections (struct bfd *abfd, struct bfd_section *asect,
305 void *objfilep)
306 {
307 add_to_objfile_sections_full (abfd, asect, (struct objfile *) objfilep, 0);
308 }
309
310 /* Builds a section table for OBJFILE.
311
312 Note that the OFFSET and OVLY_MAPPED in each table entry are
313 initialized to zero. */
314
315 void
316 build_objfile_section_table (struct objfile *objfile)
317 {
318 int count = gdb_bfd_count_sections (objfile->obfd);
319
320 objfile->sections = OBSTACK_CALLOC (&objfile->objfile_obstack,
321 count,
322 struct obj_section);
323 objfile->sections_end = (objfile->sections + count);
324 bfd_map_over_sections (objfile->obfd,
325 add_to_objfile_sections, (void *) objfile);
326
327 /* See gdb_bfd_section_index. */
328 add_to_objfile_sections_full (objfile->obfd, bfd_com_section_ptr, objfile, 1);
329 add_to_objfile_sections_full (objfile->obfd, bfd_und_section_ptr, objfile, 1);
330 add_to_objfile_sections_full (objfile->obfd, bfd_abs_section_ptr, objfile, 1);
331 add_to_objfile_sections_full (objfile->obfd, bfd_ind_section_ptr, objfile, 1);
332 }
333
334 /* Given a pointer to an initialized bfd (ABFD) and some flag bits,
335 initialize the new objfile as best we can and link it into the list
336 of all known objfiles.
337
338 NAME should contain original non-canonicalized filename or other
339 identifier as entered by user. If there is no better source use
340 bfd_get_filename (ABFD). NAME may be NULL only if ABFD is NULL.
341 NAME content is copied into returned objfile.
342
343 The FLAGS word contains various bits (OBJF_*) that can be taken as
344 requests for specific operations. Other bits like OBJF_SHARED are
345 simply copied through to the new objfile flags member. */
346
347 objfile::objfile (bfd *abfd, const char *name, objfile_flags flags_)
348 : flags (flags_),
349 pspace (current_program_space),
350 partial_symtabs (new psymtab_storage ()),
351 obfd (abfd)
352 {
353 const char *expanded_name;
354
355 /* We could use obstack_specify_allocation here instead, but
356 gdb_obstack.h specifies the alloc/dealloc functions. */
357 obstack_init (&objfile_obstack);
358
359 objfile_alloc_data (this);
360
361 gdb::unique_xmalloc_ptr<char> name_holder;
362 if (name == NULL)
363 {
364 gdb_assert (abfd == NULL);
365 gdb_assert ((flags & OBJF_NOT_FILENAME) != 0);
366 expanded_name = "<<anonymous objfile>>";
367 }
368 else if ((flags & OBJF_NOT_FILENAME) != 0
369 || is_target_filename (name))
370 expanded_name = name;
371 else
372 {
373 name_holder = gdb_abspath (name);
374 expanded_name = name_holder.get ();
375 }
376 original_name
377 = (char *) obstack_copy0 (&objfile_obstack,
378 expanded_name,
379 strlen (expanded_name));
380
381 /* Update the per-objfile information that comes from the bfd, ensuring
382 that any data that is reference is saved in the per-objfile data
383 region. */
384
385 gdb_bfd_ref (abfd);
386 if (abfd != NULL)
387 {
388 mtime = bfd_get_mtime (abfd);
389
390 /* Build section table. */
391 build_objfile_section_table (this);
392 }
393
394 per_bfd = get_objfile_bfd_data (this, abfd);
395
396 /* Add this file onto the tail of the linked list of other such files. */
397
398 if (object_files == NULL)
399 object_files = this;
400 else
401 {
402 struct objfile *last_one;
403
404 for (last_one = object_files;
405 last_one->next;
406 last_one = last_one->next);
407 last_one->next = this;
408 }
409
410 /* Rebuild section map next time we need it. */
411 get_objfile_pspace_data (pspace)->new_objfiles_available = 1;
412 }
413
414 /* Retrieve the gdbarch associated with OBJFILE. */
415
416 struct gdbarch *
417 get_objfile_arch (const struct objfile *objfile)
418 {
419 return objfile->per_bfd->gdbarch;
420 }
421
422 /* If there is a valid and known entry point, function fills *ENTRY_P with it
423 and returns non-zero; otherwise it returns zero. */
424
425 int
426 entry_point_address_query (CORE_ADDR *entry_p)
427 {
428 if (symfile_objfile == NULL || !symfile_objfile->per_bfd->ei.entry_point_p)
429 return 0;
430
431 *entry_p = (symfile_objfile->per_bfd->ei.entry_point
432 + ANOFFSET (symfile_objfile->section_offsets,
433 symfile_objfile->per_bfd->ei.the_bfd_section_index));
434
435 return 1;
436 }
437
438 /* Get current entry point address. Call error if it is not known. */
439
440 CORE_ADDR
441 entry_point_address (void)
442 {
443 CORE_ADDR retval;
444
445 if (!entry_point_address_query (&retval))
446 error (_("Entry point address is not known."));
447
448 return retval;
449 }
450
451 /* Iterator on PARENT and every separate debug objfile of PARENT.
452 The usage pattern is:
453 for (objfile = parent;
454 objfile;
455 objfile = objfile_separate_debug_iterate (parent, objfile))
456 ...
457 */
458
459 struct objfile *
460 objfile_separate_debug_iterate (const struct objfile *parent,
461 const struct objfile *objfile)
462 {
463 struct objfile *res;
464
465 /* If any, return the first child. */
466 res = objfile->separate_debug_objfile;
467 if (res)
468 return res;
469
470 /* Common case where there is no separate debug objfile. */
471 if (objfile == parent)
472 return NULL;
473
474 /* Return the brother if any. Note that we don't iterate on brothers of
475 the parents. */
476 res = objfile->separate_debug_objfile_link;
477 if (res)
478 return res;
479
480 for (res = objfile->separate_debug_objfile_backlink;
481 res != parent;
482 res = res->separate_debug_objfile_backlink)
483 {
484 gdb_assert (res != NULL);
485 if (res->separate_debug_objfile_link)
486 return res->separate_debug_objfile_link;
487 }
488 return NULL;
489 }
490
491 /* Put one object file before a specified on in the global list.
492 This can be used to make sure an object file is destroyed before
493 another when using objfiles_safe to free all objfiles. */
494 void
495 put_objfile_before (struct objfile *objfile, struct objfile *before_this)
496 {
497 struct objfile **objp;
498
499 unlink_objfile (objfile);
500
501 for (objp = &object_files; *objp != NULL; objp = &((*objp)->next))
502 {
503 if (*objp == before_this)
504 {
505 objfile->next = *objp;
506 *objp = objfile;
507 return;
508 }
509 }
510
511 internal_error (__FILE__, __LINE__,
512 _("put_objfile_before: before objfile not in list"));
513 }
514
515 /* Unlink OBJFILE from the list of known objfiles, if it is found in the
516 list.
517
518 It is not a bug, or error, to call this function if OBJFILE is not known
519 to be in the current list. This is done in the case of mapped objfiles,
520 for example, just to ensure that the mapped objfile doesn't appear twice
521 in the list. Since the list is threaded, linking in a mapped objfile
522 twice would create a circular list.
523
524 If OBJFILE turns out to be in the list, we zap it's NEXT pointer after
525 unlinking it, just to ensure that we have completely severed any linkages
526 between the OBJFILE and the list. */
527
528 void
529 unlink_objfile (struct objfile *objfile)
530 {
531 struct objfile **objpp;
532
533 for (objpp = &object_files; *objpp != NULL; objpp = &((*objpp)->next))
534 {
535 if (*objpp == objfile)
536 {
537 *objpp = (*objpp)->next;
538 objfile->next = NULL;
539 return;
540 }
541 }
542
543 internal_error (__FILE__, __LINE__,
544 _("unlink_objfile: objfile already unlinked"));
545 }
546
547 /* Add OBJFILE as a separate debug objfile of PARENT. */
548
549 void
550 add_separate_debug_objfile (struct objfile *objfile, struct objfile *parent)
551 {
552 gdb_assert (objfile && parent);
553
554 /* Must not be already in a list. */
555 gdb_assert (objfile->separate_debug_objfile_backlink == NULL);
556 gdb_assert (objfile->separate_debug_objfile_link == NULL);
557 gdb_assert (objfile->separate_debug_objfile == NULL);
558 gdb_assert (parent->separate_debug_objfile_backlink == NULL);
559 gdb_assert (parent->separate_debug_objfile_link == NULL);
560
561 objfile->separate_debug_objfile_backlink = parent;
562 objfile->separate_debug_objfile_link = parent->separate_debug_objfile;
563 parent->separate_debug_objfile = objfile;
564
565 /* Put the separate debug object before the normal one, this is so that
566 usage of objfiles_safe will stay safe. */
567 put_objfile_before (objfile, parent);
568 }
569
570 /* Free all separate debug objfile of OBJFILE, but don't free OBJFILE
571 itself. */
572
573 void
574 free_objfile_separate_debug (struct objfile *objfile)
575 {
576 struct objfile *child;
577
578 for (child = objfile->separate_debug_objfile; child;)
579 {
580 struct objfile *next_child = child->separate_debug_objfile_link;
581 delete child;
582 child = next_child;
583 }
584 }
585
586 /* Destroy an objfile and all the symtabs and psymtabs under it. */
587
588 objfile::~objfile ()
589 {
590 /* First notify observers that this objfile is about to be freed. */
591 gdb::observers::free_objfile.notify (this);
592
593 /* Free all separate debug objfiles. */
594 free_objfile_separate_debug (this);
595
596 if (separate_debug_objfile_backlink)
597 {
598 /* We freed the separate debug file, make sure the base objfile
599 doesn't reference it. */
600 struct objfile *child;
601
602 child = separate_debug_objfile_backlink->separate_debug_objfile;
603
604 if (child == this)
605 {
606 /* THIS is the first child. */
607 separate_debug_objfile_backlink->separate_debug_objfile =
608 separate_debug_objfile_link;
609 }
610 else
611 {
612 /* Find THIS in the list. */
613 while (1)
614 {
615 if (child->separate_debug_objfile_link == this)
616 {
617 child->separate_debug_objfile_link =
618 separate_debug_objfile_link;
619 break;
620 }
621 child = child->separate_debug_objfile_link;
622 gdb_assert (child);
623 }
624 }
625 }
626
627 /* Remove any references to this objfile in the global value
628 lists. */
629 preserve_values (this);
630
631 /* It still may reference data modules have associated with the objfile and
632 the symbol file data. */
633 forget_cached_source_info_for_objfile (this);
634
635 breakpoint_free_objfile (this);
636 btrace_free_objfile (this);
637
638 /* First do any symbol file specific actions required when we are
639 finished with a particular symbol file. Note that if the objfile
640 is using reusable symbol information (via mmalloc) then each of
641 these routines is responsible for doing the correct thing, either
642 freeing things which are valid only during this particular gdb
643 execution, or leaving them to be reused during the next one. */
644
645 if (sf != NULL)
646 (*sf->sym_finish) (this);
647
648 /* Discard any data modules have associated with the objfile. The function
649 still may reference obfd. */
650 objfile_free_data (this);
651
652 if (obfd)
653 gdb_bfd_unref (obfd);
654 else
655 delete per_bfd;
656
657 /* Remove it from the chain of all objfiles. */
658
659 unlink_objfile (this);
660
661 if (this == symfile_objfile)
662 symfile_objfile = NULL;
663
664 /* Before the symbol table code was redone to make it easier to
665 selectively load and remove information particular to a specific
666 linkage unit, gdb used to do these things whenever the monolithic
667 symbol table was blown away. How much still needs to be done
668 is unknown, but we play it safe for now and keep each action until
669 it is shown to be no longer needed. */
670
671 /* Not all our callers call clear_symtab_users (objfile_purge_solibs,
672 for example), so we need to call this here. */
673 clear_pc_function_cache ();
674
675 /* Clear globals which might have pointed into a removed objfile.
676 FIXME: It's not clear which of these are supposed to persist
677 between expressions and which ought to be reset each time. */
678 expression_context_block = NULL;
679 innermost_block.reset ();
680
681 /* Check to see if the current_source_symtab belongs to this objfile,
682 and if so, call clear_current_source_symtab_and_line. */
683
684 {
685 struct symtab_and_line cursal = get_current_source_symtab_and_line ();
686
687 if (cursal.symtab && SYMTAB_OBJFILE (cursal.symtab) == this)
688 clear_current_source_symtab_and_line ();
689 }
690
691 /* Free the obstacks for non-reusable objfiles. */
692 obstack_free (&objfile_obstack, 0);
693
694 /* Rebuild section map next time we need it. */
695 get_objfile_pspace_data (pspace)->section_map_dirty = 1;
696
697 /* Free the map for static links. There's no need to free static link
698 themselves since they were allocated on the objstack. */
699 if (static_links != NULL)
700 htab_delete (static_links);
701 }
702
703 /* Free all the object files at once and clean up their users. */
704
705 void
706 free_all_objfiles (void)
707 {
708 struct so_list *so;
709
710 /* Any objfile referencewould become stale. */
711 for (so = master_so_list (); so; so = so->next)
712 gdb_assert (so->objfile == NULL);
713
714 for (objfile *objfile : current_program_space->objfiles_safe ())
715 delete objfile;
716 clear_symtab_users (0);
717 }
718 \f
719 /* A helper function for objfile_relocate1 that relocates a single
720 symbol. */
721
722 static void
723 relocate_one_symbol (struct symbol *sym, struct objfile *objfile,
724 struct section_offsets *delta)
725 {
726 fixup_symbol_section (sym, objfile);
727
728 /* The RS6000 code from which this was taken skipped
729 any symbols in STRUCT_DOMAIN or UNDEF_DOMAIN.
730 But I'm leaving out that test, on the theory that
731 they can't possibly pass the tests below. */
732 if ((SYMBOL_CLASS (sym) == LOC_LABEL
733 || SYMBOL_CLASS (sym) == LOC_STATIC)
734 && SYMBOL_SECTION (sym) >= 0)
735 {
736 SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (delta, SYMBOL_SECTION (sym));
737 }
738 }
739
740 /* Relocate OBJFILE to NEW_OFFSETS. There should be OBJFILE->NUM_SECTIONS
741 entries in new_offsets. SEPARATE_DEBUG_OBJFILE is not touched here.
742 Return non-zero iff any change happened. */
743
744 static int
745 objfile_relocate1 (struct objfile *objfile,
746 const struct section_offsets *new_offsets)
747 {
748 struct section_offsets *delta =
749 ((struct section_offsets *)
750 alloca (SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)));
751
752 int something_changed = 0;
753
754 for (int i = 0; i < objfile->num_sections; ++i)
755 {
756 delta->offsets[i] =
757 ANOFFSET (new_offsets, i) - ANOFFSET (objfile->section_offsets, i);
758 if (ANOFFSET (delta, i) != 0)
759 something_changed = 1;
760 }
761 if (!something_changed)
762 return 0;
763
764 /* OK, get all the symtabs. */
765 {
766 for (compunit_symtab *cust : objfile->compunits ())
767 {
768 for (symtab *s : compunit_filetabs (cust))
769 {
770 struct linetable *l;
771
772 /* First the line table. */
773 l = SYMTAB_LINETABLE (s);
774 if (l)
775 {
776 for (int i = 0; i < l->nitems; ++i)
777 l->item[i].pc += ANOFFSET (delta,
778 COMPUNIT_BLOCK_LINE_SECTION
779 (cust));
780 }
781 }
782 }
783
784 for (compunit_symtab *cust : objfile->compunits ())
785 {
786 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (cust);
787 int block_line_section = COMPUNIT_BLOCK_LINE_SECTION (cust);
788
789 if (BLOCKVECTOR_MAP (bv))
790 addrmap_relocate (BLOCKVECTOR_MAP (bv),
791 ANOFFSET (delta, block_line_section));
792
793 for (int i = 0; i < BLOCKVECTOR_NBLOCKS (bv); ++i)
794 {
795 struct block *b;
796 struct symbol *sym;
797 struct mdict_iterator miter;
798
799 b = BLOCKVECTOR_BLOCK (bv, i);
800 BLOCK_START (b) += ANOFFSET (delta, block_line_section);
801 BLOCK_END (b) += ANOFFSET (delta, block_line_section);
802
803 if (BLOCK_RANGES (b) != nullptr)
804 for (int j = 0; j < BLOCK_NRANGES (b); j++)
805 {
806 BLOCK_RANGE_START (b, j)
807 += ANOFFSET (delta, block_line_section);
808 BLOCK_RANGE_END (b, j) += ANOFFSET (delta,
809 block_line_section);
810 }
811
812 /* We only want to iterate over the local symbols, not any
813 symbols in included symtabs. */
814 ALL_DICT_SYMBOLS (BLOCK_MULTIDICT (b), miter, sym)
815 {
816 relocate_one_symbol (sym, objfile, delta);
817 }
818 }
819 }
820 }
821
822 /* This stores relocated addresses and so must be cleared. This
823 will cause it to be recreated on demand. */
824 objfile->psymbol_map.clear ();
825
826 /* Relocate isolated symbols. */
827 {
828 struct symbol *iter;
829
830 for (iter = objfile->template_symbols; iter; iter = iter->hash_next)
831 relocate_one_symbol (iter, objfile, delta);
832 }
833
834 {
835 int i;
836
837 for (i = 0; i < objfile->num_sections; ++i)
838 (objfile->section_offsets)->offsets[i] = ANOFFSET (new_offsets, i);
839 }
840
841 /* Rebuild section map next time we need it. */
842 get_objfile_pspace_data (objfile->pspace)->section_map_dirty = 1;
843
844 /* Update the table in exec_ops, used to read memory. */
845 struct obj_section *s;
846 ALL_OBJFILE_OSECTIONS (objfile, s)
847 {
848 int idx = s - objfile->sections;
849
850 exec_set_section_address (bfd_get_filename (objfile->obfd), idx,
851 obj_section_addr (s));
852 }
853
854 /* Data changed. */
855 return 1;
856 }
857
858 /* Relocate OBJFILE to NEW_OFFSETS. There should be OBJFILE->NUM_SECTIONS
859 entries in new_offsets. Process also OBJFILE's SEPARATE_DEBUG_OBJFILEs.
860
861 The number and ordering of sections does differ between the two objfiles.
862 Only their names match. Also the file offsets will differ (objfile being
863 possibly prelinked but separate_debug_objfile is probably not prelinked) but
864 the in-memory absolute address as specified by NEW_OFFSETS must match both
865 files. */
866
867 void
868 objfile_relocate (struct objfile *objfile,
869 const struct section_offsets *new_offsets)
870 {
871 struct objfile *debug_objfile;
872 int changed = 0;
873
874 changed |= objfile_relocate1 (objfile, new_offsets);
875
876 for (debug_objfile = objfile->separate_debug_objfile;
877 debug_objfile;
878 debug_objfile = objfile_separate_debug_iterate (objfile, debug_objfile))
879 {
880 section_addr_info objfile_addrs
881 = build_section_addr_info_from_objfile (objfile);
882
883 /* Here OBJFILE_ADDRS contain the correct absolute addresses, the
884 relative ones must be already created according to debug_objfile. */
885
886 addr_info_make_relative (&objfile_addrs, debug_objfile->obfd);
887
888 gdb_assert (debug_objfile->num_sections
889 == gdb_bfd_count_sections (debug_objfile->obfd));
890 std::vector<struct section_offsets>
891 new_debug_offsets (SIZEOF_N_SECTION_OFFSETS (debug_objfile->num_sections));
892 relative_addr_info_to_section_offsets (new_debug_offsets.data (),
893 debug_objfile->num_sections,
894 objfile_addrs);
895
896 changed |= objfile_relocate1 (debug_objfile, new_debug_offsets.data ());
897 }
898
899 /* Relocate breakpoints as necessary, after things are relocated. */
900 if (changed)
901 breakpoint_re_set ();
902 }
903
904 /* Rebase (add to the offsets) OBJFILE by SLIDE. SEPARATE_DEBUG_OBJFILE is
905 not touched here.
906 Return non-zero iff any change happened. */
907
908 static int
909 objfile_rebase1 (struct objfile *objfile, CORE_ADDR slide)
910 {
911 struct section_offsets *new_offsets =
912 ((struct section_offsets *)
913 alloca (SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)));
914 int i;
915
916 for (i = 0; i < objfile->num_sections; ++i)
917 new_offsets->offsets[i] = slide;
918
919 return objfile_relocate1 (objfile, new_offsets);
920 }
921
922 /* Rebase (add to the offsets) OBJFILE by SLIDE. Process also OBJFILE's
923 SEPARATE_DEBUG_OBJFILEs. */
924
925 void
926 objfile_rebase (struct objfile *objfile, CORE_ADDR slide)
927 {
928 struct objfile *debug_objfile;
929 int changed = 0;
930
931 changed |= objfile_rebase1 (objfile, slide);
932
933 for (debug_objfile = objfile->separate_debug_objfile;
934 debug_objfile;
935 debug_objfile = objfile_separate_debug_iterate (objfile, debug_objfile))
936 changed |= objfile_rebase1 (debug_objfile, slide);
937
938 /* Relocate breakpoints as necessary, after things are relocated. */
939 if (changed)
940 breakpoint_re_set ();
941 }
942 \f
943 /* Return non-zero if OBJFILE has partial symbols. */
944
945 int
946 objfile_has_partial_symbols (struct objfile *objfile)
947 {
948 if (!objfile->sf)
949 return 0;
950
951 /* If we have not read psymbols, but we have a function capable of reading
952 them, then that is an indication that they are in fact available. Without
953 this function the symbols may have been already read in but they also may
954 not be present in this objfile. */
955 if ((objfile->flags & OBJF_PSYMTABS_READ) == 0
956 && objfile->sf->sym_read_psymbols != NULL)
957 return 1;
958
959 return objfile->sf->qf->has_symbols (objfile);
960 }
961
962 /* Return non-zero if OBJFILE has full symbols. */
963
964 int
965 objfile_has_full_symbols (struct objfile *objfile)
966 {
967 return objfile->compunit_symtabs != NULL;
968 }
969
970 /* Return non-zero if OBJFILE has full or partial symbols, either directly
971 or through a separate debug file. */
972
973 int
974 objfile_has_symbols (struct objfile *objfile)
975 {
976 struct objfile *o;
977
978 for (o = objfile; o; o = objfile_separate_debug_iterate (objfile, o))
979 if (objfile_has_partial_symbols (o) || objfile_has_full_symbols (o))
980 return 1;
981 return 0;
982 }
983
984
985 /* Many places in gdb want to test just to see if we have any partial
986 symbols available. This function returns zero if none are currently
987 available, nonzero otherwise. */
988
989 int
990 have_partial_symbols (void)
991 {
992 for (objfile *ofp : current_program_space->objfiles ())
993 {
994 if (objfile_has_partial_symbols (ofp))
995 return 1;
996 }
997 return 0;
998 }
999
1000 /* Many places in gdb want to test just to see if we have any full
1001 symbols available. This function returns zero if none are currently
1002 available, nonzero otherwise. */
1003
1004 int
1005 have_full_symbols (void)
1006 {
1007 for (objfile *ofp : current_program_space->objfiles ())
1008 {
1009 if (objfile_has_full_symbols (ofp))
1010 return 1;
1011 }
1012 return 0;
1013 }
1014
1015
1016 /* This operations deletes all objfile entries that represent solibs that
1017 weren't explicitly loaded by the user, via e.g., the add-symbol-file
1018 command. */
1019
1020 void
1021 objfile_purge_solibs (void)
1022 {
1023 for (objfile *objf : current_program_space->objfiles_safe ())
1024 {
1025 /* We assume that the solib package has been purged already, or will
1026 be soon. */
1027
1028 if (!(objf->flags & OBJF_USERLOADED) && (objf->flags & OBJF_SHARED))
1029 delete objf;
1030 }
1031 }
1032
1033
1034 /* Many places in gdb want to test just to see if we have any minimal
1035 symbols available. This function returns zero if none are currently
1036 available, nonzero otherwise. */
1037
1038 int
1039 have_minimal_symbols (void)
1040 {
1041 for (objfile *ofp : current_program_space->objfiles ())
1042 {
1043 if (ofp->per_bfd->minimal_symbol_count > 0)
1044 {
1045 return 1;
1046 }
1047 }
1048 return 0;
1049 }
1050
1051 /* Qsort comparison function. */
1052
1053 static int
1054 qsort_cmp (const void *a, const void *b)
1055 {
1056 const struct obj_section *sect1 = *(const struct obj_section **) a;
1057 const struct obj_section *sect2 = *(const struct obj_section **) b;
1058 const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1059 const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1060
1061 if (sect1_addr < sect2_addr)
1062 return -1;
1063 else if (sect1_addr > sect2_addr)
1064 return 1;
1065 else
1066 {
1067 /* Sections are at the same address. This could happen if
1068 A) we have an objfile and a separate debuginfo.
1069 B) we are confused, and have added sections without proper relocation,
1070 or something like that. */
1071
1072 const struct objfile *const objfile1 = sect1->objfile;
1073 const struct objfile *const objfile2 = sect2->objfile;
1074
1075 if (objfile1->separate_debug_objfile == objfile2
1076 || objfile2->separate_debug_objfile == objfile1)
1077 {
1078 /* Case A. The ordering doesn't matter: separate debuginfo files
1079 will be filtered out later. */
1080
1081 return 0;
1082 }
1083
1084 /* Case B. Maintain stable sort order, so bugs in GDB are easier to
1085 triage. This section could be slow (since we iterate over all
1086 objfiles in each call to qsort_cmp), but this shouldn't happen
1087 very often (GDB is already in a confused state; one hopes this
1088 doesn't happen at all). If you discover that significant time is
1089 spent in the loops below, do 'set complaints 100' and examine the
1090 resulting complaints. */
1091
1092 if (objfile1 == objfile2)
1093 {
1094 /* Both sections came from the same objfile. We are really confused.
1095 Sort on sequence order of sections within the objfile. */
1096
1097 const struct obj_section *osect;
1098
1099 ALL_OBJFILE_OSECTIONS (objfile1, osect)
1100 if (osect == sect1)
1101 return -1;
1102 else if (osect == sect2)
1103 return 1;
1104
1105 /* We should have found one of the sections before getting here. */
1106 gdb_assert_not_reached ("section not found");
1107 }
1108 else
1109 {
1110 /* Sort on sequence number of the objfile in the chain. */
1111
1112 for (objfile *objfile : current_program_space->objfiles ())
1113 if (objfile == objfile1)
1114 return -1;
1115 else if (objfile == objfile2)
1116 return 1;
1117
1118 /* We should have found one of the objfiles before getting here. */
1119 gdb_assert_not_reached ("objfile not found");
1120 }
1121 }
1122
1123 /* Unreachable. */
1124 gdb_assert_not_reached ("unexpected code path");
1125 return 0;
1126 }
1127
1128 /* Select "better" obj_section to keep. We prefer the one that came from
1129 the real object, rather than the one from separate debuginfo.
1130 Most of the time the two sections are exactly identical, but with
1131 prelinking the .rel.dyn section in the real object may have different
1132 size. */
1133
1134 static struct obj_section *
1135 preferred_obj_section (struct obj_section *a, struct obj_section *b)
1136 {
1137 gdb_assert (obj_section_addr (a) == obj_section_addr (b));
1138 gdb_assert ((a->objfile->separate_debug_objfile == b->objfile)
1139 || (b->objfile->separate_debug_objfile == a->objfile));
1140 gdb_assert ((a->objfile->separate_debug_objfile_backlink == b->objfile)
1141 || (b->objfile->separate_debug_objfile_backlink == a->objfile));
1142
1143 if (a->objfile->separate_debug_objfile != NULL)
1144 return a;
1145 return b;
1146 }
1147
1148 /* Return 1 if SECTION should be inserted into the section map.
1149 We want to insert only non-overlay and non-TLS section. */
1150
1151 static int
1152 insert_section_p (const struct bfd *abfd,
1153 const struct bfd_section *section)
1154 {
1155 const bfd_vma lma = bfd_section_lma (abfd, section);
1156
1157 if (overlay_debugging && lma != 0 && lma != bfd_section_vma (abfd, section)
1158 && (bfd_get_file_flags (abfd) & BFD_IN_MEMORY) == 0)
1159 /* This is an overlay section. IN_MEMORY check is needed to avoid
1160 discarding sections from the "system supplied DSO" (aka vdso)
1161 on some Linux systems (e.g. Fedora 11). */
1162 return 0;
1163 if ((bfd_get_section_flags (abfd, section) & SEC_THREAD_LOCAL) != 0)
1164 /* This is a TLS section. */
1165 return 0;
1166
1167 return 1;
1168 }
1169
1170 /* Filter out overlapping sections where one section came from the real
1171 objfile, and the other from a separate debuginfo file.
1172 Return the size of table after redundant sections have been eliminated. */
1173
1174 static int
1175 filter_debuginfo_sections (struct obj_section **map, int map_size)
1176 {
1177 int i, j;
1178
1179 for (i = 0, j = 0; i < map_size - 1; i++)
1180 {
1181 struct obj_section *const sect1 = map[i];
1182 struct obj_section *const sect2 = map[i + 1];
1183 const struct objfile *const objfile1 = sect1->objfile;
1184 const struct objfile *const objfile2 = sect2->objfile;
1185 const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1186 const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1187
1188 if (sect1_addr == sect2_addr
1189 && (objfile1->separate_debug_objfile == objfile2
1190 || objfile2->separate_debug_objfile == objfile1))
1191 {
1192 map[j++] = preferred_obj_section (sect1, sect2);
1193 ++i;
1194 }
1195 else
1196 map[j++] = sect1;
1197 }
1198
1199 if (i < map_size)
1200 {
1201 gdb_assert (i == map_size - 1);
1202 map[j++] = map[i];
1203 }
1204
1205 /* The map should not have shrunk to less than half the original size. */
1206 gdb_assert (map_size / 2 <= j);
1207
1208 return j;
1209 }
1210
1211 /* Filter out overlapping sections, issuing a warning if any are found.
1212 Overlapping sections could really be overlay sections which we didn't
1213 classify as such in insert_section_p, or we could be dealing with a
1214 corrupt binary. */
1215
1216 static int
1217 filter_overlapping_sections (struct obj_section **map, int map_size)
1218 {
1219 int i, j;
1220
1221 for (i = 0, j = 0; i < map_size - 1; )
1222 {
1223 int k;
1224
1225 map[j++] = map[i];
1226 for (k = i + 1; k < map_size; k++)
1227 {
1228 struct obj_section *const sect1 = map[i];
1229 struct obj_section *const sect2 = map[k];
1230 const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1231 const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1232 const CORE_ADDR sect1_endaddr = obj_section_endaddr (sect1);
1233
1234 gdb_assert (sect1_addr <= sect2_addr);
1235
1236 if (sect1_endaddr <= sect2_addr)
1237 break;
1238 else
1239 {
1240 /* We have an overlap. Report it. */
1241
1242 struct objfile *const objf1 = sect1->objfile;
1243 struct objfile *const objf2 = sect2->objfile;
1244
1245 const struct bfd_section *const bfds1 = sect1->the_bfd_section;
1246 const struct bfd_section *const bfds2 = sect2->the_bfd_section;
1247
1248 const CORE_ADDR sect2_endaddr = obj_section_endaddr (sect2);
1249
1250 struct gdbarch *const gdbarch = get_objfile_arch (objf1);
1251
1252 complaint (_("unexpected overlap between:\n"
1253 " (A) section `%s' from `%s' [%s, %s)\n"
1254 " (B) section `%s' from `%s' [%s, %s).\n"
1255 "Will ignore section B"),
1256 bfd_section_name (abfd1, bfds1), objfile_name (objf1),
1257 paddress (gdbarch, sect1_addr),
1258 paddress (gdbarch, sect1_endaddr),
1259 bfd_section_name (abfd2, bfds2), objfile_name (objf2),
1260 paddress (gdbarch, sect2_addr),
1261 paddress (gdbarch, sect2_endaddr));
1262 }
1263 }
1264 i = k;
1265 }
1266
1267 if (i < map_size)
1268 {
1269 gdb_assert (i == map_size - 1);
1270 map[j++] = map[i];
1271 }
1272
1273 return j;
1274 }
1275
1276
1277 /* Update PMAP, PMAP_SIZE with sections from all objfiles, excluding any
1278 TLS, overlay and overlapping sections. */
1279
1280 static void
1281 update_section_map (struct program_space *pspace,
1282 struct obj_section ***pmap, int *pmap_size)
1283 {
1284 struct objfile_pspace_info *pspace_info;
1285 int alloc_size, map_size, i;
1286 struct obj_section *s, **map;
1287
1288 pspace_info = get_objfile_pspace_data (pspace);
1289 gdb_assert (pspace_info->section_map_dirty != 0
1290 || pspace_info->new_objfiles_available != 0);
1291
1292 map = *pmap;
1293 xfree (map);
1294
1295 alloc_size = 0;
1296 for (objfile *objfile : pspace->objfiles ())
1297 ALL_OBJFILE_OSECTIONS (objfile, s)
1298 if (insert_section_p (objfile->obfd, s->the_bfd_section))
1299 alloc_size += 1;
1300
1301 /* This happens on detach/attach (e.g. in gdb.base/attach.exp). */
1302 if (alloc_size == 0)
1303 {
1304 *pmap = NULL;
1305 *pmap_size = 0;
1306 return;
1307 }
1308
1309 map = XNEWVEC (struct obj_section *, alloc_size);
1310
1311 i = 0;
1312 for (objfile *objfile : pspace->objfiles ())
1313 ALL_OBJFILE_OSECTIONS (objfile, s)
1314 if (insert_section_p (objfile->obfd, s->the_bfd_section))
1315 map[i++] = s;
1316
1317 qsort (map, alloc_size, sizeof (*map), qsort_cmp);
1318 map_size = filter_debuginfo_sections(map, alloc_size);
1319 map_size = filter_overlapping_sections(map, map_size);
1320
1321 if (map_size < alloc_size)
1322 /* Some sections were eliminated. Trim excess space. */
1323 map = XRESIZEVEC (struct obj_section *, map, map_size);
1324 else
1325 gdb_assert (alloc_size == map_size);
1326
1327 *pmap = map;
1328 *pmap_size = map_size;
1329 }
1330
1331 /* Bsearch comparison function. */
1332
1333 static int
1334 bsearch_cmp (const void *key, const void *elt)
1335 {
1336 const CORE_ADDR pc = *(CORE_ADDR *) key;
1337 const struct obj_section *section = *(const struct obj_section **) elt;
1338
1339 if (pc < obj_section_addr (section))
1340 return -1;
1341 if (pc < obj_section_endaddr (section))
1342 return 0;
1343 return 1;
1344 }
1345
1346 /* Returns a section whose range includes PC or NULL if none found. */
1347
1348 struct obj_section *
1349 find_pc_section (CORE_ADDR pc)
1350 {
1351 struct objfile_pspace_info *pspace_info;
1352 struct obj_section *s, **sp;
1353
1354 /* Check for mapped overlay section first. */
1355 s = find_pc_mapped_section (pc);
1356 if (s)
1357 return s;
1358
1359 pspace_info = get_objfile_pspace_data (current_program_space);
1360 if (pspace_info->section_map_dirty
1361 || (pspace_info->new_objfiles_available
1362 && !pspace_info->inhibit_updates))
1363 {
1364 update_section_map (current_program_space,
1365 &pspace_info->sections,
1366 &pspace_info->num_sections);
1367
1368 /* Don't need updates to section map until objfiles are added,
1369 removed or relocated. */
1370 pspace_info->new_objfiles_available = 0;
1371 pspace_info->section_map_dirty = 0;
1372 }
1373
1374 /* The C standard (ISO/IEC 9899:TC2) requires the BASE argument to
1375 bsearch be non-NULL. */
1376 if (pspace_info->sections == NULL)
1377 {
1378 gdb_assert (pspace_info->num_sections == 0);
1379 return NULL;
1380 }
1381
1382 sp = (struct obj_section **) bsearch (&pc,
1383 pspace_info->sections,
1384 pspace_info->num_sections,
1385 sizeof (*pspace_info->sections),
1386 bsearch_cmp);
1387 if (sp != NULL)
1388 return *sp;
1389 return NULL;
1390 }
1391
1392
1393 /* Return non-zero if PC is in a section called NAME. */
1394
1395 int
1396 pc_in_section (CORE_ADDR pc, const char *name)
1397 {
1398 struct obj_section *s;
1399 int retval = 0;
1400
1401 s = find_pc_section (pc);
1402
1403 retval = (s != NULL
1404 && s->the_bfd_section->name != NULL
1405 && strcmp (s->the_bfd_section->name, name) == 0);
1406 return (retval);
1407 }
1408 \f
1409
1410 /* Set section_map_dirty so section map will be rebuilt next time it
1411 is used. Called by reread_symbols. */
1412
1413 void
1414 objfiles_changed (void)
1415 {
1416 /* Rebuild section map next time we need it. */
1417 get_objfile_pspace_data (current_program_space)->section_map_dirty = 1;
1418 }
1419
1420 /* See comments in objfiles.h. */
1421
1422 scoped_restore_tmpl<int>
1423 inhibit_section_map_updates (struct program_space *pspace)
1424 {
1425 return scoped_restore_tmpl<int>
1426 (&get_objfile_pspace_data (pspace)->inhibit_updates, 1);
1427 }
1428
1429 /* Return 1 if ADDR maps into one of the sections of OBJFILE and 0
1430 otherwise. */
1431
1432 int
1433 is_addr_in_objfile (CORE_ADDR addr, const struct objfile *objfile)
1434 {
1435 struct obj_section *osect;
1436
1437 if (objfile == NULL)
1438 return 0;
1439
1440 ALL_OBJFILE_OSECTIONS (objfile, osect)
1441 {
1442 if (section_is_overlay (osect) && !section_is_mapped (osect))
1443 continue;
1444
1445 if (obj_section_addr (osect) <= addr
1446 && addr < obj_section_endaddr (osect))
1447 return 1;
1448 }
1449 return 0;
1450 }
1451
1452 int
1453 shared_objfile_contains_address_p (struct program_space *pspace,
1454 CORE_ADDR address)
1455 {
1456 for (objfile *objfile : pspace->objfiles ())
1457 {
1458 if ((objfile->flags & OBJF_SHARED) != 0
1459 && is_addr_in_objfile (address, objfile))
1460 return 1;
1461 }
1462
1463 return 0;
1464 }
1465
1466 /* The default implementation for the "iterate_over_objfiles_in_search_order"
1467 gdbarch method. It is equivalent to use the objfiles iterable,
1468 searching the objfiles in the order they are stored internally,
1469 ignoring CURRENT_OBJFILE.
1470
1471 On most platorms, it should be close enough to doing the best
1472 we can without some knowledge specific to the architecture. */
1473
1474 void
1475 default_iterate_over_objfiles_in_search_order
1476 (struct gdbarch *gdbarch,
1477 iterate_over_objfiles_in_search_order_cb_ftype *cb,
1478 void *cb_data, struct objfile *current_objfile)
1479 {
1480 int stop = 0;
1481
1482 for (objfile *objfile : current_program_space->objfiles ())
1483 {
1484 stop = cb (objfile, cb_data);
1485 if (stop)
1486 return;
1487 }
1488 }
1489
1490 /* See objfiles.h. */
1491
1492 const char *
1493 objfile_name (const struct objfile *objfile)
1494 {
1495 if (objfile->obfd != NULL)
1496 return bfd_get_filename (objfile->obfd);
1497
1498 return objfile->original_name;
1499 }
1500
1501 /* See objfiles.h. */
1502
1503 const char *
1504 objfile_filename (const struct objfile *objfile)
1505 {
1506 if (objfile->obfd != NULL)
1507 return bfd_get_filename (objfile->obfd);
1508
1509 return NULL;
1510 }
1511
1512 /* See objfiles.h. */
1513
1514 const char *
1515 objfile_debug_name (const struct objfile *objfile)
1516 {
1517 return lbasename (objfile->original_name);
1518 }
1519
1520 /* See objfiles.h. */
1521
1522 const char *
1523 objfile_flavour_name (struct objfile *objfile)
1524 {
1525 if (objfile->obfd != NULL)
1526 return bfd_flavour_name (bfd_get_flavour (objfile->obfd));
1527 return NULL;
1528 }
1529
1530 void
1531 _initialize_objfiles (void)
1532 {
1533 objfiles_pspace_data
1534 = register_program_space_data_with_cleanup (NULL,
1535 objfiles_pspace_data_cleanup);
1536
1537 objfiles_bfd_data = register_bfd_data_with_cleanup (NULL,
1538 objfile_bfd_data_free);
1539 }
This page took 0.059803 seconds and 5 git commands to generate.