diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2007-12-15 09:41:15 +0000 |
---|---|---|
committer | Richard Sandiford <rdsandiford@googlemail.com> | 2007-12-15 09:41:15 +0000 |
commit | 6b2cc1401c75fb337cc4092d22eac4ccf491a0a9 (patch) | |
tree | eb3f6ab39b407f8e0dd54706e765bbb28cb65be3 /bfd/elf-bfd.h | |
parent | 9f4b847e239cc0e20de3662855f25d298aad8b8c (diff) | |
download | gdb-6b2cc1401c75fb337cc4092d22eac4ccf491a0a9.zip gdb-6b2cc1401c75fb337cc4092d22eac4ccf491a0a9.tar.gz gdb-6b2cc1401c75fb337cc4092d22eac4ccf491a0a9.tar.bz2 |
bfd/
* elf-bfd.h (eh_cie_fde): Move add_fde_encoding and
per_encoding_relative to u.cie. Add commentary.
* elf-eh-frame.c (cie): Remove make_relative.
(extra_augmentation_string_bytes): Update use of add_fde_encoding.
(extra_augmentation_data_bytes): Likewise. Use an FDE's own
add_augmentation_size field, rather than referring to the CIE.
(_bfd_elf_parse_eh_frame): Don't set the struct cie
make_relative field; set the eh_cie_fde field directly.
Update setting of add_fde_encoding and per_encoding_relative.
Copy make_relative and add_augmentation_size from the CIE
to the FDE.
(_bfd_elf_discard_section_eh_frame): Use the FDE's own
make_relative field.
(_bfd_elf_eh_frame_section_offset): Likewise.
(_bfd_elf_write_section_eh_frame): Update accesses to
add_fde_encoding and per_encoding_relative. Use the FDE's
own make_relative and add_augmentation_size fields.
Diffstat (limited to 'bfd/elf-bfd.h')
-rw-r--r-- | bfd/elf-bfd.h | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index a4e974f..4b6c1af 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -290,6 +290,14 @@ struct eh_cie_fde a PC-relative one. It is the group representative's setting that matters. */ unsigned int make_lsda_relative : 1; + + /* True if the CIE contains personality data and if that data + uses a PC-relative encoding. */ + unsigned int per_encoding_relative : 1; + + /* True if we need to add an 'R' (FDE encoding) entry to the + CIE's augmentation data. */ + unsigned int add_fde_encoding : 1; } cie; } u; unsigned int reloc_index; @@ -299,12 +307,25 @@ struct eh_cie_fde unsigned int fde_encoding : 8; unsigned int lsda_encoding : 8; unsigned int lsda_offset : 8; + + /* True if this entry represents a CIE, false if it represents an FDE. */ unsigned int cie : 1; + + /* True if this entry is currently marked for removal. */ unsigned int removed : 1; + + /* True if we need to add a 'z' (augmentation size) entry to the CIE's + augmentation data, and an associated byte to each of the CIE's FDEs. */ unsigned int add_augmentation_size : 1; - unsigned int add_fde_encoding : 1; + + /* True if we have decided to convert absolute FDE relocations into + relative ones. This applies to the first relocation in the FDE, + which is against the code that the FDE describes. */ unsigned int make_relative : 1; - unsigned int per_encoding_relative : 1; + + /* Unused bits. */ + unsigned int pad1 : 4; + unsigned int *set_loc; }; |