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