diff options
author | Andrew Chow <achow101-github@achow101.com> | 2022-08-09 16:46:03 -0400 |
---|---|---|
committer | Andrew Chow <achow101-github@achow101.com> | 2022-08-09 16:46:24 -0400 |
commit | 313ea18e5e72df185935d06491dd823163eefa87 (patch) | |
tree | e62d194c6cbd7fdd9c9f154469c0549cb0d8214f | |
parent | a33ec8a6935102f0fad2c8132277234b0b63d852 (diff) | |
parent | fc77b2a41dd97561d76c89c74e6850c6a1085ce5 (diff) | |
download | bitcoin-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.scm | 3 | ||||
-rw-r--r-- | contrib/guix/patches/nsis-disable-installer-reloc.patch | 30 |
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) |