diff --git a/.gitignore b/.gitignore index b1fd6d2..2719b26 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ spectre_*-* *.json +uuid +uuid_obsd/uuid.d +uuid_obsd/uuid.o +uuid_obsd/uuid diff --git a/Makefile b/Makefile index 71b7c9f..6cb5f1e 100644 --- a/Makefile +++ b/Makefile @@ -17,10 +17,10 @@ .SILENT: ifeq ($(shell uname),OpenBSD) -GCC:= egcc -DEPS:= $(GCC) clang ./uuid +GCC:= +DEPS:= clang ./uuid ifndef MKUUID -MKUUID!= $(shell $(MAKE) uuid) +MKUUID!= $(shell stat uuid > /dev/null 2>&1 || (make -C uuid_obsd && ln -s uuid_obsd/uuid uuid)) endif else GCC:= gcc @@ -28,12 +28,14 @@ DEPS:= $(GCC) clang uuid lld LDFLAGS+= -fuse-ld=lld endif +ifdef MKUUID EXECUTABLES= $(DEPS) XXXX:= $(foreach exec,$(EXECUTABLES), $(if $(shell which $(exec) 2> /dev/null),X,$(error "No '$(exec)' in PATH, please install it and restart octopus !"))) +endif ### Generic flags SRCS= spectre_v1 spectre_v2 -CFLAGS= -march=native +CFLAGS+= -march=native CFLAGS+= -W CFLAGS+= -Wall CFLAGS+= -Werror -Wextra @@ -44,20 +46,26 @@ CFLAGS+= -Wno-missing-field-initializers CCS= clang $(GCC) OPTIMIZATIONS= 0 1 2 3 fast s RETPOLINE= mretpoline -UUID:= $(shell uuid || uuidgen || ./uuid) +UUID:= $(shell uuid 2> /dev/null || uuidgen 2> /dev/null || ./uuid) RESULTS_FILE:= results-$(UUID).json SSH_KEY= octoupload TIMES= 3 OCTOFLAGS= -j +ifeq ($(shell uname),OpenBSD) +COUNTER= $(shell jot $(TIMES) 1) +else +COUNTER= $(shell seq $(TIMES)) +endif + ### Octopus internals CPU:= $(shell LC_ALL=en_US.UTF-8 lscpu | grep "Model name" | cut -d":" -f 2 | sort | uniq | awk '{$$1=$$1;print}') -UCODE:= $(shell (grep microcode /proc/cpuinfo || printf unknown) | sort | uniq | awk '{print $$NF}' || printf unknown) +UCODE:= $(shell (grep microcode /proc/cpuinfo 2> /dev/null || printf unknown) | sort | uniq | awk '{print $$NF}' || printf unknown) KERN:= $(shell uname -svm) CLANGV:= $(shell clang -v 2>&1 | head -n 1) -GCCV:= $(shell gcc -v 2>&1 | grep 'gcc version') -VULN1:= $(shell (cat /sys/devices/system/cpu/vulnerabilities/spectre_v1 || printf unknown)) -VULN2:= $(shell (cat /sys/devices/system/cpu/vulnerabilities/spectre_v2 || printf unknown)) +GCCV:= $(shell (gcc -v 2>&1 | grep 'gcc version') || printf unknown) +VULN1:= $(shell (cat /sys/devices/system/cpu/vulnerabilities/spectre_v1 2> /dev/null || printf unknown)) +VULN2:= $(shell (cat /sys/devices/system/cpu/vulnerabilities/spectre_v2 2> /dev/null || printf unknown)) ifneq ($(shell uname),OpenBSD) @@ -134,13 +142,13 @@ upload: $(RESULTS_FILE) build: $(PROGS) $(RESULTS_FILE): build - printf "\033[1m\033[94m________ __\n"; - printf "\_____ \ _____/ |_ ____ ______ __ __ ______\n"; - printf " / | \_/ ___\ __\/ _ \\____ \| | \/ ___/\n"; - printf "/ | \ \___| | ( <_> ) |_> > | /\___ \ \n"; - printf "\_______ /\___ >__| \____/| __/|____//____ >\n"; - printf " \/ \/ |__| \/\033[0m\n"; - printf " Samuel AUBERTIN - EURECOM\n" + printf '\033[1m\033[94m________ __\n' + printf '\\_____ \\ _____/ |_ ____ ______ __ __ ______\n' + printf ' / | \\_/ ___\\ __\\/ _ \\\\____ \\| | \\/ ___/\n' + printf '/ | \\ \\___| | ( <_> ) |_> > | /\\___ \\ \n' + printf '\\_______ /\\___ >__| \\____/| __/|____//____ >\n' + printf ' \\/ \\/ |__| \\/\033[0m\n' + printf ' Samuel AUBERTIN - EURECOM\n' printf "\033[4mUUID\033[0m\t\t$(UUID)\n" printf "\033[4mCPU\033[0m\t\t$(CPU)\n" printf "\033[4mMicrocode\033[0m\t$(UCODE)\n" @@ -159,7 +167,7 @@ $(RESULTS_FILE): build printf "\"spectre_v2\": \"$(VULN2)\",\n" >> $@ printf "\"results\": [\n" >> $@ for p in $(PROGS); do \ - for t in $$(seq $(TIMES)); do \ + for t in $(COUNTER); do \ sleep 0.1; \ (./$$p $(OCTOFLAGS) || printf "{ \"$$p\": false }")>> $@; \ if ! [ "$$p" = "$(lastword $(PROGS))" ]; \ @@ -220,8 +228,6 @@ $(RSGPROGS): @$(PROGRESS) $(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -$(SUB_THREE) -o $@ $(SUB_ONE).c $(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -$(SUB_THREE) -o $@ $(SUB_ONE).c -uuid: - $(CC) -o $@ uuid.c - clean: rm -rf $(PROGS) *.json + make -C uuid_obsd clean diff --git a/uuid_obsd/Makefile b/uuid_obsd/Makefile new file mode 100644 index 0000000..8987339 --- /dev/null +++ b/uuid_obsd/Makefile @@ -0,0 +1,7 @@ +# $OpenBSD: Makefile,v 1.4 2017/02/19 00:46:57 jca Exp $ + +PROG= uuid +NOMAN= + + +.include diff --git a/uuid.c b/uuid_obsd/uuid.c similarity index 100% rename from uuid.c rename to uuid_obsd/uuid.c