Before, pause() was emulated by sleeping for 1s in a loop until
signal interrupted it. If signal arrived in-between these invocations
then pause() could never return. Also, pause() incorrectly returned 0
instead of -1 and errno=EINTR.
This patch emulates pause() by sleeping for a very long time (years).
Also, it correctly returns EINTR.
This patch fixes up to make LibOS/shim/tests/benchmark build again.
It addresses small 4 issues as follows.
- Runtime/pal_loader
pass --no-print-directory to make pal_loader doesn't work as
expected when it's invoked by make command as below. pal_loader
invokes make with --quiet. But when pal_loader is called by make as
sub command, the message, "Entering/Leaving <dir>" is still output.
pass --no-print-directory to make to suppress Entering/Leaving
message.
> /graphene/Runtime/pal-make[1]: Entering
> directory '/graphene/Pal/test'
> Linux
> make[1]: Leaving directory
> '/graphene/devel/graphene/Pal/test' is not built, or
> security mode is not supported
- fix up Makefiles to build LibOS/shim/tests/benchmark
Otherwise the build fails as follows.
> $ make
> ln -sf ../../../../Runtime/pal_loader
> [ fork_latency ]
> [ test_start.m ]
> [ rpc_latency.libos ]
> /usr/bin/ld: cannot find -llibos
> collect2: error: ld returned 1 exit status
> Makefile:18: recipe for target 'rpc_latency.libos' failed
> make: *** [rpc_latency.libos] Error 1
- update stale manifest.template
- update .gitignore
The change set of 7f5a4cc made Makefile create .lib directory.
So add it to .gitignore.
Signed-off-by: Isaku Yamahata <isaku.yamahata@gmail.com>
Fixing the bound of a debug buffer in SGX PAL
Rewrite bytes2hexstr; Add two new macros, alloca_bytes2hexstr() and malloc_bytes2hexstr().
Remove HASHBUF_SIZE
Add comments for the bytes2hexstr() macros.
Add a compile-time assertion
.packed directories are originally created for testing on non-Linux platforms. The usage is mostly obsolete right now, and the binaries are completely out-dated. A better strategy would be to create a hook in the github to release binary packages.
- Fix a severe bug caused by merging #87. The patch does not check the return values from get_config_entries_size(), while the return values can easily be negative (-PAL_ERROR_INVAL). Any usage of this function should carefully check the return values and also pass the size into get_config_entries() to prevent buffer overflow.
- Fix a minor bug in handling IPC disconnection. The callback ipc_child_exit() never receives a "term_signal" parameter. The callback is called when thepipe to a child process unexpectedly terminates, which can only mean the child process has crashed. I believe the proper signal to send is SIGKILL.
- Remove a compilation warning caused by type mismatch of __malloc().
- Allow binding TCP socket to ANY address
- enable LD_PRELOAD in glibc
- disable output buffering in LTP tests to reveal omitted passes
- Remove a double-unlock in shim_async.c
- Replace all int with size_t or ssize_t in Graphene configuration API
- Add new passed LTP tests
Release of Graphene SGX:
Supporting native Linux application in Intel SGX enclaves.
Most applications are supported. Some features may still be buggy.
Improving portability of Graphene:
Eliminating GCC-ism of the host-generic code.
Easier to port to non-Posix platform (e.g., Windows without Cygwin).
- Bugfixes in PAL and SHIM
- Improvement of migration scheme in SHIM, which largely speed up
forking
- Upgrade glibc to 2.19
- FreeBSD port
- Support OpenJDK, python and R
Plenty of bugfixes for Linux kernel later than 3.5 and Ubuntu later than 10.10.
More organized code to improve portability.
Regression tests for Pal to test completeness of implementation.