aboutsummaryrefslogtreecommitdiff
path: root/absl/container/internal/layout.h
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2023-09-26 14:39:04 -0700
committerCopybara-Service <copybara-worker@google.com>2023-09-26 14:39:48 -0700
commitcced061b3e68da386aaadca0d87e03538ce2bc72 (patch)
treee2084a66fd3ea9bf0d6c6c1b283bc41b725cf02a /absl/container/internal/layout.h
parentac364eb9d07ff4d8c7fb8d848b66398559220d04 (diff)
downloadabseil-cced061b3e68da386aaadca0d87e03538ce2bc72.tar.gz
abseil-cced061b3e68da386aaadca0d87e03538ce2bc72.tar.bz2
abseil-cced061b3e68da386aaadca0d87e03538ce2bc72.zip
Add an internal wrapper for `abi::__cxa_demangle()`.
PiperOrigin-RevId: 568652465 Change-Id: I9f72a11cb514eaf694dae589a19dc139891e7af2
Diffstat (limited to 'absl/container/internal/layout.h')
-rw-r--r--absl/container/internal/layout.h25
1 files changed, 4 insertions, 21 deletions
diff --git a/absl/container/internal/layout.h b/absl/container/internal/layout.h
index a59a2430..05de05c9 100644
--- a/absl/container/internal/layout.h
+++ b/absl/container/internal/layout.h
@@ -172,6 +172,7 @@
#include <utility>
#include "absl/base/config.h"
+#include "absl/debugging/internal/demangle.h"
#include "absl/meta/type_traits.h"
#include "absl/strings/str_cat.h"
#include "absl/types/span.h"
@@ -181,14 +182,6 @@
#include <sanitizer/asan_interface.h>
#endif
-#if defined(__GXX_RTTI)
-#define ABSL_INTERNAL_HAS_CXA_DEMANGLE
-#endif
-
-#ifdef ABSL_INTERNAL_HAS_CXA_DEMANGLE
-#include <cxxabi.h>
-#endif
-
namespace absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -294,19 +287,9 @@ constexpr size_t Max(size_t a, size_t b, Ts... rest) {
template <class T>
std::string TypeName() {
std::string out;
- int status = 0;
- char* demangled = nullptr;
-#ifdef ABSL_INTERNAL_HAS_CXA_DEMANGLE
- demangled = abi::__cxa_demangle(typeid(T).name(), nullptr, nullptr, &status);
-#endif
- if (status == 0 && demangled != nullptr) { // Demangling succeeded.
- absl::StrAppend(&out, "<", demangled, ">");
- free(demangled);
- } else {
-#if defined(__GXX_RTTI) || defined(_CPPRTTI)
- absl::StrAppend(&out, "<", typeid(T).name(), ">");
-#endif
- }
+ absl::StrAppend(&out, "<",
+ absl::debugging_internal::DemangleString(typeid(T).name()),
+ ">");
return out;
}