/* x86 specific support for ELF
- Copyright (C) 2017-2018 Free Software Foundation, Inc.
+ Copyright (C) 2017-2019 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
bfd_boolean
_bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
bfd *abfd ATTRIBUTE_UNUSED,
+ bfd *bbfd ATTRIBUTE_UNUSED,
elf_property *aprop,
elf_property *bprop)
{
}
else
{
+ /* There should be no AND properties since some input doesn't
+ have them. Set IBT and SHSTK properties for -z ibt and -z
+ shstk if needed. */
features = 0;
if (info->ibt)
features = GNU_PROPERTY_X86_FEATURE_1_IBT;
features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
if (features)
{
- /* Add GNU_PROPERTY_X86_FEATURE_1_IBT and
- GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
if (aprop != NULL)
{
- number = aprop->u.number;
- aprop->u.number = number | features;
- updated = number != (unsigned int) aprop->u.number;
+ updated = features != (unsigned int) aprop->u.number;
+ aprop->u.number = features;
}
else
{
- bprop->u.number |= features;
updated = TRUE;
+ bprop->u.number = features;
}
}
else if (aprop != NULL)
/* Fix up x86 GNU properties. */
void
-_bfd_x86_elf_link_fixup_gnu_properties (struct bfd_link_info *info,
- elf_property_list **listp)
+_bfd_x86_elf_link_fixup_gnu_properties
+ (struct bfd_link_info *info ATTRIBUTE_UNUSED,
+ elf_property_list **listp)
{
elf_property_list *p;
continue;
}
- /* Mark x86-specific properties with X86_UINT32_VALID for
- non-relocatable output. */
- if (!bfd_link_relocatable (info))
- p->property.u.number |= GNU_PROPERTY_X86_UINT32_VALID;
-
listp = &p->next;
}
else if (type > GNU_PROPERTY_HIPROC)