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