x86-64: Add Intel LAM property support
Add Intel Linear Address Masking (LAM) property support. LAM modifies the checking that is applied to 64-bit linear addresses, allowing software to use of the untranslated address bits for metadata. bfd/ * elf-linker-x86.h (elf_x86_cet_report): Renamed to ... (elf_x86_prop_report): This. (elf_linker_x86_params): Add lam_u48, lam_u57, lam_u48_report and lam_u57_report. * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Support GNU_PROPERTY_X86_FEATURE_1_LAM_U48 and GNU_PROPERTY_X86_FEATURE_1_LAM_U57. (_bfd_x86_elf_link_fixup_gnu_properties): Keep LAM features only for 64-bit output. binutils/ * NEWS: Mention LAM_U48 and LAM_U57 support. * elfedit.c (elf_x86_feature): Support lam_u48 and lam_u57. (usage): Add lam_u48 and lam_u57. * readelf.c (decode_x86_feature_1): Support LAM_U48 and LAM_U57. * doc/binutils.texi: Update elfedit with lam_u48 and lam_u57 support. * testsuite/binutils-all/x86-64/lam-u48.d: New file. * testsuite/binutils-all/x86-64/lam-u48.s: Likewise. * testsuite/binutils-all/x86-64/lam-u57.d: Likewise. * testsuite/binutils-all/x86-64/lam-u57.s: Likewise. include/ * elf/common.h (GNU_PROPERTY_X86_FEATURE_1_LAM_U48): New. (GNU_PROPERTY_X86_FEATURE_1_LAM_U57): Likewise. ld/ * NEWS: Mention LAM_U48 and LAM_U57 support. * ld.texi: Document LAM_U48 and LAM_U57 support. * emulparams/cet.sh: Updated. * emulparams/elf_x86_64.sh: Source x86-64-lam.sh. * emulparams/x86-64-lam.sh: New file. * testsuite/ld-x86-64/property-x86-lam-u48-1a.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u48-1b.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u48-2.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u48-3a.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u48-3b.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u48-4.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u48-5.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u48.s: Likewise. * testsuite/ld-x86-64/property-x86-lam-u57-1a.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u57-1b.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u57-2.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u57-3a.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u57-3b.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u57-4.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u57-5.d: Likewise. * testsuite/ld-x86-64/property-x86-lam-u57.s: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run LAM tests.
This commit is contained in:
parent
5cc0917c38
commit
279d901e5a
bfd
binutils
include
ld
ChangeLogNEWS
emulparams
ld.texitestsuite/ld-x86-64
property-x86-lam-u48-1a.dproperty-x86-lam-u48-1b.dproperty-x86-lam-u48-2.dproperty-x86-lam-u48-3a.dproperty-x86-lam-u48-3b.dproperty-x86-lam-u48-4.dproperty-x86-lam-u48-5.dproperty-x86-lam-u48.sproperty-x86-lam-u57-1a.dproperty-x86-lam-u57-1b.dproperty-x86-lam-u57-2.dproperty-x86-lam-u57-3a.dproperty-x86-lam-u57-3b.dproperty-x86-lam-u57-4.dproperty-x86-lam-u57-5.dproperty-x86-lam-u57.sx86-64.exp
@ -1,3 +1,15 @@
|
||||
2020-12-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf-linker-x86.h (elf_x86_cet_report): Renamed to ...
|
||||
(elf_x86_prop_report): This.
|
||||
(elf_linker_x86_params): Add lam_u48, lam_u57, lam_u48_report
|
||||
and lam_u57_report.
|
||||
* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Support
|
||||
GNU_PROPERTY_X86_FEATURE_1_LAM_U48 and
|
||||
GNU_PROPERTY_X86_FEATURE_1_LAM_U57.
|
||||
(_bfd_x86_elf_link_fixup_gnu_properties): Keep LAM features only
|
||||
for 64-bit output.
|
||||
|
||||
2020-12-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/27091
|
||||
|
@ -18,14 +18,14 @@
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
/* Missing IBT and SHSTK property report control. */
|
||||
enum elf_x86_cet_report
|
||||
/* Missing IBT, SHSTK and LAM property report control. */
|
||||
enum elf_x86_prop_report
|
||||
{
|
||||
cet_report_none = 0, /* Do nothing. */
|
||||
cet_report_warning = 1 << 0, /* Issue a warning. */
|
||||
cet_report_error = 1 << 1, /* Issue an error. */
|
||||
cet_report_ibt = 1 << 2, /* Report missing IBT property. */
|
||||
cet_report_shstk = 1 << 3 /* Report missing SHSTK property. */
|
||||
prop_report_none = 0, /* Do nothing. */
|
||||
prop_report_warning = 1 << 0, /* Issue a warning. */
|
||||
prop_report_error = 1 << 1, /* Issue an error. */
|
||||
prop_report_ibt = 1 << 2, /* Report missing IBT property. */
|
||||
prop_report_shstk = 1 << 3 /* Report missing SHSTK property. */
|
||||
};
|
||||
|
||||
/* Used to pass x86-specific linker options from ld to bfd. */
|
||||
@ -43,6 +43,12 @@ struct elf_linker_x86_params
|
||||
/* TRUE if GNU_PROPERTY_X86_FEATURE_1_SHSTK should be generated. */
|
||||
unsigned int shstk: 1;
|
||||
|
||||
/* TRUE if GNU_PROPERTY_X86_FEATURE_1_LAM_U48 should be generated. */
|
||||
unsigned int lam_u48: 1;
|
||||
|
||||
/* TRUE if GNU_PROPERTY_X86_FEATURE_1_LAM_U57 should be generated. */
|
||||
unsigned int lam_u57: 1;
|
||||
|
||||
/* TRUE if we shouldn't check relocation overflow. */
|
||||
unsigned int no_reloc_overflow_check: 1;
|
||||
|
||||
@ -59,7 +65,13 @@ struct elf_linker_x86_params
|
||||
unsigned int isa_level;
|
||||
|
||||
/* Report missing IBT and SHSTK properties. */
|
||||
enum elf_x86_cet_report cet_report;
|
||||
enum elf_x86_prop_report cet_report;
|
||||
|
||||
/* Report missing LAM_U48 property. */
|
||||
enum elf_x86_prop_report lam_u48_report;
|
||||
|
||||
/* Report missing LAM_U57 property. */
|
||||
enum elf_x86_prop_report lam_u57_report;
|
||||
|
||||
/* The 1-byte NOP for x86 call instruction. */
|
||||
char call_nop_byte;
|
||||
|
@ -2545,15 +2545,25 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
if (htab->params->ibt)
|
||||
{
|
||||
features = GNU_PROPERTY_X86_FEATURE_1_IBT;
|
||||
htab->params->cet_report &= ~cet_report_ibt;
|
||||
htab->params->cet_report &= ~prop_report_ibt;
|
||||
}
|
||||
if (htab->params->shstk)
|
||||
{
|
||||
features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
|
||||
htab->params->cet_report &= ~cet_report_shstk;
|
||||
htab->params->cet_report &= ~prop_report_shstk;
|
||||
}
|
||||
if (!(htab->params->cet_report & (prop_report_ibt | prop_report_shstk)))
|
||||
htab->params->cet_report = prop_report_none;
|
||||
if (htab->params->lam_u48)
|
||||
{
|
||||
features |= GNU_PROPERTY_X86_FEATURE_1_LAM_U48;
|
||||
htab->params->lam_u48_report = prop_report_none;
|
||||
}
|
||||
if (htab->params->lam_u57)
|
||||
{
|
||||
features |= GNU_PROPERTY_X86_FEATURE_1_LAM_U57;
|
||||
htab->params->lam_u57_report = prop_report_none;
|
||||
}
|
||||
if (!(htab->params->cet_report & (cet_report_ibt | cet_report_shstk)))
|
||||
htab->params->cet_report = cet_report_none;
|
||||
|
||||
switch (htab->params->isa_level)
|
||||
{
|
||||
@ -2581,8 +2591,10 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
prop = NULL;
|
||||
if (features)
|
||||
{
|
||||
/* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
|
||||
GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
|
||||
/* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT,
|
||||
GNU_PROPERTY_X86_FEATURE_1_SHSTK,
|
||||
GNU_PROPERTY_X86_FEATURE_1_LAM_U48 and
|
||||
GNU_PROPERTY_X86_FEATURE_1_LAM_U57. */
|
||||
prop = _bfd_elf_get_property (ebfd,
|
||||
GNU_PROPERTY_X86_FEATURE_1_AND,
|
||||
4);
|
||||
@ -2625,22 +2637,49 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
}
|
||||
}
|
||||
|
||||
if (htab->params->cet_report)
|
||||
if (htab->params->cet_report
|
||||
|| htab->params->lam_u48_report
|
||||
|| htab->params->lam_u57_report)
|
||||
{
|
||||
/* Report missing IBT and SHSTK properties. */
|
||||
/* Report missing IBT, SHSTK and LAM properties. */
|
||||
bfd *abfd;
|
||||
const char *msg;
|
||||
const char *warning_msg = _("%P: %pB: warning: missing %s\n");
|
||||
const char *error_msg = _("%X%P: %pB: error: missing %s\n");
|
||||
const char *cet_msg = NULL;
|
||||
const char *lam_u48_msg = NULL;
|
||||
const char *lam_u57_msg = NULL;
|
||||
const char *missing;
|
||||
elf_property_list *p;
|
||||
bfd_boolean missing_ibt, missing_shstk;
|
||||
bfd_boolean missing_lam_u48, missing_lam_u57;
|
||||
bfd_boolean check_ibt
|
||||
= !!(htab->params->cet_report & cet_report_ibt);
|
||||
= (htab->params->cet_report
|
||||
&& (htab->params->cet_report & prop_report_ibt));
|
||||
bfd_boolean check_shstk
|
||||
= !!(htab->params->cet_report & cet_report_shstk);
|
||||
= (htab->params->cet_report
|
||||
&& (htab->params->cet_report & prop_report_shstk));
|
||||
|
||||
if ((htab->params->cet_report & cet_report_warning))
|
||||
msg = _("%P: %pB: warning: missing %s\n");
|
||||
else
|
||||
msg = _("%X%P: %pB: error: missing %s\n");
|
||||
if (htab->params->cet_report)
|
||||
{
|
||||
if ((htab->params->cet_report & prop_report_warning))
|
||||
cet_msg = warning_msg;
|
||||
else
|
||||
cet_msg = error_msg;
|
||||
}
|
||||
if (htab->params->lam_u48_report)
|
||||
{
|
||||
if ((htab->params->lam_u48_report & prop_report_warning))
|
||||
lam_u48_msg = warning_msg;
|
||||
else
|
||||
lam_u48_msg = error_msg;
|
||||
}
|
||||
if (htab->params->lam_u57_report)
|
||||
{
|
||||
if ((htab->params->lam_u57_report & prop_report_warning))
|
||||
lam_u57_msg = warning_msg;
|
||||
else
|
||||
lam_u57_msg = error_msg;
|
||||
}
|
||||
|
||||
for (abfd = info->input_bfds; abfd != NULL; abfd = abfd->link.next)
|
||||
if (!(abfd->flags & (DYNAMIC | BFD_PLUGIN | BFD_LINKER_CREATED))
|
||||
@ -2652,23 +2691,38 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
|
||||
missing_ibt = check_ibt;
|
||||
missing_shstk = check_shstk;
|
||||
missing_lam_u48 = !!lam_u48_msg;
|
||||
missing_lam_u57 = !!lam_u57_msg;
|
||||
if (p)
|
||||
{
|
||||
missing_ibt &= !(p->property.u.number
|
||||
& GNU_PROPERTY_X86_FEATURE_1_IBT);
|
||||
missing_shstk &= !(p->property.u.number
|
||||
& GNU_PROPERTY_X86_FEATURE_1_SHSTK);
|
||||
missing_lam_u48 &= !(p->property.u.number
|
||||
& GNU_PROPERTY_X86_FEATURE_1_LAM_U48);
|
||||
missing_lam_u57 &= !(p->property.u.number
|
||||
& GNU_PROPERTY_X86_FEATURE_1_LAM_U57);
|
||||
}
|
||||
if (missing_ibt || missing_shstk)
|
||||
{
|
||||
const char *missing;
|
||||
if (missing_ibt && missing_shstk)
|
||||
missing = _("IBT and SHSTK properties");
|
||||
else if (missing_ibt)
|
||||
missing = _("IBT property");
|
||||
else
|
||||
missing = _("SHSTK property");
|
||||
info->callbacks->einfo (msg, abfd, missing);
|
||||
info->callbacks->einfo (cet_msg, abfd, missing);
|
||||
}
|
||||
if (missing_lam_u48)
|
||||
{
|
||||
missing = _("LAM_U48 property");
|
||||
info->callbacks->einfo (lam_u48_msg, abfd, missing);
|
||||
}
|
||||
if (missing_lam_u57)
|
||||
{
|
||||
missing = _("LAM_U57 property");
|
||||
info->callbacks->einfo (lam_u57_msg, abfd, missing);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3008,8 +3062,7 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
|
||||
void
|
||||
_bfd_x86_elf_link_fixup_gnu_properties
|
||||
(struct bfd_link_info *info ATTRIBUTE_UNUSED,
|
||||
elf_property_list **listp)
|
||||
(struct bfd_link_info *info, elf_property_list **listp)
|
||||
{
|
||||
elf_property_list *p;
|
||||
|
||||
@ -3037,6 +3090,12 @@ _bfd_x86_elf_link_fixup_gnu_properties
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Keep LAM features only for 64-bit output. */
|
||||
if (type == GNU_PROPERTY_X86_FEATURE_1_AND
|
||||
&& !ABI_64_P (info->output_bfd))
|
||||
p->property.u.number &= ~(GNU_PROPERTY_X86_FEATURE_1_LAM_U48
|
||||
| GNU_PROPERTY_X86_FEATURE_1_LAM_U57);
|
||||
|
||||
listp = &p->next;
|
||||
}
|
||||
else if (type > GNU_PROPERTY_HIPROC)
|
||||
|
@ -1,3 +1,16 @@
|
||||
2020-12-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* NEWS: Mention LAM_U48 and LAM_U57 support.
|
||||
* elfedit.c (elf_x86_feature): Support lam_u48 and lam_u57.
|
||||
(usage): Add lam_u48 and lam_u57.
|
||||
* readelf.c (decode_x86_feature_1): Support LAM_U48 and LAM_U57.
|
||||
* doc/binutils.texi: Update elfedit with lam_u48 and lam_u57
|
||||
support.
|
||||
* testsuite/binutils-all/x86-64/lam-u48.d: New file.
|
||||
* testsuite/binutils-all/x86-64/lam-u48.s: Likewise.
|
||||
* testsuite/binutils-all/x86-64/lam-u57.d: Likewise.
|
||||
* testsuite/binutils-all/x86-64/lam-u57.s: Likewise.
|
||||
|
||||
2020-12-15 Vivek Das Mohapatra <vivek@collabora.com>
|
||||
|
||||
* readelf.c (get_dynamic_type): Handle DT_GNU_FLAGS_1.
|
||||
|
@ -1,5 +1,7 @@
|
||||
-*- text -*-
|
||||
|
||||
* Update elfedit and readelf with LAM_U48 and LAM_U57 support.
|
||||
|
||||
* Nm has a new command line option: --ifunc-chars=CHARS. This specifies a
|
||||
string of one or two characters. The first character is used as the type
|
||||
character when displaying global ifunc symbols. The second character, if
|
||||
|
@ -5117,7 +5117,8 @@ supported ELF OSABI are the same as @option{--input-osabi}.
|
||||
@item --enable-x86-feature=@var{feature}
|
||||
Set the @var{feature} bit in program property in @var{exec} or @var{dyn}
|
||||
ELF files with machine types of @var{i386} or @var{x86-64}. The
|
||||
supported features are, @var{ibt} and @var{shstk}.
|
||||
supported features are, @var{ibt}, @var{shstk}, @var{lam_u48} and
|
||||
@var{lam_u57}.
|
||||
|
||||
@item --disable-x86-feature=@var{feature}
|
||||
Clear the @var{feature} bit in program property in @var{exec} or
|
||||
|
@ -260,6 +260,10 @@ elf_x86_feature (const char *feature, int enable)
|
||||
x86_feature = GNU_PROPERTY_X86_FEATURE_1_IBT;
|
||||
else if (strcasecmp (feature, "shstk") == 0)
|
||||
x86_feature = GNU_PROPERTY_X86_FEATURE_1_SHSTK;
|
||||
else if (strcasecmp (feature, "lam_u48") == 0)
|
||||
x86_feature = GNU_PROPERTY_X86_FEATURE_1_LAM_U48;
|
||||
else if (strcasecmp (feature, "lam_u57") == 0)
|
||||
x86_feature = GNU_PROPERTY_X86_FEATURE_1_LAM_U57;
|
||||
else
|
||||
{
|
||||
error (_("Unknown x86 feature: %s\n"), feature);
|
||||
@ -920,9 +924,9 @@ usage (FILE *stream, int exit_status)
|
||||
osabi, osabi);
|
||||
#ifdef HAVE_MMAP
|
||||
fprintf (stream, _("\
|
||||
--enable-x86-feature [ibt|shstk]\n\
|
||||
--enable-x86-feature [ibt|shstk|lam_u48|lam_u57]\n\
|
||||
Enable x86 feature\n\
|
||||
--disable-x86-feature [ibt|shstk]\n\
|
||||
--disable-x86-feature [ibt|shstk|lam_u48|lam_u57]\n\
|
||||
Disable x86 feature\n"));
|
||||
#endif
|
||||
fprintf (stream, _("\
|
||||
|
@ -18748,6 +18748,12 @@ decode_x86_feature_1 (unsigned int bitmask)
|
||||
case GNU_PROPERTY_X86_FEATURE_1_SHSTK:
|
||||
printf ("SHSTK");
|
||||
break;
|
||||
case GNU_PROPERTY_X86_FEATURE_1_LAM_U48:
|
||||
printf ("LAM_U48");
|
||||
break;
|
||||
case GNU_PROPERTY_X86_FEATURE_1_LAM_U57:
|
||||
printf ("LAM_U57");
|
||||
break;
|
||||
default:
|
||||
printf (_("<unknown: %x>"), bit);
|
||||
break;
|
||||
|
12
binutils/testsuite/binutils-all/x86-64/lam-u48.d
Normal file
12
binutils/testsuite/binutils-all/x86-64/lam-u48.d
Normal file
@ -0,0 +1,12 @@
|
||||
#PROG: objcopy
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#objcopy:
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 feature: LAM_U48
|
||||
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA used:
|
||||
x86 feature used: x86
|
27
binutils/testsuite/binutils-all/x86-64/lam-u48.s
Normal file
27
binutils/testsuite/binutils-all/x86-64/lam-u48.s
Normal file
@ -0,0 +1,27 @@
|
||||
.section ".note.gnu.property", "a"
|
||||
.ifdef __64_bit__
|
||||
.p2align 3
|
||||
.else
|
||||
.p2align 2
|
||||
.endif
|
||||
.long 1f - 0f /* name length */
|
||||
.long 5f - 2f /* data length */
|
||||
.long 5 /* note type */
|
||||
0: .asciz "GNU" /* vendor name */
|
||||
1:
|
||||
.ifdef __64_bit__
|
||||
.p2align 3
|
||||
.else
|
||||
.p2align 2
|
||||
.endif
|
||||
2: .long 0xc0000002 /* pr_type. */
|
||||
.long 4f - 3f /* pr_datasz. */
|
||||
3:
|
||||
.long 0x4
|
||||
4:
|
||||
.ifdef __64_bit__
|
||||
.p2align 3
|
||||
.else
|
||||
.p2align 2
|
||||
.endif
|
||||
5:
|
12
binutils/testsuite/binutils-all/x86-64/lam-u57.d
Normal file
12
binutils/testsuite/binutils-all/x86-64/lam-u57.d
Normal file
@ -0,0 +1,12 @@
|
||||
#PROG: objcopy
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#objcopy:
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 feature: LAM_U57
|
||||
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA used:
|
||||
x86 feature used: x86
|
27
binutils/testsuite/binutils-all/x86-64/lam-u57.s
Normal file
27
binutils/testsuite/binutils-all/x86-64/lam-u57.s
Normal file
@ -0,0 +1,27 @@
|
||||
.section ".note.gnu.property", "a"
|
||||
.ifdef __64_bit__
|
||||
.p2align 3
|
||||
.else
|
||||
.p2align 2
|
||||
.endif
|
||||
.long 1f - 0f /* name length */
|
||||
.long 5f - 2f /* data length */
|
||||
.long 5 /* note type */
|
||||
0: .asciz "GNU" /* vendor name */
|
||||
1:
|
||||
.ifdef __64_bit__
|
||||
.p2align 3
|
||||
.else
|
||||
.p2align 2
|
||||
.endif
|
||||
2: .long 0xc0000002 /* pr_type. */
|
||||
.long 4f - 3f /* pr_datasz. */
|
||||
3:
|
||||
.long 0x8
|
||||
4:
|
||||
.ifdef __64_bit__
|
||||
.p2align 3
|
||||
.else
|
||||
.p2align 2
|
||||
.endif
|
||||
5:
|
@ -1,3 +1,8 @@
|
||||
2020-12-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf/common.h (GNU_PROPERTY_X86_FEATURE_1_LAM_U48): New.
|
||||
(GNU_PROPERTY_X86_FEATURE_1_LAM_U57): Likewise.
|
||||
|
||||
2020-12-18 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* xtensa-isa-internal.h (xtisa_errno, xtisa_error_msg): Delete.
|
||||
|
@ -842,6 +842,8 @@
|
||||
|
||||
#define GNU_PROPERTY_X86_FEATURE_1_IBT (1U << 0)
|
||||
#define GNU_PROPERTY_X86_FEATURE_1_SHSTK (1U << 1)
|
||||
#define GNU_PROPERTY_X86_FEATURE_1_LAM_U48 (1U << 2)
|
||||
#define GNU_PROPERTY_X86_FEATURE_1_LAM_U57 (1U << 3)
|
||||
|
||||
#define GNU_PROPERTY_X86_FEATURE_2_X86 (1U << 0)
|
||||
#define GNU_PROPERTY_X86_FEATURE_2_X87 (1U << 1)
|
||||
|
25
ld/ChangeLog
25
ld/ChangeLog
@ -1,3 +1,28 @@
|
||||
2020-12-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* NEWS: Mention LAM_U48 and LAM_U57 support.
|
||||
* ld.texi: Document LAM_U48 and LAM_U57 support.
|
||||
* emulparams/cet.sh: Updated.
|
||||
* emulparams/elf_x86_64.sh: Source x86-64-lam.sh.
|
||||
* emulparams/x86-64-lam.sh: New file.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u48-1a.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u48-1b.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u48-2.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u48-3a.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u48-3b.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u48-4.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u48-5.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u48.s: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u57-1a.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u57-1b.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u57-2.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u57-3a.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u57-3b.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u57-4.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u57-5.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-lam-u57.s: Likewise.
|
||||
* testsuite/ld-x86-64/x86-64.exp: Run LAM tests.
|
||||
|
||||
2020-12-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/27082
|
||||
|
13
ld/NEWS
13
ld/NEWS
@ -8,6 +8,19 @@
|
||||
encountered. This option can be suppressed via the configure time
|
||||
switch: --enable-error-handling-script=no.
|
||||
|
||||
* Add -z lam-u48 to x86-64 ELF linker to generate LAM_U48 property.
|
||||
|
||||
* Add -z lam-u57 to x86-64 ELF linker to enerate LAM_U57 property.
|
||||
|
||||
* Add -z lam-u48-report=[none|warning|error] to report missing LAM_U48
|
||||
property.
|
||||
|
||||
* Add -z lam-u57-report=[none|warning|error] to report missing LAM_U57
|
||||
property.
|
||||
|
||||
* Add -z lam-report=[none|warning|error] to report missing LAM_U48 and
|
||||
LAM_U57 properties.
|
||||
|
||||
* Add -z x86-64-{baseline|v[234]} to the x86 ELF linker to mark
|
||||
x86-64-{baseline|v[234]} ISA level as needed.
|
||||
|
||||
|
@ -19,15 +19,15 @@ PARSE_AND_LIST_ARGS_CASE_Z_CET='
|
||||
else if (strncmp (optarg, "cet-report=", 11) == 0)
|
||||
{
|
||||
if (strcmp (optarg + 11, "none") == 0)
|
||||
params.cet_report = cet_report_none;
|
||||
params.cet_report = prop_report_none;
|
||||
else if (strcmp (optarg + 11, "warning") == 0)
|
||||
params.cet_report = (cet_report_warning
|
||||
| cet_report_ibt
|
||||
| cet_report_shstk);
|
||||
params.cet_report = (prop_report_warning
|
||||
| prop_report_ibt
|
||||
| prop_report_shstk);
|
||||
else if (strcmp (optarg + 11, "error") == 0)
|
||||
params.cet_report = (cet_report_error
|
||||
| cet_report_ibt
|
||||
| cet_report_shstk);
|
||||
params.cet_report = (prop_report_error
|
||||
| prop_report_ibt
|
||||
| prop_report_shstk);
|
||||
else
|
||||
einfo (_("%F%P: invalid option for -z cet-report=: %s\n"),
|
||||
optarg + 11);
|
||||
|
@ -5,6 +5,7 @@ source_sh ${srcdir}/emulparams/reloc_overflow.sh
|
||||
source_sh ${srcdir}/emulparams/call_nop.sh
|
||||
source_sh ${srcdir}/emulparams/cet.sh
|
||||
source_sh ${srcdir}/emulparams/x86-64-level.sh
|
||||
source_sh ${srcdir}/emulparams/x86-64-lam.sh
|
||||
source_sh ${srcdir}/emulparams/static.sh
|
||||
SCRIPT_NAME=elf
|
||||
ELFSIZE=64
|
||||
|
69
ld/emulparams/x86-64-lam.sh
Normal file
69
ld/emulparams/x86-64-lam.sh
Normal file
@ -0,0 +1,69 @@
|
||||
PARSE_AND_LIST_OPTIONS_LAM='
|
||||
fprintf (file, _("\
|
||||
-z lam-u48 Generate GNU_PROPERTY_X86_FEATURE_1_LAM_U48\n"));
|
||||
fprintf (file, _("\
|
||||
-z lam-u48-report=[none|warning|error] (default: none)\n\
|
||||
Report missing LAM_U48 property\n"));
|
||||
fprintf (file, _("\
|
||||
-z lam-u57 Generate GNU_PROPERTY_X86_FEATURE_1_LAM_U57\n"));
|
||||
fprintf (file, _("\
|
||||
-z lam-u57-report=[none|warning|error] (default: none)\n\
|
||||
Report missing LAM_U57 property\n"));
|
||||
fprintf (file, _("\
|
||||
-z lam-report=[none|warning|error] (default: none)\n\
|
||||
Report missing LAM_U48 and LAM_U57 properties\n"));
|
||||
'
|
||||
PARSE_AND_LIST_ARGS_CASE_Z_LAM='
|
||||
else if (strcmp (optarg, "lam-u48") == 0)
|
||||
params.lam_u48 = TRUE;
|
||||
else if (strncmp (optarg, "lam-u48-report=", 15) == 0)
|
||||
{
|
||||
if (strcmp (optarg + 15, "none") == 0)
|
||||
params.lam_u48_report = prop_report_none;
|
||||
else if (strcmp (optarg + 15, "warning") == 0)
|
||||
params.lam_u48_report = prop_report_warning;
|
||||
else if (strcmp (optarg + 15, "error") == 0)
|
||||
params.lam_u48_report = prop_report_error;
|
||||
else
|
||||
einfo (_("%F%P: invalid option for -z lam-u48-report=: %s\n"),
|
||||
optarg + 15);
|
||||
}
|
||||
else if (strcmp (optarg, "lam-u57") == 0)
|
||||
params.lam_u57 = TRUE;
|
||||
else if (strncmp (optarg, "lam-u57-report=", 15) == 0)
|
||||
{
|
||||
if (strcmp (optarg + 15, "none") == 0)
|
||||
params.lam_u57_report = prop_report_none;
|
||||
else if (strcmp (optarg + 15, "warning") == 0)
|
||||
params.lam_u57_report = prop_report_warning;
|
||||
else if (strcmp (optarg + 15, "error") == 0)
|
||||
params.lam_u57_report = prop_report_error;
|
||||
else
|
||||
einfo (_("%F%P: invalid option for -z lam-u57-report=: %s\n"),
|
||||
optarg + 15);
|
||||
}
|
||||
else if (strncmp (optarg, "lam-report=", 11) == 0)
|
||||
{
|
||||
if (strcmp (optarg + 11, "none") == 0)
|
||||
{
|
||||
params.lam_u48_report = prop_report_none;
|
||||
params.lam_u57_report = prop_report_none;
|
||||
}
|
||||
else if (strcmp (optarg + 11, "warning") == 0)
|
||||
{
|
||||
params.lam_u48_report = prop_report_warning;
|
||||
params.lam_u57_report = prop_report_warning;
|
||||
}
|
||||
else if (strcmp (optarg + 11, "error") == 0)
|
||||
{
|
||||
params.lam_u48_report = prop_report_error;
|
||||
params.lam_u57_report = prop_report_error;
|
||||
}
|
||||
else
|
||||
einfo (_("%F%P: invalid option for -z lam-report=: %s\n"),
|
||||
optarg + 11);
|
||||
}
|
||||
'
|
||||
|
||||
PARSE_AND_LIST_OPTIONS="$PARSE_AND_LIST_OPTIONS $PARSE_AND_LIST_OPTIONS_LAM"
|
||||
PARSE_AND_LIST_ARGS_CASE_Z="$PARSE_AND_LIST_ARGS_CASE_Z $PARSE_AND_LIST_ARGS_CASE_Z_LAM"
|
44
ld/ld.texi
44
ld/ld.texi
@ -1316,6 +1316,50 @@ al which do not usually function correctly unless they are the sole instances
|
||||
of themselves. This behaviour can be overridden by the @code{dlmopen} caller
|
||||
and does not apply to certain loading mechanisms (such as audit libraries).
|
||||
|
||||
@item lam-u48
|
||||
Generate GNU_PROPERTY_X86_FEATURE_1_LAM_U48 in .note.gnu.property section
|
||||
to indicate compatibility with Intel LAM_U48. Supported for Linux/x86_64.
|
||||
|
||||
@item lam-u57
|
||||
Generate GNU_PROPERTY_X86_FEATURE_1_LAM_U57 in .note.gnu.property section
|
||||
to indicate compatibility with Intel LAM_U57. Supported for Linux/x86_64.
|
||||
|
||||
@item lam-u48-report=none
|
||||
@itemx lam-u48-report=warning
|
||||
@itemx lam-u48-report=error
|
||||
Specify how to report the missing GNU_PROPERTY_X86_FEATURE_1_LAM_U48
|
||||
property in input .note.gnu.property section.
|
||||
@option{lam-u48-report=none}, which is the default, will make the
|
||||
linker not report missing properties in input files.
|
||||
@option{lam-u48-report=warning} will make the linker issue a warning for
|
||||
missing properties in input files. @option{lam-u48-report=error} will
|
||||
make the linker issue an error for missing properties in input files.
|
||||
Supported for Linux/x86_64.
|
||||
|
||||
@item lam-u57-report=none
|
||||
@itemx lam-u57-report=warning
|
||||
@itemx lam-u57-report=error
|
||||
Specify how to report the missing GNU_PROPERTY_X86_FEATURE_1_LAM_U57
|
||||
property in input .note.gnu.property section.
|
||||
@option{lam-u57-report=none}, which is the default, will make the
|
||||
linker not report missing properties in input files.
|
||||
@option{lam-u57-report=warning} will make the linker issue a warning for
|
||||
missing properties in input files. @option{lam-u57-report=error} will
|
||||
make the linker issue an error for missing properties in input files.
|
||||
Supported for Linux/x86_64.
|
||||
|
||||
@item lam-report=none
|
||||
@itemx lam-report=warning
|
||||
@itemx lam-report=error
|
||||
Specify how to report the missing GNU_PROPERTY_X86_FEATURE_1_LAM_U48 and
|
||||
GNU_PROPERTY_X86_FEATURE_1_LAM_U57 properties in input .note.gnu.property
|
||||
section. @option{lam-report=none}, which is the default, will make the
|
||||
linker not report missing properties in input files.
|
||||
@option{lam-report=warning} will make the linker issue a warning for
|
||||
missing properties in input files. @option{lam-report=error} will make
|
||||
the linker issue an error for missing properties in input files.
|
||||
Supported for Linux/x86_64.
|
||||
|
||||
@item lazy
|
||||
When generating an executable or shared library, mark it to tell the
|
||||
dynamic linker to defer function call resolution to the point when
|
||||
|
11
ld/testsuite/ld-x86-64/property-x86-lam-u48-1a.d
Normal file
11
ld/testsuite/ld-x86-64/property-x86-lam-u48-1a.d
Normal file
@ -0,0 +1,11 @@
|
||||
#source: property-x86-empty.s
|
||||
#source: property-x86-lam-u48.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 feature used: x86
|
||||
x86 ISA used:
|
11
ld/testsuite/ld-x86-64/property-x86-lam-u48-1b.d
Normal file
11
ld/testsuite/ld-x86-64/property-x86-lam-u48-1b.d
Normal file
@ -0,0 +1,11 @@
|
||||
#source: property-x86-lam-u48.s
|
||||
#source: property-x86-empty.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 feature used: x86
|
||||
x86 ISA used:
|
11
ld/testsuite/ld-x86-64/property-x86-lam-u48-2.d
Normal file
11
ld/testsuite/ld-x86-64/property-x86-lam-u48-2.d
Normal file
@ -0,0 +1,11 @@
|
||||
#source: property-x86-lam-u48.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 feature: LAM_U48
|
||||
x86 feature used: x86
|
||||
x86 ISA used:
|
12
ld/testsuite/ld-x86-64/property-x86-lam-u48-3a.d
Normal file
12
ld/testsuite/ld-x86-64/property-x86-lam-u48-3a.d
Normal file
@ -0,0 +1,12 @@
|
||||
#source: property-x86-3.s
|
||||
#source: property-x86-lam-u48.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA needed: x86-64-baseline, x86-64-v2, <unknown: 10>, <unknown: 20>
|
||||
x86 feature used: x86
|
||||
x86 ISA used: x86-64-v2, x86-64-v4, <unknown: 20>, <unknown: 80>
|
12
ld/testsuite/ld-x86-64/property-x86-lam-u48-3b.d
Normal file
12
ld/testsuite/ld-x86-64/property-x86-lam-u48-3b.d
Normal file
@ -0,0 +1,12 @@
|
||||
#source: property-x86-lam-u48.s
|
||||
#source: property-x86-3.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA needed: x86-64-baseline, x86-64-v2, <unknown: 10>, <unknown: 20>
|
||||
x86 feature used: x86
|
||||
x86 ISA used: x86-64-v2, x86-64-v4, <unknown: 20>, <unknown: 80>
|
11
ld/testsuite/ld-x86-64/property-x86-lam-u48-4.d
Normal file
11
ld/testsuite/ld-x86-64/property-x86-lam-u48-4.d
Normal file
@ -0,0 +1,11 @@
|
||||
#source: property-x86-empty.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64 -z lam-u48
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 feature: LAM_U48
|
||||
x86 feature used: x86
|
||||
x86 ISA used:
|
11
ld/testsuite/ld-x86-64/property-x86-lam-u48-5.d
Normal file
11
ld/testsuite/ld-x86-64/property-x86-lam-u48-5.d
Normal file
@ -0,0 +1,11 @@
|
||||
#source: start.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64 -z lam-u48
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 feature: LAM_U48
|
||||
x86 feature used: x86
|
||||
x86 ISA used:
|
27
ld/testsuite/ld-x86-64/property-x86-lam-u48.s
Normal file
27
ld/testsuite/ld-x86-64/property-x86-lam-u48.s
Normal file
@ -0,0 +1,27 @@
|
||||
.section ".note.gnu.property", "a"
|
||||
.ifdef __64_bit__
|
||||
.p2align 3
|
||||
.else
|
||||
.p2align 2
|
||||
.endif
|
||||
.long 1f - 0f /* name length */
|
||||
.long 5f - 2f /* data length */
|
||||
.long 5 /* note type */
|
||||
0: .asciz "GNU" /* vendor name */
|
||||
1:
|
||||
.ifdef __64_bit__
|
||||
.p2align 3
|
||||
.else
|
||||
.p2align 2
|
||||
.endif
|
||||
2: .long 0xc0000002 /* pr_type. */
|
||||
.long 4f - 3f /* pr_datasz. */
|
||||
3:
|
||||
.long 0x4
|
||||
4:
|
||||
.ifdef __64_bit__
|
||||
.p2align 3
|
||||
.else
|
||||
.p2align 2
|
||||
.endif
|
||||
5:
|
11
ld/testsuite/ld-x86-64/property-x86-lam-u57-1a.d
Normal file
11
ld/testsuite/ld-x86-64/property-x86-lam-u57-1a.d
Normal file
@ -0,0 +1,11 @@
|
||||
#source: property-x86-empty.s
|
||||
#source: property-x86-lam-u57.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 feature used: x86
|
||||
x86 ISA used:
|
11
ld/testsuite/ld-x86-64/property-x86-lam-u57-1b.d
Normal file
11
ld/testsuite/ld-x86-64/property-x86-lam-u57-1b.d
Normal file
@ -0,0 +1,11 @@
|
||||
#source: property-x86-lam-u57.s
|
||||
#source: property-x86-empty.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 feature used: x86
|
||||
x86 ISA used:
|
11
ld/testsuite/ld-x86-64/property-x86-lam-u57-2.d
Normal file
11
ld/testsuite/ld-x86-64/property-x86-lam-u57-2.d
Normal file
@ -0,0 +1,11 @@
|
||||
#source: property-x86-lam-u57.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 feature: LAM_U57
|
||||
x86 feature used: x86
|
||||
x86 ISA used:
|
12
ld/testsuite/ld-x86-64/property-x86-lam-u57-3a.d
Normal file
12
ld/testsuite/ld-x86-64/property-x86-lam-u57-3a.d
Normal file
@ -0,0 +1,12 @@
|
||||
#source: property-x86-3.s
|
||||
#source: property-x86-lam-u57.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA needed: x86-64-baseline, x86-64-v2, <unknown: 10>, <unknown: 20>
|
||||
x86 feature used: x86
|
||||
x86 ISA used: x86-64-v2, x86-64-v4, <unknown: 20>, <unknown: 80>
|
12
ld/testsuite/ld-x86-64/property-x86-lam-u57-3b.d
Normal file
12
ld/testsuite/ld-x86-64/property-x86-lam-u57-3b.d
Normal file
@ -0,0 +1,12 @@
|
||||
#source: property-x86-lam-u57.s
|
||||
#source: property-x86-3.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA needed: x86-64-baseline, x86-64-v2, <unknown: 10>, <unknown: 20>
|
||||
x86 feature used: x86
|
||||
x86 ISA used: x86-64-v2, x86-64-v4, <unknown: 20>, <unknown: 80>
|
11
ld/testsuite/ld-x86-64/property-x86-lam-u57-4.d
Normal file
11
ld/testsuite/ld-x86-64/property-x86-lam-u57-4.d
Normal file
@ -0,0 +1,11 @@
|
||||
#source: property-x86-empty.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64 -z lam-u57
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 feature: LAM_U57
|
||||
x86 feature used: x86
|
||||
x86 ISA used:
|
11
ld/testsuite/ld-x86-64/property-x86-lam-u57-5.d
Normal file
11
ld/testsuite/ld-x86-64/property-x86-lam-u57-5.d
Normal file
@ -0,0 +1,11 @@
|
||||
#source: start.s
|
||||
#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
|
||||
#ld: -r -melf_x86_64 -z lam-u57
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 feature: LAM_U57
|
||||
x86 feature used: x86
|
||||
x86 ISA used:
|
27
ld/testsuite/ld-x86-64/property-x86-lam-u57.s
Normal file
27
ld/testsuite/ld-x86-64/property-x86-lam-u57.s
Normal file
@ -0,0 +1,27 @@
|
||||
.section ".note.gnu.property", "a"
|
||||
.ifdef __64_bit__
|
||||
.p2align 3
|
||||
.else
|
||||
.p2align 2
|
||||
.endif
|
||||
.long 1f - 0f /* name length */
|
||||
.long 5f - 2f /* data length */
|
||||
.long 5 /* note type */
|
||||
0: .asciz "GNU" /* vendor name */
|
||||
1:
|
||||
.ifdef __64_bit__
|
||||
.p2align 3
|
||||
.else
|
||||
.p2align 2
|
||||
.endif
|
||||
2: .long 0xc0000002 /* pr_type. */
|
||||
.long 4f - 3f /* pr_datasz. */
|
||||
3:
|
||||
.long 0x8
|
||||
4:
|
||||
.ifdef __64_bit__
|
||||
.p2align 3
|
||||
.else
|
||||
.p2align 2
|
||||
.endif
|
||||
5:
|
@ -373,6 +373,20 @@ run_dump_test "property-x86-cet5b"
|
||||
run_dump_test "property-x86-cet5b-x32"
|
||||
run_dump_test "property-x86-cet6"
|
||||
run_dump_test "property-x86-cet6-x32"
|
||||
run_dump_test "property-x86-lam-u48-1a"
|
||||
run_dump_test "property-x86-lam-u48-1b"
|
||||
run_dump_test "property-x86-lam-u48-2"
|
||||
run_dump_test "property-x86-lam-u48-3a"
|
||||
run_dump_test "property-x86-lam-u48-3b"
|
||||
run_dump_test "property-x86-lam-u48-4"
|
||||
run_dump_test "property-x86-lam-u48-5"
|
||||
run_dump_test "property-x86-lam-u57-1a"
|
||||
run_dump_test "property-x86-lam-u57-1b"
|
||||
run_dump_test "property-x86-lam-u57-2"
|
||||
run_dump_test "property-x86-lam-u57-3a"
|
||||
run_dump_test "property-x86-lam-u57-3b"
|
||||
run_dump_test "property-x86-lam-u57-4"
|
||||
run_dump_test "property-x86-lam-u57-5"
|
||||
run_dump_test "pr21884"
|
||||
run_dump_test "pr22071"
|
||||
run_dump_test "pr22115-1a"
|
||||
|
Loading…
x
Reference in New Issue
Block a user