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