From 7a0b129c41d9fefdbc20d6d04983dd87bb8379e7 Mon Sep 17 00:00:00 2001 From: fanquake Date: Fri, 5 Aug 2022 11:48:15 +0100 Subject: guix: patch NSIS to remove .reloc sections from install stubs With the release of binutils/ld 2.36, ld swapped to much improved default settings when producing windows binaries with mingw-w64. One of these changes was to stop stripping the .reloc section from binaries, which is required for working ASLR. .reloc section stripping is something we've accounted for previously, see #18702. The related upstream discussion is in this thread: https://sourceware.org/bugzilla/show_bug.cgi?id=19011. When we switched to using a newer Guix time-machine in #23778, we begun using binutils 2.37 to produce releases. Since then, our windows installer (produced with makensis) has not functioned correctly when run on a Windows system with the "Force randomization for images (Mandatory ASLR)" option enabled. Note that all of our other release binaries, which all contain .reloc sections, function fine under the same option, so it cannot be just the presence of a .reloc section that is the issue. For now, restore makensis to it's pre-binutils-2.36 behaviour, which fixes the produced installer. The underlying issue can be further investigated in future. --- contrib/guix/manifest.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'contrib/guix/manifest.scm') diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm index a2b1fe1f24..7c45a5b866 100644 --- a/contrib/guix/manifest.scm +++ b/contrib/guix/manifest.scm @@ -194,7 +194,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 (fix-ppc64-nx-default lief) (package-with-extra-patches lief -- cgit v1.2.3