On Haiku, I see the following: In file included from test-random_r.c:21: test-random_r.c:23:18: warning: initialization of 'int (*)(unsigned int, char *, size_t, struct random_data *)' {aka 'int (*)(unsigned int, char *, long unsigned int, struct random_data *)'} from incompatible pointer type 'int (*)(unsigned int, void *, size_t, struct random_data *)' {aka 'int (*)(unsigned int, void *, long unsigned int, struct random_data *)'} [-Wincompatible-pointer-types] 23 | SIGNATURE_CHECK (initstate_r, int, (unsigned int, char *, size_t, | ^~~~~~~~~~~ signature.h:46:57: note: in definition of macro 'SIGNATURE_CHECK2' 46 | _GL_UNUSED static ret (*signature_check ## id) args = fn | ^~ signature.h:39:3: note: in expansion of macro 'SIGNATURE_CHECK1' 39 | SIGNATURE_CHECK1 (fn, ret, args, __LINE__) | ^~~~~~~~~~~~~~~~ test-random_r.c:23:1: note: in expansion of macro 'SIGNATURE_CHECK' 23 | SIGNATURE_CHECK (initstate_r, int, (unsigned int, char *, size_t, | ^~~~~~~~~~~~~~~ test-random_r.c:25:18: warning: initialization of 'int (*)(char *, struct random_data *)' from incompatible pointer type 'int (*)(void *, struct random_data *)' [-Wincompatible-pointer-types] 25 | SIGNATURE_CHECK (setstate_r, int, (char *, struct random_data *)); | ^~~~~~~~~~ signature.h:46:57: note: in definition of macro 'SIGNATURE_CHECK2' 46 | _GL_UNUSED static ret (*signature_check ## id) args = fn | ^~ signature.h:39:3: note: in expansion of macro 'SIGNATURE_CHECK1' 39 | SIGNATURE_CHECK1 (fn, ret, args, __LINE__) | ^~~~~~~~~~~~~~~~ test-random_r.c:25:1: note: in expansion of macro 'SIGNATURE_CHECK' 25 | SIGNATURE_CHECK (setstate_r, int, (char *, struct random_data *)); | ^~~~~~~~~~~~~~~
This different prototype was documented in 2017. I've pushed the attach patch disabling the signature check and updating the documentation to acknowledge current Haiku has this prototype. Collin
>From bdb1601d379c56a915c439fa66adbb64f0cfd4c9 Mon Sep 17 00:00:00 2001 From: Collin Funk <collin.fu...@gmail.com> Date: Tue, 22 Apr 2025 18:46:08 -0700 Subject: [PATCH] random_r tests: Disable signature check on Haiku. * tests/test-random_r.c [__HAIKU__]: Skip initstate_r and setstate_r signature check. * doc/glibc-functions/initstate_r.texi: Remove year. * doc/glibc-functions/setstate_r.texi: Likewise. --- ChangeLog | 8 ++++++++ doc/glibc-functions/initstate_r.texi | 2 +- doc/glibc-functions/setstate_r.texi | 2 +- tests/test-random_r.c | 2 ++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 89250b7739..3ee1063908 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2025-04-22 Collin Funk <collin.fu...@gmail.com> + + random_r tests: Disable signature check on Haiku. + * tests/test-random_r.c [__HAIKU__]: Skip initstate_r and setstate_r + signature check. + * doc/glibc-functions/initstate_r.texi: Remove year. + * doc/glibc-functions/setstate_r.texi: Likewise. + 2025-04-21 Collin Funk <collin.fu...@gmail.com> strsignal tests: Disable signature check on Haiku. diff --git a/doc/glibc-functions/initstate_r.texi b/doc/glibc-functions/initstate_r.texi index 53f2106c0d..8a4fbfa687 100644 --- a/doc/glibc-functions/initstate_r.texi +++ b/doc/glibc-functions/initstate_r.texi @@ -39,5 +39,5 @@ @node initstate_r @item This function has a slightly different (but compatible) declaration on some platforms: -Haiku 2017. +Haiku. @end itemize diff --git a/doc/glibc-functions/setstate_r.texi b/doc/glibc-functions/setstate_r.texi index 3ecd5cf4be..79d7ee2908 100644 --- a/doc/glibc-functions/setstate_r.texi +++ b/doc/glibc-functions/setstate_r.texi @@ -35,5 +35,5 @@ @node setstate_r @item This function has a slightly different (but compatible) declaration on some platforms: -Haiku 2017. +Haiku. @end itemize diff --git a/tests/test-random_r.c b/tests/test-random_r.c index 74f19630f2..1c0ffdac5f 100644 --- a/tests/test-random_r.c +++ b/tests/test-random_r.c @@ -20,9 +20,11 @@ #include "signature.h" SIGNATURE_CHECK (srandom_r, int, (unsigned int, struct random_data *)); +#if !defined __HAIKU__ SIGNATURE_CHECK (initstate_r, int, (unsigned int, char *, size_t, struct random_data *)); SIGNATURE_CHECK (setstate_r, int, (char *, struct random_data *)); +#endif SIGNATURE_CHECK (random_r, int, (struct random_data *, int32_t *)); #include <time.h> -- 2.49.0