BUILD.bazel (11719B)
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 17 load( 18 "//absl:copts/configure_copts.bzl", 19 "ABSL_DEFAULT_COPTS", 20 "ABSL_DEFAULT_LINKOPTS", 21 "ABSL_TEST_COPTS", 22 ) 23 24 package( 25 default_visibility = ["//visibility:public"], 26 features = [ 27 "header_modules", 28 "layering_check", 29 "parse_headers", 30 ], 31 ) 32 33 licenses(["notice"]) 34 35 cc_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 62 cc_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:config", 70 "//absl/base:core_headers", 71 "//absl/types:span", 72 "@googletest//:gtest", 73 "@googletest//:gtest_main", 74 ], 75 ) 76 77 cc_library( 78 name = "symbolize", 79 srcs = [ 80 "symbolize.cc", 81 "symbolize_darwin.inc", 82 "symbolize_elf.inc", 83 "symbolize_emscripten.inc", 84 "symbolize_unimplemented.inc", 85 "symbolize_win32.inc", 86 ], 87 hdrs = [ 88 "internal/symbolize.h", 89 "symbolize.h", 90 ], 91 copts = ABSL_DEFAULT_COPTS, 92 linkopts = ABSL_DEFAULT_LINKOPTS + select({ 93 "@rules_cc//cc/compiler:msvc-cl": ["-DEFAULTLIB:dbghelp.lib"], 94 "@rules_cc//cc/compiler:clang-cl": ["-DEFAULTLIB:dbghelp.lib"], 95 "//absl:mingw_compiler": [ 96 "-DEFAULTLIB:dbghelp.lib", 97 "-ldbghelp", 98 ], 99 "//conditions:default": [], 100 }), 101 deps = [ 102 ":debugging_internal", 103 ":demangle_internal", 104 "//absl/base", 105 "//absl/base:config", 106 "//absl/base:core_headers", 107 "//absl/base:dynamic_annotations", 108 "//absl/base:malloc_internal", 109 "//absl/base:raw_logging_internal", 110 "//absl/strings", 111 ], 112 ) 113 114 cc_test( 115 name = "symbolize_test", 116 srcs = ["symbolize_test.cc"], 117 copts = ABSL_TEST_COPTS + select({ 118 "@rules_cc//cc/compiler:msvc-cl": ["/Z7"], 119 "@rules_cc//cc/compiler:clang-cl": ["/Z7"], 120 "//conditions:default": [], 121 }), 122 linkopts = ABSL_DEFAULT_LINKOPTS + select({ 123 "@rules_cc//cc/compiler:msvc-cl": ["/DEBUG"], 124 "@rules_cc//cc/compiler:clang-cl": ["/DEBUG"], 125 "//conditions:default": [], 126 }), 127 deps = [ 128 ":stack_consumption", 129 ":symbolize", 130 "//absl/base", 131 "//absl/base:config", 132 "//absl/base:core_headers", 133 "//absl/log", 134 "//absl/log:check", 135 "//absl/memory", 136 "//absl/strings", 137 "@googletest//:gtest", 138 ], 139 ) 140 141 cc_library( 142 name = "examine_stack", 143 srcs = [ 144 "internal/examine_stack.cc", 145 ], 146 hdrs = [ 147 "internal/examine_stack.h", 148 ], 149 copts = ABSL_DEFAULT_COPTS, 150 linkopts = ABSL_DEFAULT_LINKOPTS, 151 visibility = ["//absl/log/internal:__pkg__"], 152 deps = [ 153 ":stacktrace", 154 ":symbolize", 155 "//absl/base:config", 156 "//absl/base:core_headers", 157 "//absl/base:raw_logging_internal", 158 ], 159 ) 160 161 cc_library( 162 name = "failure_signal_handler", 163 srcs = ["failure_signal_handler.cc"], 164 hdrs = ["failure_signal_handler.h"], 165 copts = ABSL_DEFAULT_COPTS, 166 linkopts = ABSL_DEFAULT_LINKOPTS, 167 deps = [ 168 ":examine_stack", 169 ":stacktrace", 170 "//absl/base", 171 "//absl/base:config", 172 "//absl/base:core_headers", 173 "//absl/base:raw_logging_internal", 174 ], 175 ) 176 177 cc_test( 178 name = "failure_signal_handler_test", 179 srcs = ["failure_signal_handler_test.cc"], 180 copts = ABSL_TEST_COPTS, 181 linkopts = select({ 182 "@rules_cc//cc/compiler:msvc-cl": [], 183 "@rules_cc//cc/compiler:clang-cl": [], 184 "@rules_cc//cc/compiler:emscripten": [], 185 "//conditions:default": ["-pthread"], 186 }) + ABSL_DEFAULT_LINKOPTS, 187 deps = [ 188 ":failure_signal_handler", 189 ":stacktrace", 190 ":symbolize", 191 "//absl/base:raw_logging_internal", 192 "//absl/log:check", 193 "//absl/strings", 194 "@googletest//:gtest", 195 ], 196 ) 197 198 cc_library( 199 name = "debugging_internal", 200 srcs = [ 201 "internal/address_is_readable.cc", 202 "internal/elf_mem_image.cc", 203 "internal/vdso_support.cc", 204 ], 205 hdrs = [ 206 "internal/address_is_readable.h", 207 "internal/addresses.h", 208 "internal/elf_mem_image.h", 209 "internal/vdso_support.h", 210 ], 211 copts = ABSL_DEFAULT_COPTS, 212 linkopts = ABSL_DEFAULT_LINKOPTS, 213 visibility = ["//visibility:private"], 214 deps = [ 215 "//absl/base:config", 216 "//absl/base:core_headers", 217 "//absl/base:dynamic_annotations", 218 "//absl/base:errno_saver", 219 "//absl/base:raw_logging_internal", 220 ], 221 ) 222 223 cc_library( 224 name = "demangle_internal", 225 srcs = ["internal/demangle.cc"], 226 hdrs = ["internal/demangle.h"], 227 copts = ABSL_DEFAULT_COPTS, 228 linkopts = ABSL_DEFAULT_LINKOPTS, 229 visibility = [ 230 "//absl/container:__pkg__", 231 "//absl/debugging:__pkg__", 232 ], 233 deps = [ 234 ":demangle_rust", 235 "//absl/base", 236 "//absl/base:config", 237 "//absl/base:core_headers", 238 "//absl/base:nullability", 239 "//absl/numeric:bits", 240 ], 241 ) 242 243 cc_test( 244 name = "demangle_test", 245 srcs = ["internal/demangle_test.cc"], 246 copts = ABSL_TEST_COPTS, 247 linkopts = ABSL_DEFAULT_LINKOPTS, 248 deps = [ 249 ":demangle_internal", 250 ":stack_consumption", 251 "//absl/base:config", 252 "//absl/base:core_headers", 253 "//absl/log", 254 "//absl/memory", 255 "@googletest//:gtest", 256 "@googletest//:gtest_main", 257 ], 258 ) 259 260 cc_library( 261 name = "bounded_utf8_length_sequence", 262 hdrs = ["internal/bounded_utf8_length_sequence.h"], 263 copts = ABSL_DEFAULT_COPTS, 264 linkopts = ABSL_DEFAULT_LINKOPTS, 265 deps = [ 266 "//absl/base:config", 267 "//absl/numeric:bits", 268 ], 269 ) 270 271 cc_test( 272 name = "bounded_utf8_length_sequence_test", 273 srcs = ["internal/bounded_utf8_length_sequence_test.cc"], 274 copts = ABSL_TEST_COPTS, 275 linkopts = ABSL_DEFAULT_LINKOPTS, 276 deps = [ 277 ":bounded_utf8_length_sequence", 278 "//absl/base:config", 279 "@googletest//:gtest", 280 "@googletest//:gtest_main", 281 ], 282 ) 283 284 cc_library( 285 name = "decode_rust_punycode", 286 srcs = ["internal/decode_rust_punycode.cc"], 287 hdrs = ["internal/decode_rust_punycode.h"], 288 copts = ABSL_DEFAULT_COPTS, 289 linkopts = ABSL_DEFAULT_LINKOPTS, 290 deps = [ 291 ":bounded_utf8_length_sequence", 292 ":utf8_for_code_point", 293 "//absl/base:config", 294 "//absl/base:nullability", 295 ], 296 ) 297 298 cc_test( 299 name = "decode_rust_punycode_test", 300 srcs = ["internal/decode_rust_punycode_test.cc"], 301 copts = ABSL_TEST_COPTS, 302 linkopts = ABSL_DEFAULT_LINKOPTS, 303 deps = [ 304 ":decode_rust_punycode", 305 "//absl/base:config", 306 "@googletest//:gtest", 307 "@googletest//:gtest_main", 308 ], 309 ) 310 311 cc_library( 312 name = "demangle_rust", 313 srcs = ["internal/demangle_rust.cc"], 314 hdrs = ["internal/demangle_rust.h"], 315 copts = ABSL_DEFAULT_COPTS, 316 linkopts = ABSL_DEFAULT_LINKOPTS, 317 deps = [ 318 ":decode_rust_punycode", 319 "//absl/base:config", 320 "//absl/base:core_headers", 321 ], 322 ) 323 324 cc_test( 325 name = "demangle_rust_test", 326 srcs = ["internal/demangle_rust_test.cc"], 327 copts = ABSL_TEST_COPTS, 328 linkopts = ABSL_DEFAULT_LINKOPTS, 329 deps = [ 330 ":demangle_rust", 331 "//absl/base:config", 332 "//absl/base:core_headers", 333 "@googletest//:gtest", 334 "@googletest//:gtest_main", 335 ], 336 ) 337 338 cc_library( 339 name = "utf8_for_code_point", 340 srcs = ["internal/utf8_for_code_point.cc"], 341 hdrs = ["internal/utf8_for_code_point.h"], 342 copts = ABSL_DEFAULT_COPTS, 343 linkopts = ABSL_DEFAULT_LINKOPTS, 344 deps = ["//absl/base:config"], 345 ) 346 347 cc_test( 348 name = "utf8_for_code_point_test", 349 srcs = ["internal/utf8_for_code_point_test.cc"], 350 copts = ABSL_TEST_COPTS, 351 linkopts = ABSL_DEFAULT_LINKOPTS, 352 deps = [ 353 ":utf8_for_code_point", 354 "//absl/base:config", 355 "@googletest//:gtest", 356 "@googletest//:gtest_main", 357 ], 358 ) 359 360 cc_library( 361 name = "leak_check", 362 srcs = ["leak_check.cc"], 363 hdrs = ["leak_check.h"], 364 copts = ABSL_DEFAULT_COPTS, 365 linkopts = ABSL_DEFAULT_LINKOPTS, 366 deps = [ 367 "//absl/base:config", 368 "//absl/base:core_headers", 369 ], 370 ) 371 372 cc_test( 373 name = "leak_check_test", 374 srcs = ["leak_check_test.cc"], 375 copts = ABSL_TEST_COPTS, 376 linkopts = ABSL_DEFAULT_LINKOPTS, 377 tags = ["notsan"], 378 deps = [ 379 ":leak_check", 380 "//absl/base:config", 381 "//absl/log", 382 "@googletest//:gtest", 383 "@googletest//:gtest_main", 384 ], 385 ) 386 387 # Binary that leaks memory and expects to fail on exit. This isn't a 388 # test that expected to pass on its own; it exists to be called by a 389 # script that checks exit status and output. 390 # TODO(absl-team): Write a test to run this with a script that 391 # verifies that it correctly fails. 392 cc_binary( 393 name = "leak_check_fail_test_binary", 394 srcs = ["leak_check_fail_test.cc"], 395 copts = ABSL_TEST_COPTS, 396 linkopts = ABSL_DEFAULT_LINKOPTS, 397 deps = [ 398 ":leak_check", 399 "//absl/log", 400 "@googletest//:gtest", 401 "@googletest//:gtest_main", 402 ], 403 ) 404 405 cc_library( 406 name = "stack_consumption", 407 testonly = 1, 408 srcs = ["internal/stack_consumption.cc"], 409 hdrs = ["internal/stack_consumption.h"], 410 copts = ABSL_DEFAULT_COPTS, 411 linkopts = ABSL_DEFAULT_LINKOPTS, 412 visibility = ["//visibility:private"], 413 deps = [ 414 "//absl/base:config", 415 "//absl/base:core_headers", 416 "//absl/base:raw_logging_internal", 417 ], 418 ) 419 420 cc_test( 421 name = "stack_consumption_test", 422 srcs = ["internal/stack_consumption_test.cc"], 423 copts = ABSL_TEST_COPTS, 424 linkopts = ABSL_DEFAULT_LINKOPTS, 425 tags = ["notsan"], 426 deps = [ 427 ":stack_consumption", 428 "//absl/base:core_headers", 429 "//absl/log", 430 "@googletest//:gtest", 431 "@googletest//:gtest_main", 432 ], 433 ) 434 435 cc_binary( 436 name = "stacktrace_benchmark", 437 testonly = 1, 438 srcs = ["stacktrace_benchmark.cc"], 439 copts = ABSL_TEST_COPTS, 440 linkopts = ABSL_DEFAULT_LINKOPTS, 441 tags = ["benchmark"], 442 deps = [ 443 ":stacktrace", 444 "//absl/base:config", 445 "//absl/base:core_headers", 446 "@google_benchmark//:benchmark_main", 447 ], 448 )