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