// Test LVI load hardening on SGX enclave code, specifically that `ret` is rewritten. //@ add-core-stubs //@ assembly-output: emit-asm //@ compile-flags: --target x86_64-fortanix-unknown-sgx -Copt-level=0 //@ needs-llvm-components: x86 #![feature(no_core, lang_items, f16)] #![crate_type = "lib"] #![no_core] extern crate minicore; use minicore::*; #[no_mangle] pub extern "C" fn dereference(a: &mut u64) -> u64 { // CHECK-LABEL: dereference // CHECK: lfence // CHECK: mov // CHECK: popq [[REGISTER:%[a-z]+]] // CHECK-NEXT: lfence // CHECK-NEXT: jmpq *[[REGISTER]] *a }