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]] -=-=-=-=-=-=-=-=-=-=-=-
