From: Zack Weinberg <z...@owlfolio.org> Specifically, on top of Petr Vorel’s patch, eliminate all use of old-style function definitions and implicit function declarations.
Many of the C programs embedded in config.guess are only used on very old systems that may never have had an ISO C compiler (other than gcc, which we cannot assume has been installed) so we have to do this carefully. I assume that stdio.h exists unconditionally, and that either it declares puts and printf, or the compiler is so old that implicit function declarations are the order of the day. I also assume it is safe to declare main as ‘int main (void)’; that may need to get reverted. All uses of ‘exit’ are replaced with returning from main, so that we do not need to worry about whether stdlib.h exists. The only C program that took command line arguments, and therefore needed to declare main with arguments, is replaced with a preprocessor-only check and string manipulation from shell. Wherever possible, uses of printf are demoted to puts. --- config.guess | 111 ++++++++++++++++++++++++--------------------------- 1 file changed, 52 insertions(+), 59 deletions(-) diff --git a/config.guess b/config.guess index ff5146b..1059f76 100755 --- a/config.guess +++ b/config.guess @@ -4,7 +4,7 @@ # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2024-01-03' +timestamp='2024-04-04' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -534,29 +534,22 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" -#ifdef __cplusplus -#include <stdio.h> /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif + #include <stdio.h> #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + SYSTYPE=sysv #endif #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + SYSTYPE=svr4 #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + SYSTYPE=bsd #endif - #endif - exit (-1); - } EOF - $CC_FOR_BUILD -o "$dummy" "$dummy.c" && - dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`"$dummy" "$dummyarg"` && + SYSTEM_TYPE="`$CC_FOR_BUILD -E - < "$dummy.c" | + sed -n 's/^ *SYSTYPE *= *//p'`" && + SYSTEM_REL="`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'`" && + SYSTEM_NAME="mips-mips-riscos${SYSTEM_REL}${SYSTEM_TYPE}" && { echo "$SYSTEM_NAME"; exit; } GUESS=mips-mips-riscos$UNAME_RELEASE ;; @@ -633,19 +626,15 @@ EOF set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include <sys/systemcfg.h> - int main (void) - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } + { + return !__power_pc(); + } EOF - if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && "$dummy" then - GUESS=$SYSTEM_NAME + GUESS=powerpc-ibm-aix3.2.5 else GUESS=rs6000-ibm-aix3.2.5 fi @@ -714,9 +703,8 @@ EOF if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" - #define _HPUX_SOURCE - #include <stdlib.h> + #include <stdio.h> #include <unistd.h> int @@ -744,7 +732,7 @@ EOF #endif default: puts ("hppa1.0"); break; } - exit (0); + return 0; } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` @@ -781,6 +769,7 @@ EOF 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" + #include <stdio.h> #include <unistd.h> int main (void) @@ -793,20 +782,25 @@ EOF { switch (cpu) { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0"); break; + default: puts ("hppa"); break; } } else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); + puts ("m68k"); + else puts ("unknown"); + return 0; } EOF - $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && - { echo "$SYSTEM_NAME"; exit; } + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_CPU=`"$dummy"`; then + if [ "$SYSTEM_CPU" != "unknown" ]; then + SYSTEM_NAME="${SYSTEM_CPU}-hitachi-hiuxwe2" + echo "$SYSTEM_NAME" + exit + fi + fi GUESS=unknown-hitachi-hiuxwe2 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) @@ -1611,6 +1605,7 @@ fi # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" <<EOF +#include <stdio.h> #ifdef _SEQUENT_ #include <sys/types.h> #include <sys/utsname.h> @@ -1630,16 +1625,14 @@ main (void) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); + puts ("mips-sony-bsd"); return 0; #else #include <sys/param.h> - printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 - "4" + puts ("m68k-sony-newsos4"); return 0; #else - "" + puts ("m68k-sony-newsos"); return 0; #endif - ); exit (0); #endif #endif @@ -1658,26 +1651,26 @@ main (void) #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); + puts ("ns32k-encore-sysv"); return 0; #else #if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); + puts ("ns32k-encore-mach"); return 0; #else - printf ("ns32k-encore-bsd\n"); exit (0); + puts ("ns32k-encore-bsd"); return 0; #endif #endif #endif #if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); + puts ("i386-pc-bsd"); return 0; #endif #if defined (sequent) #if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); + puts ("i386-sequent-dynix"); return 0; #endif #if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); + puts ("ns32k-sequent-dynix"); return 0; #endif #endif @@ -1686,12 +1679,12 @@ main (void) uname(&un); if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); + puts ("i386-sequent-ptx2"); return 0; } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); + puts ("i386-sequent-ptx1"); return 0; } - printf ("i386-sequent-ptx\n"); exit (0); + puts ("i386-sequent-ptx"); return 0; #endif #if defined (vax) @@ -1699,16 +1692,16 @@ main (void) #include <sys/param.h> #if defined (BSD) #if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); + puts ("vax-dec-bsd4.3"); return 0; #else #if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); + puts ("vax-dec-bsd4.3reno"); return 0; #else - printf ("vax-dec-bsd\n"); exit (0); + puts ("vax-dec-bsd"); return 0; #endif #endif #else - printf ("vax-dec-bsd\n"); exit (0); + puts ("vax-dec-bsd"); return 0; #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) @@ -1716,7 +1709,7 @@ main (void) uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else - printf ("vax-dec-ultrix\n"); exit (0); + puts ("vax-dec-ultrix"); return 0; #endif #endif #endif @@ -1727,16 +1720,16 @@ main (void) uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else - printf ("mips-dec-ultrix\n"); exit (0); + puts ("mips-dec-ultrix"); return 0; #endif #endif #endif #if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); + puts ("i860-alliant-bsd"); return 0; #endif - exit (1); + return 1; } EOF -- 2.43.2