don't share per-BFD data if relocations are needed
[external/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;
89
90   info = program_space_data (pspace, objfiles_pspace_data);
91   if (info != NULL)
92     {
93       xfree (info->sections);
94       xfree (info);
95     }
96 }
97
98 /* Get the current svr4 data.  If none is found yet, add it now.  This
99    function always returns a valid object.  */
100
101 static struct objfile_pspace_info *
102 get_objfile_pspace_data (struct program_space *pspace)
103 {
104   struct objfile_pspace_info *info;
105
106   info = program_space_data (pspace, objfiles_pspace_data);
107   if (info == NULL)
108     {
109       info = XZALLOC (struct objfile_pspace_info);
110       set_program_space_data (pspace, objfiles_pspace_data, info);
111     }
112
113   return info;
114 }
115
116 \f
117
118 /* Per-BFD data key.  */
119
120 static const struct bfd_data *objfiles_bfd_data;
121
122 /* Create the per-BFD storage object for OBJFILE.  If ABFD is not
123    NULL, and it already has a per-BFD storage object, use that.
124    Otherwise, allocate a new per-BFD storage object.  If ABFD is not
125    NULL, the object is allocated on the BFD; otherwise it is allocated
126    on OBJFILE's obstack.  Note that it is not safe to call this
127    multiple times for a given OBJFILE -- it can only be called when
128    allocating or re-initializing OBJFILE.  */
129
130 static struct objfile_per_bfd_storage *
131 get_objfile_bfd_data (struct objfile *objfile, struct bfd *abfd)
132 {
133   struct objfile_per_bfd_storage *storage = NULL;
134
135   if (abfd != NULL)
136     storage = bfd_data (abfd, objfiles_bfd_data);
137
138   if (storage == NULL)
139     {
140       /* If the object requires gdb to do relocations, we simply fall
141          back to not sharing data across users.  These cases are rare
142          enough that this seems reasonable.  */
143       if (abfd != NULL && !gdb_bfd_requires_relocations (abfd))
144         {
145           storage = bfd_zalloc (abfd, sizeof (struct objfile_per_bfd_storage));
146           set_bfd_data (abfd, objfiles_bfd_data, storage);
147         }
148       else
149         storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
150                                   struct objfile_per_bfd_storage);
151
152       /* Look up the gdbarch associated with the BFD.  */
153       if (abfd != NULL)
154         storage->gdbarch = gdbarch_from_bfd (abfd);
155
156       obstack_init (&storage->storage_obstack);
157       storage->filename_cache = bcache_xmalloc (NULL, NULL);
158       storage->macro_cache = bcache_xmalloc (NULL, NULL);
159     }
160
161   return storage;
162 }
163
164 /* Free STORAGE.  */
165
166 static void
167 free_objfile_per_bfd_storage (struct objfile_per_bfd_storage *storage)
168 {
169   bcache_xfree (storage->filename_cache);
170   bcache_xfree (storage->macro_cache);
171   obstack_free (&storage->storage_obstack, 0);
172 }
173
174 /* A wrapper for free_objfile_per_bfd_storage that can be passed as a
175    cleanup function to the BFD registry.  */
176
177 static void
178 objfile_bfd_data_free (struct bfd *unused, void *d)
179 {
180   free_objfile_per_bfd_storage (d);
181 }
182
183 /* See objfiles.h.  */
184
185 void
186 set_objfile_per_bfd (struct objfile *objfile)
187 {
188   objfile->per_bfd = get_objfile_bfd_data (objfile, objfile->obfd);
189 }
190
191 \f
192
193 /* Called via bfd_map_over_sections to build up the section table that
194    the objfile references.  The objfile contains pointers to the start
195    of the table (objfile->sections) and to the first location after
196    the end of the table (objfile->sections_end).  */
197
198 static void
199 add_to_objfile_sections_full (struct bfd *abfd, struct bfd_section *asect,
200                               struct objfile *objfile, int force)
201 {
202   struct obj_section *section;
203
204   if (!force)
205     {
206       flagword aflag;
207
208       aflag = bfd_get_section_flags (abfd, asect);
209       if (!(aflag & SEC_ALLOC))
210         return;
211     }
212
213   section = &objfile->sections[gdb_bfd_section_index (abfd, asect)];
214   section->objfile = objfile;
215   section->the_bfd_section = asect;
216   section->ovly_mapped = 0;
217 }
218
219 static void
220 add_to_objfile_sections (struct bfd *abfd, struct bfd_section *asect,
221                          void *objfilep)
222 {
223   add_to_objfile_sections_full (abfd, asect, objfilep, 0);
224 }
225
226 /* Builds a section table for OBJFILE.
227
228    Note that the OFFSET and OVLY_MAPPED in each table entry are
229    initialized to zero.  */
230
231 void
232 build_objfile_section_table (struct objfile *objfile)
233 {
234   int count = gdb_bfd_count_sections (objfile->obfd);
235
236   objfile->sections = OBSTACK_CALLOC (&objfile->objfile_obstack,
237                                       count,
238                                       struct obj_section);
239   objfile->sections_end = (objfile->sections + count);
240   bfd_map_over_sections (objfile->obfd,
241                          add_to_objfile_sections, (void *) objfile);
242
243   /* See gdb_bfd_section_index.  */
244   add_to_objfile_sections_full (objfile->obfd, bfd_com_section_ptr, objfile, 1);
245   add_to_objfile_sections_full (objfile->obfd, bfd_und_section_ptr, objfile, 1);
246   add_to_objfile_sections_full (objfile->obfd, bfd_abs_section_ptr, objfile, 1);
247   add_to_objfile_sections_full (objfile->obfd, bfd_ind_section_ptr, objfile, 1);
248 }
249
250 /* Given a pointer to an initialized bfd (ABFD) and some flag bits
251    allocate a new objfile struct, fill it in as best we can, link it
252    into the list of all known objfiles, and return a pointer to the
253    new objfile struct.
254
255    NAME should contain original non-canonicalized filename or other
256    identifier as entered by user.  If there is no better source use
257    bfd_get_filename (ABFD).  NAME may be NULL only if ABFD is NULL.
258    NAME content is copied into returned objfile.
259
260    The FLAGS word contains various bits (OBJF_*) that can be taken as
261    requests for specific operations.  Other bits like OBJF_SHARED are
262    simply copied through to the new objfile flags member.  */
263
264 /* NOTE: carlton/2003-02-04: This function is called with args NULL, 0
265    by jv-lang.c, to create an artificial objfile used to hold
266    information about dynamically-loaded Java classes.  Unfortunately,
267    that branch of this function doesn't get tested very frequently, so
268    it's prone to breakage.  (E.g. at one time the name was set to NULL
269    in that situation, which broke a loop over all names in the dynamic
270    library loader.)  If you change this function, please try to leave
271    things in a consistent state even if abfd is NULL.  */
272
273 struct objfile *
274 allocate_objfile (bfd *abfd, const char *name, int flags)
275 {
276   struct objfile *objfile;
277
278   objfile = (struct objfile *) xzalloc (sizeof (struct objfile));
279   objfile->psymbol_cache = psymbol_bcache_init ();
280   /* We could use obstack_specify_allocation here instead, but
281      gdb_obstack.h specifies the alloc/dealloc functions.  */
282   obstack_init (&objfile->objfile_obstack);
283   terminate_minimal_symbol_table (objfile);
284
285   objfile_alloc_data (objfile);
286
287   if (name == NULL)
288     {
289       gdb_assert (abfd == NULL);
290       name = "<<anonymous objfile>>";
291     }
292   objfile->original_name = obstack_copy0 (&objfile->objfile_obstack, name,
293                                           strlen (name));
294
295   /* Update the per-objfile information that comes from the bfd, ensuring
296      that any data that is reference is saved in the per-objfile data
297      region.  */
298
299   objfile->obfd = abfd;
300   gdb_bfd_ref (abfd);
301   if (abfd != NULL)
302     {
303       objfile->mtime = bfd_get_mtime (abfd);
304
305       /* Build section table.  */
306       build_objfile_section_table (objfile);
307     }
308
309   objfile->per_bfd = get_objfile_bfd_data (objfile, abfd);
310   objfile->pspace = current_program_space;
311
312   /* Initialize the section indexes for this objfile, so that we can
313      later detect if they are used w/o being properly assigned to.  */
314
315   objfile->sect_index_text = -1;
316   objfile->sect_index_data = -1;
317   objfile->sect_index_bss = -1;
318   objfile->sect_index_rodata = -1;
319
320   /* Add this file onto the tail of the linked list of other such files.  */
321
322   objfile->next = NULL;
323   if (object_files == NULL)
324     object_files = objfile;
325   else
326     {
327       struct objfile *last_one;
328
329       for (last_one = object_files;
330            last_one->next;
331            last_one = last_one->next);
332       last_one->next = objfile;
333     }
334
335   /* Save passed in flag bits.  */
336   objfile->flags |= flags;
337
338   /* Rebuild section map next time we need it.  */
339   get_objfile_pspace_data (objfile->pspace)->new_objfiles_available = 1;
340
341   return objfile;
342 }
343
344 /* Retrieve the gdbarch associated with OBJFILE.  */
345 struct gdbarch *
346 get_objfile_arch (struct objfile *objfile)
347 {
348   return objfile->per_bfd->gdbarch;
349 }
350
351 /* If there is a valid and known entry point, function fills *ENTRY_P with it
352    and returns non-zero; otherwise it returns zero.  */
353
354 int
355 entry_point_address_query (CORE_ADDR *entry_p)
356 {
357   if (symfile_objfile == NULL || !symfile_objfile->ei.entry_point_p)
358     return 0;
359
360   *entry_p = symfile_objfile->ei.entry_point;
361
362   return 1;
363 }
364
365 /* Get current entry point address.  Call error if it is not known.  */
366
367 CORE_ADDR
368 entry_point_address (void)
369 {
370   CORE_ADDR retval;
371
372   if (!entry_point_address_query (&retval))
373     error (_("Entry point address is not known."));
374
375   return retval;
376 }
377
378 /* Iterator on PARENT and every separate debug objfile of PARENT.
379    The usage pattern is:
380      for (objfile = parent;
381           objfile;
382           objfile = objfile_separate_debug_iterate (parent, objfile))
383        ...
384 */
385
386 struct objfile *
387 objfile_separate_debug_iterate (const struct objfile *parent,
388                                 const struct objfile *objfile)
389 {
390   struct objfile *res;
391
392   /* If any, return the first child.  */
393   res = objfile->separate_debug_objfile;
394   if (res)
395     return res;
396
397   /* Common case where there is no separate debug objfile.  */
398   if (objfile == parent)
399     return NULL;
400
401   /* Return the brother if any.  Note that we don't iterate on brothers of
402      the parents.  */
403   res = objfile->separate_debug_objfile_link;
404   if (res)
405     return res;
406
407   for (res = objfile->separate_debug_objfile_backlink;
408        res != parent;
409        res = res->separate_debug_objfile_backlink)
410     {
411       gdb_assert (res != NULL);
412       if (res->separate_debug_objfile_link)
413         return res->separate_debug_objfile_link;
414     }
415   return NULL;
416 }
417
418 /* Put one object file before a specified on in the global list.
419    This can be used to make sure an object file is destroyed before
420    another when using ALL_OBJFILES_SAFE to free all objfiles.  */
421 void
422 put_objfile_before (struct objfile *objfile, struct objfile *before_this)
423 {
424   struct objfile **objp;
425
426   unlink_objfile (objfile);
427   
428   for (objp = &object_files; *objp != NULL; objp = &((*objp)->next))
429     {
430       if (*objp == before_this)
431         {
432           objfile->next = *objp;
433           *objp = objfile;
434           return;
435         }
436     }
437   
438   internal_error (__FILE__, __LINE__,
439                   _("put_objfile_before: before objfile not in list"));
440 }
441
442 /* Put OBJFILE at the front of the list.  */
443
444 void
445 objfile_to_front (struct objfile *objfile)
446 {
447   struct objfile **objp;
448   for (objp = &object_files; *objp != NULL; objp = &((*objp)->next))
449     {
450       if (*objp == objfile)
451         {
452           /* Unhook it from where it is.  */
453           *objp = objfile->next;
454           /* Put it in the front.  */
455           objfile->next = object_files;
456           object_files = objfile;
457           break;
458         }
459     }
460 }
461
462 /* Unlink OBJFILE from the list of known objfiles, if it is found in the
463    list.
464
465    It is not a bug, or error, to call this function if OBJFILE is not known
466    to be in the current list.  This is done in the case of mapped objfiles,
467    for example, just to ensure that the mapped objfile doesn't appear twice
468    in the list.  Since the list is threaded, linking in a mapped objfile
469    twice would create a circular list.
470
471    If OBJFILE turns out to be in the list, we zap it's NEXT pointer after
472    unlinking it, just to ensure that we have completely severed any linkages
473    between the OBJFILE and the list.  */
474
475 void
476 unlink_objfile (struct objfile *objfile)
477 {
478   struct objfile **objpp;
479
480   for (objpp = &object_files; *objpp != NULL; objpp = &((*objpp)->next))
481     {
482       if (*objpp == objfile)
483         {
484           *objpp = (*objpp)->next;
485           objfile->next = NULL;
486           return;
487         }
488     }
489
490   internal_error (__FILE__, __LINE__,
491                   _("unlink_objfile: objfile already unlinked"));
492 }
493
494 /* Add OBJFILE as a separate debug objfile of PARENT.  */
495
496 void
497 add_separate_debug_objfile (struct objfile *objfile, struct objfile *parent)
498 {
499   gdb_assert (objfile && parent);
500
501   /* Must not be already in a list.  */
502   gdb_assert (objfile->separate_debug_objfile_backlink == NULL);
503   gdb_assert (objfile->separate_debug_objfile_link == NULL);
504   gdb_assert (objfile->separate_debug_objfile == NULL);
505   gdb_assert (parent->separate_debug_objfile_backlink == NULL);
506   gdb_assert (parent->separate_debug_objfile_link == NULL);
507
508   objfile->separate_debug_objfile_backlink = parent;
509   objfile->separate_debug_objfile_link = parent->separate_debug_objfile;
510   parent->separate_debug_objfile = objfile;
511
512   /* Put the separate debug object before the normal one, this is so that
513      usage of the ALL_OBJFILES_SAFE macro will stay safe.  */
514   put_objfile_before (objfile, parent);
515 }
516
517 /* Free all separate debug objfile of OBJFILE, but don't free OBJFILE
518    itself.  */
519
520 void
521 free_objfile_separate_debug (struct objfile *objfile)
522 {
523   struct objfile *child;
524
525   for (child = objfile->separate_debug_objfile; child;)
526     {
527       struct objfile *next_child = child->separate_debug_objfile_link;
528       free_objfile (child);
529       child = next_child;
530     }
531 }
532
533 /* Destroy an objfile and all the symtabs and psymtabs under it.  Note
534    that as much as possible is allocated on the objfile_obstack 
535    so that the memory can be efficiently freed.
536
537    Things which we do NOT free because they are not in malloc'd memory
538    or not in memory specific to the objfile include:
539
540    objfile -> sf
541
542    FIXME:  If the objfile is using reusable symbol information (via mmalloc),
543    then we need to take into account the fact that more than one process
544    may be using the symbol information at the same time (when mmalloc is
545    extended to support cooperative locking).  When more than one process
546    is using the mapped symbol info, we need to be more careful about when
547    we free objects in the reusable area.  */
548
549 void
550 free_objfile (struct objfile *objfile)
551 {
552   /* Free all separate debug objfiles.  */
553   free_objfile_separate_debug (objfile);
554
555   if (objfile->separate_debug_objfile_backlink)
556     {
557       /* We freed the separate debug file, make sure the base objfile
558          doesn't reference it.  */
559       struct objfile *child;
560
561       child = objfile->separate_debug_objfile_backlink->separate_debug_objfile;
562
563       if (child == objfile)
564         {
565           /* OBJFILE is the first child.  */
566           objfile->separate_debug_objfile_backlink->separate_debug_objfile =
567             objfile->separate_debug_objfile_link;
568         }
569       else
570         {
571           /* Find OBJFILE in the list.  */
572           while (1)
573             {
574               if (child->separate_debug_objfile_link == objfile)
575                 {
576                   child->separate_debug_objfile_link =
577                     objfile->separate_debug_objfile_link;
578                   break;
579                 }
580               child = child->separate_debug_objfile_link;
581               gdb_assert (child);
582             }
583         }
584     }
585   
586   /* Remove any references to this objfile in the global value
587      lists.  */
588   preserve_values (objfile);
589
590   /* It still may reference data modules have associated with the objfile and
591      the symbol file data.  */
592   forget_cached_source_info_for_objfile (objfile);
593
594   breakpoint_free_objfile (objfile);
595   btrace_free_objfile (objfile);
596
597   /* First do any symbol file specific actions required when we are
598      finished with a particular symbol file.  Note that if the objfile
599      is using reusable symbol information (via mmalloc) then each of
600      these routines is responsible for doing the correct thing, either
601      freeing things which are valid only during this particular gdb
602      execution, or leaving them to be reused during the next one.  */
603
604   if (objfile->sf != NULL)
605     {
606       (*objfile->sf->sym_finish) (objfile);
607     }
608
609   /* Discard any data modules have associated with the objfile.  The function
610      still may reference objfile->obfd.  */
611   objfile_free_data (objfile);
612
613   if (objfile->obfd)
614     gdb_bfd_unref (objfile->obfd);
615   else
616     free_objfile_per_bfd_storage (objfile->per_bfd);
617
618   /* Remove it from the chain of all objfiles.  */
619
620   unlink_objfile (objfile);
621
622   if (objfile == symfile_objfile)
623     symfile_objfile = NULL;
624
625   /* Before the symbol table code was redone to make it easier to
626      selectively load and remove information particular to a specific
627      linkage unit, gdb used to do these things whenever the monolithic
628      symbol table was blown away.  How much still needs to be done
629      is unknown, but we play it safe for now and keep each action until
630      it is shown to be no longer needed.  */
631
632   /* Not all our callers call clear_symtab_users (objfile_purge_solibs,
633      for example), so we need to call this here.  */
634   clear_pc_function_cache ();
635
636   /* Clear globals which might have pointed into a removed objfile.
637      FIXME: It's not clear which of these are supposed to persist
638      between expressions and which ought to be reset each time.  */
639   expression_context_block = NULL;
640   innermost_block = NULL;
641
642   /* Check to see if the current_source_symtab belongs to this objfile,
643      and if so, call clear_current_source_symtab_and_line.  */
644
645   {
646     struct symtab_and_line cursal = get_current_source_symtab_and_line ();
647
648     if (cursal.symtab && cursal.symtab->objfile == objfile)
649       clear_current_source_symtab_and_line ();
650   }
651
652   if (objfile->global_psymbols.list)
653     xfree (objfile->global_psymbols.list);
654   if (objfile->static_psymbols.list)
655     xfree (objfile->static_psymbols.list);
656   /* Free the obstacks for non-reusable objfiles.  */
657   psymbol_bcache_free (objfile->psymbol_cache);
658   if (objfile->demangled_names_hash)
659     htab_delete (objfile->demangled_names_hash);
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 /* The default implementation for the "iterate_over_objfiles_in_search_order"
1471    gdbarch method.  It is equivalent to use the ALL_OBJFILES macro,
1472    searching the objfiles in the order they are stored internally,
1473    ignoring CURRENT_OBJFILE.
1474
1475    On most platorms, it should be close enough to doing the best
1476    we can without some knowledge specific to the architecture.  */
1477
1478 void
1479 default_iterate_over_objfiles_in_search_order
1480   (struct gdbarch *gdbarch,
1481    iterate_over_objfiles_in_search_order_cb_ftype *cb,
1482    void *cb_data, struct objfile *current_objfile)
1483 {
1484   int stop = 0;
1485   struct objfile *objfile;
1486
1487   ALL_OBJFILES (objfile)
1488     {
1489        stop = cb (objfile, cb_data);
1490        if (stop)
1491          return;
1492     }
1493 }
1494
1495 /* Return canonical name for OBJFILE.  */
1496
1497 const char *
1498 objfile_name (const struct objfile *objfile)
1499 {
1500   if (objfile->obfd != NULL)
1501     return bfd_get_filename (objfile->obfd);
1502
1503   return objfile->original_name;
1504 }
1505
1506 /* Provide a prototype to silence -Wmissing-prototypes.  */
1507 extern initialize_file_ftype _initialize_objfiles;
1508
1509 void
1510 _initialize_objfiles (void)
1511 {
1512   objfiles_pspace_data
1513     = register_program_space_data_with_cleanup (NULL,
1514                                                 objfiles_pspace_data_cleanup);
1515
1516   objfiles_bfd_data = register_bfd_data_with_cleanup (NULL,
1517                                                       objfile_bfd_data_free);
1518 }