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