Use htab_up for demangled hash
[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   /* Clear globals which might have pointed into a removed objfile.
674      FIXME: It's not clear which of these are supposed to persist
675      between expressions and which ought to be reset each time.  */
676   expression_context_block = NULL;
677   innermost_block.reset ();
678
679   /* Check to see if the current_source_symtab belongs to this objfile,
680      and if so, call clear_current_source_symtab_and_line.  */
681
682   {
683     struct symtab_and_line cursal = get_current_source_symtab_and_line ();
684
685     if (cursal.symtab && SYMTAB_OBJFILE (cursal.symtab) == this)
686       clear_current_source_symtab_and_line ();
687   }
688
689   /* Free the obstacks for non-reusable objfiles.  */
690   obstack_free (&objfile_obstack, 0);
691
692   /* Rebuild section map next time we need it.  */
693   get_objfile_pspace_data (pspace)->section_map_dirty = 1;
694
695   /* Free the map for static links.  There's no need to free static link
696      themselves since they were allocated on the objstack.  */
697   if (static_links != NULL)
698     htab_delete (static_links);
699 }
700
701 /* Free all the object files at once and clean up their users.  */
702
703 void
704 free_all_objfiles (void)
705 {
706   struct so_list *so;
707
708   /* Any objfile referencewould become stale.  */
709   for (so = master_so_list (); so; so = so->next)
710     gdb_assert (so->objfile == NULL);
711
712   for (objfile *objfile : current_program_space->objfiles_safe ())
713     delete objfile;
714   clear_symtab_users (0);
715 }
716 \f
717 /* A helper function for objfile_relocate1 that relocates a single
718    symbol.  */
719
720 static void
721 relocate_one_symbol (struct symbol *sym, struct objfile *objfile,
722                      struct section_offsets *delta)
723 {
724   fixup_symbol_section (sym, objfile);
725
726   /* The RS6000 code from which this was taken skipped
727      any symbols in STRUCT_DOMAIN or UNDEF_DOMAIN.
728      But I'm leaving out that test, on the theory that
729      they can't possibly pass the tests below.  */
730   if ((SYMBOL_CLASS (sym) == LOC_LABEL
731        || SYMBOL_CLASS (sym) == LOC_STATIC)
732       && SYMBOL_SECTION (sym) >= 0)
733     {
734       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (delta, SYMBOL_SECTION (sym));
735     }
736 }
737
738 /* Relocate OBJFILE to NEW_OFFSETS.  There should be OBJFILE->NUM_SECTIONS
739    entries in new_offsets.  SEPARATE_DEBUG_OBJFILE is not touched here.
740    Return non-zero iff any change happened.  */
741
742 static int
743 objfile_relocate1 (struct objfile *objfile, 
744                    const struct section_offsets *new_offsets)
745 {
746   struct section_offsets *delta =
747     ((struct section_offsets *) 
748      alloca (SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)));
749
750   int something_changed = 0;
751
752   for (int i = 0; i < objfile->num_sections; ++i)
753     {
754       delta->offsets[i] =
755         ANOFFSET (new_offsets, i) - ANOFFSET (objfile->section_offsets, i);
756       if (ANOFFSET (delta, i) != 0)
757         something_changed = 1;
758     }
759   if (!something_changed)
760     return 0;
761
762   /* OK, get all the symtabs.  */
763   {
764     for (compunit_symtab *cust : objfile->compunits ())
765       {
766         for (symtab *s : compunit_filetabs (cust))
767           {
768             struct linetable *l;
769
770             /* First the line table.  */
771             l = SYMTAB_LINETABLE (s);
772             if (l)
773               {
774                 for (int i = 0; i < l->nitems; ++i)
775                   l->item[i].pc += ANOFFSET (delta,
776                                              COMPUNIT_BLOCK_LINE_SECTION
777                                              (cust));
778               }
779           }
780       }
781
782     for (compunit_symtab *cust : objfile->compunits ())
783       {
784         const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (cust);
785         int block_line_section = COMPUNIT_BLOCK_LINE_SECTION (cust);
786
787         if (BLOCKVECTOR_MAP (bv))
788           addrmap_relocate (BLOCKVECTOR_MAP (bv),
789                             ANOFFSET (delta, block_line_section));
790
791         for (int i = 0; i < BLOCKVECTOR_NBLOCKS (bv); ++i)
792           {
793             struct block *b;
794             struct symbol *sym;
795             struct mdict_iterator miter;
796
797             b = BLOCKVECTOR_BLOCK (bv, i);
798             BLOCK_START (b) += ANOFFSET (delta, block_line_section);
799             BLOCK_END (b) += ANOFFSET (delta, block_line_section);
800
801             if (BLOCK_RANGES (b) != nullptr)
802               for (int j = 0; j < BLOCK_NRANGES (b); j++)
803                 {
804                   BLOCK_RANGE_START (b, j)
805                     += ANOFFSET (delta, block_line_section);
806                   BLOCK_RANGE_END (b, j) += ANOFFSET (delta,
807                                                       block_line_section);
808                 }
809
810             /* We only want to iterate over the local symbols, not any
811                symbols in included symtabs.  */
812             ALL_DICT_SYMBOLS (BLOCK_MULTIDICT (b), miter, sym)
813               {
814                 relocate_one_symbol (sym, objfile, delta);
815               }
816           }
817       }
818   }
819
820   /* This stores relocated addresses and so must be cleared.  This
821      will cause it to be recreated on demand.  */
822   objfile->psymbol_map.clear ();
823
824   /* Relocate isolated symbols.  */
825   {
826     struct symbol *iter;
827
828     for (iter = objfile->template_symbols; iter; iter = iter->hash_next)
829       relocate_one_symbol (iter, objfile, delta);
830   }
831
832   {
833     int i;
834
835     for (i = 0; i < objfile->num_sections; ++i)
836       (objfile->section_offsets)->offsets[i] = ANOFFSET (new_offsets, i);
837   }
838
839   /* Rebuild section map next time we need it.  */
840   get_objfile_pspace_data (objfile->pspace)->section_map_dirty = 1;
841
842   /* Update the table in exec_ops, used to read memory.  */
843   struct obj_section *s;
844   ALL_OBJFILE_OSECTIONS (objfile, s)
845     {
846       int idx = s - objfile->sections;
847
848       exec_set_section_address (bfd_get_filename (objfile->obfd), idx,
849                                 obj_section_addr (s));
850     }
851
852   /* Data changed.  */
853   return 1;
854 }
855
856 /* Relocate OBJFILE to NEW_OFFSETS.  There should be OBJFILE->NUM_SECTIONS
857    entries in new_offsets.  Process also OBJFILE's SEPARATE_DEBUG_OBJFILEs.
858
859    The number and ordering of sections does differ between the two objfiles.
860    Only their names match.  Also the file offsets will differ (objfile being
861    possibly prelinked but separate_debug_objfile is probably not prelinked) but
862    the in-memory absolute address as specified by NEW_OFFSETS must match both
863    files.  */
864
865 void
866 objfile_relocate (struct objfile *objfile,
867                   const struct section_offsets *new_offsets)
868 {
869   struct objfile *debug_objfile;
870   int changed = 0;
871
872   changed |= objfile_relocate1 (objfile, new_offsets);
873
874   for (debug_objfile = objfile->separate_debug_objfile;
875        debug_objfile;
876        debug_objfile = objfile_separate_debug_iterate (objfile, debug_objfile))
877     {
878       section_addr_info objfile_addrs
879         = build_section_addr_info_from_objfile (objfile);
880
881       /* Here OBJFILE_ADDRS contain the correct absolute addresses, the
882          relative ones must be already created according to debug_objfile.  */
883
884       addr_info_make_relative (&objfile_addrs, debug_objfile->obfd);
885
886       gdb_assert (debug_objfile->num_sections
887                   == gdb_bfd_count_sections (debug_objfile->obfd));
888       std::vector<struct section_offsets>
889         new_debug_offsets (SIZEOF_N_SECTION_OFFSETS (debug_objfile->num_sections));
890       relative_addr_info_to_section_offsets (new_debug_offsets.data (),
891                                              debug_objfile->num_sections,
892                                              objfile_addrs);
893
894       changed |= objfile_relocate1 (debug_objfile, new_debug_offsets.data ());
895     }
896
897   /* Relocate breakpoints as necessary, after things are relocated.  */
898   if (changed)
899     breakpoint_re_set ();
900 }
901
902 /* Rebase (add to the offsets) OBJFILE by SLIDE.  SEPARATE_DEBUG_OBJFILE is
903    not touched here.
904    Return non-zero iff any change happened.  */
905
906 static int
907 objfile_rebase1 (struct objfile *objfile, CORE_ADDR slide)
908 {
909   struct section_offsets *new_offsets =
910     ((struct section_offsets *)
911      alloca (SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)));
912   int i;
913
914   for (i = 0; i < objfile->num_sections; ++i)
915     new_offsets->offsets[i] = slide;
916
917   return objfile_relocate1 (objfile, new_offsets);
918 }
919
920 /* Rebase (add to the offsets) OBJFILE by SLIDE.  Process also OBJFILE's
921    SEPARATE_DEBUG_OBJFILEs.  */
922
923 void
924 objfile_rebase (struct objfile *objfile, CORE_ADDR slide)
925 {
926   struct objfile *debug_objfile;
927   int changed = 0;
928
929   changed |= objfile_rebase1 (objfile, slide);
930
931   for (debug_objfile = objfile->separate_debug_objfile;
932        debug_objfile;
933        debug_objfile = objfile_separate_debug_iterate (objfile, debug_objfile))
934     changed |= objfile_rebase1 (debug_objfile, slide);
935
936   /* Relocate breakpoints as necessary, after things are relocated.  */
937   if (changed)
938     breakpoint_re_set ();
939 }
940 \f
941 /* Return non-zero if OBJFILE has partial symbols.  */
942
943 int
944 objfile_has_partial_symbols (struct objfile *objfile)
945 {
946   if (!objfile->sf)
947     return 0;
948
949   /* If we have not read psymbols, but we have a function capable of reading
950      them, then that is an indication that they are in fact available.  Without
951      this function the symbols may have been already read in but they also may
952      not be present in this objfile.  */
953   if ((objfile->flags & OBJF_PSYMTABS_READ) == 0
954       && objfile->sf->sym_read_psymbols != NULL)
955     return 1;
956
957   return objfile->sf->qf->has_symbols (objfile);
958 }
959
960 /* Return non-zero if OBJFILE has full symbols.  */
961
962 int
963 objfile_has_full_symbols (struct objfile *objfile)
964 {
965   return objfile->compunit_symtabs != NULL;
966 }
967
968 /* Return non-zero if OBJFILE has full or partial symbols, either directly
969    or through a separate debug file.  */
970
971 int
972 objfile_has_symbols (struct objfile *objfile)
973 {
974   struct objfile *o;
975
976   for (o = objfile; o; o = objfile_separate_debug_iterate (objfile, o))
977     if (objfile_has_partial_symbols (o) || objfile_has_full_symbols (o))
978       return 1;
979   return 0;
980 }
981
982
983 /* Many places in gdb want to test just to see if we have any partial
984    symbols available.  This function returns zero if none are currently
985    available, nonzero otherwise.  */
986
987 int
988 have_partial_symbols (void)
989 {
990   for (objfile *ofp : current_program_space->objfiles ())
991     {
992       if (objfile_has_partial_symbols (ofp))
993         return 1;
994     }
995   return 0;
996 }
997
998 /* Many places in gdb want to test just to see if we have any full
999    symbols available.  This function returns zero if none are currently
1000    available, nonzero otherwise.  */
1001
1002 int
1003 have_full_symbols (void)
1004 {
1005   for (objfile *ofp : current_program_space->objfiles ())
1006     {
1007       if (objfile_has_full_symbols (ofp))
1008         return 1;
1009     }
1010   return 0;
1011 }
1012
1013
1014 /* This operations deletes all objfile entries that represent solibs that
1015    weren't explicitly loaded by the user, via e.g., the add-symbol-file
1016    command.  */
1017
1018 void
1019 objfile_purge_solibs (void)
1020 {
1021   for (objfile *objf : current_program_space->objfiles_safe ())
1022     {
1023       /* We assume that the solib package has been purged already, or will
1024          be soon.  */
1025
1026       if (!(objf->flags & OBJF_USERLOADED) && (objf->flags & OBJF_SHARED))
1027         delete objf;
1028     }
1029 }
1030
1031
1032 /* Many places in gdb want to test just to see if we have any minimal
1033    symbols available.  This function returns zero if none are currently
1034    available, nonzero otherwise.  */
1035
1036 int
1037 have_minimal_symbols (void)
1038 {
1039   for (objfile *ofp : current_program_space->objfiles ())
1040     {
1041       if (ofp->per_bfd->minimal_symbol_count > 0)
1042         {
1043           return 1;
1044         }
1045     }
1046   return 0;
1047 }
1048
1049 /* Qsort comparison function.  */
1050
1051 static int
1052 qsort_cmp (const void *a, const void *b)
1053 {
1054   const struct obj_section *sect1 = *(const struct obj_section **) a;
1055   const struct obj_section *sect2 = *(const struct obj_section **) b;
1056   const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1057   const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1058
1059   if (sect1_addr < sect2_addr)
1060     return -1;
1061   else if (sect1_addr > sect2_addr)
1062     return 1;
1063   else
1064     {
1065       /* Sections are at the same address.  This could happen if
1066          A) we have an objfile and a separate debuginfo.
1067          B) we are confused, and have added sections without proper relocation,
1068          or something like that.  */
1069
1070       const struct objfile *const objfile1 = sect1->objfile;
1071       const struct objfile *const objfile2 = sect2->objfile;
1072
1073       if (objfile1->separate_debug_objfile == objfile2
1074           || objfile2->separate_debug_objfile == objfile1)
1075         {
1076           /* Case A.  The ordering doesn't matter: separate debuginfo files
1077              will be filtered out later.  */
1078
1079           return 0;
1080         }
1081
1082       /* Case B.  Maintain stable sort order, so bugs in GDB are easier to
1083          triage.  This section could be slow (since we iterate over all
1084          objfiles in each call to qsort_cmp), but this shouldn't happen
1085          very often (GDB is already in a confused state; one hopes this
1086          doesn't happen at all).  If you discover that significant time is
1087          spent in the loops below, do 'set complaints 100' and examine the
1088          resulting complaints.  */
1089
1090       if (objfile1 == objfile2)
1091         {
1092           /* Both sections came from the same objfile.  We are really confused.
1093              Sort on sequence order of sections within the objfile.  */
1094
1095           const struct obj_section *osect;
1096
1097           ALL_OBJFILE_OSECTIONS (objfile1, osect)
1098             if (osect == sect1)
1099               return -1;
1100             else if (osect == sect2)
1101               return 1;
1102
1103           /* We should have found one of the sections before getting here.  */
1104           gdb_assert_not_reached ("section not found");
1105         }
1106       else
1107         {
1108           /* Sort on sequence number of the objfile in the chain.  */
1109
1110           for (objfile *objfile : current_program_space->objfiles ())
1111             if (objfile == objfile1)
1112               return -1;
1113             else if (objfile == objfile2)
1114               return 1;
1115
1116           /* We should have found one of the objfiles before getting here.  */
1117           gdb_assert_not_reached ("objfile not found");
1118         }
1119     }
1120
1121   /* Unreachable.  */
1122   gdb_assert_not_reached ("unexpected code path");
1123   return 0;
1124 }
1125
1126 /* Select "better" obj_section to keep.  We prefer the one that came from
1127    the real object, rather than the one from separate debuginfo.
1128    Most of the time the two sections are exactly identical, but with
1129    prelinking the .rel.dyn section in the real object may have different
1130    size.  */
1131
1132 static struct obj_section *
1133 preferred_obj_section (struct obj_section *a, struct obj_section *b)
1134 {
1135   gdb_assert (obj_section_addr (a) == obj_section_addr (b));
1136   gdb_assert ((a->objfile->separate_debug_objfile == b->objfile)
1137               || (b->objfile->separate_debug_objfile == a->objfile));
1138   gdb_assert ((a->objfile->separate_debug_objfile_backlink == b->objfile)
1139               || (b->objfile->separate_debug_objfile_backlink == a->objfile));
1140
1141   if (a->objfile->separate_debug_objfile != NULL)
1142     return a;
1143   return b;
1144 }
1145
1146 /* Return 1 if SECTION should be inserted into the section map.
1147    We want to insert only non-overlay and non-TLS section.  */
1148
1149 static int
1150 insert_section_p (const struct bfd *abfd,
1151                   const struct bfd_section *section)
1152 {
1153   const bfd_vma lma = bfd_section_lma (abfd, section);
1154
1155   if (overlay_debugging && lma != 0 && lma != bfd_section_vma (abfd, section)
1156       && (bfd_get_file_flags (abfd) & BFD_IN_MEMORY) == 0)
1157     /* This is an overlay section.  IN_MEMORY check is needed to avoid
1158        discarding sections from the "system supplied DSO" (aka vdso)
1159        on some Linux systems (e.g. Fedora 11).  */
1160     return 0;
1161   if ((bfd_get_section_flags (abfd, section) & SEC_THREAD_LOCAL) != 0)
1162     /* This is a TLS section.  */
1163     return 0;
1164
1165   return 1;
1166 }
1167
1168 /* Filter out overlapping sections where one section came from the real
1169    objfile, and the other from a separate debuginfo file.
1170    Return the size of table after redundant sections have been eliminated.  */
1171
1172 static int
1173 filter_debuginfo_sections (struct obj_section **map, int map_size)
1174 {
1175   int i, j;
1176
1177   for (i = 0, j = 0; i < map_size - 1; i++)
1178     {
1179       struct obj_section *const sect1 = map[i];
1180       struct obj_section *const sect2 = map[i + 1];
1181       const struct objfile *const objfile1 = sect1->objfile;
1182       const struct objfile *const objfile2 = sect2->objfile;
1183       const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1184       const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1185
1186       if (sect1_addr == sect2_addr
1187           && (objfile1->separate_debug_objfile == objfile2
1188               || objfile2->separate_debug_objfile == objfile1))
1189         {
1190           map[j++] = preferred_obj_section (sect1, sect2);
1191           ++i;
1192         }
1193       else
1194         map[j++] = sect1;
1195     }
1196
1197   if (i < map_size)
1198     {
1199       gdb_assert (i == map_size - 1);
1200       map[j++] = map[i];
1201     }
1202
1203   /* The map should not have shrunk to less than half the original size.  */
1204   gdb_assert (map_size / 2 <= j);
1205
1206   return j;
1207 }
1208
1209 /* Filter out overlapping sections, issuing a warning if any are found.
1210    Overlapping sections could really be overlay sections which we didn't
1211    classify as such in insert_section_p, or we could be dealing with a
1212    corrupt binary.  */
1213
1214 static int
1215 filter_overlapping_sections (struct obj_section **map, int map_size)
1216 {
1217   int i, j;
1218
1219   for (i = 0, j = 0; i < map_size - 1; )
1220     {
1221       int k;
1222
1223       map[j++] = map[i];
1224       for (k = i + 1; k < map_size; k++)
1225         {
1226           struct obj_section *const sect1 = map[i];
1227           struct obj_section *const sect2 = map[k];
1228           const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1229           const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1230           const CORE_ADDR sect1_endaddr = obj_section_endaddr (sect1);
1231
1232           gdb_assert (sect1_addr <= sect2_addr);
1233
1234           if (sect1_endaddr <= sect2_addr)
1235             break;
1236           else
1237             {
1238               /* We have an overlap.  Report it.  */
1239
1240               struct objfile *const objf1 = sect1->objfile;
1241               struct objfile *const objf2 = sect2->objfile;
1242
1243               const struct bfd_section *const bfds1 = sect1->the_bfd_section;
1244               const struct bfd_section *const bfds2 = sect2->the_bfd_section;
1245
1246               const CORE_ADDR sect2_endaddr = obj_section_endaddr (sect2);
1247
1248               struct gdbarch *const gdbarch = get_objfile_arch (objf1);
1249
1250               complaint (_("unexpected overlap between:\n"
1251                            " (A) section `%s' from `%s' [%s, %s)\n"
1252                            " (B) section `%s' from `%s' [%s, %s).\n"
1253                            "Will ignore section B"),
1254                          bfd_section_name (abfd1, bfds1), objfile_name (objf1),
1255                          paddress (gdbarch, sect1_addr),
1256                          paddress (gdbarch, sect1_endaddr),
1257                          bfd_section_name (abfd2, bfds2), objfile_name (objf2),
1258                          paddress (gdbarch, sect2_addr),
1259                          paddress (gdbarch, sect2_endaddr));
1260             }
1261         }
1262       i = k;
1263     }
1264
1265   if (i < map_size)
1266     {
1267       gdb_assert (i == map_size - 1);
1268       map[j++] = map[i];
1269     }
1270
1271   return j;
1272 }
1273
1274
1275 /* Update PMAP, PMAP_SIZE with sections from all objfiles, excluding any
1276    TLS, overlay and overlapping sections.  */
1277
1278 static void
1279 update_section_map (struct program_space *pspace,
1280                     struct obj_section ***pmap, int *pmap_size)
1281 {
1282   struct objfile_pspace_info *pspace_info;
1283   int alloc_size, map_size, i;
1284   struct obj_section *s, **map;
1285
1286   pspace_info = get_objfile_pspace_data (pspace);
1287   gdb_assert (pspace_info->section_map_dirty != 0
1288               || pspace_info->new_objfiles_available != 0);
1289
1290   map = *pmap;
1291   xfree (map);
1292
1293   alloc_size = 0;
1294   for (objfile *objfile : pspace->objfiles ())
1295     ALL_OBJFILE_OSECTIONS (objfile, s)
1296       if (insert_section_p (objfile->obfd, s->the_bfd_section))
1297         alloc_size += 1;
1298
1299   /* This happens on detach/attach (e.g. in gdb.base/attach.exp).  */
1300   if (alloc_size == 0)
1301     {
1302       *pmap = NULL;
1303       *pmap_size = 0;
1304       return;
1305     }
1306
1307   map = XNEWVEC (struct obj_section *, alloc_size);
1308
1309   i = 0;
1310   for (objfile *objfile : pspace->objfiles ())
1311     ALL_OBJFILE_OSECTIONS (objfile, s)
1312       if (insert_section_p (objfile->obfd, s->the_bfd_section))
1313         map[i++] = s;
1314
1315   qsort (map, alloc_size, sizeof (*map), qsort_cmp);
1316   map_size = filter_debuginfo_sections(map, alloc_size);
1317   map_size = filter_overlapping_sections(map, map_size);
1318
1319   if (map_size < alloc_size)
1320     /* Some sections were eliminated.  Trim excess space.  */
1321     map = XRESIZEVEC (struct obj_section *, map, map_size);
1322   else
1323     gdb_assert (alloc_size == map_size);
1324
1325   *pmap = map;
1326   *pmap_size = map_size;
1327 }
1328
1329 /* Bsearch comparison function.  */
1330
1331 static int
1332 bsearch_cmp (const void *key, const void *elt)
1333 {
1334   const CORE_ADDR pc = *(CORE_ADDR *) key;
1335   const struct obj_section *section = *(const struct obj_section **) elt;
1336
1337   if (pc < obj_section_addr (section))
1338     return -1;
1339   if (pc < obj_section_endaddr (section))
1340     return 0;
1341   return 1;
1342 }
1343
1344 /* Returns a section whose range includes PC or NULL if none found.   */
1345
1346 struct obj_section *
1347 find_pc_section (CORE_ADDR pc)
1348 {
1349   struct objfile_pspace_info *pspace_info;
1350   struct obj_section *s, **sp;
1351
1352   /* Check for mapped overlay section first.  */
1353   s = find_pc_mapped_section (pc);
1354   if (s)
1355     return s;
1356
1357   pspace_info = get_objfile_pspace_data (current_program_space);
1358   if (pspace_info->section_map_dirty
1359       || (pspace_info->new_objfiles_available
1360           && !pspace_info->inhibit_updates))
1361     {
1362       update_section_map (current_program_space,
1363                           &pspace_info->sections,
1364                           &pspace_info->num_sections);
1365
1366       /* Don't need updates to section map until objfiles are added,
1367          removed or relocated.  */
1368       pspace_info->new_objfiles_available = 0;
1369       pspace_info->section_map_dirty = 0;
1370     }
1371
1372   /* The C standard (ISO/IEC 9899:TC2) requires the BASE argument to
1373      bsearch be non-NULL.  */
1374   if (pspace_info->sections == NULL)
1375     {
1376       gdb_assert (pspace_info->num_sections == 0);
1377       return NULL;
1378     }
1379
1380   sp = (struct obj_section **) bsearch (&pc,
1381                                         pspace_info->sections,
1382                                         pspace_info->num_sections,
1383                                         sizeof (*pspace_info->sections),
1384                                         bsearch_cmp);
1385   if (sp != NULL)
1386     return *sp;
1387   return NULL;
1388 }
1389
1390
1391 /* Return non-zero if PC is in a section called NAME.  */
1392
1393 int
1394 pc_in_section (CORE_ADDR pc, const char *name)
1395 {
1396   struct obj_section *s;
1397   int retval = 0;
1398
1399   s = find_pc_section (pc);
1400
1401   retval = (s != NULL
1402             && s->the_bfd_section->name != NULL
1403             && strcmp (s->the_bfd_section->name, name) == 0);
1404   return (retval);
1405 }
1406 \f
1407
1408 /* Set section_map_dirty so section map will be rebuilt next time it
1409    is used.  Called by reread_symbols.  */
1410
1411 void
1412 objfiles_changed (void)
1413 {
1414   /* Rebuild section map next time we need it.  */
1415   get_objfile_pspace_data (current_program_space)->section_map_dirty = 1;
1416 }
1417
1418 /* See comments in objfiles.h.  */
1419
1420 scoped_restore_tmpl<int>
1421 inhibit_section_map_updates (struct program_space *pspace)
1422 {
1423   return scoped_restore_tmpl<int>
1424     (&get_objfile_pspace_data (pspace)->inhibit_updates, 1);
1425 }
1426
1427 /* Return 1 if ADDR maps into one of the sections of OBJFILE and 0
1428    otherwise.  */
1429
1430 int
1431 is_addr_in_objfile (CORE_ADDR addr, const struct objfile *objfile)
1432 {
1433   struct obj_section *osect;
1434
1435   if (objfile == NULL)
1436     return 0;
1437
1438   ALL_OBJFILE_OSECTIONS (objfile, osect)
1439     {
1440       if (section_is_overlay (osect) && !section_is_mapped (osect))
1441         continue;
1442
1443       if (obj_section_addr (osect) <= addr
1444           && addr < obj_section_endaddr (osect))
1445         return 1;
1446     }
1447   return 0;
1448 }
1449
1450 int
1451 shared_objfile_contains_address_p (struct program_space *pspace,
1452                                    CORE_ADDR address)
1453 {
1454   for (objfile *objfile : pspace->objfiles ())
1455     {
1456       if ((objfile->flags & OBJF_SHARED) != 0
1457           && is_addr_in_objfile (address, objfile))
1458         return 1;
1459     }
1460
1461   return 0;
1462 }
1463
1464 /* The default implementation for the "iterate_over_objfiles_in_search_order"
1465    gdbarch method.  It is equivalent to use the objfiles iterable,
1466    searching the objfiles in the order they are stored internally,
1467    ignoring CURRENT_OBJFILE.
1468
1469    On most platorms, it should be close enough to doing the best
1470    we can without some knowledge specific to the architecture.  */
1471
1472 void
1473 default_iterate_over_objfiles_in_search_order
1474   (struct gdbarch *gdbarch,
1475    iterate_over_objfiles_in_search_order_cb_ftype *cb,
1476    void *cb_data, struct objfile *current_objfile)
1477 {
1478   int stop = 0;
1479
1480   for (objfile *objfile : current_program_space->objfiles ())
1481     {
1482        stop = cb (objfile, cb_data);
1483        if (stop)
1484          return;
1485     }
1486 }
1487
1488 /* See objfiles.h.  */
1489
1490 const char *
1491 objfile_name (const struct objfile *objfile)
1492 {
1493   if (objfile->obfd != NULL)
1494     return bfd_get_filename (objfile->obfd);
1495
1496   return objfile->original_name;
1497 }
1498
1499 /* See objfiles.h.  */
1500
1501 const char *
1502 objfile_filename (const struct objfile *objfile)
1503 {
1504   if (objfile->obfd != NULL)
1505     return bfd_get_filename (objfile->obfd);
1506
1507   return NULL;
1508 }
1509
1510 /* See objfiles.h.  */
1511
1512 const char *
1513 objfile_debug_name (const struct objfile *objfile)
1514 {
1515   return lbasename (objfile->original_name);
1516 }
1517
1518 /* See objfiles.h.  */
1519
1520 const char *
1521 objfile_flavour_name (struct objfile *objfile)
1522 {
1523   if (objfile->obfd != NULL)
1524     return bfd_flavour_name (bfd_get_flavour (objfile->obfd));
1525   return NULL;
1526 }
1527
1528 void
1529 _initialize_objfiles (void)
1530 {
1531   objfiles_pspace_data
1532     = register_program_space_data_with_cleanup (NULL,
1533                                                 objfiles_pspace_data_cleanup);
1534
1535   objfiles_bfd_data = register_bfd_data_with_cleanup (NULL,
1536                                                       objfile_bfd_data_free);
1537 }