From 4107a65248d72e39189daf5f5ef5f6801030fed1 Mon Sep 17 00:00:00 2001 From: "Tate, Hongliang Tian" Date: Fri, 30 Nov 2018 16:25:42 +0800 Subject: [PATCH] Enable libc's printf --- src/libos/src/file.rs | 6 ------ src/libos/src/lib.rs | 1 + src/libos/src/prelude.rs | 6 ++++++ src/libos/src/syscall.rs | 4 ++-- test/hello_world/main.c | 3 ++- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/libos/src/file.rs b/src/libos/src/file.rs index 1fbcb82f..8c1c97a0 100644 --- a/src/libos/src/file.rs +++ b/src/libos/src/file.rs @@ -185,8 +185,6 @@ impl SgxFileInner { for buf in bufs { match file.write(buf) { Ok(this_bytes) => { - if this_bytes == 0 { break; } - total_bytes += this_bytes; if this_bytes < buf.len() { break; } } @@ -221,8 +219,6 @@ impl SgxFileInner { for buf in bufs { match file.read(buf) { Ok(this_bytes) => { - if this_bytes == 0 { break; } - total_bytes += this_bytes; if this_bytes < buf.len() { break; } } @@ -282,7 +278,6 @@ impl File for StdoutFile { for buf in bufs { match guard.write(buf) { Ok(this_len) => { - if this_len == 0 { break; } total_bytes += this_len; if this_len < buf.len() { break; } } @@ -352,7 +347,6 @@ impl File for StdinFile { for buf in bufs { match guard.read(buf) { Ok(this_len) => { - if this_len == 0 { break; } total_bytes += this_len; if this_len < buf.len() { break; } } diff --git a/src/libos/src/lib.rs b/src/libos/src/lib.rs index 357553e5..0a8a40ce 100644 --- a/src/libos/src/lib.rs +++ b/src/libos/src/lib.rs @@ -24,6 +24,7 @@ use std::panic; use sgx_types::*; use sgx_trts::libc; +#[macro_use] mod prelude; mod elf_helper; mod errno; diff --git a/src/libos/src/prelude.rs b/src/libos/src/prelude.rs index 89892c29..2bf8f5ec 100644 --- a/src/libos/src/prelude.rs +++ b/src/libos/src/prelude.rs @@ -21,3 +21,9 @@ pub use errno::Error as Error; pub use errno::Errno; pub use fs::off_t; + +macro_rules! debug_trace { + () => { + println!("> Line = {}, File = {}", line!(), file!()) + }; +} diff --git a/src/libos/src/syscall.rs b/src/libos/src/syscall.rs index 63416c8a..018ba4e1 100644 --- a/src/libos/src/syscall.rs +++ b/src/libos/src/syscall.rs @@ -92,7 +92,7 @@ fn do_writev(fd: c_int, iov: *const iovec_t, count: c_int) let buf = unsafe { std::slice::from_raw_parts(iov.base as * const u8, iov.len) }; - bufs_vec[iov_i] = buf; + bufs_vec.push(buf); } bufs_vec }; @@ -122,7 +122,7 @@ fn do_readv(fd: c_int, iov: *mut iovec_t, count: c_int) let buf = unsafe { std::slice::from_raw_parts_mut(iov.base as * mut u8, iov.len) }; - bufs_vec[iov_i] = buf; + bufs_vec.push(buf); } bufs_vec }; diff --git a/test/hello_world/main.c b/test/hello_world/main.c index 5cc3c736..a0bd3801 100644 --- a/test/hello_world/main.c +++ b/test/hello_world/main.c @@ -1,9 +1,10 @@ #include #include +#include static const char* msg = "Hello World\n"; int main(void) { - write(1, msg, strlen(msg) + 1); + printf("%s", msg); return 0; }