aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Chow <achow101-github@achow101.com>2022-08-09 16:46:03 -0400
committerAndrew Chow <achow101-github@achow101.com>2022-08-09 16:46:24 -0400
commit313ea18e5e72df185935d06491dd823163eefa87 (patch)
treee62d194c6cbd7fdd9c9f154469c0549cb0d8214f
parenta33ec8a6935102f0fad2c8132277234b0b63d852 (diff)
parentfc77b2a41dd97561d76c89c74e6850c6a1085ce5 (diff)
downloadbitcoin-313ea18e5e72df185935d06491dd823163eefa87.tar.xz
Merge bitcoin/bitcoin#25799: [23.x] guix: patch NSIS to remove .reloc sections from install stubs
fc77b2a41dd97561d76c89c74e6850c6a1085ce5 guix: patch NSIS to remove .reloc sections from install stubs (fanquake) Pull request description: Backport of #25788 to the 23.x branch. Guix Build (x86_64): ```bash 5533c15a0084dfc174b68620a638f5499677be20eafdb1261457f7759298abdc guix-build-fc77b2a41dd9/output/dist-archive/bitcoin-fc77b2a41dd9.tar.gz b67742b17aa813350051635f1e0a9b27921deb22c40d89c8d108fd809619826c guix-build-fc77b2a41dd9/output/x86_64-w64-mingw32/SHA256SUMS.part 34e06ab6fbcce2508095d6899daf9c38b962df1a042d0bedee49169f394d47a5 guix-build-fc77b2a41dd9/output/x86_64-w64-mingw32/bitcoin-fc77b2a41dd9-win64-debug.zip 63e1e7c1aa62577a21606c789bdaf983352c5285eec5722608cf7a3240a25d6a guix-build-fc77b2a41dd9/output/x86_64-w64-mingw32/bitcoin-fc77b2a41dd9-win64-setup-unsigned.exe 0ae26c5bc2f2aa86c451d3cfa3fbdbd73edab6136fd8d6510cd1c47a833973b7 guix-build-fc77b2a41dd9/output/x86_64-w64-mingw32/bitcoin-fc77b2a41dd9-win64-unsigned.tar.gz ddb1feb2541d1a4922a62997224e965a3e79c7233c75106eb8c7ad76eff6cf89 guix-build-fc77b2a41dd9/output/x86_64-w64-mingw32/bitcoin-fc77b2a41dd9-win64.zip ``` Guix Build (arm64): ```bash 5533c15a0084dfc174b68620a638f5499677be20eafdb1261457f7759298abdc guix-build-fc77b2a41dd9/output/dist-archive/bitcoin-fc77b2a41dd9.tar.gz 3c5cb927e397d14f39bed24480b6800d946854c376d35cfb7a9dd635d45a5d6b guix-build-fc77b2a41dd9/output/x86_64-w64-mingw32/SHA256SUMS.part b520c2e9f4c29fe711225c737b4c16e2ae933d5954cfb15cec554e1e0b57b061 guix-build-fc77b2a41dd9/output/x86_64-w64-mingw32/bitcoin-fc77b2a41dd9-win64-debug.zip 63e1e7c1aa62577a21606c789bdaf983352c5285eec5722608cf7a3240a25d6a guix-build-fc77b2a41dd9/output/x86_64-w64-mingw32/bitcoin-fc77b2a41dd9-win64-setup-unsigned.exe 0ae26c5bc2f2aa86c451d3cfa3fbdbd73edab6136fd8d6510cd1c47a833973b7 guix-build-fc77b2a41dd9/output/x86_64-w64-mingw32/bitcoin-fc77b2a41dd9-win64-unsigned.tar.gz 1447a28a582c0e5f2dd03ce22ecf078c6398142b3a2be2de2347a5f095f14d5b guix-build-fc77b2a41dd9/output/x86_64-w64-mingw32/bitcoin-fc77b2a41dd9-win64.zip ``` ACKs for top commit: achow101: ACK fc77b2a41dd97561d76c89c74e6850c6a1085ce5 hebasto: ACK fc77b2a41dd97561d76c89c74e6850c6a1085ce5, `bitcoin-fc77b2a41dd9-win64-setup-unsigned.exe` tested on on Windows 11 Pro 21H2 with the "_Force randomization for images (Mandatory ASLR)_" option being set to "_On by default_". jarolrod: ACK fc77b2a41dd97561d76c89c74e6850c6a1085ce5 Tree-SHA512: 11000a2236532753a025bfa4ed4dadbbf3432d39b35edcbdd6d09a1b69621331cc43c8fef1bf0ad80909335588535eb741e43ce1f516101c415175e378815579
-rw-r--r--contrib/guix/manifest.scm3
-rw-r--r--contrib/guix/patches/nsis-disable-installer-reloc.patch30
2 files changed, 32 insertions, 1 deletions
diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm
index 11bfe80b1d..b1de5330b9 100644
--- a/contrib/guix/manifest.scm
+++ b/contrib/guix/manifest.scm
@@ -201,7 +201,8 @@ chain for " target " development."))
(define (make-nsis-for-gcc-10 base-nsis)
(package-with-extra-patches base-nsis
- (search-our-patches "nsis-gcc-10-memmove.patch")))
+ (search-our-patches "nsis-gcc-10-memmove.patch"
+ "nsis-disable-installer-reloc.patch")))
(define-public lief
(package
diff --git a/contrib/guix/patches/nsis-disable-installer-reloc.patch b/contrib/guix/patches/nsis-disable-installer-reloc.patch
new file mode 100644
index 0000000000..4914527e56
--- /dev/null
+++ b/contrib/guix/patches/nsis-disable-installer-reloc.patch
@@ -0,0 +1,30 @@
+Patch NSIS so that it's installer stubs, produced at NSIS build time,
+do not contain .reloc sections, which will exist by default when using
+binutils/ld 2.36+.
+
+This ultimately fixes an issue when running the installer with the
+"Force randomization for images (Mandatory ASLR)" setting active.
+
+This patch has not yet been sent upstream, because it's not clear if this
+is the best fix, for the underlying issue, which seems to be that makensis
+doesn't account for .reloc sections when it builds installers.
+
+The existence of a reloc section shouldn't be a problem, and, if anything,
+is actually a requirement for working ASLR. All other Windows binaries we
+produce contain them, and function correctly when under the same
+"Force randomization for images (Mandatory ASLR)" setting.
+
+See:
+https://github.com/bitcoin/bitcoin/issues/25726
+https://sourceforge.net/p/nsis/bugs/1131/
+
+--- a/SCons/Config/gnu
++++ b/SCons/Config/gnu
+@@ -102,6 +102,7 @@ stub_env.Append(LINKFLAGS = ['-mwindows']) # build windows executables
+ stub_env.Append(LINKFLAGS = ['$NODEFLIBS_FLAG']) # no standard libraries
+ stub_env.Append(LINKFLAGS = ['$ALIGN_FLAG']) # 512 bytes align
+ stub_env.Append(LINKFLAGS = ['$MAP_FLAG']) # generate map file
++stub_env.Append(LINKFLAGS = ['-Wl,--disable-reloc-section'])
+
+ conf = FlagsConfigure(stub_env)
+ conf.CheckCompileFlag('-fno-tree-loop-distribute-patterns') # GCC 10: Don't generate msvcrt!memmove calls (bug #1248)