summarylogtreecommitdiffstats
path: root/0001-fix-main-Handle-different-LLVM-version.patch
blob: 4eb9e2f65058d7f89210988dff477ff11cb3f11d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
From 78cb353dc49523f968d7f002ec0357aae8bde787 Mon Sep 17 00:00:00 2001
From: KokaKiwi <kokakiwi+git@kokakiwi.net>
Date: Sun, 31 Dec 2023 13:29:36 +0100
Subject: [PATCH] fix(main): Handle different LLVM version

---
 main/gui/source/crash_handlers.cpp                          | 6 ++++++
 .../include/content/popups/popup_crash_recovered.hpp        | 5 +++++
 2 files changed, 11 insertions(+)

diff --git a/main/gui/source/crash_handlers.cpp b/main/gui/source/crash_handlers.cpp
index 4b013d9e..9dfdebdc 100644
--- a/main/gui/source/crash_handlers.cpp
+++ b/main/gui/source/crash_handlers.cpp
@@ -14,6 +14,8 @@
 #include <nlohmann/json.hpp>
 
 #include <stacktrace.hpp>
+
+#include <llvm/Config/llvm-config.h>
 #include <llvm/Demangle/Demangle.h>
 
 #include <csignal>
@@ -142,7 +144,11 @@ namespace hex::crash {
         try {
             std::rethrow_exception(std::current_exception());
         } catch (std::exception &ex) {
+#if LLVM_VERSION_MAJOR >= 17
             std::string exceptionStr = hex::format("{}()::what() -> {}", llvm::itaniumDemangle(typeid(ex).name()), ex.what());
+#else
+            std::string exceptionStr = hex::format("{}()::what() -> {}", llvm::itaniumDemangle(typeid(ex).name(), nullptr, nullptr, nullptr), ex.what());
+#endif
 
             handleCrash(exceptionStr);
             log::fatal("Program terminated with uncaught exception: {}", exceptionStr);
diff --git a/plugins/builtin/include/content/popups/popup_crash_recovered.hpp b/plugins/builtin/include/content/popups/popup_crash_recovered.hpp
index 962f57a0..7e05935c 100644
--- a/plugins/builtin/include/content/popups/popup_crash_recovered.hpp
+++ b/plugins/builtin/include/content/popups/popup_crash_recovered.hpp
@@ -4,6 +4,7 @@
 
 #include <hex/api/localization_manager.hpp>
 
+#include <llvm/Config/llvm-config.h>
 #include <llvm/Demangle/Demangle.h>
 
 #include <string>
@@ -20,7 +21,11 @@ namespace hex::plugin::builtin {
         void drawContent() override {
             ImGuiExt::TextFormattedWrapped("hex.builtin.popup.crash_recover.message"_lang);
 
+#if LLVM_VERSION_MAJOR >= 17
             ImGuiExt::TextFormattedWrapped(hex::format("Error: {}: {}", llvm::itaniumDemangle(this->m_errorType), this->m_errorMessage));
+#else
+            ImGuiExt::TextFormattedWrapped(hex::format("Error: {}: {}", llvm::itaniumDemangle(this->m_errorType.c_str(), nullptr, nullptr, nullptr), this->m_errorMessage));
+#endif
 
             if (ImGui::Button("hex.ui.common.okay"_lang)) {
                 this->close();
-- 
2.44.0