|
|
|
#
|
|
|
|
# Copyright 2017 The Abseil Authors.
|
|
|
|
#
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# https://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
#
|
|
|
|
|
|
|
|
load(
|
|
|
|
"//absl:copts/configure_copts.bzl",
|
|
|
|
"ABSL_DEFAULT_COPTS",
|
|
|
|
"ABSL_DEFAULT_LINKOPTS",
|
|
|
|
"ABSL_TEST_COPTS",
|
|
|
|
)
|
|
|
|
|
|
|
|
package(
|
|
|
|
default_visibility = ["//visibility:public"],
|
|
|
|
)
|
|
|
|
|
|
|
|
licenses(["notice"])
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "stacktrace",
|
|
|
|
srcs = [
|
|
|
|
"internal/stacktrace_aarch64-inl.inc",
|
|
|
|
"internal/stacktrace_arm-inl.inc",
|
|
|
|
"internal/stacktrace_config.h",
|
|
|
|
"internal/stacktrace_emscripten-inl.inc",
|
|
|
|
"internal/stacktrace_generic-inl.inc",
|
|
|
|
"internal/stacktrace_powerpc-inl.inc",
|
|
|
|
"internal/stacktrace_riscv-inl.inc",
|
|
|
|
"internal/stacktrace_unimplemented-inl.inc",
|
|
|
|
"internal/stacktrace_win32-inl.inc",
|
|
|
|
"internal/stacktrace_x86-inl.inc",
|
|
|
|
"stacktrace.cc",
|
|
|
|
],
|
|
|
|
hdrs = ["stacktrace.h"],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
|
|
deps = [
|
|
|
|
":debugging_internal",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "symbolize",
|
|
|
|
srcs = [
|
|
|
|
"symbolize.cc",
|
|
|
|
"symbolize_darwin.inc",
|
|
|
|
"symbolize_elf.inc",
|
|
|
|
"symbolize_emscripten.inc",
|
|
|
|
"symbolize_unimplemented.inc",
|
|
|
|
"symbolize_win32.inc",
|
|
|
|
],
|
|
|
|
hdrs = [
|
|
|
|
"internal/symbolize.h",
|
|
|
|
"symbolize.h",
|
|
|
|
],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS + select({
|
|
|
|
"//absl:msvc_compiler": ["-DEFAULTLIB:dbghelp.lib"],
|
|
|
|
"//absl:clang-cl_compiler": ["-DEFAULTLIB:dbghelp.lib"],
|
|
|
|
"//conditions:default": [],
|
|
|
|
}),
|
|
|
|
deps = [
|
|
|
|
":debugging_internal",
|
|
|
|
":demangle_internal",
|
|
|
|
"//absl/base",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:dynamic_annotations",
|
|
|
|
"//absl/base:malloc_internal",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/strings",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "symbolize_test",
|
|
|
|
srcs = ["symbolize_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS + select({
|
|
|
|
"//absl:msvc_compiler": ["/Z7"],
|
|
|
|
"//absl:clang-cl_compiler": ["/Z7"],
|
|
|
|
"//conditions:default": [],
|
|
|
|
}),
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS + select({
|
|
|
|
"//absl:msvc_compiler": ["/DEBUG"],
|
|
|
|
"//absl:clang-cl_compiler": ["/DEBUG"],
|
|
|
|
"//conditions:default": [],
|
|
|
|
}),
|
|
|
|
deps = [
|
|
|
|
":stack_consumption",
|
|
|
|
":symbolize",
|
|
|
|
"//absl/base",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/memory",
|
|
|
|
"//absl/strings",
|
|
|
|
"@com_google_googletest//:gtest",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "examine_stack",
|
|
|
|
srcs = [
|
|
|
|
"internal/examine_stack.cc",
|
|
|
|
],
|
|
|
|
hdrs = [
|
|
|
|
"internal/examine_stack.h",
|
|
|
|
],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":stacktrace",
|
|
|
|
":symbolize",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "failure_signal_handler",
|
|
|
|
srcs = ["failure_signal_handler.cc"],
|
|
|
|
hdrs = ["failure_signal_handler.h"],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
|
|
deps = [
|
|
|
|
":examine_stack",
|
|
|
|
":stacktrace",
|
|
|
|
"//absl/base",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:errno_saver",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "failure_signal_handler_test",
|
|
|
|
srcs = ["failure_signal_handler_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
linkopts = select({
|
|
|
|
"//absl:msvc_compiler": [],
|
|
|
|
"//absl:clang-cl_compiler": [],
|
|
|
|
"//absl:wasm": [],
|
|
|
|
"//conditions:default": ["-pthread"],
|
|
|
|
}) + ABSL_DEFAULT_LINKOPTS,
|
|
|
|
deps = [
|
|
|
|
":failure_signal_handler",
|
|
|
|
":stacktrace",
|
|
|
|
":symbolize",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/strings",
|
|
|
|
"@com_google_googletest//:gtest",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "debugging_internal",
|
|
|
|
srcs = [
|
|
|
|
"internal/address_is_readable.cc",
|
|
|
|
"internal/elf_mem_image.cc",
|
|
|
|
"internal/vdso_support.cc",
|
|
|
|
],
|
|
|
|
hdrs = [
|
|
|
|
"internal/address_is_readable.h",
|
|
|
|
"internal/elf_mem_image.h",
|
|
|
|
"internal/vdso_support.h",
|
|
|
|
],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:dynamic_annotations",
|
|
|
|
"//absl/base:errno_saver",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "demangle_internal",
|
|
|
|
srcs = ["internal/demangle.cc"],
|
|
|
|
hdrs = ["internal/demangle.h"],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
"//absl/base",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "demangle_test",
|
|
|
|
srcs = ["internal/demangle_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
|
|
deps = [
|
|
|
|
":demangle_internal",
|
|
|
|
":stack_consumption",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/memory",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "leak_check",
|
|
|
|
srcs = ["leak_check.cc"],
|
|
|
|
hdrs = ["leak_check.h"],
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
|
|
deps = [
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
# Adding a dependency to leak_check_disable will disable
|
|
|
|
# sanitizer leak checking (asan/lsan) in a test without
|
|
|
|
# the need to mess around with build features.
|
|
|
|
cc_library(
|
|
|
|
name = "leak_check_disable",
|
|
|
|
srcs = ["leak_check_disable.cc"],
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
|
|
linkstatic = 1,
|
|
|
|
deps = ["//absl/base:config"],
|
|
|
|
alwayslink = 1,
|
|
|
|
)
|
|
|
|
|
|
|
|
# These targets exists for use in tests only, explicitly configuring the
|
|
|
|
# LEAK_SANITIZER macro. It must be linked with -fsanitize=leak for lsan.
|
|
|
|
ABSL_LSAN_LINKOPTS = select({
|
Export of internal Abseil changes
--
0e3e8be75b3ab243991c9b28a27623d86e4511e6 by Abseil Team <absl-team@google.com>:
Add constructor overloads with signature (Mutex*, const Condition&) to MutexLock, ReaderMutexLock, WriterMutexLock, ReleasableMutexLock, MaybeMutexLock.
These overloads call Mutex::LockWhen, Mutex::ReaderLockWhen, Mutex::WriterLockWhen.
Using the guard classes with these new constructors replaces both manual LockWhen/Unlock sequences and the less-efficient, but popular current pattern of "absl::MutexLock lock(&mu); mu.Await(cond);".
PiperOrigin-RevId: 339480213
--
ff999bc08360f5bd95557147c97b0e7b200fe3a8 by Jorg Brown <jorg@google.com>:
ConvertibleToStringView wastes a lot of cycles initializing members just to reset them immediately after. Only initialize the string storage when needed. This makes StrSplit() 0-30% faster depending on the use case.
PiperOrigin-RevId: 339479046
--
0a773bfb8bc141433a41388731357001fdb34881 by Derek Mauro <dmauro@google.com>:
Remove the compiler upgrade fiasco inducing -Weverything -Werror.
Switch to a curated set of warnings that may be expanded in the future.
PiperOrigin-RevId: 339472677
--
eab54e3e11b126283d33f64c914b200038d215a4 by Abseil Team <absl-team@google.com>:
Change execute permission to match presence of the shebang
remove execute permission for cmake_common.sh
add execute permission for conanfile.py
PiperOrigin-RevId: 339453550
--
7f9726fb605ed20f17f3e221dbce0df03d6904c6 by Abseil Team <absl-team@google.com>:
Internal change
PiperOrigin-RevId: 339385761
--
f3210dbee3e8a719cf31706963721722203f90e0 by Derek Mauro <dmauro@google.com>:
Switch clang compiler detection to use to the Bazel supported mechanism
When Abseil launched, we relied on the compiler string "llvm",
which we manually set when we used the automatic crosstool generation
by using the environment variable BAZEL_COMPILER. Today, Bazel detects
clang and automatically sets the compiler string to "clang".
Fixes #732
PiperOrigin-RevId: 339360688
--
413211f59e5e671bf5774efa63ab4df185c74248 by Abseil Team <absl-team@google.com>:
Minor comment clarifications and cosmetic tweaks.
PiperOrigin-RevId: 339344301
GitOrigin-RevId: 0e3e8be75b3ab243991c9b28a27623d86e4511e6
Change-Id: Ia5b7224cd3d274c79ec7f5514fef63014f458f0f
4 years ago
|
|
|
"//absl:clang_compiler": ["-fsanitize=leak"],
|
|
|
|
"//conditions:default": [],
|
|
|
|
})
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "leak_check_api_enabled_for_testing",
|
|
|
|
testonly = 1,
|
|
|
|
srcs = ["leak_check.cc"],
|
|
|
|
hdrs = ["leak_check.h"],
|
|
|
|
copts = select({
|
Export of internal Abseil changes
--
0e3e8be75b3ab243991c9b28a27623d86e4511e6 by Abseil Team <absl-team@google.com>:
Add constructor overloads with signature (Mutex*, const Condition&) to MutexLock, ReaderMutexLock, WriterMutexLock, ReleasableMutexLock, MaybeMutexLock.
These overloads call Mutex::LockWhen, Mutex::ReaderLockWhen, Mutex::WriterLockWhen.
Using the guard classes with these new constructors replaces both manual LockWhen/Unlock sequences and the less-efficient, but popular current pattern of "absl::MutexLock lock(&mu); mu.Await(cond);".
PiperOrigin-RevId: 339480213
--
ff999bc08360f5bd95557147c97b0e7b200fe3a8 by Jorg Brown <jorg@google.com>:
ConvertibleToStringView wastes a lot of cycles initializing members just to reset them immediately after. Only initialize the string storage when needed. This makes StrSplit() 0-30% faster depending on the use case.
PiperOrigin-RevId: 339479046
--
0a773bfb8bc141433a41388731357001fdb34881 by Derek Mauro <dmauro@google.com>:
Remove the compiler upgrade fiasco inducing -Weverything -Werror.
Switch to a curated set of warnings that may be expanded in the future.
PiperOrigin-RevId: 339472677
--
eab54e3e11b126283d33f64c914b200038d215a4 by Abseil Team <absl-team@google.com>:
Change execute permission to match presence of the shebang
remove execute permission for cmake_common.sh
add execute permission for conanfile.py
PiperOrigin-RevId: 339453550
--
7f9726fb605ed20f17f3e221dbce0df03d6904c6 by Abseil Team <absl-team@google.com>:
Internal change
PiperOrigin-RevId: 339385761
--
f3210dbee3e8a719cf31706963721722203f90e0 by Derek Mauro <dmauro@google.com>:
Switch clang compiler detection to use to the Bazel supported mechanism
When Abseil launched, we relied on the compiler string "llvm",
which we manually set when we used the automatic crosstool generation
by using the environment variable BAZEL_COMPILER. Today, Bazel detects
clang and automatically sets the compiler string to "clang".
Fixes #732
PiperOrigin-RevId: 339360688
--
413211f59e5e671bf5774efa63ab4df185c74248 by Abseil Team <absl-team@google.com>:
Minor comment clarifications and cosmetic tweaks.
PiperOrigin-RevId: 339344301
GitOrigin-RevId: 0e3e8be75b3ab243991c9b28a27623d86e4511e6
Change-Id: Ia5b7224cd3d274c79ec7f5514fef63014f458f0f
4 years ago
|
|
|
"//absl:clang_compiler": ["-DLEAK_SANITIZER"],
|
|
|
|
"//conditions:default": [],
|
|
|
|
}),
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "leak_check_api_disabled_for_testing",
|
|
|
|
testonly = 1,
|
|
|
|
srcs = ["leak_check.cc"],
|
|
|
|
hdrs = ["leak_check.h"],
|
|
|
|
copts = ["-ULEAK_SANITIZER"],
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "leak_check_test",
|
|
|
|
srcs = ["leak_check_test.cc"],
|
|
|
|
copts = select({
|
Export of internal Abseil changes
--
0e3e8be75b3ab243991c9b28a27623d86e4511e6 by Abseil Team <absl-team@google.com>:
Add constructor overloads with signature (Mutex*, const Condition&) to MutexLock, ReaderMutexLock, WriterMutexLock, ReleasableMutexLock, MaybeMutexLock.
These overloads call Mutex::LockWhen, Mutex::ReaderLockWhen, Mutex::WriterLockWhen.
Using the guard classes with these new constructors replaces both manual LockWhen/Unlock sequences and the less-efficient, but popular current pattern of "absl::MutexLock lock(&mu); mu.Await(cond);".
PiperOrigin-RevId: 339480213
--
ff999bc08360f5bd95557147c97b0e7b200fe3a8 by Jorg Brown <jorg@google.com>:
ConvertibleToStringView wastes a lot of cycles initializing members just to reset them immediately after. Only initialize the string storage when needed. This makes StrSplit() 0-30% faster depending on the use case.
PiperOrigin-RevId: 339479046
--
0a773bfb8bc141433a41388731357001fdb34881 by Derek Mauro <dmauro@google.com>:
Remove the compiler upgrade fiasco inducing -Weverything -Werror.
Switch to a curated set of warnings that may be expanded in the future.
PiperOrigin-RevId: 339472677
--
eab54e3e11b126283d33f64c914b200038d215a4 by Abseil Team <absl-team@google.com>:
Change execute permission to match presence of the shebang
remove execute permission for cmake_common.sh
add execute permission for conanfile.py
PiperOrigin-RevId: 339453550
--
7f9726fb605ed20f17f3e221dbce0df03d6904c6 by Abseil Team <absl-team@google.com>:
Internal change
PiperOrigin-RevId: 339385761
--
f3210dbee3e8a719cf31706963721722203f90e0 by Derek Mauro <dmauro@google.com>:
Switch clang compiler detection to use to the Bazel supported mechanism
When Abseil launched, we relied on the compiler string "llvm",
which we manually set when we used the automatic crosstool generation
by using the environment variable BAZEL_COMPILER. Today, Bazel detects
clang and automatically sets the compiler string to "clang".
Fixes #732
PiperOrigin-RevId: 339360688
--
413211f59e5e671bf5774efa63ab4df185c74248 by Abseil Team <absl-team@google.com>:
Minor comment clarifications and cosmetic tweaks.
PiperOrigin-RevId: 339344301
GitOrigin-RevId: 0e3e8be75b3ab243991c9b28a27623d86e4511e6
Change-Id: Ia5b7224cd3d274c79ec7f5514fef63014f458f0f
4 years ago
|
|
|
"//absl:clang_compiler": ["-DABSL_EXPECT_LEAK_SANITIZER"],
|
|
|
|
"//conditions:default": [],
|
|
|
|
}),
|
|
|
|
linkopts = ABSL_LSAN_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
|
|
|
|
tags = ["notsan"],
|
|
|
|
deps = [
|
|
|
|
":leak_check_api_enabled_for_testing",
|
|
|
|
"//absl/base",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "leak_check_no_lsan_test",
|
|
|
|
srcs = ["leak_check_test.cc"],
|
|
|
|
copts = ["-UABSL_EXPECT_LEAK_SANITIZER"],
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
|
|
tags = ["noasan"],
|
|
|
|
deps = [
|
|
|
|
":leak_check_api_disabled_for_testing",
|
|
|
|
"//absl/base", # for raw_logging
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
# Test that leak checking is skipped when lsan is enabled but
|
|
|
|
# ":leak_check_disable" is linked in.
|
|
|
|
#
|
|
|
|
# This test should fail in the absence of a dependency on ":leak_check_disable"
|
|
|
|
cc_test(
|
|
|
|
name = "disabled_leak_check_test",
|
|
|
|
srcs = ["leak_check_fail_test.cc"],
|
|
|
|
linkopts = ABSL_LSAN_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
|
|
|
|
tags = ["notsan"],
|
|
|
|
deps = [
|
|
|
|
":leak_check_api_enabled_for_testing",
|
|
|
|
":leak_check_disable",
|
|
|
|
"//absl/base",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "stack_consumption",
|
|
|
|
testonly = 1,
|
|
|
|
srcs = ["internal/stack_consumption.cc"],
|
|
|
|
hdrs = ["internal/stack_consumption.h"],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "stack_consumption_test",
|
|
|
|
srcs = ["internal/stack_consumption_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
|
|
tags = ["notsan"],
|
|
|
|
deps = [
|
|
|
|
":stack_consumption",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|