mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-01-17 19:00:58 +00:00
feat(crypto): improved clang version checks, remove duplicate, adapt to refactor
Makefiles do not natively support compiler version checks, so some shell-based tricks have to be used instead. The ethereum_address_checksum() function changed, adapt input length.
This commit is contained in:
parent
cf3c57d0ae
commit
b9a3a73c27
@ -1,15 +1,33 @@
|
|||||||
|
# CLANG_VERSION is empty if the compiler is not clang-based
|
||||||
|
CLANG_VERSION = $(shell $(CC) --version | grep -Po "clang version \K[\d\.]+")
|
||||||
|
CLANG_VERSION_MAJOR = $(shell echo $(CLANG_VERSION) | cut -f1 -d.)
|
||||||
|
|
||||||
|
# determine specific version ranges
|
||||||
|
ifneq ($(CLANG_VERSION),)
|
||||||
|
$(if $(shell [ $(CLANG_VERSION_MAJOR) -ge 13 ] && echo "OK"), \
|
||||||
|
$(eval CLANG_AT_LEAST_13 := true), \
|
||||||
|
$(eval CLANG_AT_LEAST_13 := false))
|
||||||
|
$(if $(shell [ $(CLANG_VERSION_MAJOR) -ge 14 ] && echo "OK"), \
|
||||||
|
$(eval CLANG_AT_LEAST_14 := true), \
|
||||||
|
$(eval CLANG_AT_LEAST_14 := false))
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(FUZZER),1)
|
ifeq ($(FUZZER),1)
|
||||||
CC ?= clang
|
CC ?= clang
|
||||||
LD ?= $(CC)
|
LD ?= $(CC)
|
||||||
SANFLAGS += -fsanitize=fuzzer
|
SANFLAGS += -fsanitize=fuzzer
|
||||||
|
|
||||||
# TODO gcc as well as older clang versions <= 12 do not support this feature
|
# only clang versions >= 13 support this feature
|
||||||
|
ifeq ($(CLANG_AT_LEAST_13),true)
|
||||||
$(info "info: using -fsanitize-ignorelist")
|
$(info "info: using -fsanitize-ignorelist")
|
||||||
SANFLAGS += -fsanitize-ignorelist=fuzzer/sanitizer_ignorelist.txt
|
SANFLAGS += -fsanitize-ignorelist=fuzzer/sanitizer_ignorelist.txt
|
||||||
|
else
|
||||||
|
$(info "info: not using -fsanitize-ignorelist")
|
||||||
|
endif
|
||||||
|
|
||||||
# TODO is there a better solution, for example by disabling a specific optimization technique?
|
# TODO is there a better solution, for example by disabling a specific optimization technique?
|
||||||
# there is a clang optimization issue in relation with the blake2 code at -fsanitize=undefined
|
# there is a clang optimization issue in relation with the blake2 code at -fsanitize=undefined
|
||||||
$(warning "warning: disable optimization on blake2 code as workaround")
|
$(warning "warning: disabling optimization on blake2 code as workaround")
|
||||||
blake2b.o: OPTFLAGS += -O0
|
blake2b.o: OPTFLAGS += -O0
|
||||||
blake2s.o: OPTFLAGS += -O0
|
blake2s.o: OPTFLAGS += -O0
|
||||||
|
|
||||||
@ -61,8 +79,8 @@ ZKP_PATH = ../vendor/secp256k1-zkp
|
|||||||
CFLAGS += -DSECP256K1_CONTEXT_SIZE=208
|
CFLAGS += -DSECP256K1_CONTEXT_SIZE=208
|
||||||
|
|
||||||
# TODO remove this workaround once possible
|
# TODO remove this workaround once possible
|
||||||
ifeq ($(CC),clang-14)
|
ifeq ($(CLANG_AT_LEAST_14),true)
|
||||||
$(warning "warning: suppress clang-14 compiler warning for secp256k1-zkp code")
|
$(warning "warning: suppressing clang-14 compiler warning for secp256k1-zkp code")
|
||||||
ZKP_CFLAGS += -Wno-bitwise-instead-of-logical
|
ZKP_CFLAGS += -Wno-bitwise-instead-of-logical
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -716,7 +716,7 @@ int fuzz_mnemonic_to_seed(void) {
|
|||||||
|
|
||||||
int fuzz_ethereum_address_checksum(void) {
|
int fuzz_ethereum_address_checksum(void) {
|
||||||
uint8_t addr[20] = {0};
|
uint8_t addr[20] = {0};
|
||||||
char address[41] = {0};
|
char address[43] = {0};
|
||||||
uint64_t chain_id = 0;
|
uint64_t chain_id = 0;
|
||||||
bool rskip60 = false;
|
bool rskip60 = false;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user