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