From 28def3edbaad2fab478185ee6cf3399b26a3be4b Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Wed, 19 Jun 2024 12:38:41 +0000 Subject: libxcrypt: correct the check for a working libucontext.h The test fails with GCC 14.1 due to an incompatible pointer assignment, take a patch submitted upstream to fix this. (From OE-Core rev: 054304ecb3a8a8ed523bd149f70ed468cf613178) Signed-off-by: Ross Burton Signed-off-by: Alexandre Belloni Signed-off-by: Richard Purdie --- .../libxcrypt/files/configure-c99.patch | 39 ++++++++++++++++++++++ meta/recipes-core/libxcrypt/libxcrypt.inc | 3 +- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-core/libxcrypt/files/configure-c99.patch diff --git a/meta/recipes-core/libxcrypt/files/configure-c99.patch b/meta/recipes-core/libxcrypt/files/configure-c99.patch new file mode 100644 index 0000000000..b77ea7af07 --- /dev/null +++ b/meta/recipes-core/libxcrypt/files/configure-c99.patch @@ -0,0 +1,39 @@ +From cfe9f4d6b0a5d10a15e10e987d528c5c513a42f1 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Tue, 19 Dec 2023 11:00:11 +0100 +Subject: [PATCH] configure: Only text the makecontext signature we need + +The test/explicit-bzero.c test uses a start routine without any +arguments. There is no need for the multi-argument version. + +This avoids a build failure with glibc and future compilers. +The GNU C library declares the makecontext callback of +type void (*) (void), so no cast is needed. On other systems, +the type may be the (currently distinct) type void (*) (), +but given that this only affects the ability to execute a test, +no further machinery is added here to detect that different type. + +Upstream-Status: Submitted [https://github.com/besser82/libxcrypt/pull/178/] +Signed-off-by: Ross Burton +--- + configure.ac | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 016997c..4b8afd8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -303,13 +303,11 @@ AS_IF([test $ac_cv_header_ucontext_h = yes], + #include + static int x; + static void fn1(void) {} +-static void fn2(int a, int b) { x = a - b; } + ]], [[ + ucontext_t uc1, uc2; + if (getcontext(&uc1)) return 1; + if (setcontext(&uc1)) return 1; + makecontext(&uc1, fn1, 0); +- makecontext(&uc2, fn2, 2, 1, 1); + if (swapcontext(&uc1, &uc2)) return 1; + return x; + ]])], diff --git a/meta/recipes-core/libxcrypt/libxcrypt.inc b/meta/recipes-core/libxcrypt/libxcrypt.inc index ba93d91aef..ee6875aa05 100644 --- a/meta/recipes-core/libxcrypt/libxcrypt.inc +++ b/meta/recipes-core/libxcrypt/libxcrypt.inc @@ -13,7 +13,8 @@ SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH};protocol= SRCREV = "f531a36aa916a22ef2ce7d270ba381e264250cbf" SRCBRANCH ?= "master" -SRC_URI += "file://fix_cflags_handling.patch" +SRC_URI += "file://fix_cflags_handling.patch \ + file://configure-c99.patch" PROVIDES = "virtual/crypt" -- cgit v1.2.3-54-g00ecf