The loader prints UEFI strings with %ls in a good two dozen places: the variable name in the error path of efi_var_restore(), the EFI_ENTRY() traces of the variable, console, HII and unicode collation protocols and the exit data of a failed EFI payload.
%ls only formats UTF-16 when PRINTF_WCHAR is enabled; otherwise vsprintf falls back to treating the argument as a C string, which for a UTF-16 string ends at the high byte of its first character: efi-loader: var-file: Failed to set EFI variable V instead of "Var0430". EFI_PAYLOAD already selects the symbol, do the same for EFI_LOADER. Assisted-by: Claude:opus-5 Signed-off-by: Ahmad Fatoum <[email protected]> --- efi/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/efi/Kconfig b/efi/Kconfig index b8f118a8812f..920705633cc7 100644 --- a/efi/Kconfig +++ b/efi/Kconfig @@ -38,6 +38,7 @@ config EFI_LOADER select PARTITION_DISK select MEMORY_ATTRIBUTES select CRC32 + select PRINTF_WCHAR help Select this option if you want to run UEFI applications (like GNU GRUB or an EFI-stubbed kernel) on top of barebox. -- 2.47.3
