aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf-bfd.h
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2004-10-10 07:58:07 +0000
committerAlan Modra <amodra@gmail.com>2004-10-10 07:58:07 +0000
commitfda3ecf23f406d43dd2990a86ff16a2b0359471c (patch)
tree6a89ab2fe3119ab8eee1d47bfd6ff3344691ddc8 /bfd/elf-bfd.h
parent35f0d9373b87e2de55f69e33a641f56d7435c839 (diff)
downloadbinutils-fda3ecf23f406d43dd2990a86ff16a2b0359471c.zip
binutils-fda3ecf23f406d43dd2990a86ff16a2b0359471c.tar.gz
binutils-fda3ecf23f406d43dd2990a86ff16a2b0359471c.tar.bz2
* elf-bfd.h (struct eh_cie_fde): Add cie_inf, remove sec.
(struct eh_frame_hdr_info): Add last_cie_inf, remove last_cie_offset. * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Delete code setting offsets for removed CIEs. Don't set "sec", instead set cie_inf for FDEs. Keep a pointer to last struct eh_cie_fde for a CIE in hdr_info. Only set make_relative and make_lsda_relative for CIEs. Use pointers rather than array indices. (_bfd_elf_eh_frame_section_offset): Test/set make_relative, make_lsda_relative, need_* on cie_inf for FDEs. (_bfd_elf_write_section_eh_frame): Adjust offset and new_offset for section output_offset. Delete cie_offset, instead use cie_inf pointer to CIE entry. Use need_relative and need_lsda_relative on CIE entry for FDEs. Use pointers rather than array indices.
Diffstat (limited to 'bfd/elf-bfd.h')
-rw-r--r--bfd/elf-bfd.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index bfee05d..f9b1b4a 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -286,9 +286,10 @@ struct cie
struct eh_cie_fde
{
- unsigned int offset;
+ /* For FDEs, this points to the CIE used. */
+ struct eh_cie_fde *cie_inf;
unsigned int size;
- asection *sec;
+ unsigned int offset;
unsigned int new_offset;
unsigned char fde_encoding;
unsigned char lsda_encoding;
@@ -319,8 +320,8 @@ struct eh_frame_hdr_info
{
struct cie last_cie;
asection *last_cie_sec;
+ struct eh_cie_fde *last_cie_inf;
asection *hdr_sec;
- unsigned int last_cie_offset;
unsigned int fde_count, array_count;
struct eh_frame_array_ent *array;
/* TRUE if .eh_frame_hdr should contain the sorted search table.