[PATCH] Fix compatibility with GCC 15

Corinna Vinschen corinna-cygwin@cygwin.com
Tue Dec 3 14:25:46 GMT 2024


Hi Radek,

can you send this patch, as well as the newlib patch, as git patch with
subject line commit message and Signed-off-by, please?

`git format-patch' and `git send-email' are a great help there.


Thanks,
Corinna


On Dec  3 11:32, Radek Barton via Cygwin-patches wrote:
> GCC 15 enables `-std=gnu23` by default which breaks build of `newlib` and `winsup` on old-style C function declarations. This patch changes the declarations to ANSI style.

> diff --git a/winsup/cygwin/libc/fts.c b/winsup/cygwin/libc/fts.c
> index 1826d2213..6f060e54e 100644
> --- a/winsup/cygwin/libc/fts.c
> +++ b/winsup/cygwin/libc/fts.c
> @@ -1111,8 +1111,7 @@ fts_padjust(FTS *sp, FTSENT *head)
>  }
>  
>  static size_t
> -fts_maxarglen(argv)
> -	char * const *argv;
> +fts_maxarglen(char * const *argv)
>  {
>  	size_t len, max;
>  
> diff --git a/winsup/cygwin/libc/inet_network.c b/winsup/cygwin/libc/inet_network.c
> index 43a394cf4..17b61f7aa 100644
> --- a/winsup/cygwin/libc/inet_network.c
> +++ b/winsup/cygwin/libc/inet_network.c
> @@ -56,8 +56,7 @@ __FBSDID("$FreeBSD$");
>   * network numbers.
>   */
>  in_addr_t
> -cygwin_inet_network(cp)
> -	const char *cp;
> +cygwin_inet_network(const char *cp)
>  {
>  	in_addr_t val, base, n;
>  	char c;
> diff --git a/winsup/testsuite/libltp/include/test.h b/winsup/testsuite/libltp/include/test.h
> index 757f3b8a1..af7c3c0c8 100644
> --- a/winsup/testsuite/libltp/include/test.h
> +++ b/winsup/testsuite/libltp/include/test.h
> @@ -225,7 +225,7 @@ extern void tt_exit();
>  extern int  t_environ();
>  extern void t_breakum(char *tcid, int total, int typ, char *msg, void (*fnc)());
>  
> -extern void tst_sig(int fork_flag, void (*handler)(), void (*cleanup)());
> +extern void tst_sig(int fork_flag, void (*handler)(int), void (*cleanup)());
>  extern void tst_tmpdir();
>  extern void tst_rmdir();
>  
> diff --git a/winsup/testsuite/libltp/include/usctest.h b/winsup/testsuite/libltp/include/usctest.h
> index 637635a25..08db49551 100644
> --- a/winsup/testsuite/libltp/include/usctest.h
> +++ b/winsup/testsuite/libltp/include/usctest.h
> @@ -198,7 +198,7 @@ struct tblock {
>   * in the macros that follow.
>   ***********************************************************************/
>  extern struct tblock tblock;
> -extern void STD_go();
> +extern void STD_go(int);
>  extern int (*_TMP_FUNC)(void);
>  extern void STD_opts_help();
>  
> diff --git a/winsup/testsuite/libltp/include/write_log.h b/winsup/testsuite/libltp/include/write_log.h
> index 784d5b3eb..505d2c08a 100644
> --- a/winsup/testsuite/libltp/include/write_log.h
> +++ b/winsup/testsuite/libltp/include/write_log.h
> @@ -154,7 +154,7 @@ extern int	wlog_close(struct wlog_file *wfile);
>  extern int	wlog_record_write(struct wlog_file *wfile,
>  				  struct wlog_rec *wrec, long offset);
>  extern int	wlog_scan_backward(struct wlog_file *wfile, int nrecs,
> -				   int (*func)(struct wlog_rec *rec),
> +				   int (*func)(struct wlog_rec *rec, long),
>  				   long data);
>  #else
>  int	wlog_open();
> diff --git a/winsup/testsuite/libltp/lib/dataascii.c b/winsup/testsuite/libltp/lib/dataascii.c
> index 5bc201852..41ed440c0 100644
> --- a/winsup/testsuite/libltp/lib/dataascii.c
> +++ b/winsup/testsuite/libltp/lib/dataascii.c
> @@ -43,11 +43,12 @@
>  static char Errmsg[80];
>  
>  int
> -dataasciigen(listofchars, buffer, bsize, offset)
> -char *listofchars;	/* a null terminated list of characters */
> -char *buffer;
> -int bsize;
> -int offset;
> +dataasciigen(
> +	char *listofchars,	/* a null terminated list of characters */
> +	char *buffer,
> +	int bsize,
> +	int offset
> +)
>  {
>     int cnt;
>     int total;
> @@ -78,12 +79,13 @@ int offset;
>  }	/* end of dataasciigen */
>  
>  int
> -dataasciichk(listofchars, buffer, bsize, offset, errmsg)
> -char *listofchars;	/* a null terminated list of characters */
> -char *buffer;
> -int bsize;
> -int offset;
> -char **errmsg;
> +dataasciichk(
> +	char *listofchars,	/* a null terminated list of characters */
> +	char *buffer,
> +	int bsize,
> +	int offset,
> +	char **errmsg
> +)
>  {
>     int cnt;
>     int total;
> diff --git a/winsup/testsuite/libltp/lib/databin.c b/winsup/testsuite/libltp/lib/databin.c
> index e43fef4e4..6cf27f77c 100644
> --- a/winsup/testsuite/libltp/lib/databin.c
> +++ b/winsup/testsuite/libltp/lib/databin.c
> @@ -42,11 +42,12 @@
>  static char Errmsg[80];
>  
>  void
> -databingen (mode, buffer, bsize, offset)
> -int mode;	/* either a, c, r, o, z or C */
> -unsigned char *buffer;	/* buffer pointer */
> -int bsize;	/* size of buffer */
> -int offset;	/* offset into the file where buffer starts */
> +databingen (
> +    int mode,	/* either a, c, r, o, z or C */
> +    unsigned char *buffer,	/* buffer pointer */
> +    int bsize,	/* size of buffer */
> +    int offset	/* offset into the file where buffer starts */
> +)
>  {
>  int ind;
>  
> @@ -89,12 +90,13 @@ int ind;
>   *      < 0  : no error
>   ***********************************************************************/
>  int
> -databinchk(mode, buffer, bsize, offset, errmsg)
> -int mode;	/* either a, c, r, z, o, or C */
> -unsigned char *buffer;	/* buffer pointer */
> -int bsize;	/* size of buffer */
> -int offset;	/* offset into the file where buffer starts */
> -char **errmsg;
> +databinchk(
> +    int mode,	/* either a, c, r, z, o, or C */
> +    unsigned char *buffer,	/* buffer pointer */
> +    int bsize,	/* size of buffer */
> +    int offset,	/* offset into the file where buffer starts */
> +    char **errmsg
> +)
>  {
>      int cnt;
>      unsigned char *chr;
> diff --git a/winsup/testsuite/libltp/lib/datapid.c b/winsup/testsuite/libltp/lib/datapid.c
> index 9414eae90..ca091311b 100644
> --- a/winsup/testsuite/libltp/lib/datapid.c
> +++ b/winsup/testsuite/libltp/lib/datapid.c
> @@ -83,11 +83,12 @@ static char Errmsg[80];
>   * Thus, offset 8 is in middle of word 1
>   ***********************************************************************/
>  int
> -datapidgen(pid, buffer, bsize, offset)
> -int pid;
> -char *buffer;
> -int bsize;
> -int offset;
> +datapidgen(
> +    int pid,
> +    char *buffer,
> +    int bsize,
> +    int offset
> +)
>  {
>  #if CRAY
>  	
> @@ -178,12 +179,13 @@ printf("partial at end\n");
>   *
>   ***********************************************************************/
>  int
> -datapidchk(pid, buffer, bsize, offset, errmsg)
> -int pid;
> -char *buffer;
> -int bsize;
> -int offset;
> -char **errmsg;
> +datapidchk(
> +    int pid,
> +    char *buffer,
> +    int bsize,
> +    int offset,
> +    char **errmsg
> +)
>  {
>  #if CRAY
>  	
> diff --git a/winsup/testsuite/libltp/lib/forker.c b/winsup/testsuite/libltp/lib/forker.c
> index 99bc58550..65f1036a3 100644
> --- a/winsup/testsuite/libltp/lib/forker.c
> +++ b/winsup/testsuite/libltp/lib/forker.c
> @@ -133,8 +133,7 @@ int Forker_npids=0;             /* number of entries in Forker_pids */
>   *  !0 : if fork failed, the return value will be the errno.
>   ***********************************************************************/
>  int
> -background(prefix)
> -char *prefix;
> +background(char *prefix)
>  {
>    switch (fork()) {
>    case -1:
> @@ -159,12 +158,13 @@ char *prefix;
>   * 
>   ***********************************************************************/
>  int
> -forker(ncopies, mode, prefix)
> -int ncopies;
> -int mode;	/* 0 - all childern of parent, 1 - only 1 direct child */
> -char *prefix;   /* if ! NULL, an message will be printed to stderr */
> -		/* if fork fails.  The prefix (program name) will */
> -	        /* preceed the message */
> +forker(
> +	int ncopies,
> +	int mode,		/* 0 - all childern of parent, 1 - only 1 direct child */
> +	char *prefix	/* if ! NULL, an message will be printed to stderr */
> +					/* if fork fails.  The prefix (program name) will */
> +					/* preceed the message */
> +)
>  {
>      int cnt;
>      int pid;
> diff --git a/winsup/testsuite/libltp/lib/parse_opts.c b/winsup/testsuite/libltp/lib/parse_opts.c
> index 1f41bfdd2..0d1b80247 100644
> --- a/winsup/testsuite/libltp/lib/parse_opts.c
> +++ b/winsup/testsuite/libltp/lib/parse_opts.c
> @@ -198,7 +198,11 @@ int STD_ERRNO_LIST[USC_MAX_ERRNO];
>  #define STRLEN 2048
>  
>  static char Mesg2[STRLEN];	/* holds possible return string */
> -static void usc_recressive_func();
> +static void usc_recressive_func(
> +	int cnt,
> +	int max,
> +	struct usc_bigstack_t **bstack
> +);
>  
>  /*
>   * Define bits for options that might have env variable default
> @@ -633,7 +637,7 @@ usc_global_setup_hook()
>      if ( STD_PAUSE ) {                                      
>          _TMP_FUNC = (int (*)())signal(SIGUSR1, STD_go);   
>          pause();                                          
> -        signal(SIGUSR1, (void (*)())_TMP_FUNC);          
> +        signal(SIGUSR1, (_sig_func_ptr)_TMP_FUNC);          
>      }
>  
>  
> @@ -693,8 +697,7 @@ get_current_time()
>   * counter integer is supplied by the user program.
>   ***********************************************************************/
>  int
> -usc_test_looping(counter)
> -int counter;
> +usc_test_looping(int counter)
>  {
>      static int first_time = 1;
>      static int stop_time = 0;	/* stop time in rtc or usecs */
> @@ -803,10 +806,11 @@ int counter;
>   * This function recressively calls itself max times.
>   */ 
>  static void
> -usc_recressive_func(cnt, max, bstack)
> -int cnt;
> -int max;
> -struct usc_bigstack_t bstack;
> +usc_recressive_func(
> +    int cnt,
> +    int max,
> +    struct usc_bigstack_t **bstack
> +)
>  {
>      if ( cnt < max )
>  	usc_recressive_func(cnt+1, max, bstack);
> diff --git a/winsup/testsuite/libltp/lib/pattern.c b/winsup/testsuite/libltp/lib/pattern.c
> index 7f4d5873e..5a88bfd3b 100644
> --- a/winsup/testsuite/libltp/lib/pattern.c
> +++ b/winsup/testsuite/libltp/lib/pattern.c
> @@ -38,12 +38,13 @@
>   */
>  
>  int
> -pattern_check(buf, buflen, pat, patlen, patshift)
> -char	*buf;
> -int	buflen;
> -char	*pat;
> -int	patlen;
> -int	patshift;
> +pattern_check(
> +	char *buf,
> +	int	buflen,
> +	char *pat,
> +	int	patlen,
> +	int	patshift
> +)
>  {
>      int		nb, ncmp, nleft;
>      char	*cp;
> @@ -105,12 +106,13 @@ int	patshift;
>  }
>  
>  int
> -pattern_fill(buf, buflen, pat, patlen, patshift)
> -char	*buf;
> -int	buflen;
> -char	*pat;
> -int	patlen;
> -int	patshift;
> +pattern_fill(
> +	char *buf,
> +	int	buflen,
> +	char *pat,
> +	int	patlen,
> +	int	patshift
> +)
>  {
>      int		trans, ncopied, nleft;
>      char	*cp;
> diff --git a/winsup/testsuite/libltp/lib/search_path.c b/winsup/testsuite/libltp/lib/search_path.c
> index 697b4037b..f6936094a 100644
> --- a/winsup/testsuite/libltp/lib/search_path.c
> +++ b/winsup/testsuite/libltp/lib/search_path.c
> @@ -103,11 +103,12 @@ char **argv;
>  /*
>   */
>  int
> -search_path(cmd, res_path, access_mode, fullpath)
> -const char *cmd;	/* The requested filename */
> -char *res_path; /* The resulting path or error mesg */
> -int access_mode; /* the mode used by access(2) */
> -int fullpath;	/* if set, cwd will be prepended to all non-full paths */
> +search_path(
> +	const char *cmd,	/* The requested filename */
> +	char *res_path,		/* The resulting path or error mesg */
> +	int access_mode,	/* the mode used by access(2) */
> +	int fullpath		/* if set, cwd will be prepended to all non-full paths */
> +)
>  {
>      char *cp;   /* used to scan PATH for directories */
>      int ret;      /* return value from access */
> diff --git a/winsup/testsuite/libltp/lib/str_to_bytes.c b/winsup/testsuite/libltp/lib/str_to_bytes.c
> index beecb71b6..70157dcde 100644
> --- a/winsup/testsuite/libltp/lib/str_to_bytes.c
> +++ b/winsup/testsuite/libltp/lib/str_to_bytes.c
> @@ -75,8 +75,7 @@
>  #define T_MULT	1099511627776	/* tera or 2^40 */
>  
>  int
> -str_to_bytes(s)
> -char    *s;
> +str_to_bytes(char *s)
>  {
>      char    mult, junk;
>      int	    nconv;
> @@ -110,8 +109,7 @@ char    *s;
>  }
>  
>  long
> -str_to_lbytes(s)
> -char    *s;
> +str_to_lbytes(char *s)
>  {
>      char    mult, junk;
>      long    nconv;
> @@ -150,8 +148,7 @@ char    *s;
>   */
>  
>  long long
> -str_to_llbytes(s)
> -char    *s;
> +str_to_llbytes(char *s)
>  {
>      char    mult, junk;
>      long    nconv;
> diff --git a/winsup/testsuite/libltp/lib/string_to_tokens.c b/winsup/testsuite/libltp/lib/string_to_tokens.c
> index 6f0d775dd..a2b3a7617 100644
> --- a/winsup/testsuite/libltp/lib/string_to_tokens.c
> +++ b/winsup/testsuite/libltp/lib/string_to_tokens.c
> @@ -80,7 +80,7 @@ int
>  string_to_tokens(char *arg_string, char *arg_array[], int array_size, char *separator)
>  {
>     int num_toks = 0;  /* number of tokens found */
> -   char *strtok();
> +   char *strtok(char *, const char *);
>  	
>     if ( arg_array == NULL || array_size <= 1 || separator == NULL )
>  	return -1;
> diff --git a/winsup/testsuite/libltp/lib/tst_res.c b/winsup/testsuite/libltp/lib/tst_res.c
> index 99767ec9b..731dcbc1b 100644
> --- a/winsup/testsuite/libltp/lib/tst_res.c
> +++ b/winsup/testsuite/libltp/lib/tst_res.c
> @@ -563,8 +563,6 @@ tst_exit()
>  int
>  tst_environ()
>  {
> -   FILE *fdopen();
> -
>     if ( (T_out = fdopen(dup(fileno(stdout)), "w")) == NULL )
>        return(-1);
>     else
> diff --git a/winsup/testsuite/libltp/lib/tst_sig.c b/winsup/testsuite/libltp/lib/tst_sig.c
> index f5b64b666..976b5eecb 100644
> --- a/winsup/testsuite/libltp/lib/tst_sig.c
> +++ b/winsup/testsuite/libltp/lib/tst_sig.c
> @@ -81,7 +81,7 @@
>  void (*T_cleanup)();		/* pointer to cleanup function */
>  
>  extern int errno;
> -static void def_handler();		/* default signal handler */
> +static void def_handler(int);		/* default signal handler */
>  
>  /****************************************************************************
>   * tst_sig() : set-up to catch unexpected signals.  fork_flag is set to NOFORK
> @@ -93,7 +93,7 @@ static void def_handler();		/* default signal handler */
>   ***************************************************************************/
>  
>  void
> -tst_sig(int fork_flag, void (*handler)(), void (*cleanup)())
> +tst_sig(int fork_flag, void (*handler)(int), void (*cleanup)())
>  {
>  	char mesg[MAXMESG];		/* message buffer for tst_res */
>  	int sig;
> diff --git a/winsup/testsuite/libltp/lib/write_log.c b/winsup/testsuite/libltp/lib/write_log.c
> index 8104b05ac..bfbf6adfa 100644
> --- a/winsup/testsuite/libltp/lib/write_log.c
> +++ b/winsup/testsuite/libltp/lib/write_log.c
> @@ -115,10 +115,11 @@ static int	wlog_rec_unpack();
>   */
>  
>  int
> -wlog_open(wfile, trunc, mode)
> -struct wlog_file	*wfile;
> -int			trunc;
> -int			mode;
> +wlog_open(
> +	struct wlog_file *wfile,
> +	int trunc,
> +	int mode
> +)
>  {
>  	int	omask, oflags;
>  
> @@ -166,8 +167,7 @@ int			mode;
>   */
>  
>  int
> -wlog_close(wfile)
> -struct wlog_file	*wfile;
> +wlog_close(struct wlog_file *wfile)
>  {
>  	close(wfile->w_afd);
>  	close(wfile->w_rfd);
> @@ -201,10 +201,11 @@ struct wlog_file	*wfile;
>   */
>  
>  int
> -wlog_record_write(wfile, wrec, offset)
> -struct wlog_file	*wfile;
> -struct wlog_rec		*wrec;
> -long			offset;
> +wlog_record_write(
> +	struct wlog_file *wfile,
> +	struct wlog_rec *wrec,
> +	long offset
> +)
>  {
>      int		reclen;
>      char	wbuf[WLOG_REC_MAX_SIZE + 2];
> @@ -249,11 +250,12 @@ long			offset;
>   */
>  
>  int
> -wlog_scan_backward(wfile, nrecs, func, data)
> -struct wlog_file	*wfile;
> -int 			nrecs;
> -int 			(*func)();
> -long			data;
> +wlog_scan_backward(
> +	struct wlog_file *wfile,
> +	int nrecs,
> +	int (*func)(struct wlog_rec*, long),
> +	long data
> +)
>  {
>  	int		fd, leftover, nbytes, recnum, reclen, rval;
>  	off_t		offset;
> @@ -381,10 +383,11 @@ long			data;
>   */
>  
>  static int
> -wlog_rec_pack(wrec, buf, flag)
> -struct wlog_rec	*wrec;
> -char		*buf;
> -int             flag;
> +wlog_rec_pack(
> +	struct wlog_rec	*wrec,
> +	char *buf,
> +	int flag
> +)
>  {
>  	char			*file, *host, *pattern;
>  	struct wlog_rec_disk	*wrecd;
> @@ -430,9 +433,10 @@ int             flag;
>  }
>  
>  static int
> -wlog_rec_unpack(wrec, buf)
> -struct wlog_rec	*wrec;
> -char		*buf;
> +wlog_rec_unpack(
> +	struct wlog_rec *wrec,
> +	char *buf
> +)
>  {
>  	char			*file, *host, *pattern;
>  	struct wlog_rec_disk	*wrecd;



More information about the Cygwin-patches mailing list