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