Skip to content
Snippets Groups Projects
Commit 237df8fe authored by Sudakshina Das's avatar Sudakshina Das
Browse files

[BFD, AArch64] Fix PT_GNU_PROPERTY alignment issue

If the new GNU property section was being created by the linker
(this will happen only if none of the inputs have any GNU property
section but the command line to the linker forces a bti with
--force-bti), the alignment of the section and hence the program
header of PT_GNU_PROPERTY type was not being set correctly. This
patch fixes this issue.

bfd/ChangeLog:

2019-06-06  Sudakshina Das  <sudi.das@arm.com>

	* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties): Set
	alignment of the new gnu property section.

ld/ChangeLog:

2019-06-06  Sudakshina Das  <sudi.das@arm.com>

	* testsuite/ld-aarch64/aarch64-elf.exp: Add new tests.
	* testsuite/ld-aarch64/property-bti-pac4-a.d: New test.
	* testsuite/ld-aarch64/property-bti-pac4-b.d: New test.
	* testsuite/ld-aarch64/property-bti-pac4.s: New test.
parent 8bf6d176
No related branches found
No related tags found
No related merge requests found
2019-06-06 Sudakshina Das <sudi.das@arm.com>
* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties): Set
alignment of the new gnu property section.
2019-06-06 Sudakshina Das <sudi.das@arm.com> 2019-06-06 Sudakshina Das <sudi.das@arm.com>
* bfd-in.h: Change comment. * bfd-in.h: Change comment.
......
...@@ -695,6 +695,7 @@ _bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *info, ...@@ -695,6 +695,7 @@ _bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *info,
bfd *pbfd; bfd *pbfd;
bfd *ebfd = NULL; bfd *ebfd = NULL;
elf_property *prop; elf_property *prop;
unsigned align;
uint32_t gnu_prop = *gprop; uint32_t gnu_prop = *gprop;
...@@ -743,6 +744,13 @@ _bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *info, ...@@ -743,6 +744,13 @@ _bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *info,
info->callbacks->einfo ( info->callbacks->einfo (
_("%F%P: failed to create GNU property section\n")); _("%F%P: failed to create GNU property section\n"));
align = (bfd_get_mach (ebfd) & bfd_mach_aarch64_ilp32) ? 2 : 3;
if (!bfd_set_section_alignment (ebfd, sec, align))
{
info->callbacks->einfo (_("%F%pA: failed to align section\n"),
sec);
}
elf_section_type (sec) = SHT_NOTE; elf_section_type (sec) = SHT_NOTE;
} }
} }
......
2019-06-06 Sudakshina Das <sudi.das@arm.com>
* testsuite/ld-aarch64/aarch64-elf.exp: Add new tests.
* testsuite/ld-aarch64/property-bti-pac4-a.d: New test.
* testsuite/ld-aarch64/property-bti-pac4-b.d: New test.
* testsuite/ld-aarch64/property-bti-pac4.s: New test.
2019-06-06 Sudakshina Das <sudi.das@arm.com> 2019-06-06 Sudakshina Das <sudi.das@arm.com>
* NEWS: Update options names. * NEWS: Update options names.
......
...@@ -381,6 +381,8 @@ run_dump_test_lp64 "pie-bind-locally" ...@@ -381,6 +381,8 @@ run_dump_test_lp64 "pie-bind-locally"
run_dump_test "property-bti-pac1" run_dump_test "property-bti-pac1"
run_dump_test "property-bti-pac2" run_dump_test "property-bti-pac2"
run_dump_test "property-bti-pac3" run_dump_test "property-bti-pac3"
run_dump_test "property-bti-pac4-a"
run_dump_test "property-bti-pac4-b"
run_dump_test "bti-plt-1" run_dump_test "bti-plt-1"
run_dump_test "bti-plt-2" run_dump_test "bti-plt-2"
......
#name: PT_GNU_PROPERTY alignment
#source: property-bti-pac4.s
#as: -mabi=lp64
#ld: -z force-bti -e main
#readelf: -l --wide
#target: *linux*
#warning: .*property-bti-pac4.*: warning: BTI turned on by -z force-bti.*
#...
GNU_PROPERTY .* +0x8
#...
#name: PT_GNU_PROPERTY alignment ILP32
#source: property-bti-pac4.s
#as: -mabi=ilp32
#ld: -m [aarch64_choose_ilp32_emul] -z force-bti -e main
#readelf: -l --wide
#target: *linux*
#warning: .*property-bti-pac4.*: warning: BTI turned on by -z force-bti.*
#...
GNU_PROPERTY .* +0x4
#...
.arch armv8-a
.file "t.c"
.text
.align 2
.p2align 3,,7
.global f
.type f, %function
f:
add w0, w0, 1
ret
.size f, .-f
.section .text.startup,"ax",@progbits
.align 2
.p2align 3,,7
.global main
.type main, %function
main:
mov w0, 6
ret
.size main, .-main
.section .note.GNU-stack,"",@progbits
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment