[U-Boot] [PATCH 0/5] vsprintf and short-wchar for EFI_LOADER

Rob Clark robdclark at gmail.com
Wed Aug 9 23:14:30 UTC 2017

As requested, I've split this out of the larger EFI_LOADER patchset.

This adds two things that the later EFI_LOADER patchset depends on:

1) UUID/GUID support
2) %ls UTF string support, in particular UTF-16.  In the UEFI API,
   all strings are UTF-16

I had started converting this over to using c11 + u"string" literals,
instead of using -fshort-wchar + L"string" literals and %ls, but I
ran into two problems:

1) we lose out on the printf (and friends) va_arg type checking if we
   roll our own custom printf fmt modifier for UTF-16 strings
2) and worse than that, we have to disable -Wformat warnings

So given that we have a significant downside for not just using
-fshort-wchar, and I don't think any really strong argument against,
I am back to thinking that we should just go with -fshort-wchar.

The current patchset has a Kconfig option to opt-in to -fshort-wchar,
which EFI_LOADER selects.  If the consensus is to enable -fshort-wchar
for everything, I'll drop the kconfig part and make it unconditional.

The current version of this patchset and efi-loader patchset are at

  https://github.com/robclark/u-boot.git  vsprintf


  https://github.com/robclark/u-boot.git enough-uefi-for-shim-2

I'll resend the enought-uefi-for-shim-2 patchset after I have a
chance to figure out fs-test.sh and add tests for fs_readdir().

Rob Clark (5):
  Kconfig: add option to build with -fshort-wchar
  lib: add some utf16 handling helpers
  vsprintf.c: add UTF-16 string (%ls) support
  vsprintf.c: add GUID printing
  examples: add fallback memcpy

 Kconfig                      |  8 +++++
 Makefile                     |  4 +++
 examples/api/Makefile        |  2 ++
 examples/api/glue.c          | 12 +++++++
 include/charset.h            | 55 ++++++++++++++++++++++++++++++
 include/config_fallbacks.h   |  1 +
 lib/Makefile                 |  1 +
 lib/charset.c                | 81 ++++++++++++++++++++++++++++++++++++++++++++
 lib/efi_loader/Kconfig       |  1 +
 lib/efi_loader/efi_console.c | 17 ++--------
 lib/vsprintf.c               | 77 ++++++++++++++++++++++++++++++++++++++---
 11 files changed, 241 insertions(+), 18 deletions(-)
 create mode 100644 include/charset.h
 create mode 100644 lib/charset.c


More information about the U-Boot mailing list