Commit 56c7e207 authored by Peter Griess's avatar Peter Griess

Detect availability of cplus_demangle_v3_callback()

Summary:
- Add autoconf check for cplus_demangle_v3_callback() in libiberty and
avoid is usage when not available. Clang/libc++ on Mac OS X doesn't
support this.

Test Plan:
- fbconfig -r folly && fbmake runtests
- ./configure && make check on Mac OS X

Reviewed By: tudorb@fb.com

FB internal diff: D1108543
parent a617a905
......@@ -24,11 +24,8 @@
#include <iterator>
#include <glog/logging.h>
#undef FOLLY_DEMANGLE
#if defined(__GNUG__) && __GNUG__ >= 4
#if FOLLY_HAVE_CPLUS_DEMANGLE_V3_CALLBACK
# include <cxxabi.h>
# define FOLLY_DEMANGLE 1
// From libiberty
//
......@@ -310,7 +307,7 @@ size_t my_strlcpy(char* dest, const char* src, size_t size) {
} // namespace
#ifdef FOLLY_DEMANGLE
#if FOLLY_HAVE_CPLUS_DEMANGLE_V3_CALLBACK
fbstring demangle(const char* name) {
int status;
......@@ -376,7 +373,6 @@ size_t demangle(const char* name, char* out, size_t outSize) {
}
#endif
#undef FOLLY_DEMANGLE
namespace detail {
......
......@@ -141,6 +141,12 @@ AC_LINK_IFELSE(
AC_DEFINE([HAVE_WEAK_SYMBOLS], [1],
[Define to 1 if the linker supports weak symbols.])])
AC_SEARCH_LIBS([cplus_demangle_v3_callback], [iberty])
if test "$ac_cv_search_cplus_demangle_v3_callback" != "no" ; then
AC_DEFINE([HAVE_CPLUS_DEMANGLE_V3_CALLBACK], [1],
[Define to 1 if we have cplus_demangle_v3_callback.])
fi
# Check for clock_gettime(2). This is not in an AC_CHECK_FUNCS() because we
# want to link with librt if necessary.
AC_SEARCH_LIBS([clock_gettime], [rt],
......
......@@ -463,6 +463,7 @@ struct ThisIsAVeryLongStructureName {
};
} // namespace folly_test
#if FOLLY_HAVE_CPLUS_DEMANGLE_V3_CALLBACK
TEST(System, demangle) {
char expected[] = "folly_test::ThisIsAVeryLongStructureName";
EXPECT_STREQ(
......@@ -482,6 +483,7 @@ TEST(System, demangle) {
EXPECT_STREQ("folly_test", buf);
}
}
#endif
namespace {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment