1# Copyright (C) 2022 Huawei Technologies Co., Ltd. 2# Licensed under the Mulan PSL v2. 3# You can use this software according to the terms and conditions of the Mulan PSL v2. 4# You may obtain a copy of Mulan PSL v2 at: 5# http://license.coscl.org.cn/MulanPSL2 6# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR 7# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR 8# PURPOSE. 9# See the Mulan PSL v2 for more details. 10 11ifeq ($(CONFIG_LLVM_CFI),y) 12 13ifeq ($(CONFIG_LLVM_LTO),y) 14tee-sanitize-cfi := -fsanitize=cfi -fno-sanitize-cfi-cross-dso 15else 16$(info use cfi $(tee-sanitize-cfi) please set CONFIG_LLVM_LTO) 17endif 18 19## can't support -fno-sanitize-trap=cfi -fsanitize-recover=cfi 20ifeq ($(findstring fvisibility=hidden,$(flags)),) 21apps-sanitize-cfi += -fvisibility=default 22endif 23 24ifeq ($(ARCH),aarch64) 25cfi-no-icall := libswcrypto_engine.a tarunner.elf libtimer.a libcrypto_hal.a libteeos.a libpermission_service.a libtaentry.a \ 26 libcrypto.a libssa.a 27 28ifneq ($(filter $(cfi-no-icall),$(MODULE)), ) 29apps-sanitize-cfi += -fno-sanitize=cfi-icall 30endif 31 32ifneq ($(filter $(cfi-no-icall),$(DRIVER)), ) 33apps-sanitize-cfi += -fno-sanitize=cfi-icall 34endif 35 36else #32bit 37 38cfi-no-icall := libswcrypto_engine_a32.a tarunner_a32.elf libtimer_a32.a libcrypto_hal_a32.a libteeos_a32.a \ 39 libpermission_service_a32.a libtaentry_a32.a libcrypto_a32.a libssa_a32.a libdrv_frame_a32.a 40 41no-cfi:= libopenssl${TARG}.a 42 43ifneq ($(filter $(cfi-no-icall),$(MODULE)), ) 44apps-sanitize-cfi += -fno-sanitize=cfi-icall 45endif 46 47ifneq ($(filter $(cfi-no-icall),$(DRIVER)), ) 48apps-sanitize-cfi += -fno-sanitize=cfi-icall 49endif 50 51ifneq ($(filter $(cfi-no-icall),$(TARGET)), ) 52apps-sanitize-cfi += -fno-sanitize=cfi-icall 53endif 54 55ifneq ($(filter $(no-cfi),$(MODULE)), ) 56apps-sanitize-cfi := 57endif 58 59ifneq ($(filter $(no-cfi),$(DRIVER)), ) 60apps-sanitize-cfi := 61endif 62 63ifneq ($(filter $(no-cfi),$(TARGET)), ) 64apps-sanitize-cfi := 65endif 66 67endif#aarch64 68 69flags += $(apps-sanitize-cfi) 70$(info inapps $(DRIVER)$(MODULE)$(TARGET) use $(apps-sanitize-cfi)) 71endif #CONFIG_LLVM_CFI 72