[BFD, AArch64, x86] Improve warning for --force-bti
authorSudakshina Das <sudi.das@arm.com>
Thu, 21 Mar 2019 16:20:21 +0000 (16:20 +0000)
committerSudakshina Das <sudi.das@arm.com>
Thu, 21 Mar 2019 16:20:21 +0000 (16:20 +0000)
commit4e5391148d51c58785aad637f1a92d47b91b3ae6
tree39854d98236b1aa76c3ecc067dd66c430804e4da
parentf84bd4655c17b3ee59b73bd33ec91f75bd58546c
[BFD, AArch64, x86] Improve warning for --force-bti

The AArch64 linker option to turn on BTI (--force-bti) warns in case there are
input objects which have a missing GNU NOTE section for BTI. This patch is trying
to improve the warnings that come out.

In order to do so, I propose adding a new argument to elf_merge_gnu_properties
and the backend function merge_gnu_properties. This new argument makes sure
that we now pass both the objects along with the properties to which they
belong to. The x86 backend function has also been updated to match this
change.

*** bfd/ChangeLog ***

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

* elf-bfd.h (struct elf_backend_data): Add argument to
merge_gnu_properties.
* elf-properties.c (elf_merge_gnu_properties): Add argument to
itself and while calling bed->merge_gnu_properties.
(elf_merge_gnu_property_list): Update the calls for
elf_merge_gnu_properties.
* elfnn-aarch64.c (elfNN_aarch64_merge_gnu_properties): Update handling
of --force-bti warning and add argument.
* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties): Add
warning.
* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Add argument.
* elfxx-x86.h (_bfd_x86_elf_merge_gnu_properties): Likewise in
declaration.

*** ld/ChangeLog ***

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

* testsuite/ld-aarch64/aarch64-elf.exp: Add new test.
* testsuite/ld-aarch64/bti-plt-1.s: Add .ifdef for PAC note section.
* testsuite/ld-aarch64/bti-plt-6.d: Update warning.
* testsuite/ld-aarch64/bti-plt-7.d: Likewise.
* testsuite/ld-aarch64/bti-warn.d: New test.
13 files changed:
bfd/ChangeLog
bfd/elf-bfd.h
bfd/elf-properties.c
bfd/elfnn-aarch64.c
bfd/elfxx-aarch64.c
bfd/elfxx-x86.c
bfd/elfxx-x86.h
ld/ChangeLog
ld/testsuite/ld-aarch64/aarch64-elf.exp
ld/testsuite/ld-aarch64/bti-plt-1.s
ld/testsuite/ld-aarch64/bti-plt-6.d
ld/testsuite/ld-aarch64/bti-plt-7.d
ld/testsuite/ld-aarch64/bti-warn.d [new file with mode: 0644]