All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] package/iozone: fix build without ASYNC_IO with GCC >= 15
@ 2026-10-22 20:59 Yegor Yefremov
  2026-10-22 21:23 ` Thomas Petazzoni via buildroot
  0 siblings, 1 reply; 2+ messages in thread
From: Yegor Yefremov @ 2026-10-22 20:59 UTC (permalink / raw)
  To: buildroot; +Cc: Gilles Talis

With uClibc, iozone is built with the linux-noaio target, where the
async_*() stubs are declared and defined without parameter lists. GCC 15
defaults to C23, where an empty parameter list means the function takes
no arguments, so the build fails:

  iozone.c:8150:32: error: too many arguments to function 'async_write_no_copy'; expected 0, have 7
  iozone.c:9126:31: error: too many arguments to function 'async_read_no_copy'; expected 0, have 8
  iozone.c:20165:1: error: conflicting types for 'async_init'; have 'void(void)'

Add a patch, sent upstream, that gives the stubs full prototypes
matching their ASYNC_IO counterparts. iozone 3.510, the latest release,
still has the same stubs, so a version bump wouldn't help.

This issue has been present since commit 75891397abe6 ("package/gcc:
add support for GCC 15.x"), as GCC 15 is the first version defaulting
to C23. It therefore affects 2025.08 and later, i.e. 2025.11.x,
2026.02.x, 2026.05.x and 2026.08.x when GCC 15 is used. 2025.02.x is
not affected as it doesn't support GCC 15.

Fixes:
https://autobuild.buildroot.org/results/4090fb0d0a3b8bee60707b1672c35dada744bff5

Fixes: 75891397abe60dbe3d82a1ec39654ff81d1b1406 ("package/gcc: add support for GCC 15.x")
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
---
 ...x-build-without-ASYNC_IO-with-GCC-15.patch | 96 +++++++++++++++++++
 1 file changed, 96 insertions(+)
 create mode 100644 package/iozone/0004-Fix-build-without-ASYNC_IO-with-GCC-15.patch

diff --git a/package/iozone/0004-Fix-build-without-ASYNC_IO-with-GCC-15.patch b/package/iozone/0004-Fix-build-without-ASYNC_IO-with-GCC-15.patch
new file mode 100644
index 0000000000..b049ce60ed
--- /dev/null
+++ b/package/iozone/0004-Fix-build-without-ASYNC_IO-with-GCC-15.patch
@@ -0,0 +1,96 @@
+From 0cc510655874362bc95c608021ef7921ae389559 Mon Sep 17 00:00:00 2001
+From: Yegor Yefremov <yegorslists@googlemail.com>
+Date: Thu, 22 Oct 2026 22:16:32 +0200
+Subject: [PATCH] Fix build without ASYNC_IO with GCC >= 15
+
+Without ASYNC_IO (e.g. the linux-noaio target), the async_*() stubs
+are declared and defined without parameter lists. GCC 15 defaults to
+C23, where an empty parameter list means the function takes no
+arguments, so the build fails:
+
+iozone.c:8150:32: error: too many arguments to function 'async_write_no_copy'; expected 0, have 7
+iozone.c:9126:31: error: too many arguments to function 'async_read_no_copy'; expected 0, have 8
+iozone.c:20165:1: error: conflicting types for 'async_init'; have 'void(void)'
+
+Give the stubs full prototypes matching their ASYNC_IO counterparts,
+with the long long * cache pointer used without ASYNC_IO.
+
+Upstream: sent to capps@iozone.org
+Assisted-by: Claude:claude-opus-5-5
+Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
+---
+ src/current/iozone.c | 26 +++++++++++++++-----------
+ 1 file changed, 15 insertions(+), 11 deletions(-)
+
+diff --git a/src/current/iozone.c b/src/current/iozone.c
+index 8de26cf..5542714 100755
+--- a/src/current/iozone.c
++++ b/src/current/iozone.c
+@@ -1332,11 +1332,11 @@ size_t async_write_no_copy(struct cache *,long long ,char *,long long,long long,
+ #else
+ long long *gc=0;
+ void async_init(long long **,int,int);
+-int async_read();
+-int async_read_no_copy();
+-size_t async_write();
+-size_t async_write_no_copy();
+-void async_release();
++int async_read(long long *, long long , char *, off64_t, long long, long long, off64_t, long long);
++int async_read_no_copy(long long *, long long, char **, off64_t, long long, long long, off64_t, long long);
++size_t async_write(long long *,long long, char *, long long, off64_t, long long);
++size_t async_write_no_copy(long long *,long long ,char *,long long,long long,long long,char *);
++void async_release(long long *);
+ #endif
+ void do_float(int, double, int, int);
+ int create_xls(char *);
+@@ -20144,37 +20144,41 @@ long long length;
+ 
+ #ifndef ASYNC_IO
+ int
+-async_read()
++async_read(long long *gc, long long fd, char *ubuffer, off64_t offset,
++	long long size, long long stride, off64_t max, long long depth)
+ {
+ 	printf("Your system does not support async I/O\n");
+ 	exit(169);
+ }
+ size_t
+-async_write_no_copy()
++async_write_no_copy(long long *gc, long long fd, char *buffer, long long size,
++	long long stride, long long depth, char *free_addr)
+ {
+ 	printf("Your system does not support async I/O\n");
+ 	exit(170);
+ }
+ size_t
+-async_write()
++async_write(long long *gc, long long fd, char *buffer, long long size,
++	off64_t offset, long long depth)
+ {
+ 	printf("Your system does not support async I/O\n");
+ 	exit(171);
+ }
+ void
+-async_init()
++async_init(long long **gc, int fd, int flag)
+ {
+ 	printf("Your system does not support async I/O\n");
+ 	exit(172);
+ }
+ int
+-async_read_no_copy()
++async_read_no_copy(long long *gc, long long fd, char **ubuffer, off64_t offset,
++	long long size, long long stride, off64_t max, long long depth)
+ {
+ 	printf("Your system does not support async I/O\n");
+ 	exit(172);
+ }
+ void
+-async_release()
++async_release(long long *gc)
+ {
+ 	printf("Your system does not support async I/O\n");
+ 	exit(173);
+-- 
+2.34.1
+
-- 
2.34.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-10-22 21:24 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-22 20:59 [Buildroot] [PATCH] package/iozone: fix build without ASYNC_IO with GCC >= 15 Yegor Yefremov
2026-10-22 21:23 ` Thomas Petazzoni via buildroot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.