[x265] [PATCH] cpu_xgetbv signature mismatch when ENABLE_ASSEMBLY is off

Aurélien David aurelien.david at telecom-paris.fr
Mon Jul 17 13:54:50 UTC 2023


Hello,

[this is my first contribution here, I apologize if I'm not doing this right]


When building without ENABLE_ASSEMBLY, the cpu_xgetbv function is noped in primitives.cpp with a different signature than its declaration in cpu.cpp.

The signature was changed in cpu.cpp by commit 3a20c6d31fd3e1b959cdf7904118958f2ee20d8e but not in primitives.cpp.

I came across this while building with emscripten giving warnings such as:

wasm-ld: warning: function signature mismatch: x265_10bit_cpu_xgetbv
>>> defined as (i32) -> i64 in libx265.a(cpu.cpp.o)
>>> defined as (i32, i32, i32) -> void in libx265.a(primitives.cpp.o)


Here's the patch:


>From fa86cc5d43a301792562d358797ed051f2da2368 Mon Sep 17 00:00:00 2001
From: Aurelien David <aurelien.david at telecom-paris.fr>
Date: Wed, 5 Jul 2023 18:18:10 +0200
Subject: [PATCH] fix cpu_xgetbv signature mismatch when ENABLE_ASSEMBLY is off

---
 source/common/primitives.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source/common/primitives.cpp b/source/common/primitives.cpp
index 10e41888..cd39ca95 100644
--- a/source/common/primitives.cpp
+++ b/source/common/primitives.cpp
@@ -293,7 +293,7 @@ extern "C" {
 int PFX(cpu_cpuid_test)(void) { return 0; }
 void PFX(cpu_emms)(void) {}
 void PFX(cpu_cpuid)(uint32_t, uint32_t *eax, uint32_t *, uint32_t *, uint32_t *) { *eax = 0; }
-void PFX(cpu_xgetbv)(uint32_t, uint32_t *, uint32_t *) {}
+uint64_t PFX(cpu_xgetbv)(int) { return 0; }
 
 #if X265_ARCH_ARM == 0
 void PFX(cpu_neon_test)(void) {}
-- 
2.34.1



Have a nice day,

-- 
Aurélien David


More information about the x265-devel mailing list