78f1eb
From 913582217c96512015fd60f270f0e262824579b7 Mon Sep 17 00:00:00 2001
78f1eb
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
78f1eb
Date: Tue, 12 Nov 2019 09:19:18 +0100
78f1eb
Subject: [PATCH] Adapt Configure to GCC version 10
78f1eb
MIME-Version: 1.0
78f1eb
Content-Type: text/plain; charset=UTF-8
78f1eb
Content-Transfer-Encoding: 8bit
78f1eb
78f1eb
I got a notice from Jeff Law <law@redhat.com>:
78f1eb
78f1eb
    Your particular package fails its testsuite. This was ultimately
78f1eb
    tracked down to a Configure problem. The perl configure script treated
78f1eb
    gcc-10 as gcc-1 and turned on -fpcc-struct-return. This is an ABI
78f1eb
    changing flag and caused Perl to not be able to interact properly with
78f1eb
    the dbm libraries on the system leading to a segfault.
78f1eb
78f1eb
His proposed patch corrected only this one instance of the version
78f1eb
mismatch. Reading the Configure script revealed more issues. This
78f1eb
patch fixes all of them I found.
78f1eb
78f1eb
Please note I did not test it because I don't have GCC 10 available.
78f1eb
78f1eb
Signed-off-by: Petr Písař <ppisar@redhat.com>
78f1eb
---
78f1eb
 Configure | 14 +++++++-------
78f1eb
 cflags.SH |  2 +-
78f1eb
 2 files changed, 8 insertions(+), 8 deletions(-)
78f1eb
78f1eb
diff --git a/Configure b/Configure
78f1eb
index fad1c9f2b1..706c0b64ed 100755
78f1eb
--- a/Configure
78f1eb
+++ b/Configure
78f1eb
@@ -4701,7 +4701,7 @@ else
78f1eb
 fi
78f1eb
 $rm -f try try.*
78f1eb
 case "$gccversion" in
78f1eb
-1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
78f1eb
+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;;
78f1eb
 esac
78f1eb
 case "$gccversion" in
78f1eb
 '') gccosandvers='' ;;
78f1eb
@@ -4741,7 +4741,7 @@ esac
78f1eb
 # gcc 3.* complain about adding -Idirectories that they already know about,
78f1eb
 # so we will take those off from locincpth.
78f1eb
 case "$gccversion" in
78f1eb
-3*)
78f1eb
+3.*)
78f1eb
     echo "main(){}">try.c
78f1eb
     for incdir in $locincpth; do
78f1eb
        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
78f1eb
@@ -5467,13 +5467,13 @@ fi
78f1eb
 case "$hint" in
78f1eb
 default|recommended)
78f1eb
 	case "$gccversion" in
78f1eb
-	1*) dflt="$dflt -fpcc-struct-return" ;;
78f1eb
+	1.*) dflt="$dflt -fpcc-struct-return" ;;
78f1eb
 	esac
78f1eb
 	case "$optimize:$DEBUGGING" in
78f1eb
 	*-g*:old) dflt="$dflt -DDEBUGGING";;
78f1eb
 	esac
78f1eb
 	case "$gccversion" in
78f1eb
-	2*) if $test -d /etc/conf/kconfig.d &&
78f1eb
+	2.*) if $test -d /etc/conf/kconfig.d &&
78f1eb
 			$contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
78f1eb
 		then
78f1eb
 			# Interactive Systems (ISC) POSIX mode.
78f1eb
@@ -5482,7 +5482,7 @@ default|recommended)
78f1eb
 		;;
78f1eb
 	esac
78f1eb
 	case "$gccversion" in
78f1eb
-	1*) ;;
78f1eb
+	1.*) ;;
78f1eb
 	2.[0-8]*) ;;
78f1eb
 	?*)	set strict-aliasing -fno-strict-aliasing
78f1eb
 		eval $checkccflag
78f1eb
@@ -5600,7 +5600,7 @@ case "$cppflags" in
78f1eb
     ;;
78f1eb
 esac
78f1eb
 case "$gccversion" in
78f1eb
-1*) cppflags="$cppflags -D__GNUC__"
78f1eb
+1.*) cppflags="$cppflags -D__GNUC__"
78f1eb
 esac
78f1eb
 case "$mips_type" in
78f1eb
 '');;
78f1eb
@@ -23103,7 +23103,7 @@ fi
78f1eb
 
78f1eb
 : add -D_FORTIFY_SOURCE if feasible and not already there
78f1eb
 case "$gccversion" in
78f1eb
-[456789].*)	case "$optimize$ccflags" in
78f1eb
+[456789].*|[1-9][0-9]*)	case "$optimize$ccflags" in
78f1eb
 	*-O*)	case "$ccflags$cppsymbols" in
78f1eb
 		*_FORTIFY_SOURCE=*) # Don't add it again.
78f1eb
 			echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4
78f1eb
diff --git a/cflags.SH b/cflags.SH
78f1eb
index e60742fed1..f1bcd6c38e 100755
78f1eb
--- a/cflags.SH
78f1eb
+++ b/cflags.SH
78f1eb
@@ -156,7 +156,7 @@ esac
78f1eb
 
78f1eb
 case "$gccversion" in
78f1eb
 '') ;;
78f1eb
-[12]*) ;; # gcc versions 1 (gasp!) and 2 are not good for this.
78f1eb
+[12].*) ;; # gcc versions 1 (gasp!) and 2 are not good for this.
78f1eb
 Intel*) ;; # # Is that you, Intel C++?
78f1eb
 #
78f1eb
 # NOTE 1: the -std=c89 without -pedantic is a bit pointless.
78f1eb
-- 
78f1eb
2.21.0
78f1eb