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