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