diff mbox series

[meta-oe] lmbench: fix build error with gcc-15

Message ID 20250410045048.742943-1-mark.yang@lge.com
State Accepted
Headers show
Series [meta-oe] lmbench: fix build error with gcc-15 | expand

Commit Message

mark yang April 10, 2025, 4:50 a.m. UTC
From: "mark.yang" <mark.yang@lge.com>

* see more details
  http://errors.yoctoproject.org/Errors/Details/851798/

    lat_rpc.c:172:1: error: conflicting types for 'client_rpc_xact_1'; have 'char *(char *, CLIENT *)' {aka 'char *(char *, struct __rpc_client *)'}
    172 | client_rpc_xact_1(char *argp, CLIENT *clnt)
        | ^~~~~~~~~~~~~~~~~
    bench.h:349:14: note: previous declaration of 'client_rpc_xact_1' with type 'char *(void)'
    349 | extern char *client_rpc_xact_1();
        |              ^~~~~~~~~~~~~~~~~
    lat_rpc.c: In function 'rpc_xact_1':
    lat_rpc.c:189:1: warning: old-style function definition [-Wold-style-definition]
    189 | rpc_xact_1(msg, transp)
        | ^~~~~~~~~~
    lat_rpc.c:192:1: error: number of arguments doesn't match prototype
    192 | {
        | ^
    bench.h:348:14: error: prototype declaration
    348 | extern char *rpc_xact_1();
        |              ^~~~~~~~~~

  Fix errors due to old-style function declarations

  The code was using old-style function declarations without proper prototypes,
  which causes compilation errors with newer GCC versions. This patch updates
  the function declarations to use modern C syntax with proper parameter types.

Signed-off-by: mark.yang <mark.yang@lge.com>
---
 ...-related-to-incorrect-function-param.patch | 252 ++++++++++++++++++
 .../lmbench/lmbench_3.0-a9.bb                 |   1 +
 2 files changed, 253 insertions(+)
 create mode 100644 meta-oe/recipes-benchmark/lmbench/lmbench/0001-Fix-build-errors-related-to-incorrect-function-param.patch
diff mbox series

Patch

diff --git a/meta-oe/recipes-benchmark/lmbench/lmbench/0001-Fix-build-errors-related-to-incorrect-function-param.patch b/meta-oe/recipes-benchmark/lmbench/lmbench/0001-Fix-build-errors-related-to-incorrect-function-param.patch
new file mode 100644
index 0000000000..30f52023cd
--- /dev/null
+++ b/meta-oe/recipes-benchmark/lmbench/lmbench/0001-Fix-build-errors-related-to-incorrect-function-param.patch
@@ -0,0 +1,252 @@ 
+From 8a6b5f649fe7f42aff4f69a8d99c522adb22f54c Mon Sep 17 00:00:00 2001
+From: "mark.yang" <mark.yang@lge.com>
+Date: Thu, 10 Apr 2025 13:19:07 +0900
+Subject: [PATCH] Fix build errors related to incorrect function parameters in
+ gcc-15
+
+* see more details
+  http://errors.yoctoproject.org/Errors/Details/851798/
+
+    lat_rpc.c:172:1: error: conflicting types for 'client_rpc_xact_1'; have 'char *(char *, CLIENT *)' {aka 'char *(char *, struct __rpc_client *)'}
+    172 | client_rpc_xact_1(char *argp, CLIENT *clnt)
+        | ^~~~~~~~~~~~~~~~~
+    bench.h:349:14: note: previous declaration of 'client_rpc_xact_1' with type 'char *(void)'
+    349 | extern char *client_rpc_xact_1();
+        |              ^~~~~~~~~~~~~~~~~
+    lat_rpc.c: In function 'rpc_xact_1':
+    lat_rpc.c:189:1: warning: old-style function definition [-Wold-style-definition]
+    189 | rpc_xact_1(msg, transp)
+        | ^~~~~~~~~~
+    lat_rpc.c:192:1: error: number of arguments doesn't match prototype
+    192 | {
+        | ^
+    bench.h:348:14: error: prototype declaration
+    348 | extern char *rpc_xact_1();
+        |              ^~~~~~~~~~
+
+  Fix errors due to old-style function declarations
+
+  The code was using old-style function declarations without proper prototypes,
+  which causes compilation errors with newer GCC versions. This patch updates
+  the function declarations to use modern C syntax with proper parameter types.
+
+Upstream-Status: Submitted [https://sourceforge.net/p/lmbench/patches/3]
+Signed-off-by: mark.yang <mark.yang@lge.com>
+---
+ src/bench.h   |  4 ++--
+ src/lat_rpc.c | 24 ++++++++++--------------
+ src/lat_udp.c |  4 ++--
+ src/lmdd.c    | 18 +++++++++---------
+ src/lmhttp.c  |  4 ++--
+ 5 files changed, 25 insertions(+), 29 deletions(-)
+
+diff --git a/src/bench.h b/src/bench.h
+index 1768ef7..4fc2822 100644
+--- a/src/bench.h
++++ b/src/bench.h
+@@ -345,7 +345,7 @@ extern int sched_pin(int cpu);
+ #define XACT_VERS ((u_long)1)
+ #define RPC_XACT ((u_long)1)
+ #define RPC_EXIT ((u_long)2)
+-extern char *rpc_xact_1();
+-extern char *client_rpc_xact_1();
++extern char *rpc_xact_1(char *msg, struct svc_req *rqstp);
++extern char *client_rpc_xact_1(char *argp, CLIENT *clnt);
+ 
+ #endif /* _BENCH_H */
+diff --git a/src/lat_rpc.c b/src/lat_rpc.c
+index 9c02192..e1450af 100644
+--- a/src/lat_rpc.c
++++ b/src/lat_rpc.c
+@@ -185,17 +185,15 @@ client_rpc_xact_1(char *argp, CLIENT *clnt)
+  * The remote procedure[s] that will be called
+  */
+ /* ARGSUSED */
+-char	*
+-rpc_xact_1(msg, transp)
+-     	char	*msg;
+-	register SVCXPRT *transp;
++char *
++rpc_xact_1(char *msg, struct svc_req *rqstp /* transp is unused */)
+ {
+ 	static char r = 123;
+ 
+ 	return &r;
+ }
+ 
+-static void xact_prog_1();
++static void xact_prog_1(struct svc_req *rqstp, register SVCXPRT *transp);
+ 
+ void
+ server_main()
+@@ -233,16 +231,14 @@ server_main()
+ }
+ 
+ static void
+-xact_prog_1(rqstp, transp)
+-	struct svc_req *rqstp;
+-	register SVCXPRT *transp;
++xact_prog_1(struct svc_req *rqstp, register SVCXPRT *transp)
+ {
+ 	union {
+ 		char rpc_xact_1_arg;
+ 	} argument;
+ 	char *result;
+-	bool_t (*xdr_argument)(), (*xdr_result)();
+-	char *(*local)();
++	bool_t (*xdr_argument)(XDR *, void *), (*xdr_result)(XDR *, void *);
++	char *(*local)(char *, struct svc_req *);
+ 
+ 	switch (rqstp->rq_proc) {
+ 	case NULLPROC:
+@@ -250,9 +246,9 @@ xact_prog_1(rqstp, transp)
+ 		return;
+ 
+ 	case RPC_XACT:
+-		xdr_argument = xdr_char;
+-		xdr_result = xdr_char;
+-		local = (char *(*)()) rpc_xact_1;
++		xdr_argument = (bool_t (*)(XDR *, void *))xdr_char;
++		xdr_result = (bool_t (*)(XDR *, void *))xdr_char;
++		local = rpc_xact_1;
+ 		break;
+ 
+ 	case RPC_EXIT:
+@@ -269,7 +265,7 @@ xact_prog_1(rqstp, transp)
+ 		svcerr_decode(transp);
+ 		return;
+ 	}
+-	result = (*local)(&argument, rqstp);
++	result = local(&argument.rpc_xact_1_arg, rqstp);
+ 	if (result != NULL && !svc_sendreply(transp, (xdrproc_t)xdr_result, result)) {
+ 		svcerr_systemerr(transp);
+ 	}
+diff --git a/src/lat_udp.c b/src/lat_udp.c
+index cdd2e9b..292d5c4 100644
+--- a/src/lat_udp.c
++++ b/src/lat_udp.c
+@@ -19,7 +19,7 @@ char	*id = "$Id$\n";
+ 
+ void	client_main(int ac, char **av);
+ void	server_main();
+-void	timeout();
++void	timeout(int sig);
+ void	init(iter_t iterations, void* cookie);
+ void	cleanup(iter_t iterations, void* cookie);
+ void    doit(iter_t iterations, void* cookie);
+@@ -164,7 +164,7 @@ cleanup(iter_t iterations, void* cookie)
+ }
+ 
+ void
+-timeout()
++timeout(__attribute__((unused)) int sig)
+ {
+ 	fprintf(stderr, "Recv timed out\n");
+ 	exit(1);
+diff --git a/src/lmdd.c b/src/lmdd.c
+index dee37b4..da64b04 100644
+--- a/src/lmdd.c
++++ b/src/lmdd.c
+@@ -76,7 +76,7 @@ int	norepeats = -1;
+ 	bds_msg	*m1, *m2;
+ #endif
+ 
+-uint64	getarg();
++uint64	getarg(char *s, int ac, char **av);
+ int	been_there(uint64 off);
+ int	getfile(char *s, int ac, char **av);
+ 
+@@ -148,7 +148,7 @@ char   *cmds[] = {
+ 
+ 
+ void error(char *);
+-void    done();
++void    done(int sig);
+ #ifdef	DBG
+ extern int dbg;
+ #endif
+@@ -162,7 +162,7 @@ main(int ac, char **av)
+ 	int     Fork, misses, mismatch, outpat, inpat, in, timeopen, gotcnt;
+ 	int	slp;
+ 	uint64	skip, size, count;
+-	void	chkarg();
++	void	chkarg(char *arg);
+ 	int     i;
+ 	uint64	off = 0;
+ 	int	touch;
+@@ -332,7 +332,7 @@ main(int ac, char **av)
+ 		register int moved;
+ 
+ 		if (gotcnt && count-- <= 0) {
+-			done();
++			done(0);
+ 		}
+ 
+ 		/*
+@@ -445,7 +445,7 @@ main(int ac, char **av)
+ 			perror("read");
+ 		}
+ 		if (moved <= 0) {
+-			done();
++			done(0);
+ 		}
+ 		if (inpat != -1) {
+ 			register int foo, cnt;
+@@ -458,7 +458,7 @@ main(int ac, char **av)
+ 					    (uint)(off + foo*sizeof(int)),
+ 					    buf[foo]);
+ 					if (mismatch != -1 && --misses == 0) {
+-						done();
++						done(0);
+ 					}
+ 				}
+ 			}
+@@ -523,7 +523,7 @@ main(int ac, char **av)
+ 			if (moved2 != moved) {
+ 				fprintf(stderr, "write: wanted=%d got=%d\n",
+ 				    moved, moved2);
+-				done();
++				done(0);
+ 			}
+ 			if ((Wtmax != -1) || (Wtmin != -1)) {
+ 				int mics = stop(&start_tv, &stop_tv);
+@@ -560,7 +560,7 @@ main(int ac, char **av)
+ 				perror("write");
+ 			}
+ 			if (moved2 != moved) {
+-				done();
++				done(0);
+ 			}
+ 
+ 			if (touch) {
+@@ -626,7 +626,7 @@ chkarg(char *arg)
+ }
+ 
+ void 
+-done(void)
++done(__attribute__((unused)) int sig)
+ {
+ 	int	i;
+ 	int	step;
+diff --git a/src/lmhttp.c b/src/lmhttp.c
+index 41d9949..c2f3cb9 100644
+--- a/src/lmhttp.c
++++ b/src/lmhttp.c
+@@ -26,7 +26,7 @@ char	*buf;
+ char	*bufs[3];
+ int	Dflg, dflg, nflg, lflg, fflg, zflg;
+ int	data, logfile;
+-void	die();
++void	die(int sig);
+ void	worker();
+ char	*http_time(void);
+ char	*date(time_t *tt);
+@@ -387,7 +387,7 @@ logit(int sock, char *name, int size)
+ 	nbytes += len;
+ }
+ 
+-void die()
++void die(__attribute__((unused)) int sig)
+ {
+ 	if (nbytes) {
+ 		write(logfile, logbuf, nbytes);
diff --git a/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb b/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
index 2533f6033c..acd4d6decf 100644
--- a/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
+++ b/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
@@ -29,6 +29,7 @@  SRC_URI = "${SOURCEFORGE_MIRROR}/lmbench/lmbench-${PV}.tgz \
            file://0001-doc-Fix-typos-in-lat_unix_connect-manual-page.patch \
            file://0001-bench.h-Fix-typo-in-specifying-string.h.patch \
            file://0001-scripts-build-Fix-the-tests-to-build-with-clang15.patch \
+           file://0001-Fix-build-errors-related-to-incorrect-function-param.patch \
            "
 SRC_URI[sha256sum] = "cbd5777d15f44eab7666dcac418054c3c09df99826961a397d9acf43d8a2a551"