• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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