From 4a0180f434d7378fdce98fabc08f9fbf010c521e Mon Sep 17 00:00:00 2001 From: Fernando Rodrigues Date: Wed, 26 Mar 2025 11:42:48 -0300 Subject: [PATCH] nixos/xen: dehardcode the .pad section from the UKI builder Upstream, intentionally or not, no longer appends the EFI image with a .pad section for us to hook the rest of the UKI to. This simply dehardcodes .pad from the awk script, instead using the very last section in the binary. (Currently .reloc) Co-authored-by: Yaroslav Bolyukin Signed-off-by: Fernando Rodrigues --- nixos/modules/virtualisation/xen-boot-builder.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nixos/modules/virtualisation/xen-boot-builder.sh b/nixos/modules/virtualisation/xen-boot-builder.sh index 1b7c1470f6eb..f8363b337662 100755 --- a/nixos/modules/virtualisation/xen-boot-builder.sh +++ b/nixos/modules/virtualisation/xen-boot-builder.sh @@ -1,6 +1,8 @@ # This script is called by ./xen-dom0.nix to create the Xen boot entries. # shellcheck shell=bash +export LC_ALL=C + # Handle input argument and exit if the flag is invalid. See virtualisation.xen.efi.bootBuilderVerbosity below. [[ $# -ne 1 ]] && echo -e "\e[1;31merror:\e[0m xenBootBuilder must be called with exactly one verbosity argument. See the \e[1;34mvirtualisation.xen.efi.bootBuilderVerbosity\e[0m option." && exit 1 case "$1" in @@ -89,7 +91,8 @@ EOF # https://xenbits.xenproject.org/docs/unstable/misc/efi.html. [ "$1" = "debug" ] && echo -e "\e[1;34mxenBootBuilder:\e[0m making Xen UKI..." xenEfi=$(jq -re '."org.xenproject.bootspec.v1".xen' "$bootspecFile") - padding=$(objdump --header --section=".pad" "$xenEfi" | awk '/\.pad/ { printf("0x%016x\n", strtonum("0x"$3) + strtonum("0x"$4))};') + finalSection=$(objdump --header --wide "$xenEfi" | tail -n +6 | sort --key="4,4" | tail -n 1 | grep -Eo '\.[a-z]*') + padding=$(objdump --header --section="$finalSection" "$xenEfi" | awk -v section="$finalSection" '$0 ~ section { printf("0x%016x\n", and(strtonum("0x"$3) + strtonum("0x"$4) + 0xfff, compl(0xfff)))};') [ "$1" = "debug" ] && echo " - padding: $padding" objcopy \ --add-section .config="$tmpCfg" \