diff --git a/docs/Deps.md b/docs/Deps.md index b4155b07ae..10779a6c76 100644 --- a/docs/Deps.md +++ b/docs/Deps.md @@ -102,7 +102,7 @@ sudo pacman -Syu --needed base-devel boost catch2 cmake enet ffmpeg fmt git glsl Ubuntu, Debian, Mint Linux ```sh -sudo apt-get install autoconf cmake g++ gcc git glslang-tools libasound2t64 libboost-context-dev libglu1-mesa-dev libhidapi-dev libpulse-dev libtool libudev-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxext-dev libxkbcommon-x11-0 mesa-common-dev nasm ninja-build qt6-base-private-dev libmbedtls-dev catch2 libfmt-dev liblz4-dev nlohmann-json3-dev libzstd-dev libssl-dev libavfilter-dev libavcodec-dev libswscale-dev pkg-config zlib1g-dev libva-dev libvdpau-dev qt6-tools-dev libzydis-dev zydis-tools libzycore-dev vulkan-utility-libraries-dev libvulkan-dev spirv-tools spirv-headers libusb-1.0-0-dev libxbyak-dev +sudo apt-get install autoconf cmake g++ gcc git glslang-tools libboost-context-dev libglu1-mesa-dev libhidapi-dev libpulse-dev libtool libudev-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxext-dev libxkbcommon-x11-0 mesa-common-dev nasm ninja-build qt6-base-private-dev libmbedtls-dev catch2 libfmt-dev liblz4-dev nlohmann-json3-dev libzstd-dev libssl-dev libavfilter-dev libavcodec-dev libswscale-dev pkg-config zlib1g-dev libva-dev libvdpau-dev qt6-tools-dev libzydis-dev zydis-tools libzycore-dev libvulkan-dev spirv-tools spirv-headers libusb-1.0-0-dev libxbyak-dev libboost-dev libboost-fiber-dev libbost-context-dev libsdl2-dev libopus-dev libasound2t64 vulkan-utility-libraries-dev ``` * Ubuntu 22.04, Linux Mint 20, or Debian 12 or later is required. diff --git a/src/common/demangle.cpp b/src/common/demangle.cpp index b2c9d126aa..e4d6541a5e 100644 --- a/src/common/demangle.cpp +++ b/src/common/demangle.cpp @@ -1,6 +1,8 @@ // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include +#include #include #include "common/demangle.h" @@ -9,29 +11,22 @@ namespace Common { std::string DemangleSymbol(const std::string& mangled) { - auto is_itanium = [](const std::string& name) -> bool { - // A valid Itanium encoding requires 1-4 leading underscores, followed by 'Z'. - auto pos = name.find_first_not_of('_'); - return pos > 0 && pos <= 4 && pos < name.size() && name[pos] == 'Z'; - }; - - if (mangled.empty()) { - return mangled; - } - - char* demangled = nullptr; - SCOPE_EXIT { - std::free(demangled); - }; - - if (is_itanium(mangled)) { - demangled = llvm::itaniumDemangle(mangled.c_str()); - } - - if (!demangled) { - return mangled; + if (mangled.size() > 0) { + auto const is_itanium = [](std::string_view name) -> bool { + // A valid Itanium encoding requires 1-4 leading underscores, followed by 'Z'. + auto const pos = name.find_first_not_of('_'); + return pos > 0 && pos <= 4 && pos < name.size() && name[pos] == 'Z'; + }; + std::string ret = mangled; + if (is_itanium(mangled)) { + if (char* p = llvm::itaniumDemangle(mangled); p != nullptr) { + ret = std::string{p}; + std::free(p); + } + } + return ret; } - return demangled; + return std::string{}; } } // namespace Common diff --git a/src/dynarmic/src/dynarmic/ir/dense_list.h b/src/dynarmic/src/dynarmic/ir/dense_list.h index 8dad418b47..aeed969650 100644 --- a/src/dynarmic/src/dynarmic/ir/dense_list.h +++ b/src/dynarmic/src/dynarmic/ir/dense_list.h @@ -13,10 +13,10 @@ namespace Dynarmic { using const_pointer = const value_type*; using reference = value_type&; using const_reference = const value_type&; - using iterator = std::deque::iterator; - using const_iterator = std::deque::const_iterator; - using reverse_iterator = std::reverse_iterator; - using const_reverse_iterator = std::reverse_iterator; + using iterator = typename std::deque::iterator; + using const_iterator = typename std::deque::const_iterator; + using reverse_iterator = typename std::reverse_iterator; + using const_reverse_iterator = typename std::reverse_iterator; inline bool empty() const noexcept { return list.empty(); } inline size_type size() const noexcept { return list.size(); } diff --git a/src/dynarmic/src/dynarmic/ir/opt_passes.cpp b/src/dynarmic/src/dynarmic/ir/opt_passes.cpp index 25afde9b5d..42d0f17d3a 100644 --- a/src/dynarmic/src/dynarmic/ir/opt_passes.cpp +++ b/src/dynarmic/src/dynarmic/ir/opt_passes.cpp @@ -86,7 +86,7 @@ static void ConstantMemoryReads(IR::Block& block, A32::UserCallbacks* cb) { } static void FlagsPass(IR::Block& block) { - using Iterator = std::reverse_iterator; + using Iterator = typename std::reverse_iterator; struct FlagInfo { bool set_not_required = false;