| https://bugs.gentoo.org/870412 |
| https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=bf5a75953b6d504f0405b1ca33b039b8dd39eef4 |
| |
| Backport the K&R decls fix to 2.71 to avoid configure tests |
| failing (often "silently", i.e. doesn't fail the build of |
| the package overall, just leads to wrong results) with |
| newer compilers like the upcoming Clang 16. |
| |
| From bf5a75953b6d504f0405b1ca33b039b8dd39eef4 Mon Sep 17 00:00:00 2001 |
| From: Zack Weinberg <zackw@panix.com> |
| Date: Thu, 10 Nov 2022 12:05:30 -0500 |
| Subject: More fixes for compilers that reject K&R function definitions. |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| This fixes all of the remaining failures exposed by running the |
| testsuite with GCC 12 and |
| CC='cc -Wimplicit-function-declaration -Wold-style-definition |
| -Wimplicit-int -Werror' |
| . |
| |
| * lib/autoconf/c.m4 (_AC_C_C89_TEST_GLOBALS): Don’t use K&R function |
| definitions. |
| * lib/autoconf/specific.m4 (AC_SYS_RESTARTABLE_SYSCALLS): Likewise. |
| (AC_FUNC_MKTIME): Declare functions taking no arguments as ‘fn (void)’ |
| not ‘fn ()’. |
| * lib/autoconf/c.m4 (_AC_C_C99_TEST_GLOBALS): Declare free(). |
| --- a/lib/autoconf/c.m4 |
| +++ b/lib/autoconf/c.m4 |
| @@ -1153,9 +1153,7 @@ struct stat; |
| /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ |
| struct buf { int x; }; |
| struct buf * (*rcsopen) (struct buf *, struct stat *, int); |
| -static char *e (p, i) |
| - char **p; |
| - int i; |
| +static char *e (char **p, int i) |
| { |
| return p[i]; |
| } |
| @@ -1212,6 +1210,7 @@ extern int puts (const char *); |
| extern int printf (const char *, ...); |
| extern int dprintf (int, const char *, ...); |
| extern void *malloc (size_t); |
| +extern void free (void *); |
| |
| // Check varargs macros. These examples are taken from C99 6.10.3.5. |
| // dprintf is used instead of fprintf to avoid needing to declare |
| --- a/lib/autoconf/functions.m4 |
| +++ b/lib/autoconf/functions.m4 |
| @@ -1091,7 +1091,7 @@ static const char *tz_strings[] = { |
| /* Return 0 if mktime fails to convert a date in the spring-forward gap. |
| Based on a problem report from Andreas Jaeger. */ |
| static int |
| -spring_forward_gap () |
| +spring_forward_gap (void) |
| { |
| /* glibc (up to about 1998-10-07) failed this test. */ |
| struct tm tm; |
| @@ -1128,7 +1128,7 @@ mktime_test (time_t now) |
| } |
| |
| static int |
| -irix_6_4_bug () |
| +irix_6_4_bug (void) |
| { |
| /* Based on code from Ariel Faigon. */ |
| struct tm tm; |
| @@ -1170,7 +1170,7 @@ bigtime_test (int j) |
| } |
| |
| static int |
| -year_2050_test () |
| +year_2050_test (void) |
| { |
| /* The correct answer for 2050-02-01 00:00:00 in Pacific time, |
| ignoring leap seconds. */ |
| --- a/lib/autoconf/specific.m4 |
| +++ b/lib/autoconf/specific.m4 |
| @@ -361,10 +361,9 @@ AC_INCLUDES_DEFAULT |
| /* Some platforms explicitly require an extern "C" signal handler |
| when using C++. */ |
| #ifdef __cplusplus |
| -extern "C" void ucatch (int dummy) { } |
| -#else |
| -void ucatch (dummy) int dummy; { } |
| +extern "C" |
| #endif |
| +void ucatch (int dummy) { } |
| |
| int |
| main (void) |
| cgit v1.1 |