xref: /aosp_15_r20/external/cronet/third_party/abseil-cpp/absl/debugging/BUILD.bazel (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1#
2# Copyright 2017 The Abseil Authors.
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      https://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17load(
18    "//absl:copts/configure_copts.bzl",
19    "ABSL_DEFAULT_COPTS",
20    "ABSL_DEFAULT_LINKOPTS",
21    "ABSL_TEST_COPTS",
22)
23
24package(
25    default_visibility = ["//visibility:public"],
26    features = [
27        "header_modules",
28        "layering_check",
29        "parse_headers",
30    ],
31)
32
33licenses(["notice"])
34
35cc_library(
36    name = "stacktrace",
37    srcs = [
38        "internal/stacktrace_aarch64-inl.inc",
39        "internal/stacktrace_arm-inl.inc",
40        "internal/stacktrace_config.h",
41        "internal/stacktrace_emscripten-inl.inc",
42        "internal/stacktrace_generic-inl.inc",
43        "internal/stacktrace_powerpc-inl.inc",
44        "internal/stacktrace_riscv-inl.inc",
45        "internal/stacktrace_unimplemented-inl.inc",
46        "internal/stacktrace_win32-inl.inc",
47        "internal/stacktrace_x86-inl.inc",
48        "stacktrace.cc",
49    ],
50    hdrs = ["stacktrace.h"],
51    copts = ABSL_DEFAULT_COPTS,
52    linkopts = ABSL_DEFAULT_LINKOPTS,
53    deps = [
54        ":debugging_internal",
55        "//absl/base:config",
56        "//absl/base:core_headers",
57        "//absl/base:dynamic_annotations",
58        "//absl/base:raw_logging_internal",
59    ],
60)
61
62cc_test(
63    name = "stacktrace_test",
64    srcs = ["stacktrace_test.cc"],
65    copts = ABSL_TEST_COPTS,
66    linkopts = ABSL_DEFAULT_LINKOPTS,
67    deps = [
68        ":stacktrace",
69        "//absl/base:core_headers",
70        "@com_google_googletest//:gtest",
71        "@com_google_googletest//:gtest_main",
72    ],
73)
74
75cc_library(
76    name = "symbolize",
77    srcs = [
78        "symbolize.cc",
79        "symbolize_darwin.inc",
80        "symbolize_elf.inc",
81        "symbolize_emscripten.inc",
82        "symbolize_unimplemented.inc",
83        "symbolize_win32.inc",
84    ],
85    hdrs = [
86        "internal/symbolize.h",
87        "symbolize.h",
88    ],
89    copts = ABSL_DEFAULT_COPTS,
90    linkopts = ABSL_DEFAULT_LINKOPTS + select({
91        "//absl:msvc_compiler": ["-DEFAULTLIB:dbghelp.lib"],
92        "//absl:clang-cl_compiler": ["-DEFAULTLIB:dbghelp.lib"],
93        "//absl:mingw_compiler": [
94            "-DEFAULTLIB:dbghelp.lib",
95            "-ldbghelp",
96        ],
97        "//conditions:default": [],
98    }),
99    deps = [
100        ":debugging_internal",
101        ":demangle_internal",
102        "//absl/base",
103        "//absl/base:config",
104        "//absl/base:core_headers",
105        "//absl/base:dynamic_annotations",
106        "//absl/base:malloc_internal",
107        "//absl/base:raw_logging_internal",
108        "//absl/strings",
109    ],
110)
111
112cc_test(
113    name = "symbolize_test",
114    srcs = ["symbolize_test.cc"],
115    copts = ABSL_TEST_COPTS + select({
116        "//absl:msvc_compiler": ["/Z7"],
117        "//absl:clang-cl_compiler": ["/Z7"],
118        "//conditions:default": [],
119    }),
120    linkopts = ABSL_DEFAULT_LINKOPTS + select({
121        "//absl:msvc_compiler": ["/DEBUG"],
122        "//absl:clang-cl_compiler": ["/DEBUG"],
123        "//conditions:default": [],
124    }),
125    deps = [
126        ":stack_consumption",
127        ":symbolize",
128        "//absl/base",
129        "//absl/base:config",
130        "//absl/base:core_headers",
131        "//absl/log",
132        "//absl/log:check",
133        "//absl/memory",
134        "//absl/strings",
135        "@com_google_googletest//:gtest",
136    ],
137)
138
139cc_library(
140    name = "examine_stack",
141    srcs = [
142        "internal/examine_stack.cc",
143    ],
144    hdrs = [
145        "internal/examine_stack.h",
146    ],
147    copts = ABSL_DEFAULT_COPTS,
148    linkopts = ABSL_DEFAULT_LINKOPTS,
149    visibility = ["//absl/log/internal:__pkg__"],
150    deps = [
151        ":stacktrace",
152        ":symbolize",
153        "//absl/base:config",
154        "//absl/base:core_headers",
155        "//absl/base:raw_logging_internal",
156    ],
157)
158
159cc_library(
160    name = "failure_signal_handler",
161    srcs = ["failure_signal_handler.cc"],
162    hdrs = ["failure_signal_handler.h"],
163    copts = ABSL_DEFAULT_COPTS,
164    linkopts = ABSL_DEFAULT_LINKOPTS,
165    deps = [
166        ":examine_stack",
167        ":stacktrace",
168        "//absl/base",
169        "//absl/base:config",
170        "//absl/base:core_headers",
171        "//absl/base:raw_logging_internal",
172    ],
173)
174
175cc_test(
176    name = "failure_signal_handler_test",
177    srcs = ["failure_signal_handler_test.cc"],
178    copts = ABSL_TEST_COPTS,
179    linkopts = select({
180        "//absl:msvc_compiler": [],
181        "//absl:clang-cl_compiler": [],
182        "//absl:wasm": [],
183        "//conditions:default": ["-pthread"],
184    }) + ABSL_DEFAULT_LINKOPTS,
185    deps = [
186        ":failure_signal_handler",
187        ":stacktrace",
188        ":symbolize",
189        "//absl/base:raw_logging_internal",
190        "//absl/log:check",
191        "//absl/strings",
192        "@com_google_googletest//:gtest",
193    ],
194)
195
196cc_library(
197    name = "debugging_internal",
198    srcs = [
199        "internal/address_is_readable.cc",
200        "internal/elf_mem_image.cc",
201        "internal/vdso_support.cc",
202    ],
203    hdrs = [
204        "internal/address_is_readable.h",
205        "internal/elf_mem_image.h",
206        "internal/vdso_support.h",
207    ],
208    copts = ABSL_DEFAULT_COPTS,
209    linkopts = ABSL_DEFAULT_LINKOPTS,
210    visibility = ["//visibility:private"],
211    deps = [
212        "//absl/base:config",
213        "//absl/base:core_headers",
214        "//absl/base:dynamic_annotations",
215        "//absl/base:errno_saver",
216        "//absl/base:raw_logging_internal",
217    ],
218)
219
220cc_library(
221    name = "demangle_internal",
222    srcs = ["internal/demangle.cc"],
223    hdrs = ["internal/demangle.h"],
224    copts = ABSL_DEFAULT_COPTS,
225    linkopts = ABSL_DEFAULT_LINKOPTS,
226    visibility = [
227        "//absl/container:__pkg__",
228        "//absl/debugging:__pkg__",
229    ],
230    deps = [
231        "//absl/base",
232        "//absl/base:config",
233        "//absl/base:core_headers",
234    ],
235)
236
237cc_test(
238    name = "demangle_test",
239    srcs = ["internal/demangle_test.cc"],
240    copts = ABSL_TEST_COPTS,
241    linkopts = ABSL_DEFAULT_LINKOPTS,
242    deps = [
243        ":demangle_internal",
244        ":stack_consumption",
245        "//absl/base:config",
246        "//absl/base:core_headers",
247        "//absl/log",
248        "//absl/memory",
249        "@com_google_googletest//:gtest",
250        "@com_google_googletest//:gtest_main",
251    ],
252)
253
254cc_library(
255    name = "leak_check",
256    srcs = ["leak_check.cc"],
257    hdrs = ["leak_check.h"],
258    copts = ABSL_DEFAULT_COPTS,
259    linkopts = ABSL_DEFAULT_LINKOPTS,
260    deps = [
261        "//absl/base:config",
262        "//absl/base:core_headers",
263    ],
264)
265
266cc_test(
267    name = "leak_check_test",
268    srcs = ["leak_check_test.cc"],
269    copts = ABSL_TEST_COPTS,
270    linkopts = ABSL_DEFAULT_LINKOPTS,
271    tags = ["notsan"],
272    deps = [
273        ":leak_check",
274        "//absl/base:config",
275        "//absl/log",
276        "@com_google_googletest//:gtest",
277        "@com_google_googletest//:gtest_main",
278    ],
279)
280
281# Binary that leaks memory and expects to fail on exit.  This isn't a
282# test that expected to pass on its own; it exists to be called by a
283# script that checks exit status and output.
284# TODO(absl-team): Write a test to run this with a script that
285# verifies that it correctly fails.
286cc_binary(
287    name = "leak_check_fail_test_binary",
288    srcs = ["leak_check_fail_test.cc"],
289    copts = ABSL_TEST_COPTS,
290    linkopts = ABSL_DEFAULT_LINKOPTS,
291    deps = [
292        ":leak_check",
293        "//absl/log",
294        "@com_google_googletest//:gtest",
295        "@com_google_googletest//:gtest_main",
296    ],
297)
298
299cc_library(
300    name = "stack_consumption",
301    testonly = 1,
302    srcs = ["internal/stack_consumption.cc"],
303    hdrs = ["internal/stack_consumption.h"],
304    copts = ABSL_DEFAULT_COPTS,
305    linkopts = ABSL_DEFAULT_LINKOPTS,
306    visibility = ["//visibility:private"],
307    deps = [
308        "//absl/base:config",
309        "//absl/base:core_headers",
310        "//absl/base:raw_logging_internal",
311    ],
312)
313
314cc_test(
315    name = "stack_consumption_test",
316    srcs = ["internal/stack_consumption_test.cc"],
317    copts = ABSL_TEST_COPTS,
318    linkopts = ABSL_DEFAULT_LINKOPTS,
319    tags = ["notsan"],
320    deps = [
321        ":stack_consumption",
322        "//absl/base:core_headers",
323        "//absl/log",
324        "@com_google_googletest//:gtest",
325        "@com_google_googletest//:gtest_main",
326    ],
327)
328
329cc_binary(
330    name = "stacktrace_benchmark",
331    testonly = 1,
332    srcs = ["stacktrace_benchmark.cc"],
333    copts = ABSL_TEST_COPTS,
334    linkopts = ABSL_DEFAULT_LINKOPTS,
335    tags = ["benchmark"],
336    deps = [
337        ":stacktrace",
338        "//absl/base:config",
339        "//absl/base:core_headers",
340        "@com_github_google_benchmark//:benchmark_main",
341    ],
342)
343