[BFD, AArch64] Define elf_backend_fixup_gnu_properties in AArch64

This patch add support for elf_backend_fixup_gnu_properties for GNU
property support for AArch64. The new AArch64 specific definition
_bfd_aarch64_elf_link_fixup_gnu_properties goes through the property
list to find AArch64 type properties and removes the properties that
are marked as "property_remove".

*** bfd/ChangeLog ***

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

	* elfxx-aarch64.c (_bfd_aarch64_elf_link_fixup_gnu_properties): Define.
	* elfxx-aarch64.h (_bfd_aarch64_elf_link_fixup_gnu_properties): Declare.
	(elf_backend_fixup_gnu_properties): Define for AArch64.
This commit is contained in:
Sudakshina Das 2019-03-20 18:00:07 +00:00
parent 48869a5f9c
commit acde6c6b43
3 changed files with 48 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2019-03-20 Sudakshina Das <sudi.das@arm.com>
* elfxx-aarch64.c (_bfd_aarch64_elf_link_fixup_gnu_properties): Define.
* elfxx-aarch64.h (_bfd_aarch64_elf_link_fixup_gnu_properties): Declare.
(elf_backend_fixup_gnu_properties): Define for AArch64.
2019-03-18 Alan Modra <amodra@gmail.com>
PR 24355

View File

@ -863,3 +863,38 @@ _bfd_aarch64_elf_merge_gnu_properties (struct bfd_link_info *info
return updated;
}
/* Fix up AArch64 GNU properties. */
void
_bfd_aarch64_elf_link_fixup_gnu_properties
(struct bfd_link_info *info ATTRIBUTE_UNUSED,
elf_property_list **listp)
{
elf_property_list *p, *prev;
for (p = *listp, prev = *listp; p; p = p->next)
{
unsigned int type = p->property.pr_type;
if (type == GNU_PROPERTY_AARCH64_FEATURE_1_AND)
{
if (p->property.pr_kind == property_remove)
{
/* Remove empty property. */
if (prev == p)
{
*listp = p->next;
prev = *listp;
}
else
prev->next = p->next;
continue;
}
prev = p;
}
else if (type > GNU_PROPERTY_HIPROC)
{
/* The property list is sorted in order of type. */
break;
}
}
}

View File

@ -69,5 +69,12 @@ _bfd_aarch64_elf_merge_gnu_properties (struct bfd_link_info *, bfd *,
elf_property *, elf_property *,
uint32_t);
extern void
_bfd_aarch64_elf_link_fixup_gnu_properties (struct bfd_link_info *,
elf_property_list **);
#define elf_backend_parse_gnu_properties \
_bfd_aarch64_elf_parse_gnu_properties
#define elf_backend_fixup_gnu_properties \
_bfd_aarch64_elf_link_fixup_gnu_properties