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