From c8d12249e2ae8c9eb46528f2fdd51eee4699ccd7 Mon Sep 17 00:00:00 2001 From: Charlie Jenkins Date: Fri, 4 Apr 2025 15:35:08 -0700 Subject: [PATCH 1/6] Add signum param to signal handlers A signal handler is required to have a signum parameter that is an integer. This patch is used by buildroot for GCC 15.x compatibility: https://gitlab.com/buildroot.org/buildroot/-/commit/6fd3e498af1bf837f3318eb0d47f27ac6901e7dc Signed-off-by: Charlie Jenkins Signed-off-by: Bernd Kuhls --- src/lat_udp.c | 4 ++-- src/lmdd.c | 14 +++++++------- src/lmhttp.c | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/lat_udp.c b/src/lat_udp.c index cd4be23..2c4e85a 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 signum); 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(int signum) { fprintf(stderr, "Recv timed out\n"); exit(1); diff --git a/src/lmdd.c b/src/lmdd.c index 419f03f..d28edc6 100644 --- a/src/lmdd.c +++ b/src/lmdd.c @@ -156,7 +156,7 @@ char *cmds[] = { void error(char *); -void done(); +void done(int signum); #ifdef DBG extern int dbg; #endif @@ -340,7 +340,7 @@ main(int ac, char **av) register int moved; if (gotcnt && count-- <= 0) { - done(); + done(0); } /* @@ -453,7 +453,7 @@ main(int ac, char **av) perror("read"); } if (moved <= 0) { - done(); + done(0); } if (inpat != -1) { register int foo, cnt; @@ -466,7 +466,7 @@ main(int ac, char **av) (uint)(off + foo*sizeof(int)), buf[foo]); if (mismatch != -1 && --misses == 0) { - done(); + done(0); } } } @@ -531,7 +531,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); @@ -568,7 +568,7 @@ main(int ac, char **av) perror("write"); } if (moved2 != moved) { - done(); + done(0); } if (touch) { @@ -634,7 +634,7 @@ chkarg(char *arg) } void -done(void) +done(int signum) { int i; int step; diff --git a/src/lmhttp.c b/src/lmhttp.c index 00bd4b0..ba741a7 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 signum); 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(int signum) { if (nbytes) { write(logfile, logbuf, nbytes); From ce231a71ff67ff0505f53fc278e8256488ff53fa Mon Sep 17 00:00:00 2001 From: Charlie Jenkins Date: Fri, 4 Apr 2025 15:48:07 -0700 Subject: [PATCH 2/6] Fixup function declarations GCC-15 requires function declarations to be properly typed. This patch is used by buildroot for GCC 15.x compatibility: https://gitlab.com/buildroot.org/buildroot/-/commit/6fd3e498af1bf837f3318eb0d47f27ac6901e7dc Signed-off-by: Charlie Jenkins Signed-off-by: Bernd Kuhls --- 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 0423b5b..9eb64ca 100644 --- a/src/bench.h +++ b/src/bench.h @@ -358,8 +358,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 3ebfb16..7c881b0 100644 --- a/src/lat_rpc.c +++ b/src/lat_rpc.c @@ -190,16 +190,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() @@ -237,16 +235,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: @@ -256,7 +252,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: @@ -273,7 +269,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 d28edc6..da33f54 100644 --- a/src/lmdd.c +++ b/src/lmdd.c @@ -84,7 +84,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); @@ -170,7 +170,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; From 72fffb06a34294fa8a29ad870eceffe371a0166f Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Fri, 5 Dec 2025 17:59:00 +0100 Subject: [PATCH 3/6] src/lat_sig.c: fix build lat_sig.c:42:31: error: assignment to '__sighandler_t' {aka 'void (*)(int)'} from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types] 42 | sa.sa_handler = handler; | ^ lat_sig.c:23:9: note: 'handler' declared here 23 | void handler() { } lat_sig.c:95:23: error: assignment to '__sighandler_t' {aka 'void (*)(int)'} from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types] 95 | sa.sa_handler = prot; | ^ lat_sig.c:72:1: note: 'prot' declared here 72 | prot() { Signed-off-by: Bernd Kuhls --- src/lat_sig.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lat_sig.c b/src/lat_sig.c index 46aef0e..5913c48 100644 --- a/src/lat_sig.c +++ b/src/lat_sig.c @@ -20,7 +20,7 @@ char *id = "$Id$\n"; uint64 caught, n; double adj; -void handler() { } +void handler(int) { } jmp_buf prot_env; void @@ -69,7 +69,7 @@ struct _state { }; void -prot() { +prot(int) { if (++caught == n) { caught = 0; n = benchmp_interval(benchmp_getstate()); From 7733cbca98af3a6859012fd52f33e2c5e86fffe7 Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Fri, 5 Dec 2025 18:01:15 +0100 Subject: [PATCH 4/6] src/memsize.c: fix build memsize.c:167:23: error: assignment to '__sighandler_t' {aka 'void (*)(int)'} from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types] 167 | sa.sa_handler = gotalarm; | ^ memsize.c:154:1: note: 'gotalarm' declared here 154 | gotalarm() Signed-off-by: Bernd Kuhls --- src/memsize.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/memsize.c b/src/memsize.c index e1d05be..902132a 100644 --- a/src/memsize.c +++ b/src/memsize.c @@ -151,7 +151,7 @@ test_malloc(size_t size) } void -gotalarm() +gotalarm(int) { alarm_triggered = 1; } From b975463b5901b376452089e2c634bf4d1a3e8ecc Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Fri, 5 Dec 2025 18:02:10 +0100 Subject: [PATCH 5/6] src/lat_unix.c: fix build lat_unix.c:85:17: error: too many arguments to function 'exit'; expected 0, have 1 85 | exit(1); | ^~~~ ~ lat_unix.c:74:17: note: declared here 74 | void exit(); Signed-off-by: Bernd Kuhls --- src/lat_unix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lat_unix.c b/src/lat_unix.c index 1e321f8..9a062c1 100644 --- a/src/lat_unix.c +++ b/src/lat_unix.c @@ -71,7 +71,7 @@ void initialize(iter_t iterations, void* cookie) { struct _state* pState = (struct _state*)cookie; - void exit(); + void exit(int); if (iterations) return; From 0a3fcc9da1a0f54ab5d32fec613062155bd4fe9b Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Fri, 5 Dec 2025 18:04:07 +0100 Subject: [PATCH 6/6] src/lat_usleep.c: fix build lat_usleep.c:125:19: error: assignment to '__sighandler_t' {aka 'void (*)(int)'} from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types] 125 | sa.sa_handler = interval; | ^ lat_usleep.c:102:1: note: 'interval' declared here 102 | interval() Signed-off-by: Bernd Kuhls --- src/lat_usleep.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lat_usleep.c b/src/lat_usleep.c index d18d0c8..842ad06 100755 --- a/src/lat_usleep.c +++ b/src/lat_usleep.c @@ -99,7 +99,7 @@ bench_pselect(iter_t iterations, void *cookie) #endif /* _POSIX_SELECT */ void -interval() +interval(int) { if (++caught == n) { caught = 0;