summaryrefslogtreecommitdiff
path: root/absl/base
diff options
context:
space:
mode:
authorGravatar Abseil Team <absl-team@google.com>2023-09-26 14:39:04 -0700
committerGravatar Copybara-Service <copybara-worker@google.com>2023-09-26 14:39:48 -0700
commitcced061b3e68da386aaadca0d87e03538ce2bc72 (patch)
treee2084a66fd3ea9bf0d6c6c1b283bc41b725cf02a /absl/base
parentac364eb9d07ff4d8c7fb8d848b66398559220d04 (diff)
Add an internal wrapper for `abi::__cxa_demangle()`.
PiperOrigin-RevId: 568652465 Change-Id: I9f72a11cb514eaf694dae589a19dc139891e7af2
Diffstat (limited to 'absl/base')
-rw-r--r--absl/base/config.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/absl/base/config.h b/absl/base/config.h
index a8425ba7..52d42f0f 100644
--- a/absl/base/config.h
+++ b/absl/base/config.h
@@ -864,6 +864,19 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
#define ABSL_INTERNAL_HAS_RTTI 1
#endif
+// `ABSL_INTERNAL_HAS_CXA_DEMANGLE` determines whether `abi::__cxa_demangle` is
+// available.
+#ifdef ABSL_INTERNAL_HAS_CXA_DEMANGLE
+#error ABSL_INTERNAL_HAS_CXA_DEMANGLE cannot be directly set
+#elif defined(OS_ANDROID) && (defined(__i386__) || defined(__x86_64__))
+#define ABSL_INTERNAL_HAS_CXA_DEMANGLE 0
+#elif (__GNUC__ >= 4 || (__GNUC__ >= 3 && __GNUC_MINOR__ >= 4)) && \
+ !defined(__mips__)
+#define ABSL_INTERNAL_HAS_CXA_DEMANGLE 1
+#elif defined(__clang__) && !defined(_MSC_VER)
+#define ABSL_INTERNAL_HAS_CXA_DEMANGLE 1
+#endif
+
// ABSL_INTERNAL_HAVE_SSE is used for compile-time detection of SSE support.
// See https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html for an overview of
// which architectures support the various x86 instruction sets.