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 <[email protected]>
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 <[email protected]>
+
+ 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 <[email protected]>
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