From 291ba02693e4a0dcda1fd83c266758d4e2a6b0ba Mon Sep 17 00:00:00 2001 From: dm4 Date: Thu, 27 Apr 2023 06:09:18 +0000 Subject: [PATCH 01/12] Resolves: 2176824 - rebuild Signed-off-by: dm4 From 25da2d77291fa24a5347ff9452df385c42b22752 Mon Sep 17 00:00:00 2001 From: dm4 Date: Thu, 27 Apr 2023 14:47:00 +0000 Subject: [PATCH 02/12] Rebuild 0.12.0 From ae2836370476024ec2862dc250e9f3a24b7bbeb0 Mon Sep 17 00:00:00 2001 From: dm4 Date: Mon, 10 Jul 2023 07:37:45 +0000 Subject: [PATCH 03/12] Update release and changelog Signed-off-by: dm4 --- wasmedge.spec | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/wasmedge.spec b/wasmedge.spec index 7ec4fbd..24e590b 100644 --- a/wasmedge.spec +++ b/wasmedge.spec @@ -5,7 +5,7 @@ Name: wasmedge Version: %{version} -Release: %autorelease +Release: 1%{?dist} Summary: High performance WebAssembly Virtual Machine # The entire source code is ASL 2.0 except LICENSE.spdx which is CC0 License: ASL 2.0 and CC0 @@ -105,4 +105,5 @@ cd .. %{_libdir}/lib%{name}.so %changelog -%autochangelog +* Mon Jul 10 2023 dm4 - 0.13.1 +- Release 0.13.1 From 123cb5329345cdf4bfc7361220464ab5265c19c2 Mon Sep 17 00:00:00 2001 From: dm4 Date: Fri, 21 Jul 2023 09:25:36 +0000 Subject: [PATCH 04/12] Update changelog Signed-off-by: dm4 --- wasmedge.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wasmedge.spec b/wasmedge.spec index 7763a74..c3b3999 100644 --- a/wasmedge.spec +++ b/wasmedge.spec @@ -105,5 +105,7 @@ cd .. %{_libdir}/lib%{name}.so %changelog +* Fri Jul 21 2023 dm4 - 0.13.2 +- Release 0.13.2 * Mon Jul 10 2023 dm4 - 0.13.1 - Release 0.13.1 From 3dada955a50391ab45dfe27853ef473ad0b05dda Mon Sep 17 00:00:00 2001 From: dm4 Date: Mon, 2 Oct 2023 06:33:02 +0000 Subject: [PATCH 05/12] Use llvm instead of llvm16 for epel9 Signed-off-by: dm4 --- wasmedge.spec | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/wasmedge.spec b/wasmedge.spec index 62d3b4f..788ed74 100644 --- a/wasmedge.spec +++ b/wasmedge.spec @@ -15,12 +15,12 @@ Patch0: wasmedge-0.13.4-ggml.patch BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: git -BuildRequires: lld16-devel -BuildRequires: llvm16-devel +BuildRequires: lld-devel +BuildRequires: llvm-devel BuildRequires: ninja-build BuildRequires: spdlog-devel -Requires: lld16-libs -Requires: llvm16 +Requires: lld +Requires: llvm Requires: spdlog # Currently wasmedge could only be built on specific arches ExclusiveArch: x86_64 aarch64 @@ -59,11 +59,11 @@ This package contains necessary header files for %{reponame} development. [ -f VERSION ] || echo -n %{version} > VERSION %build -%cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=OFF -DWASMEDGE_BUILD_TESTS=OFF -DLLVM_DIR=/usr/lib64/llvm16/lib/cmake/llvm +%cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=OFF -DWASMEDGE_BUILD_TESTS=OFF %cmake_build mkdir rt cd rt -%cmake -S .. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=OFF -DWASMEDGE_BUILD_TESTS=OFF -DWASMEDGE_BUILD_AOT_RUNTIME=OFF -DLLVM_DIR=/usr/lib64/llvm16/lib/cmake/llvm +%cmake -S .. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=OFF -DWASMEDGE_BUILD_TESTS=OFF -DWASMEDGE_BUILD_AOT_RUNTIME=OFF %cmake_build %install From 37caa1eb0a8701d355ea30d7925055a2e75bc1a4 Mon Sep 17 00:00:00 2001 From: dm4 Date: Tue, 14 Nov 2023 10:18:36 +0000 Subject: [PATCH 06/12] Update changelog Signed-off-by: dm4 --- wasmedge.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wasmedge.spec b/wasmedge.spec index 4635e6c..d415fbf 100644 --- a/wasmedge.spec +++ b/wasmedge.spec @@ -104,6 +104,8 @@ cd .. %{_libdir}/lib%{name}.so %changelog +* Tue Nov 14 2023 dm4 - 0.13.5 +- Release 0.13.5 * Fri Jul 21 2023 dm4 - 0.13.2 - Release 0.13.2 * Mon Jul 10 2023 dm4 - 0.13.1 From a7ab1b1a39154917b4015b408db7b86a6aaeb215 Mon Sep 17 00:00:00 2001 From: dm4 Date: Thu, 30 May 2024 12:53:59 +0000 Subject: [PATCH 07/12] Update changelog Signed-off-by: dm4 --- wasmedge.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wasmedge.spec b/wasmedge.spec index c1ea903..1047a15 100644 --- a/wasmedge.spec +++ b/wasmedge.spec @@ -104,6 +104,8 @@ cd .. %{_libdir}/lib%{name}.so %changelog +* Thu May 30 2024 dm4 - 0.14.0 +- Release 0.14.0 * Tue Nov 14 2023 dm4 - 0.13.5 - Release 0.13.5 * Fri Jul 21 2023 dm4 - 0.13.2 From 3154e026f6c04fa178ba113142eeb960f0261090 Mon Sep 17 00:00:00 2001 From: Carl George Date: Tue, 26 Nov 2024 17:05:19 -0600 Subject: [PATCH 08/12] Rebuilt for LLVM 18 --- wasmedge.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wasmedge.spec b/wasmedge.spec index 1047a15..98088ab 100644 --- a/wasmedge.spec +++ b/wasmedge.spec @@ -5,7 +5,7 @@ Name: wasmedge Version: %{version} -Release: 1%{?dist} +Release: 2%{?dist} Summary: High performance WebAssembly Virtual Machine # The entire source code is ASL 2.0 except LICENSE.spdx which is CC0 License: ASL 2.0 and CC0 @@ -104,6 +104,9 @@ cd .. %{_libdir}/lib%{name}.so %changelog +* Tue Nov 26 2024 Carl George - 0.14.0-2 +- Rebuilt for LLVM 18 + * Thu May 30 2024 dm4 - 0.14.0 - Release 0.14.0 * Tue Nov 14 2023 dm4 - 0.13.5 From 61b62f9e70ec510edc2a63f4e8d621c7a45269e1 Mon Sep 17 00:00:00 2001 From: Carl George Date: Fri, 18 Jul 2025 01:36:48 -0500 Subject: [PATCH 09/12] Rebuild for LLVM 19 In order to build wasmedge against LLVM 19 (now the default in RHEL 9), we must add a patch from upstream to remove some unused and deprecated functions. Resolves: rhbz#2381863 --- 0001-LLVM-Support-LLVM-19-3809.patch | 33 ++++++++++++++++++++++++++++ wasmedge.spec | 10 +++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 0001-LLVM-Support-LLVM-19-3809.patch diff --git a/0001-LLVM-Support-LLVM-19-3809.patch b/0001-LLVM-Support-LLVM-19-3809.patch new file mode 100644 index 0000000..6c937a5 --- /dev/null +++ b/0001-LLVM-Support-LLVM-19-3809.patch @@ -0,0 +1,33 @@ +From 0ada5daa015f9d4de831b84526693dbd1b7a1951 Mon Sep 17 00:00:00 2001 +From: "Shen-Ta Hsieh(BestSteve)" +Date: Tue, 1 Oct 2024 16:05:58 +0800 +Subject: [PATCH] [LLVM] Support LLVM 19 (#3809) + +* Remove unused and deprecated llvm-c functions + +Signed-off-by: Shen-Ta Hsieh +(cherry picked from commit 4e0f9f1118e278b41e9a02b0e7f42735955815f4) +--- + lib/llvm/llvm.h | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/lib/llvm/llvm.h b/lib/llvm/llvm.h +index 31ac95d4..5b278849 100644 +--- a/lib/llvm/llvm.h ++++ b/lib/llvm/llvm.h +@@ -1228,12 +1228,6 @@ public: + Value createNeg(Value V, const char *Name = "") noexcept { + return LLVMBuildNeg(Ref, V.unwrap(), Name); + } +- Value createNSWNeg(Value V, const char *Name = "") noexcept { +- return LLVMBuildNSWNeg(Ref, V.unwrap(), Name); +- } +- Value createNUWNeg(Value V, const char *Name = "") noexcept { +- return LLVMBuildNUWNeg(Ref, V.unwrap(), Name); +- } + Value createFNeg(Value V, const char *Name = "") noexcept { + return LLVMBuildFNeg(Ref, V.unwrap(), Name); + } +-- +2.50.1 + diff --git a/wasmedge.spec b/wasmedge.spec index 98088ab..3ca6347 100644 --- a/wasmedge.spec +++ b/wasmedge.spec @@ -5,12 +5,14 @@ Name: wasmedge Version: %{version} -Release: 2%{?dist} +Release: 3%{?dist} Summary: High performance WebAssembly Virtual Machine # The entire source code is ASL 2.0 except LICENSE.spdx which is CC0 License: ASL 2.0 and CC0 URL: https://github.com/%{reponame}/%{reponame} Source0: %{url}/releases/download/%{version}/%{reponame}-%{version}-src.tar.gz +# https://github.com/WasmEdge/WasmEdge/pull/3809 +Patch0: 0001-LLVM-Support-LLVM-19-3809.patch BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: git @@ -54,7 +56,7 @@ Provides: %{reponame}-devel = %{version}-%{release} This package contains necessary header files for %{reponame} development. %prep -%autosetup -n %{name} +%autosetup -p 1 -n %{name} [ -f VERSION ] || echo -n %{version} > VERSION %build @@ -104,6 +106,10 @@ cd .. %{_libdir}/lib%{name}.so %changelog +* Fri Jul 18 2025 Carl George - 0.14.0-3 +- Add upstream patch for LLVM 19 support +- Rebuild for LLVM 19 rhbz#2381863 + * Tue Nov 26 2024 Carl George - 0.14.0-2 - Rebuilt for LLVM 18 From 13c66b86ec834acac63000935998f78afae5b0af Mon Sep 17 00:00:00 2001 From: dm4 Date: Mon, 5 Jan 2026 08:09:32 +0000 Subject: [PATCH 10/12] Backport fix for CVE-2025-22921 Resolves: rhbz#2426611 Signed-off-by: dm4 --- ...MXTypeKind-is-removed-in-LLVM20-4064.patch | 28 ++++ ...eat-aot-add-support-for-llvm-21-4361.patch | 135 ++++++++++++++++++ ...ne-the-overflow-detection-when-wrapp.patch | 52 +++++++ wasmedge.spec | 11 +- 4 files changed, 225 insertions(+), 1 deletion(-) create mode 100644 0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch create mode 100644 0001-feat-aot-add-support-for-llvm-21-4361.patch create mode 100644 0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch diff --git a/0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch b/0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch new file mode 100644 index 0000000..5a95793 --- /dev/null +++ b/0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch @@ -0,0 +1,28 @@ +From b63e201d46452453ee7c2acf07967cd292d7e3da Mon Sep 17 00:00:00 2001 +From: hydai +Date: Wed, 19 Mar 2025 12:57:06 +0800 +Subject: [PATCH] [LLVM] LLVMX86_MMXTypeKind is removed in LLVM20 (#4064) + +Signed-off-by: hydai +--- + lib/llvm/llvm.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/lib/llvm/llvm.h b/lib/llvm/llvm.h +index 9b08d97b..7b0bb53e 100644 +--- a/lib/llvm/llvm.h ++++ b/lib/llvm/llvm.h +@@ -556,8 +556,10 @@ public: + return 128; + case LLVMPPC_FP128TypeKind: + return 128; ++#if LLVM_VERSION_MAJOR < 20 + case LLVMX86_MMXTypeKind: + return 64; ++#endif + case LLVMIntegerTypeKind: + return getIntegerBitWidth(); + case LLVMVectorTypeKind: +-- +2.43.0 + diff --git a/0001-feat-aot-add-support-for-llvm-21-4361.patch b/0001-feat-aot-add-support-for-llvm-21-4361.patch new file mode 100644 index 0000000..0dc039f --- /dev/null +++ b/0001-feat-aot-add-support-for-llvm-21-4361.patch @@ -0,0 +1,135 @@ +From b11791e4312445e3fd2d6c56acc9c2e36e12ef34 Mon Sep 17 00:00:00 2001 +From: "Shen-Ta Hsieh(BestSteve)" +Date: Thu, 11 Sep 2025 18:58:16 +0800 +Subject: [PATCH] feat(aot): add support for llvm 21 (#4361) + +Signed-off-by: Shen-Ta Hsieh +--- + lib/llvm/codegen.cpp | 2 +- + lib/llvm/compiler.cpp | 2 +- + lib/llvm/data.h | 15 +++++++++++++-- + lib/llvm/jit.cpp | 4 ++-- + lib/llvm/llvm.h | 15 +++++++++++---- + 5 files changed, 28 insertions(+), 10 deletions(-) + +diff --git a/lib/llvm/codegen.cpp b/lib/llvm/codegen.cpp +index 43b33cc7..2de0bdab 100644 +--- a/lib/llvm/codegen.cpp ++++ b/lib/llvm/codegen.cpp +@@ -505,7 +505,7 @@ namespace WasmEdge::LLVM { + + Expect CodeGen::codegen(Span WasmData, Data D, + std::filesystem::path OutputPath) noexcept { +- auto LLContext = D.extract().LLContext(); ++ auto LLContext = D.extract().getLLContext(); + auto &LLModule = D.extract().LLModule; + auto &TM = D.extract().TM; + std::filesystem::path LLPath(OutputPath); +diff --git a/lib/llvm/compiler.cpp b/lib/llvm/compiler.cpp +index ff564ff3..2441c8df 100644 +--- a/lib/llvm/compiler.cpp ++++ b/lib/llvm/compiler.cpp +@@ -5826,7 +5826,7 @@ Expect Compiler::compile(const AST::Module &Module) noexcept { + LLVM::Core::init(); + + LLVM::Data D; +- auto LLContext = D.extract().LLContext(); ++ auto LLContext = D.extract().getLLContext(); + auto &LLModule = D.extract().LLModule; + LLModule.setTarget(LLVM::getDefaultTargetTriple().unwrap()); + LLModule.addFlag(LLVMModuleFlagBehaviorError, "PIC Level"sv, 2); +diff --git a/lib/llvm/data.h b/lib/llvm/data.h +index 9ab1a525..c79585c0 100644 +--- a/lib/llvm/data.h ++++ b/lib/llvm/data.h +@@ -6,9 +6,20 @@ + #include "llvm/data.h" + + struct WasmEdge::LLVM::Data::DataContext { ++#if LLVM_VERSION_MAJOR >= 21 ++ LLVM::Context LLContext = LLVM::Context::create(); ++ LLVM::Context getLLContext() noexcept { return LLContext; } ++ LLVM::OrcThreadSafeContext getTSContext() noexcept { ++ return LLVM::OrcThreadSafeContext(LLContext); ++ } ++#else + LLVM::OrcThreadSafeContext TSContext; ++ LLVM::Context getLLContext() noexcept { return TSContext.getContext(); } ++ LLVM::OrcThreadSafeContext getTSContext() noexcept { ++ return std::move(TSContext); ++ } ++#endif + LLVM::Module LLModule; + LLVM::TargetMachine TM; +- DataContext() noexcept : TSContext(), LLModule(LLContext(), "wasm") {} +- LLVM::Context LLContext() noexcept { return TSContext.getContext(); } ++ DataContext() noexcept : LLModule(getLLContext(), "wasm") {} + }; +diff --git a/lib/llvm/jit.cpp b/lib/llvm/jit.cpp +index 9add6b51..4bf3cc80 100644 +--- a/lib/llvm/jit.cpp ++++ b/lib/llvm/jit.cpp +@@ -73,6 +73,7 @@ Expect> JIT::load(Data D) noexcept { + } + + auto &LLModule = D.extract().LLModule; ++ auto TSContext = D.extract().getTSContext(); + + if (Conf.getCompilerConfigure().isDumpIR()) { + if (auto ErrorMessage = LLModule.printModuleToFile("wasm-jit.ll")) { +@@ -82,8 +83,7 @@ Expect> JIT::load(Data D) noexcept { + + auto MainJD = J.getMainJITDylib(); + if (auto Err = J.addLLVMIRModule( +- MainJD, +- OrcThreadSafeModule(LLModule.release(), D.extract().TSContext))) { ++ MainJD, OrcThreadSafeModule(LLModule.release(), TSContext))) { + spdlog::error("{}"sv, Err.message().string_view()); + return Unexpect(ErrCode::Value::HostFuncError); + } +diff --git a/lib/llvm/llvm.h b/lib/llvm/llvm.h +index a327b850..9498a22f 100644 +--- a/lib/llvm/llvm.h ++++ b/lib/llvm/llvm.h +@@ -266,9 +266,12 @@ public: + Context(const Context &) = default; + Context &operator=(const Context &) = default; + ++ static Context create() noexcept { return Context(LLVMContextCreate()); } ++ + constexpr operator bool() const noexcept { return Ref != nullptr; } + constexpr auto &unwrap() const noexcept { return Ref; } + constexpr auto &unwrap() noexcept { return Ref; } ++ LLVMContextRef release() noexcept { return std::exchange(Ref, nullptr); } + friend void swap(Context &LHS, Context &RHS) noexcept { + using std::swap; + swap(LHS.Ref, RHS.Ref); +@@ -2062,6 +2065,14 @@ public: + swap(*this, B); + return *this; + } ++#if LLVM_VERSION_MAJOR >= 21 ++ OrcThreadSafeContext(Context &C) noexcept ++ : Ref(LLVMOrcCreateNewThreadSafeContextFromLLVMContext(C.release())) {} ++#else ++ Context getContext() noexcept { ++ return LLVMOrcThreadSafeContextGetContext(Ref); ++ } ++#endif + + OrcThreadSafeContext() noexcept : Ref(LLVMOrcCreateNewThreadSafeContext()) {} + ~OrcThreadSafeContext() noexcept { LLVMOrcDisposeThreadSafeContext(Ref); } +@@ -2078,10 +2089,6 @@ public: + swap(LHS.Ref, RHS.Ref); + } + +- Context getContext() noexcept { +- return LLVMOrcThreadSafeContextGetContext(Ref); +- } +- + private: + LLVMOrcThreadSafeContextRef Ref = nullptr; + }; +-- +2.43.0 + diff --git a/0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch b/0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch new file mode 100644 index 0000000..c332c3e --- /dev/null +++ b/0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch @@ -0,0 +1,52 @@ +From 37cc9fa19bd23edbbdaa9252059b17f191fa4d17 Mon Sep 17 00:00:00 2001 +From: YiYing He +Date: Wed, 17 Dec 2025 20:27:38 +0800 +Subject: [PATCH] fix(runtime): refine the overflow detection when wrapping + memory instance + +Signed-off-by: YiYing He +--- + include/runtime/instance/memory.h | 24 +++++++++++++++++++----- + 1 file changed, 19 insertions(+), 5 deletions(-) + +diff --git a/include/runtime/instance/memory.h b/include/runtime/instance/memory.h +index ce511a7b..9d849598 100644 +--- a/include/runtime/instance/memory.h ++++ b/include/runtime/instance/memory.h +@@ -241,14 +241,28 @@ public: + return reinterpret_cast(&DataPtr[Offset]); + } + +- /// Get array of object at specific offset of memory. ++ /// Get array of object with count at specific offset of memory. + template +- Span getSpan(uint32_t Offset, uint32_t Size) const noexcept { +- uint32_t ByteSize = static_cast(sizeof(T) * Size); +- if (unlikely(!checkAccessBound(Offset, ByteSize))) { ++ Span getSpan(uint32_t Offset, uint32_t Count) const noexcept { ++ uint32_t Size; ++#if defined(_MSC_VER) && !defined(__clang__) // MSVC ++ // Should extend for memory64 proposal. ++ uint64_t Num = ++ static_cast(sizeof(T)) * static_cast(Count); ++ if ((Num >> 32) != 0) { ++ return Span(); ++ } ++ Size = static_cast(Num); ++#else ++ if (unlikely(__builtin_mul_overflow(static_cast(sizeof(T)), Count, ++ &Size))) { ++ return Span(); ++ } ++#endif ++ if (unlikely(!checkAccessBound(Offset, Size))) { + return Span(); + } +- return Span(reinterpret_cast(&DataPtr[Offset]), Size); ++ return Span(reinterpret_cast(&DataPtr[Offset]), Count); + } + + /// Get array of object at specific offset of memory. +-- +2.43.0 + diff --git a/wasmedge.spec b/wasmedge.spec index 3ca6347..bbf3131 100644 --- a/wasmedge.spec +++ b/wasmedge.spec @@ -5,7 +5,7 @@ Name: wasmedge Version: %{version} -Release: 3%{?dist} +Release: 4%{?dist} Summary: High performance WebAssembly Virtual Machine # The entire source code is ASL 2.0 except LICENSE.spdx which is CC0 License: ASL 2.0 and CC0 @@ -13,6 +13,12 @@ URL: https://github.com/%{reponame}/%{reponame} Source0: %{url}/releases/download/%{version}/%{reponame}-%{version}-src.tar.gz # https://github.com/WasmEdge/WasmEdge/pull/3809 Patch0: 0001-LLVM-Support-LLVM-19-3809.patch +# Patch from https://github.com/WasmEdge/WasmEdge/commit/b63e201d46452453ee7c2acf07967cd292d7e3da +Patch1: 0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch +# Patch from https://github.com/WasmEdge/WasmEdge/commit/b11791e4312445e3fd2d6c56acc9c2e36e12ef34 +Patch2: 0001-feat-aot-add-support-for-llvm-21-4361.patch +# Patch from https://github.com/WasmEdge/WasmEdge/commit/37cc9fa19bd23edbbdaa9252059b17f191fa4d17 +Patch3: 0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: git @@ -106,6 +112,9 @@ cd .. %{_libdir}/lib%{name}.so %changelog +* Mon Jan 05 2026 dm4 - 0.14.0-4 +- Backport fix for CVE-2025-22921 + * Fri Jul 18 2025 Carl George - 0.14.0-3 - Add upstream patch for LLVM 19 support - Rebuild for LLVM 19 rhbz#2381863 From 541592170b7484f8b374b8689e7b143de4c0ea6a Mon Sep 17 00:00:00 2001 From: hydai Date: Tue, 2 Jun 2026 07:49:39 +0000 Subject: [PATCH 11/12] Release 0.17.0 Signed-off-by: hydai --- .gitignore | 1 + 0001-Build-with-fmt-8-and-older-spdlog.patch | 55 +++++++ ...MXTypeKind-is-removed-in-LLVM20-4064.patch | 28 ---- 0001-LLVM-Support-LLVM-19-3809.patch | 33 ----- ...eat-aot-add-support-for-llvm-21-4361.patch | 135 ------------------ ...ne-the-overflow-detection-when-wrapp.patch | 52 ------- sources | 13 +- wasmedge.spec | 34 +++-- 8 files changed, 80 insertions(+), 271 deletions(-) create mode 100644 0001-Build-with-fmt-8-and-older-spdlog.patch delete mode 100644 0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch delete mode 100644 0001-LLVM-Support-LLVM-19-3809.patch delete mode 100644 0001-feat-aot-add-support-for-llvm-21-4361.patch delete mode 100644 0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch diff --git a/.gitignore b/.gitignore index c2b8f64..f3840fc 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ /WasmEdge-0.13.4-src.tar.gz /WasmEdge-0.13.5-src.tar.gz /WasmEdge-0.14.0-src.tar.gz +/WasmEdge-0.17.0-src.tar.gz diff --git a/0001-Build-with-fmt-8-and-older-spdlog.patch b/0001-Build-with-fmt-8-and-older-spdlog.patch new file mode 100644 index 0000000..eac4752 --- /dev/null +++ b/0001-Build-with-fmt-8-and-older-spdlog.patch @@ -0,0 +1,55 @@ +diff --git a/include/common/int128.h b/include/common/int128.h +index 40f49e727..d26ad3011 100644 +--- a/include/common/int128.h ++++ b/include/common/int128.h +@@ -555,6 +555,7 @@ using uint128_t = uint128; + #include + + FMT_BEGIN_NAMESPACE ++#if FMT_VERSION >= 90000 + namespace detail { + inline constexpr bool operator>=(detail::uint128_fallback LHS, + unsigned int RHS) { +@@ -668,6 +669,7 @@ FMT_CONSTEXPR20 inline int count_digits(detail::uint128_fallback N) { + } + + } // namespace detail ++#endif + + template struct formatter { + private: +diff --git a/lib/common/spdlog.cpp b/lib/common/spdlog.cpp +index 39ba477bb..39f6a7ff8 100644 +--- a/lib/common/spdlog.cpp ++++ b/lib/common/spdlog.cpp +@@ -9,7 +9,30 @@ + // https://github.com/gabime/spdlog/pull/3198 + #pragma clang diagnostic ignored "-Wextra-semi" + #endif ++#if __has_include() + #include ++#else ++// Fallback for spdlog without callback_sink.h (e.g. RHEL 9 / EPEL 9 spdlog 1.10). ++#include ++#include ++#include ++namespace spdlog::sinks { ++template class callback_sink final : public base_sink { ++public: ++ explicit callback_sink( ++ std::function Callback) ++ : Cb(std::move(Callback)) {} ++ ++protected: ++ void sink_it_(const details::log_msg &Msg) override { Cb(Msg); } ++ void flush_() override {} ++ ++private: ++ std::function Cb; ++}; ++using callback_sink_mt = callback_sink; ++} // namespace spdlog::sinks ++#endif + #if defined(__clang_major__) && __clang_major__ >= 10 + #pragma clang diagnostic pop + #endif diff --git a/0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch b/0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch deleted file mode 100644 index 5a95793..0000000 --- a/0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch +++ /dev/null @@ -1,28 +0,0 @@ -From b63e201d46452453ee7c2acf07967cd292d7e3da Mon Sep 17 00:00:00 2001 -From: hydai -Date: Wed, 19 Mar 2025 12:57:06 +0800 -Subject: [PATCH] [LLVM] LLVMX86_MMXTypeKind is removed in LLVM20 (#4064) - -Signed-off-by: hydai ---- - lib/llvm/llvm.h | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/lib/llvm/llvm.h b/lib/llvm/llvm.h -index 9b08d97b..7b0bb53e 100644 ---- a/lib/llvm/llvm.h -+++ b/lib/llvm/llvm.h -@@ -556,8 +556,10 @@ public: - return 128; - case LLVMPPC_FP128TypeKind: - return 128; -+#if LLVM_VERSION_MAJOR < 20 - case LLVMX86_MMXTypeKind: - return 64; -+#endif - case LLVMIntegerTypeKind: - return getIntegerBitWidth(); - case LLVMVectorTypeKind: --- -2.43.0 - diff --git a/0001-LLVM-Support-LLVM-19-3809.patch b/0001-LLVM-Support-LLVM-19-3809.patch deleted file mode 100644 index 6c937a5..0000000 --- a/0001-LLVM-Support-LLVM-19-3809.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0ada5daa015f9d4de831b84526693dbd1b7a1951 Mon Sep 17 00:00:00 2001 -From: "Shen-Ta Hsieh(BestSteve)" -Date: Tue, 1 Oct 2024 16:05:58 +0800 -Subject: [PATCH] [LLVM] Support LLVM 19 (#3809) - -* Remove unused and deprecated llvm-c functions - -Signed-off-by: Shen-Ta Hsieh -(cherry picked from commit 4e0f9f1118e278b41e9a02b0e7f42735955815f4) ---- - lib/llvm/llvm.h | 6 ------ - 1 file changed, 6 deletions(-) - -diff --git a/lib/llvm/llvm.h b/lib/llvm/llvm.h -index 31ac95d4..5b278849 100644 ---- a/lib/llvm/llvm.h -+++ b/lib/llvm/llvm.h -@@ -1228,12 +1228,6 @@ public: - Value createNeg(Value V, const char *Name = "") noexcept { - return LLVMBuildNeg(Ref, V.unwrap(), Name); - } -- Value createNSWNeg(Value V, const char *Name = "") noexcept { -- return LLVMBuildNSWNeg(Ref, V.unwrap(), Name); -- } -- Value createNUWNeg(Value V, const char *Name = "") noexcept { -- return LLVMBuildNUWNeg(Ref, V.unwrap(), Name); -- } - Value createFNeg(Value V, const char *Name = "") noexcept { - return LLVMBuildFNeg(Ref, V.unwrap(), Name); - } --- -2.50.1 - diff --git a/0001-feat-aot-add-support-for-llvm-21-4361.patch b/0001-feat-aot-add-support-for-llvm-21-4361.patch deleted file mode 100644 index 0dc039f..0000000 --- a/0001-feat-aot-add-support-for-llvm-21-4361.patch +++ /dev/null @@ -1,135 +0,0 @@ -From b11791e4312445e3fd2d6c56acc9c2e36e12ef34 Mon Sep 17 00:00:00 2001 -From: "Shen-Ta Hsieh(BestSteve)" -Date: Thu, 11 Sep 2025 18:58:16 +0800 -Subject: [PATCH] feat(aot): add support for llvm 21 (#4361) - -Signed-off-by: Shen-Ta Hsieh ---- - lib/llvm/codegen.cpp | 2 +- - lib/llvm/compiler.cpp | 2 +- - lib/llvm/data.h | 15 +++++++++++++-- - lib/llvm/jit.cpp | 4 ++-- - lib/llvm/llvm.h | 15 +++++++++++---- - 5 files changed, 28 insertions(+), 10 deletions(-) - -diff --git a/lib/llvm/codegen.cpp b/lib/llvm/codegen.cpp -index 43b33cc7..2de0bdab 100644 ---- a/lib/llvm/codegen.cpp -+++ b/lib/llvm/codegen.cpp -@@ -505,7 +505,7 @@ namespace WasmEdge::LLVM { - - Expect CodeGen::codegen(Span WasmData, Data D, - std::filesystem::path OutputPath) noexcept { -- auto LLContext = D.extract().LLContext(); -+ auto LLContext = D.extract().getLLContext(); - auto &LLModule = D.extract().LLModule; - auto &TM = D.extract().TM; - std::filesystem::path LLPath(OutputPath); -diff --git a/lib/llvm/compiler.cpp b/lib/llvm/compiler.cpp -index ff564ff3..2441c8df 100644 ---- a/lib/llvm/compiler.cpp -+++ b/lib/llvm/compiler.cpp -@@ -5826,7 +5826,7 @@ Expect Compiler::compile(const AST::Module &Module) noexcept { - LLVM::Core::init(); - - LLVM::Data D; -- auto LLContext = D.extract().LLContext(); -+ auto LLContext = D.extract().getLLContext(); - auto &LLModule = D.extract().LLModule; - LLModule.setTarget(LLVM::getDefaultTargetTriple().unwrap()); - LLModule.addFlag(LLVMModuleFlagBehaviorError, "PIC Level"sv, 2); -diff --git a/lib/llvm/data.h b/lib/llvm/data.h -index 9ab1a525..c79585c0 100644 ---- a/lib/llvm/data.h -+++ b/lib/llvm/data.h -@@ -6,9 +6,20 @@ - #include "llvm/data.h" - - struct WasmEdge::LLVM::Data::DataContext { -+#if LLVM_VERSION_MAJOR >= 21 -+ LLVM::Context LLContext = LLVM::Context::create(); -+ LLVM::Context getLLContext() noexcept { return LLContext; } -+ LLVM::OrcThreadSafeContext getTSContext() noexcept { -+ return LLVM::OrcThreadSafeContext(LLContext); -+ } -+#else - LLVM::OrcThreadSafeContext TSContext; -+ LLVM::Context getLLContext() noexcept { return TSContext.getContext(); } -+ LLVM::OrcThreadSafeContext getTSContext() noexcept { -+ return std::move(TSContext); -+ } -+#endif - LLVM::Module LLModule; - LLVM::TargetMachine TM; -- DataContext() noexcept : TSContext(), LLModule(LLContext(), "wasm") {} -- LLVM::Context LLContext() noexcept { return TSContext.getContext(); } -+ DataContext() noexcept : LLModule(getLLContext(), "wasm") {} - }; -diff --git a/lib/llvm/jit.cpp b/lib/llvm/jit.cpp -index 9add6b51..4bf3cc80 100644 ---- a/lib/llvm/jit.cpp -+++ b/lib/llvm/jit.cpp -@@ -73,6 +73,7 @@ Expect> JIT::load(Data D) noexcept { - } - - auto &LLModule = D.extract().LLModule; -+ auto TSContext = D.extract().getTSContext(); - - if (Conf.getCompilerConfigure().isDumpIR()) { - if (auto ErrorMessage = LLModule.printModuleToFile("wasm-jit.ll")) { -@@ -82,8 +83,7 @@ Expect> JIT::load(Data D) noexcept { - - auto MainJD = J.getMainJITDylib(); - if (auto Err = J.addLLVMIRModule( -- MainJD, -- OrcThreadSafeModule(LLModule.release(), D.extract().TSContext))) { -+ MainJD, OrcThreadSafeModule(LLModule.release(), TSContext))) { - spdlog::error("{}"sv, Err.message().string_view()); - return Unexpect(ErrCode::Value::HostFuncError); - } -diff --git a/lib/llvm/llvm.h b/lib/llvm/llvm.h -index a327b850..9498a22f 100644 ---- a/lib/llvm/llvm.h -+++ b/lib/llvm/llvm.h -@@ -266,9 +266,12 @@ public: - Context(const Context &) = default; - Context &operator=(const Context &) = default; - -+ static Context create() noexcept { return Context(LLVMContextCreate()); } -+ - constexpr operator bool() const noexcept { return Ref != nullptr; } - constexpr auto &unwrap() const noexcept { return Ref; } - constexpr auto &unwrap() noexcept { return Ref; } -+ LLVMContextRef release() noexcept { return std::exchange(Ref, nullptr); } - friend void swap(Context &LHS, Context &RHS) noexcept { - using std::swap; - swap(LHS.Ref, RHS.Ref); -@@ -2062,6 +2065,14 @@ public: - swap(*this, B); - return *this; - } -+#if LLVM_VERSION_MAJOR >= 21 -+ OrcThreadSafeContext(Context &C) noexcept -+ : Ref(LLVMOrcCreateNewThreadSafeContextFromLLVMContext(C.release())) {} -+#else -+ Context getContext() noexcept { -+ return LLVMOrcThreadSafeContextGetContext(Ref); -+ } -+#endif - - OrcThreadSafeContext() noexcept : Ref(LLVMOrcCreateNewThreadSafeContext()) {} - ~OrcThreadSafeContext() noexcept { LLVMOrcDisposeThreadSafeContext(Ref); } -@@ -2078,10 +2089,6 @@ public: - swap(LHS.Ref, RHS.Ref); - } - -- Context getContext() noexcept { -- return LLVMOrcThreadSafeContextGetContext(Ref); -- } -- - private: - LLVMOrcThreadSafeContextRef Ref = nullptr; - }; --- -2.43.0 - diff --git a/0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch b/0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch deleted file mode 100644 index c332c3e..0000000 --- a/0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 37cc9fa19bd23edbbdaa9252059b17f191fa4d17 Mon Sep 17 00:00:00 2001 -From: YiYing He -Date: Wed, 17 Dec 2025 20:27:38 +0800 -Subject: [PATCH] fix(runtime): refine the overflow detection when wrapping - memory instance - -Signed-off-by: YiYing He ---- - include/runtime/instance/memory.h | 24 +++++++++++++++++++----- - 1 file changed, 19 insertions(+), 5 deletions(-) - -diff --git a/include/runtime/instance/memory.h b/include/runtime/instance/memory.h -index ce511a7b..9d849598 100644 ---- a/include/runtime/instance/memory.h -+++ b/include/runtime/instance/memory.h -@@ -241,14 +241,28 @@ public: - return reinterpret_cast(&DataPtr[Offset]); - } - -- /// Get array of object at specific offset of memory. -+ /// Get array of object with count at specific offset of memory. - template -- Span getSpan(uint32_t Offset, uint32_t Size) const noexcept { -- uint32_t ByteSize = static_cast(sizeof(T) * Size); -- if (unlikely(!checkAccessBound(Offset, ByteSize))) { -+ Span getSpan(uint32_t Offset, uint32_t Count) const noexcept { -+ uint32_t Size; -+#if defined(_MSC_VER) && !defined(__clang__) // MSVC -+ // Should extend for memory64 proposal. -+ uint64_t Num = -+ static_cast(sizeof(T)) * static_cast(Count); -+ if ((Num >> 32) != 0) { -+ return Span(); -+ } -+ Size = static_cast(Num); -+#else -+ if (unlikely(__builtin_mul_overflow(static_cast(sizeof(T)), Count, -+ &Size))) { -+ return Span(); -+ } -+#endif -+ if (unlikely(!checkAccessBound(Offset, Size))) { - return Span(); - } -- return Span(reinterpret_cast(&DataPtr[Offset]), Size); -+ return Span(reinterpret_cast(&DataPtr[Offset]), Count); - } - - /// Get array of object at specific offset of memory. --- -2.43.0 - diff --git a/sources b/sources index b22ae72..8bce1f5 100644 --- a/sources +++ b/sources @@ -1,12 +1 @@ -SHA512 (WasmEdge-0.10.1-src.tar.gz) = 56375a1198e9dd20a66e4baffd2932afbd125e652bb761bf2c4de31be7edfbdc50a6aad5f6cc9b83dc5838841e60d51e7420310d366d6fb860a0c32c97ecc3d3 -SHA512 (WasmEdge-0.11.0-src.tar.gz) = 4baadceca1f522123e1e8e1cb48657e4f39ccda6cc50731c8774bea833947bc6503b787c271498e604555ca261e01b933f27e257d7b0c94c258e371cc0171e66 -SHA512 (WasmEdge-0.11.1-src.tar.gz) = d5bf0d9b906adf0f8b6bb4bb0128b896552ce62b26f6c3ef351308f7f63c1e082acfe8c056b2013957a7a1e24959ce546c40ecb593a0a0d40df03f53e17b4570 -SHA512 (WasmEdge-0.11.2-src.tar.gz) = ebe10f564fdb142075fb39eea3b6e4e784db62d1a2bfdb84158036cb044510c20b77051f1f4279d5d220146a69dc97350da9799a57a06c6aa0b8e00d8714b685 -SHA512 (WasmEdge-0.12.0-src.tar.gz) = 23a87617a9c528f3639a6ccb51a8fce4e7ba4659591559ed7bba5350eb9270cae3adcad19e547c5699d74cbed2c55ad28ab684bbd5e759d782e431e9dd93ff8e -SHA512 (WasmEdge-0.12.1-src.tar.gz) = c81ddbe9925e8ea144381f3d999f8b19bfcfae91aa63328beeee1f3c5b002ce47157eee28d5323d3a7303806975417856d5ec497d1e60f59312f9dc47756c533 -SHA512 (WasmEdge-0.13.1-src.tar.gz) = 66739e02ffb9669b2545765bcbcf49845afa4e1b9f6d11d011363c11febb0aff4465a774dddd7b513568ff99c80490d76611b74d4d8bd510df7209a73f3abcb0 -SHA512 (WasmEdge-0.13.2-src.tar.gz) = 68038e39487fca9845da77e0ced3af5e36160a0aa458ddd0540d4dbb5d47e0e8f4e12582e9b1c57b371ba13218dcceef6bc44cbd2b76aab7626b0ada963cdba4 -SHA512 (WasmEdge-0.13.3-src.tar.gz) = b8b2e1974fd2ca5bfa0b10311812b69a2a0d2b9864c3d316e3134a08e0a08392cad2b83867e20cd7feeead2afabfa8be19079e690ded7ae9e9bdef41223fd7bd -SHA512 (WasmEdge-0.13.4-src.tar.gz) = ec9b7d1d5eddeb263e4fd00b11e0cac8e11e73a00db0a53ef01ade13518841823274d5ad85be005a82cf8c58a5bec7a8ad6e54358abe4a784439692afbe43fcf -SHA512 (WasmEdge-0.13.5-src.tar.gz) = 9d3ece45897d2c9bb3848662fc4ab36c2e0f178450b00f7ea7d183b7162d150d1306e1781b2542463993bab2ec6732def8d63be20ec192b18d93d98c537fb48a -SHA512 (WasmEdge-0.14.0-src.tar.gz) = fa9ab14f1c477e1909efe88d760a2ab9212687328a885054f0830284bc71d559ab5263eefbbc564d88280b3907d5e3145ffeff87830eb13ad1f3fc4a599e4340 +SHA512 (WasmEdge-0.17.0-src.tar.gz) = 3e0f9739c7cd5af4ad1e54ed009719c8e4d3d4bfc821103bd954f5bc662381278f97078b4d177f4fae599b3a199b55b6e1fd81ce75ab7711921779db2e89d567 diff --git a/wasmedge.spec b/wasmedge.spec index bbf3131..8817fca 100644 --- a/wasmedge.spec +++ b/wasmedge.spec @@ -1,24 +1,18 @@ -%global version 0.14.0 +%global version 0.17.0 %global reponame WasmEdge %global capi_soname 0 -%global capi_version 0.1.0 +%global capi_version 0.1.1 Name: wasmedge Version: %{version} -Release: 4%{?dist} +Release: 1%{?dist} Summary: High performance WebAssembly Virtual Machine # The entire source code is ASL 2.0 except LICENSE.spdx which is CC0 License: ASL 2.0 and CC0 URL: https://github.com/%{reponame}/%{reponame} Source0: %{url}/releases/download/%{version}/%{reponame}-%{version}-src.tar.gz -# https://github.com/WasmEdge/WasmEdge/pull/3809 -Patch0: 0001-LLVM-Support-LLVM-19-3809.patch -# Patch from https://github.com/WasmEdge/WasmEdge/commit/b63e201d46452453ee7c2acf07967cd292d7e3da -Patch1: 0001-LLVM-LLVMX86_MMXTypeKind-is-removed-in-LLVM20-4064.patch -# Patch from https://github.com/WasmEdge/WasmEdge/commit/b11791e4312445e3fd2d6c56acc9c2e36e12ef34 -Patch2: 0001-feat-aot-add-support-for-llvm-21-4361.patch -# Patch from https://github.com/WasmEdge/WasmEdge/commit/37cc9fa19bd23edbbdaa9252059b17f191fa4d17 -Patch3: 0001-fix-runtime-refine-the-overflow-detection-when-wrapp.patch +# Downstream: build against RHEL 9 fmt 8 / spdlog 1.10 (no callback_sink) +Patch0: 0001-Build-with-fmt-8-and-older-spdlog.patch BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: git @@ -109,9 +103,27 @@ cd .. %{_includedir}/%{name}/int128.h %{_includedir}/%{name}/version.h %{_includedir}/%{name}/wasmedge.h +%{_includedir}/%{name}/wasmedge_ast.h +%{_includedir}/%{name}/wasmedge_basic.h +%{_includedir}/%{name}/wasmedge_compiler.h +%{_includedir}/%{name}/wasmedge_configure.h +%{_includedir}/%{name}/wasmedge_context.h +%{_includedir}/%{name}/wasmedge_deprecated.h +%{_includedir}/%{name}/wasmedge_execution.h +%{_includedir}/%{name}/wasmedge_experimental.h +%{_includedir}/%{name}/wasmedge_instance.h +%{_includedir}/%{name}/wasmedge_plugin.h +%{_includedir}/%{name}/wasmedge_tools.h +%{_includedir}/%{name}/wasmedge_value.h +%{_includedir}/%{name}/wasmedge_vm.h %{_libdir}/lib%{name}.so %changelog +* Tue Jun 02 2026 hydai - 0.17.0-1 +- Update to 0.17.0 +- Drop downstream LLVM 19/20/21 and overflow patches (merged upstream) +- Add downstream patch to build against RHEL 9 fmt 8 / spdlog 1.10 + * Mon Jan 05 2026 dm4 - 0.14.0-4 - Backport fix for CVE-2025-22921 From a3a777e1790f519cfe858f0adcd531f4c6a213de Mon Sep 17 00:00:00 2001 From: hydai Date: Mon, 6 Jul 2026 15:30:48 +0000 Subject: [PATCH 12/12] Update to 0.17.1 Signed-off-by: hydai --- .gitignore | 1 + 0001-Build-with-fmt-8-and-older-spdlog.patch | 55 -------------------- sources | 2 +- wasmedge.spec | 8 +-- 4 files changed, 7 insertions(+), 59 deletions(-) delete mode 100644 0001-Build-with-fmt-8-and-older-spdlog.patch diff --git a/.gitignore b/.gitignore index f3840fc..735c80f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ /WasmEdge-0.13.5-src.tar.gz /WasmEdge-0.14.0-src.tar.gz /WasmEdge-0.17.0-src.tar.gz +/WasmEdge-0.17.1-src.tar.gz diff --git a/0001-Build-with-fmt-8-and-older-spdlog.patch b/0001-Build-with-fmt-8-and-older-spdlog.patch deleted file mode 100644 index eac4752..0000000 --- a/0001-Build-with-fmt-8-and-older-spdlog.patch +++ /dev/null @@ -1,55 +0,0 @@ -diff --git a/include/common/int128.h b/include/common/int128.h -index 40f49e727..d26ad3011 100644 ---- a/include/common/int128.h -+++ b/include/common/int128.h -@@ -555,6 +555,7 @@ using uint128_t = uint128; - #include - - FMT_BEGIN_NAMESPACE -+#if FMT_VERSION >= 90000 - namespace detail { - inline constexpr bool operator>=(detail::uint128_fallback LHS, - unsigned int RHS) { -@@ -668,6 +669,7 @@ FMT_CONSTEXPR20 inline int count_digits(detail::uint128_fallback N) { - } - - } // namespace detail -+#endif - - template struct formatter { - private: -diff --git a/lib/common/spdlog.cpp b/lib/common/spdlog.cpp -index 39ba477bb..39f6a7ff8 100644 ---- a/lib/common/spdlog.cpp -+++ b/lib/common/spdlog.cpp -@@ -9,7 +9,30 @@ - // https://github.com/gabime/spdlog/pull/3198 - #pragma clang diagnostic ignored "-Wextra-semi" - #endif -+#if __has_include() - #include -+#else -+// Fallback for spdlog without callback_sink.h (e.g. RHEL 9 / EPEL 9 spdlog 1.10). -+#include -+#include -+#include -+namespace spdlog::sinks { -+template class callback_sink final : public base_sink { -+public: -+ explicit callback_sink( -+ std::function Callback) -+ : Cb(std::move(Callback)) {} -+ -+protected: -+ void sink_it_(const details::log_msg &Msg) override { Cb(Msg); } -+ void flush_() override {} -+ -+private: -+ std::function Cb; -+}; -+using callback_sink_mt = callback_sink; -+} // namespace spdlog::sinks -+#endif - #if defined(__clang_major__) && __clang_major__ >= 10 - #pragma clang diagnostic pop - #endif diff --git a/sources b/sources index 8bce1f5..8de4d16 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (WasmEdge-0.17.0-src.tar.gz) = 3e0f9739c7cd5af4ad1e54ed009719c8e4d3d4bfc821103bd954f5bc662381278f97078b4d177f4fae599b3a199b55b6e1fd81ce75ab7711921779db2e89d567 +SHA512 (WasmEdge-0.17.1-src.tar.gz) = b5f1d7cde7fee8f43dff972135fb49489c0e752cd364aa13ecb15b7ccd0d81579ac2552d3e3a8f6f5a870313eda640010f833869a0089677a3c8d76476e0fbed diff --git a/wasmedge.spec b/wasmedge.spec index 8817fca..a03ac2b 100644 --- a/wasmedge.spec +++ b/wasmedge.spec @@ -1,4 +1,4 @@ -%global version 0.17.0 +%global version 0.17.1 %global reponame WasmEdge %global capi_soname 0 %global capi_version 0.1.1 @@ -11,8 +11,6 @@ Summary: High performance WebAssembly Virtual Machine License: ASL 2.0 and CC0 URL: https://github.com/%{reponame}/%{reponame} Source0: %{url}/releases/download/%{version}/%{reponame}-%{version}-src.tar.gz -# Downstream: build against RHEL 9 fmt 8 / spdlog 1.10 (no callback_sink) -Patch0: 0001-Build-with-fmt-8-and-older-spdlog.patch BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: git @@ -119,6 +117,10 @@ cd .. %{_libdir}/lib%{name}.so %changelog +* Mon Jul 06 2026 hydai - 0.17.1-1 +- Update to 0.17.1 +- Drop 0001-Build-with-fmt-8-and-older-spdlog.patch; fmt/spdlog compat upstreamed + * Tue Jun 02 2026 hydai - 0.17.0-1 - Update to 0.17.0 - Drop downstream LLVM 19/20/21 and overflow patches (merged upstream)