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/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_interfaces_path/nonlinux", 25 "$faultloggerd_path/test/unittest/unwind/include", 26 "$faultloggerd_path/test/utils", 27 ] 28 configs = [ "$faultloggerd_common_path/build:coverage_flags" ] 29 defines = [ 30 "DFX_LOG_UNWIND", 31 "is_emulator=${is_emulator}", 32 ] 33 sources = [ 34 "ark_test.cpp", 35 "elf_factory_test.cpp", 36 "elf_imitate.cpp", 37 "elf_test.cpp", 38 "fp_unwinder_test.cpp", 39 "instr_statistic_test.cpp", 40 "jsvm_test.cpp", 41 "maps_test.cpp", 42 "memory_test.cpp", 43 "regs_test.cpp", 44 "signal_test.cpp", 45 "symbols_test.cpp", 46 "unwind_entry_parser_test.cpp", 47 "unwinder_test.cpp", 48 ] 49 cflags_cc = [ "-Dprivate=public" ] 50 cflags_cc += [ "-Dprotected=public" ] 51 deps = [ 52 "$faultloggerd_common_path/dfxlog:dfx_hilog", 53 "$faultloggerd_common_path/dfxutil:dfx_util", 54 "$faultloggerd_interfaces_path/innerkits/procinfo:libdfx_procinfo", 55 "$faultloggerd_interfaces_path/innerkits/unwinder:libunwinder_src", 56 "$faultloggerd_path/test/utils:dfx_test_util", 57 ] 58 resource_config_file = "$faultloggerd_path/test/resource/ohos_test.xml" 59 external_deps = [ 60 "bounds_checking_function:libsec_shared", 61 "c_utils:utils", 62 "googletest:gtest_main", 63 "hilog:libhilog", 64 ] 65} 66 67ohos_unittest("test_unwind_pac") { 68 module_out_path = module_output_path 69 visibility = [ "*:*" ] 70 include_dirs = [ 71 "$faultloggerd_interfaces_path/common", 72 "$faultloggerd_path/test/unittest/unwind/include", 73 "$faultloggerd_path/test/utils", 74 ] 75 configs = [ "$faultloggerd_common_path/build:coverage_flags" ] 76 defines = [ "DFX_LOG_UNWIND" ] 77 sources = [ "unwinder_pac_test.cpp" ] 78 deps = [ 79 "$faultloggerd_common_path/dfxlog:dfx_hilog", 80 "$faultloggerd_common_path/dfxutil:dfx_util", 81 "$faultloggerd_interfaces_path/innerkits/unwinder:libunwinder_src", 82 "$faultloggerd_path/test/utils:dfx_test_util", 83 ] 84 branch_protector_ret = "pac_ret" 85 external_deps = [ 86 "bounds_checking_function:libsec_shared", 87 "c_utils:utils", 88 "googletest:gtest_main", 89 "hilog:libhilog", 90 ] 91} 92 93ohos_unittest("test_unwind_separate_code") { 94 module_out_path = module_output_path 95 visibility = [ "*:*" ] 96 include_dirs = [ 97 "$faultloggerd_interfaces_path/common", 98 "$faultloggerd_path/test/unittest/unwind/include", 99 "$faultloggerd_path/test/utils", 100 ] 101 configs = [ "$faultloggerd_common_path/build:coverage_flags" ] 102 defines = [ "DFX_LOG_UNWIND" ] 103 ldflags = [ "-Wl,-z,separate-code" ] 104 sources = [ "unwinder_pac_test.cpp" ] 105 deps = [ 106 "$faultloggerd_common_path/dfxlog:dfx_hilog", 107 "$faultloggerd_common_path/dfxutil:dfx_util", 108 "$faultloggerd_interfaces_path/innerkits/unwinder:libunwinder_src", 109 "$faultloggerd_path/test/utils:dfx_test_util", 110 ] 111 external_deps = [ 112 "bounds_checking_function:libsec_shared", 113 "c_utils:utils", 114 "googletest:gtest_main", 115 "hilog:libhilog", 116 ] 117} 118 119ohos_unittest("test_exidx") { 120 module_out_path = module_output_path 121 visibility = [ "*:*" ] 122 include_dirs = [ 123 "$faultloggerd_interfaces_path/common", 124 "$faultloggerd_interfaces_path/innerkits/unwinder/include", 125 ] 126 configs = [ "$faultloggerd_common_path/build:coverage_flags" ] 127 defines = [ 128 "DFX_LOG_UNWIND", 129 "is_ohos=${is_ohos}", 130 "is_emulator=${is_emulator}", 131 "TEST_ARM_EXIDX", 132 ] 133 sources = [ 134 "$faultloggerd_interfaces_path/innerkits/unwinder/src/ark/dfx_ark.cpp", 135 "$faultloggerd_interfaces_path/innerkits/unwinder/src/elf/dfx_elf.cpp", 136 "$faultloggerd_interfaces_path/innerkits/unwinder/src/elf/dfx_elf_parser.cpp", 137 "$faultloggerd_interfaces_path/innerkits/unwinder/src/elf/dfx_mmap.cpp", 138 "$faultloggerd_interfaces_path/innerkits/unwinder/src/elf/dfx_symbols.cpp", 139 "$faultloggerd_interfaces_path/innerkits/unwinder/src/elf/elf_factory.cpp", 140 "$faultloggerd_interfaces_path/innerkits/unwinder/src/elf/elf_factory_selector.cpp", 141 "$faultloggerd_interfaces_path/innerkits/unwinder/src/maps/dfx_map.cpp", 142 "$faultloggerd_interfaces_path/innerkits/unwinder/src/maps/dfx_maps.cpp", 143 "$faultloggerd_interfaces_path/innerkits/unwinder/src/memory/dfx_accessors.cpp", 144 "$faultloggerd_interfaces_path/innerkits/unwinder/src/memory/dfx_memory.cpp", 145 "$faultloggerd_interfaces_path/innerkits/unwinder/src/registers/dfx_regs.cpp", 146 "$faultloggerd_interfaces_path/innerkits/unwinder/src/registers/dfx_regs_arm.cpp", 147 "$faultloggerd_interfaces_path/innerkits/unwinder/src/unwind_entry_parser/exidx_entry_parser.cpp", 148 "$faultloggerd_interfaces_path/innerkits/unwinder/src/utils/dfx_frame_formatter.cpp", 149 "$faultloggerd_interfaces_path/innerkits/unwinder/src/utils/dfx_instructions.cpp", 150 "$faultloggerd_interfaces_path/innerkits/unwinder/src/utils/dfx_ptrace.cpp", 151 "arm_exidx_test.cpp", 152 ] 153 cflags_cc = [ "-Dprivate=public" ] 154 deps = [ 155 "$faultloggerd_common_path/dfxlog:dfx_hilog", 156 "$faultloggerd_common_path/dfxutil:dfx_util", 157 "$faultloggerd_common_path/trace:dfx_trace_dlsym", 158 ] 159 external_deps = [ 160 "bounds_checking_function:libsec_shared", 161 "c_utils:utils", 162 "googletest:gtest_main", 163 "hilog:libhilog", 164 ] 165} 166 167ohos_unittest("test_dwarf") { 168 module_out_path = module_output_path 169 visibility = [ "*:*" ] 170 defines = [ 171 "ALLOW_TO_STDERR", 172 "DFX_LOG_UNWIND", 173 "DFX_LOG_HILOG_BASE", 174 ] 175 include_dirs = [ 176 "$faultloggerd_interfaces_path/common", 177 "$faultloggerd_interfaces_path/innerkits/unwinder/include", 178 ] 179 configs = [ "$faultloggerd_path/common/build:coverage_flags" ] 180 sources = [ 181 "$faultloggerd_interfaces_path/innerkits/unwinder/src/unwind_entry_parser/dwarf_cfa_instructions.cpp", 182 "dwarf_test.cpp", 183 ] 184 cflags_cc = [ "-Dprivate=public" ] 185 186 deps = [ 187 "$faultloggerd_common_path/dfxlog:dfx_hilog_base", 188 "$faultloggerd_common_path/dfxutil:dfx_util", 189 "$faultloggerd_interfaces_path/innerkits/unwinder:libunwinder_base", 190 ] 191 192 resource_config_file = "$faultloggerd_path/test/resource/ohos_test.xml" 193 external_deps = [ 194 "bounds_checking_function:libsec_shared", 195 "c_utils:utils", 196 "googletest:gtest_main", 197 "hilog:libhilog_base", 198 ] 199} 200 201ohos_unittest("test_unwind_supporting") { 202 module_out_path = module_output_path 203 visibility = [ "*:*" ] 204 include_dirs = [ 205 "$faultloggerd_interfaces_path/common", 206 "$faultloggerd_interfaces_path/innerkits/unwinder/include", 207 ] 208 defines = [ "is_ohos=${is_ohos}" ] 209 sources = [ 210 "$faultloggerd_interfaces_path/innerkits/unwinder/src/ark/dfx_ark.cpp", 211 "$faultloggerd_interfaces_path/innerkits/unwinder/src/ark/dfx_hap.cpp", 212 "$faultloggerd_interfaces_path/innerkits/unwinder/src/maps/dfx_maps.cpp", 213 "$faultloggerd_interfaces_path/innerkits/unwinder/src/memory/dfx_memory.cpp", 214 "dfx_hap_test.cpp", 215 ] 216 deps = [ 217 "$faultloggerd_common_path/dfxlog:dfx_hilog", 218 "$faultloggerd_common_path/dfxutil:dfx_util", 219 "$faultloggerd_common_path/trace:dfx_trace_dlsym", 220 ] 221 external_deps = [ 222 "c_utils:utils", 223 "hilog:libhilog", 224 ] 225} 226 227ohos_unittest("test_reader") { 228 module_out_path = module_output_path 229 include_dirs = [ 230 "$faultloggerd_interfaces_path/common", 231 "$faultloggerd_interfaces_path/innerkits/unwinder/include", 232 ] 233 sources = [ "safe_reader_test.cpp" ] 234 cflags_cc = [ "-Dprivate=public" ] 235 236 deps = 237 [ "$faultloggerd_interfaces_path/innerkits/unwinder:libunwinder_static" ] 238 external_deps = [ 239 "c_utils:utils", 240 "googletest:gmock_main", 241 "googletest:gtest_main", 242 "hilog:libhilog", 243 ] 244} 245 246group("unittest") { 247 testonly = true 248 deps = [ 249 ":test_reader", 250 ":test_unwind", 251 ":test_unwind_pac", 252 ":test_unwind_separate_code", 253 ":test_unwind_supporting", 254 ] 255 if (target_cpu == "arm") { 256 deps += [ ":test_exidx" ] 257 } 258 if (target_cpu == "arm64") { 259 deps += [ ":test_dwarf" ] 260 } 261} 262