diff --git a/deps/rust-sgx-sdk b/deps/rust-sgx-sdk index 15b8470d..df76765f 160000 --- a/deps/rust-sgx-sdk +++ b/deps/rust-sgx-sdk @@ -1 +1 @@ -Subproject commit 15b8470dd50e9628e1cb7a0fdb08989f0b5ecc35 +Subproject commit df76765f586cf103189a5e62355672c96f4920ce diff --git a/deps/rust-sgx-sdk.patch b/deps/rust-sgx-sdk.patch index c0350a10..db0d9c52 100644 --- a/deps/rust-sgx-sdk.patch +++ b/deps/rust-sgx-sdk.patch @@ -1,25 +1,8 @@ -From 45e0641710606f98ed295063d171ca62990d32f3 Mon Sep 17 00:00:00 2001 -From: LI Qing -Date: Tue, 7 Jan 2020 12:20:05 +0000 -Subject: [PATCH] Add support for integrity-only SGX protected files - -1. Add SgxFile::open_integrity_only API -2. Add SgxFile::create_integrity_only API -3. Add the unit test for integrity-only SgxFile ---- - samplecode/unit-test/enclave/src/lib.rs | 2 + - samplecode/unit-test/enclave/src/test_file.rs | 41 +++++++++++++ - sgx_tprotected_fs/src/fs.rs | 84 +++++++++++++++++++++++++++ - sgx_tstd/src/sgxfs.rs | 39 ++++++++++++- - sgx_tstd/src/sys/sgxfs.rs | 39 +++++++++++-- - sgx_types/src/function.rs | 3 + - 6 files changed, 201 insertions(+), 7 deletions(-) - diff --git a/samplecode/unit-test/enclave/src/lib.rs b/samplecode/unit-test/enclave/src/lib.rs -index c04cb4d..14a6d63 100644 +index b9ea49be..d740753f 100644 --- a/samplecode/unit-test/enclave/src/lib.rs +++ b/samplecode/unit-test/enclave/src/lib.rs -@@ -157,6 +157,8 @@ fn test_main_entrance() -> size_t { +@@ -166,6 +166,8 @@ fn test_main_entrance() -> size_t { test_serialize_enum, // std::sgxfs test_sgxfs, @@ -29,7 +12,7 @@ index c04cb4d..14a6d63 100644 test_fs, // std::fs untrusted mode diff --git a/samplecode/unit-test/enclave/src/test_file.rs b/samplecode/unit-test/enclave/src/test_file.rs -index 5e7466e..8b8d6d0 100644 +index 766ba674..eeefd9eb 100644 --- a/samplecode/unit-test/enclave/src/test_file.rs +++ b/samplecode/unit-test/enclave/src/test_file.rs @@ -128,3 +128,44 @@ pub fn test_fs_untrusted_fs_feature_enabled() { @@ -78,7 +61,7 @@ index 5e7466e..8b8d6d0 100644 + assert!(remove_result.is_ok()); +} diff --git a/sgx_tprotected_fs/src/fs.rs b/sgx_tprotected_fs/src/fs.rs -index 64d85d0..9ded4e8 100644 +index 93767e4b..9ddac357 100644 --- a/sgx_tprotected_fs/src/fs.rs +++ b/sgx_tprotected_fs/src/fs.rs @@ -35,6 +35,15 @@ unsafe fn rsgx_fopen(filename: &CStr, mode: &CStr, key: &sgx_key_128bit_t) -> Sy @@ -97,7 +80,7 @@ index 64d85d0..9ded4e8 100644 unsafe fn rsgx_fopen_auto_key(filename: &CStr, mode: &CStr) -> SysResult { let file = sgx_fopen_auto_key(filename.as_ptr(), mode.as_ptr()); if file.is_null() { -@@ -193,6 +202,15 @@ unsafe fn rsgx_fimport_auto_key(filename: &CStr, key: &sgx_key_128bit_t) -> SysE +@@ -192,6 +201,15 @@ unsafe fn rsgx_fimport_auto_key(filename: &CStr, key: &sgx_key_128bit_t) -> SysE } } @@ -113,10 +96,11 @@ index 64d85d0..9ded4e8 100644 pub struct SgxFileStream { stream: SGX_FILE } -@@ -278,6 +296,48 @@ impl SgxFileStream { +@@ -275,6 +293,48 @@ impl SgxFileStream { + } } - /// ++ /// + /// The open function creates or opens a protected file in the integrity-only mode. + /// + /// # Description @@ -158,11 +142,10 @@ index 64d85d0..9ded4e8 100644 + } + } + -+ /// + /// /// The read function reads the requested amount of data from the file, and extends the file pointer by that amount. /// - /// # Description -@@ -517,6 +577,30 @@ impl SgxFileStream { +@@ -515,6 +575,30 @@ impl SgxFileStream { pub fn clear_cache(&self) -> SysError { unsafe { rsgx_fclear_cache(self.stream) } } @@ -194,7 +177,7 @@ index 64d85d0..9ded4e8 100644 /// diff --git a/sgx_tstd/src/sgxfs.rs b/sgx_tstd/src/sgxfs.rs -index b07aaf2..ccb7f93 100644 +index 91b42d78..2c1af77a 100644 --- a/sgx_tstd/src/sgxfs.rs +++ b/sgx_tstd/src/sgxfs.rs @@ -17,7 +17,7 @@ @@ -279,7 +262,7 @@ index b07aaf2..ccb7f93 100644 impl AsInnerMut for OpenOptions { diff --git a/sgx_tstd/src/sys/sgxfs.rs b/sgx_tstd/src/sys/sgxfs.rs -index 7b47471..9735193 100644 +index 7d6f24f3..0a6acef9 100644 --- a/sgx_tstd/src/sys/sgxfs.rs +++ b/sgx_tstd/src/sys/sgxfs.rs @@ -15,7 +15,7 @@ @@ -291,7 +274,7 @@ index 7b47471..9735193 100644 use sgx_trts::libc; use sgx_tprotected_fs::{self, SgxFileStream}; use crate::os::unix::prelude::*; -@@ -76,7 +76,7 @@ impl SgxFile { +@@ -75,18 +75,29 @@ impl SgxFile { let path = cstr(path)?; let mode = opts.get_access_mode()?; let opts = CString::new(mode.as_bytes())?; @@ -300,7 +283,6 @@ index 7b47471..9735193 100644 } pub fn open_ex(path: &Path, opts: &OpenOptions, key: &sgx_key_128bit_t) -> io::Result { -@@ -84,12 +84,22 @@ impl SgxFile { let path = cstr(path)?; let mode = opts.get_access_mode()?; let opts = CString::new(mode.as_bytes())?; @@ -309,9 +291,9 @@ index 7b47471..9735193 100644 } - pub fn open_c(path: &CStr, opts: &CStr, key: &sgx_key_128bit_t, auto: bool) -> io::Result { -+ pub fn open_integrity_only(path: &Path, opts: &OpenOptions) -> io::Result { - - let file = if auto == true { ++ pub fn open_integrity_only(path: &Path, opts: &OpenOptions) -> io::Result { ++ + let path = cstr(path)?; + let mode = opts.get_access_mode()?; + let opts = CString::new(mode.as_bytes())?; @@ -326,7 +308,7 @@ index 7b47471..9735193 100644 SgxFileStream::open_auto_key(path, opts) } else { SgxFileStream::open(path, opts, key) -@@ -222,6 +232,23 @@ impl SgxFile { +@@ -213,6 +224,23 @@ impl SgxFile { } }) } @@ -350,34 +332,27 @@ index 7b47471..9735193 100644 } pub fn remove(path: &Path) -> io::Result<()> { -@@ -331,4 +358,4 @@ pub fn copy(from: &Path, to: &Path) -> io::Result { - let ret = io::copy(&mut reader, &mut writer)?; - fs::set_permissions(to, perm)?; - Ok(ret) --} -\ No newline at end of file -+} diff --git a/sgx_types/src/function.rs b/sgx_types/src/function.rs -index 5bb06e0..4e8c7bc 100644 +index 3c2db3a4..f96cd9e8 100644 --- a/sgx_types/src/function.rs +++ b/sgx_types/src/function.rs -@@ -609,6 +609,8 @@ extern { +@@ -629,7 +629,10 @@ extern "C" { - pub fn sgx_fopen_auto_key(filename: * const c_char, mode: * const c_char) -> SGX_FILE; + pub fn sgx_fopen_auto_key(filename: *const c_char, mode: *const c_char) -> SGX_FILE; +- pub fn sgx_fwrite(ptr: *const c_void, ++ + pub fn sgx_fopen_integrity_only(filename: * const c_char, mode: * const c_char) -> SGX_FILE; + - pub fn sgx_fwrite(ptr: * const c_void, ++ pub fn sgx_fwrite(ptr: * const c_void, size: size_t, count: size_t, -@@ -630,6 +632,7 @@ extern { - pub fn sgx_fexport_auto_key(filename: * const c_char, key: * mut sgx_key_128bit_t) -> int32_t; - pub fn sgx_fimport_auto_key(filename: * const c_char, key: * const sgx_key_128bit_t) -> int32_t; + stream: SGX_FILE) -> size_t; +@@ -650,6 +653,7 @@ extern "C" { + pub fn sgx_fexport_auto_key(filename: *const c_char, key: *mut sgx_key_128bit_t) -> int32_t; + pub fn sgx_fimport_auto_key(filename: *const c_char, key: *const sgx_key_128bit_t) -> int32_t; pub fn sgx_fclear_cache(stream: SGX_FILE) -> int32_t; + pub fn sgx_fget_mac(stream: SGX_FILE, mac: * mut sgx_aes_gcm_128bit_tag_t) -> int32_t; } /* intel sgx sdk 2.0 */ --- -2.7.4 - diff --git a/deps/sefs b/deps/sefs index 12ddbb4f..1fbb9070 160000 --- a/deps/sefs +++ b/deps/sefs @@ -1 +1 @@ -Subproject commit 12ddbb4f6356a1496cf818b4f043bbe9931b8c96 +Subproject commit 1fbb90706e77a3fab46362abbcb1f4e3433cc261 diff --git a/src/libos/Cargo.lock b/src/libos/Cargo.lock index 92ad1b22..e0c4f817 100644 --- a/src/libos/Cargo.lock +++ b/src/libos/Cargo.lock @@ -4,599 +4,600 @@ name = "Occlum" version = "0.11.0" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitvec 0.17.4 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_builder 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rcore-fs 0.1.0", - "rcore-fs-mountfs 0.1.0", - "rcore-fs-ramfs 0.1.0", - "rcore-fs-sefs 0.1.0", - "serde 1.0.104", - "serde_json 1.0.40", - "sgx_tcrypto 1.1.0", - "sgx_trts 1.1.0", - "sgx_tse 1.1.0", - "sgx_tstd 1.1.0", - "sgx_types 1.1.0", - "xmas-elf 0.6.2", + "bitflags", + "bitvec", + "derive_builder", + "lazy_static", + "log", + "rcore-fs", + "rcore-fs-mountfs", + "rcore-fs-ramfs", + "rcore-fs-sefs", + "serde", + "serde_json", + "sgx_tcrypto", + "sgx_trts", + "sgx_tse", + "sgx_tstd", + "sgx_types", + "xmas-elf", ] [[package]] name = "autocfg" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" + +[[package]] +name = "autocfg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" [[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "bitvec" version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" dependencies = [ - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "radium 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "either", + "radium", ] [[package]] name = "cc" -version = "1.0.50" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d87b23d6a92cd03af510a5ade527033f6aa6fa92161e2d5863a907d4c5e31d" [[package]] name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", ] [[package]] name = "darling" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcfbcb0c5961907597a7d1148e3af036268f2b773886b8bb3eeb1e1281d3d3d6" dependencies = [ - "darling_core 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "darling_macro 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "darling_core", + "darling_macro", ] [[package]] name = "darling_core" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6afc018370c3bff3eb51f89256a6bdb18b4fdcda72d577982a14954a7a0b402c" dependencies = [ - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ident_case 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv", + "ident_case", + "proc-macro2 0.4.30", + "quote 0.6.13", + "strsim", + "syn 0.15.44", ] [[package]] name = "darling_macro" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6d8dac1c6f1d29a41c4712b4400f878cb4fcc4c7628f298dd75038e024998d1" dependencies = [ - "darling_core 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "darling_core", + "quote 0.6.13", + "syn 0.15.44", ] [[package]] name = "derive_builder" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ac53fa6a3cda160df823a9346442525dcaf1e171999a1cf23e67067e4fd64d4" dependencies = [ - "darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_builder_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "darling", + "derive_builder_core", + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", ] [[package]] name = "derive_builder_core" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0288a23da9333c246bb18c143426074a6ae96747995c5819d2947b64cd942b37" dependencies = [ - "darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "darling", + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", ] [[package]] name = "either" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" [[package]] name = "fnv" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" [[package]] name = "fuchsia-cprng" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" + +[[package]] +name = "hashbrown_tstd" +version = "0.7.1" +dependencies = [ + "autocfg 1.0.0", +] [[package]] name = "ident_case" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "itoa" version = "0.4.5" dependencies = [ - "sgx_tstd 1.1.0", + "sgx_tstd", ] [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" dependencies = [ - "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "spin", ] [[package]] name = "libc" -version = "0.2.66" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99e85c08494b21a9054e7fe1374a732aeadaff3980b6990b94bfd3a70f690005" [[package]] name = "log" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", ] [[package]] name = "proc-macro2" version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" dependencies = [ - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0", ] [[package]] name = "proc-macro2" -version = "1.0.7" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8872cf6f48eee44265156c111456a700ab3483686b3f96df4cf5481c89157319" dependencies = [ - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0", ] [[package]] name = "quote" version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30", ] [[package]] name = "quote" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c1f4b0efa5fc5e8ceb705136bfee52cfdb6a4e3509f770b478cd6ed434232a7" dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.12", ] [[package]] name = "radium" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" [[package]] name = "rand" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "libc", + "rand_chacha", + "rand_core 0.4.2", + "rand_hc", + "rand_isaac", + "rand_jitter", + "rand_os", + "rand_pcg", + "rand_xorshift", + "winapi", ] [[package]] name = "rand_chacha" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.3.1", ] [[package]] name = "rand_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" dependencies = [ - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2", ] [[package]] name = "rand_core" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" [[package]] name = "rand_hc" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_isaac" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_jitter" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand_core 0.4.2", + "winapi", ] [[package]] name = "rand_os" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.4.2", + "rdrand", + "winapi", ] [[package]] name = "rand_pcg" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.4.2", ] [[package]] name = "rand_xorshift" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rcore-fs" version = "0.1.0" dependencies = [ - "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "spin", ] [[package]] name = "rcore-fs-mountfs" version = "0.1.0" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rcore-fs 0.1.0", - "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "log", + "rcore-fs", + "spin", ] [[package]] name = "rcore-fs-ramfs" version = "0.1.0" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rcore-fs 0.1.0", - "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log", + "rcore-fs", + "spin", ] [[package]] name = "rcore-fs-sefs" version = "0.1.0" dependencies = [ - "bitvec 0.17.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rcore-fs 0.1.0", - "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bitvec", + "log", + "rcore-fs", + "spin", + "static_assertions", + "uuid", ] [[package]] name = "rdrand" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "ryu" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3d612bc64430efeb3f7ee6ef26d590dce0c43249217bddc62112540c7941e1" [[package]] name = "serde" version = "1.0.104" dependencies = [ - "serde_derive 1.0.104", - "sgx_tstd 1.1.0", + "serde_derive", + "sgx_tstd", ] [[package]] name = "serde_derive" version = "1.0.104" dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.12", + "quote 1.0.4", + "syn 1.0.19", ] [[package]] name = "serde_json" version = "1.0.40" dependencies = [ - "itoa 0.4.5", - "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104", - "sgx_tstd 1.1.0", + "itoa", + "ryu", + "serde", + "sgx_tstd", ] [[package]] name = "sgx_alloc" -version = "1.1.0" +version = "1.1.2" [[package]] name = "sgx_backtrace_sys" -version = "1.1.0" +version = "1.1.2" dependencies = [ - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "sgx_build_helper 0.1.0", - "sgx_libc 1.1.0", + "cc", + "sgx_build_helper", + "sgx_libc", ] [[package]] name = "sgx_build_helper" -version = "0.1.0" +version = "0.1.3" [[package]] name = "sgx_demangle" -version = "1.1.0" +version = "1.1.2" [[package]] name = "sgx_libc" -version = "1.1.0" +version = "1.1.2" dependencies = [ - "sgx_types 1.1.0", + "sgx_types", ] [[package]] name = "sgx_tcrypto" -version = "1.1.0" +version = "1.1.2" dependencies = [ - "sgx_types 1.1.0", + "sgx_types", ] [[package]] name = "sgx_tprotected_fs" -version = "1.1.0" +version = "1.1.2" dependencies = [ - "sgx_trts 1.1.0", - "sgx_types 1.1.0", + "sgx_trts", + "sgx_types", ] [[package]] name = "sgx_trts" -version = "1.1.0" +version = "1.1.2" dependencies = [ - "sgx_libc 1.1.0", - "sgx_types 1.1.0", + "sgx_libc", + "sgx_types", ] [[package]] name = "sgx_tse" -version = "1.1.0" +version = "1.1.2" dependencies = [ - "sgx_types 1.1.0", -] - -[[package]] -name = "sgx_tseal" -version = "1.1.0" -dependencies = [ - "sgx_tcrypto 1.1.0", - "sgx_trts 1.1.0", - "sgx_tse 1.1.0", - "sgx_types 1.1.0", + "sgx_types", ] [[package]] name = "sgx_tstd" -version = "1.1.0" +version = "1.1.2" dependencies = [ - "sgx_alloc 1.1.0", - "sgx_backtrace_sys 1.1.0", - "sgx_demangle 1.1.0", - "sgx_libc 1.1.0", - "sgx_tprotected_fs 1.1.0", - "sgx_trts 1.1.0", - "sgx_tseal 1.1.0", - "sgx_types 1.1.0", - "sgx_unwind 0.1.0", + "hashbrown_tstd", + "sgx_alloc", + "sgx_backtrace_sys", + "sgx_demangle", + "sgx_libc", + "sgx_tprotected_fs", + "sgx_trts", + "sgx_types", + "sgx_unwind", ] [[package]] name = "sgx_types" -version = "1.1.0" +version = "1.1.2" [[package]] name = "sgx_unwind" -version = "0.1.0" +version = "0.1.1" dependencies = [ - "sgx_build_helper 0.1.0", + "sgx_build_helper", ] [[package]] name = "spin" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "static_assertions" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f3eb36b47e512f8f1c9e3d10c2c1965bc992bd9cdb024fa581e2194501c83d3" [[package]] name = "strsim" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" [[package]] name = "syn" version = "0.15.44" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid 0.1.0", ] [[package]] name = "syn" -version = "1.0.13" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8e5aa70697bb26ee62214ae3288465ecec0000f05182f039b477001f08f5ae7" dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.12", + "quote 1.0.4", + "unicode-xid 0.2.0", ] [[package]] name = "unicode-xid" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" [[package]] name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" [[package]] name = "uuid" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" dependencies = [ - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand", ] [[package]] name = "winapi" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", ] [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "xmas-elf" version = "0.6.2" dependencies = [ - "zero 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zero", ] [[package]] name = "zero" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" - -[metadata] -"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" -"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" -"checksum bitvec 0.17.4 (registry+https://github.com/rust-lang/crates.io-index)" = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" -"checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd" -"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fcfbcb0c5961907597a7d1148e3af036268f2b773886b8bb3eeb1e1281d3d3d6" -"checksum darling_core 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6afc018370c3bff3eb51f89256a6bdb18b4fdcda72d577982a14954a7a0b402c" -"checksum darling_macro 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c6d8dac1c6f1d29a41c4712b4400f878cb4fcc4c7628f298dd75038e024998d1" -"checksum derive_builder 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3ac53fa6a3cda160df823a9346442525dcaf1e171999a1cf23e67067e4fd64d4" -"checksum derive_builder_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0288a23da9333c246bb18c143426074a6ae96747995c5819d2947b64cd942b37" -"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" -"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" -"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -"checksum ident_case 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" -"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" -"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -"checksum proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0319972dcae462681daf4da1adeeaa066e3ebd29c69be96c6abb1259d2ee2bcc" -"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" -"checksum radium 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" -"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" -"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" -"checksum spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" -"checksum static_assertions 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7f3eb36b47e512f8f1c9e3d10c2c1965bc992bd9cdb024fa581e2194501c83d3" -"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" -"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -"checksum syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4ff033220a41d1a57d8125eab57bf5263783dfdcc18688b1dacc6ce9651ef8" -"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" -"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum zero 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5f1bc8a6b2005884962297587045002d8cfb8dcec9db332f4ca216ddc5de82c5" +checksum = "5f1bc8a6b2005884962297587045002d8cfb8dcec9db332f4ca216ddc5de82c5" diff --git a/src/libos/Makefile b/src/libos/Makefile index cca02cfa..f0afd430 100644 --- a/src/libos/Makefile +++ b/src/libos/Makefile @@ -52,8 +52,6 @@ ONLY_REBUILD_BUILTIN ?= 0 LIBOS_SO := $(BUILD_DIR)/lib/libocclum-libos.so LIBOS_CORE_A := $(BUILD_DIR)/lib/libocclum-libos-core.a LIBOS_CORE_RS_A := $(BUILD_DIR)/lib/libocclum_libos_core_rs.a -# The dependent libraries -LIBCOMPILER_RT_PATCH_A := $(BUILD_DIR)/lib/libcompiler-rt-patch.a # All source code RUST_SRCS := $(wildcard src/*.rs src/*/*.rs src/*/*/*.rs src/*/*/*/*.rs src/*/*/*/*/*.rs) @@ -90,7 +88,7 @@ C_FLAGS += -DOCCLUM_BUILTIN_VM_USER_SPACE_SIZE='($(OCCLUM_BUILTIN_VM_USER_SPACE_ endif _Other_Link_Flags := -L$(RUST_SGX_SDK_DIR)/compiler-rt/ -L$(BUILD_DIR)/lib -_Other_Enclave_Libs := -lcompiler-rt-patch -locclum-libos-core -lsgx_tprotected_fs +_Other_Enclave_Libs := -locclum-libos-core -lsgx_tprotected_fs LINK_FLAGS := $(SGX_LFLAGS_T) .PHONY: all clean @@ -146,15 +144,10 @@ $(BUILD_DIR)/src/libos/%.o: %.S @$(CC) $(C_FLAGS) -c $< -o $@ @echo "AS <= $@" -$(LIBCOMPILER_RT_PATCH_A): - @$(MAKE) --no-print-directory -C $(RUST_SGX_SDK_DIR)/compiler-rt/ > /dev/null - @cp $(RUST_SGX_SDK_DIR)/compiler-rt/libcompiler-rt-patch.a $(LIBCOMPILER_RT_PATCH_A) - @echo "GEN <= $@" - clean-builtin: @-$(RM) -f $(BUILTIN_C_OBJS) clean: clean-builtin @-$(RM) -f $(LIBOS_SO) $(LIBOS_CORE_A) $(LIBOS_CORE_RS_A) \ - $(LIBCOMPILER_RT_PATCH_A) $(EDL_C_OBJS) $(EDL_C_SRCS) $(C_OBJS) $(CXX_OBJS) $(S_OBJS) + $(EDL_C_OBJS) $(EDL_C_SRCS) $(C_OBJS) $(CXX_OBJS) $(S_OBJS) @-$(RM) -rf $(RUST_TARGET_DIR) diff --git a/src/libos/rust-toolchain b/src/libos/rust-toolchain index 7ff88f6e..4e74872f 100644 --- a/src/libos/rust-toolchain +++ b/src/libos/rust-toolchain @@ -1 +1 @@ -nightly-2019-11-25 +nightly-2020-04-07 diff --git a/src/libos/src/exception/mod.rs b/src/libos/src/exception/mod.rs index b7b240a6..544bd75f 100644 --- a/src/libos/src/exception/mod.rs +++ b/src/libos/src/exception/mod.rs @@ -23,7 +23,7 @@ pub fn register_exception_handlers() { } #[no_mangle] -extern "C" fn handle_exception(info: *mut sgx_exception_info_t) -> u32 { +extern "C" fn handle_exception(info: *mut sgx_exception_info_t) -> i32 { extern "C" { fn __occlum_syscall_c_abi(num: u32, info: *mut sgx_exception_info_t) -> u32; } diff --git a/src/libos/src/fs/stdio.rs b/src/libos/src/fs/stdio.rs index 8727917a..9c948ba4 100644 --- a/src/libos/src/fs/stdio.rs +++ b/src/libos/src/fs/stdio.rs @@ -180,7 +180,7 @@ impl File for StdoutFile { } let cmd_bits = cmd.cmd_num() as c_int; - let cmd_arg_ptr = cmd.arg_ptr() as *const c_int; + let cmd_arg_ptr = cmd.arg_ptr() as *mut c_int; let host_stdout_fd = self.get_host_fd() as i32; try_libc!(libc::ocall::ioctl_arg1( host_stdout_fd, @@ -321,7 +321,7 @@ impl File for StdinFile { } let cmd_bits = cmd.cmd_num() as c_int; - let cmd_arg_ptr = cmd.arg_ptr() as *const c_int; + let cmd_arg_ptr = cmd.arg_ptr() as *mut c_int; let host_stdin_fd = self.get_host_fd() as i32; try_libc!(libc::ocall::ioctl_arg1( host_stdin_fd, diff --git a/src/libos/src/net/socket_file/mod.rs b/src/libos/src/net/socket_file/mod.rs index c9cc8c91..3740cbb0 100644 --- a/src/libos/src/net/socket_file/mod.rs +++ b/src/libos/src/net/socket_file/mod.rs @@ -108,7 +108,7 @@ impl File for SocketFile { fn ioctl(&self, cmd: &mut IoctlCmd) -> Result<()> { let cmd_num = cmd.cmd_num() as c_int; - let cmd_arg_ptr = cmd.arg_ptr() as *const c_int; + let cmd_arg_ptr = cmd.arg_ptr() as *mut c_int; try_libc!(libc::ocall::ioctl_arg1(self.fd(), cmd_num, cmd_arg_ptr)); // FIXME: add sanity checks for results returned for socket-related ioctls cmd.validate_arg_val()?; diff --git a/src/libos/src/untrusted/alloc.rs b/src/libos/src/untrusted/alloc.rs index 1645e749..0f0f6d46 100644 --- a/src/libos/src/untrusted/alloc.rs +++ b/src/libos/src/untrusted/alloc.rs @@ -1,14 +1,18 @@ use super::*; -use std::alloc::{Alloc, AllocErr, Layout}; -use std::ptr::{self, NonNull}; +use std::alloc::{AllocErr, AllocInit, AllocRef, Layout, MemoryBlock}; +use std::ptr::{self, write_bytes, NonNull}; /// The global memory allocator for untrusted memory pub static mut UNTRUSTED_ALLOC: UntrustedAlloc = UntrustedAlloc; pub struct UntrustedAlloc; -unsafe impl Alloc for UntrustedAlloc { - unsafe fn alloc(&mut self, layout: Layout) -> std::result::Result, AllocErr> { +unsafe impl AllocRef for UntrustedAlloc { + fn alloc( + &mut self, + layout: Layout, + init: AllocInit, + ) -> std::result::Result { if layout.size() == 0 { return Err(AllocErr); } @@ -29,6 +33,12 @@ unsafe impl Alloc for UntrustedAlloc { return Err(AllocErr); } + if init == AllocInit::Zeroed { + unsafe { + write_bytes(mem_ptr, 0, layout.size()); + } + } + // Sanity checks // Post-condition 1: alignment debug_assert!(mem_ptr as usize % layout.align() == 0); @@ -37,7 +47,10 @@ unsafe impl Alloc for UntrustedAlloc { mem_ptr as *const u8, layout.size() )); - Ok(NonNull::new(mem_ptr).unwrap()) + Ok(MemoryBlock { + ptr: NonNull::new(mem_ptr).unwrap(), + size: layout.size(), + }) } unsafe fn dealloc(&mut self, ptr: NonNull, layout: Layout) { diff --git a/src/libos/src/untrusted/slice_alloc.rs b/src/libos/src/untrusted/slice_alloc.rs index e4e33c98..3e70bf62 100644 --- a/src/libos/src/untrusted/slice_alloc.rs +++ b/src/libos/src/untrusted/slice_alloc.rs @@ -1,5 +1,5 @@ use super::*; -use std::alloc::{Alloc, AllocErr, Layout}; +use std::alloc::{AllocErr, AllocInit, AllocRef, Layout, MemoryBlock}; use std::ptr::NonNull; use std::sync::atomic::{AtomicUsize, Ordering}; @@ -26,7 +26,13 @@ impl UntrustedSliceAlloc { } let layout = Layout::from_size_align(buf_size, 1)?; - let buf_ptr = unsafe { UNTRUSTED_ALLOC.alloc(layout)?.as_ptr() }; + let buf_ptr = unsafe { + UNTRUSTED_ALLOC + .alloc(layout, AllocInit::Uninitialized)? + .ptr + .as_ptr() + }; + let buf_pos = AtomicUsize::new(0); Ok(Self { buf_ptr, diff --git a/tools/docker/Dockerfile.centos7.2 b/tools/docker/Dockerfile.centos7.2 index e9e32bae..64753989 100644 --- a/tools/docker/Dockerfile.centos7.2 +++ b/tools/docker/Dockerfile.centos7.2 @@ -52,16 +52,20 @@ RUN wget http://www.etallen.com/cpuid/cpuid-20200211.x86_64.tar.gz && \ # Install SGX SDK WORKDIR /tmp -RUN git clone -b sgx_2.7.1_for_occlum https://github.com/occlum/linux-sgx && \ +RUN git clone -b sgx_2.9.1_for_occlum https://github.com/occlum/linux-sgx && \ cd linux-sgx && \ ./download_prebuilt.sh && \ + cp ./external/toolset/as /usr/local/bin/ && \ + cp ./external/toolset/ld /usr/local/bin/ && \ + cp ./external/toolset/ld.gold /usr/local/bin/ && \ + cp ./external/toolset/objdump /usr/local/bin/ && \ ./compile_and_install.sh && \ echo 'source /opt/intel/sgxsdk/environment' >> /root/.bashrc && \ rm -rf /tmp/linux-sgx # Install Rust ENV PATH="/root/.cargo/bin:$PATH" -ENV OCCLUM_RUST_VERSION=nightly-2019-11-25 +ENV OCCLUM_RUST_VERSION=nightly-2020-04-07 RUN curl https://sh.rustup.rs -sSf | \ sh -s -- --default-toolchain ${OCCLUM_RUST_VERSION} -y && \ rm -rf /root/.cargo/registry && rm -rf /root/.cargo/git && \ diff --git a/tools/docker/Dockerfile.ubuntu16.04 b/tools/docker/Dockerfile.ubuntu16.04 index f7c55203..50aea1bc 100644 --- a/tools/docker/Dockerfile.ubuntu16.04 +++ b/tools/docker/Dockerfile.ubuntu16.04 @@ -52,16 +52,20 @@ RUN wget http://www.etallen.com/cpuid/cpuid-20200211.x86_64.tar.gz && \ # Install SGX SDK WORKDIR /tmp -RUN git clone -b sgx_2.7.1_for_occlum https://github.com/occlum/linux-sgx && \ +RUN git clone -b sgx_2.9.1_for_occlum https://github.com/occlum/linux-sgx && \ cd linux-sgx && \ ./download_prebuilt.sh && \ + cp ./external/toolset/as /usr/local/bin/ && \ + cp ./external/toolset/ld /usr/local/bin/ && \ + cp ./external/toolset/ld.gold /usr/local/bin/ && \ + cp ./external/toolset/objdump /usr/local/bin/ && \ ./compile_and_install.sh && \ echo 'source /opt/intel/sgxsdk/environment' >> /root/.bashrc && \ rm -rf /tmp/linux-sgx # Install Rust ENV PATH="/root/.cargo/bin:$PATH" -ENV OCCLUM_RUST_VERSION=nightly-2019-11-25 +ENV OCCLUM_RUST_VERSION=nightly-2020-04-07 RUN curl https://sh.rustup.rs -sSf | \ sh -s -- --default-toolchain ${OCCLUM_RUST_VERSION} -y && \ rm -rf /root/.cargo/registry && rm -rf /root/.cargo/git && \ diff --git a/tools/docker/Dockerfile.ubuntu18.04 b/tools/docker/Dockerfile.ubuntu18.04 index a67a1c7d..b6b4f79a 100644 --- a/tools/docker/Dockerfile.ubuntu18.04 +++ b/tools/docker/Dockerfile.ubuntu18.04 @@ -53,17 +53,21 @@ RUN wget http://www.etallen.com/cpuid/cpuid-20200211.x86_64.tar.gz && \ # Install SGX SDK WORKDIR /tmp -RUN git clone -b sgx_2.7.1_for_occlum https://github.com/occlum/linux-sgx && \ +RUN git clone -b sgx_2.9.1_for_occlum https://github.com/occlum/linux-sgx && \ mkdir /etc/init && \ cd linux-sgx && \ ./download_prebuilt.sh && \ + cp ./external/toolset/as /usr/local/bin/ && \ + cp ./external/toolset/ld /usr/local/bin/ && \ + cp ./external/toolset/ld.gold /usr/local/bin/ && \ + cp ./external/toolset/objdump /usr/local/bin/ && \ ./compile_and_install.sh && \ echo 'source /opt/intel/sgxsdk/environment' >> /root/.bashrc && \ rm -rf /tmp/linux-sgx # Install Rust ENV PATH="/root/.cargo/bin:$PATH" -ENV OCCLUM_RUST_VERSION=nightly-2019-11-25 +ENV OCCLUM_RUST_VERSION=nightly-2020-04-07 RUN curl https://sh.rustup.rs -sSf | \ sh -s -- --default-toolchain ${OCCLUM_RUST_VERSION} -y && \ rm -rf /root/.cargo/registry && rm -rf /root/.cargo/git && \ diff --git a/tools/occlum b/tools/occlum index 5650716e..9ff5dc10 100755 --- a/tools/occlum +++ b/tools/occlum @@ -166,7 +166,6 @@ cmd_build() { cp "$occlum_dir/$build_dir/bin/occlum-run" build/bin/ mkdir -p build/lib cp "$occlum_dir/$build_dir/lib/libocclum-libos-core.a" build/lib/ - cp "$occlum_dir/$build_dir/lib/libcompiler-rt-patch.a" build/lib/ cp "$occlum_dir/$build_dir/lib/libocclum-pal.so" build/lib/ mkdir -p build/src/libos/src/builtin