Upgrade Rust SGX SDK to v1.0.6
... and Intel SGX SDK to v2.4, Rust to nightly-2019-01-28
This commit is contained in:
parent
c2cf0c65b2
commit
7fcf195359
@ -38,11 +38,11 @@ Occlum LibOS has several *explicit* and *implicit* dependencies: the former ones
|
||||
|
||||
Explicit dependencies are listed below:
|
||||
|
||||
1. [Occlum's fork of Intel SGX SDK](https://github.com/occlum/linux-sgx/tree/for_occlum). See [README.md](https://github.com/occlum/linux-sgx/blob/for_occlum/README.md) for how to compile and install.
|
||||
1. [enable_rdfsbase kernel module](https://github.com/occlum/enable_rdfsbase), which enables rdfsbase instruction and its friends. See [README.md](https://github.com/occlum/enable_rdfsbase/blob/master/README.md) for how to compile and install.
|
||||
1. [Occlum's fork of Intel SGX SDK](https://github.com/occlum/linux-sgx/tree/sgx_2.4_for_occlum). See [README.md](https://github.com/occlum/linux-sgx/blob/sgx_2.4_for_occlum/README.md) for how to compile and install.
|
||||
1. [Occlum's fork of LLVM toolchain](https://github.com/occlum/llvm/tree/for_occlum). See [README.occlum.md](https://github.com/occlum/llvm/blob/for_occlum/README.occlum.md) for how to compile and install.
|
||||
1. [Occlum's fork of musl libc](https://github.com/occlum/musl/tree/for_occlum). See [INSTALL](https://github.com/occlum/musl/blob/for_occlum/INSTALL) for how to compile and install.
|
||||
1. [enable_rdfsbase kernel module](https://github.com/occlum/enable_rdfsbase), which enables rdfsbase instruction and its friends. See [README.md](https://github.com/occlum/enable_rdfsbase/blob/master/README.md) for how to compile and install.
|
||||
1. [Rust programming language](https://www.rust-lang.org/). We have tested with Rust nightly-2018-10-01. Other versions of Rust may or may not work.
|
||||
1. [Rust programming language](https://www.rust-lang.org/). We have tested with Rust nightly-2019-01-28. Other versions of Rust may or may not work.
|
||||
|
||||
Implicit dependencies are managed by Git with [.gitmodules](https://github.com/occlum/libos/blob/master/.gitmodules) and compiled with Makefile. The most important implicit dependency is [Rust SGX SDK](https://github.com/baidu/rust-sgx-sdk). After downloading Occlum LibOS project, run the following command to set up the implicit dependecies:
|
||||
|
||||
|
2
deps/rust-sgx-sdk
vendored
2
deps/rust-sgx-sdk
vendored
@ -1 +1 @@
|
||||
Subproject commit 4d999470c8c12a6e6f70d302c09114957114bb05
|
||||
Subproject commit a824416aba3840a2d76753b6da94130526b60893
|
2
deps/sgx_protect_file
vendored
2
deps/sgx_protect_file
vendored
@ -1 +1 @@
|
||||
Subproject commit 3c9a9f063dacf5ef98971e64338d315e107a9083
|
||||
Subproject commit 5f2e64efd27714e90b4a22f4a3ce46ef6598d32a
|
47
src/libos/Cargo.lock
generated
47
src/libos/Cargo.lock
generated
@ -1,11 +1,13 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
[[package]]
|
||||
name = "Occlum"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"sgx_trts 1.0.4",
|
||||
"sgx_tstd 1.0.4",
|
||||
"sgx_types 1.0.4",
|
||||
"sgx_trts 1.0.6",
|
||||
"sgx_tstd 1.0.6",
|
||||
"sgx_types 1.0.6",
|
||||
"xmas-elf 0.6.2",
|
||||
]
|
||||
|
||||
@ -20,9 +22,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sgx_alloc"
|
||||
version = "1.0.4"
|
||||
version = "1.0.6"
|
||||
dependencies = [
|
||||
"sgx_trts 1.0.4",
|
||||
"sgx_trts 1.0.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -30,41 +32,50 @@ name = "sgx_build_helper"
|
||||
version = "0.1.0"
|
||||
|
||||
[[package]]
|
||||
name = "sgx_tprotected_fs"
|
||||
version = "1.0.4"
|
||||
name = "sgx_libc"
|
||||
version = "1.0.6"
|
||||
dependencies = [
|
||||
"sgx_trts 1.0.4",
|
||||
"sgx_types 1.0.4",
|
||||
"sgx_types 1.0.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sgx_tprotected_fs"
|
||||
version = "1.0.6"
|
||||
dependencies = [
|
||||
"sgx_trts 1.0.6",
|
||||
"sgx_types 1.0.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sgx_trts"
|
||||
version = "1.0.4"
|
||||
version = "1.0.6"
|
||||
dependencies = [
|
||||
"sgx_types 1.0.4",
|
||||
"sgx_libc 1.0.6",
|
||||
"sgx_types 1.0.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sgx_tstd"
|
||||
version = "1.0.4"
|
||||
version = "1.0.6"
|
||||
dependencies = [
|
||||
"sgx_alloc 1.0.4",
|
||||
"sgx_alloc 1.0.6",
|
||||
"sgx_build_helper 0.1.0",
|
||||
"sgx_tprotected_fs 1.0.4",
|
||||
"sgx_trts 1.0.4",
|
||||
"sgx_types 1.0.4",
|
||||
"sgx_libc 1.0.6",
|
||||
"sgx_tprotected_fs 1.0.6",
|
||||
"sgx_trts 1.0.6",
|
||||
"sgx_types 1.0.6",
|
||||
"sgx_unwind 0.0.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sgx_types"
|
||||
version = "1.0.4"
|
||||
version = "1.0.6"
|
||||
|
||||
[[package]]
|
||||
name = "sgx_unwind"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"sgx_trts 1.0.4",
|
||||
"sgx_trts 1.0.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -17,7 +17,7 @@ ENCLAVE_CONFIG := Enclave_config.xml
|
||||
ENCLAVE_KEY := Enclave_private.pem
|
||||
|
||||
C_FLAGS := $(SGX_CFLAGS_T) -fno-stack-protector -I./include/
|
||||
_Other_Link_Flags := -L../../deps/rust-sgx-sdk/compiler-rt/ -L.
|
||||
_Other_Link_Flags := -L$(RUST_SGX_SDK_DIR)/compiler-rt/ -L.
|
||||
_Other_Enclave_Libs := -lcompiler-rt-patch -locclum_rs -lsgx_tprotected_fs
|
||||
LINK_FLAGS := $(SGX_LFLAGS_T)
|
||||
|
||||
@ -42,11 +42,11 @@ $(S_OBJS): %.o: %.S
|
||||
@echo "CC <= $@"
|
||||
|
||||
$(EDL_C_SRCS): $(SGX_EDGER8R) ../Enclave.edl
|
||||
@cd src/ && $(SGX_EDGER8R) --trusted ../../Enclave.edl --search-path $(SGX_SDK)/include --search-path ../../../deps/rust-sgx-sdk/edl/
|
||||
@cd src/ && $(SGX_EDGER8R) --trusted ../../Enclave.edl --search-path $(SGX_SDK)/include --search-path $(RUST_SGX_SDK_DIR)/edl/
|
||||
@echo "GEN <= $(EDL_C_SRCS)"
|
||||
|
||||
compiler-rt:
|
||||
@$(MAKE) --no-print-directory -C ../../deps/rust-sgx-sdk/compiler-rt/ > /dev/null
|
||||
@$(MAKE) --no-print-directory -C $(RUST_SGX_SDK_DIR)/compiler-rt/ > /dev/null
|
||||
|
||||
ifeq ($(DEBUG), 1)
|
||||
$(LIBOS_A): $(RUST_SRCS)
|
||||
|
@ -3,10 +3,12 @@
|
||||
#![crate_type = "staticlib"]
|
||||
#![cfg_attr(not(target_env = "sgx"), no_std)]
|
||||
#![cfg_attr(target_env = "sgx", feature(rustc_private))]
|
||||
#![feature(alloc)]
|
||||
#![feature(allocator_api)]
|
||||
#![feature(integer_atomics)]
|
||||
#![feature(range_contains)]
|
||||
|
||||
#[macro_use]
|
||||
extern crate alloc;
|
||||
extern crate sgx_types;
|
||||
#[cfg(not(target_env = "sgx"))]
|
||||
#[macro_use]
|
||||
|
@ -14,12 +14,12 @@ pub struct Task {
|
||||
}
|
||||
|
||||
lazy_static! {
|
||||
static ref new_process_queue: SgxMutex<VecDeque<ProcessRef>> =
|
||||
static ref NEW_PROCESS_QUEUE: SgxMutex<VecDeque<ProcessRef>> =
|
||||
{ SgxMutex::new(VecDeque::new()) };
|
||||
}
|
||||
|
||||
pub fn enqueue_task(new_process: ProcessRef) {
|
||||
new_process_queue.lock().unwrap().push_back(new_process);
|
||||
NEW_PROCESS_QUEUE.lock().unwrap().push_back(new_process);
|
||||
|
||||
let mut ret = 0;
|
||||
let ocall_status = unsafe { ocall_run_new_task(&mut ret) };
|
||||
@ -29,7 +29,7 @@ pub fn enqueue_task(new_process: ProcessRef) {
|
||||
}
|
||||
|
||||
fn dequeue_task() -> Option<ProcessRef> {
|
||||
new_process_queue.lock().unwrap().pop_front()
|
||||
NEW_PROCESS_QUEUE.lock().unwrap().pop_front()
|
||||
}
|
||||
|
||||
pub fn run_task() -> Result<i32, Error> {
|
||||
|
@ -3,6 +3,7 @@ use std::cmp::{max, min};
|
||||
use std::ptr;
|
||||
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use alloc::alloc::{Layout, alloc, dealloc};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct RingBuf {
|
||||
@ -43,15 +44,17 @@ struct RingBufInner {
|
||||
closed: AtomicBool, // if reader has been dropped
|
||||
}
|
||||
|
||||
const RING_BUF_ALIGN : usize = 16;
|
||||
|
||||
impl RingBufInner {
|
||||
fn new(capacity: usize) -> RingBufInner {
|
||||
let capacity = max(capacity, 16).next_power_of_two();
|
||||
let capacity = max(capacity, RING_BUF_ALIGN).next_power_of_two();
|
||||
RingBufInner {
|
||||
buf: unsafe {
|
||||
let mut buf_ptr = ptr::null_mut();
|
||||
libc::posix_memalign(&mut buf_ptr, 16, capacity);
|
||||
let buf_layout = Layout::from_size_align_unchecked(capacity, RING_BUF_ALIGN);
|
||||
let buf_ptr = alloc(buf_layout);
|
||||
assert!(buf_ptr != ptr::null_mut());
|
||||
buf_ptr as *mut u8
|
||||
buf_ptr
|
||||
},
|
||||
capacity: capacity,
|
||||
head: AtomicUsize::new(0),
|
||||
@ -109,7 +112,10 @@ impl RingBufInner {
|
||||
|
||||
impl Drop for RingBufInner {
|
||||
fn drop(&mut self) {
|
||||
unsafe { libc::free(self.buf as *mut c_void) }
|
||||
unsafe {
|
||||
let buf_layout = Layout::from_size_align_unchecked(self.capacity, RING_BUF_ALIGN);
|
||||
dealloc(self.buf, buf_layout);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@ Bin := pal
|
||||
|
||||
C_Flags := $(SGX_CFLAGS_U)
|
||||
Link_Flags := $(SGX_LFLAGS_U)
|
||||
Link_Flags += -L../../deps/rust-sgx-sdk/sgx_ustdc/ -lsgx_ustdc -lsgx_uprotected_fs
|
||||
Link_Flags += -L$(RUST_SGX_SDK_DIR)/sgx_ustdc/ -lsgx_ustdc -lsgx_uprotected_fs
|
||||
|
||||
|
||||
.PHONY: all
|
||||
@ -19,7 +19,7 @@ $(Bin): $(EDL_Gen_Files) $(Objs) sgx_ustdc
|
||||
@echo "LINK => $@"
|
||||
|
||||
$(EDL_Gen_Files): $(SGX_EDGER8R) ../Enclave.edl
|
||||
@$(SGX_EDGER8R) --untrusted ../Enclave.edl --search-path $(SGX_SDK)/include --search-path ../../deps/rust-sgx-sdk/edl/
|
||||
@$(SGX_EDGER8R) --untrusted ../Enclave.edl --search-path $(SGX_SDK)/include --search-path $(RUST_SGX_SDK_DIR)/edl/
|
||||
@echo "GEN => $(EDL_Gen_Files)"
|
||||
|
||||
$(Objs): %.o: %.c
|
||||
@ -31,7 +31,7 @@ $(Objs): %.o: %.c
|
||||
#
|
||||
.PHONY: sgx_ustdc
|
||||
sgx_ustdc:
|
||||
@$(MAKE) --no-print-directory -C ../../deps/rust-sgx-sdk/sgx_ustdc/ > /dev/null
|
||||
@$(MAKE) --no-print-directory -C $(RUST_SGX_SDK_DIR)/sgx_ustdc/ > /dev/null
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
|
@ -1,3 +1,8 @@
|
||||
MAIN_MAKEFILE := $(firstword $(MAKEFILE_LIST))
|
||||
INCLUDE_MAKEFILE := $(lastword $(MAKEFILE_LIST))
|
||||
CUR_DIR := $(shell dirname $(realpath $(MAIN_MAKEFILE)))
|
||||
PROJECT_DIR := $(realpath $(CUR_DIR)/../../)
|
||||
|
||||
SGX_SDK ?= /opt/intel/sgxsdk
|
||||
SGX_MODE ?= HW
|
||||
SGX_ARCH ?= x64
|
||||
@ -32,6 +37,9 @@ else
|
||||
SGX_COMMON_CFLAGS += -O2
|
||||
endif
|
||||
|
||||
RUST_SGX_SDK_DIR := $(PROJECT_DIR)/deps/rust-sgx-sdk
|
||||
SGX_COMMON_CFLAGS += -I$(RUST_SGX_SDK_DIR)/common/ -I$(RUST_SGX_SDK_DIR)/edl/
|
||||
|
||||
ifneq ($(SGX_MODE), HW)
|
||||
Urts_Library_Name := sgx_urts_sim
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user