diff options
author | fanquake <fanquake@gmail.com> | 2022-04-13 11:41:45 +0100 |
---|---|---|
committer | fanquake <fanquake@gmail.com> | 2022-04-13 13:49:04 +0100 |
commit | a75b8ec836a5a5c08aebaf2efd99d5c34d033292 (patch) | |
tree | 5bc0385873f408b38decdca44112e65e1814aa6d /contrib/guix/manifest.scm | |
parent | b6253829c1827c6fc011187adafdd49e84a489b2 (diff) | |
download | bitcoin-a75b8ec836a5a5c08aebaf2efd99d5c34d033292.tar.xz |
guix: fix GCC 10.3.0 + mingw-w64 setjmp/longjmp issues
This commit backports a patch to the GCC 10.3.0 we build for Windows
cross-compilation in Guix. The commit has been backported to the GCC
releases/gcc-10 branch, but hasn't yet made it into a release.
The patch corrects a regression from an earlier GCC commit, see:
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=357c4350680bf29f0c7a115424e3da11c53b5582
and
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=074226d5aa86cd3de517014acfe34c7f69a2ccc7,
related to the way newer versions of mingw-w64 implement setjmp/longjmp.
Ultimately this was causing a crash for us when Windows users were
viewing the network traffic tab inside the GUI. After some period, long
enough that a buffer would need reallocating, a call into FreeTypes
gray_record_cell() would result in a call to ft_longjmp (longjmp), which
would then trigger a crash.
Fixes: https://github.com/bitcoin-core/gui/issues/582.
See also:
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=e8d1ca7d2c344a411779892616c423e157f4aea8.
https://bugreports.qt.io/browse/QTBUG-93476.
Github-Pull: #24842
Rebased-From: 457148a803cee02897b7428fa7b3eb93eed71e4c
Diffstat (limited to 'contrib/guix/manifest.scm')
-rw-r--r-- | contrib/guix/manifest.scm | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm index 5bf8949c37..11bfe80b1d 100644 --- a/contrib/guix/manifest.scm +++ b/contrib/guix/manifest.scm @@ -166,9 +166,10 @@ desirable for building Bitcoin Core release binaries." (define (make-gcc-without-newlib gcc) (package-with-extra-configure-variable gcc "--with-newlib" "no")) -(define (make-mingw-w64-cross-gcc-vmov-alignment cross-gcc) +(define (make-mingw-w64-cross-gcc cross-gcc) (package-with-extra-patches cross-gcc - (search-our-patches "vmov-alignment.patch"))) + (search-our-patches "vmov-alignment.patch" + "gcc-broken-longjmp.patch"))) (define (make-mingw-pthreads-cross-toolchain target) "Create a cross-compilation toolchain package for TARGET" @@ -176,7 +177,7 @@ desirable for building Bitcoin Core release binaries." (pthreads-xlibc mingw-w64-x86_64-winpthreads) (pthreads-xgcc (make-gcc-with-pthreads (cross-gcc target - #:xgcc (make-gcc-without-newlib (make-ssp-fixed-gcc (make-mingw-w64-cross-gcc-vmov-alignment base-gcc))) + #:xgcc (make-gcc-without-newlib (make-ssp-fixed-gcc (make-mingw-w64-cross-gcc base-gcc))) #:xbinutils xbinutils #:libc pthreads-xlibc)))) ;; Define a meta-package that propagates the resulting XBINUTILS, XLIBC, and |