Hi Liliana, Liliana Marie Prikler <[email protected]> writes:
> Am Donnerstag, den 04.11.2021, 19:15 -0400 schrieb Mark H Weaver: [...] >> A more conservative approach would be to apply a patch to >> trunk/Source/WTF/wtf/CheckedArithmetic.h analogous to the one in the >> second link I cited above, namely this one: >> >> https://trac.webkit.org/changeset/272140/webkit >> >> However, it would need to be changed slightly. The patch above >> arranges to avoid using __builtin_mul_overflow on 32-bit ARM >> systems. We would need to do the same for 32-bit x86 as well. So, >> where the patch above has this: >> >> --8<---------------cut here---------------start------------->8--- >> /* On Linux with clang, libgcc is usually used instead of compiler- >> rt, and it does >> * not provide the __mulodi4 symbol used by clang for >> __builtin_mul_overflow >> */ >> #if COMPILER(GCC) || (COMPILER(CLANG) && !(CPU(ARM) && >> OS(LINUX))) >> #define USE_MUL_OVERFLOW 1 >> #endif >> --8<---------------cut here---------------end--------------->8--- >> >> We would need to change "CPU(ARM)" to "(CPU(ARM) || CPU(XXX))", where >> XXX is the appropriate symbol for 32-bit x86. Or maybe there's >> another solution. >> >> I won't be able to look at this in the next couple of days, so >> hopefully someone else can pick this up. > The #else case doesn't look so bad on this, so we could for the time > being just do #if COMPILER(GCC) or even #if 0. I just noticed that the aforementioned patch is already applied to upstream WebKitGTK-2.34.1, so all we would need to do is change "1" to "0" in the following line on i686-linux systems: #define USE_MUL_OVERFLOW 1 I pushed the following (untested) commit to 'gnuzilla-updates' that does exactly this, and does so in such a way that rebuilds will not be needed on other systems. Hopefully I didn't make a mistake. Regards, Mark
>From 7aaedf5d77bb0e088601f15bbbed8f7835bde774 Mon Sep 17 00:00:00 2001 From: Mark H Weaver <[email protected]> Date: Fri, 5 Nov 2021 15:31:07 -0400 Subject: [PATCH] UNTESTED: gnu: webkitgtk: Fix build on i686-linux. Fixes <https://bugs.gnu.org/51591>. * gnu/packages/webkit.scm (webkitgtk)[arguments]: Use quasiquote for the argument list. When building on i686-linux, insert a 'substitute*' form in the 'prepare-build-environment' phase that disables of the use of '__builtin_mul_overflow'. --- gnu/packages/webkit.scm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index e54b680855..a184cc9b32 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -241,7 +241,7 @@ acceleration in mind, leveraging common 3D graphics APIs for best performance.") (build-system cmake-build-system) (outputs '("out" "doc")) (arguments - '(#:tests? #f ; no tests + `(#:tests? #f ; no tests #:build-type "Release" ; turn off debugging symbols to save space #:configure-flags (list "-DPORT=GTK" @@ -299,6 +299,13 @@ acceleration in mind, leveraging common 3D graphics APIs for best performance.") (lambda* (#:key inputs #:allow-other-keys) (setenv "CC" "clang") (setenv "CXX" "clang++") + ;; XXX Until we switch back to using GCC, + ;; work around <https://bugs.gnu.org/51591>. + ,@(if (string=? "i686-linux" (%current-system)) + '((substitute* "Source/WTF/wtf/CheckedArithmetic.h" + (("#define USE_MUL_OVERFLOW 1") + "#define USE_MUL_OVERFLOW 0"))) + '()) #t)) (add-after 'install 'move-doc-files (lambda* (#:key outputs #:allow-other-keys) -- 2.31.1
-- Disinformation flourishes because many people care deeply about injustice but very few check the facts. Ask me about <https://stallmansupport.org>.
