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