Constify strings in tracepoint.c, lookup_cmd and the completers.
[platform/upstream/binutils.git] / gdb / objfiles.c
1 /* GDB routines for manipulating objfiles.
2
3    Copyright (C) 1992-2013 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 "expression.h"
34 #include "parser-defs.h"
35
36 #include "gdb_assert.h"
37 #include <sys/types.h>
38 #include "gdb_stat.h"
39 #include <fcntl.h>
40 #include "gdb_obstack.h"
41 #include "gdb_string.h"
42 #include "hashtab.h"
43
44 #include "breakpoint.h"
45 #include "block.h"
46 #include "dictionary.h"
47 #include "source.h"
48 #include "addrmap.h"
49 #include "arch-utils.h"
50 #include "exec.h"
51 #include "observer.h"
52 #include "complaints.h"
53 #include "psymtab.h"
54 #include "solist.h"
55 #include "gdb_bfd.h"
56 #include "btrace.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   gdb_assert (objfile->separate_debug_objfile == NULL);
481   gdb_assert (parent->separate_debug_objfile_backlink == NULL);
482   gdb_assert (parent->separate_debug_objfile_link == NULL);
483
484   objfile->separate_debug_objfile_backlink = parent;
485   objfile->separate_debug_objfile_link = parent->separate_debug_objfile;
486   parent->separate_debug_objfile = objfile;
487
488   /* Put the separate debug object before the normal one, this is so that
489      usage of the ALL_OBJFILES_SAFE macro will stay safe.  */
490   put_objfile_before (objfile, parent);
491 }
492
493 /* Free all separate debug objfile of OBJFILE, but don't free OBJFILE
494    itself.  */
495
496 void
497 free_objfile_separate_debug (struct objfile *objfile)
498 {
499   struct objfile *child;
500
501   for (child = objfile->separate_debug_objfile; child;)
502     {
503       struct objfile *next_child = child->separate_debug_objfile_link;
504       free_objfile (child);
505       child = next_child;
506     }
507 }
508
509 /* Destroy an objfile and all the symtabs and psymtabs under it.  Note
510    that as much as possible is allocated on the objfile_obstack 
511    so that the memory can be efficiently freed.
512
513    Things which we do NOT free because they are not in malloc'd memory
514    or not in memory specific to the objfile include:
515
516    objfile -> sf
517
518    FIXME:  If the objfile is using reusable symbol information (via mmalloc),
519    then we need to take into account the fact that more than one process
520    may be using the symbol information at the same time (when mmalloc is
521    extended to support cooperative locking).  When more than one process
522    is using the mapped symbol info, we need to be more careful about when
523    we free objects in the reusable area.  */
524
525 void
526 free_objfile (struct objfile *objfile)
527 {
528   /* Free all separate debug objfiles.  */
529   free_objfile_separate_debug (objfile);
530
531   if (objfile->separate_debug_objfile_backlink)
532     {
533       /* We freed the separate debug file, make sure the base objfile
534          doesn't reference it.  */
535       struct objfile *child;
536
537       child = objfile->separate_debug_objfile_backlink->separate_debug_objfile;
538
539       if (child == objfile)
540         {
541           /* OBJFILE is the first child.  */
542           objfile->separate_debug_objfile_backlink->separate_debug_objfile =
543             objfile->separate_debug_objfile_link;
544         }
545       else
546         {
547           /* Find OBJFILE in the list.  */
548           while (1)
549             {
550               if (child->separate_debug_objfile_link == objfile)
551                 {
552                   child->separate_debug_objfile_link =
553                     objfile->separate_debug_objfile_link;
554                   break;
555                 }
556               child = child->separate_debug_objfile_link;
557               gdb_assert (child);
558             }
559         }
560     }
561   
562   /* Remove any references to this objfile in the global value
563      lists.  */
564   preserve_values (objfile);
565
566   /* It still may reference data modules have associated with the objfile and
567      the symbol file data.  */
568   forget_cached_source_info_for_objfile (objfile);
569
570   breakpoint_free_objfile (objfile);
571   btrace_free_objfile (objfile);
572
573   /* First do any symbol file specific actions required when we are
574      finished with a particular symbol file.  Note that if the objfile
575      is using reusable symbol information (via mmalloc) then each of
576      these routines is responsible for doing the correct thing, either
577      freeing things which are valid only during this particular gdb
578      execution, or leaving them to be reused during the next one.  */
579
580   if (objfile->sf != NULL)
581     {
582       (*objfile->sf->sym_finish) (objfile);
583     }
584
585   /* Discard any data modules have associated with the objfile.  The function
586      still may reference objfile->obfd.  */
587   objfile_free_data (objfile);
588
589   if (objfile->obfd)
590     gdb_bfd_unref (objfile->obfd);
591   else
592     free_objfile_per_bfd_storage (objfile->per_bfd);
593
594   /* Remove it from the chain of all objfiles.  */
595
596   unlink_objfile (objfile);
597
598   if (objfile == symfile_objfile)
599     symfile_objfile = NULL;
600
601   if (objfile == rt_common_objfile)
602     rt_common_objfile = NULL;
603
604   /* Before the symbol table code was redone to make it easier to
605      selectively load and remove information particular to a specific
606      linkage unit, gdb used to do these things whenever the monolithic
607      symbol table was blown away.  How much still needs to be done
608      is unknown, but we play it safe for now and keep each action until
609      it is shown to be no longer needed.  */
610
611   /* Not all our callers call clear_symtab_users (objfile_purge_solibs,
612      for example), so we need to call this here.  */
613   clear_pc_function_cache ();
614
615   /* Clear globals which might have pointed into a removed objfile.
616      FIXME: It's not clear which of these are supposed to persist
617      between expressions and which ought to be reset each time.  */
618   expression_context_block = NULL;
619   innermost_block = NULL;
620
621   /* Check to see if the current_source_symtab belongs to this objfile,
622      and if so, call clear_current_source_symtab_and_line.  */
623
624   {
625     struct symtab_and_line cursal = get_current_source_symtab_and_line ();
626
627     if (cursal.symtab && cursal.symtab->objfile == objfile)
628       clear_current_source_symtab_and_line ();
629   }
630
631   /* The last thing we do is free the objfile struct itself.  */
632
633   if (objfile->global_psymbols.list)
634     xfree (objfile->global_psymbols.list);
635   if (objfile->static_psymbols.list)
636     xfree (objfile->static_psymbols.list);
637   /* Free the obstacks for non-reusable objfiles.  */
638   psymbol_bcache_free (objfile->psymbol_cache);
639   if (objfile->demangled_names_hash)
640     htab_delete (objfile->demangled_names_hash);
641   obstack_free (&objfile->objfile_obstack, 0);
642
643   /* Rebuild section map next time we need it.  */
644   get_objfile_pspace_data (objfile->pspace)->objfiles_changed_p = 1;
645
646   xfree (objfile);
647 }
648
649 static void
650 do_free_objfile_cleanup (void *obj)
651 {
652   free_objfile (obj);
653 }
654
655 struct cleanup *
656 make_cleanup_free_objfile (struct objfile *obj)
657 {
658   return make_cleanup (do_free_objfile_cleanup, obj);
659 }
660
661 /* Free all the object files at once and clean up their users.  */
662
663 void
664 free_all_objfiles (void)
665 {
666   struct objfile *objfile, *temp;
667   struct so_list *so;
668
669   /* Any objfile referencewould become stale.  */
670   for (so = master_so_list (); so; so = so->next)
671     gdb_assert (so->objfile == NULL);
672
673   ALL_OBJFILES_SAFE (objfile, temp)
674   {
675     free_objfile (objfile);
676   }
677   clear_symtab_users (0);
678 }
679 \f
680 /* A helper function for objfile_relocate1 that relocates a single
681    symbol.  */
682
683 static void
684 relocate_one_symbol (struct symbol *sym, struct objfile *objfile,
685                      struct section_offsets *delta)
686 {
687   fixup_symbol_section (sym, objfile);
688
689   /* The RS6000 code from which this was taken skipped
690      any symbols in STRUCT_DOMAIN or UNDEF_DOMAIN.
691      But I'm leaving out that test, on the theory that
692      they can't possibly pass the tests below.  */
693   if ((SYMBOL_CLASS (sym) == LOC_LABEL
694        || SYMBOL_CLASS (sym) == LOC_STATIC)
695       && SYMBOL_SECTION (sym) >= 0)
696     {
697       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (delta, SYMBOL_SECTION (sym));
698     }
699 }
700
701 /* Relocate OBJFILE to NEW_OFFSETS.  There should be OBJFILE->NUM_SECTIONS
702    entries in new_offsets.  SEPARATE_DEBUG_OBJFILE is not touched here.
703    Return non-zero iff any change happened.  */
704
705 static int
706 objfile_relocate1 (struct objfile *objfile, 
707                    struct section_offsets *new_offsets)
708 {
709   struct obj_section *s;
710   struct section_offsets *delta =
711     ((struct section_offsets *) 
712      alloca (SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)));
713
714   int i;
715   int something_changed = 0;
716
717   for (i = 0; i < objfile->num_sections; ++i)
718     {
719       delta->offsets[i] =
720         ANOFFSET (new_offsets, i) - ANOFFSET (objfile->section_offsets, i);
721       if (ANOFFSET (delta, i) != 0)
722         something_changed = 1;
723     }
724   if (!something_changed)
725     return 0;
726
727   /* OK, get all the symtabs.  */
728   {
729     struct symtab *s;
730
731     ALL_OBJFILE_SYMTABS (objfile, s)
732     {
733       struct linetable *l;
734       struct blockvector *bv;
735       int i;
736
737       /* First the line table.  */
738       l = LINETABLE (s);
739       if (l)
740         {
741           for (i = 0; i < l->nitems; ++i)
742             l->item[i].pc += ANOFFSET (delta, s->block_line_section);
743         }
744
745       /* Don't relocate a shared blockvector more than once.  */
746       if (!s->primary)
747         continue;
748
749       bv = BLOCKVECTOR (s);
750       if (BLOCKVECTOR_MAP (bv))
751         addrmap_relocate (BLOCKVECTOR_MAP (bv),
752                           ANOFFSET (delta, s->block_line_section));
753
754       for (i = 0; i < BLOCKVECTOR_NBLOCKS (bv); ++i)
755         {
756           struct block *b;
757           struct symbol *sym;
758           struct dict_iterator iter;
759
760           b = BLOCKVECTOR_BLOCK (bv, i);
761           BLOCK_START (b) += ANOFFSET (delta, s->block_line_section);
762           BLOCK_END (b) += ANOFFSET (delta, s->block_line_section);
763
764           /* We only want to iterate over the local symbols, not any
765              symbols in included symtabs.  */
766           ALL_DICT_SYMBOLS (BLOCK_DICT (b), iter, sym)
767             {
768               relocate_one_symbol (sym, objfile, delta);
769             }
770         }
771     }
772   }
773
774   /* Relocate isolated symbols.  */
775   {
776     struct symbol *iter;
777
778     for (iter = objfile->template_symbols; iter; iter = iter->hash_next)
779       relocate_one_symbol (iter, objfile, delta);
780   }
781
782   if (objfile->psymtabs_addrmap)
783     addrmap_relocate (objfile->psymtabs_addrmap,
784                       ANOFFSET (delta, SECT_OFF_TEXT (objfile)));
785
786   if (objfile->sf)
787     objfile->sf->qf->relocate (objfile, new_offsets, delta);
788
789   {
790     struct minimal_symbol *msym;
791
792     ALL_OBJFILE_MSYMBOLS (objfile, msym)
793       if (SYMBOL_SECTION (msym) >= 0)
794       SYMBOL_VALUE_ADDRESS (msym) += ANOFFSET (delta, SYMBOL_SECTION (msym));
795   }
796   /* Relocating different sections by different amounts may cause the symbols
797      to be out of order.  */
798   msymbols_sort (objfile);
799
800   if (objfile->ei.entry_point_p)
801     {
802       /* Relocate ei.entry_point with its section offset, use SECT_OFF_TEXT
803          only as a fallback.  */
804       struct obj_section *s;
805       s = find_pc_section (objfile->ei.entry_point);
806       if (s)
807         objfile->ei.entry_point += ANOFFSET (delta, s->the_bfd_section->index);
808       else
809         objfile->ei.entry_point += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
810     }
811
812   {
813     int i;
814
815     for (i = 0; i < objfile->num_sections; ++i)
816       (objfile->section_offsets)->offsets[i] = ANOFFSET (new_offsets, i);
817   }
818
819   /* Rebuild section map next time we need it.  */
820   get_objfile_pspace_data (objfile->pspace)->objfiles_changed_p = 1;
821
822   /* Update the table in exec_ops, used to read memory.  */
823   ALL_OBJFILE_OSECTIONS (objfile, s)
824     {
825       int idx = s->the_bfd_section->index;
826
827       exec_set_section_address (bfd_get_filename (objfile->obfd), idx,
828                                 obj_section_addr (s));
829     }
830
831   /* Relocating probes.  */
832   if (objfile->sf && objfile->sf->sym_probe_fns)
833     objfile->sf->sym_probe_fns->sym_relocate_probe (objfile,
834                                                     new_offsets, delta);
835
836   /* Data changed.  */
837   return 1;
838 }
839
840 /* Relocate OBJFILE to NEW_OFFSETS.  There should be OBJFILE->NUM_SECTIONS
841    entries in new_offsets.  Process also OBJFILE's SEPARATE_DEBUG_OBJFILEs.
842
843    The number and ordering of sections does differ between the two objfiles.
844    Only their names match.  Also the file offsets will differ (objfile being
845    possibly prelinked but separate_debug_objfile is probably not prelinked) but
846    the in-memory absolute address as specified by NEW_OFFSETS must match both
847    files.  */
848
849 void
850 objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets)
851 {
852   struct objfile *debug_objfile;
853   int changed = 0;
854
855   changed |= objfile_relocate1 (objfile, new_offsets);
856
857   for (debug_objfile = objfile->separate_debug_objfile;
858        debug_objfile;
859        debug_objfile = objfile_separate_debug_iterate (objfile, debug_objfile))
860     {
861       struct section_addr_info *objfile_addrs;
862       struct section_offsets *new_debug_offsets;
863       struct cleanup *my_cleanups;
864
865       objfile_addrs = build_section_addr_info_from_objfile (objfile);
866       my_cleanups = make_cleanup (xfree, objfile_addrs);
867
868       /* Here OBJFILE_ADDRS contain the correct absolute addresses, the
869          relative ones must be already created according to debug_objfile.  */
870
871       addr_info_make_relative (objfile_addrs, debug_objfile->obfd);
872
873       gdb_assert (debug_objfile->num_sections
874                   == bfd_count_sections (debug_objfile->obfd));
875       new_debug_offsets = 
876         xmalloc (SIZEOF_N_SECTION_OFFSETS (debug_objfile->num_sections));
877       make_cleanup (xfree, new_debug_offsets);
878       relative_addr_info_to_section_offsets (new_debug_offsets,
879                                              debug_objfile->num_sections,
880                                              objfile_addrs);
881
882       changed |= objfile_relocate1 (debug_objfile, new_debug_offsets);
883
884       do_cleanups (my_cleanups);
885     }
886
887   /* Relocate breakpoints as necessary, after things are relocated.  */
888   if (changed)
889     breakpoint_re_set ();
890 }
891
892 /* Rebase (add to the offsets) OBJFILE by SLIDE.  SEPARATE_DEBUG_OBJFILE is
893    not touched here.
894    Return non-zero iff any change happened.  */
895
896 static int
897 objfile_rebase1 (struct objfile *objfile, CORE_ADDR slide)
898 {
899   struct section_offsets *new_offsets =
900     ((struct section_offsets *)
901      alloca (SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)));
902   int i;
903
904   for (i = 0; i < objfile->num_sections; ++i)
905     new_offsets->offsets[i] = slide;
906
907   return objfile_relocate1 (objfile, new_offsets);
908 }
909
910 /* Rebase (add to the offsets) OBJFILE by SLIDE.  Process also OBJFILE's
911    SEPARATE_DEBUG_OBJFILEs.  */
912
913 void
914 objfile_rebase (struct objfile *objfile, CORE_ADDR slide)
915 {
916   struct objfile *debug_objfile;
917   int changed = 0;
918
919   changed |= objfile_rebase1 (objfile, slide);
920
921   for (debug_objfile = objfile->separate_debug_objfile;
922        debug_objfile;
923        debug_objfile = objfile_separate_debug_iterate (objfile, debug_objfile))
924     changed |= objfile_rebase1 (debug_objfile, slide);
925
926   /* Relocate breakpoints as necessary, after things are relocated.  */
927   if (changed)
928     breakpoint_re_set ();
929 }
930 \f
931 /* Return non-zero if OBJFILE has partial symbols.  */
932
933 int
934 objfile_has_partial_symbols (struct objfile *objfile)
935 {
936   if (!objfile->sf)
937     return 0;
938
939   /* If we have not read psymbols, but we have a function capable of reading
940      them, then that is an indication that they are in fact available.  Without
941      this function the symbols may have been already read in but they also may
942      not be present in this objfile.  */
943   if ((objfile->flags & OBJF_PSYMTABS_READ) == 0
944       && objfile->sf->sym_read_psymbols != NULL)
945     return 1;
946
947   return objfile->sf->qf->has_symbols (objfile);
948 }
949
950 /* Return non-zero if OBJFILE has full symbols.  */
951
952 int
953 objfile_has_full_symbols (struct objfile *objfile)
954 {
955   return objfile->symtabs != NULL;
956 }
957
958 /* Return non-zero if OBJFILE has full or partial symbols, either directly
959    or through a separate debug file.  */
960
961 int
962 objfile_has_symbols (struct objfile *objfile)
963 {
964   struct objfile *o;
965
966   for (o = objfile; o; o = objfile_separate_debug_iterate (objfile, o))
967     if (objfile_has_partial_symbols (o) || objfile_has_full_symbols (o))
968       return 1;
969   return 0;
970 }
971
972
973 /* Many places in gdb want to test just to see if we have any partial
974    symbols available.  This function returns zero if none are currently
975    available, nonzero otherwise.  */
976
977 int
978 have_partial_symbols (void)
979 {
980   struct objfile *ofp;
981
982   ALL_OBJFILES (ofp)
983   {
984     if (objfile_has_partial_symbols (ofp))
985       return 1;
986   }
987   return 0;
988 }
989
990 /* Many places in gdb want to test just to see if we have any full
991    symbols available.  This function returns zero if none are currently
992    available, nonzero otherwise.  */
993
994 int
995 have_full_symbols (void)
996 {
997   struct objfile *ofp;
998
999   ALL_OBJFILES (ofp)
1000   {
1001     if (objfile_has_full_symbols (ofp))
1002       return 1;
1003   }
1004   return 0;
1005 }
1006
1007
1008 /* This operations deletes all objfile entries that represent solibs that
1009    weren't explicitly loaded by the user, via e.g., the add-symbol-file
1010    command.  */
1011
1012 void
1013 objfile_purge_solibs (void)
1014 {
1015   struct objfile *objf;
1016   struct objfile *temp;
1017
1018   ALL_OBJFILES_SAFE (objf, temp)
1019   {
1020     /* We assume that the solib package has been purged already, or will
1021        be soon.  */
1022
1023     if (!(objf->flags & OBJF_USERLOADED) && (objf->flags & OBJF_SHARED))
1024       free_objfile (objf);
1025   }
1026 }
1027
1028
1029 /* Many places in gdb want to test just to see if we have any minimal
1030    symbols available.  This function returns zero if none are currently
1031    available, nonzero otherwise.  */
1032
1033 int
1034 have_minimal_symbols (void)
1035 {
1036   struct objfile *ofp;
1037
1038   ALL_OBJFILES (ofp)
1039   {
1040     if (ofp->minimal_symbol_count > 0)
1041       {
1042         return 1;
1043       }
1044   }
1045   return 0;
1046 }
1047
1048 /* Qsort comparison function.  */
1049
1050 static int
1051 qsort_cmp (const void *a, const void *b)
1052 {
1053   const struct obj_section *sect1 = *(const struct obj_section **) a;
1054   const struct obj_section *sect2 = *(const struct obj_section **) b;
1055   const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1056   const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1057
1058   if (sect1_addr < sect2_addr)
1059     return -1;
1060   else if (sect1_addr > sect2_addr)
1061     return 1;
1062   else
1063     {
1064       /* Sections are at the same address.  This could happen if
1065          A) we have an objfile and a separate debuginfo.
1066          B) we are confused, and have added sections without proper relocation,
1067          or something like that.  */
1068
1069       const struct objfile *const objfile1 = sect1->objfile;
1070       const struct objfile *const objfile2 = sect2->objfile;
1071
1072       if (objfile1->separate_debug_objfile == objfile2
1073           || objfile2->separate_debug_objfile == objfile1)
1074         {
1075           /* Case A.  The ordering doesn't matter: separate debuginfo files
1076              will be filtered out later.  */
1077
1078           return 0;
1079         }
1080
1081       /* Case B.  Maintain stable sort order, so bugs in GDB are easier to
1082          triage.  This section could be slow (since we iterate over all
1083          objfiles in each call to qsort_cmp), but this shouldn't happen
1084          very often (GDB is already in a confused state; one hopes this
1085          doesn't happen at all).  If you discover that significant time is
1086          spent in the loops below, do 'set complaints 100' and examine the
1087          resulting complaints.  */
1088
1089       if (objfile1 == objfile2)
1090         {
1091           /* Both sections came from the same objfile.  We are really confused.
1092              Sort on sequence order of sections within the objfile.  */
1093
1094           const struct obj_section *osect;
1095
1096           ALL_OBJFILE_OSECTIONS (objfile1, osect)
1097             if (osect == sect1)
1098               return -1;
1099             else if (osect == sect2)
1100               return 1;
1101
1102           /* We should have found one of the sections before getting here.  */
1103           gdb_assert_not_reached ("section not found");
1104         }
1105       else
1106         {
1107           /* Sort on sequence number of the objfile in the chain.  */
1108
1109           const struct objfile *objfile;
1110
1111           ALL_OBJFILES (objfile)
1112             if (objfile == objfile1)
1113               return -1;
1114             else if (objfile == objfile2)
1115               return 1;
1116
1117           /* We should have found one of the objfiles before getting here.  */
1118           gdb_assert_not_reached ("objfile not found");
1119         }
1120     }
1121
1122   /* Unreachable.  */
1123   gdb_assert_not_reached ("unexpected code path");
1124   return 0;
1125 }
1126
1127 /* Select "better" obj_section to keep.  We prefer the one that came from
1128    the real object, rather than the one from separate debuginfo.
1129    Most of the time the two sections are exactly identical, but with
1130    prelinking the .rel.dyn section in the real object may have different
1131    size.  */
1132
1133 static struct obj_section *
1134 preferred_obj_section (struct obj_section *a, struct obj_section *b)
1135 {
1136   gdb_assert (obj_section_addr (a) == obj_section_addr (b));
1137   gdb_assert ((a->objfile->separate_debug_objfile == b->objfile)
1138               || (b->objfile->separate_debug_objfile == a->objfile));
1139   gdb_assert ((a->objfile->separate_debug_objfile_backlink == b->objfile)
1140               || (b->objfile->separate_debug_objfile_backlink == a->objfile));
1141
1142   if (a->objfile->separate_debug_objfile != NULL)
1143     return a;
1144   return b;
1145 }
1146
1147 /* Return 1 if SECTION should be inserted into the section map.
1148    We want to insert only non-overlay and non-TLS section.  */
1149
1150 static int
1151 insert_section_p (const struct bfd *abfd,
1152                   const struct bfd_section *section)
1153 {
1154   const bfd_vma lma = bfd_section_lma (abfd, section);
1155
1156   if (overlay_debugging && lma != 0 && lma != bfd_section_vma (abfd, section)
1157       && (bfd_get_file_flags (abfd) & BFD_IN_MEMORY) == 0)
1158     /* This is an overlay section.  IN_MEMORY check is needed to avoid
1159        discarding sections from the "system supplied DSO" (aka vdso)
1160        on some Linux systems (e.g. Fedora 11).  */
1161     return 0;
1162   if ((bfd_get_section_flags (abfd, section) & SEC_THREAD_LOCAL) != 0)
1163     /* This is a TLS section.  */
1164     return 0;
1165
1166   return 1;
1167 }
1168
1169 /* Filter out overlapping sections where one section came from the real
1170    objfile, and the other from a separate debuginfo file.
1171    Return the size of table after redundant sections have been eliminated.  */
1172
1173 static int
1174 filter_debuginfo_sections (struct obj_section **map, int map_size)
1175 {
1176   int i, j;
1177
1178   for (i = 0, j = 0; i < map_size - 1; i++)
1179     {
1180       struct obj_section *const sect1 = map[i];
1181       struct obj_section *const sect2 = map[i + 1];
1182       const struct objfile *const objfile1 = sect1->objfile;
1183       const struct objfile *const objfile2 = sect2->objfile;
1184       const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1185       const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1186
1187       if (sect1_addr == sect2_addr
1188           && (objfile1->separate_debug_objfile == objfile2
1189               || objfile2->separate_debug_objfile == objfile1))
1190         {
1191           map[j++] = preferred_obj_section (sect1, sect2);
1192           ++i;
1193         }
1194       else
1195         map[j++] = sect1;
1196     }
1197
1198   if (i < map_size)
1199     {
1200       gdb_assert (i == map_size - 1);
1201       map[j++] = map[i];
1202     }
1203
1204   /* The map should not have shrunk to less than half the original size.  */
1205   gdb_assert (map_size / 2 <= j);
1206
1207   return j;
1208 }
1209
1210 /* Filter out overlapping sections, issuing a warning if any are found.
1211    Overlapping sections could really be overlay sections which we didn't
1212    classify as such in insert_section_p, or we could be dealing with a
1213    corrupt binary.  */
1214
1215 static int
1216 filter_overlapping_sections (struct obj_section **map, int map_size)
1217 {
1218   int i, j;
1219
1220   for (i = 0, j = 0; i < map_size - 1; )
1221     {
1222       int k;
1223
1224       map[j++] = map[i];
1225       for (k = i + 1; k < map_size; k++)
1226         {
1227           struct obj_section *const sect1 = map[i];
1228           struct obj_section *const sect2 = map[k];
1229           const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1230           const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1231           const CORE_ADDR sect1_endaddr = obj_section_endaddr (sect1);
1232
1233           gdb_assert (sect1_addr <= sect2_addr);
1234
1235           if (sect1_endaddr <= sect2_addr)
1236             break;
1237           else
1238             {
1239               /* We have an overlap.  Report it.  */
1240
1241               struct objfile *const objf1 = sect1->objfile;
1242               struct objfile *const objf2 = sect2->objfile;
1243
1244               const struct bfd_section *const bfds1 = sect1->the_bfd_section;
1245               const struct bfd_section *const bfds2 = sect2->the_bfd_section;
1246
1247               const CORE_ADDR sect2_endaddr = obj_section_endaddr (sect2);
1248
1249               struct gdbarch *const gdbarch = get_objfile_arch (objf1);
1250
1251               complaint (&symfile_complaints,
1252                          _("unexpected overlap between:\n"
1253                            " (A) section `%s' from `%s' [%s, %s)\n"
1254                            " (B) section `%s' from `%s' [%s, %s).\n"
1255                            "Will ignore section B"),
1256                          bfd_section_name (abfd1, bfds1), objf1->name,
1257                          paddress (gdbarch, sect1_addr),
1258                          paddress (gdbarch, sect1_endaddr),
1259                          bfd_section_name (abfd2, bfds2), objf2->name,
1260                          paddress (gdbarch, sect2_addr),
1261                          paddress (gdbarch, sect2_endaddr));
1262             }
1263         }
1264       i = k;
1265     }
1266
1267   if (i < map_size)
1268     {
1269       gdb_assert (i == map_size - 1);
1270       map[j++] = map[i];
1271     }
1272
1273   return j;
1274 }
1275
1276
1277 /* Update PMAP, PMAP_SIZE with sections from all objfiles, excluding any
1278    TLS, overlay and overlapping sections.  */
1279
1280 static void
1281 update_section_map (struct program_space *pspace,
1282                     struct obj_section ***pmap, int *pmap_size)
1283 {
1284   int alloc_size, map_size, i;
1285   struct obj_section *s, **map;
1286   struct objfile *objfile;
1287
1288   gdb_assert (get_objfile_pspace_data (pspace)->objfiles_changed_p != 0);
1289
1290   map = *pmap;
1291   xfree (map);
1292
1293   alloc_size = 0;
1294   ALL_PSPACE_OBJFILES (pspace, objfile)
1295     ALL_OBJFILE_OSECTIONS (objfile, s)
1296       if (insert_section_p (objfile->obfd, s->the_bfd_section))
1297         alloc_size += 1;
1298
1299   /* This happens on detach/attach (e.g. in gdb.base/attach.exp).  */
1300   if (alloc_size == 0)
1301     {
1302       *pmap = NULL;
1303       *pmap_size = 0;
1304       return;
1305     }
1306
1307   map = xmalloc (alloc_size * sizeof (*map));
1308
1309   i = 0;
1310   ALL_PSPACE_OBJFILES (pspace, objfile)
1311     ALL_OBJFILE_OSECTIONS (objfile, s)
1312       if (insert_section_p (objfile->obfd, s->the_bfd_section))
1313         map[i++] = s;
1314
1315   qsort (map, alloc_size, sizeof (*map), qsort_cmp);
1316   map_size = filter_debuginfo_sections(map, alloc_size);
1317   map_size = filter_overlapping_sections(map, map_size);
1318
1319   if (map_size < alloc_size)
1320     /* Some sections were eliminated.  Trim excess space.  */
1321     map = xrealloc (map, map_size * sizeof (*map));
1322   else
1323     gdb_assert (alloc_size == map_size);
1324
1325   *pmap = map;
1326   *pmap_size = map_size;
1327 }
1328
1329 /* Bsearch comparison function.  */
1330
1331 static int
1332 bsearch_cmp (const void *key, const void *elt)
1333 {
1334   const CORE_ADDR pc = *(CORE_ADDR *) key;
1335   const struct obj_section *section = *(const struct obj_section **) elt;
1336
1337   if (pc < obj_section_addr (section))
1338     return -1;
1339   if (pc < obj_section_endaddr (section))
1340     return 0;
1341   return 1;
1342 }
1343
1344 /* Returns a section whose range includes PC or NULL if none found.   */
1345
1346 struct obj_section *
1347 find_pc_section (CORE_ADDR pc)
1348 {
1349   struct objfile_pspace_info *pspace_info;
1350   struct obj_section *s, **sp;
1351
1352   /* Check for mapped overlay section first.  */
1353   s = find_pc_mapped_section (pc);
1354   if (s)
1355     return s;
1356
1357   pspace_info = get_objfile_pspace_data (current_program_space);
1358   if (pspace_info->objfiles_changed_p != 0)
1359     {
1360       update_section_map (current_program_space,
1361                           &pspace_info->sections,
1362                           &pspace_info->num_sections);
1363
1364       /* Don't need updates to section map until objfiles are added,
1365          removed or relocated.  */
1366       pspace_info->objfiles_changed_p = 0;
1367     }
1368
1369   /* The C standard (ISO/IEC 9899:TC2) requires the BASE argument to
1370      bsearch be non-NULL.  */
1371   if (pspace_info->sections == NULL)
1372     {
1373       gdb_assert (pspace_info->num_sections == 0);
1374       return NULL;
1375     }
1376
1377   sp = (struct obj_section **) bsearch (&pc,
1378                                         pspace_info->sections,
1379                                         pspace_info->num_sections,
1380                                         sizeof (*pspace_info->sections),
1381                                         bsearch_cmp);
1382   if (sp != NULL)
1383     return *sp;
1384   return NULL;
1385 }
1386
1387
1388 /* In SVR4, we recognize a trampoline by it's section name. 
1389    That is, if the pc is in a section named ".plt" then we are in
1390    a trampoline.  */
1391
1392 int
1393 in_plt_section (CORE_ADDR pc, char *name)
1394 {
1395   struct obj_section *s;
1396   int retval = 0;
1397
1398   s = find_pc_section (pc);
1399
1400   retval = (s != NULL
1401             && s->the_bfd_section->name != NULL
1402             && strcmp (s->the_bfd_section->name, ".plt") == 0);
1403   return (retval);
1404 }
1405 \f
1406
1407 /* Set objfiles_changed_p so section map will be rebuilt next time it
1408    is used.  Called by reread_symbols.  */
1409
1410 void
1411 objfiles_changed (void)
1412 {
1413   /* Rebuild section map next time we need it.  */
1414   get_objfile_pspace_data (current_program_space)->objfiles_changed_p = 1;
1415 }
1416
1417 /* The default implementation for the "iterate_over_objfiles_in_search_order"
1418    gdbarch method.  It is equivalent to use the ALL_OBJFILES macro,
1419    searching the objfiles in the order they are stored internally,
1420    ignoring CURRENT_OBJFILE.
1421
1422    On most platorms, it should be close enough to doing the best
1423    we can without some knowledge specific to the architecture.  */
1424
1425 void
1426 default_iterate_over_objfiles_in_search_order
1427   (struct gdbarch *gdbarch,
1428    iterate_over_objfiles_in_search_order_cb_ftype *cb,
1429    void *cb_data, struct objfile *current_objfile)
1430 {
1431   int stop = 0;
1432   struct objfile *objfile;
1433
1434   ALL_OBJFILES (objfile)
1435     {
1436        stop = cb (objfile, cb_data);
1437        if (stop)
1438          return;
1439     }
1440 }
1441
1442 /* Provide a prototype to silence -Wmissing-prototypes.  */
1443 extern initialize_file_ftype _initialize_objfiles;
1444
1445 void
1446 _initialize_objfiles (void)
1447 {
1448   objfiles_pspace_data
1449     = register_program_space_data_with_cleanup (NULL,
1450                                                 objfiles_pspace_data_cleanup);
1451
1452   objfiles_bfd_data = register_bfd_data_with_cleanup (NULL,
1453                                                       objfile_bfd_data_free);
1454 }