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