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
|
||||
.SILENT:
|
||||
|
||||
MAKEFLAGS:= -j4
|
||||
ifeq ($(shell uname),OpenBSD)
|
||||
GCC:=
|
||||
DEPS:= clang ./uuid
|
||||
@ -35,15 +36,18 @@ endif
|
||||
|
||||
### Generic flags
|
||||
SRCS= spectre_v1 spectre_v2
|
||||
CFLAGS+= -march=native -g
|
||||
CFLAGS+= -march=native
|
||||
CFLAGS+= -W
|
||||
CFLAGS+= -Wall
|
||||
CFLAGS+= -Werror -Wextra
|
||||
CFLAGS+= -Wno-unused-parameter
|
||||
CFLAGS+= -Wno-missing-field-initializers
|
||||
|
||||
# Fixes segfaults on clang's O2 O3 and gcc's O1 O2
|
||||
CFLAGS+= -fno-inline-functions
|
||||
# Multiples optimization levels break when inlining victim_function for spectre v2
|
||||
CFLAGS+= -fno-inline-functions
|
||||
|
||||
# Debug symbols
|
||||
#CFLAGS+= -g
|
||||
|
||||
### Octopus flags
|
||||
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)
|
||||
RESULTS_FILE:= results-$(UUID).json
|
||||
SSH_KEY= octoupload
|
||||
TIMES= 3
|
||||
TIMES= 1
|
||||
OCTOFLAGS= -j
|
||||
|
||||
ifeq ($(shell uname),OpenBSD)
|
||||
@ -87,50 +91,46 @@ SUB_FOUR= $(word 4, $(subst -, ,$@))
|
||||
CPROGS= $(foreach C, $(CCS), $(addsuffix -$(C), $(SRCS)))
|
||||
|
||||
### Optimizations
|
||||
OPROGS= $(foreach O, $(OPTIMIZATIONS), $(addsuffix -O$(O), $(CPROGS)))
|
||||
OPTIMIZED_PROGRAMS= $(foreach O, $(OPTIMIZATIONS), $(addsuffix -O$(O), $(CPROGS)))
|
||||
|
||||
### Static
|
||||
SPROGS= $(addsuffix -static, $(foreach O, $(OPTIMIZATIONS), $(addsuffix -O$(O), $(CPROGS))))
|
||||
STATIC_PROGRAMS= $(addsuffix -static, $(foreach O, $(OPTIMIZATIONS), $(addsuffix -O$(O), $(CPROGS))))
|
||||
|
||||
##### V1
|
||||
### Masking mitigation
|
||||
MPROGS= $(addsuffix -mask, $(filter spectre_v1%, $(OPROGS)))
|
||||
MSPROGS= $(addsuffix -mask, $(filter spectre_v1%, $(SPROGS)))
|
||||
MASKING_PROGRAMS= $(addsuffix -mask, $(filter spectre_v1%, $(OPTIMIZED_PROGRAMS)))
|
||||
MASKING_STATIC_PROGRAMS= $(addsuffix -mask, $(filter spectre_v1%, $(STATIC_PROGRAMS)))
|
||||
|
||||
### Lfence mitigation
|
||||
LPROGS= $(addsuffix -fence, $(filter spectre_v1%, $(OPROGS)))
|
||||
LSPROGS= $(addsuffix -fence, $(filter spectre_v1%, $(SPROGS)))
|
||||
LFENCE_PROGRAMS= $(addsuffix -fence, $(filter spectre_v1%, $(OPTIMIZED_PROGRAMS)))
|
||||
LFENCE_STATIC_PROGRAMS= $(addsuffix -fence, $(filter spectre_v1%, $(STATIC_PROGRAMS)))
|
||||
|
||||
### Masking + Lfence mitigations
|
||||
#MLPROGS= $(addsuffix -maskfence, $(filter spectre_v1%, $(OPROGS)))
|
||||
#MLSPROGS= $(addsuffix -maskfence, $(filter spectre_v1%, $(SPROGS)))
|
||||
|
||||
###### V2
|
||||
###### V2
|
||||
### Retpoline
|
||||
## clang
|
||||
# dynamic
|
||||
RCPROGS= $(addsuffix -retpoline, $(filter spectre_v2-clang%, $(OPROGS)))
|
||||
RETPOLINE_CLANG_PROGRAMS= $(addsuffix -retpoline, $(filter spectre_v2-clang%, $(OPTIMIZED_PROGRAMS)))
|
||||
# static
|
||||
RSCPROGS= $(addsuffix -retpoline, $(filter spectre_v2-clang%, $(SPROGS)))
|
||||
RETPOLINE_STATIC_CLANG_PROGRAMS= $(addsuffix -retpoline, $(filter spectre_v2-clang%, $(STATIC_PROGRAMS)))
|
||||
## gcc
|
||||
# dynamic
|
||||
RGPROGS= $(addsuffix -retpoline, $(filter spectre_v2-gcc%, $(OPROGS)))
|
||||
RETPOLINE_GCC_PROGRAMS= $(addsuffix -retpoline, $(filter spectre_v2-gcc%, $(OPTIMIZED_PROGRAMS)))
|
||||
# static
|
||||
RSGPROGS= $(addsuffix -retpoline, $(filter spectre_v2-gcc%, $(SPROGS)))
|
||||
RETPOLINE_STATIC_GCC_PROGRAMS= $(addsuffix -retpoline, $(filter spectre_v2-gcc%, $(STATIC_PROGRAMS)))
|
||||
|
||||
PROGS= $(OPROGS)
|
||||
PROGS+= $(SPROGS)
|
||||
PROGS+= $(MPROGS)
|
||||
PROGS+= $(MSPROGS)
|
||||
PROGS+= $(LPROGS)
|
||||
PROGS+= $(LSPROGS)
|
||||
#PROGS+= $(MLPROGS)
|
||||
#PROGS+= $(MLSPROGS)
|
||||
PROGS+= $(RCPROGS)
|
||||
PROGS+= $(RSCPROGS)
|
||||
PROGS+= $(RGROGS)
|
||||
PROGS+= $(RSGPROGS)
|
||||
# Add GCC's specific flag
|
||||
V2_GCC_PROGRAMS= $(filter spectre_v2-gcc%, $(STATIC_PROGRAMS)) $(filter spectre_v2-gcc%, $(OPTIMIZED_PROGRAMS)) $(RETPOLINE_GCC_PROGRAMS) $(RETPOLINE_STATIC_GCC_PROGRAMS)
|
||||
$(V2_GCC_PROGRAMS): CFLAGS+=-fno-inline-small-functions
|
||||
|
||||
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
|
||||
printf "\033[1mThank you for helping science today !\033[0m\n"
|
||||
@ -185,52 +185,44 @@ $(RESULTS_FILE): build
|
||||
done
|
||||
printf "\n]}}\n" >> $@
|
||||
|
||||
$(OPROGS):
|
||||
$(OPTIMIZED_PROGRAMS):
|
||||
@$(PROGRESS) $(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
|
||||
$(SUB_TWO) $(addprefix -, $(SUB_FOUR)) $(CFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c
|
||||
|
||||
|
||||
$(MPROGS):
|
||||
$(MASKING_PROGRAMS):
|
||||
@$(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
|
||||
|
||||
$(MSPROGS):
|
||||
$(MASKING_STATIC_PROGRAMS):
|
||||
@$(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
|
||||
|
||||
$(LPROGS):
|
||||
$(LFENCE_PROGRAMS):
|
||||
@$(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
|
||||
|
||||
$(LSPROGS):
|
||||
$(LFENCE_STATIC_PROGRAMS):
|
||||
@$(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
|
||||
|
||||
#$(MLPROGS):
|
||||
# @$(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):
|
||||
$(RETPOLINE_CLANG_PROGRAMS):
|
||||
@$(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
|
||||
|
||||
$(RSCPROGS):
|
||||
$(RETPOLINE_STATIC_CLANG_PROGRAMS):
|
||||
@$(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
|
||||
|
||||
$(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
|
||||
$(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
|
||||
$(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