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