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