// Test LVI load hardening on SGX inline assembly code //@ assembly-output: emit-asm //@ compile-flags: --crate-type staticlib //@ only-x86_64-fortanix-unknown-sgx use std::arch::asm; #[no_mangle] pub extern "C" fn get(ptr: *const u64) -> u64 { let value: u64; unsafe { asm!("mov {}, [{}]", out(reg) value, in(reg) ptr); } value } // CHECK: get // CHECK: movq // CHECK-NEXT: lfence #[no_mangle] pub extern "C" fn myret() { unsafe { asm!("ret"); } } // CHECK: myret // CHECK: shlq $0, (%rsp) // CHECK-NEXT: lfence // CHECK-NEXT: retq