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