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