x86-64: Add Intel LAM property support
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 23 Dec 2020 21:00:39 +0000 (13:00 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 23 Dec 2020 21:00:55 +0000 (13:00 -0800)
commit279d901e5a7a16eb9a3383e316ff4a8d7473d6bd
treee88e5c81e28763605903e0971fa900a2a3a4308b
parent5cc0917c387350c47c350843e3b7a16059345529
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.
37 files changed:
bfd/ChangeLog
bfd/elf-linker-x86.h
bfd/elfxx-x86.c
binutils/ChangeLog
binutils/NEWS
binutils/doc/binutils.texi
binutils/elfedit.c
binutils/readelf.c
binutils/testsuite/binutils-all/x86-64/lam-u48.d [new file with mode: 0644]
binutils/testsuite/binutils-all/x86-64/lam-u48.s [new file with mode: 0644]
binutils/testsuite/binutils-all/x86-64/lam-u57.d [new file with mode: 0644]
binutils/testsuite/binutils-all/x86-64/lam-u57.s [new file with mode: 0644]
include/ChangeLog
include/elf/common.h
ld/ChangeLog
ld/NEWS
ld/emulparams/cet.sh
ld/emulparams/elf_x86_64.sh
ld/emulparams/x86-64-lam.sh [new file with mode: 0644]
ld/ld.texi
ld/testsuite/ld-x86-64/property-x86-lam-u48-1a.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u48-1b.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u48-2.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u48-3a.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u48-3b.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u48-4.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u48-5.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u48.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u57-1a.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u57-1b.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u57-2.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u57-3a.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u57-3b.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u57-4.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u57-5.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-lam-u57.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/x86-64.exp