diff options
author | 2015-11-06 16:27:58 -0800 | |
---|---|---|
committer | 2015-11-06 16:27:58 -0800 | |
commit | f41959ccb2d9d4c722fe8fc3351401d53bcf4900 (patch) | |
tree | ef0ca22cb2a5ac4bdec9d080d8e0788a53ed496d /tensorflow/stream_executor/lib/demangle.cc |
TensorFlow: Initial commit of TensorFlow library.
TensorFlow is an open source software library for numerical computation
using data flow graphs.
Base CL: 107276108
Diffstat (limited to 'tensorflow/stream_executor/lib/demangle.cc')
-rw-r--r-- | tensorflow/stream_executor/lib/demangle.cc | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tensorflow/stream_executor/lib/demangle.cc b/tensorflow/stream_executor/lib/demangle.cc new file mode 100644 index 0000000000..6b837b803a --- /dev/null +++ b/tensorflow/stream_executor/lib/demangle.cc @@ -0,0 +1,38 @@ +#include "tensorflow/stream_executor/lib/demangle.h" + +#if (__GNUC__ >= 4 || (__GNUC__ >= 3 && __GNUC_MINOR__ >= 4)) && \ + !defined(__mips__) +# define HAS_CXA_DEMANGLE 1 +#else +# define HAS_CXA_DEMANGLE 0 +#endif + +#include <stdlib.h> +#if HAS_CXA_DEMANGLE +#include <cxxabi.h> +#endif + +namespace perftools { +namespace gputools { +namespace port { + +// The API reference of abi::__cxa_demangle() can be found in +// libstdc++'s manual. +// https://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/a01696.html +string Demangle(const char *mangled) { + string demangled; + int status = 0; + char *result = NULL; +#if HAS_CXA_DEMANGLE + result = abi::__cxa_demangle(mangled, NULL, NULL, &status); +#endif + if (status == 0 && result != NULL) { // Demangling succeeeded. + demangled.append(result); + free(result); + } + return demangled; +} + +} // namespace port +} // namespace gputools +} // namespace perftools |