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