Commit Graph

69 Commits

Author SHA1 Message Date
Tate, Hongliang Tian
a2169e63e8 Upgrade Dockerfile for dynamic-linking support 2019-08-01 12:23:37 +00:00
Tate, Hongliang Tian
e11c30c5c5 Run dynamically-linked hello world 2019-07-20 03:34:00 +00:00
Tate, Hongliang Tian
33739cc00b Program loader loads ld.so now 2019-07-20 03:34:00 +00:00
Tate, Hongliang Tian
13974315ad Fix all compiler warnings for tests 2019-07-20 03:34:00 +00:00
Tate, Hongliang Tian
a579f84e90 Enable new system call mechanism via Auxiliary Vector
The old system call mechanism works by relocating the symbol __occlum_syscall
provided by libocclum_stub.so to the real entry point of the LibOS. This symbol
relocation is done by the program loader. Now, the new system call mechanism is
based on passing the entry point via the auxiliary vector. This new mechanism
is simpler and is more compatible with the upcoming support for ld.so.

Changes:
1. Fix a bug in serializing auxiliary vector in the stack of a user program;
2. Passing syscall entry via auxiliary vector;
3. Remove relocating for the __occlum_syscall symbol;
4. Remove the dependency on libocclum_stub.so in tests.
2019-07-20 03:34:00 +00:00
Tate, Hongliang Tian
8686322afb Add /dev/zero, /dev/random, /dev/urandom, and /dev/arandom 2019-07-19 12:30:15 +00:00
Tate, Hongliang Tian
8cda63ab3a Use SEFS at /, HostFS at /host, and RamFS at /tmp 2019-07-19 10:25:33 +00:00
Wang Runji
7f229cef50 add simple HostFS, mount it at /host 2019-07-19 03:51:38 +00:00
Wang Runji
29278db8f4 support multiple fs
- use RamFS as rootfs, mount SEFS at /test
- for testing convenience, set default cwd to /test
- fix spawn path and change_cwd
2019-07-19 03:49:18 +00:00
Tate, Hongliang Tian
e1e46c9935 Add clock_gettimeofday 2019-07-18 10:51:12 +00:00
Tate, Hongliang Tian
c096e7d0b9 Inform Intel SGX SDK about Occlum-defined stacks
There are two types of stacks: the kernel ones and the user ones. The kernel
stacks are used by Occlum and managed by Intel SGX SDK itself, while the user
stacks are used by the threads created and managed by Occlum. These user stacks
are transparent to Intel SGX SDK so far.

The problem is that Intel SGX SDK needs to be aware of the user stacks.
SGX exception handlers will check whether the rsp value---when the exception
happened---is within the stack of the current SGX thread. If the check fails,
the registered exception handler will not be triggered. But when exceptions are
triggered by the threads running upon Occlum, the rsp value points to the user
stacks, which Intel SGX SDK are completely unware of. So the check always
fails.

Therefore, we extend Intel SGX SDK with two new APIs:

  int sgx_enable_user_stack(size_t stack_base, size_t stack_limit);
  void sgx_disable_user_stack(void);

And this commit uses the two APIs to inform Intel SGX SDK about the
Occlum-managed stacks. And the rsp checks in SGX exception handlers will
check whether rsp is within the user stacks.
2019-07-18 07:16:17 +00:00
散樗
2553298b1d Handle cpuid and rdtsc instruction
Init support for cpuid and rdtsc instruction handling in occlum.

This patch includes:
1. cpuid exception handler for all information leaves;
2. rdtsc exception handler;
3. handler registration;
4. cpuid test;
5. rdtsc test.

