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