From 6255495abf4ea516aad3b447cc32d1b244229878 Mon Sep 17 00:00:00 2001
From: Charlie Jenkins <charlie@rivosinc.com>
Date: Fri, 4 Apr 2025 15:48:07 -0700
Subject: [PATCH] Fixup function declarations

GCC-15 requires function declarations to be properly typed.

Upstream: https://github.com/intel/lmbench/pull/43

Signed-off-by: Charlie Jenkins <charlie@rivosinc.com>
---
 src/bench.h   |  4 ++--
 src/lat_rpc.c | 18 +++++++-----------
 src/lmdd.c    |  4 ++--
 3 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/src/bench.h b/src/bench.h
index 597d068..b1624c5 100644
--- a/src/bench.h
+++ b/src/bench.h
@@ -325,8 +325,8 @@ extern int handle_scheduler(int childno, int benchproc, int nbenchprocs);
 #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, register SVCXPRT *transp);
+extern char *client_rpc_xact_1(char *argp, CLIENT *clnt);
 
 void lmbench_usage(int argc, char *argv[], char* usage);
 
diff --git a/src/lat_rpc.c b/src/lat_rpc.c
index ff4380f..dcc24df 100644
--- a/src/lat_rpc.c
+++ b/src/lat_rpc.c
@@ -187,16 +187,14 @@ client_rpc_xact_1(char *argp, CLIENT *clnt)
  */
 /* ARGSUSED */
 char	*
-rpc_xact_1(msg, transp)
-     	char	*msg;
-	register SVCXPRT *transp;
+rpc_xact_1(char *msg, register SVCXPRT *transp)
 {
 	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()
@@ -234,16 +232,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 *, char *), (*xdr_result)(XDR *, char *);
+	char *(*local)(char *, struct svc_req *);
 
 	switch (rqstp->rq_proc) {
 	case NULLPROC:
@@ -253,7 +249,7 @@ xact_prog_1(rqstp, transp)
 	case RPC_XACT:
 		xdr_argument = xdr_char;
 		xdr_result = xdr_char;
-		local = (char *(*)()) rpc_xact_1;
+		local = (char *(*)(char *, struct svc_req *)) rpc_xact_1;
 		break;
 
 	case RPC_EXIT:
@@ -270,7 +266,7 @@ xact_prog_1(rqstp, transp)
 		svcerr_decode(transp);
 		return;
 	}
-	result = (*local)(&argument, rqstp);
+	result = (*local)((char *)&argument, rqstp);
 	if (result != NULL && !svc_sendreply(transp, (xdrproc_t)xdr_result, result)) {
 		svcerr_systemerr(transp);
 	}
diff --git a/src/lmdd.c b/src/lmdd.c
index 529ae21..197ac46 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);
 
@@ -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;
-- 
2.43.0

