1/* Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file. */
4
5#include "xray/xray_priv.h"
6
7/* Note name demangling requires linking against libstdc++                 */
8/* If your platform does not support __cxa_demangle, re-compile XRay with: */
9/*   -DXRAY_NO_DEMANGLE                                                    */
10
11#if !defined(XRAY_NO_DEMANGLE)
12extern
13char* __cxa_demangle(const char* __mangled_name, char* __output_buffer,
14                     size_t* __length, int* __status);
15#endif
16
17const char* XRayDemangle(char* demangle, size_t size, const char* symbol) {
18#if !defined(XRAY_NO_DEMANGLE)
19  int stat;
20  __cxa_demangle(symbol, demangle, &size, &stat);
21  if (stat == 0)
22    return demangle;
23#endif
24  return symbol;
25}
26