xref: /aosp_15_r20/external/webrtc/third_party/abseil-cpp/absl/debugging/BUILD.bazel (revision d9f758449e529ab9291ac668be2861e7a55c2422)
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)
27
28licenses(["notice"])
29
30cc_library(
31    name = "stacktrace",
32    srcs = [
33        "internal/stacktrace_aarch64-inl.inc",
34        "internal/stacktrace_arm-inl.inc",
35        "internal/stacktrace_config.h",
36        "internal/stacktrace_emscripten-inl.inc",
37        "internal/stacktrace_generic-inl.inc",
38        "internal/stacktrace_powerpc-inl.inc",
39        "internal/stacktrace_riscv-inl.inc",
40        "internal/stacktrace_unimplemented-inl.inc",
41        "internal/stacktrace_win32-inl.inc",
42        "internal/stacktrace_x86-inl.inc",
43        "stacktrace.cc",
44    ],
45    hdrs = ["stacktrace.h"],
46    copts = ABSL_DEFAULT_COPTS,
47    linkopts = ABSL_DEFAULT_LINKOPTS,
48    deps = [
49        ":debugging_internal",
50        "//absl/base:config",
51        "//absl/base:core_headers",
52        "//absl/base:raw_logging_internal",
53    ],
54)
55
56cc_library(
57    name = "symbolize",
58    srcs = [
59        "symbolize.cc",
60        "symbolize_darwin.inc",
61        "symbolize_elf.inc",
62        "symbolize_emscripten.inc",
63        "symbolize_unimplemented.inc",
64        "symbolize_win32.inc",
65    ],
66    hdrs = [
67        "internal/symbolize.h",
68        "symbolize.h",
69    ],
70    copts = ABSL_DEFAULT_COPTS,
71    linkopts = ABSL_DEFAULT_LINKOPTS + select({
72        "//absl:msvc_compiler": ["-DEFAULTLIB:dbghelp.lib"],
73        "//absl:clang-cl_compiler": ["-DEFAULTLIB:dbghelp.lib"],
74        "//conditions:default": [],
75    }),
76    deps = [
77        ":debugging_internal",
78        ":demangle_internal",
79        "//absl/base",
80        "//absl/base:config",
81        "//absl/base:core_headers",
82        "//absl/base:dynamic_annotations",
83        "//absl/base:malloc_internal",
84        "//absl/base:raw_logging_internal",
85        "//absl/strings",
86    ],
87)
88
89cc_test(
90    name = "symbolize_test",
91    srcs = ["symbolize_test.cc"],
92    copts = ABSL_TEST_COPTS + select({
93        "//absl:msvc_compiler": ["/Z7"],
94        "//absl:clang-cl_compiler": ["/Z7"],
95        "//conditions:default": [],
96    }),
97    linkopts = ABSL_DEFAULT_LINKOPTS + select({
98        "//absl:msvc_compiler": ["/DEBUG"],
99        "//absl:clang-cl_compiler": ["/DEBUG"],
100        "//conditions:default": [],
101    }),
102    deps = [
103        ":stack_consumption",
104        ":symbolize",
105        "//absl/base",
106        "//absl/base:config",
107        "//absl/base:core_headers",
108        "//absl/base:raw_logging_internal",
109        "//absl/memory",
110        "//absl/strings",
111        "@com_google_googletest//:gtest",
112    ],
113)
114
115cc_library(
116    name = "examine_stack",
117    srcs = [
118        "internal/examine_stack.cc",
119    ],
120    hdrs = [
121        "internal/examine_stack.h",
122    ],
123    copts = ABSL_DEFAULT_COPTS,
124    linkopts = ABSL_DEFAULT_LINKOPTS,
125    visibility = ["//absl/log/internal:__pkg__"],
126    deps = [
127        ":stacktrace",
128        ":symbolize",
129        "//absl/base:config",
130        "//absl/base:core_headers",
131        "//absl/base:raw_logging_internal",
132    ],
133)
134
135cc_library(
136    name = "failure_signal_handler",
137    srcs = ["failure_signal_handler.cc"],
138    hdrs = ["failure_signal_handler.h"],
139    copts = ABSL_DEFAULT_COPTS,
140    linkopts = ABSL_DEFAULT_LINKOPTS,
141    deps = [
142        ":examine_stack",
143        ":stacktrace",
144        "//absl/base",
145        "//absl/base:config",
146        "//absl/base:core_headers",
147        "//absl/base:raw_logging_internal",
148    ],
149)
150
151cc_test(
152    name = "failure_signal_handler_test",
153    srcs = ["failure_signal_handler_test.cc"],
154    copts = ABSL_TEST_COPTS,
155    linkopts = select({
156        "//absl:msvc_compiler": [],
157        "//absl:clang-cl_compiler": [],
158        "//absl:wasm": [],
159        "//conditions:default": ["-pthread"],
160    }) + ABSL_DEFAULT_LINKOPTS,
161    deps = [
162        ":failure_signal_handler",
163        ":stacktrace",
164        ":symbolize",
165        "//absl/base:raw_logging_internal",
166        "//absl/strings",
167        "@com_google_googletest//:gtest",
168    ],
169)
170
171cc_library(
172    name = "debugging_internal",
173    srcs = [
174        "internal/address_is_readable.cc",
175        "internal/elf_mem_image.cc",
176        "internal/vdso_support.cc",
177    ],
178    hdrs = [
179        "internal/address_is_readable.h",
180        "internal/elf_mem_image.h",
181        "internal/vdso_support.h",
182    ],
183    copts = ABSL_DEFAULT_COPTS,
184    linkopts = ABSL_DEFAULT_LINKOPTS,
185    visibility = ["//visibility:private"],
186    deps = [
187        "//absl/base:config",
188        "//absl/base:core_headers",
189        "//absl/base:dynamic_annotations",
190        "//absl/base:errno_saver",
191        "//absl/base:raw_logging_internal",
192    ],
193)
194
195cc_library(
196    name = "demangle_internal",
197    srcs = ["internal/demangle.cc"],
198    hdrs = ["internal/demangle.h"],
199    copts = ABSL_DEFAULT_COPTS,
200    linkopts = ABSL_DEFAULT_LINKOPTS,
201    visibility = ["//visibility:private"],
202    deps = [
203        "//absl/base",
204        "//absl/base:config",
205        "//absl/base:core_headers",
206    ],
207)
208
209cc_test(
210    name = "demangle_test",
211    srcs = ["internal/demangle_test.cc"],
212    copts = ABSL_TEST_COPTS,
213    linkopts = ABSL_DEFAULT_LINKOPTS,
214    deps = [
215        ":demangle_internal",
216        ":stack_consumption",
217        "//absl/base:config",
218        "//absl/base:core_headers",
219        "//absl/base:raw_logging_internal",
220        "//absl/memory",
221        "@com_google_googletest//:gtest_main",
222    ],
223)
224
225cc_library(
226    name = "leak_check",
227    srcs = ["leak_check.cc"],
228    hdrs = ["leak_check.h"],
229    copts = ABSL_DEFAULT_COPTS,
230    linkopts = ABSL_DEFAULT_LINKOPTS,
231    deps = [
232        "//absl/base:config",
233        "//absl/base:core_headers",
234    ],
235)
236
237cc_test(
238    name = "leak_check_test",
239    srcs = ["leak_check_test.cc"],
240    copts = ABSL_TEST_COPTS,
241    linkopts = ABSL_DEFAULT_LINKOPTS,
242    tags = ["notsan"],
243    deps = [
244        ":leak_check",
245        "//absl/base:config",
246        "//absl/base:raw_logging_internal",
247        "@com_google_googletest//:gtest_main",
248    ],
249)
250
251# Binary that leaks memory and expects to fail on exit.  This isn't a
252# test that expected to pass on its own; it exists to be called by a
253# script that checks exit status and output.
254# TODO(absl-team): Write a test to run this with a script that
255# verifies that it correctly fails.
256cc_binary(
257    name = "leak_check_fail_test_binary",
258    srcs = ["leak_check_fail_test.cc"],
259    copts = ABSL_TEST_COPTS,
260    linkopts = ABSL_DEFAULT_LINKOPTS,
261    deps = [
262        ":leak_check",
263        "//absl/base:raw_logging_internal",
264        "@com_google_googletest//:gtest_main",
265    ],
266)
267
268cc_library(
269    name = "stack_consumption",
270    testonly = 1,
271    srcs = ["internal/stack_consumption.cc"],
272    hdrs = ["internal/stack_consumption.h"],
273    copts = ABSL_DEFAULT_COPTS,
274    linkopts = ABSL_DEFAULT_LINKOPTS,
275    visibility = ["//visibility:private"],
276    deps = [
277        "//absl/base:config",
278        "//absl/base:core_headers",
279        "//absl/base:raw_logging_internal",
280    ],
281)
282
283cc_test(
284    name = "stack_consumption_test",
285    srcs = ["internal/stack_consumption_test.cc"],
286    copts = ABSL_TEST_COPTS,
287    linkopts = ABSL_DEFAULT_LINKOPTS,
288    tags = ["notsan"],
289    deps = [
290        ":stack_consumption",
291        "//absl/base:core_headers",
292        "//absl/base:raw_logging_internal",
293        "@com_google_googletest//:gtest_main",
294    ],
295)
296
297cc_binary(
298    name = "stacktrace_benchmark",
299    testonly = 1,
300    srcs = ["stacktrace_benchmark.cc"],
301    copts = ABSL_TEST_COPTS,
302    linkopts = ABSL_DEFAULT_LINKOPTS,
303    tags = ["benchmark"],
304    deps = [
305        ":stacktrace",
306        "//absl/base:config",
307        "//absl/base:core_headers",
308        "@com_github_google_benchmark//:benchmark_main",
309    ],
310)
311