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
37 changed files with 609 additions and 37 deletions
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:
|
Loading…
Add table
Add a link
Reference in a new issue