xref: /aosp_15_r20/external/abseil-cpp/absl/debugging/BUILD.bazel (revision 9356374a3709195abf420251b3e825997ff56c0f)
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        ":demangle_rust",
232        "//absl/base",
233        "//absl/base:config",
234        "//absl/base:core_headers",
235        "//absl/base:nullability",
236        "//absl/numeric:bits",
237    ],
238)
239
240cc_test(
241    name = "demangle_test",
242    srcs = ["internal/demangle_test.cc"],
243    copts = ABSL_TEST_COPTS,
244    linkopts = ABSL_DEFAULT_LINKOPTS,
245    deps = [
246        ":demangle_internal",
247        ":stack_consumption",
248        "//absl/base:config",
249        "//absl/base:core_headers",
250        "//absl/log",
251        "//absl/memory",
252        "@com_google_googletest//:gtest",
253        "@com_google_googletest//:gtest_main",
254    ],
255)
256
257cc_library(
258    name = "bounded_utf8_length_sequence",
259    hdrs = ["internal/bounded_utf8_length_sequence.h"],
260    copts = ABSL_DEFAULT_COPTS,
261    linkopts = ABSL_DEFAULT_LINKOPTS,
262    deps = [
263        "//absl/base:config",
264        "//absl/numeric:bits",
265    ],
266)
267
268cc_test(
269    name = "bounded_utf8_length_sequence_test",
270    srcs = ["internal/bounded_utf8_length_sequence_test.cc"],
271    copts = ABSL_TEST_COPTS,
272    linkopts = ABSL_DEFAULT_LINKOPTS,
273    deps = [
274        ":bounded_utf8_length_sequence",
275        "//absl/base:config",
276        "@com_google_googletest//:gtest",
277        "@com_google_googletest//:gtest_main",
278    ],
279)
280
281cc_library(
282    name = "decode_rust_punycode",
283    srcs = ["internal/decode_rust_punycode.cc"],
284    hdrs = ["internal/decode_rust_punycode.h"],
285    copts = ABSL_DEFAULT_COPTS,
286    linkopts = ABSL_DEFAULT_LINKOPTS,
287    deps = [
288        ":bounded_utf8_length_sequence",
289        ":utf8_for_code_point",
290        "//absl/base:config",
291        "//absl/base:nullability",
292    ],
293)
294
295cc_test(
296    name = "decode_rust_punycode_test",
297    srcs = ["internal/decode_rust_punycode_test.cc"],
298    copts = ABSL_TEST_COPTS,
299    linkopts = ABSL_DEFAULT_LINKOPTS,
300    deps = [
301        ":decode_rust_punycode",
302        "//absl/base:config",
303        "@com_google_googletest//:gtest",
304        "@com_google_googletest//:gtest_main",
305    ],
306)
307
308cc_library(
309    name = "demangle_rust",
310    srcs = ["internal/demangle_rust.cc"],
311    hdrs = ["internal/demangle_rust.h"],
312    copts = ABSL_DEFAULT_COPTS,
313    linkopts = ABSL_DEFAULT_LINKOPTS,
314    deps = [
315        ":decode_rust_punycode",
316        "//absl/base:config",
317        "//absl/base:core_headers",
318    ],
319)
320
321cc_test(
322    name = "demangle_rust_test",
323    srcs = ["internal/demangle_rust_test.cc"],
324    copts = ABSL_TEST_COPTS,
325    linkopts = ABSL_DEFAULT_LINKOPTS,
326    deps = [
327        ":demangle_rust",
328        "//absl/base:config",
329        "//absl/base:core_headers",
330        "@com_google_googletest//:gtest",
331        "@com_google_googletest//:gtest_main",
332    ],
333)
334
335cc_library(
336    name = "utf8_for_code_point",
337    srcs = ["internal/utf8_for_code_point.cc"],
338    hdrs = ["internal/utf8_for_code_point.h"],
339    copts = ABSL_DEFAULT_COPTS,
340    linkopts = ABSL_DEFAULT_LINKOPTS,
341    deps = ["//absl/base:config"],
342)
343
344cc_test(
345    name = "utf8_for_code_point_test",
346    srcs = ["internal/utf8_for_code_point_test.cc"],
347    copts = ABSL_TEST_COPTS,
348    linkopts = ABSL_DEFAULT_LINKOPTS,
349    deps = [
350        ":utf8_for_code_point",
351        "//absl/base:config",
352        "@com_google_googletest//:gtest",
353        "@com_google_googletest//:gtest_main",
354    ],
355)
356
357cc_library(
358    name = "leak_check",
359    srcs = ["leak_check.cc"],
360    hdrs = ["leak_check.h"],
361    copts = ABSL_DEFAULT_COPTS,
362    linkopts = ABSL_DEFAULT_LINKOPTS,
363    deps = [
364        "//absl/base:config",
365        "//absl/base:core_headers",
366    ],
367)
368
369cc_test(
370    name = "leak_check_test",
371    srcs = ["leak_check_test.cc"],
372    copts = ABSL_TEST_COPTS,
373    linkopts = ABSL_DEFAULT_LINKOPTS,
374    tags = ["notsan"],
375    deps = [
376        ":leak_check",
377        "//absl/base:config",
378        "//absl/log",
379        "@com_google_googletest//:gtest",
380        "@com_google_googletest//:gtest_main",
381    ],
382)
383
384# Binary that leaks memory and expects to fail on exit.  This isn't a
385# test that expected to pass on its own; it exists to be called by a
386# script that checks exit status and output.
387# TODO(absl-team): Write a test to run this with a script that
388# verifies that it correctly fails.
389cc_binary(
390    name = "leak_check_fail_test_binary",
391    srcs = ["leak_check_fail_test.cc"],
392    copts = ABSL_TEST_COPTS,
393    linkopts = ABSL_DEFAULT_LINKOPTS,
394    deps = [
395        ":leak_check",
396        "//absl/log",
397        "@com_google_googletest//:gtest",
398        "@com_google_googletest//:gtest_main",
399    ],
400)
401
402cc_library(
403    name = "stack_consumption",
404    testonly = 1,
405    srcs = ["internal/stack_consumption.cc"],
406    hdrs = ["internal/stack_consumption.h"],
407    copts = ABSL_DEFAULT_COPTS,
408    linkopts = ABSL_DEFAULT_LINKOPTS,
409    visibility = ["//visibility:private"],
410    deps = [
411        "//absl/base:config",
412        "//absl/base:core_headers",
413        "//absl/base:raw_logging_internal",
414    ],
415)
416
417cc_test(
418    name = "stack_consumption_test",
419    srcs = ["internal/stack_consumption_test.cc"],
420    copts = ABSL_TEST_COPTS,
421    linkopts = ABSL_DEFAULT_LINKOPTS,
422    tags = ["notsan"],
423    deps = [
424        ":stack_consumption",
425        "//absl/base:core_headers",
426        "//absl/log",
427        "@com_google_googletest//:gtest",
428        "@com_google_googletest//:gtest_main",
429    ],
430)
431
432cc_binary(
433    name = "stacktrace_benchmark",
434    testonly = 1,
435    srcs = ["stacktrace_benchmark.cc"],
436    copts = ABSL_TEST_COPTS,
437    linkopts = ABSL_DEFAULT_LINKOPTS,
438    tags = ["benchmark"],
439    deps = [
440        ":stacktrace",
441        "//absl/base:config",
442        "//absl/base:core_headers",
443        "@com_github_google_benchmark//:benchmark_main",
444    ],
445)
446