commit:     dec7ddaabb47c81ecddc603fb2819c4c4f5066ea
Author:     Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
AuthorDate: Tue Oct  1 18:34:43 2024 +0000
Commit:     Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Thu Oct 10 14:46:47 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dec7ddaa

kernel-install.eclass: fix objcopy overwriting uki

>From the manual:
If  you do not specify outfile, objcopy creates a temporary file and
destructively renames the result with the name of infile.

We don't want that. Unfortunately we cannot use /dev/null as dump, objcopy
complains, so we dump it in T instead.

Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> gentoo.org>

 eclass/kernel-install.eclass | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/eclass/kernel-install.eclass b/eclass/kernel-install.eclass
index c5f218a46b91..29abb9b419e6 100644
--- a/eclass/kernel-install.eclass
+++ b/eclass/kernel-install.eclass
@@ -650,7 +650,10 @@ kernel-install_extract_from_uki() {
        local uki=${2}
        local out=${3}
 
-       $(tc-getOBJCOPY) "${uki}" --dump-section ".${extract_type}=${out}" ||
+       # objcopy overwrites input if there is no output, dump the output in T.
+       # We unfortunately cannot use /dev/null here
+       $(tc-getOBJCOPY) "${uki}" "${T}/dump.efi" \
+               --dump-section ".${extract_type}=${out}" ||
                die "Failed to extract ${extract_type}"
        chmod 644 "${out}" || die
 }

Reply via email to