
UEFI expects strings to be UTF-16. So add an option so that when EFI_LOADER is enabled, we can use the expected unicode string size.
Signed-off-by: Rob Clark robdclark@gmail.com --- Kconfig | 8 ++++++++ Makefile | 4 ++++ lib/efi_loader/Kconfig | 1 + 3 files changed, 13 insertions(+)
diff --git a/Kconfig b/Kconfig index c1451bceda..7319f1fa94 100644 --- a/Kconfig +++ b/Kconfig @@ -53,6 +53,14 @@ config CC_OPTIMIZE_FOR_SIZE
This option is enabled by default for U-Boot.
+config CC_SHORT_WCHAR + bool "Use 16b wchar" + default n + help + Enabling this option will pass "-fshort-wchar" to gcc, for + 16bit unicode strings. This is used by EFI_LOADER, as the + UEFI spec defines strings to be UTF-16. + config DISTRO_DEFAULTS bool "Select defaults suitable for booting general purpose Linux distributions" default y if ARCH_SUNXI || TEGRA diff --git a/Makefile b/Makefile index 50a002e72f..91b11f5a7b 100644 --- a/Makefile +++ b/Makefile @@ -590,6 +590,10 @@ else KBUILD_CFLAGS += -O2 endif
+ifdef CONFIG_CC_SHORT_WCHAR +KBUILD_CFLAGS += -fshort-wchar +endif + KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks)
diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig index d2b6327119..e28ef51ad4 100644 --- a/lib/efi_loader/Kconfig +++ b/lib/efi_loader/Kconfig @@ -1,6 +1,7 @@ config EFI_LOADER bool "Support running EFI Applications in U-Boot" depends on (ARM || X86) && OF_LIBFDT + select CC_SHORT_WCHAR default y help Select this option if you want to run EFI applications (like grub2)