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