diff --git a/meta-oe/recipes-support/gengetopt/gengetopt/0001-gnulib-Do-not-expand-glibc-C23-qualifier-generic-macros.patch b/meta-oe/recipes-support/gengetopt/gengetopt/0001-gnulib-Do-not-expand-glibc-C23-qualifier-generic-macros.patch new file mode 100644 index 0000000000..2c3ab09006 --- /dev/null +++ b/meta-oe/recipes-support/gengetopt/gengetopt/0001-gnulib-Do-not-expand-glibc-C23-qualifier-generic-macros.patch @@ -0,0 +1,121 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 12 Nov 2026 00:00:00 -0800 +Subject: [PATCH] gnulib: Do not expand glibc C23 qualifier-generic macros + +glibc 2.43+ defines bsearch(), memchr() and friends as C23 +qualifier-generic macros, which breaks the ISO C N3322 redeclarations +in the bundled gnulib stdlib.h and string.h when building with GCC 15: + + ./stdlib.h:820:20: error: expected identifier or '(' before '_Generic' + ../gl/string.h:801:20: error: expected identifier or '(' before '_Generic' + +Parenthesize the function names so the macros are not expanded, as +gnulib does with _GL_FUNCDECL_SYS_NAME. + +Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=df17f4f37ed3] +Signed-off-by: Khem Raj +--- + gl/stdlib.in.h | 4 ++-- + gl/string.in.h | 24 ++++++++++++------------ + 2 files changed, 14 insertions(+), 14 deletions(-) + +diff --git a/gl/stdlib.in.h b/gl/stdlib.in.h +index 1342db4..c973f9b 100644 +--- a/gl/stdlib.in.h ++++ b/gl/stdlib.in.h +@@ -237,11 +237,11 @@ _GL_INLINE_HEADER_BEGIN + + /* Declarations for ISO C N3322. */ + #if defined __GNUC__ && __GNUC__ >= 15 && !defined __clang__ +-_GL_EXTERN_C void *bsearch (const void *__key, ++_GL_EXTERN_C void *(bsearch) (const void *__key, + const void *__base, size_t __nmemb, size_t __size, + int (*__compare) (const void *, const void *)) + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 3) _GL_ARG_NONNULL ((5)); +-_GL_EXTERN_C void qsort (void *__base, size_t __nmemb, size_t __size, ++_GL_EXTERN_C void (qsort) (void *__base, size_t __nmemb, size_t __size, + int (*__compare) (const void *, const void *)) + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 2) _GL_ARG_NONNULL ((4)); + #endif +diff --git a/gl/string.in.h b/gl/string.in.h +index e3d94b7..b87f1e0 100644 +--- a/gl/string.in.h ++++ b/gl/string.in.h +@@ -214,64 +214,64 @@ _GL_EXTERN_C void free (void *); + + /* Declarations for ISO C N3322. */ + #if defined __GNUC__ && __GNUC__ >= 15 && !defined __clang__ +-_GL_EXTERN_C void *memcpy (void *__dest, const void *__src, size_t __n) ++_GL_EXTERN_C void *(memcpy) (void *__dest, const void *__src, size_t __n) + # if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2 + _GL_ATTRIBUTE_NOTHROW + # endif + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3) + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 3); +-_GL_EXTERN_C void *memccpy (void *__dest, const void *__src, int __c, size_t __n) ++_GL_EXTERN_C void *(memccpy) (void *__dest, const void *__src, int __c, size_t __n) + # if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2 + _GL_ATTRIBUTE_NOTHROW + # endif + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 4) + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 4); +-_GL_EXTERN_C void *memmove (void *__dest, const void *__src, size_t __n) ++_GL_EXTERN_C void *(memmove) (void *__dest, const void *__src, size_t __n) + # if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2 + _GL_ATTRIBUTE_NOTHROW + # endif + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3) + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 3); +-_GL_EXTERN_C char *strncpy (char *__dest, const char *__src, size_t __n) ++_GL_EXTERN_C char *(strncpy) (char *__dest, const char *__src, size_t __n) + # if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2 + _GL_ATTRIBUTE_NOTHROW + # endif + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3) + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 3); +-_GL_EXTERN_C char *strndup (const char *__s, size_t __n) ++_GL_EXTERN_C char *(strndup) (const char *__s, size_t __n) + # if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2 + _GL_ATTRIBUTE_NOTHROW + # endif + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 2); +-_GL_EXTERN_C char *strncat (char *__dest, const char *__src, size_t __n) ++_GL_EXTERN_C char *(strncat) (char *__dest, const char *__src, size_t __n) + # if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2 + _GL_ATTRIBUTE_NOTHROW + # endif + _GL_ARG_NONNULL ((1)) _GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 3); +-_GL_EXTERN_C int memcmp (const void *__s1, const void *__s2, size_t __n) ++_GL_EXTERN_C int (memcmp) (const void *__s1, const void *__s2, size_t __n) + # if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2 + _GL_ATTRIBUTE_NOTHROW + # endif + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3) + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 3); +-_GL_EXTERN_C int strncmp (const char *__s1, const char *__s2, size_t __n) ++_GL_EXTERN_C int (strncmp) (const char *__s1, const char *__s2, size_t __n) + # if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2 + _GL_ATTRIBUTE_NOTHROW + # endif + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3) + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 3); + # ifndef __cplusplus +-_GL_EXTERN_C void *memchr (const void *__s, int __c, size_t __n) ++_GL_EXTERN_C void *(memchr) (const void *__s, int __c, size_t __n) + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3); +-_GL_EXTERN_C void *memrchr (const void *__s, int __c, size_t __n) ++_GL_EXTERN_C void *(memrchr) (const void *__s, int __c, size_t __n) + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3); + # endif +-_GL_EXTERN_C void *memset (void *__s, int __c, size_t __n) ++_GL_EXTERN_C void *(memset) (void *__s, int __c, size_t __n) + # if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2 + _GL_ATTRIBUTE_NOTHROW + # endif + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3); +-_GL_EXTERN_C void *memset_explicit (void *__s, int __c, size_t __n) ++_GL_EXTERN_C void *(memset_explicit) (void *__s, int __c, size_t __n) + _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3); + #endif + diff --git a/meta-oe/recipes-support/gengetopt/gengetopt_2.23.bb b/meta-oe/recipes-support/gengetopt/gengetopt_2.23.1.bb similarity index 74% rename from meta-oe/recipes-support/gengetopt/gengetopt_2.23.bb rename to meta-oe/recipes-support/gengetopt/gengetopt_2.23.1.bb index 01d85eb2d6..84dd1d5e14 100644 --- a/meta-oe/recipes-support/gengetopt/gengetopt_2.23.bb +++ b/meta-oe/recipes-support/gengetopt/gengetopt_2.23.1.bb @@ -6,9 +6,11 @@ HOMEPAGE = "https://www.gnu.org/software/gengetopt/gengetopt.html" LICENSE = "GPL-3.0-or-later" LIC_FILES_CHKSUM = "file://COPYING;md5=ff95bfe019feaf92f524b73dd79e76eb" -SRC_URI = "${GNU_MIRROR}/gengetopt/${BPN}-${PV}.tar.xz" +SRC_URI = "${GNU_MIRROR}/gengetopt/${BPN}-${PV}.tar.xz \ + file://0001-gnulib-Do-not-expand-glibc-C23-qualifier-generic-macros.patch \ + " -SRC_URI[sha256sum] = "b941aec9011864978dd7fdeb052b1943535824169d2aa2b0e7eae9ab807584ac" +SRC_URI[sha256sum] = "3b9def48422bd45f78af95936200b7f9287369a3db76c4907c42fe10f4922ab6" # ftpmirror.gnu.org redirects to a random mirror, several of which serve a # non-Apache index the auto-derived regex cannot parse. Pin the check to the