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