aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf-bfd.h
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2007-12-15 09:42:02 +0000
committerRichard Sandiford <rdsandiford@googlemail.com>2007-12-15 09:42:02 +0000
commitfc802241f3609e0bda5f9bc0922880b8c092a114 (patch)
treee0ba0e5d10aaaf44e40548e3c1f7b8161e5b91e4 /bfd/elf-bfd.h
parent6b2cc1401c75fb337cc4092d22eac4ccf491a0a9 (diff)
downloadgdb-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.h20
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. */