aboutsummaryrefslogtreecommitdiff
path: root/third_party/abseil-cpp/absl/debugging/leak_check.cc
diff options
context:
space:
mode:
authorAndy Hung <hunga@google.com>2020-10-29 02:09:57 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-10-29 02:09:57 +0000
commit6305a290a0e261dbf61354f298a799297de54360 (patch)
tree35d73359fd09cc16d1fbb857909581bad75b765e /third_party/abseil-cpp/absl/debugging/leak_check.cc
parentbdcf7c15937fa6f88b52f091024bd667d6b2b302 (diff)
parentb02c729712188d3420b78a1bbb1b779544bd4427 (diff)
downloadwebrtc-6305a290a0e261dbf61354f298a799297de54360.tar.gz
Merge "Import abseil-cpp to third_party" am: aa2897cdcb am: 2cc1e455f9 am: 4211622fc5 am: b02c729712
Original change: https://android-review.googlesource.com/c/platform/external/webrtc/+/1477956 Change-Id: I2157494054f0fdd15375163dda6ee668e2b90f0b
Diffstat (limited to 'third_party/abseil-cpp/absl/debugging/leak_check.cc')
-rw-r--r--third_party/abseil-cpp/absl/debugging/leak_check.cc53
1 files changed, 53 insertions, 0 deletions
diff --git a/third_party/abseil-cpp/absl/debugging/leak_check.cc b/third_party/abseil-cpp/absl/debugging/leak_check.cc
new file mode 100644
index 0000000000..ff9049559d
--- /dev/null
+++ b/third_party/abseil-cpp/absl/debugging/leak_check.cc
@@ -0,0 +1,53 @@
+// 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.
+
+// Wrappers around lsan_interface functions.
+// When lsan is not linked in, these functions are not available,
+// therefore Abseil code which depends on these functions is conditioned on the
+// definition of LEAK_SANITIZER.
+#include "absl/debugging/leak_check.h"
+
+#ifndef LEAK_SANITIZER
+
+namespace absl {
+ABSL_NAMESPACE_BEGIN
+bool HaveLeakSanitizer() { return false; }
+void DoIgnoreLeak(const void*) { }
+void RegisterLivePointers(const void*, size_t) { }
+void UnRegisterLivePointers(const void*, size_t) { }
+LeakCheckDisabler::LeakCheckDisabler() { }
+LeakCheckDisabler::~LeakCheckDisabler() { }
+ABSL_NAMESPACE_END
+} // namespace absl
+
+#else
+
+#include <sanitizer/lsan_interface.h>
+
+namespace absl {
+ABSL_NAMESPACE_BEGIN
+bool HaveLeakSanitizer() { return true; }
+void DoIgnoreLeak(const void* ptr) { __lsan_ignore_object(ptr); }
+void RegisterLivePointers(const void* ptr, size_t size) {
+ __lsan_register_root_region(ptr, size);
+}
+void UnRegisterLivePointers(const void* ptr, size_t size) {
+ __lsan_unregister_root_region(ptr, size);
+}
+LeakCheckDisabler::LeakCheckDisabler() { __lsan_disable(); }
+LeakCheckDisabler::~LeakCheckDisabler() { __lsan_enable(); }
+ABSL_NAMESPACE_END
+} // namespace absl
+
+#endif // LEAK_SANITIZER