xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/objfiles.c (revision bdc22b2e01993381dcefeff2bc9b56ca75a4235c)
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 
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 
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 
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 
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 #ifndef __NetBSD__
1240   /*
1241    * On NetBSD we don't typically have overlay sections and in some of
1242    * our kernels (i386 vma = lma | 0xc0000000), so the following test
1243    * makes kernels not load any symbols. There must be a better way to
1244    * detect overlays.
1245    */
1246   const bfd_vma lma = bfd_section_lma (abfd, section);
1247 
1248   if (overlay_debugging && lma != 0 && lma != bfd_section_vma (abfd, section)
1249       && (bfd_get_file_flags (abfd) & BFD_IN_MEMORY) == 0)
1250     /* This is an overlay section.  IN_MEMORY check is needed to avoid
1251        discarding sections from the "system supplied DSO" (aka vdso)
1252        on some Linux systems (e.g. Fedora 11).  */
1253     return 0;
1254 #endif
1255   if ((bfd_get_section_flags (abfd, section) & SEC_THREAD_LOCAL) != 0)
1256     /* This is a TLS section.  */
1257     return 0;
1258 
1259   return 1;
1260 }
1261 
1262 /* Filter out overlapping sections where one section came from the real
1263    objfile, and the other from a separate debuginfo file.
1264    Return the size of table after redundant sections have been eliminated.  */
1265 
1266 static int
1267 filter_debuginfo_sections (struct obj_section **map, int map_size)
1268 {
1269   int i, j;
1270 
1271   for (i = 0, j = 0; i < map_size - 1; i++)
1272     {
1273       struct obj_section *const sect1 = map[i];
1274       struct obj_section *const sect2 = map[i + 1];
1275       const struct objfile *const objfile1 = sect1->objfile;
1276       const struct objfile *const objfile2 = sect2->objfile;
1277       const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1278       const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1279 
1280       if (sect1_addr == sect2_addr
1281 	  && (objfile1->separate_debug_objfile == objfile2
1282 	      || objfile2->separate_debug_objfile == objfile1))
1283 	{
1284 	  map[j++] = preferred_obj_section (sect1, sect2);
1285 	  ++i;
1286 	}
1287       else
1288 	map[j++] = sect1;
1289     }
1290 
1291   if (i < map_size)
1292     {
1293       gdb_assert (i == map_size - 1);
1294       map[j++] = map[i];
1295     }
1296 
1297   /* The map should not have shrunk to less than half the original size.  */
1298   gdb_assert (map_size / 2 <= j);
1299 
1300   return j;
1301 }
1302 
1303 /* Filter out overlapping sections, issuing a warning if any are found.
1304    Overlapping sections could really be overlay sections which we didn't
1305    classify as such in insert_section_p, or we could be dealing with a
1306    corrupt binary.  */
1307 
1308 static int
1309 filter_overlapping_sections (struct obj_section **map, int map_size)
1310 {
1311   int i, j;
1312 
1313   for (i = 0, j = 0; i < map_size - 1; )
1314     {
1315       int k;
1316 
1317       map[j++] = map[i];
1318       for (k = i + 1; k < map_size; k++)
1319 	{
1320 	  struct obj_section *const sect1 = map[i];
1321 	  struct obj_section *const sect2 = map[k];
1322 	  const CORE_ADDR sect1_addr = obj_section_addr (sect1);
1323 	  const CORE_ADDR sect2_addr = obj_section_addr (sect2);
1324 	  const CORE_ADDR sect1_endaddr = obj_section_endaddr (sect1);
1325 
1326 	  gdb_assert (sect1_addr <= sect2_addr);
1327 
1328 	  if (sect1_endaddr <= sect2_addr)
1329 	    break;
1330 	  else
1331 	    {
1332 	      /* We have an overlap.  Report it.  */
1333 
1334 	      struct objfile *const objf1 = sect1->objfile;
1335 	      struct objfile *const objf2 = sect2->objfile;
1336 
1337 	      const struct bfd_section *const bfds1 = sect1->the_bfd_section;
1338 	      const struct bfd_section *const bfds2 = sect2->the_bfd_section;
1339 
1340 	      const CORE_ADDR sect2_endaddr = obj_section_endaddr (sect2);
1341 
1342 	      struct gdbarch *const gdbarch = get_objfile_arch (objf1);
1343 
1344 	      complaint (&symfile_complaints,
1345 			 _("unexpected overlap between:\n"
1346 			   " (A) section `%s' from `%s' [%s, %s)\n"
1347 			   " (B) section `%s' from `%s' [%s, %s).\n"
1348 			   "Will ignore section B"),
1349 			 bfd_section_name (abfd1, bfds1), objfile_name (objf1),
1350 			 paddress (gdbarch, sect1_addr),
1351 			 paddress (gdbarch, sect1_endaddr),
1352 			 bfd_section_name (abfd2, bfds2), objfile_name (objf2),
1353 			 paddress (gdbarch, sect2_addr),
1354 			 paddress (gdbarch, sect2_endaddr));
1355 	    }
1356 	}
1357       i = k;
1358     }
1359 
1360   if (i < map_size)
1361     {
1362       gdb_assert (i == map_size - 1);
1363       map[j++] = map[i];
1364     }
1365 
1366   return j;
1367 }
1368 
1369 
1370 /* Update PMAP, PMAP_SIZE with sections from all objfiles, excluding any
1371    TLS, overlay and overlapping sections.  */
1372 
1373 static void
1374 update_section_map (struct program_space *pspace,
1375 		    struct obj_section ***pmap, int *pmap_size)
1376 {
1377   struct objfile_pspace_info *pspace_info;
1378   int alloc_size, map_size, i;
1379   struct obj_section *s, **map;
1380   struct objfile *objfile;
1381 
1382   pspace_info = get_objfile_pspace_data (pspace);
1383   gdb_assert (pspace_info->section_map_dirty != 0
1384 	      || pspace_info->new_objfiles_available != 0);
1385 
1386   map = *pmap;
1387   xfree (map);
1388 
1389   alloc_size = 0;
1390   ALL_PSPACE_OBJFILES (pspace, objfile)
1391     ALL_OBJFILE_OSECTIONS (objfile, s)
1392       if (insert_section_p (objfile->obfd, s->the_bfd_section))
1393 	alloc_size += 1;
1394 
1395   /* This happens on detach/attach (e.g. in gdb.base/attach.exp).  */
1396   if (alloc_size == 0)
1397     {
1398       *pmap = NULL;
1399       *pmap_size = 0;
1400       return;
1401     }
1402 
1403   map = XNEWVEC (struct obj_section *, alloc_size);
1404 
1405   i = 0;
1406   ALL_PSPACE_OBJFILES (pspace, objfile)
1407     ALL_OBJFILE_OSECTIONS (objfile, s)
1408       if (insert_section_p (objfile->obfd, s->the_bfd_section))
1409 	map[i++] = s;
1410 
1411   qsort (map, alloc_size, sizeof (*map), qsort_cmp);
1412   map_size = filter_debuginfo_sections(map, alloc_size);
1413   map_size = filter_overlapping_sections(map, map_size);
1414 
1415   if (map_size < alloc_size)
1416     /* Some sections were eliminated.  Trim excess space.  */
1417     map = XRESIZEVEC (struct obj_section *, map, map_size);
1418   else
1419     gdb_assert (alloc_size == map_size);
1420 
1421   *pmap = map;
1422   *pmap_size = map_size;
1423 }
1424 
1425 /* Bsearch comparison function.  */
1426 
1427 static int
1428 bsearch_cmp (const void *key, const void *elt)
1429 {
1430   const CORE_ADDR pc = *(CORE_ADDR *) key;
1431   const struct obj_section *section = *(const struct obj_section **) elt;
1432 
1433   if (pc < obj_section_addr (section))
1434     return -1;
1435   if (pc < obj_section_endaddr (section))
1436     return 0;
1437   return 1;
1438 }
1439 
1440 /* Returns a section whose range includes PC or NULL if none found.   */
1441 
1442 struct obj_section *
1443 find_pc_section (CORE_ADDR pc)
1444 {
1445   struct objfile_pspace_info *pspace_info;
1446   struct obj_section *s, **sp;
1447 
1448   /* Check for mapped overlay section first.  */
1449   s = find_pc_mapped_section (pc);
1450   if (s)
1451     return s;
1452 
1453   pspace_info = get_objfile_pspace_data (current_program_space);
1454   if (pspace_info->section_map_dirty
1455       || (pspace_info->new_objfiles_available
1456 	  && !pspace_info->inhibit_updates))
1457     {
1458       update_section_map (current_program_space,
1459 			  &pspace_info->sections,
1460 			  &pspace_info->num_sections);
1461 
1462       /* Don't need updates to section map until objfiles are added,
1463          removed or relocated.  */
1464       pspace_info->new_objfiles_available = 0;
1465       pspace_info->section_map_dirty = 0;
1466     }
1467 
1468   /* The C standard (ISO/IEC 9899:TC2) requires the BASE argument to
1469      bsearch be non-NULL.  */
1470   if (pspace_info->sections == NULL)
1471     {
1472       gdb_assert (pspace_info->num_sections == 0);
1473       return NULL;
1474     }
1475 
1476   sp = (struct obj_section **) bsearch (&pc,
1477 					pspace_info->sections,
1478 					pspace_info->num_sections,
1479 					sizeof (*pspace_info->sections),
1480 					bsearch_cmp);
1481   if (sp != NULL)
1482     return *sp;
1483   return NULL;
1484 }
1485 
1486 
1487 /* Return non-zero if PC is in a section called NAME.  */
1488 
1489 int
1490 pc_in_section (CORE_ADDR pc, char *name)
1491 {
1492   struct obj_section *s;
1493   int retval = 0;
1494 
1495   s = find_pc_section (pc);
1496 
1497   retval = (s != NULL
1498 	    && s->the_bfd_section->name != NULL
1499 	    && strcmp (s->the_bfd_section->name, name) == 0);
1500   return (retval);
1501 }
1502 
1503 
1504 /* Set section_map_dirty so section map will be rebuilt next time it
1505    is used.  Called by reread_symbols.  */
1506 
1507 void
1508 objfiles_changed (void)
1509 {
1510   /* Rebuild section map next time we need it.  */
1511   get_objfile_pspace_data (current_program_space)->section_map_dirty = 1;
1512 }
1513 
1514 /* See comments in objfiles.h.  */
1515 
1516 void
1517 inhibit_section_map_updates (struct program_space *pspace)
1518 {
1519   get_objfile_pspace_data (pspace)->inhibit_updates = 1;
1520 }
1521 
1522 /* See comments in objfiles.h.  */
1523 
1524 void
1525 resume_section_map_updates (struct program_space *pspace)
1526 {
1527   get_objfile_pspace_data (pspace)->inhibit_updates = 0;
1528 }
1529 
1530 /* See comments in objfiles.h.  */
1531 
1532 void
1533 resume_section_map_updates_cleanup (void *arg)
1534 {
1535   resume_section_map_updates ((struct program_space *) arg);
1536 }
1537 
1538 /* Return 1 if ADDR maps into one of the sections of OBJFILE and 0
1539    otherwise.  */
1540 
1541 int
1542 is_addr_in_objfile (CORE_ADDR addr, const struct objfile *objfile)
1543 {
1544   struct obj_section *osect;
1545 
1546   if (objfile == NULL)
1547     return 0;
1548 
1549   ALL_OBJFILE_OSECTIONS (objfile, osect)
1550     {
1551       if (section_is_overlay (osect) && !section_is_mapped (osect))
1552 	continue;
1553 
1554       if (obj_section_addr (osect) <= addr
1555 	  && addr < obj_section_endaddr (osect))
1556 	return 1;
1557     }
1558   return 0;
1559 }
1560 
1561 int
1562 shared_objfile_contains_address_p (struct program_space *pspace,
1563 				   CORE_ADDR address)
1564 {
1565   struct objfile *objfile;
1566 
1567   ALL_PSPACE_OBJFILES (pspace, objfile)
1568     {
1569       if ((objfile->flags & OBJF_SHARED) != 0
1570 	  && is_addr_in_objfile (address, objfile))
1571 	return 1;
1572     }
1573 
1574   return 0;
1575 }
1576 
1577 /* The default implementation for the "iterate_over_objfiles_in_search_order"
1578    gdbarch method.  It is equivalent to use the ALL_OBJFILES macro,
1579    searching the objfiles in the order they are stored internally,
1580    ignoring CURRENT_OBJFILE.
1581 
1582    On most platorms, it should be close enough to doing the best
1583    we can without some knowledge specific to the architecture.  */
1584 
1585 void
1586 default_iterate_over_objfiles_in_search_order
1587   (struct gdbarch *gdbarch,
1588    iterate_over_objfiles_in_search_order_cb_ftype *cb,
1589    void *cb_data, struct objfile *current_objfile)
1590 {
1591   int stop = 0;
1592   struct objfile *objfile;
1593 
1594   ALL_OBJFILES (objfile)
1595     {
1596        stop = cb (objfile, cb_data);
1597        if (stop)
1598 	 return;
1599     }
1600 }
1601 
1602 /* See objfiles.h.  */
1603 
1604 const char *
1605 objfile_name (const struct objfile *objfile)
1606 {
1607   if (objfile->obfd != NULL)
1608     return bfd_get_filename (objfile->obfd);
1609 
1610   return objfile->original_name;
1611 }
1612 
1613 /* See objfiles.h.  */
1614 
1615 const char *
1616 objfile_filename (const struct objfile *objfile)
1617 {
1618   if (objfile->obfd != NULL)
1619     return bfd_get_filename (objfile->obfd);
1620 
1621   return NULL;
1622 }
1623 
1624 /* See objfiles.h.  */
1625 
1626 const char *
1627 objfile_debug_name (const struct objfile *objfile)
1628 {
1629   return lbasename (objfile->original_name);
1630 }
1631 
1632 /* See objfiles.h.  */
1633 
1634 const char *
1635 objfile_flavour_name (struct objfile *objfile)
1636 {
1637   if (objfile->obfd != NULL)
1638     return bfd_flavour_name (bfd_get_flavour (objfile->obfd));
1639   return NULL;
1640 }
1641 
1642 /* Provide a prototype to silence -Wmissing-prototypes.  */
1643 extern initialize_file_ftype _initialize_objfiles;
1644 
1645 void
1646 _initialize_objfiles (void)
1647 {
1648   objfiles_pspace_data
1649     = register_program_space_data_with_cleanup (NULL,
1650 						objfiles_pspace_data_cleanup);
1651 
1652   objfiles_bfd_data = register_bfd_data_with_cleanup (NULL,
1653 						      objfile_bfd_data_free);
1654 }
1655