x86: Add -z cet-report=[none|warning|error]
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 11 Apr 2019 15:18:51 +0000 (08:18 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 11 Apr 2019 15:21:30 +0000 (08:21 -0700)
commit233a00833b984319d5e94db3f5d5d9a735edc984
treecde032770e8d7027cb298b7d7a1a489b3da62647
parentca4e63310228df72ba47e5b29f4c275e62496dcf
x86: Add -z cet-report=[none|warning|error]

Add -z cet-report=[none|warning|error] to report the missing Intel
Indirect Branch Tracking (IBT) and Shadow Stack (SHSTK) properties
in input .note.gnu.property section.  -z cet-report=none, which is
the default, will make the linker not report missing properties in
input files.  -z cet-report=warning will make the linker issue a
warning for missing properties in input files.  -z cet-report=error
will make the linker issue an error for missing properties in input
files.  Note that -z ibt will turn off the missing IBT property report
and -z shstk will turn off the missing SHSTK property report.
Supported for Linux/i386 and Linux/x86_64.

bfd/

* elf-linker-x86.h (elf_x86_cet_report): New.
(elf_linker_x86_params): Add cet_report.
* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Report
missing IBT and SHSTK properties if needed.

ld/

* ld.texi: Document -z cet-report=[none|warning|error].
* emulparams/cet.sh: Add -z cet-report=[none|warning|error].
* testsuite/ld-i386/i386.exp: Run -z cet-report=[warning|error]
tests.
* testsuite/ld-x86-64/x86-64.exp: Likewise.
* testsuite/ld-i386/property-x86-cet1.d: New file.
* testsuite/ld-i386/property-x86-cet2a.d: Likewise.
* testsuite/ld-i386/property-x86-cet2b.d: Likewise.
* testsuite/ld-i386/property-x86-cet3a.d: Likewise.
* testsuite/ld-i386/property-x86-cet3b.d: Likewise.
* testsuite/ld-i386/property-x86-cet4a.d: Likewise.
* testsuite/ld-i386/property-x86-cet4b.d: Likewise.
* testsuite/ld-i386/property-x86-cet5a.d: Likewise.
* testsuite/ld-i386/property-x86-cet5b.d: Likewise.
* testsuite/ld-i386/property-x86-cet6.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet.s: Likewise.
* testsuite/ld-x86-64/property-x86-cet1-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet1.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet2a-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet2a.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet2b-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet2b.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet3a-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet3a.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet3b-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet3b.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet4a-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet4a.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet4b-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet4b.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet5a-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet5a.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet5b-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet5b.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet6-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-cet6.d: Likewise.
39 files changed:
bfd/ChangeLog
bfd/elf-linker-x86.h
bfd/elfxx-x86.c
ld/ChangeLog
ld/emulparams/cet.sh
ld/ld.texi
ld/testsuite/ld-i386/i386.exp
ld/testsuite/ld-i386/property-x86-cet1.d [new file with mode: 0644]
ld/testsuite/ld-i386/property-x86-cet2a.d [new file with mode: 0644]
ld/testsuite/ld-i386/property-x86-cet2b.d [new file with mode: 0644]
ld/testsuite/ld-i386/property-x86-cet3a.d [new file with mode: 0644]
ld/testsuite/ld-i386/property-x86-cet3b.d [new file with mode: 0644]
ld/testsuite/ld-i386/property-x86-cet4a.d [new file with mode: 0644]
ld/testsuite/ld-i386/property-x86-cet4b.d [new file with mode: 0644]
ld/testsuite/ld-i386/property-x86-cet5a.d [new file with mode: 0644]
ld/testsuite/ld-i386/property-x86-cet5b.d [new file with mode: 0644]
ld/testsuite/ld-i386/property-x86-cet6.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet1-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet1.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet2a-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet2a.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet2b-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet2b.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet3a-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet3a.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet3b-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet3b.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet4a-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet4a.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet4b-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet4b.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet5a-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet5a.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet5b-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet5b.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet6-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-x86-cet6.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/x86-64.exp