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