diff options
author | Alan Modra <amodra@gmail.com> | 2017-03-05 14:49:54 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2017-03-05 14:49:54 +1030 |
commit | 2e0ce1c84d328bde4dca24b7cfc8b9c033ed271c (patch) | |
tree | ea600af380bd0013091dae62a33abc582fb000b5 /bfd/elf-bfd.h | |
parent | 0792e0e1199e76dce19a0f9fbdb29c75b8be8a9b (diff) | |
download | gdb-2e0ce1c84d328bde4dca24b7cfc8b9c033ed271c.zip gdb-2e0ce1c84d328bde4dca24b7cfc8b9c033ed271c.tar.gz gdb-2e0ce1c84d328bde4dca24b7cfc8b9c033ed271c.tar.bz2 |
Align eh_frame FDEs according to their encoding
bfd/
* elf-bfd.h (struct eh_cie_fde): Add u.cie.per_encoding_aligned8.
* elf-eh-frame.c (size_of_output_cie_fde): Don't align here.
(next_cie_fde_offset): New function.
(_bfd_elf_parse_eh_frame): Set u.cie.per_encoding_aligned8.
(_bfd_elf_discard_section_eh_frame): Align zero terminator to
four bytes. Align CIEs to four or eight bytes depending on
per_encoding_aligned8. Align FDEs according to their encoding.
Pad last FDE to output section alignment.
(_bfd_elf_write_section_eh_frame): Adjust to suit. Remove
assertion.
* elf64-ppc.c (glink_eh_frame_cie): Delete padding.
(ppc64_elf_size_stubs): Pad glink eh_frame as per elf-eh-frame.c.
(ppc64_elf_finish_dynamic_sections): Adjust to suit.
ld/
* testsuite/ld-elf/eh3.d: Adjust for eh_frame alignment change.
* testsuite/ld-elf/eh6.d: Likewise.
* testsuite/ld-alpha/tlsbin.dd: Likewise.
* testsuite/ld-alpha/tlsbin.td: Likewise.
* testsuite/ld-alpha/tlsbinr.dd: Likewise.
* testsuite/ld-alpha/tlspic.dd: Likewise.
* testsuite/ld-alpha/tlspic.rd: Likewise.
* testsuite/ld-alpha/tlspic.sd: Likewise.
* testsuite/ld-alpha/tlspic.td: Likewise.
* testsuite/ld-mips-elf/eh-frame1-n64.d: Likewise.
* testsuite/ld-mips-elf/eh-frame2-n64.d: Likewise.
* testsuite/ld-mips-elf/eh-frame3.d: Likewise.
* testsuite/ld-x86-64/pr20830a.d: Likewise.
* testsuite/ld-x86-64/pr21038a.d: Likewise.
* testsuite/ld-x86-64/pr21038b.d: Likewise.
* testsuite/ld-x86-64/pr21038c.d: Likewise.
Diffstat (limited to 'bfd/elf-bfd.h')
-rw-r--r-- | bfd/elf-bfd.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index f5a8d75..9e3d6f5 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -342,6 +342,10 @@ struct eh_cie_fde make_per_encoding_relative is. */ unsigned int per_encoding_relative : 1; + /* True if the CIE contains personality data aligned to a + multiple of eight bytes. */ + unsigned int per_encoding_aligned8 : 1; + /* True if we need to add an 'R' (FDE encoding) entry to the CIE's augmentation data. */ unsigned int add_fde_encoding : 1; @@ -350,7 +354,7 @@ struct eh_cie_fde unsigned int merged : 1; /* Unused bits. */ - unsigned int pad1 : 18; + unsigned int pad1 : 17; } cie; } u; unsigned int reloc_index; |