occlum/test/Makefile
Tate, Hongliang Tian e166382923 Add the signal subsystem
In this commit, we add eight signal-related syscalls
* kill
* tkill
* tgkill
* rt_sigaction
* rt_sigreturn
* rt_sigprocmask
* rt_sigpending
* exit_group

We implement the following major features for signals:
* Generate, mask, and deliver signals
* Support user-defined signal handlers
    * Support nested invocation of signal handlers
    * Support passing arguments: signum, sigaction, and ucontext
* Support both process-directed and thread-directed signals
* Capture hardware exceptions and convert them to signals
* Deliver fatal signals (like SIGKILL) to kill processes gracefully

But we still have gaps, including but not limited to the points below:
* Convert #PF (page fault) and #GP (general protection) exceptions to signals
* Force delivery of signals via interrupt
* Support simulation mode
2020-05-15 02:59:16 +00:00

97 lines
3.1 KiB
Makefile

CUR_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
PROJECT_DIR := $(realpath $(CUR_DIR)/../)
SGX_MODE ?= HW
ifneq ($(SGX_MODE), HW)
BUILD_DIR := $(PROJECT_DIR)/build_sim
else
BUILD_DIR := $(PROJECT_DIR)/build
endif
# Dependencies: need to be compiled but not to run by any Makefile target
TEST_DEPS := client data_sink
# Tests: need to be compiled and run by test-% target
TESTS ?= empty env hello_world malloc mmap file fs_perms getpid spawn sched pipe time \
truncate readdir mkdir open stat link symlink chmod chown tls pthread uname rlimit \
server server_epoll unix_socket cout hostfs cpuid rdtsc device sleep exit_group \
ioctl fcntl eventfd emulate_syscall access signal
# Benchmarks: need to be compiled and run by bench-% target
BENCHES := spawn_and_exit_latency pipe_throughput unix_socket_throughput
# Top-level Makefile targets
BUILD_TARGETS := $(TEST_DEPS) $(TESTS) $(BENCHES)
TEST_TARGETS := $(TESTS:%=test-%)
BENCH_TARGETS := $(BENCHES:%=bench-%)
.PHONY: all prebuild build postbuild test clean $(BUILD_TARGETS) $(TEST_TARGETS) $(BENCH_TARGETS)
# Use echo program instead of built-in echo command in shell. This ensures
# that echo can recognize escaped sequences (with -e argument) regardless of
# the specific shell (e.g., bash, zash, etc.)
ECHO := /bin/echo -e
# Shell escaped sequences for colorful output
CYAN := \033[1;36m
GREEN := \033[1;32m
RED := \033[1;31m
NO_COLOR := \033[0m
#############################################################################
# Build targets
#############################################################################
all: build
build: prebuild $(BUILD_TARGETS) postbuild
prebuild:
@$(RM) -rf $(BUILD_DIR)/test
@mkdir -p $(BUILD_DIR)/test
@cd $(BUILD_DIR)/test && \
$(BUILD_DIR)/bin/occlum init
@cp Occlum.json Enclave.xml $(BUILD_DIR)/test/
$(BUILD_TARGETS): %:
@$(ECHO) "$(CYAN)BUILD TEST => $@$(NO_COLOR)"
@$(MAKE) --no-print-directory -C $@
@$(ECHO) "$(GREEN)DONE$(NO_COLOR)"
postbuild:
@cd $(BUILD_DIR)/test && \
$(BUILD_DIR)/bin/occlum build
#############################################################################
# Test targets
#############################################################################
test: build $(TEST_TARGETS)
$(TEST_TARGETS): test-%: %
@$(ECHO) "$(CYAN)RUN TEST => $<$(NO_COLOR)"
@$(MAKE) --no-print-directory -C $< test ; \
if [ $$? -eq 0 ] ; then \
$(ECHO) "$(GREEN)PASS$(NO_COLOR)" ; \
else \
$(ECHO) "$(RED)FAILED$(NO_COLOR)" ; \
fi ;
#############################################################################
# Benchmark targets
#############################################################################
bench: build $(BENCH_TARGETS)
$(BENCH_TARGETS): bench-%: %
@$(ECHO) "$(CYAN)RUN BENCH => $<$(NO_COLOR)"
@$(MAKE) --no-print-directory -C $< test ; \
if [ $$? -eq 0 ] ; then \
$(ECHO) "$(GREEN)DONE$(NO_COLOR)" ; \
else \
$(ECHO) "$(RED)FAILED$(NO_COLOR)" ; \
fi ;
#############################################################################
# Misc
#############################################################################
clean:
@$(RM) -rf $(BUILD_DIR)/test