Add AArch64 Pointer Authentication to the NEWS file
[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 /* Iterator on PARENT and every separate debug objfile of PARENT.
450    The usage pattern is:
451      for (objfile = parent;
452           objfile;
453           objfile = objfile_separate_debug_iterate (parent, objfile))
454        ...
455 */
456
457 struct objfile *
458 objfile_separate_debug_iterate (const struct objfile *parent,
459                                 const struct objfile *objfile)
460 {
461   struct objfile *res;
462
463   /* If any, return the first child.  */
464   res = objfile->separate_debug_objfile;
465   if (res)
466     return res;
467
468   /* Common case where there is no separate debug objfile.  */
469   if (objfile == parent)
470     return NULL;
471
472   /* Return the brother if any.  Note that we don't iterate on brothers of
473      the parents.  */
474   res = objfile->separate_debug_objfile_link;
475   if (res)
476     return res;
477
478   for (res = objfile->separate_debug_objfile_backlink;
479        res != parent;
480        res = res->separate_debug_objfile_backlink)
481     {
482       gdb_assert (res != NULL);
483       if (res->separate_debug_objfile_link)
484         return res->separate_debug_objfile_link;
485     }
486   return NULL;
487 }
488
489 /* Put one object file before a specified on in the global list.
490    This can be used to make sure an object file is destroyed before
491    another when using objfiles_safe to free all objfiles.  */
492 void
493 put_objfile_before (struct objfile *objfile, struct objfile *before_this)
494 {
495   struct objfile **objp;
496
497   unlink_objfile (objfile);
498   
499   for (objp = &object_files; *objp != NULL; objp = &((*objp)->next))
500     {
501       if (*objp == before_this)
502         {
503           objfile->next = *objp;
504           *objp = objfile;
505           return;
506         }
507     }
508   
509   internal_error (__FILE__, __LINE__,
510                   _("put_objfile_before: before objfile not in list"));
511 }
512
513 /* Unlink OBJFILE from the list of known objfiles, if it is found in the
514    list.
515
516    It is not a bug, or error, to call this function if OBJFILE is not known
517    to be in the current list.  This is done in the case of mapped objfiles,
518    for example, just to ensure that the mapped objfile doesn't appear twice
519    in the list.  Since the list is threaded, linking in a mapped objfile
520    twice would create a circular list.
521
522    If OBJFILE turns out to be in the list, we zap it's NEXT pointer after
523    unlinking it, just to ensure that we have completely severed any linkages
524    between the OBJFILE and the list.  */
525
526 void
527 unlink_objfile (struct objfile *objfile)
528 {
529   struct objfile **objpp;
530
531   for (objpp = &object_files; *objpp != NULL; objpp = &((*objpp)->next))
532     {
533       if (*objpp == objfile)
534         {
535           *objpp = (*objpp)->next;
536           objfile->next = NULL;
537           return;
538         }
539     }
540
541   internal_error (__FILE__, __LINE__,
542                   _("unlink_objfile: objfile already unlinked"));
543 }
544
545 /* Add OBJFILE as a separate debug objfile of PARENT.  */
546
547 void
548 add_separate_debug_objfile (struct objfile *objfile, struct objfile *parent)
549 {
550   gdb_assert (objfile && parent);
551
552   /* Must not be already in a list.  */
553   gdb_assert (objfile->separate_debug_objfile_backlink == NULL);
554   gdb_assert (objfile->separate_debug_objfile_link == NULL);
555   gdb_assert (objfile->separate_debug_objfile == NULL);
556   gdb_assert (parent->separate_debug_objfile_backlink == NULL);
557   gdb_assert (parent->separate_debug_objfile_link == NULL);
558
559   objfile->separate_debug_objfile_backlink = parent;
560   objfile->separate_debug_objfile_link = parent->separate_debug_objfile;
561   parent->separate_debug_objfile = objfile;
562
563   /* Put the separate debug object before the normal one, this is so that
564      usage of objfiles_safe will stay safe.  */
565   put_objfile_before (objfile, parent);
566 }
567
568 /* Free all separate debug objfile of OBJFILE, but don't free OBJFILE
569    itself.  */
570
571 void
572 free_objfile_separate_debug (struct objfile *objfile)
573 {
574   struct objfile *child;
575
576   for (child = objfile->separate_debug_objfile; child;)
577     {
578       struct objfile *next_child = child->separate_debug_objfile_link;
579       delete child;
580       child = next_child;
581     }
582 }
583
584 /* Destroy an objfile and all the symtabs and psymtabs under it.  */
585
586 objfile::~objfile ()
587 {
588   /* First notify observers that this objfile is about to be freed.  */
589   gdb::observers::free_objfile.notify (this);
590
591   /* Free all separate debug objfiles.  */
592   free_objfile_separate_debug (this);
593
594   if (separate_debug_objfile_backlink)
595     {
596       /* We freed the separate debug file, make sure the base objfile
597          doesn't reference it.  */
598       struct objfile *child;
599
600       child = separate_debug_objfile_backlink->separate_debug_objfile;
601
602       if (child == this)
603         {
604           /* THIS is the first child.  */
605           separate_debug_objfile_backlink->separate_debug_objfile =
606             separate_debug_objfile_link;
607         }
608       else
609         {
610           /* Find THIS in the list.  */
611           while (1)
612             {
613               if (child->separate_debug_objfile_link == this)
614                 {
615                   child->separate_debug_objfile_link =
616                     separate_debug_objfile_link;
617                   break;
618                 }
619               child = child->separate_debug_objfile_link;
620               gdb_assert (child);
621             }
622         }
623     }
624
625   /* Remove any references to this objfile in the global value
626      lists.  */
627   preserve_values (this);
628
629   /* It still may reference data modules have associated with the objfile and
630      the symbol file data.  */
631   forget_cached_source_info_for_objfile (this);
632
633   breakpoint_free_objfile (this);
634   btrace_free_objfile (this);
635
636   /* First do any symbol file specific actions required when we are
637      finished with a particular symbol file.  Note that if the objfile
638      is using reusable symbol information (via mmalloc) then each of
639      these routines is responsible for doing the correct thing, either
640      freeing things which are valid only during this particular gdb
641      execution, or leaving them to be reused during the next one.  */
642
643   if (sf != NULL)
644     (*sf->sym_finish) (this);
645
646   /* Discard any data modules have associated with the objfile.  The function
647      still may reference obfd.  */
648   objfile_free_data (this);
649
650   if (obfd)
651     gdb_bfd_unref (obfd);
652   else
653     delete per_bfd;
654
655   /* Remove it from the chain of all objfiles.  */
656
657   unlink_objfile (this);
658
659   if (this == symfile_objfile)
660     symfile_objfile = NULL;
661
662   /* Before the symbol table code was redone to make it easier to
663      selectively load and remove information particular to a specific
664      linkage unit, gdb used to do these things whenever the monolithic
665      symbol table was blown away.  How much still needs to be done
666      is unknown, but we play it safe for now and keep each action until
667      it is shown to be no longer needed.  */
668
669   /* Not all our callers call clear_symtab_users (objfile_purge_solibs,
670      for example), so we need to call this here.  */
671   clear_pc_function_cache ();
672
673   /* Check to see if the current_source_symtab belongs to this objfile,
674      and if so, call clear_current_source_symtab_and_line.  */
675
676   {
677     struct symtab_and_line cursal = get_current_source_symtab_and_line ();
678
679     if (cursal.symtab && SYMTAB_OBJFILE (cursal.symtab) == this)
680       clear_current_source_symtab_and_line ();
681   }
682
683   /* Free the obstacks for non-reusable objfiles.  */
684   obstack_free (&objfile_obstack, 0);
685
686   /* Rebuild section map next time we need it.  */
687   get_objfile_pspace_data (pspace)->section_map_dirty = 1;
688
689   /* Free the map for static links.  There's no need to free static link
690      themselves since they were allocated on the objstack.  */
691   if (static_links != NULL)
692     htab_delete (static_links);
693 }
694
695 /* Free all the object files at once and clean up their users.  */
696
697 void
698 free_all_objfiles (void)
699 {
700   struct so_list *so;
701
702   /* Any objfile referencewould become stale.  */
703   for (so = master_so_list (); so; so = so->next)
704     gdb_assert (so->objfile == NULL);
705
706   for (objfile *objfile : current_program_space->objfiles_safe ())
707     delete objfile;
708   clear_symtab_users (0);
709 }
710 \f
711 /* A helper function for objfile_relocate1 that relocates a single
712    symbol.  */
713
714 static void
715 relocate_one_symbol (struct symbol *sym, struct objfile *objfile,
716                      struct section_offsets *delta)
717 {
718   fixup_symbol_section (sym, objfile);
719
720   /* The RS6000 code from which this was taken skipped
721      any symbols in STRUCT_DOMAIN or UNDEF_DOMAIN.
722      But I'm leaving out that test, on the theory that
723      they can't possibly pass the tests below.  */
724   if ((SYMBOL_CLASS (sym) == LOC_LABEL
725        || SYMBOL_CLASS (sym) == LOC_STATIC)
726       && SYMBOL_SECTION (sym) >= 0)
727     {
728       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (delta, SYMBOL_SECTION (sym));
729     }
730 }
731
732 /* Relocate OBJFILE to NEW_OFFSETS.  There should be OBJFILE->NUM_SECTIONS
733    entries in new_offsets.  SEPARATE_DEBUG_OBJFILE is not touched here.
734    Return non-zero iff any change happened.  */
735
736 static int
737 objfile_relocate1 (struct objfile *objfile, 
738                    const struct section_offsets *new_offsets)
739 {
740   struct section_offsets *delta =
741     ((struct section_offsets *) 
742      alloca (SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)));
743
744   int something_changed = 0;
745
746   for (int i = 0; i < objfile->num_sections; ++i)
747     {
748       delta->offsets[i] =
749         ANOFFSET (new_offsets, i) - ANOFFSET (objfile->section_offsets, i);
750       if (ANOFFSET (delta, i) != 0)
751         something_changed = 1;
752     }
753   if (!something_changed)
754     return 0;
755
756   /* OK, get all the symtabs.  */
757   {
758     for (compunit_symtab *cust : objfile->compunits ())
759       {
760         for (symtab *s : compunit_filetabs (cust))
761           {
762             struct linetable *l;
763
764             /* First the line table.  */
765             l = SYMTAB_LINETABLE (s);
766             if (l)
767               {
768                 for (int i = 0; i < l->nitems; ++i)
769                   l->item[i].pc += ANOFFSET (delta,
770                                              COMPUNIT_BLOCK_LINE_SECTION
771                                              (cust));
772               }
773           }
774       }
775
776     for (compunit_symtab *cust : objfile->compunits ())
777       {
778         const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (cust);
779         int block_line_section = COMPUNIT_BLOCK_LINE_SECTION (cust);
780
781         if (BLOCKVECTOR_MAP (bv))
782           addrmap_relocate (BLOCKVECTOR_MAP (bv),
783                             ANOFFSET (delta, block_line_section));
784
785         for (int i = 0; i < BLOCKVECTOR_NBLOCKS (bv); ++i)
786           {
787             struct block *b;
788             struct symbol *sym;
789             struct mdict_iterator miter;
790
791             b = BLOCKVECTOR_BLOCK (bv, i);
792             BLOCK_START (b) += ANOFFSET (delta, block_line_section);
793             BLOCK_END (b) += ANOFFSET (delta, block_line_section);
794
795             if (BLOCK_RANGES (b) != nullptr)
796               for (int j = 0; j < BLOCK_NRANGES (b); j++)
797                 {
798                   BLOCK_RANGE_START (b, j)
799                     += ANOFFSET (delta, block_line_section);
800                   BLOCK_RANGE_END (b, j) += ANOFFSET (delta,
801                                                       block_line_section);
802                 }
803
804             /* We only want to iterate over the local symbols, not any
805                symbols in included symtabs.  */
806             ALL_DICT_SYMBOLS (BLOCK_MULTIDICT (b), miter, sym)
807               {
808                 relocate_one_symbol (sym, objfile, delta);
809               }
810           }
811       }
812   }
813
814   /* This stores relocated addresses and so must be cleared.  This
815      will cause it to be recreated on demand.  */
816   objfile->psymbol_map.clear ();
817
818   /* Relocate isolated symbols.  */
819   {
820     struct symbol *iter;
821
822     for (iter = objfile->template_symbols; iter; iter = iter->hash_next)
823       relocate_one_symbol (iter, objfile, delta);
824   }
825
826   {
827     int i;
828
829     for (i = 0; i < objfile->num_sections; ++i)
830       (objfile->section_offsets)->offsets[i] = ANOFFSET (new_offsets, i);
831   }
832
833   /* Rebuild section map next time we need it.  */
834   get_objfile_pspace_data (objfile->pspace)->section_map_dirty = 1;
835
836   /* Update the table in exec_ops, used to read memory.  */
837   struct obj_section *s;
838   ALL_OBJFILE_OSECTIONS (objfile, s)
839     {
840       int idx = s - objfile->sections;
841
842       exec_set_section_address (bfd_get_filename (objfile->obfd), idx,
843                                 obj_section_addr (s));
844     }
845
846   /* Data changed.  */
847   return 1;
848 }
849
850 /* Relocate OBJFILE to NEW_OFFSETS.  There should be OBJFILE->NUM_SECTIONS
851    entries in new_offsets.  Process also OBJFILE's SEPARATE_DEBUG_OBJFILEs.
852
853    The number and ordering of sections does differ between the two objfiles.
854    Only their names match.  Also the file offsets will differ (objfile being
855    possibly prelinked but separate_debug_objfile is probably not prelinked) but
856    the in-memory absolute address as specified by NEW_OFFSETS must match both
857    files.  */
858
859 void
860 objfile_relocate (struct objfile *objfile,
861                   const struct section_offsets *new_offsets)
862 {
863   struct objfile *debug_objfile;
864   int changed = 0;
865
866   changed |= objfile_relocate1 (objfile, new_offsets);
867
868   for (debug_objfile = objfile->separate_debug_objfile;
869        debug_objfile;
870        debug_objfile = objfile_separate_debug_iterate (objfile, debug_objfile))
871     {
872       section_addr_info objfile_addrs
873         = build_section_addr_info_from_objfile (objfile);
874
875       /* Here OBJFILE_ADDRS contain the correct absolute addresses, the
876          relative ones must be already created according to debug_objfile.  */
877
878       addr_info_make_relative (&objfile_addrs, debug_objfile->obfd);
879
880       gdb_assert (debug_objfile->num_sections
881                   == gdb_bfd_count_sections (debug_objfile->obfd));
882       std::vector<struct section_offsets>
883         new_debug_offsets (SIZEOF_N_SECTION_OFFSETS (debug_objfile->num_sections));
884       relative_addr_info_to_section_offsets (new_debug_offsets.data (),
885                                              debug_objfile->num_sections,
886                                              objfile_addrs);
887
888       changed |= objfile_relocate1 (debug_objfile, new_debug_offsets.data ());
889     }
890
891   /* Relocate breakpoints as necessary, after things are relocated.  */
892   if (changed)
893     breakpoint_re_set ();
894 }
895
896 /* Rebase (add to the offsets) OBJFILE by SLIDE.  SEPARATE_DEBUG_OBJFILE is
897    not touched here.
898    Return non-zero iff any change happened.  */
899
900 static int
901 objfile_rebase1 (struct objfile *objfile, CORE_ADDR slide)
902 {
903   struct section_offsets *new_offsets =
904     ((struct section_offsets *)
905      alloca (SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)));
906   int i;
907
908   for (i = 0; i < objfile->num_sections; ++i)
909     new_offsets->offsets[i] = slide;
910
911   return objfile_relocate1 (objfile, new_offsets);
912 }
913
914 /* Rebase (add to the offsets) OBJFILE by SLIDE.  Process also OBJFILE's
915    SEPARATE_DEBUG_OBJFILEs.  */
916
917 void
918 objfile_rebase (struct objfile *objfile, CORE_ADDR slide)
919 {
920   struct objfile *debug_objfile;
921   int changed = 0;
922
923   changed |= objfile_rebase1 (objfile, slide);
924
925   for (debug_objfile = objfile->separate_debug_objfile;
926        debug_objfile;
927        debug_objfile = objfile_separate_debug_iterate (objfile, debug_objfile))
928     changed |= objfile_rebase1 (debug_objfile, slide);
929
930   /* Relocate breakpoints as necessary, after things are relocated.  */
931   if (changed)
932     breakpoint_re_set ();
933 }
934 \f
935 /* Return non-zero if OBJFILE has partial symbols.  */
936
937 int
938 objfile_has_partial_symbols (struct objfile *objfile)
939 {
940   if (!objfile->sf)
941     return 0;
942
943   /* If we have not read psymbols, but we have a function capable of reading
944      them, then that is an indication that they are in fact available.  Without
945      this function the symbols may have been already read in but they also may
946      not be present in this objfile.  */
947   if ((objfile->flags & OBJF_PSYMTABS_READ) == 0
948       && objfile->sf->sym_read_psymbols != NULL)
949     return 1;
950
951   return objfile->sf->qf->has_symbols (objfile);
952 }
953
954 /* Return non-zero if OBJFILE has full symbols.  */
955
956 int
957 objfile_has_full_symbols (struct objfile *objfile)
958 {
959   return objfile->compunit_symtabs != NULL;
960 }
961
962 /* Return non-zero if OBJFILE has full or partial symbols, either directly
963    or through a separate debug file.  */
964
965 int
966 objfile_has_symbols (struct objfile *objfile)
967 {
968   struct objfile *o;
969
970   for (o = objfile; o; o = objfile_separate_debug_iterate (objfile, o))
971     if (objfile_has_partial_symbols (o) || objfile_has_full_symbols (o))
972       return 1;
973   return 0;
974 }
975
976
977 /* Many places in gdb want to test just to see if we have any partial
978    symbols available.  This function returns zero if none are currently
979    available, nonzero otherwise.  */
980
981 int
982 have_partial_symbols (void)
983 {
984   for (objfile *ofp : current_program_space->objfiles ())
985     {
986       if (objfile_has_partial_symbols (ofp))
987         return 1;
988     }
989   return 0;
990 }
991
992 /* Many places in gdb want to test just to see if we have any full
993    symbols available.  This function returns zero if none are currently
994    available, nonzero otherwise.  */
995
996 int
997 have_full_symbols (void)
998 {
999   for (objfile *ofp : current_program_space->objfiles ())
1000     {
1001       if (objfile_has_full_symbols (ofp))
1002         return 1;
1003     }
1004   return 0;
1005 }
1006
1007
1008 /* This operations deletes all objfile entries that represent solibs that
1009    weren't explicitly loaded by the user, via e.g., the add-symbol-file
1010    command.  */
1011
1012 void
1013 objfile_purge_solibs (void)
1014 {
1015   for (objfile *objf : current_program_space->objfiles_safe ())
1016     {
1017       /* We assume that the solib package has been purged already, or will
1018          be soon.  */
1019
1020       if (!(objf->flags & OBJF_USERLOADED) && (objf->flags & OBJF_SHARED))
1021         delete objf;
1022     }
1023 }
1024
1025
1026 /* Many places in gdb want to test just to see if we have any minimal
1027    symbols available.  This function returns zero if none are currently
1028    available, nonzero otherwise.  */
1029
1030 int
1031 have_minimal_symbols (void)
1032 {
1033   for (objfile *ofp : current_program_space->objfiles ())
1034     {
1035       if (ofp->per_bfd->minimal_symbol_count > 0)
1036         {
1037           return 1;
1038         }
1039     }
1040   return 0;
1041 }
1042
1043 /* Qsort comparison function.  */
1044
1045 static int
1046 qsort_cmp (const void *a, const void *b)
1047 {
1048   const struct obj_section *sect1 = *(const struct obj_section **) a;
1049   const struct obj_section *sect2 = *(const struct obj_section **) b;
1050   const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1051   const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1052
1053   if (sect1_addr < sect2_addr)
1054     return -1;
1055   else if (sect1_addr > sect2_addr)
1056     return 1;
1057   else
1058     {
1059       /* Sections are at the same address.  This could happen if
1060          A) we have an objfile and a separate debuginfo.
1061          B) we are confused, and have added sections without proper relocation,
1062          or something like that.  */
1063
1064       const struct objfile *const objfile1 = sect1->objfile;
1065       const struct objfile *const objfile2 = sect2->objfile;
1066
1067       if (objfile1->separate_debug_objfile == objfile2
1068           || objfile2->separate_debug_objfile == objfile1)
1069         {
1070           /* Case A.  The ordering doesn't matter: separate debuginfo files
1071              will be filtered out later.  */
1072
1073           return 0;
1074         }
1075
1076       /* Case B.  Maintain stable sort order, so bugs in GDB are easier to
1077          triage.  This section could be slow (since we iterate over all
1078          objfiles in each call to qsort_cmp), but this shouldn't happen
1079          very often (GDB is already in a confused state; one hopes this
1080          doesn't happen at all).  If you discover that significant time is
1081          spent in the loops below, do 'set complaints 100' and examine the
1082          resulting complaints.  */
1083
1084       if (objfile1 == objfile2)
1085         {
1086           /* Both sections came from the same objfile.  We are really confused.
1087              Sort on sequence order of sections within the objfile.  */
1088
1089           const struct obj_section *osect;
1090
1091           ALL_OBJFILE_OSECTIONS (objfile1, osect)
1092             if (osect == sect1)
1093               return -1;
1094             else if (osect == sect2)
1095               return 1;
1096
1097           /* We should have found one of the sections before getting here.  */
1098           gdb_assert_not_reached ("section not found");
1099         }
1100       else
1101         {
1102           /* Sort on sequence number of the objfile in the chain.  */
1103
1104           for (objfile *objfile : current_program_space->objfiles ())
1105             if (objfile == objfile1)
1106               return -1;
1107             else if (objfile == objfile2)
1108               return 1;
1109
1110           /* We should have found one of the objfiles before getting here.  */
1111           gdb_assert_not_reached ("objfile not found");
1112         }
1113     }
1114
1115   /* Unreachable.  */
1116   gdb_assert_not_reached ("unexpected code path");
1117   return 0;
1118 }
1119
1120 /* Select "better" obj_section to keep.  We prefer the one that came from
1121    the real object, rather than the one from separate debuginfo.
1122    Most of the time the two sections are exactly identical, but with
1123    prelinking the .rel.dyn section in the real object may have different
1124    size.  */
1125
1126 static struct obj_section *
1127 preferred_obj_section (struct obj_section *a, struct obj_section *b)
1128 {
1129   gdb_assert (obj_section_addr (a) == obj_section_addr (b));
1130   gdb_assert ((a->objfile->separate_debug_objfile == b->objfile)
1131               || (b->objfile->separate_debug_objfile == a->objfile));
1132   gdb_assert ((a->objfile->separate_debug_objfile_backlink == b->objfile)
1133               || (b->objfile->separate_debug_objfile_backlink == a->objfile));
1134
1135   if (a->objfile->separate_debug_objfile != NULL)
1136     return a;
1137   return b;
1138 }
1139
1140 /* Return 1 if SECTION should be inserted into the section map.
1141    We want to insert only non-overlay and non-TLS section.  */
1142
1143 static int
1144 insert_section_p (const struct bfd *abfd,
1145                   const struct bfd_section *section)
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   if ((bfd_get_section_flags (abfd, section) & SEC_THREAD_LOCAL) != 0)
1156     /* This is a TLS section.  */
1157     return 0;
1158
1159   return 1;
1160 }
1161
1162 /* Filter out overlapping sections where one section came from the real
1163    objfile, and the other from a separate debuginfo file.
1164    Return the size of table after redundant sections have been eliminated.  */
1165
1166 static int
1167 filter_debuginfo_sections (struct obj_section **map, int map_size)
1168 {
1169   int i, j;
1170
1171   for (i = 0, j = 0; i < map_size - 1; i++)
1172     {
1173       struct obj_section *const sect1 = map[i];
1174       struct obj_section *const sect2 = map[i + 1];
1175       const struct objfile *const objfile1 = sect1->objfile;
1176       const struct objfile *const objfile2 = sect2->objfile;
1177       const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1178       const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1179
1180       if (sect1_addr == sect2_addr
1181           && (objfile1->separate_debug_objfile == objfile2
1182               || objfile2->separate_debug_objfile == objfile1))
1183         {
1184           map[j++] = preferred_obj_section (sect1, sect2);
1185           ++i;
1186         }
1187       else
1188         map[j++] = sect1;
1189     }
1190
1191   if (i < map_size)
1192     {
1193       gdb_assert (i == map_size - 1);
1194       map[j++] = map[i];
1195     }
1196
1197   /* The map should not have shrunk to less than half the original size.  */
1198   gdb_assert (map_size / 2 <= j);
1199
1200   return j;
1201 }
1202
1203 /* Filter out overlapping sections, issuing a warning if any are found.
1204    Overlapping sections could really be overlay sections which we didn't
1205    classify as such in insert_section_p, or we could be dealing with a
1206    corrupt binary.  */
1207
1208 static int
1209 filter_overlapping_sections (struct obj_section **map, int map_size)
1210 {
1211   int i, j;
1212
1213   for (i = 0, j = 0; i < map_size - 1; )
1214     {
1215       int k;
1216
1217       map[j++] = map[i];
1218       for (k = i + 1; k < map_size; k++)
1219         {
1220           struct obj_section *const sect1 = map[i];
1221           struct obj_section *const sect2 = map[k];
1222           const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1223           const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1224           const CORE_ADDR sect1_endaddr = obj_section_endaddr (sect1);
1225
1226           gdb_assert (sect1_addr <= sect2_addr);
1227
1228           if (sect1_endaddr <= sect2_addr)
1229             break;
1230           else
1231             {
1232               /* We have an overlap.  Report it.  */
1233
1234               struct objfile *const objf1 = sect1->objfile;
1235               struct objfile *const objf2 = sect2->objfile;
1236
1237               const struct bfd_section *const bfds1 = sect1->the_bfd_section;
1238               const struct bfd_section *const bfds2 = sect2->the_bfd_section;
1239
1240               const CORE_ADDR sect2_endaddr = obj_section_endaddr (sect2);
1241
1242               struct gdbarch *const gdbarch = get_objfile_arch (objf1);
1243
1244               complaint (_("unexpected overlap between:\n"
1245                            " (A) section `%s' from `%s' [%s, %s)\n"
1246                            " (B) section `%s' from `%s' [%s, %s).\n"
1247                            "Will ignore section B"),
1248                          bfd_section_name (abfd1, bfds1), objfile_name (objf1),
1249                          paddress (gdbarch, sect1_addr),
1250                          paddress (gdbarch, sect1_endaddr),
1251                          bfd_section_name (abfd2, bfds2), objfile_name (objf2),
1252                          paddress (gdbarch, sect2_addr),
1253                          paddress (gdbarch, sect2_endaddr));
1254             }
1255         }
1256       i = k;
1257     }
1258
1259   if (i < map_size)
1260     {
1261       gdb_assert (i == map_size - 1);
1262       map[j++] = map[i];
1263     }
1264
1265   return j;
1266 }
1267
1268
1269 /* Update PMAP, PMAP_SIZE with sections from all objfiles, excluding any
1270    TLS, overlay and overlapping sections.  */
1271
1272 static void
1273 update_section_map (struct program_space *pspace,
1274                     struct obj_section ***pmap, int *pmap_size)
1275 {
1276   struct objfile_pspace_info *pspace_info;
1277   int alloc_size, map_size, i;
1278   struct obj_section *s, **map;
1279
1280   pspace_info = get_objfile_pspace_data (pspace);
1281   gdb_assert (pspace_info->section_map_dirty != 0
1282               || pspace_info->new_objfiles_available != 0);
1283
1284   map = *pmap;
1285   xfree (map);
1286
1287   alloc_size = 0;
1288   for (objfile *objfile : pspace->objfiles ())
1289     ALL_OBJFILE_OSECTIONS (objfile, s)
1290       if (insert_section_p (objfile->obfd, s->the_bfd_section))
1291         alloc_size += 1;
1292
1293   /* This happens on detach/attach (e.g. in gdb.base/attach.exp).  */
1294   if (alloc_size == 0)
1295     {
1296       *pmap = NULL;
1297       *pmap_size = 0;
1298       return;
1299     }
1300
1301   map = XNEWVEC (struct obj_section *, alloc_size);
1302
1303   i = 0;
1304   for (objfile *objfile : pspace->objfiles ())
1305     ALL_OBJFILE_OSECTIONS (objfile, s)
1306       if (insert_section_p (objfile->obfd, s->the_bfd_section))
1307         map[i++] = s;
1308
1309   qsort (map, alloc_size, sizeof (*map), qsort_cmp);
1310   map_size = filter_debuginfo_sections(map, alloc_size);
1311   map_size = filter_overlapping_sections(map, map_size);
1312
1313   if (map_size < alloc_size)
1314     /* Some sections were eliminated.  Trim excess space.  */
1315     map = XRESIZEVEC (struct obj_section *, map, map_size);
1316   else
1317     gdb_assert (alloc_size == map_size);
1318
1319   *pmap = map;
1320   *pmap_size = map_size;
1321 }
1322
1323 /* Bsearch comparison function.  */
1324
1325 static int
1326 bsearch_cmp (const void *key, const void *elt)
1327 {
1328   const CORE_ADDR pc = *(CORE_ADDR *) key;
1329   const struct obj_section *section = *(const struct obj_section **) elt;
1330
1331   if (pc < obj_section_addr (section))
1332     return -1;
1333   if (pc < obj_section_endaddr (section))
1334     return 0;
1335   return 1;
1336 }
1337
1338 /* Returns a section whose range includes PC or NULL if none found.   */
1339
1340 struct obj_section *
1341 find_pc_section (CORE_ADDR pc)
1342 {
1343   struct objfile_pspace_info *pspace_info;
1344   struct obj_section *s, **sp;
1345
1346   /* Check for mapped overlay section first.  */
1347   s = find_pc_mapped_section (pc);
1348   if (s)
1349     return s;
1350
1351   pspace_info = get_objfile_pspace_data (current_program_space);
1352   if (pspace_info->section_map_dirty
1353       || (pspace_info->new_objfiles_available
1354           && !pspace_info->inhibit_updates))
1355     {
1356       update_section_map (current_program_space,
1357                           &pspace_info->sections,
1358                           &pspace_info->num_sections);
1359
1360       /* Don't need updates to section map until objfiles are added,
1361          removed or relocated.  */
1362       pspace_info->new_objfiles_available = 0;
1363       pspace_info->section_map_dirty = 0;
1364     }
1365
1366   /* The C standard (ISO/IEC 9899:TC2) requires the BASE argument to
1367      bsearch be non-NULL.  */
1368   if (pspace_info->sections == NULL)
1369     {
1370       gdb_assert (pspace_info->num_sections == 0);
1371       return NULL;
1372     }
1373
1374   sp = (struct obj_section **) bsearch (&pc,
1375                                         pspace_info->sections,
1376                                         pspace_info->num_sections,
1377                                         sizeof (*pspace_info->sections),
1378                                         bsearch_cmp);
1379   if (sp != NULL)
1380     return *sp;
1381   return NULL;
1382 }
1383
1384
1385 /* Return non-zero if PC is in a section called NAME.  */
1386
1387 int
1388 pc_in_section (CORE_ADDR pc, const char *name)
1389 {
1390   struct obj_section *s;
1391   int retval = 0;
1392
1393   s = find_pc_section (pc);
1394
1395   retval = (s != NULL
1396             && s->the_bfd_section->name != NULL
1397             && strcmp (s->the_bfd_section->name, name) == 0);
1398   return (retval);
1399 }
1400 \f
1401
1402 /* Set section_map_dirty so section map will be rebuilt next time it
1403    is used.  Called by reread_symbols.  */
1404
1405 void
1406 objfiles_changed (void)
1407 {
1408   /* Rebuild section map next time we need it.  */
1409   get_objfile_pspace_data (current_program_space)->section_map_dirty = 1;
1410 }
1411
1412 /* See comments in objfiles.h.  */
1413
1414 scoped_restore_tmpl<int>
1415 inhibit_section_map_updates (struct program_space *pspace)
1416 {
1417   return scoped_restore_tmpl<int>
1418     (&get_objfile_pspace_data (pspace)->inhibit_updates, 1);
1419 }
1420
1421 /* Return 1 if ADDR maps into one of the sections of OBJFILE and 0
1422    otherwise.  */
1423
1424 int
1425 is_addr_in_objfile (CORE_ADDR addr, const struct objfile *objfile)
1426 {
1427   struct obj_section *osect;
1428
1429   if (objfile == NULL)
1430     return 0;
1431
1432   ALL_OBJFILE_OSECTIONS (objfile, osect)
1433     {
1434       if (section_is_overlay (osect) && !section_is_mapped (osect))
1435         continue;
1436
1437       if (obj_section_addr (osect) <= addr
1438           && addr < obj_section_endaddr (osect))
1439         return 1;
1440     }
1441   return 0;
1442 }
1443
1444 int
1445 shared_objfile_contains_address_p (struct program_space *pspace,
1446                                    CORE_ADDR address)
1447 {
1448   for (objfile *objfile : pspace->objfiles ())
1449     {
1450       if ((objfile->flags & OBJF_SHARED) != 0
1451           && is_addr_in_objfile (address, objfile))
1452         return 1;
1453     }
1454
1455   return 0;
1456 }
1457
1458 /* The default implementation for the "iterate_over_objfiles_in_search_order"
1459    gdbarch method.  It is equivalent to use the objfiles iterable,
1460    searching the objfiles in the order they are stored internally,
1461    ignoring CURRENT_OBJFILE.
1462
1463    On most platorms, it should be close enough to doing the best
1464    we can without some knowledge specific to the architecture.  */
1465
1466 void
1467 default_iterate_over_objfiles_in_search_order
1468   (struct gdbarch *gdbarch,
1469    iterate_over_objfiles_in_search_order_cb_ftype *cb,
1470    void *cb_data, struct objfile *current_objfile)
1471 {
1472   int stop = 0;
1473
1474   for (objfile *objfile : current_program_space->objfiles ())
1475     {
1476        stop = cb (objfile, cb_data);
1477        if (stop)
1478          return;
1479     }
1480 }
1481
1482 /* See objfiles.h.  */
1483
1484 const char *
1485 objfile_name (const struct objfile *objfile)
1486 {
1487   if (objfile->obfd != NULL)
1488     return bfd_get_filename (objfile->obfd);
1489
1490   return objfile->original_name;
1491 }
1492
1493 /* See objfiles.h.  */
1494
1495 const char *
1496 objfile_filename (const struct objfile *objfile)
1497 {
1498   if (objfile->obfd != NULL)
1499     return bfd_get_filename (objfile->obfd);
1500
1501   return NULL;
1502 }
1503
1504 /* See objfiles.h.  */
1505
1506 const char *
1507 objfile_debug_name (const struct objfile *objfile)
1508 {
1509   return lbasename (objfile->original_name);
1510 }
1511
1512 /* See objfiles.h.  */
1513
1514 const char *
1515 objfile_flavour_name (struct objfile *objfile)
1516 {
1517   if (objfile->obfd != NULL)
1518     return bfd_flavour_name (bfd_get_flavour (objfile->obfd));
1519   return NULL;
1520 }
1521
1522 void
1523 _initialize_objfiles (void)
1524 {
1525   objfiles_pspace_data
1526     = register_program_space_data_with_cleanup (NULL,
1527                                                 objfiles_pspace_data_cleanup);
1528
1529   objfiles_bfd_data = register_bfd_data_with_cleanup (NULL,
1530                                                       objfile_bfd_data_free);
1531 }