GCC 15 treats an empty parameter list as (void). Cast the GD callbacks explicitly.
--- a/ext/gd/gd.c
+++ b/ext/gd/gd.c
@@ -138,9 +138,9 @@
 static void php_image_filter_scatter(INTERNAL_FUNCTION_PARAMETERS);
 
 /* End Section filters declarations */
-static gdImagePtr _php_image_create_from_string (zval *Data, char *tn, gdImagePtr (*ioctx_func_p)());
-static void _php_image_create_from(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, gdImagePtr (*func_p)(), gdImagePtr (*ioctx_func_p)());
-static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, void (*func_p)());
+static gdImagePtr _php_image_create_from_string (zval *Data, char *tn, gdImagePtr (*ioctx_func_p)(gdIOCtx *));
+static void _php_image_create_from(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, gdImagePtr (*func_p)(FILE *), gdImagePtr (*ioctx_func_p)(gdIOCtx *));
+static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, void (*func_p)(void));
 static int _php_image_type(char data[12]);
 static void _php_image_convert(INTERNAL_FUNCTION_PARAMETERS, int image_type);
 
@@ -2330,7 +2330,7 @@
 
 /* {{{ _php_image_create_from_string
  */
-gdImagePtr _php_image_create_from_string(zval *data, char *tn, gdImagePtr (*ioctx_func_p)())
+gdImagePtr _php_image_create_from_string(zval *data, char *tn, gdImagePtr (*ioctx_func_p)(gdIOCtx *))
 {
 	gdImagePtr im;
 	gdIOCtx *io_ctx;
@@ -2440,7 +2440,7 @@
 
 /* {{{ _php_image_create_from
  */
-static void _php_image_create_from(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, gdImagePtr (*func_p)(), gdImagePtr (*ioctx_func_p)())
+static void _php_image_create_from(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, gdImagePtr (*func_p)(FILE *), gdImagePtr (*ioctx_func_p)(gdIOCtx *))
 {
 	char *file;
 	size_t file_len;
@@ -2501,7 +2501,7 @@
 		}
 
 		if (image_type == PHP_GDIMG_TYPE_GD2PART) {
-			im = (*ioctx_func_p)(io_ctx, srcx, srcy, width, height);
+			im = ((gdImagePtr (*)(gdIOCtx *, int, int, int, int))ioctx_func_p)(io_ctx, (int) srcx, (int) srcy, (int) width, (int) height);
 		} else {
 			im = (*ioctx_func_p)(io_ctx);
 		}
@@ -2519,7 +2519,7 @@
 	if (!im && fp) {
 		switch (image_type) {
 			case PHP_GDIMG_TYPE_GD2PART:
-				im = (*func_p)(fp, srcx, srcy, width, height);
+				im = ((gdImagePtr (*)(FILE *, int, int, int, int))func_p)(fp, (int) srcx, (int) srcy, (int) width, (int) height);
 				break;
 #if defined(HAVE_GD_XPM)
 			case PHP_GDIMG_TYPE_XPM:
@@ -2608,7 +2608,7 @@
    Create a new image from XPM file or URL */
 PHP_FUNCTION(imagecreatefromxpm)
 {
-	_php_image_create_from(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_XPM, "XPM", gdImageCreateFromXpm, NULL);
+	_php_image_create_from(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_XPM, "XPM", (gdImagePtr (*)(FILE *)) gdImageCreateFromXpm, NULL);
 }
 /* }}} */
 #endif
@@ -2641,7 +2641,7 @@
    Create a new image from a given part of GD2 file or URL */
 PHP_FUNCTION(imagecreatefromgd2part)
 {
-	_php_image_create_from(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_GD2PART, "GD2", gdImageCreateFromGd2Part, gdImageCreateFromGd2PartCtx);
+	_php_image_create_from(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_GD2PART, "GD2", (gdImagePtr (*)(FILE *)) gdImageCreateFromGd2Part, (gdImagePtr (*)(gdIOCtx *)) gdImageCreateFromGd2PartCtx);
 }
 /* }}} */
 
@@ -2667,7 +2667,7 @@
 
 /* {{{ _php_image_output
  */
-static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, void (*func_p)())
+static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, void (*func_p)(void))
 {
 	zval *imgind;
 	char *file = NULL;
@@ -2720,13 +2720,13 @@
 				gdImageWBMP(im, q, fp);
 				break;
 			case PHP_GDIMG_TYPE_GD:
-				(*func_p)(im, fp);
+				((void (*)(gdImagePtr, FILE *))func_p)(im, fp);
 				break;
 			case PHP_GDIMG_TYPE_GD2:
 				if (q == -1) {
 					q = 128;
 				}
-				(*func_p)(im, fp, q, t);
+				((void (*)(gdImagePtr, FILE *, int, int))func_p)(im, fp, q, t);
 				break;
 			default:
 				ZEND_ASSERT(0);
@@ -2756,13 +2756,13 @@
 				gdImageWBMP(im, q, tmp);
 				break;
 			case PHP_GDIMG_TYPE_GD:
-				(*func_p)(im, tmp);
+				((void (*)(gdImagePtr, FILE *))func_p)(im, tmp);
 				break;
 			case PHP_GDIMG_TYPE_GD2:
 				if (q == -1) {
 					q = 128;
 				}
-				(*func_p)(im, tmp, q, t);
+				((void (*)(gdImagePtr, FILE *, int, int))func_p)(im, tmp, q, t);
 				break;
 			default:
 				ZEND_ASSERT(0);
@@ -2786,7 +2786,7 @@
    Output XBM image to browser or file */
 PHP_FUNCTION(imagexbm)
 {
-	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_XBM, "XBM", gdImageXbmCtx);
+	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_XBM, "XBM", (void (*)(void)) gdImageXbmCtx);
 }
 /* }}} */
 
