diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2007-12-15 09:42:02 +0000 |
---|---|---|
committer | Richard Sandiford <rdsandiford@googlemail.com> | 2007-12-15 09:42:02 +0000 |
commit | fc802241f3609e0bda5f9bc0922880b8c092a114 (patch) | |
tree | e0ba0e5d10aaaf44e40548e3c1f7b8161e5b91e4 /bfd/elf-bfd.h | |
parent | 6b2cc1401c75fb337cc4092d22eac4ccf491a0a9 (diff) | |
download | gdb-fc802241f3609e0bda5f9bc0922880b8c092a114.zip gdb-fc802241f3609e0bda5f9bc0922880b8c092a114.tar.gz gdb-fc802241f3609e0bda5f9bc0922880b8c092a114.tar.bz2 |
bfd/
* elf-bfd.h (eh_cie_fde): Replace u.cie.merged with a union of
a merged field and a sec field.
(eh_frame_hdr_info): Remove offsets_adjusted.
* elf-eh-frame.c (_bfd_elf_parse_eh_frame): Update accesses to
the CIE merged field.
(_bfd_elf_gc_mark_fdes): Likewise.
(_bfd_elf_discard_section_eh_frame): Likewise. Set u.cie.u.sec
when clearing the removed flag.
(_bfd_elf_eh_frame_section_offset): Remove offsets_adjusted handling.
(_bfd_elf_write_section_eh_frame): Likewise. Apply output_offsets
where appropriate.
Diffstat (limited to 'bfd/elf-bfd.h')
-rw-r--r-- | bfd/elf-bfd.h | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index 4b6c1af..918eec3 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -277,11 +277,20 @@ struct eh_cie_fde } fde; struct { /* In general, equivalent CIEs are grouped together, with one CIE - representing all the others in a group. If REMOVED == 0, - this CIE is the group representative. If REMOVED == 1, - following this pointer brings us "closer" to the CIE's group - representative, and reapplying always gives the representative. */ - struct eh_cie_fde *merged; + representing all the others in a group. + + If REMOVED == 0, this CIE is the group representative, and + U.SEC points to the .eh_frame section that contains the CIE. + + If REMOVED == 1, this CIE is the group representative if + U.MERGED is a self pointer. Otherwise, following U.MERGED + brings us "closer" to the CIE's group representative; + if U.MERGED is not the group representative, then + U.MERGED->U.MERGED is. */ + union { + struct eh_cie_fde *merged; + asection *sec; + } u; /* True if we have marked relocations associated with this CIE. */ unsigned int gc_mark : 1; @@ -355,7 +364,6 @@ struct eh_frame_hdr_info We build it if we successfully read all .eh_frame input sections and recognize them. */ bfd_boolean table; - bfd_boolean offsets_adjusted; }; /* ELF linker hash table. */ |