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