From ju.o at free.fr Wed Feb 28 10:06:57 2024 From: ju.o at free.fr (Julien Olivain) Date: Wed, 28 Feb 2024 19:06:57 +0100 Subject: [syslinux] [PATCH 1/1] stddef.h: add wchar_t type definition Message-ID: <20240228180657.6758-1-ju.o@free.fr> Syslinux fail to build with gnu-efi >= 3.0.16 with error: In file included from /host/i686-buildroot-linux-gnu/sysroot/usr/include/efi/efi.h:44, from /build/syslinux-6.03/efi/efi.h:23, from /build/syslinux-6.03/efi/adv.h:4, from /build/syslinux-6.03/efi/adv.c:29: /host/i686-buildroot-linux-gnu/sysroot/usr/include/efi/ia32/efibind.h:90:9: error: unknown type name 'wchar_t' typedef wchar_t CHAR16; ^~~~~~~ This is because gnu-efi started to use the "wchar_t" type from the toolchain's header, in commit [1]. Before this commit, gnu-efi was defining the type as "short". Syslinux is including its own minimal stddef.h file, which masks the one provided by the toolchain. See [2]. This file does not have a type definition for "wchar_t". Finally, the POSIX header is supposed to provide this "wchar_t" type definition. See [3]. This commit fixes the issue by adding the "wchar_t" type definition in the com32/include/stddef.h header. Since Syslinux has "-fshort-wchar" in its CFLAGS (see [4]), "wchar_t" is simply defined as "short". This also follow the previous gnu-efi < 3.0.16 behavior. This issue was seen in Buildroot Linux, in [5]. [1] https://sourceforge.net/p/gnu-efi/code/ci/189200d0b0f6fff473d302880d9569f45d4d8c4d [2] https://repo.or.cz/syslinux.git/blob/refs/tags/syslinux-6.03:/com32/include/stddef.h [3] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stddef.h.html [4] https://repo.or.cz/syslinux.git/blob/refs/tags/syslinux-6.03:/mk/efi.mk#l27 [5] https://lists.buildroot.org/pipermail/buildroot/2024-February/685971.html Signed-off-by: Julien Olivain --- com32/include/stddef.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/com32/include/stddef.h b/com32/include/stddef.h index f52d62f3..437b11f2 100644 --- a/com32/include/stddef.h +++ b/com32/include/stddef.h @@ -29,4 +29,6 @@ */ #define container_of(p, c, m) ((c *)((char *)(p) - offsetof(c,m))) +typedef short wchar_t; + #endif /* _STDDEF_H */ -- 2.44.0