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