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