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