diff options
| author | Jethro Beekman <jethro@fortanix.com> | 2020-05-26 22:53:30 +0200 |
|---|---|---|
| committer | Jethro Beekman <jethro@fortanix.com> | 2020-06-07 12:12:30 +0200 |
| commit | ea48f2e4da5c6b120c337466e55b307a26c189b2 (patch) | |
| tree | 55560aefff96fbd3bb18777f77aabd322f11e0e3 /src/libstd/sys | |
| parent | a2fc33e0c87a258542cd12d6ffae52c43aa3785a (diff) | |
| download | rust-ea48f2e4da5c6b120c337466e55b307a26c189b2.tar.gz rust-ea48f2e4da5c6b120c337466e55b307a26c189b2.zip | |
Enable LVI hardening for x86_64-fortanix-unknown-sgx
Diffstat (limited to 'src/libstd/sys')
| -rw-r--r-- | src/libstd/sys/sgx/abi/entry.S | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/libstd/sys/sgx/abi/entry.S b/src/libstd/sys/sgx/abi/entry.S index 1f06c9da3a9..2badfc973c9 100644 --- a/src/libstd/sys/sgx/abi/entry.S +++ b/src/libstd/sys/sgx/abi/entry.S @@ -324,7 +324,9 @@ usercall: /* return */ mov %rsi,%rax /* RAX = return value */ /* NOP: mov %rdx,%rdx */ /* RDX = return value */ - ret + pop %r11 + lfence + jmp *%r11 /* The following functions need to be defined externally: @@ -343,20 +345,28 @@ extern "C" fn entry(p1: u64, p2: u64, p3: u64, secondary: bool, p4: u64, p5: u64 .global get_tcs_addr get_tcs_addr: mov %gs:tcsls_tcs_addr,%rax - ret + pop %r11 + lfence + jmp *%r11 .global get_tls_ptr get_tls_ptr: mov %gs:tcsls_tls_ptr,%rax - ret + pop %r11 + lfence + jmp *%r11 .global set_tls_ptr set_tls_ptr: mov %rdi,%gs:tcsls_tls_ptr - ret + pop %r11 + lfence + jmp *%r11 .global take_debug_panic_buf_ptr take_debug_panic_buf_ptr: xor %rax,%rax xchg %gs:tcsls_debug_panic_buf_ptr,%rax - ret + pop %r11 + lfence + jmp *%r11 |
