From f12d27872a3cc2d953ee6173d68121ab8d5ea1d5 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Thu, 28 Jan 2021 14:11:50 +0100 Subject: [PATCH] Patch genode_dyn.ld to not emit PHDR segments This is important, because otherwise binutils will refuse to strip Genode binaries, which causes runtime closures to explode, which causes a giant image.elf, which takes so long to load that tests break. --- packages/genodelabs/default.nix | 6 +++++- packages/genodelabs/patches/phdr.patch | 27 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 packages/genodelabs/patches/phdr.patch diff --git a/packages/genodelabs/default.nix b/packages/genodelabs/default.nix index 27dba2c..485db0d 100644 --- a/packages/genodelabs/default.nix +++ b/packages/genodelabs/default.nix @@ -35,7 +35,11 @@ let version = builtins.substring 0 7 upstreamSources.rev; src = upstreamSources; nativeBuildInputs = [ expect gnumake tcl ]; - patches = [ ./patches/binary-labels.patch ./patches/label-fail.patch ]; + patches = [ + ./patches/binary-labels.patch + ./patches/label-fail.patch + ./patches/phdr.patch + ]; configurePhase = '' patchShebangs ./tool substituteInPlace repos/base/etc/tools.conf \ diff --git a/packages/genodelabs/patches/phdr.patch b/packages/genodelabs/patches/phdr.patch new file mode 100644 index 0000000..4eb4399 --- /dev/null +++ b/packages/genodelabs/patches/phdr.patch @@ -0,0 +1,27 @@ +From 45c73b01d4609f59ca576141bc836baad8e468ed Mon Sep 17 00:00:00 2001 +From: Emery Hemingway +Date: Thu, 28 Jan 2021 13:39:29 +0100 +Subject: [PATCH] genode_dyn.ld: do not emit PHDR segment + +Recent version of binutils check that PHDR segments are covered +by a LOAD segment. In this case the unloaded PHDR segment can be +ommited. +--- + repos/base/src/ld/genode_dyn.ld | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/repos/base/src/ld/genode_dyn.ld b/repos/base/src/ld/genode_dyn.ld +index 5fa6ddc29e..57ec92f0f6 100644 +--- a/repos/base/src/ld/genode_dyn.ld ++++ b/repos/base/src/ld/genode_dyn.ld +@@ -18,7 +18,6 @@ + + PHDRS + { +- phdr PT_PHDR PHDRS; + interp PT_INTERP; + ro PT_LOAD; + rw PT_LOAD; +-- +2.29.2 +