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