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