1# Copyright (c) 2022-2023 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//base/hiviewdfx/faultloggerd/faultloggerd.gni") 15import("//build/config/features.gni") 16import("//build/test.gni") 17module_output_path = "faultloggerd/unwind" 18 19ohos_unittest("test_unwind") { 20 module_out_path = module_output_path 21 visibility = [ "*:*" ] 22 include_dirs = [ 23 "$faultloggerd_interfaces_path/common", 24 "$faultloggerd_path/test/unittest/unwind/include", 25 "$faultloggerd_path/test/utils", 26 ] 27 configs = [ "$faultloggerd_common_path/build:coverage_flags" ] 28 defines = [ 29 "DFX_LOG_UNWIND", 30 "is_emulator=${is_emulator}", 31 ] 32 sources = [ 33 "ark_test.cpp", 34 "elf_imitate.cpp", 35 "elf_test.cpp", 36 "fp_unwinder_test.cpp", 37 "instr_statistic_test.cpp", 38 "maps_test.cpp", 39 "memory_test.cpp", 40 "regs_test.cpp", 41 "signal_test.cpp", 42 "symbols_test.cpp", 43 "unwinder_test.cpp", 44 "xz_util_test.cpp", 45 ] 46 cflags_cc = [ "-Dprivate=public" ] 47 deps = [ 48 "$faultloggerd_common_path/dfxlog:dfx_hilog", 49 "$faultloggerd_common_path/dfxutil:dfx_util", 50 "$faultloggerd_interfaces_path/innerkits/procinfo:libdfx_procinfo", 51 "$faultloggerd_interfaces_path/innerkits/unwinder:libunwinder_src", 52 "$faultloggerd_path/test/utils:dfx_test_util", 53 ] 54 resource_config_file = "$faultloggerd_path/test/resource/ohos_test.xml" 55 external_deps = [ 56 "bounds_checking_function:libsec_shared", 57 "c_utils:utils", 58 "googletest:gtest_main", 59 "hilog:libhilog", 60 ] 61} 62 63ohos_unittest("test_unwind_pac") { 64 module_out_path = module_output_path 65 visibility = [ "*:*" ] 66 include_dirs = [ 67 "$faultloggerd_interfaces_path/common", 68 "$faultloggerd_path/test/unittest/unwind/include", 69 ] 70 configs = [ "$faultloggerd_common_path/build:coverage_flags" ] 71 defines = [ "DFX_LOG_UNWIND" ] 72 sources = [ "unwinder_pac_test.cpp" ] 73 deps = [ 74 "$faultloggerd_common_path/dfxlog:dfx_hilog", 75 "$faultloggerd_common_path/dfxutil:dfx_util", 76 "$faultloggerd_interfaces_path/innerkits/unwinder:libunwinder_src", 77 ] 78 branch_protector_ret = "pac_ret" 79 external_deps = [ 80 "bounds_checking_function:libsec_shared", 81 "c_utils:utils", 82 "googletest:gtest_main", 83 "hilog:libhilog", 84 ] 85} 86 87ohos_unittest("test_unwind_separate_code") { 88 module_out_path = module_output_path 89 visibility = [ "*:*" ] 90 include_dirs = [ 91 "$faultloggerd_interfaces_path/common", 92 "$faultloggerd_path/test/unittest/unwind/include", 93 ] 94 configs = [ "$faultloggerd_common_path/build:coverage_flags" ] 95 defines = [ "DFX_LOG_UNWIND" ] 96 ldflags = [ "-Wl,-z,separate-code" ] 97 sources = [ "unwinder_pac_test.cpp" ] 98 deps = [ 99 "$faultloggerd_common_path/dfxlog:dfx_hilog", 100 "$faultloggerd_common_path/dfxutil:dfx_util", 101 "$faultloggerd_interfaces_path/innerkits/unwinder:libunwinder_src", 102 ] 103 external_deps = [ 104 "bounds_checking_function:libsec_shared", 105 "c_utils:utils", 106 "googletest:gtest_main", 107 "hilog:libhilog", 108 ] 109} 110 111ohos_unittest("test_exidx") { 112 module_out_path = module_output_path 113 visibility = [ "*:*" ] 114 include_dirs = [ 115 "$faultloggerd_interfaces_path/common", 116 "$faultloggerd_interfaces_path/innerkits/unwinder/include", 117 ] 118 configs = [ "$faultloggerd_common_path/build:coverage_flags" ] 119 defines = [ 120 "DFX_LOG_UNWIND", 121 "DFX_UNWIND_ERROR", 122 "is_ohos=${is_ohos}", 123 "is_emulator=${is_emulator}", 124 "TEST_ARM_EXIDX", 125 ] 126 sources = [ 127 "$faultloggerd_interfaces_path/innerkits/unwinder/arch_util.cpp", 128 "$faultloggerd_interfaces_path/innerkits/unwinder/arm_exidx.cpp", 129 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_accessors.cpp", 130 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_ark.cpp", 131 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_config.cpp", 132 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_elf.cpp", 133 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_elf_parser.cpp", 134 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_frame_formatter.cpp", 135 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_instructions.cpp", 136 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_map.cpp", 137 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_maps.cpp", 138 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_memory.cpp", 139 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_mmap.cpp", 140 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_ptrace.cpp", 141 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_regs.cpp", 142 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_regs_arm.cpp", 143 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_symbols.cpp", 144 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_xz_utils.cpp", 145 "arm_exidx_test.cpp", 146 ] 147 deps = [ 148 "$faultloggerd_common_path/dfxlog:dfx_hilog", 149 "$faultloggerd_common_path/dfxutil:dfx_util", 150 "$faultloggerd_common_path/trace:dfx_trace_dlsym", 151 ] 152 public_external_deps = [ "lzma:lzma_shared" ] 153 external_deps = [ 154 "bounds_checking_function:libsec_shared", 155 "c_utils:utils", 156 "googletest:gtest_main", 157 "hilog:libhilog", 158 ] 159} 160 161ohos_unittest("test_dwarf") { 162 module_out_path = module_output_path 163 visibility = [ "*:*" ] 164 defines = [ 165 "ALLOW_TO_STDERR", 166 "DFX_LOG_UNWIND", 167 "DFX_LOG_HILOG_BASE", 168 ] 169 include_dirs = [ 170 "$faultloggerd_interfaces_path/common", 171 "$faultloggerd_interfaces_path/innerkits/unwinder/include", 172 ] 173 configs = [ "$faultloggerd_path/common/build:coverage_flags" ] 174 sources = [ 175 "$faultloggerd_interfaces_path/innerkits/unwinder/dwarf_cfa_instructions.cpp", 176 "dwarf_test.cpp", 177 ] 178 cflags_cc = [ "-Dprivate=public" ] 179 180 deps = [ 181 "$faultloggerd_common_path/dfxlog:dfx_hilog_base", 182 "$faultloggerd_common_path/dfxutil:dfx_util", 183 "$faultloggerd_interfaces_path/innerkits/unwinder:libunwinder_base", 184 ] 185 186 resource_config_file = "$faultloggerd_path/test/resource/ohos_test.xml" 187 external_deps = [ 188 "bounds_checking_function:libsec_shared", 189 "c_utils:utils", 190 "googletest:gtest_main", 191 "hilog:libhilog_base", 192 ] 193} 194 195ohos_unittest("test_unwind_supporting") { 196 module_out_path = module_output_path 197 visibility = [ "*:*" ] 198 include_dirs = [ 199 "$faultloggerd_interfaces_path/common", 200 "$faultloggerd_interfaces_path/innerkits/unwinder/include", 201 ] 202 defines = [ "is_ohos=${is_ohos}" ] 203 sources = [ 204 "$faultloggerd_interfaces_path/innerkits/unwinder/arch_util.cpp", 205 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_ark.cpp", 206 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_hap.cpp", 207 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_maps.cpp", 208 "$faultloggerd_interfaces_path/innerkits/unwinder/dfx_memory.cpp", 209 "arch_util_test.cpp", 210 "dfx_hap_test.cpp", 211 ] 212 deps = [ 213 "$faultloggerd_common_path/dfxlog:dfx_hilog", 214 "$faultloggerd_common_path/dfxutil:dfx_util", 215 "$faultloggerd_common_path/trace:dfx_trace_dlsym", 216 ] 217 external_deps = [ 218 "c_utils:utils", 219 "hilog:libhilog", 220 ] 221} 222 223group("unittest") { 224 testonly = true 225 deps = [ 226 ":test_unwind", 227 ":test_unwind_pac", 228 ":test_unwind_separate_code", 229 ":test_unwind_supporting", 230 ] 231 if (target_cpu == "arm") { 232 deps += [ ":test_exidx" ] 233 } 234 if (target_cpu == "arm64") { 235 deps += [ ":test_dwarf" ] 236 } 237} 238