On Thu, Aug 10, 2023 at 7:36 AM Khem Raj <[email protected]> wrote:
>
>
>
> On Thu, Aug 10, 2023 at 6:05 AM Alexandre Belloni 
> <[email protected]> wrote:
>>
>> Hello,
>>
>> I tested this with the meson/systemd series from Ross and it actually
>> breaks the build:
>>
>> https://autobuilder.yoctoproject.org/typhoon/#/builders/64/builds/7581/steps/12/logs/stdio
>
>
> Patch applies only to musl builds did you test a musl + systemd

ah 32bit, let me try to reproduce.

>>
>>
>>
>> On 09/08/2023 14:02:27-0700, Khem Raj wrote:
>> > Signed-off-by: Khem Raj <[email protected]>
>> > ---
>> >  .../0001-efi-Use-char16_t-on-musl.patch       | 79 +++++++++++++++++++
>> >  meta/recipes-core/systemd/systemd-boot_254.bb |  2 +
>> >  2 files changed, 81 insertions(+)
>> >  create mode 100644 
>> > meta/recipes-core/systemd/systemd-boot/0001-efi-Use-char16_t-on-musl.patch
>> >
>> > diff --git 
>> > a/meta/recipes-core/systemd/systemd-boot/0001-efi-Use-char16_t-on-musl.patch
>> >  
>> > b/meta/recipes-core/systemd/systemd-boot/0001-efi-Use-char16_t-on-musl.patch
>> > new file mode 100644
>> > index 00000000000..1988d50ac90
>> > --- /dev/null
>> > +++ 
>> > b/meta/recipes-core/systemd/systemd-boot/0001-efi-Use-char16_t-on-musl.patch
>> > @@ -0,0 +1,79 @@
>> > +From efe1720de61534c814580fec61fe0025308482b2 Mon Sep 17 00:00:00 2001
>> > +From: Khem Raj <[email protected]>
>> > +Date: Tue, 8 Aug 2023 00:57:12 -0700
>> > +Subject: [PATCH] efi: Use char16_t on musl
>> > +
>> > +musl does not support configurations with under-sized definitions of
>> > +types like 16-bit wchar_t or 32-bit off_t. Only the sizes that can
>> > +represent the full range of values are supported. musl does however
>> > +have the C11 uchar.h functions which can operate on char16_t, so you
>> > +could use char16_t and the corresponding c16 conversion functions
>> > +instead of the wc versions
>> > +
>> > +Upstream-Status: Inappropriate [Musl specific]
>> > +Signed-off-by: Khem Raj <[email protected]>
>> > +---
>> > + src/boot/efi/efi-string.c                 | 2 +-
>> > + src/boot/efi/efi.h                        | 2 ++
>> > + src/boot/efi/meson.build                  | 1 -
>> > + src/fundamental/string-util-fundamental.h | 4 ++++
>> > + 4 files changed, 7 insertions(+), 2 deletions(-)
>> > +
>> > +diff --git a/src/boot/efi/efi-string.c b/src/boot/efi/efi-string.c
>> > +index 4400591255..421b2c262d 100644
>> > +--- a/src/boot/efi/efi-string.c
>> > ++++ b/src/boot/efi/efi-string.c
>> > +@@ -735,7 +735,7 @@ static bool handle_format_specifier(FormatContext 
>> > *ctx, SpecifierContext *sp) {
>> > +         case 's':
>> > +                 if (sp->long_arg) {
>> > +                         sp->wstr = va_arg(ctx->ap, const wchar_t *) ?: 
>> > L"(null)";
>> > +-                        sp->len = wcsnlen(sp->wstr, sp->len);
>> > ++                        sp->len = wcsnlen((char16_t*)sp->wstr, sp->len);
>> > +                 } else {
>> > +                         sp->str = va_arg(ctx->ap, const char *) ?: 
>> > "(null)";
>> > +                         sp->len = strnlen8(sp->str, sp->len);
>> > +diff --git a/src/boot/efi/efi.h b/src/boot/efi/efi.h
>> > +index 5c34668383..459f675ea5 100644
>> > +--- a/src/boot/efi/efi.h
>> > ++++ b/src/boot/efi/efi.h
>> > +@@ -21,7 +21,9 @@ assert_cc(sizeof(uint8_t) == 1);
>> > + assert_cc(sizeof(uint16_t) == 2);
>> > + assert_cc(sizeof(uint32_t) == 4);
>> > + assert_cc(sizeof(uint64_t) == 8);
>> > ++#if defined(__linux__) && defined(__GLIBC__)
>> > + assert_cc(sizeof(wchar_t) == 2);
>> > ++#endif
>> > + assert_cc(sizeof(char16_t) == 2);
>> > + assert_cc(sizeof(char32_t) == 4);
>> > + assert_cc(sizeof(size_t) == sizeof(void *));
>> > +diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build
>> > +index 1c52629651..4a64838295 100644
>> > +--- a/src/boot/efi/meson.build
>> > ++++ b/src/boot/efi/meson.build
>> > +@@ -132,7 +132,6 @@ efi_c_args = [
>> > +         '-DSD_BOOT=1',
>> > +         '-ffreestanding',
>> > +         '-fno-strict-aliasing',
>> > +-        '-fshort-wchar',
>> > +         '-include', 'efi_config.h',
>> > + ]
>> > +
>> > +diff --git a/src/fundamental/string-util-fundamental.h 
>> > b/src/fundamental/string-util-fundamental.h
>> > +index 9019542b16..1b46f42995 100644
>> > +--- a/src/fundamental/string-util-fundamental.h
>> > ++++ b/src/fundamental/string-util-fundamental.h
>> > +@@ -16,7 +16,11 @@
>> > + #  define strncmp strncmp16
>> > + #  define strcasecmp strcasecmp16
>> > + #  define strncasecmp strncasecmp16
>> > ++#if defined (__linux__) && !defined(__GLIBC__)
>> > ++#  define STR_C(str)       (u ## str)
>> > ++#else
>> > + #  define STR_C(str)       (L ## str)
>> > ++#endif
>> > + typedef char16_t sd_char;
>> > + #else
>> > + #  define STR_C(str)       (str)
>> > +--
>> > +2.41.0
>> > +
>> > diff --git a/meta/recipes-core/systemd/systemd-boot_254.bb 
>> > b/meta/recipes-core/systemd/systemd-boot_254.bb
>> > index 5d69cf83abc..ae86450d2a6 100644
>> > --- a/meta/recipes-core/systemd/systemd-boot_254.bb
>> > +++ b/meta/recipes-core/systemd/systemd-boot_254.bb
>> > @@ -1,6 +1,8 @@
>> >  require systemd.inc
>> >  FILESEXTRAPATHS =. "${FILE_DIRNAME}/systemd:"
>> >
>> > +SRC_URI:append:libc-musl = " file://0001-efi-Use-char16_t-on-musl.patch "
>> > +
>> >  require conf/image-uefi.conf
>> >
>> >  DEPENDS = "intltool-native libcap util-linux gperf-native 
>> > python3-jinja2-native python3-pyelftools-native"
>> > --
>> > 2.41.0
>> >
>>
>> >
>> > 
>> >
>>
>>
>> --
>> Alexandre Belloni, co-owner and COO, Bootlin
>> Embedded Linux and Kernel engineering
>> https://bootlin.com
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#185757): 
https://lists.openembedded.org/g/openembedded-core/message/185757
Mute This Topic: https://lists.openembedded.org/mt/100652047/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to