From 8f8c0b69dc4d56a0bc29bf8a0e59921334a808a8 Mon Sep 17 00:00:00 2001 From: Liam Date: Sat, 25 Jun 2022 12:54:24 -0400 Subject: core/arm: better support for backtrace generation --- src/core/arm/arm_interface.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/core/arm/arm_interface.cpp') diff --git a/src/core/arm/arm_interface.cpp b/src/core/arm/arm_interface.cpp index 6425e131f..6c9c9d96d 100644 --- a/src/core/arm/arm_interface.cpp +++ b/src/core/arm/arm_interface.cpp @@ -1,6 +1,10 @@ // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#ifndef _MSC_VER +#include +#endif + #include #include #include "common/bit_field.h" @@ -68,8 +72,19 @@ void ARM_Interface::SymbolicateBacktrace(Core::System& system, std::vectorsecond, entry.offset); if (symbol.has_value()) { +#ifdef _MSC_VER // TODO(DarkLordZach): Add demangling of symbol names. entry.name = *symbol; +#else + int status{-1}; + char* demangled{abi::__cxa_demangle(symbol->c_str(), nullptr, nullptr, &status)}; + if (status == 0 && demangled != nullptr) { + entry.name = demangled; + std::free(demangled); + } else { + entry.name = *symbol; + } +#endif } } } -- cgit v1.2.3