llvm-project/llvm/test
Kristof Beyls 0ee176edc8 [AArch64] Introduce AArch64SLSHardeningPass, implementing hardening of RET and BR instructions.
Some processors may speculatively execute the instructions immediately
following RET (returns) and BR (indirect jumps), even though
control flow should change unconditionally at these instructions.
To avoid a potential miss-speculatively executed gadget after these
instructions leaking secrets through side channels, this pass places a
speculation barrier immediately after every RET and BR instruction.

Since these barriers are never on the correct, architectural execution
path, performance overhead of this is expected to be low.

On targets that implement that Armv8.0-SB Speculation Barrier extension,
a single SB instruction is emitted that acts as a speculation barrier.
On other targets, a DSB SYS followed by a ISB is emitted to act as a
speculation barrier.

These speculation barriers are implemented as pseudo instructions to
avoid later passes to analyze them and potentially remove them.

Even though currently LLVM does not produce BRAA/BRAB/BRAAZ/BRABZ
instructions, these are also mitigated by the pass and tested through a
MIR test.

The mitigation is off by default and can be enabled by the
harden-sls-retbr subtarget feature.

Differential Revision:  https://reviews.llvm.org/D81400
2020-06-11 07:51:17 +01:00
..
Analysis [CostModel][X86] Add broadcast costs for vXi1 bool vectors 2020-06-10 15:27:15 +01:00
Assembler Fix convertBFloatAPFloatToAPInt for NaN/Inf values 2020-06-05 17:22:43 -07:00
Bindings [DebugInfo] Upgrade DISubrange to support Fortran dynamic arrays 2020-05-28 13:46:41 +05:30
Bitcode [StackSafety] Add info into function summary 2020-06-10 02:43:28 -07:00
BugPoint
CodeGen [AArch64] Introduce AArch64SLSHardeningPass, implementing hardening of RET and BR instructions. 2020-06-11 07:51:17 +01:00
DebugInfo [DebugInfo] Fix assertion for extern void type 2020-06-08 13:43:18 -07:00
Demangle Give microsoftDemangle() an outparam for how many input bytes were consumed. 2020-05-20 16:17:31 -04:00
Examples
ExecutionEngine [JITLink] Skip debug sections in MachO objects. 2020-06-03 11:08:14 -07:00
Feature
FileCheck [FileCheck] Add missing %ProtectFileCheckOutput to FileCheck tests 2020-06-10 12:40:35 -04:00
Instrumentation Revert "[InstrProfiling] Use !associated metadata for counters, data and values" 2020-06-10 02:32:50 -07:00
Integer
JitListener
LTO [SampleFDO] Add use-sample-profile function attribute. 2020-06-02 17:23:17 -07:00
Linker
MC [AVR] Implement disassembly support for I/O instructions 2020-06-10 20:55:47 +02:00
MachineVerifier Simplify MachineVerifier's block-successor verification. 2020-06-06 22:30:51 -04:00
Object [llvm-ar] Update error messages and tests as per latest preferred style 2020-06-05 10:37:26 -07:00
ObjectYAML [DWARFYAML][debug_aranges] Replace InitialLength with Format and Length. 2020-06-05 12:16:44 +08:00
Other [PrintSCC] Fix printing a basic-block without a name 2020-05-29 20:14:19 +03:00
Reduce
SafepointIRVerifier [Tests] Migrate a number of tests to gc-live bundle representation 2020-06-05 16:44:04 -07:00
Support On Windows, handle interrupt signals without crash message 2020-05-21 13:27:10 +01:00
SymbolRewriter
TableGen [TableGen] Fix non-standard escape warnings for braces in InstAlias 2020-05-28 09:36:24 +00:00
ThinLTO/X86 [ThinLTO] Compute the basic block count across modules. 2020-05-28 10:33:05 -07:00
Transforms Correctly update Changed status for SimplifyCFG 2020-06-10 16:54:15 +02:00
Unit
Verifier AMDGPU: Fix missing immarg on buffer.atomic.fadd intrinsic 2020-06-05 14:34:07 -04:00
YAMLParser
tools [DWARFYAML][debug_ranges] Make the "Offset" field optional. 2020-06-11 08:36:44 +08:00
.clang-format
CMakeLists.txt [CMake] Change target 'check' from 'check-llvm' to 'check-all' 2020-05-29 14:15:27 -07:00
TestRunner.sh
lit.cfg.py
lit.site.cfg.py.in