Signed-off-by: 散樗 <kailun.qkl@antfin.com>
2019-07-18 13:51:50 +08:00
Tate, Hongliang Tian
56c69b5f3c Refactor mmap implementation
1. Add a full test suite for mmap
2. Implement file-backed memory mapping
3. Implement fixed, anonymous memory mapping
4. Implement hinted, anonymous memory mapping
5. Implement munmap that covers partial/multiple memory mappings
2019-07-01 11:56:04 +08:00
Youren
3a38f68c69 Add c++ examples 2019-06-01 11:22:04 +08:00
WangRunji
3850c31235 fix unix socket bench 2019-04-24 15:28:05 +08:00
WangRunji
cccc1cfb58 add unix socket bench 2019-04-24 13:41:01 +08:00
WangRunji
9797a64f06 enable unix socket and add test for it 2019-04-24 13:28:35 +08:00
WangRunji
a8060f0b24 add simple epoll test. fix epoll_wait, accept4 2019-04-12 15:14:11 +08:00
WangRunji
b5697ab611 Merge remote-tracking branch 'official/master' into net
# Conflicts:
#	src/libos/src/fs/mod.rs
#	src/libos/src/syscall/mod.rs
#	test/Makefile
2019-04-11 19:13:29 +08:00
Tate, Hongliang Tian
d7e266d0e3 Add access and faccessat 2019-04-10 09:03:41 +08:00
Tate, Hongliang Tian
b003f4ce43 Add prlimit64, getrlimit, and setrlimit 2019-04-10 09:03:41 +08:00
Tate, Hongliang Tian
8846c62b5e Add uname 2019-04-10 09:03:41 +08:00
WangRunji
5b90d90643 implement SocketFile. pass socket test 2019-04-07 11:47:54 +08:00
WangRunji
0dda84d7f2 add test for simple socket syscalls 2019-04-07 11:28:43 +08:00
Tate, Hongliang Tian
abe553ba1c Adapt Makefile to changes of Occlum's clang and ld wrappers 2019-04-06 22:55:16 +08:00
Tate, Hongliang Tian
bd82b27762 Use mutex in Pthread test 2019-04-06 22:55:16 +08:00
Tate, Hongliang Tian
660d0931cd Add Pthread test 2019-04-06 22:55:16 +08:00
Tate, Hongliang Tian
db40e8f52b Enable Thread Local Storage (TLS)
Add arch_prctl and pass necessary ELF info to libc via aux vector
2019-04-06 22:55:16 +08:00
Tate, Hongliang Tian
b2e626760b Add futex 2019-04-03 13:41:55 +08:00
Tate, Hongliang Tian
4cf8777592 Add clone system call 2019-04-03 13:41:55 +08:00
WangRunji
a3483851a0 add test for link, unlink, rename 2019-03-29 14:20:25 +08:00
WangRunji
0a8e84f4de add test for pread, pwrite 2019-03-29 14:20:25 +08:00
WangRunji
d5e8d43e7b fix and add test for readv, writev, lseek 2019-03-29 14:20:25 +08:00
WangRunji
4a9b7aa1b0 add test for truncate, stat 2019-03-29 14:20:25 +08:00
WangRunji
e095e8a4f0 fix split_path. add test for getcwd, mkdir, rmdir, chdir. 2019-03-29 14:20:25 +08:00
WangRunji
6e9f00b5db fix process cwd. fix open path 2019-03-29 14:20:25 +08:00
WangRunji
011b4bf8e7 add test for readdir 2019-03-29 14:20:25 +08:00
WangRunji
cbeab07352 add test for ftruncate 2019-03-29 14:20:25 +08:00
WangRunji
0ec4ba9305 load program bin from SEFS 2019-03-29 14:20:25 +08:00
WangRunji
8f078e9499 fix bin path in tests 2019-03-29 14:20:25 +08:00
WangRunji
e41f65e132 fix test Makefile for SEFS 2019-03-29 14:20:25 +08:00
Tate, Hongliang Tian
cd6dc9d77a Use the new arguments for Occlum LLVM toolchain 2019-02-23 16:31:01 +08:00
Tate, Hongliang Tian
22edefc349 Add pipe throughput benchmark 2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
d1731162eb Add perf test for spawn+wait4 2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
71d119181e Support argc and argv for child process after spawn 2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
ad704c421f Add argc and argv support 2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
ae063cbf90 Portable colorful output regardless of shell 2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
d3009db10b Add gettimeofday 2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
cdf3a2c3e0 Small fix to malloc test 2019-02-16 16:24:08 +08:00
Tate, Hongliang Tian
a712bfe70a Add pipe test 2019-02-16 16:24:08 +08:00