Refactor PROGS dependencies names and enable a target-specific CFLAG (no function inlining) for programs compiled with GCC.
This commit is contained in:
parent
5e59829c5d
commit
7740718f91
92
Makefile
92
Makefile
@ -16,6 +16,7 @@
|
|||||||
.PHONY: clean build upload findfalses
|
.PHONY: clean build upload findfalses
|
||||||
.SILENT:
|
.SILENT:
|
||||||
|
|
||||||
|
MAKEFLAGS:= -j4
|
||||||
ifeq ($(shell uname),OpenBSD)
|
ifeq ($(shell uname),OpenBSD)
|
||||||
GCC:=
|
GCC:=
|
||||||
DEPS:= clang ./uuid
|
DEPS:= clang ./uuid
|
||||||
@ -35,15 +36,18 @@ endif
|
|||||||
|
|
||||||
### Generic flags
|
### Generic flags
|
||||||
SRCS= spectre_v1 spectre_v2
|
SRCS= spectre_v1 spectre_v2
|
||||||
CFLAGS+= -march=native -g
|
CFLAGS+= -march=native
|
||||||
CFLAGS+= -W
|
CFLAGS+= -W
|
||||||
CFLAGS+= -Wall
|
CFLAGS+= -Wall
|
||||||
CFLAGS+= -Werror -Wextra
|
CFLAGS+= -Werror -Wextra
|
||||||
CFLAGS+= -Wno-unused-parameter
|
CFLAGS+= -Wno-unused-parameter
|
||||||
CFLAGS+= -Wno-missing-field-initializers
|
CFLAGS+= -Wno-missing-field-initializers
|
||||||
|
|
||||||
# Fixes segfaults on clang's O2 O3 and gcc's O1 O2
|
# Multiples optimization levels break when inlining victim_function for spectre v2
|
||||||
CFLAGS+= -fno-inline-functions
|
CFLAGS+= -fno-inline-functions
|
||||||
|
|
||||||
|
# Debug symbols
|
||||||
|
#CFLAGS+= -g
|
||||||
|
|
||||||
### Octopus flags
|
### Octopus flags
|
||||||
CCS= clang $(GCC)
|
CCS= clang $(GCC)
|
||||||
@ -51,7 +55,7 @@ OPTIMIZATIONS= 0 1 2 3 fast s
|
|||||||
UUID:= $(shell uuid 2> /dev/null || uuidgen 2> /dev/null || ./uuid)
|
UUID:= $(shell uuid 2> /dev/null || uuidgen 2> /dev/null || ./uuid)
|
||||||
RESULTS_FILE:= results-$(UUID).json
|
RESULTS_FILE:= results-$(UUID).json
|
||||||
SSH_KEY= octoupload
|
SSH_KEY= octoupload
|
||||||
TIMES= 3
|
TIMES= 1
|
||||||
OCTOFLAGS= -j
|
OCTOFLAGS= -j
|
||||||
|
|
||||||
ifeq ($(shell uname),OpenBSD)
|
ifeq ($(shell uname),OpenBSD)
|
||||||
@ -87,50 +91,46 @@ SUB_FOUR= $(word 4, $(subst -, ,$@))
|
|||||||
CPROGS= $(foreach C, $(CCS), $(addsuffix -$(C), $(SRCS)))
|
CPROGS= $(foreach C, $(CCS), $(addsuffix -$(C), $(SRCS)))
|
||||||
|
|
||||||
### Optimizations
|
### Optimizations
|
||||||
OPROGS= $(foreach O, $(OPTIMIZATIONS), $(addsuffix -O$(O), $(CPROGS)))
|
OPTIMIZED_PROGRAMS= $(foreach O, $(OPTIMIZATIONS), $(addsuffix -O$(O), $(CPROGS)))
|
||||||
|
|
||||||
### Static
|
### Static
|
||||||
SPROGS= $(addsuffix -static, $(foreach O, $(OPTIMIZATIONS), $(addsuffix -O$(O), $(CPROGS))))
|
STATIC_PROGRAMS= $(addsuffix -static, $(foreach O, $(OPTIMIZATIONS), $(addsuffix -O$(O), $(CPROGS))))
|
||||||
|
|
||||||
##### V1
|
##### V1
|
||||||
### Masking mitigation
|
### Masking mitigation
|
||||||
MPROGS= $(addsuffix -mask, $(filter spectre_v1%, $(OPROGS)))
|
MASKING_PROGRAMS= $(addsuffix -mask, $(filter spectre_v1%, $(OPTIMIZED_PROGRAMS)))
|
||||||
MSPROGS= $(addsuffix -mask, $(filter spectre_v1%, $(SPROGS)))
|
MASKING_STATIC_PROGRAMS= $(addsuffix -mask, $(filter spectre_v1%, $(STATIC_PROGRAMS)))
|
||||||
|
|
||||||
### Lfence mitigation
|
### Lfence mitigation
|
||||||
LPROGS= $(addsuffix -fence, $(filter spectre_v1%, $(OPROGS)))
|
LFENCE_PROGRAMS= $(addsuffix -fence, $(filter spectre_v1%, $(OPTIMIZED_PROGRAMS)))
|
||||||
LSPROGS= $(addsuffix -fence, $(filter spectre_v1%, $(SPROGS)))
|
LFENCE_STATIC_PROGRAMS= $(addsuffix -fence, $(filter spectre_v1%, $(STATIC_PROGRAMS)))
|
||||||
|
|
||||||
### Masking + Lfence mitigations
|
###### V2
|
||||||
#MLPROGS= $(addsuffix -maskfence, $(filter spectre_v1%, $(OPROGS)))
|
|
||||||
#MLSPROGS= $(addsuffix -maskfence, $(filter spectre_v1%, $(SPROGS)))
|
|
||||||
|
|
||||||
###### V2
|
|
||||||
### Retpoline
|
### Retpoline
|
||||||
## clang
|
## clang
|
||||||
# dynamic
|
# dynamic
|
||||||
RCPROGS= $(addsuffix -retpoline, $(filter spectre_v2-clang%, $(OPROGS)))
|
RETPOLINE_CLANG_PROGRAMS= $(addsuffix -retpoline, $(filter spectre_v2-clang%, $(OPTIMIZED_PROGRAMS)))
|
||||||
# static
|
# static
|
||||||
RSCPROGS= $(addsuffix -retpoline, $(filter spectre_v2-clang%, $(SPROGS)))
|
RETPOLINE_STATIC_CLANG_PROGRAMS= $(addsuffix -retpoline, $(filter spectre_v2-clang%, $(STATIC_PROGRAMS)))
|
||||||
## gcc
|
## gcc
|
||||||
# dynamic
|
# dynamic
|
||||||
RGPROGS= $(addsuffix -retpoline, $(filter spectre_v2-gcc%, $(OPROGS)))
|
RETPOLINE_GCC_PROGRAMS= $(addsuffix -retpoline, $(filter spectre_v2-gcc%, $(OPTIMIZED_PROGRAMS)))
|
||||||
# static
|
# static
|
||||||
RSGPROGS= $(addsuffix -retpoline, $(filter spectre_v2-gcc%, $(SPROGS)))
|
RETPOLINE_STATIC_GCC_PROGRAMS= $(addsuffix -retpoline, $(filter spectre_v2-gcc%, $(STATIC_PROGRAMS)))
|
||||||
|
|
||||||
PROGS= $(OPROGS)
|
# Add GCC's specific flag
|
||||||
PROGS+= $(SPROGS)
|
V2_GCC_PROGRAMS= $(filter spectre_v2-gcc%, $(STATIC_PROGRAMS)) $(filter spectre_v2-gcc%, $(OPTIMIZED_PROGRAMS)) $(RETPOLINE_GCC_PROGRAMS) $(RETPOLINE_STATIC_GCC_PROGRAMS)
|
||||||
PROGS+= $(MPROGS)
|
$(V2_GCC_PROGRAMS): CFLAGS+=-fno-inline-small-functions
|
||||||
PROGS+= $(MSPROGS)
|
|
||||||
PROGS+= $(LPROGS)
|
|
||||||
PROGS+= $(LSPROGS)
|
|
||||||
#PROGS+= $(MLPROGS)
|
|
||||||
#PROGS+= $(MLSPROGS)
|
|
||||||
PROGS+= $(RCPROGS)
|
|
||||||
PROGS+= $(RSCPROGS)
|
|
||||||
PROGS+= $(RGROGS)
|
|
||||||
PROGS+= $(RSGPROGS)
|
|
||||||
|
|
||||||
|
PROGS= $(OPTIMIZED_PROGRAMS)
|
||||||
|
PROGS+= $(STATIC_PROGRAMS)
|
||||||
|
PROGS+= $(MASKING_PROGRAMS)
|
||||||
|
PROGS+= $(MASKING_STATIC_PROGRAMS)
|
||||||
|
PROGS+= $(LFENCE_PROGRAMS)
|
||||||
|
PROGS+= $(LFENCE_STATIC_PROGRAMS)
|
||||||
|
PROGS+= $(RETPOLINE_CLANG_PROGRAMS)
|
||||||
|
PROGS+= $(RETPOLINE_STATIC_CLANG_PROGRAMS)
|
||||||
|
PROGS+= $(V2_GCC_PROGRAMS)
|
||||||
|
|
||||||
all: upload
|
all: upload
|
||||||
printf "\033[1mThank you for helping science today !\033[0m\n"
|
printf "\033[1mThank you for helping science today !\033[0m\n"
|
||||||
@ -185,52 +185,44 @@ $(RESULTS_FILE): build
|
|||||||
done
|
done
|
||||||
printf "\n]}}\n" >> $@
|
printf "\n]}}\n" >> $@
|
||||||
|
|
||||||
$(OPROGS):
|
$(OPTIMIZED_PROGRAMS):
|
||||||
@$(PROGRESS) $(SUB_TWO) $(CFLAGS) $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
@$(PROGRESS) $(SUB_TWO) $(CFLAGS) $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
$(SUB_TWO) $(CFLAGS) $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
$(SUB_TWO) $(CFLAGS) $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
|
|
||||||
$(SPROGS):
|
$(STATIC_PROGRAMS):
|
||||||
@$(PROGRESS) $(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
@$(PROGRESS) $(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
$(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
$(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
|
|
||||||
|
$(MASKING_PROGRAMS):
|
||||||
$(MPROGS):
|
|
||||||
@$(PROGRESS) $(SUB_TWO) $(CFLAGS) -DMASKING_MITIGATION $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
@$(PROGRESS) $(SUB_TWO) $(CFLAGS) -DMASKING_MITIGATION $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
$(SUB_TWO) $(CFLAGS) -DMASKING_MITIGATION $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
$(SUB_TWO) $(CFLAGS) -DMASKING_MITIGATION $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
|
|
||||||
$(MSPROGS):
|
$(MASKING_STATIC_PROGRAMS):
|
||||||
@$(PROGRESS) $(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -DMASKING_MITIGATION -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
@$(PROGRESS) $(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -DMASKING_MITIGATION -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
$(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -DMASKING_MITIGATION -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
$(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -DMASKING_MITIGATION -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
|
|
||||||
$(LPROGS):
|
$(LFENCE_PROGRAMS):
|
||||||
@$(PROGRESS) $(SUB_TWO) $(CFLAGS) -DLFENCE_MITIGATION $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
@$(PROGRESS) $(SUB_TWO) $(CFLAGS) -DLFENCE_MITIGATION $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
$(SUB_TWO) $(CFLAGS) -DLFENCE_MITIGATION $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
$(SUB_TWO) $(CFLAGS) -DLFENCE_MITIGATION $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
|
|
||||||
$(LSPROGS):
|
$(LFENCE_STATIC_PROGRAMS):
|
||||||
@$(PROGRESS) $(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -DLFENCE_MITIGATION -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
@$(PROGRESS) $(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -DLFENCE_MITIGATION -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
$(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -DLFENCE_MITIGATION -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
$(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -DLFENCE_MITIGATION -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
|
|
||||||
#$(MLPROGS):
|
$(RETPOLINE_CLANG_PROGRAMS):
|
||||||
# @$(PROGRESS) $(SUB_TWO) $(CFLAGS) -DLFENCE_MITIGATION -DMASKING_MITIGATION $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
|
||||||
# $(SUB_TWO) $(CFLAGS) -DLFENCE_MITIGATION -DMASKING_MITIGATION $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
|
||||||
#
|
|
||||||
#$(MLSPROGS):
|
|
||||||
# @$(PROGRESS) $(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -DLFENCE_MITIGATION -DMASKING_MITIGATION -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
|
||||||
# $(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -DLFENCE_MITIGATION -DMASKING_MITIGATION -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
|
||||||
|
|
||||||
$(RCPROGS):
|
|
||||||
@$(PROGRESS) $(SUB_TWO) $(CFLAGS) -mretpoline $(LDFLAGS) -z retpolineplt -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
@$(PROGRESS) $(SUB_TWO) $(CFLAGS) -mretpoline $(LDFLAGS) -z retpolineplt -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
$(SUB_TWO) $(CFLAGS) -mretpoline $(LDFLAGS) -z retpolineplt -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
$(SUB_TWO) $(CFLAGS) -mretpoline $(LDFLAGS) -z retpolineplt -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
|
|
||||||
$(RSCPROGS):
|
$(RETPOLINE_STATIC_CLANG_PROGRAMS):
|
||||||
@$(PROGRESS) $(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -mretpoline -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
@$(PROGRESS) $(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -mretpoline -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
$(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -mretpoline -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
$(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -mretpoline -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
|
|
||||||
$(RGPROGS):
|
|
||||||
|
$(RETPOLINE_GCC_PROGRAMS):
|
||||||
@$(PROGRESS) $(SUB_TWO) $(CFLAGS) -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register $(LDFLAGS) -z retpolineplt -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
@$(PROGRESS) $(SUB_TWO) $(CFLAGS) -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register $(LDFLAGS) -z retpolineplt -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
$(SUB_TWO) $(CFLAGS) -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register $(LDFLAGS) -z retpolineplt -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
$(SUB_TWO) $(CFLAGS) -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register $(LDFLAGS) -z retpolineplt -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
|
|
||||||
$(RSGPROGS):
|
$(RETPOLINE_STATIC_GCC_PROGRAMS):
|
||||||
@$(PROGRESS) $(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
@$(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
|
$(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user