https://bugs.gentoo.org/879857 https://github.com/Perl/perl5/commit/e1ca9a418fa6b7d26fbb1931c9164141035262c3 https://github.com/Perl/perl5/commit/fc35cee89c1a42558f50a37a6b4d5186b77f058b From e1ca9a418fa6b7d26fbb1931c9164141035262c3 Mon Sep 17 00:00:00 2001 From: Peter Levine Date: Tue, 17 Jan 2023 02:47:12 -0500 Subject: [PATCH] Add parameter types to declarations for clang-16 ANSI C style function declarations without parameter types are errors with clang-16. --- a/Configure +++ b/Configure @@ -7927,10 +7927,10 @@ $cat >malloc.c < #endif #ifdef TRY_MALLOC -void *malloc(); +void *malloc(size_t); #endif #ifdef TRY_FREE -void free(); +void free(void *); #endif END case "$malloctype" in From fc35cee89c1a42558f50a37a6b4d5186b77f058b Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Tue, 17 Jan 2023 19:07:54 +0100 Subject: [PATCH] Configure: Add various C99 compatibility improvements Two C99 compatibility issues are fixed by these changes: Return types are made explicit where they previously defaulted to int, and all called functions are now declared explicitly (either by including additional headers, or by adding prototypes manually). This avoids implict ints and implicit function declarations, both legacy C language features removed in the 1999 revision of the language. Verified with an instrumented GCC compiler on GNU/Linux. --- a/Configure +++ b/Configure @@ -4655,7 +4655,7 @@ esac # so we will take those off from locincpth. case "$gccversion" in 3.*) - echo "main(){}">try.c + echo "int main(){}">try.c for incdir in $locincpth; do warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ grep '^c[cp]p*[01]: warning: changing search order '` @@ -5798,6 +5798,7 @@ case "$intsize" in #ifdef I_STDLIB #include #endif +#include int main() { printf("intsize=%d;\n", (int)sizeof(int)); @@ -6871,6 +6872,7 @@ case "$doublesize" in #ifdef I_STDLIB #include #endif +#include int main() { printf("%d\n", (int)sizeof(double)); @@ -12660,7 +12662,7 @@ case "$dlsrc" in dl_dlopen.xs) echo "Checking whether your dlsym() needs a leading underscore ..." >&4 $cat >dyna.c <<'EOM' -fred () { } +void fred (void) { } EOM $cat >fred.c<fred.c< #endif -extern int fred() ; +extern void fred(void) ; int main() { @@ -13713,6 +13715,7 @@ $cat >try.c < #endif +#include #define FILE_ptr(fp) $stdio_ptr #define FILE_cnt(fp) $stdio_cnt int main() { @@ -16220,6 +16223,7 @@ echo "Checking to see if your libm supports _LIB_VERSION..." >&4 $cat >try.c < #include +#include int main (int argc, char *argv[]) { printf ("%d\n", _LIB_VERSION); @@ -22168,13 +22172,15 @@ pager="$ans" : see if ar generates random libraries by itself echo " " echo "Checking how to generate random libraries on your machine..." >&4 -echo 'int bar1() { return bar2(); }' > bar1.c +echo 'extern int bar2(); int bar1() { return bar2(); }' > bar1.c echo 'int bar2() { return 2; }' > bar2.c $cat > foo.c < #endif +#include +extern int bar1(); int main() { printf("%d\n", bar1()); exit(0); } EOP $cc $ccflags -c bar1.c >/dev/null 2>&1 @@ -22400,7 +22406,7 @@ EOM for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do for tmo in 'struct timeval *' 'const struct timeval *'; do case "$val" in - '') try="$extern_C select _(($nfd, $xxx, $xxx, $xxx, $tmo));" + '') try="$extern_C int select _(($nfd, $xxx, $xxx, $xxx, $tmo));" if ./protochk "$try" $hdrs; then echo "Your system accepts $xxx." val="$xxx"