solib-darwin.c: handle PIE when attaching processes.
[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
886 /* Rebase (add to the offsets) OBJFILE by SLIDE.  SEPARATE_DEBUG_OBJFILE is
887    not touched here.
888    Return non-zero iff any change happened.  */
889
890 static int
891 objfile_rebase1 (struct objfile *objfile, CORE_ADDR slide)
892 {
893   struct section_offsets *new_offsets =
894     ((struct section_offsets *)
895      alloca (SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)));
896   int i;
897
898   for (i = 0; i < objfile->num_sections; ++i)
899     new_offsets->offsets[i] = slide;
900
901   return objfile_relocate1 (objfile, new_offsets);
902 }
903
904 /* Rebase (add to the offsets) OBJFILE by SLIDE.  Process also OBJFILE's
905    SEPARATE_DEBUG_OBJFILEs.  */
906
907 void
908 objfile_rebase (struct objfile *objfile, CORE_ADDR slide)
909 {
910   struct objfile *debug_objfile;
911   int changed = 0;
912
913   changed |= objfile_rebase1 (objfile, slide);
914
915   for (debug_objfile = objfile->separate_debug_objfile;
916        debug_objfile;
917        debug_objfile = objfile_separate_debug_iterate (objfile, debug_objfile))
918     changed |= objfile_rebase1 (debug_objfile, slide);
919
920   /* Relocate breakpoints as necessary, after things are relocated.  */
921   if (changed)
922     breakpoint_re_set ();
923 }
924 \f
925 /* Return non-zero if OBJFILE has partial symbols.  */
926
927 int
928 objfile_has_partial_symbols (struct objfile *objfile)
929 {
930   if (!objfile->sf)
931     return 0;
932
933   /* If we have not read psymbols, but we have a function capable of reading
934      them, then that is an indication that they are in fact available.  Without
935      this function the symbols may have been already read in but they also may
936      not be present in this objfile.  */
937   if ((objfile->flags & OBJF_PSYMTABS_READ) == 0
938       && objfile->sf->sym_read_psymbols != NULL)
939     return 1;
940
941   return objfile->sf->qf->has_symbols (objfile);
942 }
943
944 /* Return non-zero if OBJFILE has full symbols.  */
945
946 int
947 objfile_has_full_symbols (struct objfile *objfile)
948 {
949   return objfile->symtabs != NULL;
950 }
951
952 /* Return non-zero if OBJFILE has full or partial symbols, either directly
953    or through a separate debug file.  */
954
955 int
956 objfile_has_symbols (struct objfile *objfile)
957 {
958   struct objfile *o;
959
960   for (o = objfile; o; o = objfile_separate_debug_iterate (objfile, o))
961     if (objfile_has_partial_symbols (o) || objfile_has_full_symbols (o))
962       return 1;
963   return 0;
964 }
965
966
967 /* Many places in gdb want to test just to see if we have any partial
968    symbols available.  This function returns zero if none are currently
969    available, nonzero otherwise.  */
970
971 int
972 have_partial_symbols (void)
973 {
974   struct objfile *ofp;
975
976   ALL_OBJFILES (ofp)
977   {
978     if (objfile_has_partial_symbols (ofp))
979       return 1;
980   }
981   return 0;
982 }
983
984 /* Many places in gdb want to test just to see if we have any full
985    symbols available.  This function returns zero if none are currently
986    available, nonzero otherwise.  */
987
988 int
989 have_full_symbols (void)
990 {
991   struct objfile *ofp;
992
993   ALL_OBJFILES (ofp)
994   {
995     if (objfile_has_full_symbols (ofp))
996       return 1;
997   }
998   return 0;
999 }
1000
1001
1002 /* This operations deletes all objfile entries that represent solibs that
1003    weren't explicitly loaded by the user, via e.g., the add-symbol-file
1004    command.  */
1005
1006 void
1007 objfile_purge_solibs (void)
1008 {
1009   struct objfile *objf;
1010   struct objfile *temp;
1011
1012   ALL_OBJFILES_SAFE (objf, temp)
1013   {
1014     /* We assume that the solib package has been purged already, or will
1015        be soon.  */
1016
1017     if (!(objf->flags & OBJF_USERLOADED) && (objf->flags & OBJF_SHARED))
1018       free_objfile (objf);
1019   }
1020 }
1021
1022
1023 /* Many places in gdb want to test just to see if we have any minimal
1024    symbols available.  This function returns zero if none are currently
1025    available, nonzero otherwise.  */
1026
1027 int
1028 have_minimal_symbols (void)
1029 {
1030   struct objfile *ofp;
1031
1032   ALL_OBJFILES (ofp)
1033   {
1034     if (ofp->minimal_symbol_count > 0)
1035       {
1036         return 1;
1037       }
1038   }
1039   return 0;
1040 }
1041
1042 /* Qsort comparison function.  */
1043
1044 static int
1045 qsort_cmp (const void *a, const void *b)
1046 {
1047   const struct obj_section *sect1 = *(const struct obj_section **) a;
1048   const struct obj_section *sect2 = *(const struct obj_section **) b;
1049   const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1050   const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1051
1052   if (sect1_addr < sect2_addr)
1053     return -1;
1054   else if (sect1_addr > sect2_addr)
1055     return 1;
1056   else
1057     {
1058       /* Sections are at the same address.  This could happen if
1059          A) we have an objfile and a separate debuginfo.
1060          B) we are confused, and have added sections without proper relocation,
1061          or something like that.  */
1062
1063       const struct objfile *const objfile1 = sect1->objfile;
1064       const struct objfile *const objfile2 = sect2->objfile;
1065
1066       if (objfile1->separate_debug_objfile == objfile2
1067           || objfile2->separate_debug_objfile == objfile1)
1068         {
1069           /* Case A.  The ordering doesn't matter: separate debuginfo files
1070              will be filtered out later.  */
1071
1072           return 0;
1073         }
1074
1075       /* Case B.  Maintain stable sort order, so bugs in GDB are easier to
1076          triage.  This section could be slow (since we iterate over all
1077          objfiles in each call to qsort_cmp), but this shouldn't happen
1078          very often (GDB is already in a confused state; one hopes this
1079          doesn't happen at all).  If you discover that significant time is
1080          spent in the loops below, do 'set complaints 100' and examine the
1081          resulting complaints.  */
1082
1083       if (objfile1 == objfile2)
1084         {
1085           /* Both sections came from the same objfile.  We are really confused.
1086              Sort on sequence order of sections within the objfile.  */
1087
1088           const struct obj_section *osect;
1089
1090           ALL_OBJFILE_OSECTIONS (objfile1, osect)
1091             if (osect == sect1)
1092               return -1;
1093             else if (osect == sect2)
1094               return 1;
1095
1096           /* We should have found one of the sections before getting here.  */
1097           gdb_assert_not_reached ("section not found");
1098         }
1099       else
1100         {
1101           /* Sort on sequence number of the objfile in the chain.  */
1102
1103           const struct objfile *objfile;
1104
1105           ALL_OBJFILES (objfile)
1106             if (objfile == objfile1)
1107               return -1;
1108             else if (objfile == objfile2)
1109               return 1;
1110
1111           /* We should have found one of the objfiles before getting here.  */
1112           gdb_assert_not_reached ("objfile not found");
1113         }
1114     }
1115
1116   /* Unreachable.  */
1117   gdb_assert_not_reached ("unexpected code path");
1118   return 0;
1119 }
1120
1121 /* Select "better" obj_section to keep.  We prefer the one that came from
1122    the real object, rather than the one from separate debuginfo.
1123    Most of the time the two sections are exactly identical, but with
1124    prelinking the .rel.dyn section in the real object may have different
1125    size.  */
1126
1127 static struct obj_section *
1128 preferred_obj_section (struct obj_section *a, struct obj_section *b)
1129 {
1130   gdb_assert (obj_section_addr (a) == obj_section_addr (b));
1131   gdb_assert ((a->objfile->separate_debug_objfile == b->objfile)
1132               || (b->objfile->separate_debug_objfile == a->objfile));
1133   gdb_assert ((a->objfile->separate_debug_objfile_backlink == b->objfile)
1134               || (b->objfile->separate_debug_objfile_backlink == a->objfile));
1135
1136   if (a->objfile->separate_debug_objfile != NULL)
1137     return a;
1138   return b;
1139 }
1140
1141 /* Return 1 if SECTION should be inserted into the section map.
1142    We want to insert only non-overlay and non-TLS section.  */
1143
1144 static int
1145 insert_section_p (const struct bfd *abfd,
1146                   const struct bfd_section *section)
1147 {
1148   const bfd_vma lma = bfd_section_lma (abfd, section);
1149
1150   if (overlay_debugging && lma != 0 && lma != bfd_section_vma (abfd, section)
1151       && (bfd_get_file_flags (abfd) & BFD_IN_MEMORY) == 0)
1152     /* This is an overlay section.  IN_MEMORY check is needed to avoid
1153        discarding sections from the "system supplied DSO" (aka vdso)
1154        on some Linux systems (e.g. Fedora 11).  */
1155     return 0;
1156   if ((bfd_get_section_flags (abfd, section) & SEC_THREAD_LOCAL) != 0)
1157     /* This is a TLS section.  */
1158     return 0;
1159
1160   return 1;
1161 }
1162
1163 /* Filter out overlapping sections where one section came from the real
1164    objfile, and the other from a separate debuginfo file.
1165    Return the size of table after redundant sections have been eliminated.  */
1166
1167 static int
1168 filter_debuginfo_sections (struct obj_section **map, int map_size)
1169 {
1170   int i, j;
1171
1172   for (i = 0, j = 0; i < map_size - 1; i++)
1173     {
1174       struct obj_section *const sect1 = map[i];
1175       struct obj_section *const sect2 = map[i + 1];
1176       const struct objfile *const objfile1 = sect1->objfile;
1177       const struct objfile *const objfile2 = sect2->objfile;
1178       const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1179       const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1180
1181       if (sect1_addr == sect2_addr
1182           && (objfile1->separate_debug_objfile == objfile2
1183               || objfile2->separate_debug_objfile == objfile1))
1184         {
1185           map[j++] = preferred_obj_section (sect1, sect2);
1186           ++i;
1187         }
1188       else
1189         map[j++] = sect1;
1190     }
1191
1192   if (i < map_size)
1193     {
1194       gdb_assert (i == map_size - 1);
1195       map[j++] = map[i];
1196     }
1197
1198   /* The map should not have shrunk to less than half the original size.  */
1199   gdb_assert (map_size / 2 <= j);
1200
1201   return j;
1202 }
1203
1204 /* Filter out overlapping sections, issuing a warning if any are found.
1205    Overlapping sections could really be overlay sections which we didn't
1206    classify as such in insert_section_p, or we could be dealing with a
1207    corrupt binary.  */
1208
1209 static int
1210 filter_overlapping_sections (struct obj_section **map, int map_size)
1211 {
1212   int i, j;
1213
1214   for (i = 0, j = 0; i < map_size - 1; )
1215     {
1216       int k;
1217
1218       map[j++] = map[i];
1219       for (k = i + 1; k < map_size; k++)
1220         {
1221           struct obj_section *const sect1 = map[i];
1222           struct obj_section *const sect2 = map[k];
1223           const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1224           const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1225           const CORE_ADDR sect1_endaddr = obj_section_endaddr (sect1);
1226
1227           gdb_assert (sect1_addr <= sect2_addr);
1228
1229           if (sect1_endaddr <= sect2_addr)
1230             break;
1231           else
1232             {
1233               /* We have an overlap.  Report it.  */
1234
1235               struct objfile *const objf1 = sect1->objfile;
1236               struct objfile *const objf2 = sect2->objfile;
1237
1238               const struct bfd *const abfd1 = objf1->obfd;
1239               const struct bfd *const abfd2 = objf2->obfd;
1240
1241               const struct bfd_section *const bfds1 = sect1->the_bfd_section;
1242               const struct bfd_section *const bfds2 = sect2->the_bfd_section;
1243
1244               const CORE_ADDR sect2_endaddr = obj_section_endaddr (sect2);
1245
1246               struct gdbarch *const gdbarch = get_objfile_arch (objf1);
1247
1248               complaint (&symfile_complaints,
1249                          _("unexpected overlap between:\n"
1250                            " (A) section `%s' from `%s' [%s, %s)\n"
1251                            " (B) section `%s' from `%s' [%s, %s).\n"
1252                            "Will ignore section B"),
1253                          bfd_section_name (abfd1, bfds1), objf1->name,
1254                          paddress (gdbarch, sect1_addr),
1255                          paddress (gdbarch, sect1_endaddr),
1256                          bfd_section_name (abfd2, bfds2), objf2->name,
1257                          paddress (gdbarch, sect2_addr),
1258                          paddress (gdbarch, sect2_endaddr));
1259             }
1260         }
1261       i = k;
1262     }
1263
1264   if (i < map_size)
1265     {
1266       gdb_assert (i == map_size - 1);
1267       map[j++] = map[i];
1268     }
1269
1270   return j;
1271 }
1272
1273
1274 /* Update PMAP, PMAP_SIZE with sections from all objfiles, excluding any
1275    TLS, overlay and overlapping sections.  */
1276
1277 static void
1278 update_section_map (struct program_space *pspace,
1279                     struct obj_section ***pmap, int *pmap_size)
1280 {
1281   int alloc_size, map_size, i;
1282   struct obj_section *s, **map;
1283   struct objfile *objfile;
1284
1285   gdb_assert (get_objfile_pspace_data (pspace)->objfiles_changed_p != 0);
1286
1287   map = *pmap;
1288   xfree (map);
1289
1290   alloc_size = 0;
1291   ALL_PSPACE_OBJFILES (pspace, objfile)
1292     ALL_OBJFILE_OSECTIONS (objfile, s)
1293       if (insert_section_p (objfile->obfd, s->the_bfd_section))
1294         alloc_size += 1;
1295
1296   /* This happens on detach/attach (e.g. in gdb.base/attach.exp).  */
1297   if (alloc_size == 0)
1298     {
1299       *pmap = NULL;
1300       *pmap_size = 0;
1301       return;
1302     }
1303
1304   map = xmalloc (alloc_size * sizeof (*map));
1305
1306   i = 0;
1307   ALL_PSPACE_OBJFILES (pspace, objfile)
1308     ALL_OBJFILE_OSECTIONS (objfile, s)
1309       if (insert_section_p (objfile->obfd, s->the_bfd_section))
1310         map[i++] = s;
1311
1312   qsort (map, alloc_size, sizeof (*map), qsort_cmp);
1313   map_size = filter_debuginfo_sections(map, alloc_size);
1314   map_size = filter_overlapping_sections(map, map_size);
1315
1316   if (map_size < alloc_size)
1317     /* Some sections were eliminated.  Trim excess space.  */
1318     map = xrealloc (map, map_size * sizeof (*map));
1319   else
1320     gdb_assert (alloc_size == map_size);
1321
1322   *pmap = map;
1323   *pmap_size = map_size;
1324 }
1325
1326 /* Bsearch comparison function.  */
1327
1328 static int
1329 bsearch_cmp (const void *key, const void *elt)
1330 {
1331   const CORE_ADDR pc = *(CORE_ADDR *) key;
1332   const struct obj_section *section = *(const struct obj_section **) elt;
1333
1334   if (pc < obj_section_addr (section))
1335     return -1;
1336   if (pc < obj_section_endaddr (section))
1337     return 0;
1338   return 1;
1339 }
1340
1341 /* Returns a section whose range includes PC or NULL if none found.   */
1342
1343 struct obj_section *
1344 find_pc_section (CORE_ADDR pc)
1345 {
1346   struct objfile_pspace_info *pspace_info;
1347   struct obj_section *s, **sp;
1348
1349   /* Check for mapped overlay section first.  */
1350   s = find_pc_mapped_section (pc);
1351   if (s)
1352     return s;
1353
1354   pspace_info = get_objfile_pspace_data (current_program_space);
1355   if (pspace_info->objfiles_changed_p != 0)
1356     {
1357       update_section_map (current_program_space,
1358                           &pspace_info->sections,
1359                           &pspace_info->num_sections);
1360
1361       /* Don't need updates to section map until objfiles are added,
1362          removed or relocated.  */
1363       pspace_info->objfiles_changed_p = 0;
1364     }
1365
1366   /* The C standard (ISO/IEC 9899:TC2) requires the BASE argument to
1367      bsearch be non-NULL.  */
1368   if (pspace_info->sections == NULL)
1369     {
1370       gdb_assert (pspace_info->num_sections == 0);
1371       return NULL;
1372     }
1373
1374   sp = (struct obj_section **) bsearch (&pc,
1375                                         pspace_info->sections,
1376                                         pspace_info->num_sections,
1377                                         sizeof (*pspace_info->sections),
1378                                         bsearch_cmp);
1379   if (sp != NULL)
1380     return *sp;
1381   return NULL;
1382 }
1383
1384
1385 /* In SVR4, we recognize a trampoline by it's section name. 
1386    That is, if the pc is in a section named ".plt" then we are in
1387    a trampoline.  */
1388
1389 int
1390 in_plt_section (CORE_ADDR pc, char *name)
1391 {
1392   struct obj_section *s;
1393   int retval = 0;
1394
1395   s = find_pc_section (pc);
1396
1397   retval = (s != NULL
1398             && s->the_bfd_section->name != NULL
1399             && strcmp (s->the_bfd_section->name, ".plt") == 0);
1400   return (retval);
1401 }
1402 \f
1403
1404 /* Set objfiles_changed_p so section map will be rebuilt next time it
1405    is used.  Called by reread_symbols.  */
1406
1407 void
1408 objfiles_changed (void)
1409 {
1410   /* Rebuild section map next time we need it.  */
1411   get_objfile_pspace_data (current_program_space)->objfiles_changed_p = 1;
1412 }
1413
1414 /* The default implementation for the "iterate_over_objfiles_in_search_order"
1415    gdbarch method.  It is equivalent to use the ALL_OBJFILES macro,
1416    searching the objfiles in the order they are stored internally,
1417    ignoring CURRENT_OBJFILE.
1418
1419    On most platorms, it should be close enough to doing the best
1420    we can without some knowledge specific to the architecture.  */
1421
1422 void
1423 default_iterate_over_objfiles_in_search_order
1424   (struct gdbarch *gdbarch,
1425    iterate_over_objfiles_in_search_order_cb_ftype *cb,
1426    void *cb_data, struct objfile *current_objfile)
1427 {
1428   int stop = 0;
1429   struct objfile *objfile;
1430
1431   ALL_OBJFILES (objfile)
1432     {
1433        stop = cb (objfile, cb_data);
1434        if (stop)
1435          return;
1436     }
1437 }
1438
1439 /* Provide a prototype to silence -Wmissing-prototypes.  */
1440 extern initialize_file_ftype _initialize_objfiles;
1441
1442 void
1443 _initialize_objfiles (void)
1444 {
1445   objfiles_pspace_data
1446     = register_program_space_data_with_cleanup (NULL,
1447                                                 objfiles_pspace_data_cleanup);
1448
1449   objfiles_bfd_data = register_bfd_data_with_cleanup (NULL,
1450                                                       objfile_bfd_data_free);
1451 }