@@ -2794,7 +2794,7 @@
    Output GIF image to browser or file */
 PHP_FUNCTION(imagegif)
 {
-	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_GIF, "GIF", gdImageGifCtx);
+	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_GIF, "GIF", (void (*)(void)) gdImageGifCtx);
 }
 /* }}} */
 
@@ -2803,7 +2803,7 @@
    Output PNG image to browser or file */
 PHP_FUNCTION(imagepng)
 {
-	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_PNG, "PNG", gdImagePngCtxEx);
+	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_PNG, "PNG", (void (*)(void)) gdImagePngCtxEx);
 }
 /* }}} */
 #endif /* HAVE_GD_PNG */
@@ -2814,7 +2814,7 @@
    Output WEBP image to browser or file */
 PHP_FUNCTION(imagewebp)
 {
-	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_WEBP, "WEBP", gdImageWebpCtx);
+	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_WEBP, "WEBP", (void (*)(void)) gdImageWebpCtx);
 }
 /* }}} */
 #endif /* HAVE_GD_WEBP */
@@ -2825,7 +2825,7 @@
    Output JPEG image to browser or file */
 PHP_FUNCTION(imagejpeg)
 {
-	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_JPG, "JPEG", gdImageJpegCtx);
+	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_JPG, "JPEG", (void (*)(void)) gdImageJpegCtx);
 }
 /* }}} */
 #endif /* HAVE_GD_JPG */
@@ -2834,7 +2834,7 @@
    Output WBMP image to browser or file */
 PHP_FUNCTION(imagewbmp)
 {
-	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_WBM, "WBMP", gdImageWBMPCtx);
+	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_WBM, "WBMP", (void (*)(void)) gdImageWBMPCtx);
 }
 /* }}} */
 
@@ -2842,7 +2842,7 @@
    Output GD image to browser or file */
 PHP_FUNCTION(imagegd)
 {
-	_php_image_output(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_GD, "GD", gdImageGd);
+	_php_image_output(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_GD, "GD", (void (*)(void)) gdImageGd);
 }
 /* }}} */
 
@@ -2850,7 +2850,7 @@
    Output GD2 image to browser or file */
 PHP_FUNCTION(imagegd2)
 {
-	_php_image_output(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_GD2, "GD2", gdImageGd2);
+	_php_image_output(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_GD2, "GD2", (void (*)(void)) gdImageGd2);
 }
 /* }}} */
 
@@ -2859,7 +2859,7 @@
    Output BMP image to browser or file */
 PHP_FUNCTION(imagebmp)
 {
-	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_BMP, "BMP", gdImageBmpCtx);
+	_php_image_output_ctx(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_GDIMG_TYPE_BMP, "BMP", (void (*)(void)) gdImageBmpCtx);
 }
 /* }}} */
 #endif
--- a/ext/gd/gd_ctx.c
+++ b/ext/gd/gd_ctx.c
@@ -77,7 +77,7 @@
 } /* }}} */
 
 /* {{{ _php_image_output_ctx */
-static void _php_image_output_ctx(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, void (*func_p)())
+static void _php_image_output_ctx(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, void (*func_p)(void))
 {
 	zval *imgind;
 	char *file = NULL;
@@ -177,16 +177,16 @@
 
 	switch(image_type) {
 		case PHP_GDIMG_TYPE_JPG:
-			(*func_p)(im, ctx, q);
+			((void (*)(gdImagePtr, gdIOCtx *, int))func_p)(im, ctx, q);
 			break;
 		case PHP_GDIMG_TYPE_WEBP:
 			if (q == -1) {
 				q = 80;
 			}
-			(*func_p)(im, ctx, q);
+			((void (*)(gdImagePtr, gdIOCtx *, int))func_p)(im, ctx, q);
 			break;
 		case PHP_GDIMG_TYPE_PNG:
-			(*func_p)(im, ctx, q, f);
+			((void (*)(gdImagePtr, gdIOCtx *, int, int))func_p)(im, ctx, q, f);
 			break;
 		case PHP_GDIMG_TYPE_XBM:
 		case PHP_GDIMG_TYPE_WBM:
@@ -197,16 +197,16 @@
 				q = i;
 			}
 			if (image_type == PHP_GDIMG_TYPE_XBM) {
-				(*func_p)(im, file ? file : "", q, ctx);
+				((void (*)(gdImagePtr, char *, int, gdIOCtx *))func_p)(im, file ? file : "", q, ctx);
 			} else {
-				(*func_p)(im, q, ctx);
+				((void (*)(gdImagePtr, int, gdIOCtx *))func_p)(im, q, ctx);
 			}
 			break;
 		case PHP_GDIMG_TYPE_BMP:
-			(*func_p)(im, ctx, (int) compressed);
+			((void (*)(gdImagePtr, gdIOCtx *, int))func_p)(im, ctx, (int) compressed);
 			break;
 		default:
-			(*func_p)(im, ctx);
+			((void (*)(gdImagePtr, gdIOCtx *))func_p)(im, ctx);
 			break;
 	}
 
