diff options
author | Sudakshina Das <sudi.das@arm.com> | 2019-03-21 16:20:21 +0000 |
---|---|---|
committer | Sudakshina Das <sudi.das@arm.com> | 2019-03-21 16:20:21 +0000 |
commit | 4e5391148d51c58785aad637f1a92d47b91b3ae6 (patch) | |
tree | 39854d98236b1aa76c3ecc067dd66c430804e4da /bfd/elf-properties.c | |
parent | f84bd4655c17b3ee59b73bd33ec91f75bd58546c (diff) | |
download | gdb-4e5391148d51c58785aad637f1a92d47b91b3ae6.zip gdb-4e5391148d51c58785aad637f1a92d47b91b3ae6.tar.gz gdb-4e5391148d51c58785aad637f1a92d47b91b3ae6.tar.bz2 |
[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.
Diffstat (limited to 'bfd/elf-properties.c')
-rw-r--r-- | bfd/elf-properties.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/bfd/elf-properties.c b/bfd/elf-properties.c index 0c3f19c..94ef235 100644 --- a/bfd/elf-properties.c +++ b/bfd/elf-properties.c @@ -198,7 +198,7 @@ next: with ABFD. */ static bfd_boolean -elf_merge_gnu_properties (struct bfd_link_info *info, bfd *abfd, +elf_merge_gnu_properties (struct bfd_link_info *info, bfd *abfd, bfd *bbfd, elf_property *aprop, elf_property *bprop) { const struct elf_backend_data *bed = get_elf_backend_data (abfd); @@ -207,7 +207,7 @@ elf_merge_gnu_properties (struct bfd_link_info *info, bfd *abfd, if (bed->merge_gnu_properties != NULL && pr_type >= GNU_PROPERTY_LOPROC && pr_type < GNU_PROPERTY_LOUSER) - return bed->merge_gnu_properties (info, abfd, aprop, bprop); + return bed->merge_gnu_properties (info, abfd, bbfd, aprop, bprop); switch (pr_type) { @@ -289,7 +289,7 @@ elf_merge_gnu_property_list (struct bfd_link_info *info, bfd *first_pbfd, TRUE); /* Pass NULL to elf_merge_gnu_properties for the property which isn't on *LISTP. */ - elf_merge_gnu_properties (info, first_pbfd, &p->property, pr); + elf_merge_gnu_properties (info, first_pbfd, abfd, &p->property, pr); if (p->property.pr_kind == property_remove) { if (info->has_map_file) @@ -365,7 +365,7 @@ elf_merge_gnu_property_list (struct bfd_link_info *info, bfd *first_pbfd, else number_p = FALSE; - if (elf_merge_gnu_properties (info, first_pbfd, NULL, &p->property)) + if (elf_merge_gnu_properties (info, first_pbfd, abfd, NULL, &p->property)) { if (p->property.pr_type == GNU_PROPERTY_NO_COPY_ON_PROTECTED) elf_has_no_copy_on_protected (first_pbfd) = TRUE; |