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