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